diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-07-29 15:48:37 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-07-29 15:48:37 +0100 |
commit | d50f58bbd979e86378dfdec982452041f0e604ef (patch) | |
tree | 511938033b3346983175c70dd4d0afeb00b59b82 /arch/arm/plat-mxc/devices.c | |
parent | Merge branch 'wells/lpc32xx-arch_v2' of git://git.lpclinux.com/linux-2.6-lpc into devel-stable (diff) | |
parent | mx2_camera: fix type of dma buffer virtual address pointer (diff) | |
download | linux-dev-d50f58bbd979e86378dfdec982452041f0e604ef.tar.xz linux-dev-d50f58bbd979e86378dfdec982452041f0e604ef.zip |
Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable
Diffstat (limited to 'arch/arm/plat-mxc/devices.c')
-rw-r--r-- | arch/arm/plat-mxc/devices.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/plat-mxc/devices.c b/arch/arm/plat-mxc/devices.c index 56f2fb5cc456..735776d84956 100644 --- a/arch/arm/plat-mxc/devices.c +++ b/arch/arm/plat-mxc/devices.c @@ -18,6 +18,7 @@ #include <linux/kernel.h> #include <linux/init.h> +#include <linux/err.h> #include <linux/platform_device.h> #include <mach/common.h> @@ -35,3 +36,35 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) return ret; } +struct platform_device *__init imx_add_platform_device(const char *name, int id, + const struct resource *res, unsigned int num_resources, + const void *data, size_t size_data) +{ + int ret = -ENOMEM; + struct platform_device *pdev; + + pdev = platform_device_alloc(name, id); + if (!pdev) + goto err; + + 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: + platform_device_put(pdev); + return ERR_PTR(ret); + } + + return pdev; +} |