diff mbox series

[3/3] mfd: omap-usb-host: Drop support for non-DT probe

Message ID 20180911150610.27510-4-laurent.pinchart@ideasonboard.com (mailing list archive)
State New, archived
Headers show
Series Fix OMAP EHCI probe & assorted cleanups | expand

Commit Message

Laurent Pinchart Sept. 11, 2018, 3:06 p.m. UTC
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@ideasonboard.com>
---
 drivers/mfd/omap-usb-host.c            | 153 +++------------------------------
 include/linux/platform_data/usb-omap.h |   4 -
 2 files changed, 13 insertions(+), 144 deletions(-)

Comments

Roger Quadros Sept. 12, 2018, 7:57 a.m. UTC | #1
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.pinchart@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
Laurent Pinchart Sept. 12, 2018, 8:30 a.m. UTC | #2
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 <laurent.pinchart@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

[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]
Roger Quadros Sept. 12, 2018, 8:49 a.m. UTC | #3
On 12/09/18 11:30, Laurent Pinchart wrote:
> 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 <laurent.pinchart@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
> 
> [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).

Ah, you're right.
Seems like it uses it only to get the nports, and port_mode[].

For this patch.

Acked-by: Roger Quadros <rogerq@ti.com>

> 
>>>  	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]
> 

cheers,
-roger
diff mbox series

Patch

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];