Hi Laurent,

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 <laurent.pinch...@ideasonboard.com>
> ---
>  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
> @@ -23,7 +23,6 @@
>  #include <linux/slab.h>
>  #include <linux/delay.h>
>  #include <linux/clk.h>
> -#include <linux/dma-mapping.h>
>  #include <linux/gpio.h>
>  #include <linux/platform_device.h>
>  #include <linux/platform_data/usb-omap.h>


> @@ -35,8 +34,6 @@
>  #include "omap-usb.h"
>  
>  #define USBHS_DRIVER_NAME    "usbhs_omap"
> -#define OMAP_EHCI_DEVICE     "ehci-omap"
> -#define OMAP_OHCI_DEVICE     "ohci-omap3"
>  
>  /* OMAP USBHOST Register addresses  */
>  
> @@ -115,7 +112,6 @@ struct usbhs_hcd_omap {
>  /*-------------------------------------------------------------------------*/
>  
>  static const char usbhs_driver_name[] = USBHS_DRIVER_NAME;
> -static u64 usbhs_dmamask = DMA_BIT_MASK(32);
>  
>  /*-------------------------------------------------------------------------*/
>  
> @@ -153,119 +149,6 @@ static const char * const port_modes[] = {
>       [OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM]     = "ohci-tll-2pin-dpdm",
>  };
>  
> -static struct platform_device *omap_usbhs_alloc_child(const char *name,
> -                     struct resource *res, int num_resources, void *pdata,
> -                     size_t pdata_size, struct device *dev)
> -{
> -     struct platform_device  *child;
> -     int                     ret;
> -
> -     child = platform_device_alloc(name, 0);
> -
> -     if (!child) {
> -             dev_err(dev, "platform_device_alloc %s failed\n", name);
> -             goto err_end;
> -     }
> -
> -     ret = platform_device_add_resources(child, res, num_resources);
> -     if (ret) {
> -             dev_err(dev, "platform_device_add_resources failed\n");
> -             goto err_alloc;
> -     }
> -
> -     ret = platform_device_add_data(child, pdata, pdata_size);
> -     if (ret) {
> -             dev_err(dev, "platform_device_add_data failed\n");
> -             goto err_alloc;
> -     }
> -
> -     child->dev.dma_mask             = &usbhs_dmamask;
> -     dma_set_coherent_mask(&child->dev, DMA_BIT_MASK(32));
> -     child->dev.parent               = dev;
> -
> -     ret = platform_device_add(child);
> -     if (ret) {
> -             dev_err(dev, "platform_device_add failed\n");
> -             goto err_alloc;
> -     }
> -
> -     return child;
> -
> -err_alloc:
> -     platform_device_put(child);
> -
> -err_end:
> -     return NULL;
> -}
> -
> -static int omap_usbhs_alloc_children(struct platform_device *pdev)
> -{
> -     struct device                           *dev = &pdev->dev;
> -     struct usbhs_omap_platform_data         *pdata = dev_get_platdata(dev);
> -     struct platform_device                  *ehci;
> -     struct platform_device                  *ohci;
> -     struct resource                         *res;
> -     struct resource                         resources[2];
> -     int                                     ret;
> -
> -     res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ehci");
> -     if (!res) {
> -             dev_err(dev, "EHCI get resource IORESOURCE_MEM failed\n");
> -             ret = -ENODEV;
> -             goto err_end;
> -     }
> -     resources[0] = *res;
> -
> -     res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "ehci-irq");
> -     if (!res) {
> -             dev_err(dev, " EHCI get resource IORESOURCE_IRQ failed\n");
> -             ret = -ENODEV;
> -             goto err_end;
> -     }
> -     resources[1] = *res;
> -
> -     ehci = omap_usbhs_alloc_child(OMAP_EHCI_DEVICE, resources, 2, pdata,
> -             sizeof(*pdata), dev);
> -
> -     if (!ehci) {
> -             dev_err(dev, "omap_usbhs_alloc_child failed\n");
> -             ret = -ENOMEM;
> -             goto err_end;
> -     }
> -
> -     res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ohci");
> -     if (!res) {
> -             dev_err(dev, "OHCI get resource IORESOURCE_MEM failed\n");
> -             ret = -ENODEV;
> -             goto err_ehci;
> -     }
> -     resources[0] = *res;
> -
> -     res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "ohci-irq");
> -     if (!res) {
> -             dev_err(dev, "OHCI get resource IORESOURCE_IRQ failed\n");
> -             ret = -ENODEV;
> -             goto err_ehci;
> -     }
> -     resources[1] = *res;
> -
> -     ohci = omap_usbhs_alloc_child(OMAP_OHCI_DEVICE, resources, 2, pdata,
> -             sizeof(*pdata), dev);
> -     if (!ohci) {
> -             dev_err(dev, "omap_usbhs_alloc_child failed\n");
> -             ret = -ENOMEM;
> -             goto err_ehci;
> -     }
> -
> -     return 0;
> -
> -err_ehci:
> -     platform_device_unregister(ehci);
> -
> -err_end:
> -     return ret;
> -}
> -
>  static bool is_ohci_port(enum usbhs_omap_port_mode pmode)
>  {
>       switch (pmode) {
> @@ -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;

>  
>       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;
> diff --git a/include/linux/platform_data/usb-omap.h 
> b/include/linux/platform_data/usb-omap.h
> index fa579b4c666b..c051da514dc5 100644
> --- a/include/linux/platform_data/usb-omap.h
> +++ b/include/linux/platform_data/usb-omap.h
> @@ -38,10 +38,6 @@ enum usbhs_omap_port_mode {
>       OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM
>  };
>  
> -struct usbtll_omap_platform_data {
> -     enum usbhs_omap_port_mode               port_mode[OMAP3_HS_USB_PORTS];
> -};
> -
>  struct ehci_hcd_omap_platform_data {
>       enum usbhs_omap_port_mode       port_mode[OMAP3_HS_USB_PORTS];
>       int                             reset_gpio_port[OMAP3_HS_USB_PORTS];
> 

cheers,
-roger

-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

Reply via email to