aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/usbvision
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2011-11-07 03:24:49 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-11-08 08:38:10 -0500
commit819cd82b0a994d9d83dc1d1ced1088e71d702d4c (patch)
tree3035a7d8c8ae3b9236482cd11d68620c7806d8d9 /drivers/media/video/usbvision
parentfdb5a9111ef77d537efb86e90e8073ebfd0b553e (diff)
[media] usbvision: Drop broken 10-bit I2C address support
The support for 10-bit I2C addresses in usbvision seems plain broken to me. I had already noticed that back in February 2007 [1]. The code was not fixed since then, so I take it that it's not actually needed. And as a matter of fact I don't know of any 10-bit addressed I2C tuner, encode, decoder or the like. So let's simply get rid of the broken and useless code. I'm also adding I2C_FUNC_I2C, as the driver and hardware support plain I2C messaging. [1] http://marc.info/?l=linux-i2c&m=117499415208244&w=2 Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/usbvision')
-rw-r--r--drivers/media/video/usbvision/usbvision-i2c.c46
1 files changed, 12 insertions, 34 deletions
diff --git a/drivers/media/video/usbvision/usbvision-i2c.c b/drivers/media/video/usbvision/usbvision-i2c.c
index d7f97513b289..89fec029e924 100644
--- a/drivers/media/video/usbvision/usbvision-i2c.c
+++ b/drivers/media/video/usbvision/usbvision-i2c.c
@@ -110,42 +110,20 @@ static inline int usb_find_address(struct i2c_adapter *i2c_adap,
110 110
111 unsigned char addr; 111 unsigned char addr;
112 int ret; 112 int ret;
113 if ((flags & I2C_M_TEN)) {
114 /* a ten bit address */
115 addr = 0xf0 | ((msg->addr >> 7) & 0x03);
116 /* try extended address code... */
117 ret = try_write_address(i2c_adap, addr, retries);
118 if (ret != 1) {
119 dev_err(&i2c_adap->dev,
120 "died at extended address code, while writing\n");
121 return -EREMOTEIO;
122 }
123 add[0] = addr;
124 if (flags & I2C_M_RD) {
125 /* okay, now switch into reading mode */
126 addr |= 0x01;
127 ret = try_read_address(i2c_adap, addr, retries);
128 if (ret != 1) {
129 dev_err(&i2c_adap->dev,
130 "died at extended address code, while reading\n");
131 return -EREMOTEIO;
132 }
133 }
134 113
135 } else { /* normal 7bit address */ 114 addr = (msg->addr << 1);
136 addr = (msg->addr << 1); 115 if (flags & I2C_M_RD)
137 if (flags & I2C_M_RD) 116 addr |= 1;
138 addr |= 1;
139 117
140 add[0] = addr; 118 add[0] = addr;
141 if (flags & I2C_M_RD) 119 if (flags & I2C_M_RD)
142 ret = try_read_address(i2c_adap, addr, retries); 120 ret = try_read_address(i2c_adap, addr, retries);
143 else 121 else
144 ret = try_write_address(i2c_adap, addr, retries); 122 ret = try_write_address(i2c_adap, addr, retries);
123
124 if (ret != 1)
125 return -EREMOTEIO;
145 126
146 if (ret != 1)
147 return -EREMOTEIO;
148 }
149 return 0; 127 return 0;
150} 128}
151 129
@@ -184,7 +162,7 @@ usbvision_i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)
184 162
185static u32 functionality(struct i2c_adapter *adap) 163static u32 functionality(struct i2c_adapter *adap)
186{ 164{
187 return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_10BIT_ADDR; 165 return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
188} 166}
189 167
190/* -----exported algorithm data: ------------------------------------- */ 168/* -----exported algorithm data: ------------------------------------- */