-enum {
- Rev072A = 0,
- Rev012A,
-};
-
-static void reg_w_val(struct usb_device *dev, __u16 index, __u16 value)
-{
- int ret;
-
- ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
- 0, /* request */
- USB_TYPE_VENDOR | USB_RECIP_DEVICE,
- value, index, NULL, 0, 500);
- PDEBUG(D_USBO, "reg write: 0x%02x:0x%02x", index, value);
- if (ret < 0)
- PDEBUG(D_ERR, "reg write: error %d", ret);
-}
-
-static void write_vector(struct gspca_dev *gspca_dev, __u16 data[][2])
-{
- struct usb_device *dev = gspca_dev->dev;
- int i;
-
- i = 0;
- while (data[i][1] != 0) {
- reg_w_val(dev, data[i][1], data[i][0]);
- i++;
- }
-}
-
-static void reg_r(struct usb_device *dev,
- __u16 index, __u8 *buffer, __u16 length)
-{
- usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
- 0, /* request */
- USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
- 0, /* value */
- index, buffer, length, 500);
-}
-
-static void reg_w_buf(struct usb_device *dev,
- __u16 index, __u8 *buffer, __u16 length)
-{
- usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
- 0, /* request */
- USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
- 0, /* value */
- index, buffer, length, 500);
-}
-
-static void i2c_init(struct gspca_dev *gspca_dev, __u8 mode)
-{
- reg_w_val(gspca_dev->dev, 0x92, 0x8804);
- reg_w_val(gspca_dev->dev, mode, 0x8802);
-}
-
-static void i2c_write(struct gspca_dev *gspca_dev, __u16 valeur, __u16 reg)
-{
- int retry = 60;
- __u8 DataLow;
- __u8 DataHight;
- __u8 Data;
-
- DataLow = valeur;
- DataHight = valeur >> 8;
- reg_w_val(gspca_dev->dev, reg, 0x8801);
- reg_w_val(gspca_dev->dev, DataLow, 0x8805);
- reg_w_val(gspca_dev->dev, DataHight, 0x8800);
- while (retry--) {
- reg_r(gspca_dev->dev, 0x8803, &Data, 1);
- if (!Data)
- break;
- }
-}
-
-static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode)
-{
- int retry = 60;
- __u8 value;
- __u8 vallsb;
- __u8 Data;
-
- reg_w_val(gspca_dev->dev, 0x92, 0x8804);
- reg_w_val(gspca_dev->dev, reg, 0x8801);
- reg_w_val(gspca_dev->dev, (mode | 0x01), 0x8802);
- while (retry--) {
- reg_r(gspca_dev->dev, 0x8803, &Data, 1);
- if (!Data)
- break;
- }
- if (retry == 0)
- return -1;
- reg_r(gspca_dev->dev, 0x8800, &value, 1);
- reg_r(gspca_dev->dev, 0x8805, &vallsb, 1);
- return ((int) value << 8) | vallsb;
-}