]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/media/soc_camera.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[linux-2.6-omap-h63xx.git] / include / media / soc_camera.h
index 6a8c8be7a1aed7694aac8148b605a3f8448f1a59..d548de326722a657ae8a257fe35e214f6585f432 100644 (file)
@@ -13,7 +13,8 @@
 #define SOC_CAMERA_H
 
 #include <linux/videodev2.h>
-#include <media/videobuf-dma-sg.h>
+#include <media/videobuf-core.h>
+#include <linux/pm.h>
 
 struct soc_camera_device {
        struct list_head list;
@@ -48,15 +49,12 @@ struct soc_camera_device {
 struct soc_camera_file {
        struct soc_camera_device *icd;
        struct videobuf_queue vb_vidq;
-       spinlock_t *lock;
 };
 
 struct soc_camera_host {
        struct list_head list;
        struct device dev;
        unsigned char nr;                               /* Host number */
-       size_t msize;
-       struct videobuf_queue_ops *vbq_ops;
        void *priv;
        char *drv_name;
        struct soc_camera_host_ops *ops;
@@ -66,16 +64,18 @@ struct soc_camera_host_ops {
        struct module *owner;
        int (*add)(struct soc_camera_device *);
        void (*remove)(struct soc_camera_device *);
+       int (*suspend)(struct soc_camera_device *, pm_message_t state);
+       int (*resume)(struct soc_camera_device *);
        int (*set_fmt_cap)(struct soc_camera_device *, __u32,
                           struct v4l2_rect *);
        int (*try_fmt_cap)(struct soc_camera_device *, struct v4l2_format *);
+       void (*init_videobuf)(struct videobuf_queue *,
+                             struct soc_camera_device *);
        int (*reqbufs)(struct soc_camera_file *, struct v4l2_requestbuffers *);
        int (*querycap)(struct soc_camera_host *, struct v4l2_capability *);
        int (*try_bus_param)(struct soc_camera_device *, __u32);
        int (*set_bus_param)(struct soc_camera_device *, __u32);
        unsigned int (*poll)(struct file *, poll_table *);
-       spinlock_t* (*spinlock_alloc)(struct soc_camera_file *);
-       void (*spinlock_free)(spinlock_t *);
 };
 
 struct soc_camera_link {
@@ -114,6 +114,8 @@ struct soc_camera_ops {
        struct module *owner;
        int (*probe)(struct soc_camera_device *);
        void (*remove)(struct soc_camera_device *);
+       int (*suspend)(struct soc_camera_device *, pm_message_t state);
+       int (*resume)(struct soc_camera_device *);
        int (*init)(struct soc_camera_device *);
        int (*release)(struct soc_camera_device *);
        int (*start_capture)(struct soc_camera_device *);
@@ -156,11 +158,12 @@ static inline struct v4l2_queryctrl const *soc_camera_find_qctrl(
 #define SOCAM_DATAWIDTH_8              (1 << 6)
 #define SOCAM_DATAWIDTH_9              (1 << 7)
 #define SOCAM_DATAWIDTH_10             (1 << 8)
-#define SOCAM_PCLK_SAMPLE_RISING       (1 << 9)
-#define SOCAM_PCLK_SAMPLE_FALLING      (1 << 10)
+#define SOCAM_DATAWIDTH_16             (1 << 9)
+#define SOCAM_PCLK_SAMPLE_RISING       (1 << 10)
+#define SOCAM_PCLK_SAMPLE_FALLING      (1 << 11)
 
 #define SOCAM_DATAWIDTH_MASK (SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_9 | \
-                             SOCAM_DATAWIDTH_10)
+                             SOCAM_DATAWIDTH_10 | SOCAM_DATAWIDTH_16)
 
 static inline unsigned long soc_camera_bus_param_compatible(
                        unsigned long camera_flags, unsigned long bus_flags)