Re: [PATCH 6/6] platform/chrome: cros_ec_typec: Store cable plug type
Hi Greg, On Fri, Nov 06, 2020 at 10:33:02AM +0100, Greg Kroah-Hartman wrote: > On Fri, Nov 06, 2020 at 12:59:07AM -0800, Prashant Malani wrote: > > Hi Greg, > > > > Did you not receive these? > > Ah, I got 1, 2, and 5, and now 6. That's confusing, think about if you > were to receive such a series, what would you think to do with it? > Yeah, I agree it looks confusing. Sorry about that. > > > So you save it but what happens with the value? > > > > The type C connector class framework exposes it via syfs to user-space when > > we > > register the cable via typec_register_cable() in patch 4/6 [2]. > > So you added a new sysfs file and api without updating > Documentation/ABI/? That's not good :( This is a pre-existing API[1] and sysfs file[2] so we are using those and not adding anything new. [1]: https://www.kernel.org/doc/html/latest/driver-api/usb/typec.html#c.typec_register_cable [2]: https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-typec (see /sys/class/-cable/plug_type) Best regards,
Re: [PATCH 6/6] platform/chrome: cros_ec_typec: Store cable plug type
On Fri, Nov 06, 2020 at 12:59:07AM -0800, Prashant Malani wrote: > Hi Greg, > > Thanks for looking at the patch. > > On Fri, Nov 06, 2020 at 08:20:59AM +0100, Greg Kroah-Hartman wrote: > > On Thu, Nov 05, 2020 at 05:28:03PM -0800, Prashant Malani wrote: > > > Use the PD VDO Type C cable plug type macro to retrieve and store the > > > cable plug type in the cable descriptor. > > > > > > Cc: Heikki Krogerus > > > Cc: Greg Kroah-Hartman > > > Signed-off-by: Prashant Malani > > > --- > > > drivers/platform/chrome/cros_ec_typec.c | 21 - > > > 1 file changed, 20 insertions(+), 1 deletion(-) > > > > Where are the first 5 patches in this series? > > I believe I'd cc-ed you (and linux-usb) on the following patches in the > series(modified git_cc[1] which adds individual patch get_maintainers.pl to > the cover > letter, patch 1 and patch 2): > cover letter: > https://lore.kernel.org/lkml/20201106012758.525472-1-pmal...@chromium.org/ > patch 1/6 (cros-ec-typec cleanup): > https://lore.kernel.org/lkml/20201106012758.525472-2-pmal...@chromium.org/ > patch 2/6 (cros-ec-typec cleanup): > https://lore.kernel.org/lkml/20201106012758.525472-2-pmal...@chromium.org/ > patch 5/6 (PD VDO header patch): > https://lore.kernel.org/lkml/20201106012758.525472-6-pmal...@chromium.org/ > patch 6/6 (this patch): > https://lore.kernel.org/lkml/20201106012758.525472-7-pmal...@chromium.org/ > > Did you not receive these? Ah, I got 1, 2, and 5, and now 6. That's confusing, think about if you were to receive such a series, what would you think to do with it? > > > diff --git a/drivers/platform/chrome/cros_ec_typec.c > > > b/drivers/platform/chrome/cros_ec_typec.c > > > index 5e7f0b4ebbec..0a2a8b0f8115 100644 > > > --- a/drivers/platform/chrome/cros_ec_typec.c > > > +++ b/drivers/platform/chrome/cros_ec_typec.c > > > @@ -709,6 +709,7 @@ static int cros_typec_handle_sop_prime_disc(struct > > > cros_typec_data *typec, int p > > > .port = port_num, > > > .partner_type = TYPEC_PARTNER_SOP_PRIME, > > > }; > > > + uint32_t cable_plug_type; > > > > u32 please, this isn't userspace code :) > > Will fix this in the next version. > > > > > int ret = 0; > > > > > > memset(disc, 0, EC_PROTO2_MAX_RESPONSE_SIZE); > > > @@ -722,8 +723,26 @@ static int cros_typec_handle_sop_prime_disc(struct > > > cros_typec_data *typec, int p > > > /* Parse the PD identity data, even if only 0s were returned. */ > > > cros_typec_parse_pd_identity(>c_identity, disc); > > > > > > - if (disc->identity_count != 0) > > > + if (disc->identity_count != 0) { > > > + cable_plug_type = VDO_TYPEC_CABLE_TYPE(port->c_identity.vdo[0]); > > > + switch (cable_plug_type) { > > > + case CABLE_ATYPE: > > > + desc.type = USB_PLUG_TYPE_A; > > > + break; > > > + case CABLE_BTYPE: > > > + desc.type = USB_PLUG_TYPE_B; > > > + break; > > > + case CABLE_CTYPE: > > > + desc.type = USB_PLUG_TYPE_C; > > > + break; > > > + case CABLE_CAPTIVE: > > > + desc.type = USB_PLUG_CAPTIVE; > > > + break; > > > + default: > > > + desc.type = USB_PLUG_NONE; > > > + } > > > desc.active = PD_IDH_PTYPE(port->c_identity.id_header) == > > > IDH_PTYPE_ACABLE; > > > + } > > > > So you save it but what happens with the value? > > The type C connector class framework exposes it via syfs to user-space when we > register the cable via typec_register_cable() in patch 4/6 [2]. So you added a new sysfs file and api without updating Documentation/ABI/? That's not good :( > I'll go ahead and CC > you and linux-usb on the entire series for the next version. Please do, thanks! greg k-h
Re: [PATCH 6/6] platform/chrome: cros_ec_typec: Store cable plug type
Hi Greg, Thanks for looking at the patch. On Fri, Nov 06, 2020 at 08:20:59AM +0100, Greg Kroah-Hartman wrote: > On Thu, Nov 05, 2020 at 05:28:03PM -0800, Prashant Malani wrote: > > Use the PD VDO Type C cable plug type macro to retrieve and store the > > cable plug type in the cable descriptor. > > > > Cc: Heikki Krogerus > > Cc: Greg Kroah-Hartman > > Signed-off-by: Prashant Malani > > --- > > drivers/platform/chrome/cros_ec_typec.c | 21 - > > 1 file changed, 20 insertions(+), 1 deletion(-) > > Where are the first 5 patches in this series? I believe I'd cc-ed you (and linux-usb) on the following patches in the series(modified git_cc[1] which adds individual patch get_maintainers.pl to the cover letter, patch 1 and patch 2): cover letter: https://lore.kernel.org/lkml/20201106012758.525472-1-pmal...@chromium.org/ patch 1/6 (cros-ec-typec cleanup): https://lore.kernel.org/lkml/20201106012758.525472-2-pmal...@chromium.org/ patch 2/6 (cros-ec-typec cleanup): https://lore.kernel.org/lkml/20201106012758.525472-2-pmal...@chromium.org/ patch 5/6 (PD VDO header patch): https://lore.kernel.org/lkml/20201106012758.525472-6-pmal...@chromium.org/ patch 6/6 (this patch): https://lore.kernel.org/lkml/20201106012758.525472-7-pmal...@chromium.org/ Did you not receive these? > > > > > > diff --git a/drivers/platform/chrome/cros_ec_typec.c > > b/drivers/platform/chrome/cros_ec_typec.c > > index 5e7f0b4ebbec..0a2a8b0f8115 100644 > > --- a/drivers/platform/chrome/cros_ec_typec.c > > +++ b/drivers/platform/chrome/cros_ec_typec.c > > @@ -709,6 +709,7 @@ static int cros_typec_handle_sop_prime_disc(struct > > cros_typec_data *typec, int p > > .port = port_num, > > .partner_type = TYPEC_PARTNER_SOP_PRIME, > > }; > > + uint32_t cable_plug_type; > > u32 please, this isn't userspace code :) Will fix this in the next version. > > > int ret = 0; > > > > memset(disc, 0, EC_PROTO2_MAX_RESPONSE_SIZE); > > @@ -722,8 +723,26 @@ static int cros_typec_handle_sop_prime_disc(struct > > cros_typec_data *typec, int p > > /* Parse the PD identity data, even if only 0s were returned. */ > > cros_typec_parse_pd_identity(>c_identity, disc); > > > > - if (disc->identity_count != 0) > > + if (disc->identity_count != 0) { > > + cable_plug_type = VDO_TYPEC_CABLE_TYPE(port->c_identity.vdo[0]); > > + switch (cable_plug_type) { > > + case CABLE_ATYPE: > > + desc.type = USB_PLUG_TYPE_A; > > + break; > > + case CABLE_BTYPE: > > + desc.type = USB_PLUG_TYPE_B; > > + break; > > + case CABLE_CTYPE: > > + desc.type = USB_PLUG_TYPE_C; > > + break; > > + case CABLE_CAPTIVE: > > + desc.type = USB_PLUG_CAPTIVE; > > + break; > > + default: > > + desc.type = USB_PLUG_NONE; > > + } > > desc.active = PD_IDH_PTYPE(port->c_identity.id_header) == > > IDH_PTYPE_ACABLE; > > + } > > So you save it but what happens with the value? The type C connector class framework exposes it via syfs to user-space when we register the cable via typec_register_cable() in patch 4/6 [2]. I'll go ahead and CC you and linux-usb on the entire series for the next version. [1]: https://lwn.net/Articles/585782/ [2]: https://lore.kernel.org/lkml/20201106012758.525472-5-pmal...@chromium.org/ Best regards,
Re: [PATCH 6/6] platform/chrome: cros_ec_typec: Store cable plug type
On Thu, Nov 05, 2020 at 05:28:03PM -0800, Prashant Malani wrote: > Use the PD VDO Type C cable plug type macro to retrieve and store the > cable plug type in the cable descriptor. > > Cc: Heikki Krogerus > Cc: Greg Kroah-Hartman > Signed-off-by: Prashant Malani > --- > drivers/platform/chrome/cros_ec_typec.c | 21 - > 1 file changed, 20 insertions(+), 1 deletion(-) Where are the first 5 patches in this series? > > diff --git a/drivers/platform/chrome/cros_ec_typec.c > b/drivers/platform/chrome/cros_ec_typec.c > index 5e7f0b4ebbec..0a2a8b0f8115 100644 > --- a/drivers/platform/chrome/cros_ec_typec.c > +++ b/drivers/platform/chrome/cros_ec_typec.c > @@ -709,6 +709,7 @@ static int cros_typec_handle_sop_prime_disc(struct > cros_typec_data *typec, int p > .port = port_num, > .partner_type = TYPEC_PARTNER_SOP_PRIME, > }; > + uint32_t cable_plug_type; u32 please, this isn't userspace code :) > int ret = 0; > > memset(disc, 0, EC_PROTO2_MAX_RESPONSE_SIZE); > @@ -722,8 +723,26 @@ static int cros_typec_handle_sop_prime_disc(struct > cros_typec_data *typec, int p > /* Parse the PD identity data, even if only 0s were returned. */ > cros_typec_parse_pd_identity(>c_identity, disc); > > - if (disc->identity_count != 0) > + if (disc->identity_count != 0) { > + cable_plug_type = VDO_TYPEC_CABLE_TYPE(port->c_identity.vdo[0]); > + switch (cable_plug_type) { > + case CABLE_ATYPE: > + desc.type = USB_PLUG_TYPE_A; > + break; > + case CABLE_BTYPE: > + desc.type = USB_PLUG_TYPE_B; > + break; > + case CABLE_CTYPE: > + desc.type = USB_PLUG_TYPE_C; > + break; > + case CABLE_CAPTIVE: > + desc.type = USB_PLUG_CAPTIVE; > + break; > + default: > + desc.type = USB_PLUG_NONE; > + } > desc.active = PD_IDH_PTYPE(port->c_identity.id_header) == > IDH_PTYPE_ACABLE; > + } So you save it but what happens with the value? confused, greg k-h
[PATCH 6/6] platform/chrome: cros_ec_typec: Store cable plug type
Use the PD VDO Type C cable plug type macro to retrieve and store the cable plug type in the cable descriptor. Cc: Heikki Krogerus Cc: Greg Kroah-Hartman Signed-off-by: Prashant Malani --- drivers/platform/chrome/cros_ec_typec.c | 21 - 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c index 5e7f0b4ebbec..0a2a8b0f8115 100644 --- a/drivers/platform/chrome/cros_ec_typec.c +++ b/drivers/platform/chrome/cros_ec_typec.c @@ -709,6 +709,7 @@ static int cros_typec_handle_sop_prime_disc(struct cros_typec_data *typec, int p .port = port_num, .partner_type = TYPEC_PARTNER_SOP_PRIME, }; + uint32_t cable_plug_type; int ret = 0; memset(disc, 0, EC_PROTO2_MAX_RESPONSE_SIZE); @@ -722,8 +723,26 @@ static int cros_typec_handle_sop_prime_disc(struct cros_typec_data *typec, int p /* Parse the PD identity data, even if only 0s were returned. */ cros_typec_parse_pd_identity(>c_identity, disc); - if (disc->identity_count != 0) + if (disc->identity_count != 0) { + cable_plug_type = VDO_TYPEC_CABLE_TYPE(port->c_identity.vdo[0]); + switch (cable_plug_type) { + case CABLE_ATYPE: + desc.type = USB_PLUG_TYPE_A; + break; + case CABLE_BTYPE: + desc.type = USB_PLUG_TYPE_B; + break; + case CABLE_CTYPE: + desc.type = USB_PLUG_TYPE_C; + break; + case CABLE_CAPTIVE: + desc.type = USB_PLUG_CAPTIVE; + break; + default: + desc.type = USB_PLUG_NONE; + } desc.active = PD_IDH_PTYPE(port->c_identity.id_header) == IDH_PTYPE_ACABLE; + } desc.identity = >c_identity; -- 2.29.1.341.ge80a0c044ae-goog