diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-08-25 16:46:54 +0200 |
---|---|---|
committer | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-08-25 16:46:54 +0200 |
commit | a94ff67f3f3091badb6034566504ad58206989ef (patch) | |
tree | 3367dc3deb2810262dd3aa9811f89b8884a89bbd /linux/drivers/media/video/soc_camera_platform.c | |
parent | 6bd7b0281dd65988d5cf613bc99541ef4a8f16cf (diff) | |
download | mediapointer-dvb-s2-a94ff67f3f3091badb6034566504ad58206989ef.tar.gz mediapointer-dvb-s2-a94ff67f3f3091badb6034566504ad58206989ef.tar.bz2 |
soc-camera: switch to s_crop v4l2-subdev video operation
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Remove set_crop soc-camera device method and switch to s_crop from v4l2-subdev
video operations. Also extend non-i2c drivers to also hold a pointer to their
v4l2-subdev instance in control device driver-data, i.e., in
dev_get_drvdata((struct device *)to_soc_camera_control(icd))
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Priority: low
---
drivers/media/video/mt9m001.c | 23 +++---
drivers/media/video/mt9m111.c | 9 +-
drivers/media/video/mt9t031.c | 9 +-
drivers/media/video/mt9v022.c | 23 +++---
drivers/media/video/mx1_camera.c | 8 ++-
drivers/media/video/mx3_camera.c | 7 +-
drivers/media/video/ov772x.c | 19 -----
drivers/media/video/pxa_camera.c | 7 +-
drivers/media/video/sh_mobile_ceu_camera.c | 110 ++++++++++++++-------------
drivers/media/video/soc_camera.c | 4 +-
drivers/media/video/soc_camera_platform.c | 28 ++++----
drivers/media/video/tw9910.c | 31 ++++----
include/media/soc_camera.h | 3 +-
13 files changed, 142 insertions(+), 139 deletions(-)
Diffstat (limited to 'linux/drivers/media/video/soc_camera_platform.c')
-rw-r--r-- | linux/drivers/media/video/soc_camera_platform.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/linux/drivers/media/video/soc_camera_platform.c b/linux/drivers/media/video/soc_camera_platform.c index 9e406c113..aec2cadbd 100644 --- a/linux/drivers/media/video/soc_camera_platform.c +++ b/linux/drivers/media/video/soc_camera_platform.c @@ -25,10 +25,15 @@ struct soc_camera_platform_priv { struct soc_camera_data_format format; }; -static struct soc_camera_platform_info * -soc_camera_platform_get_info(struct soc_camera_device *icd) +static struct soc_camera_platform_priv *get_priv(struct platform_device *pdev) { - struct platform_device *pdev = to_platform_device(dev_get_drvdata(&icd->dev)); + struct v4l2_subdev *subdev = platform_get_drvdata(pdev); + return container_of(subdev, struct soc_camera_platform_priv, subdev); +} + +static struct soc_camera_platform_info *get_info(struct soc_camera_device *icd) +{ + struct platform_device *pdev = to_platform_device(to_soc_camera_control(icd)); return pdev->dev.platform_data; } @@ -47,16 +52,10 @@ static int soc_camera_platform_set_bus_param(struct soc_camera_device *icd, static unsigned long soc_camera_platform_query_bus_param(struct soc_camera_device *icd) { - struct soc_camera_platform_info *p = soc_camera_platform_get_info(icd); + struct soc_camera_platform_info *p = get_info(icd); return p->bus_param; } -static int soc_camera_platform_set_crop(struct soc_camera_device *icd, - struct v4l2_rect *rect) -{ - return 0; -} - static int soc_camera_platform_try_fmt(struct v4l2_subdev *sd, struct v4l2_format *f) { @@ -71,7 +70,7 @@ static int soc_camera_platform_try_fmt(struct v4l2_subdev *sd, static void soc_camera_platform_video_probe(struct soc_camera_device *icd, struct platform_device *pdev) { - struct soc_camera_platform_priv *priv = platform_get_drvdata(pdev); + struct soc_camera_platform_priv *priv = get_priv(pdev); struct soc_camera_platform_info *p = pdev->dev.platform_data; priv->format.name = p->format_name; @@ -96,7 +95,6 @@ static struct v4l2_subdev_ops platform_subdev_ops = { }; static struct soc_camera_ops soc_camera_platform_ops = { - .set_crop = soc_camera_platform_set_crop, .set_bus_param = soc_camera_platform_set_bus_param, .query_bus_param = soc_camera_platform_query_bus_param, }; @@ -124,7 +122,9 @@ static int soc_camera_platform_probe(struct platform_device *pdev) icd = to_soc_camera_dev(p->dev); - platform_set_drvdata(pdev, priv); + /* soc-camera convention: control's drvdata points to the subdev */ + platform_set_drvdata(pdev, &priv->subdev); + /* Set the control device reference */ dev_set_drvdata(&icd->dev, &pdev->dev); icd->width_min = 0; @@ -158,7 +158,7 @@ evdrs: static int soc_camera_platform_remove(struct platform_device *pdev) { - struct soc_camera_platform_priv *priv = platform_get_drvdata(pdev); + struct soc_camera_platform_priv *priv = get_priv(pdev); struct soc_camera_platform_info *p = pdev->dev.platform_data; struct soc_camera_device *icd = to_soc_camera_dev(p->dev); |