diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-02-01 12:26:51 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 11:42:37 -0400 |
commit | 65c5259cc44c822215e670025c226d77f5a323bf (patch) | |
tree | 565c64e510dc44a4b8a7eaac925366f8e0da1547 /drivers/media/video | |
parent | b083b92f9386d82e8ff3c1cfe04eefae488cbf1f (diff) |
V4L/DVB (10429): gspca - sonixj: Simplify the probe of the sensors mi0360/mt9v111.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index a5b58374333b..4101a240e481 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
@@ -1009,18 +1009,19 @@ static int hv7131r_probe(struct gspca_dev *gspca_dev) | |||
1009 | return -ENODEV; | 1009 | return -ENODEV; |
1010 | } | 1010 | } |
1011 | 1011 | ||
1012 | static int mi0360_probe(struct gspca_dev *gspca_dev) | 1012 | static void mi0360_probe(struct gspca_dev *gspca_dev) |
1013 | { | 1013 | { |
1014 | struct sd *sd = (struct sd *) gspca_dev; | ||
1014 | int i, j; | 1015 | int i, j; |
1015 | u16 val; | 1016 | u16 val; |
1016 | static const u8 probe_tb[][4][8] = { | 1017 | static const u8 probe_tb[][4][8] = { |
1017 | { | 1018 | { /* mi0360 */ |
1018 | {0xb0, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, | 1019 | {0xb0, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, |
1019 | {0x90, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, | 1020 | {0x90, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, |
1020 | {0xa2, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, | 1021 | {0xa2, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, |
1021 | {0xb0, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10} | 1022 | {0xb0, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10} |
1022 | }, | 1023 | }, |
1023 | { | 1024 | { /* mt9v111 */ |
1024 | {0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, | 1025 | {0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, |
1025 | {0x90, 0x5c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x10}, | 1026 | {0x90, 0x5c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x10}, |
1026 | {0xa2, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, | 1027 | {0xa2, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, |
@@ -1046,13 +1047,16 @@ static int mi0360_probe(struct gspca_dev *gspca_dev) | |||
1046 | switch (val) { | 1047 | switch (val) { |
1047 | case 0x823a: | 1048 | case 0x823a: |
1048 | PDEBUG(D_PROBE, "Sensor mt9v111"); | 1049 | PDEBUG(D_PROBE, "Sensor mt9v111"); |
1049 | return SENSOR_MT9V111; | 1050 | sd->sensor = SENSOR_MT9V111; |
1051 | sd->i2c_base = 0x5c; | ||
1052 | break; | ||
1050 | case 0x8243: | 1053 | case 0x8243: |
1051 | PDEBUG(D_PROBE, "Sensor mi0360"); | 1054 | PDEBUG(D_PROBE, "Sensor mi0360"); |
1052 | return SENSOR_MI0360; | 1055 | break; |
1056 | default: | ||
1057 | PDEBUG(D_PROBE, "Unknown sensor %04x - forced to mi0360", val); | ||
1058 | break; | ||
1053 | } | 1059 | } |
1054 | PDEBUG(D_PROBE, "Unknown sensor %04x - forced to mi0360", val); | ||
1055 | return SENSOR_MI0360; | ||
1056 | } | 1060 | } |
1057 | 1061 | ||
1058 | static int configure_gpio(struct gspca_dev *gspca_dev, | 1062 | static int configure_gpio(struct gspca_dev *gspca_dev, |
@@ -1319,21 +1323,15 @@ static int sd_init(struct gspca_dev *gspca_dev) | |||
1319 | case BRIDGE_SN9C105: | 1323 | case BRIDGE_SN9C105: |
1320 | if (regF1 != 0x11) | 1324 | if (regF1 != 0x11) |
1321 | return -ENODEV; | 1325 | return -ENODEV; |
1322 | if (sd->sensor == SENSOR_MI0360) { | 1326 | if (sd->sensor == SENSOR_MI0360) |
1323 | sd->sensor = mi0360_probe(gspca_dev); | 1327 | mi0360_probe(gspca_dev); |
1324 | if (sd->sensor == SENSOR_MT9V111) | ||
1325 | sd->i2c_base = 0x5c; | ||
1326 | } | ||
1327 | reg_w(gspca_dev, 0x01, regGpio, 2); | 1328 | reg_w(gspca_dev, 0x01, regGpio, 2); |
1328 | break; | 1329 | break; |
1329 | case BRIDGE_SN9C120: | 1330 | case BRIDGE_SN9C120: |
1330 | if (regF1 != 0x12) | 1331 | if (regF1 != 0x12) |
1331 | return -ENODEV; | 1332 | return -ENODEV; |
1332 | if (sd->sensor == SENSOR_MI0360) { | 1333 | if (sd->sensor == SENSOR_MI0360) |
1333 | sd->sensor = mi0360_probe(gspca_dev); | 1334 | mi0360_probe(gspca_dev); |
1334 | if (sd->sensor == SENSOR_MT9V111) | ||
1335 | sd->i2c_base = 0x5c; | ||
1336 | } | ||
1337 | regGpio[1] = 0x70; | 1335 | regGpio[1] = 0x70; |
1338 | reg_w(gspca_dev, 0x01, regGpio, 2); | 1336 | reg_w(gspca_dev, 0x01, regGpio, 2); |
1339 | break; | 1337 | break; |