diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2012-07-20 17:19:50 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-16 00:03:29 +0400 |
commit | 4ec10bacd6bf08de39ebdba9e75060452cc313e0 (patch) | |
tree | e1013540a3643ed039cb96609ca1b23dcd2dcf8b /drivers/media/i2c/soc_camera/ov772x.c | |
parent | 24592adce89805c99eb23d1e37aa8a66aaacee05 (diff) | |
download | linux-4ec10bacd6bf08de39ebdba9e75060452cc313e0.tar.xz |
[media] soc-camera: Add and use soc_camera_power_[on|off]() helper functions
Instead of forcing all soc-camera drivers to go through the mid-layer to
handle power management, create soc_camera_power_[on|off]() functions
that can be called from the subdev .s_power() operation to manage
regulators and platform-specific power handling. This allows non
soc-camera hosts to use soc-camera-aware clients.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
[g.liakhovetski@gmx.de: fix compile breakage]
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/i2c/soc_camera/ov772x.c')
-rw-r--r-- | drivers/media/i2c/soc_camera/ov772x.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/media/i2c/soc_camera/ov772x.c b/drivers/media/i2c/soc_camera/ov772x.c index 6d79b89b8603..a022662da98a 100644 --- a/drivers/media/i2c/soc_camera/ov772x.c +++ b/drivers/media/i2c/soc_camera/ov772x.c @@ -683,6 +683,14 @@ static int ov772x_s_register(struct v4l2_subdev *sd, } #endif +static int ov772x_s_power(struct v4l2_subdev *sd, int on) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + struct soc_camera_link *icl = soc_camera_i2c_to_link(client); + + return soc_camera_set_power(&client->dev, icl, on); +} + static const struct ov772x_win_size *ov772x_select_win(u32 width, u32 height) { __u32 diff; @@ -996,6 +1004,7 @@ static struct v4l2_subdev_core_ops ov772x_subdev_core_ops = { .g_register = ov772x_g_register, .s_register = ov772x_s_register, #endif + .s_power = ov772x_s_power, }; static int ov772x_enum_fmt(struct v4l2_subdev *sd, unsigned int index, |