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.pinchart@xxxxxxxxxxxxxxxx> --- 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; 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]; -- Regards, Laurent Pinchart