ARM: mxc: convert device creation to use platform_device_register_full
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 25 Aug 2011 09:16:01 +0000 (11:16 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 26 Aug 2011 18:31:10 +0000 (11:31 -0700)
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/arm/plat-mxc/devices.c
arch/arm/plat-mxc/include/mach/devices-common.h

index 0d6ed31..a34b2ae 100644 (file)
@@ -37,59 +37,6 @@ int __init mxc_register_device(struct platform_device *pdev, void *data)
        return ret;
 }
 
-struct platform_device *__init imx_add_platform_device_dmamask(
-               const char *name, int id,
-               const struct resource *res, unsigned int num_resources,
-               const void *data, size_t size_data, u64 dmamask)
-{
-       int ret = -ENOMEM;
-       struct platform_device *pdev;
-
-       pdev = platform_device_alloc(name, id);
-       if (!pdev)
-               goto err;
-
-       if (dmamask) {
-               /*
-                * This memory isn't freed when the device is put,
-                * I don't have a nice idea for that though.  Conceptually
-                * dma_mask in struct device should not be a pointer.
-                * See http://thread.gmane.org/gmane.linux.kernel.pci/9081
-                */
-               pdev->dev.dma_mask =
-                       kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
-               if (!pdev->dev.dma_mask)
-                       /* ret is still -ENOMEM; */
-                       goto err;
-
-               *pdev->dev.dma_mask = dmamask;
-               pdev->dev.coherent_dma_mask = dmamask;
-       }
-
-       if (res) {
-               ret = platform_device_add_resources(pdev, res, num_resources);
-               if (ret)
-                       goto err;
-       }
-
-       if (data) {
-               ret = platform_device_add_data(pdev, data, size_data);
-               if (ret)
-                       goto err;
-       }
-
-       ret = platform_device_add(pdev);
-       if (ret) {
-err:
-               if (dmamask)
-                       kfree(pdev->dev.dma_mask);
-               platform_device_put(pdev);
-               return ERR_PTR(ret);
-       }
-
-       return pdev;
-}
-
 struct device mxc_aips_bus = {
        .init_name      = "mxc_aips",
        .parent         = &platform_bus,
index 524538a..543525d 100644 (file)
 extern struct device mxc_aips_bus;
 extern struct device mxc_ahb_bus;
 
-struct platform_device *imx_add_platform_device_dmamask(
+static inline struct platform_device *imx_add_platform_device_dmamask(
                const char *name, int id,
                const struct resource *res, unsigned int num_resources,
-               const void *data, size_t size_data, u64 dmamask);
+               const void *data, size_t size_data, u64 dmamask)
+{
+       struct platform_device_info pdevinfo = {
+               .name = name,
+               .id = id,
+               .res = res,
+               .num_res = num_resources,
+               .data = data,
+               .size_data = size_data,
+               .dma_mask = dmamask,
+       };
+       return platform_device_register_full(&pdevinfo);
+}
 
 static inline struct platform_device *imx_add_platform_device(
                const char *name, int id,