[PATCH 2/3] usb: dwc3-generic: support Qualcomm flattened DT

Neil Armstrong neil.armstrong at linaro.org
Wed Jan 14 15:36:53 CET 2026


On 1/14/26 15:13, Casey Connolly wrote:
> Qualcomm devicetrees are moving away from having a glue node with dwc3
> as a subnode and now may just have a single flattened node.
> 
> Rockchip already have a glue_get_ctrl_dev op which returns the node for
> the glue device itself, commonise this and reuse it for the new Qualcomm
> node.
> 
> Signed-off-by: Casey Connolly <casey.connolly at linaro.org>
> ---
>   drivers/usb/dwc3/dwc3-generic.c | 21 +++++++++++++++------
>   1 file changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> index 02c02b1d80e4..7044696ced0c 100644
> --- a/drivers/usb/dwc3/dwc3-generic.c
> +++ b/drivers/usb/dwc3/dwc3-generic.c
> @@ -6,8 +6,10 @@
>    *
>    * Based on dwc3-omap.c.
>    */
>   
> +#define LOG_DEBUG

You should drop this

> +
>   #include <dm.h>
>   #include <reset.h>
>   #include <asm/gpio.h>
>   #include <dm/device_compat.h>
> @@ -488,23 +490,29 @@ static void dwc3_qcom_glue_configure(struct udevice *dev, int index,
>   	if (mode != USB_DR_MODE_HOST)
>   		dwc3_qcom_vbus_override_enable(qscratch_base, true);
>   }
>   
> -struct dwc3_glue_ops qcom_ops = {
> -	.glue_configure = dwc3_qcom_glue_configure,
> -};
> -
> -static int dwc3_rk_glue_get_ctrl_dev(struct udevice *dev, ofnode *node)
> +/* In cases where there is no dwc3 node and it's flattened into the glue node */
> +static int dwc3_flat_dt_get_ctrl_dev(struct udevice *dev, ofnode *node)
>   {
>   	*node = dev_ofnode(dev);
>   	if (!ofnode_valid(*node))
>   		return -EINVAL;
>   
>   	return 0;
>   }
>   
> +struct dwc3_glue_ops qcom_ops = {
> +	.glue_configure = dwc3_qcom_glue_configure,
> +};
> +
> +struct dwc3_glue_ops qcom_flat_dt_ops = {
> +	.glue_configure = dwc3_qcom_glue_configure,
> +	.glue_get_ctrl_dev = dwc3_flat_dt_get_ctrl_dev,
> +};
> +
>   struct dwc3_glue_ops rk_ops = {
> -	.glue_get_ctrl_dev = dwc3_rk_glue_get_ctrl_dev,
> +	.glue_get_ctrl_dev = dwc3_flat_dt_get_ctrl_dev,
>   };
>   
>   static int dwc3_glue_bind_common(struct udevice *parent, ofnode node)
>   {
> @@ -711,8 +719,9 @@ static const struct udevice_id dwc3_glue_ids[] = {
>   	{ .compatible = "rockchip,rk3568-dwc3", .data = (ulong)&rk_ops },
>   	{ .compatible = "rockchip,rk3576-dwc3", .data = (ulong)&rk_ops },
>   	{ .compatible = "rockchip,rk3588-dwc3", .data = (ulong)&rk_ops },
>   	{ .compatible = "qcom,dwc3", .data = (ulong)&qcom_ops },
> +	{ .compatible = "qcom,snps-dwc3", .data = (ulong)&qcom_flat_dt_ops },
>   	{ .compatible = "fsl,imx8mp-dwc3", .data = (ulong)&imx8mp_ops },
>   	{ .compatible = "fsl,imx8mq-dwc3" },
>   	{ .compatible = "intel,tangier-dwc3" },
>   	{ .compatible = "samsung,exynos7870-dwusb3" },
> 

With that fixed:
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>



More information about the U-Boot mailing list