]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/sn9c102/sn9c102_tas5130d1b.c
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
[linux-2.6-omap-h63xx.git] / drivers / media / video / sn9c102 / sn9c102_tas5130d1b.c
index 9ecb09032b683fc0c1835c4f4c95e9bc402eb98d..56fb1d575a8a6fd74a247de569a5e3d323c97080 100644 (file)
@@ -1,8 +1,8 @@
 /***************************************************************************
- * Plug-in for TAS5130D1B image sensor connected to the SN9C10x PC Camera  *
+ * Plug-in for TAS5130D1B image sensor connected to the SN9C1xx PC Camera  *
  * Controllers                                                             *
  *                                                                         *
- * Copyright (C) 2004-2006 by Luca Risolia <luca.risolia@studio.unibo.it>  *
+ * Copyright (C) 2004-2007 by Luca Risolia <luca.risolia@studio.unibo.it>  *
  *                                                                         *
  * This program is free software; you can redistribute it and/or modify    *
  * it under the terms of the GNU General Public License as published by    *
 #include "sn9c102_sensor.h"
 
 
-static struct sn9c102_sensor tas5130d1b;
-
-
 static int tas5130d1b_init(struct sn9c102_device* cam)
 {
-       int err = 0;
+       int err;
 
-       err += sn9c102_write_reg(cam, 0x01, 0x01);
-       err += sn9c102_write_reg(cam, 0x20, 0x17);
-       err += sn9c102_write_reg(cam, 0x04, 0x01);
-       err += sn9c102_write_reg(cam, 0x01, 0x10);
-       err += sn9c102_write_reg(cam, 0x00, 0x11);
-       err += sn9c102_write_reg(cam, 0x00, 0x14);
-       err += sn9c102_write_reg(cam, 0x60, 0x17);
-       err += sn9c102_write_reg(cam, 0x07, 0x18);
+       err = sn9c102_write_const_regs(cam, {0x01, 0x01}, {0x20, 0x17},
+                                      {0x04, 0x01}, {0x01, 0x10},
+                                      {0x00, 0x11}, {0x00, 0x14},
+                                      {0x60, 0x17}, {0x07, 0x18});
 
        return err;
 }
@@ -65,7 +58,7 @@ static int tas5130d1b_set_ctrl(struct sn9c102_device* cam,
 static int tas5130d1b_set_crop(struct sn9c102_device* cam,
                               const struct v4l2_rect* rect)
 {
-       struct sn9c102_sensor* s = &tas5130d1b;
+       struct sn9c102_sensor* s = sn9c102_get_sensor(cam);
        u8 h_start = (u8)(rect->left - s->cropcap.bounds.left) + 104,
           v_start = (u8)(rect->top - s->cropcap.bounds.top) + 12;
        int err = 0;
@@ -96,9 +89,10 @@ static int tas5130d1b_set_pix_format(struct sn9c102_device* cam,
 }
 
 
-static struct sn9c102_sensor tas5130d1b = {
+static const struct sn9c102_sensor tas5130d1b = {
        .name = "TAS5130D1B",
        .maintainer = "Luca Risolia <luca.risolia@studio.unibo.it>",
+       .supported_bridge = BRIDGE_SN9C101 | BRIDGE_SN9C102,
        .sysfs_ops = SN9C102_I2C_WRITE,
        .frequency = SN9C102_I2C_100KHZ,
        .interface = SN9C102_I2C_3WIRES,
@@ -154,6 +148,7 @@ static struct sn9c102_sensor tas5130d1b = {
 int sn9c102_probe_tas5130d1b(struct sn9c102_device* cam)
 {
        const struct usb_device_id tas5130d1b_id_table[] = {
+               { USB_DEVICE(0x0c45, 0x6024), },
                { USB_DEVICE(0x0c45, 0x6025), },
                { USB_DEVICE(0x0c45, 0x60aa), },
                { }