V4L/DVB (6400): usbvision: Convert the usbvision->lock semaphore to the mutex API
[pandora-kernel.git] / drivers / media / video / usbvision / usbvision.h
index ad6afd3..c32f685 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/list.h>
 #include <linux/usb.h>
 #include <linux/i2c.h>
+#include <linux/mutex.h>
 #include <media/v4l2-common.h>
 #include <media/tuner.h>
 #include <linux/videodev2.h>
 #define USBVISION_CLIPMASK_SIZE                (MAX_FRAME_WIDTH * MAX_FRAME_HEIGHT / 8) //bytesize of clipmask
 
 #define USBVISION_URB_FRAMES           32
-#define USBVISION_MAX_ISOC_PACKET_SIZE         959                     // NT1003 Specs Document says 1023
 
 #define USBVISION_NUM_HEADERMARKER     20
 #define USBVISION_NUMFRAMES            3  /* Maximum number of frames an application can get */
@@ -222,6 +222,8 @@ enum {
 
 #define I2C_USB_ADAP_MAX       16
 
+#define USBVISION_NORMS (V4L2_STD_PAL | V4L2_STD_NTSC | V4L2_STD_SECAM | V4L2_STD_PAL_M)
+
 /* ----------------------------------------------------------------- */
 /* usbvision video structures                                        */
 /* ----------------------------------------------------------------- */
@@ -302,14 +304,6 @@ struct usbvision_frame_header {
        __u16 frameHeight;                              /* 10 - 11 after endian correction*/
 };
 
-/* tvnorms */
-struct usbvision_tvnorm {
-       char *name;
-       v4l2_std_id id;
-       /* mode for saa7113h */
-       int mode;
-};
-
 struct usbvision_frame {
        char *data;                                     /* Frame buffer */
        struct usbvision_frame_header isocHeader;       /* Header from stream */
@@ -342,23 +336,24 @@ struct usbvision_frame {
 #define BRIDGE_NT1005   1005
 
 struct usbvision_device_data_st {
-       int idVendor;
-       int idProduct;
-       int Interface; /* to handle special interface number like BELKIN and Hauppauge WinTV-USB II */
-       int Codec;
-       int VideoChannels;
        __u64 VideoNorm;
-       int AudioChannels;
-       int Radio;
-       int vbi;
-       int Tuner;
-       int TunerType;
-       int Vin_Reg1;
-       int Vin_Reg2;
-       int X_Offset;
-       int Y_Offset;
-       int Dvi_yuv;
-       char *ModelString;
+       const char *ModelString;
+       int Interface; /* to handle special interface number like BELKIN and Hauppauge WinTV-USB II */
+       __u16 Codec;
+       unsigned VideoChannels:3;
+       unsigned AudioChannels:2;
+       unsigned Radio:1;
+       unsigned vbi:1;
+       unsigned Tuner:1;
+       unsigned Vin_Reg1_override:1;   /* Override default value with */
+       unsigned Vin_Reg2_override:1;   /* Vin_Reg1, Vin_Reg2, etc. */
+       unsigned Dvi_yuv_override:1;
+       __u8 Vin_Reg1;
+       __u8 Vin_Reg2;
+       __u8 Dvi_yuv;
+       __u8 TunerType;
+       __s16 X_Offset;
+       __s16 Y_Offset;
 };
 
 /* Declared on usbvision-cards.c */
@@ -386,7 +381,6 @@ struct usb_usbvision {
        int tuner_type;
        int tuner_addr;
        int bridgeType;                                                 // NT1003, NT1004, NT1005
-       int channel;
        int radio;
        int video_inputs;                                               // # of inputs
        unsigned long freq;
@@ -403,7 +397,7 @@ struct usb_usbvision {
        unsigned char iface;                                            /* Video interface number */
        unsigned char ifaceAlt;                 /* Alt settings */
        unsigned char Vin_Reg2_Preset;
-       struct semaphore lock;
+       struct mutex               lock;
        struct timer_list powerOffTimer;
        struct work_struct powerOffWork;
        int power;                                                      /* is the device powered on? */
@@ -441,7 +435,7 @@ struct usb_usbvision {
 
        struct v4l2_capability vcap;                                    /* Video capabilities */
        unsigned int ctl_input;                                         /* selected input */
-       struct usbvision_tvnorm *tvnorm;                                /* selected tv norm */
+       v4l2_std_id tvnormId;                                           /* selected tv norm */
        unsigned char video_endp;                                       /* 0x82 for USBVISION devices based */
 
        // Decompression stuff:
@@ -481,13 +475,11 @@ struct usb_usbvision {
 /* i2c-algo-usb declaration                                        */
 /* --------------------------------------------------------------- */
 
-int usbvision_i2c_usb_del_bus(struct i2c_adapter *);
-
-
 /* ----------------------------------------------------------------------- */
 /* usbvision specific I2C functions                                        */
 /* ----------------------------------------------------------------------- */
-int usbvision_init_i2c(struct usb_usbvision *usbvision);
+int usbvision_i2c_register(struct usb_usbvision *usbvision);
+int usbvision_i2c_unregister(struct usb_usbvision *usbvision);
 void call_i2c_clients(struct usb_usbvision *usbvision, unsigned int cmd,void *arg);
 
 /* defined in usbvision-core.c                                      */