Hi Roger,
On Wednesday, 12 September 2018 10:57:31 EEST Roger Quadros wrote:
> On 11/09/18 18:06, Laurent Pinchart wrote:
> > Now that all platforms using OMAP USB host devices have been converted
> > to DT, drop support for legacy non-DT probe from the driver.
> >
> > Signed-off-by: Laurent Pinchart <[email protected]>
> > ---
> >
> > drivers/mfd/omap-usb-host.c | 153 ++--------------------------
> > include/linux/platform_data/usb-omap.h | 4 -
> > 2 files changed, 13 insertions(+), 144 deletions(-)
> >
> > diff --git a/drivers/mfd/omap-usb-host.c b/drivers/mfd/omap-usb-host.c
> > index b731026541f5..ce28e0fda55e 100644
> > --- a/drivers/mfd/omap-usb-host.c
> > +++ b/drivers/mfd/omap-usb-host.c
[snip]
> > @@ -541,31 +424,28 @@ static const struct of_device_id
> > usbhs_child_match_table[] = {
> > static int usbhs_omap_probe(struct platform_device *pdev)
> > {
> > struct device *dev = &pdev->dev;
> > - struct usbhs_omap_platform_data *pdata = dev_get_platdata(dev);
> > + struct usbhs_omap_platform_data *pdata;
> > struct usbhs_hcd_omap *omap;
> > struct resource *res;
> > int ret = 0;
> > int i;
> > bool need_logic_fck;
> >
> > - dev_info(&pdev->dev, "%s\n", __func__);
> > - if (dev->of_node) {
> > - /* For DT boot we populate platform data from OF node */
> > - pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> > - if (!pdata)
> > - return -ENOMEM;
> > + /* Populate platform data from OF node */
> > + if (!dev->of_node) {
> > + dev_err(dev, "Missing OF node\n");
> > + return -ENODEV;
> > + }
> >
> > - ret = usbhs_omap_get_dt_pdata(dev, pdata);
> > - if (ret)
> > - return ret;
> > + pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> > + if (!pdata)
> > + return -ENOMEM;
> >
> > - dev->platform_data = pdata;
> > - }
> > + ret = usbhs_omap_get_dt_pdata(dev, pdata);
> > + if (ret)
> > + return ret;
> >
> > - if (!pdata) {
> > - dev_err(dev, "Missing platform data\n");
> > - return -ENODEV;
> > - }
> > + dev->platform_data = pdata;
>
> Do we still need to set dev->platform_data?
>
> This driver can access it via
> struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
> omap->pdata;
Unfortunately we still do, as the ehci-omap driver accesses the omap-usb-host
device platform data (through the ehci-omap device's parent).
> > if (pdata->nports > OMAP3_HS_USB_PORTS) {
> > dev_info(dev, "Too many num_ports <%d> in platform_data. Max
> > %d\n",
> >
> > @@ -798,13 +678,6 @@ static int usbhs_omap_probe(struct platform_device
> > *pdev)
> > goto err_mem;
> > }
> > - } else {
> > - ret = omap_usbhs_alloc_children(pdev);
> > - if (ret) {
> > - dev_err(dev, "omap_usbhs_alloc_children failed: %d\n",
> > - ret);
> > - goto err_mem;
> > - }
> > }
> >
> > return 0;
[snip]
--
Regards,
Laurent Pinchart