Skip to content

Commit

Permalink
sh: switch ap325rxa to dynamically manage the platform camera
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Guennadi Liakhovetski authored and Paul Mundt committed May 24, 2011
1 parent d762f43 commit a3793a0
Showing 1 changed file with 13 additions and 19 deletions.
32 changes: 13 additions & 19 deletions arch/sh/boards/mach-ap325rxa/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

Expand Down

0 comments on commit a3793a0

Please sign in to comment.