From 41fe752bdb499faf04c8764a317940c08a097da8 Mon Sep 17 00:00:00 2001 From: Benoit Goby Date: Fri, 10 Sep 2010 01:10:57 -0700 Subject: [PATCH] usb: otg: Copy usb1 platform data Change-Id: I878339ab53cad1687c1022137f00ecc494b60b9e Signed-off-by: Benoit Goby --- drivers/usb/otg/cpcap-otg.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/drivers/usb/otg/cpcap-otg.c b/drivers/usb/otg/cpcap-otg.c index cfb7c3ef0cc1..4c42f5b9c65c 100644 --- a/drivers/usb/otg/cpcap-otg.c +++ b/drivers/usb/otg/cpcap-otg.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -55,30 +56,44 @@ static const char *cpcap_state_name(enum usb_otg_state state) void cpcap_start_host(struct cpcap_otg_data *cpcap) { int retval; + struct platform_device *pdev; + struct platform_device *host = cpcap->host; + void *platform_data; - cpcap->pdev = platform_device_alloc(cpcap->host->name, cpcap->host->id); - if (!cpcap->pdev) + pdev = platform_device_alloc(host->name, host->id); + if (!pdev) return; - if (cpcap->host->resource) { - retval = platform_device_add_resources(cpcap->pdev, - cpcap->host->resource, - cpcap->host->num_resources); + if (host->resource) { + retval = platform_device_add_resources(pdev, host->resource, + host->num_resources); if (retval) goto error; } - cpcap->pdev->dev.dma_mask = cpcap->host->dev.dma_mask; - cpcap->pdev->dev.coherent_dma_mask = cpcap->host->dev.coherent_dma_mask; + pdev->dev.dma_mask = host->dev.dma_mask; + pdev->dev.coherent_dma_mask = host->dev.coherent_dma_mask; - retval = platform_device_add(cpcap->pdev); - if (retval) + platform_data = kmalloc(sizeof(struct tegra_ehci_platform_data), GFP_KERNEL); + if (!platform_data) goto error; + memcpy(platform_data, host->dev.platform_data, + sizeof(struct tegra_ehci_platform_data)); + pdev->dev.platform_data = platform_data; + + retval = platform_device_add(pdev); + if (retval) + goto error_add; + + cpcap->pdev = pdev; return; + +error_add: + kfree(platform_data); error: pr_err("%s: failed to add the host contoller device\n", __func__); - platform_device_put(cpcap->pdev); + platform_device_put(pdev); } void cpcap_stop_host(struct cpcap_otg_data *cpcap) -- 2.34.1