summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2008-10-17 00:49:27 +0200
committerGuennadi Liakhovetski <g.liakhovetski@gmx.de>2008-10-17 00:49:27 +0200
commited4d56c859ac68c4480862375d42f62cc9cff38e (patch)
tree4163a1a2baaa56f5ee9a15d21b7a764e766a0fde /linux
parent4955fc93620d44b79e1f67d2fe79ab69908a899e (diff)
downloadmediapointer-dvb-s2-ed4d56c859ac68c4480862375d42f62cc9cff38e.tar.gz
mediapointer-dvb-s2-ed4d56c859ac68c4480862375d42f62cc9cff38e.tar.bz2
soc-camera: move sensor power management to soc_camera_platform.c
Switching sensors on and off is now done by sensor drivers themselves, typically using platform-provided hooks. Update soc_camera_platform.c to do the same. Also remove a refundant struct soc_camera_platform_info definition from soc_camera_platform.c. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Tested-by: Magnus Damm <damm@igel.co.jp> --- linux/drivers/media/video/soc_camera_platform.c | 20 +++++++++++--------- linux/include/media/soc_camera_platform.h | 1 + 2 files changed, 12 insertions(+), 9 deletions(-)
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/video/soc_camera_platform.c20
-rw-r--r--linux/include/media/soc_camera_platform.h1
2 files changed, 12 insertions, 9 deletions
diff --git a/linux/drivers/media/video/soc_camera_platform.c b/linux/drivers/media/video/soc_camera_platform.c
index 1adc257eb..bb7a9d480 100644
--- a/linux/drivers/media/video/soc_camera_platform.c
+++ b/linux/drivers/media/video/soc_camera_platform.c
@@ -18,15 +18,7 @@
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
#include <media/soc_camera.h>
-
-struct soc_camera_platform_info {
- int iface;
- char *format_name;
- unsigned long format_depth;
- struct v4l2_pix_format format;
- unsigned long bus_param;
- int (*set_capture)(struct soc_camera_platform_info *info, int enable);
-};
+#include <media/soc_camera_platform.h>
struct soc_camera_platform_priv {
struct soc_camera_platform_info *info;
@@ -44,11 +36,21 @@ soc_camera_platform_get_info(struct soc_camera_device *icd)
static int soc_camera_platform_init(struct soc_camera_device *icd)
{
+ struct soc_camera_platform_info *p = soc_camera_platform_get_info(icd);
+
+ if (p->power)
+ p->power(1);
+
return 0;
}
static int soc_camera_platform_release(struct soc_camera_device *icd)
{
+ struct soc_camera_platform_info *p = soc_camera_platform_get_info(icd);
+
+ if (p->power)
+ p->power(0);
+
return 0;
}
diff --git a/linux/include/media/soc_camera_platform.h b/linux/include/media/soc_camera_platform.h
index 851f18220..7c81ad32b 100644
--- a/linux/include/media/soc_camera_platform.h
+++ b/linux/include/media/soc_camera_platform.h
@@ -9,6 +9,7 @@ struct soc_camera_platform_info {
unsigned long format_depth;
struct v4l2_pix_format format;
unsigned long bus_param;
+ void (*power)(int);
int (*set_capture)(struct soc_camera_platform_info *info, int enable);
};