diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2011-02-22 09:57:44 +0000 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-05-24 15:22:37 +0900 |
commit | a3793a0d86e2d65dda6beb86fa295be25b238159 (patch) | |
tree | 82d5a50e920274be6dee0c976a65b3f7d037dd5a /arch/sh | |
parent | d762f4383100c2a87b1a3f2d678cd3b5425655b4 (diff) | |
download | op-kernel-dev-a3793a0d86e2d65dda6beb86fa295be25b238159.zip op-kernel-dev-a3793a0d86e2d65dda6beb86fa295be25b238159.tar.gz |
sh: switch ap325rxa to dynamically manage the platform camera
Use soc_camera_platform helper functions to dynamically manage the
camera device.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boards/mach-ap325rxa/setup.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index 618bd56..969421f 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c @@ -359,37 +359,31 @@ static struct soc_camera_link camera_link = { .priv = &camera_info, }; -static void dummy_release(struct device *dev) +static struct platform_device *camera_device; + +static void ap325rxa_camera_release(struct device *dev) { + soc_camera_platform_release(&camera_device); } -static struct platform_device camera_device = { - .name = "soc_camera_platform", - .dev = { - .platform_data = &camera_info, - .release = dummy_release, - }, -}; - static int ap325rxa_camera_add(struct soc_camera_link *icl, struct device *dev) { - if (icl != &camera_link || camera_probe() <= 0) - return -ENODEV; + int ret = soc_camera_platform_add(icl, dev, &camera_device, &camera_link, + ap325rxa_camera_release, 0); + if (ret < 0) + return ret; - camera_info.dev = dev; + ret = camera_probe(); + if (ret < 0) + soc_camera_platform_del(icl, camera_device, &camera_link); - return platform_device_register(&camera_device); + return ret; } static void ap325rxa_camera_del(struct soc_camera_link *icl) { - if (icl != &camera_link) - return; - - platform_device_unregister(&camera_device); - memset(&camera_device.dev.kobj, 0, - sizeof(camera_device.dev.kobj)); + soc_camera_platform_del(icl, camera_device, &camera_link); } #endif /* CONFIG_I2C */ |