diff options
author | Jean Delvare <khali@linux-fr.org> | 2011-11-07 03:24:49 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-11-08 08:38:10 -0500 |
commit | 819cd82b0a994d9d83dc1d1ced1088e71d702d4c (patch) | |
tree | 3035a7d8c8ae3b9236482cd11d68620c7806d8d9 /drivers/media/video/usbvision | |
parent | fdb5a9111ef77d537efb86e90e8073ebfd0b553e (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.c | 46 |
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 | ||
185 | static u32 functionality(struct i2c_adapter *adap) | 163 | static 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: ------------------------------------- */ |