mbox series

[v2,0/3] dt-bindings: connector: usb: provide bindings for altmodes

Message ID 20231113221528.749481-1-dmitry.baryshkov@linaro.org
Headers show
Series dt-bindings: connector: usb: provide bindings for altmodes | expand

Message

Dmitry Baryshkov Nov. 13, 2023, 10:13 p.m. UTC
In some cases we need a way to specify USB-C AltModes that can be
supportd on the particular USB-C connector. For example, x86 INT33FE
driver does this by populating fwnode properties internally. For the
Qualcomm Robotics RB5 platform (and several similar devices which use
Qualcomm PMIC TCPM) we have to put this information to the DT.

Provide the DT bindings for this kind of information and while we are at
it, change svid property to be 16-bit unsigned integer instead of a
simple u32.

NOTE: usage of u16 is not compatible with the recenty extended
qcom/qrb5165-rb5.dts DT file. I'm looking for the guidance from DT and
USB maintainers whether to retain u32 usage or it's better to switch to
u16.

Changes since v1:
- Added type:object and fixed 'description' string in the altmodes-list
  definition.

Dmitry Baryshkov (3):
  dt-bindings: connector: usb: add altmodes description
  usb: typec: change altmode SVID to u16 entry
  arm64: dts: qcom: qrb5165-rb5: use u16 for DP altmode svid

 .../bindings/connector/usb-connector.yaml     | 36 +++++++++++++++++++
 arch/arm64/boot/dts/qcom/qrb5165-rb5.dts      |  2 +-
 drivers/platform/x86/intel/chtwc_int33fe.c    |  2 +-
 drivers/usb/typec/class.c                     |  5 +--
 4 files changed, 41 insertions(+), 4 deletions(-)

Comments

Heikki Krogerus Nov. 15, 2023, 7:27 a.m. UTC | #1
On Tue, Nov 14, 2023 at 12:13:28AM +0200, Dmitry Baryshkov wrote:
> As stated in the changelog for the commit 7b458a4c5d73 ("usb: typec: Add
> typec_port_register_altmodes()"), the code should be adjusted according
> to the AltMode bindings. As the SVID is 16 bits wide (according to the
> USB PD Spec), use fwnode_property_read_u16() to read it.
> 
> Acked-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/platform/x86/intel/chtwc_int33fe.c | 2 +-
>  drivers/usb/typec/class.c                  | 5 +++--
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/platform/x86/intel/chtwc_int33fe.c b/drivers/platform/x86/intel/chtwc_int33fe.c
> index 848baecc1bb0..93f75ba1dafd 100644
> --- a/drivers/platform/x86/intel/chtwc_int33fe.c
> +++ b/drivers/platform/x86/intel/chtwc_int33fe.c
> @@ -136,7 +136,7 @@ static const struct software_node altmodes_node = {
>  };
>  
>  static const struct property_entry dp_altmode_properties[] = {
> -	PROPERTY_ENTRY_U32("svid", 0xff01),
> +	PROPERTY_ENTRY_U16("svid", 0xff01),
>  	PROPERTY_ENTRY_U32("vdo", 0x0c0086),
>  	{ }
>  };
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index 6ec2a94e6fad..4251d44137b6 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
> @@ -2238,7 +2238,8 @@ void typec_port_register_altmodes(struct typec_port *port,
>  	struct typec_altmode_desc desc;
>  	struct typec_altmode *alt;
>  	size_t index = 0;
> -	u32 svid, vdo;
> +	u16 svid;
> +	u32 vdo;
>  	int ret;
>  
>  	altmodes_node = device_get_named_child_node(&port->dev, "altmodes");
> @@ -2246,7 +2247,7 @@ void typec_port_register_altmodes(struct typec_port *port,
>  		return; /* No altmodes specified */
>  
>  	fwnode_for_each_child_node(altmodes_node, child) {
> -		ret = fwnode_property_read_u32(child, "svid", &svid);
> +		ret = fwnode_property_read_u16(child, "svid", &svid);
>  		if (ret) {
>  			dev_err(&port->dev, "Error reading svid for altmode %s\n",
>  				fwnode_get_name(child));
> -- 
> 2.42.0
Konrad Dybcio Nov. 15, 2023, 4:17 p.m. UTC | #2
On 11/13/23 23:13, Dmitry Baryshkov wrote:
> Follow the bindings and use 16-bit value for AltMode SVID instead of
> using the full u32.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Fixes: b3dea914127e ("arm64: dts: qcom: qrb5165-rb5: enable DP altmode")

(because it was previously not compliant with bindings)

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>

Konrad
Rob Herring (Arm) Nov. 16, 2023, 6:36 p.m. UTC | #3
On Tue, Nov 14, 2023 at 12:13:26AM +0200, Dmitry Baryshkov wrote:
> In some cases we need a way to specify USB-C AltModes that can be
> supportd on the particular USB-C connector. For example, x86 INT33FE
> driver does this by populating fwnode properties internally. For the
> Qualcomm Robotics RB5 platform (and several similar devices which use
> Qualcomm PMIC TCPM) we have to put this information to the DT.
> 
> Provide the DT bindings for this kind of information and while we are at
> it, change svid property to be 16-bit unsigned integer instead of a
> simple u32.
> 
> NOTE: usage of u16 is not compatible with the recenty extended
> qcom/qrb5165-rb5.dts DT file. I'm looking for the guidance from DT and
> USB maintainers whether to retain u32 usage or it's better to switch to
> u16.

Depends if you are fine with the ABI break on this platform...

Rob
Dmitry Baryshkov Nov. 16, 2023, 8:39 p.m. UTC | #4
On Thu, 16 Nov 2023 at 20:36, Rob Herring <robh@kernel.org> wrote:
>
> On Tue, Nov 14, 2023 at 12:13:26AM +0200, Dmitry Baryshkov wrote:
> > In some cases we need a way to specify USB-C AltModes that can be
> > supportd on the particular USB-C connector. For example, x86 INT33FE
> > driver does this by populating fwnode properties internally. For the
> > Qualcomm Robotics RB5 platform (and several similar devices which use
> > Qualcomm PMIC TCPM) we have to put this information to the DT.
> >
> > Provide the DT bindings for this kind of information and while we are at
> > it, change svid property to be 16-bit unsigned integer instead of a
> > simple u32.
> >
> > NOTE: usage of u16 is not compatible with the recenty extended
> > qcom/qrb5165-rb5.dts DT file. I'm looking for the guidance from DT and
> > USB maintainers whether to retain u32 usage or it's better to switch to
> > u16.
>
> Depends if you are fine with the ABI break on this platform...

As much as I hate it, yes, we are.