Message ID | 1594028699-1055-2-git-send-email-jun.li@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add NXP imx8mp usb support | expand |
> -----Original Message----- > From: Jun Li <jun.li@nxp.com> > Sent: Monday, July 6, 2020 5:45 PM > To: balbi@kernel.org; shawnguo@kernel.org; robh+dt@kernel.org > Cc: gregkh@linuxfoundation.org; s.hauer@pengutronix.de; kernel@pengutronix.de; > festevam@gmail.com; dl-linux-imx <linux-imx@nxp.com>; linux-usb@vger.kernel.org; > linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org; Peter Chen > <peter.chen@nxp.com>; Anson Huang <anson.huang@nxp.com>; Peng Fan > <peng.fan@nxp.com>; Horia Geanta <horia.geanta@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@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
Hi, Li Jun <jun.li@nxp.com> writes: > 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@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; > +}; why? We should rely on properties, no?
> -----Original Message----- > From: Felipe Balbi <balbif@gmail.com> On Behalf Of Felipe Balbi > Sent: Thursday, July 23, 2020 5:22 PM > To: Jun Li <jun.li@nxp.com>; shawnguo@kernel.org; robh+dt@kernel.org > Cc: gregkh@linuxfoundation.org; s.hauer@pengutronix.de; kernel@pengutronix.de; > festevam@gmail.com; dl-linux-imx <linux-imx@nxp.com>; linux-usb@vger.kernel.org; > linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org; Peter Chen > <peter.chen@nxp.com>; Anson Huang <anson.huang@nxp.com>; Peng Fan > <peng.fan@nxp.com>; Horia Geanta <horia.geanta@nxp.com> > Subject: Re: [PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core device to > pass data > > > Hi, > > Li Jun <jun.li@nxp.com> writes: > > 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@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; > > +}; > > why? We should rely on properties, no? My v1 patch was adding new property directly, considering Rob has objection on that way if I understand correctly, also there is suggestion on use compatible string to set quirks, I changed to add platform data to pass SoC level quirks, I think this also can be used to extend other special handling for glue layer driver, so should I go back to use properties? Hope an agreement can be made on adding new properties/quirks. Thanks Li Jun > > -- > balbi
> -----Original Message----- > From: Jun Li > Sent: Thursday, July 23, 2020 5:58 PM > To: Felipe Balbi <balbi@kernel.org>; shawnguo@kernel.org; robh+dt@kernel.org > Cc: gregkh@linuxfoundation.org; s.hauer@pengutronix.de; kernel@pengutronix.de; > festevam@gmail.com; dl-linux-imx <linux-imx@nxp.com>; linux-usb@vger.kernel.org; > linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org; Peter Chen > <peter.chen@nxp.com>; Anson Huang <anson.huang@nxp.com>; Peng Fan > <peng.fan@nxp.com>; Horia Geanta <horia.geanta@nxp.com> > Subject: RE: [PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core device to > pass data > > > > > -----Original Message----- > > From: Felipe Balbi <balbif@gmail.com> On Behalf Of Felipe Balbi > > Sent: Thursday, July 23, 2020 5:22 PM > > To: Jun Li <jun.li@nxp.com>; shawnguo@kernel.org; robh+dt@kernel.org > > Cc: gregkh@linuxfoundation.org; s.hauer@pengutronix.de; > > kernel@pengutronix.de; festevam@gmail.com; dl-linux-imx > > <linux-imx@nxp.com>; linux-usb@vger.kernel.org; > > linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org; > > Peter Chen <peter.chen@nxp.com>; Anson Huang <anson.huang@nxp.com>; > > Peng Fan <peng.fan@nxp.com>; Horia Geanta <horia.geanta@nxp.com> > > Subject: Re: [PATCH v2 1/5] usb: dwc3: add platform data to dwc3 core > > device to pass data > > > > > > Hi, > > > > Li Jun <jun.li@nxp.com> writes: > > > 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@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; > > > +}; > > > > why? We should rely on properties, no? > > My v1 patch was adding new property directly, considering Rob has objection on that > way if I understand correctly, also there is suggestion on use compatible string > to set quirks, I changed to add platform data to pass SoC level quirks, I think > this also can be used to extend other special handling for glue layer driver, so > should I go back to use properties? > Hope an agreement can be made on adding new properties/quirks. ' Hi Felipe, Could you please point me how I can move forward on this, thanks a lot. Li Jun > > Thanks > Li Jun > > > > > -- > > balbi
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");
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@nxp.com> --- drivers/usb/dwc3/core.h | 5 +++++ drivers/usb/dwc3/host.c | 9 +++++++++ 2 files changed, 14 insertions(+)