RE: [PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core device to pass data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Jun Li <jun.li@xxxxxxx>
> Sent: Monday, July 6, 2020 5:45 PM
> To: balbi@xxxxxxxxxx; shawnguo@xxxxxxxxxx; robh+dt@xxxxxxxxxx
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx;
> festevam@xxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; linux-usb@xxxxxxxxxxxxxxx;
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; Peter Chen
> <peter.chen@xxxxxxx>; Anson Huang <anson.huang@xxxxxxx>; Peng Fan
> <peng.fan@xxxxxxx>; Horia Geanta <horia.geanta@xxxxxxx>
> Subject: [PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core device to pass
> data
> 
> In case dwc3 has SoC specific customizations, dwc3 glue driver can base on compatible
> string and pass it via platform data to dwc3 core driver; and pass xhci private
> data further to xhci-plat like quirks.
> 
> Signed-off-by: Li Jun <jun.li@xxxxxxx>
> ---
>  drivers/usb/dwc3/core.h | 5 +++++
>  drivers/usb/dwc3/host.c | 9 +++++++++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index
> 0b8ea8c..3146697 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -29,6 +29,7 @@
>  #include <linux/ulpi/interface.h>
> 
>  #include <linux/phy/phy.h>
> +#include "../host/xhci-plat.h"
> 
>  #define DWC3_MSG_MAX	500
> 
> @@ -924,6 +925,10 @@ struct dwc3_scratchpad_array {
>  	__le64	dma_adr[DWC3_MAX_HIBER_SCRATCHBUFS];
>  };
> 
> +struct dwc3_platform_data {
> +	struct xhci_plat_priv *xhci_priv;
> +};
> +
>  /**
>   * struct dwc3 - representation of our controller
>   * @drd_work: workqueue used for role swapping diff --git a/drivers/usb/dwc3/host.c
> b/drivers/usb/dwc3/host.c index bef1c1a..4f8514a 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -46,6 +46,7 @@ int dwc3_host_init(struct dwc3 *dwc)  {
>  	struct property_entry	props[4];
>  	struct platform_device	*xhci;
> +	struct dwc3_platform_data *dwc3_pdata;
>  	int			ret, irq;
>  	struct resource		*res;
>  	struct platform_device	*dwc3_pdev = to_platform_device(dwc->dev);
> @@ -115,6 +116,14 @@ int dwc3_host_init(struct dwc3 *dwc)
>  		}
>  	}
> 
> +	dwc3_pdata = (struct dwc3_platform_data *)dev_get_platdata(dwc->dev);
> +	if (dwc3_pdata && dwc3_pdata->xhci_priv) {
> +		ret = platform_device_add_data(xhci, dwc3_pdata->xhci_priv,
> +					       sizeof(struct xhci_plat_priv));
> +		if (ret)
> +			goto err;
> +	}
> +
>  	ret = platform_device_add(xhci);
>  	if (ret) {
>  		dev_err(dwc->dev, "failed to register xHCI device\n");
> --
> 2.7.4

A gentle ping...

Thanks
Li Jun




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux