tegra: usb: otg: factorize host registration code
Alexandre Courbot [Wed, 2 Nov 2011 07:57:31 +0000 (16:57 +0900)]
OTG host register/unregister functions were duplicated identically
across all board files, making the code difficult to maintain (and
actually some boards did not get all some code fixes leading to the same
bug being met again and again). This patch moves this common code into
tegra-otg.c.

Bug 884315
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Change-Id: I99b118664f0481f6c5470411b43f36609e0feb52
Reviewed-on: http://git-master/r/61763
Reviewed-by: Lokesh Pathak <lpathak@nvidia.com>
Tested-by: Lokesh Pathak <lpathak@nvidia.com>

Rebase-Id: Rd9299cca0d0de521f6f81ac450db3df55b5c5ff4

arch/arm/mach-tegra/board-cardhu.c

index cec5835..1b8db20 100644 (file)
@@ -699,52 +699,10 @@ static struct tegra_ehci_platform_data tegra_ehci_pdata[] = {
        },
 };
 
-static struct platform_device *tegra_usb_otg_host_register(void)
-{
-       struct platform_device *pdev;
-       void *platform_data;
-       int val;
-
-       pdev = platform_device_alloc(tegra_ehci1_device.name,
-               tegra_ehci1_device.id);
-       if (!pdev)
-               return NULL;
-
-       val = platform_device_add_resources(pdev, tegra_ehci1_device.resource,
-               tegra_ehci1_device.num_resources);
-       if (val)
-               goto error;
-
-       pdev->dev.dma_mask =  tegra_ehci1_device.dev.dma_mask;
-       pdev->dev.coherent_dma_mask = tegra_ehci1_device.dev.coherent_dma_mask;
-
-       platform_data = kmalloc(sizeof(struct tegra_ehci_platform_data),
-               GFP_KERNEL);
-       if (!platform_data)
-               goto error;
-
-       memcpy(platform_data, &tegra_ehci_pdata[0],
-                               sizeof(struct tegra_ehci_platform_data));
-       pdev->dev.platform_data = platform_data;
-
-       val = platform_device_add(pdev);
-       if (val)
-               goto error_add;
-
-       return pdev;
-
-error_add:
-       kfree(platform_data);
-error:
-       pr_err("%s: failed to add the host contoller device\n", __func__);
-       platform_device_put(pdev);
-       return NULL;
-}
-
-static void tegra_usb_otg_host_unregister(struct platform_device *pdev)
-{
-       platform_device_unregister(pdev);
-}
+static struct tegra_otg_platform_data tegra_otg_pdata = {
+       .ehci_device = &tegra_ehci1_device,
+       .ehci_pdata = &tegra_ehci_pdata[0],
+};
 
 #ifdef CONFIG_USB_SUPPORT
 static struct usb_phy_plat_data tegra_usb_phy_pdata[] = {
@@ -764,11 +722,6 @@ static struct usb_phy_plat_data tegra_usb_phy_pdata[] = {
        },
 };
 
-static struct tegra_otg_platform_data tegra_otg_pdata = {
-       .host_register = &tegra_usb_otg_host_register,
-       .host_unregister = &tegra_usb_otg_host_unregister,
-};
-
 static void cardhu_usb_init(void)
 {
        struct board_info bi;