aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/m5602/m5602_s5k83a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/gspca/m5602/m5602_s5k83a.c')
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k83a.c35
1 files changed, 14 insertions, 21 deletions
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k83a.c b/drivers/media/video/gspca/m5602/m5602_s5k83a.c
index ccea4a75846..9bea347b9ef 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k83a.c
+++ b/drivers/media/video/gspca/m5602/m5602_s5k83a.c
@@ -163,12 +163,11 @@ int s5k83a_get_brightness(struct gspca_dev *gspca_dev, __s32 *val)
163 163
164 err = m5602_read_sensor(sd, S5K83A_BRIGHTNESS, data, 2); 164 err = m5602_read_sensor(sd, S5K83A_BRIGHTNESS, data, 2);
165 if (err < 0) 165 if (err < 0)
166 goto out; 166 return err;
167 167
168 data[1] = data[1] << 1; 168 data[1] = data[1] << 1;
169 *val = data[1]; 169 *val = data[1];
170 170
171out:
172 return err; 171 return err;
173} 172}
174 173
@@ -182,13 +181,13 @@ int s5k83a_set_brightness(struct gspca_dev *gspca_dev, __s32 val)
182 data[1] = 0x20; 181 data[1] = 0x20;
183 err = m5602_write_sensor(sd, 0x14, data, 2); 182 err = m5602_write_sensor(sd, 0x14, data, 2);
184 if (err < 0) 183 if (err < 0)
185 goto out; 184 return err;
186 185
187 data[0] = 0x01; 186 data[0] = 0x01;
188 data[1] = 0x00; 187 data[1] = 0x00;
189 err = m5602_write_sensor(sd, 0x0d, data, 2); 188 err = m5602_write_sensor(sd, 0x0d, data, 2);
190 if (err < 0) 189 if (err < 0)
191 goto out; 190 return err;
192 191
193 /* FIXME: This is not sane, we need to figure out the composition 192 /* FIXME: This is not sane, we need to figure out the composition
194 of these registers */ 193 of these registers */
@@ -196,7 +195,6 @@ int s5k83a_set_brightness(struct gspca_dev *gspca_dev, __s32 val)
196 data[1] = val >> 1; /* brightness, high 7 bits */ 195 data[1] = val >> 1; /* brightness, high 7 bits */
197 err = m5602_write_sensor(sd, S5K83A_BRIGHTNESS, data, 2); 196 err = m5602_write_sensor(sd, S5K83A_BRIGHTNESS, data, 2);
198 197
199out:
200 return err; 198 return err;
201} 199}
202 200
@@ -208,11 +206,10 @@ int s5k83a_get_whiteness(struct gspca_dev *gspca_dev, __s32 *val)
208 206
209 err = m5602_read_sensor(sd, S5K83A_WHITENESS, &data, 1); 207 err = m5602_read_sensor(sd, S5K83A_WHITENESS, &data, 1);
210 if (err < 0) 208 if (err < 0)
211 goto out; 209 return err;
212 210
213 *val = data; 211 *val = data;
214 212
215out:
216 return err; 213 return err;
217} 214}
218 215
@@ -236,7 +233,7 @@ int s5k83a_get_gain(struct gspca_dev *gspca_dev, __s32 *val)
236 233
237 err = m5602_read_sensor(sd, S5K83A_GAIN, data, 2); 234 err = m5602_read_sensor(sd, S5K83A_GAIN, data, 2);
238 if (err < 0) 235 if (err < 0)
239 goto out; 236 return err;
240 237
241 data[1] = data[1] & 0x3f; 238 data[1] = data[1] & 0x3f;
242 if (data[1] > S5K83A_MAXIMUM_GAIN) 239 if (data[1] > S5K83A_MAXIMUM_GAIN)
@@ -244,7 +241,6 @@ int s5k83a_get_gain(struct gspca_dev *gspca_dev, __s32 *val)
244 241
245 *val = data[1]; 242 *val = data[1];
246 243
247out:
248 return err; 244 return err;
249} 245}
250 246
@@ -269,12 +265,11 @@ int s5k83a_get_vflip(struct gspca_dev *gspca_dev, __s32 *val)
269 data[0] = 0x05; 265 data[0] = 0x05;
270 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1); 266 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1);
271 if (err < 0) 267 if (err < 0)
272 goto out; 268 return err;
273 269
274 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1); 270 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1);
275 *val = (data[0] | 0x40) ? 1 : 0; 271 *val = (data[0] | 0x40) ? 1 : 0;
276 272
277out:
278 return err; 273 return err;
279} 274}
280 275
@@ -287,23 +282,22 @@ int s5k83a_set_vflip(struct gspca_dev *gspca_dev, __s32 val)
287 data[0] = 0x05; 282 data[0] = 0x05;
288 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1); 283 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1);
289 if (err < 0) 284 if (err < 0)
290 goto out; 285 return err;
291 286
292 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1); 287 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1);
293 if (err < 0) 288 if (err < 0)
294 goto out; 289 return err;
295 290
296 /* set or zero six bit, seven is hflip */ 291 /* set or zero six bit, seven is hflip */
297 data[0] = (val) ? (data[0] & 0x80) | 0x40 | S5K83A_FLIP_MASK 292 data[0] = (val) ? (data[0] & 0x80) | 0x40 | S5K83A_FLIP_MASK
298 : (data[0] & 0x80) | S5K83A_FLIP_MASK; 293 : (data[0] & 0x80) | S5K83A_FLIP_MASK;
299 err = m5602_write_sensor(sd, S5K83A_FLIP, data, 1); 294 err = m5602_write_sensor(sd, S5K83A_FLIP, data, 1);
300 if (err < 0) 295 if (err < 0)
301 goto out; 296 return err;
302 297
303 data[0] = (val) ? 0x0b : 0x0a; 298 data[0] = (val) ? 0x0b : 0x0a;
304 err = m5602_write_sensor(sd, S5K83A_VFLIP_TUNE, data, 1); 299 err = m5602_write_sensor(sd, S5K83A_VFLIP_TUNE, data, 1);
305 300
306out:
307 return err; 301 return err;
308} 302}
309 303
@@ -316,12 +310,11 @@ int s5k83a_get_hflip(struct gspca_dev *gspca_dev, __s32 *val)
316 data[0] = 0x05; 310 data[0] = 0x05;
317 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1); 311 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1);
318 if (err < 0) 312 if (err < 0)
319 goto out; 313 return err;
320 314
321 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1); 315 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1);
322 *val = (data[0] | 0x80) ? 1 : 0; 316 *val = (data[0] | 0x80) ? 1 : 0;
323 317
324out:
325 return err; 318 return err;
326} 319}
327 320
@@ -334,21 +327,21 @@ int s5k83a_set_hflip(struct gspca_dev *gspca_dev, __s32 val)
334 data[0] = 0x05; 327 data[0] = 0x05;
335 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1); 328 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1);
336 if (err < 0) 329 if (err < 0)
337 goto out; 330 return err;
338 331
339 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1); 332 err = m5602_read_sensor(sd, S5K83A_FLIP, data, 1);
340 if (err < 0) 333 if (err < 0)
341 goto out; 334 return err;
342 335
343 /* set or zero seven bit, six is vflip */ 336 /* set or zero seven bit, six is vflip */
344 data[0] = (val) ? (data[0] & 0x40) | 0x80 | S5K83A_FLIP_MASK 337 data[0] = (val) ? (data[0] & 0x40) | 0x80 | S5K83A_FLIP_MASK
345 : (data[0] & 0x40) | S5K83A_FLIP_MASK; 338 : (data[0] & 0x40) | S5K83A_FLIP_MASK;
346 err = m5602_write_sensor(sd, S5K83A_FLIP, data, 1); 339 err = m5602_write_sensor(sd, S5K83A_FLIP, data, 1);
347 if (err < 0) 340 if (err < 0)
348 goto out; 341 return err;
349 342
350 data[0] = (val) ? 0x0a : 0x0b; 343 data[0] = (val) ? 0x0a : 0x0b;
351 err = m5602_write_sensor(sd, S5K83A_HFLIP_TUNE, data, 1); 344 err = m5602_write_sensor(sd, S5K83A_HFLIP_TUNE, data, 1);
352out: 345
353 return err; 346 return err;
354} 347}