[PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core device to pass data
Jun Li
jun.li at nxp.com
Wed Jul 22 10:33:50 EDT 2020
> -----Original Message-----
> From: Jun Li <jun.li at nxp.com>
> Sent: Monday, July 6, 2020 5:45 PM
> To: balbi at kernel.org; shawnguo at kernel.org; robh+dt at kernel.org
> Cc: gregkh at linuxfoundation.org; s.hauer at pengutronix.de; kernel at pengutronix.de;
> festevam at gmail.com; dl-linux-imx <linux-imx at nxp.com>; linux-usb at vger.kernel.org;
> linux-arm-kernel at lists.infradead.org; devicetree at vger.kernel.org; Peter Chen
> <peter.chen at nxp.com>; Anson Huang <anson.huang at nxp.com>; Peng Fan
> <peng.fan at nxp.com>; Horia Geanta <horia.geanta at nxp.com>
> 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 at nxp.com>
> ---
> 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
More information about the linux-arm-kernel
mailing list