diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-11-07 04:10:08 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-05 15:41:37 -0500 |
commit | d5aa3856fd09ad0ea04619d6cba31192dac08e84 (patch) | |
tree | 8721bd2a164e0eec17c9dc7ae1c31db4b1468512 /drivers | |
parent | b1784b3377bdeaeb6b9d01e651ff07bd44fec0f4 (diff) |
V4L/DVB (13384): gspca - sonixj: Optimize code and add some comments.
- the i2c base address is now taken from the sn9c1xx register table
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 161 |
1 files changed, 82 insertions, 79 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index a9643a0f78d5..5f82efb93d9b 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
@@ -1,5 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Sonix sn9c102p sn9c105 sn9c120 (jpeg) subdriver | 2 | * Sonix sn9c102p sn9c105 sn9c120 (jpeg) subdriver |
3 | * | ||
3 | * Copyright (C) 2009 Jean-Francois Moine <http://moinejf.free.fr> | 4 | * Copyright (C) 2009 Jean-Francois Moine <http://moinejf.free.fr> |
4 | * Copyright (C) 2005 Michel Xhaard mxhaard@magic.fr | 5 | * Copyright (C) 2005 Michel Xhaard mxhaard@magic.fr |
5 | * | 6 | * |
@@ -72,7 +73,7 @@ struct sd { | |||
72 | #define SENSOR_OV7648 6 | 73 | #define SENSOR_OV7648 6 |
73 | #define SENSOR_OV7660 7 | 74 | #define SENSOR_OV7660 7 |
74 | #define SENSOR_SP80708 8 | 75 | #define SENSOR_SP80708 8 |
75 | u8 i2c_base; | 76 | u8 i2c_addr; |
76 | 77 | ||
77 | u8 *jpeg_hdr; | 78 | u8 *jpeg_hdr; |
78 | }; | 79 | }; |
@@ -597,10 +598,11 @@ static const u8 om6802_sensor_init[][8] = { | |||
597 | {0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10}, | 598 | {0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10}, |
598 | /* factory mode */ | 599 | /* factory mode */ |
599 | {0xa0, 0x34, 0xdd, 0x18, 0x00, 0x00, 0x00, 0x10}, | 600 | {0xa0, 0x34, 0xdd, 0x18, 0x00, 0x00, 0x00, 0x10}, |
601 | /* output raw RGB */ | ||
600 | {0xa0, 0x34, 0x5a, 0xc0, 0x00, 0x00, 0x00, 0x10}, | 602 | {0xa0, 0x34, 0x5a, 0xc0, 0x00, 0x00, 0x00, 0x10}, |
601 | /* {0xa0, 0x34, 0xfb, 0x11, 0x00, 0x00, 0x00, 0x10}, */ | 603 | /* {0xa0, 0x34, 0xfb, 0x11, 0x00, 0x00, 0x00, 0x10}, */ |
602 | {0xa0, 0x34, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x10}, | 604 | {0xa0, 0x34, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x10}, |
603 | /* white balance & auto-exposure */ | 605 | /* auto-exposure speed (0) / white balance mode (auto RGB) */ |
604 | /* {0xa0, 0x34, 0xf1, 0x02, 0x00, 0x00, 0x00, 0x10}, | 606 | /* {0xa0, 0x34, 0xf1, 0x02, 0x00, 0x00, 0x00, 0x10}, |
605 | * set color mode */ | 607 | * set color mode */ |
606 | /* {0xa0, 0x34, 0xfe, 0x5b, 0x00, 0x00, 0x00, 0x10}, | 608 | /* {0xa0, 0x34, 0xfe, 0x5b, 0x00, 0x00, 0x00, 0x10}, |
@@ -614,7 +616,7 @@ static const u8 om6802_sensor_init[][8] = { | |||
614 | /* {0xa0, 0x34, 0xe8, 0x31, 0x00, 0x00, 0x00, 0x10}, | 616 | /* {0xa0, 0x34, 0xe8, 0x31, 0x00, 0x00, 0x00, 0x10}, |
615 | * preset gamma */ | 617 | * preset gamma */ |
616 | {0xa0, 0x34, 0xe9, 0x0f, 0x00, 0x00, 0x00, 0x10}, | 618 | {0xa0, 0x34, 0xe9, 0x0f, 0x00, 0x00, 0x00, 0x10}, |
617 | /* luminance mode (0x4f = AE) */ | 619 | /* luminance mode (0x4f -> AutoExpo on) */ |
618 | {0xa0, 0x34, 0xe4, 0xff, 0x00, 0x00, 0x00, 0x10}, | 620 | {0xa0, 0x34, 0xe4, 0xff, 0x00, 0x00, 0x00, 0x10}, |
619 | /* preset shutter */ | 621 | /* preset shutter */ |
620 | /* {0xa0, 0x34, 0xef, 0x00, 0x00, 0x00, 0x00, 0x10}, | 622 | /* {0xa0, 0x34, 0xef, 0x00, 0x00, 0x00, 0x00, 0x10}, |
@@ -999,7 +1001,7 @@ static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val) | |||
999 | gspca_dev->usb_buf[0] = 0x81 | (2 << 4); | 1001 | gspca_dev->usb_buf[0] = 0x81 | (2 << 4); |
1000 | break; | 1002 | break; |
1001 | } | 1003 | } |
1002 | gspca_dev->usb_buf[1] = sd->i2c_base; | 1004 | gspca_dev->usb_buf[1] = sd->i2c_addr; |
1003 | gspca_dev->usb_buf[2] = reg; | 1005 | gspca_dev->usb_buf[2] = reg; |
1004 | gspca_dev->usb_buf[3] = val; | 1006 | gspca_dev->usb_buf[3] = val; |
1005 | gspca_dev->usb_buf[4] = 0; | 1007 | gspca_dev->usb_buf[4] = 0; |
@@ -1045,7 +1047,7 @@ static void i2c_r5(struct gspca_dev *gspca_dev, u8 reg) | |||
1045 | mode[0] = 0x81 | 0x10; | 1047 | mode[0] = 0x81 | 0x10; |
1046 | break; | 1048 | break; |
1047 | } | 1049 | } |
1048 | mode[1] = sd->i2c_base; | 1050 | mode[1] = sd->i2c_addr; |
1049 | mode[2] = reg; | 1051 | mode[2] = reg; |
1050 | mode[3] = 0; | 1052 | mode[3] = 0; |
1051 | mode[4] = 0; | 1053 | mode[4] = 0; |
@@ -1132,7 +1134,6 @@ static void mi0360_probe(struct gspca_dev *gspca_dev) | |||
1132 | case 0x823a: | 1134 | case 0x823a: |
1133 | PDEBUG(D_PROBE, "Sensor mt9v111"); | 1135 | PDEBUG(D_PROBE, "Sensor mt9v111"); |
1134 | sd->sensor = SENSOR_MT9V111; | 1136 | sd->sensor = SENSOR_MT9V111; |
1135 | sd->i2c_base = 0x5c; | ||
1136 | break; | 1137 | break; |
1137 | case 0x8243: | 1138 | case 0x8243: |
1138 | PDEBUG(D_PROBE, "Sensor mi0360"); | 1139 | PDEBUG(D_PROBE, "Sensor mi0360"); |
@@ -1160,7 +1161,7 @@ static void bridge_init(struct gspca_dev *gspca_dev, | |||
1160 | /* configure gpio */ | 1161 | /* configure gpio */ |
1161 | reg_w(gspca_dev, 0x01, &sn9c1xx[1], 2); | 1162 | reg_w(gspca_dev, 0x01, &sn9c1xx[1], 2); |
1162 | reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); | 1163 | reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); |
1163 | reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); /* jfm len was 3 */ | 1164 | reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); |
1164 | switch (sd->sensor) { | 1165 | switch (sd->sensor) { |
1165 | case SENSOR_OV7660: | 1166 | case SENSOR_OV7660: |
1166 | case SENSOR_SP80708: | 1167 | case SENSOR_SP80708: |
@@ -1172,7 +1173,7 @@ static void bridge_init(struct gspca_dev *gspca_dev, | |||
1172 | } | 1173 | } |
1173 | reg_w(gspca_dev, 0x9a, reg9a, 6); | 1174 | reg_w(gspca_dev, 0x9a, reg9a, 6); |
1174 | 1175 | ||
1175 | reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); /*fixme:jfm was 60 only*/ | 1176 | reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); |
1176 | 1177 | ||
1177 | reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); | 1178 | reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); |
1178 | 1179 | ||
@@ -1222,14 +1223,15 @@ static void bridge_init(struct gspca_dev *gspca_dev, | |||
1222 | msleep(100); | 1223 | msleep(100); |
1223 | reg_w1(gspca_dev, 0x02, 0x62); | 1224 | reg_w1(gspca_dev, 0x02, 0x62); |
1224 | break; | 1225 | break; |
1226 | default: | ||
1225 | /* case SENSOR_HV7131R: */ | 1227 | /* case SENSOR_HV7131R: */ |
1226 | /* case SENSOR_MI0360: */ | 1228 | /* case SENSOR_MI0360: */ |
1227 | /* case SENSOR_MO4000: */ | 1229 | /* case SENSOR_MO4000: */ |
1228 | default: | ||
1229 | reg_w1(gspca_dev, 0x01, 0x43); | 1230 | reg_w1(gspca_dev, 0x01, 0x43); |
1230 | reg_w1(gspca_dev, 0x17, 0x61); | 1231 | reg_w1(gspca_dev, 0x17, 0x61); |
1231 | reg_w1(gspca_dev, 0x01, 0x42); | 1232 | reg_w1(gspca_dev, 0x01, 0x42); |
1232 | if (sd->sensor == SENSOR_HV7131R) | 1233 | if (sd->sensor == SENSOR_HV7131R |
1234 | && sd->bridge == BRIDGE_SN9C102P) | ||
1233 | hv7131r_probe(gspca_dev); | 1235 | hv7131r_probe(gspca_dev); |
1234 | break; | 1236 | break; |
1235 | } | 1237 | } |
@@ -1248,8 +1250,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
1248 | cam->npkt = 24; /* 24 packets per ISOC message */ | 1250 | cam->npkt = 24; /* 24 packets per ISOC message */ |
1249 | 1251 | ||
1250 | sd->bridge = id->driver_info >> 16; | 1252 | sd->bridge = id->driver_info >> 16; |
1251 | sd->sensor = id->driver_info >> 8; | 1253 | sd->sensor = id->driver_info; |
1252 | sd->i2c_base = id->driver_info; | ||
1253 | 1254 | ||
1254 | sd->brightness = BRIGHTNESS_DEF; | 1255 | sd->brightness = BRIGHTNESS_DEF; |
1255 | sd->contrast = CONTRAST_DEF; | 1256 | sd->contrast = CONTRAST_DEF; |
@@ -1273,6 +1274,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
1273 | static int sd_init(struct gspca_dev *gspca_dev) | 1274 | static int sd_init(struct gspca_dev *gspca_dev) |
1274 | { | 1275 | { |
1275 | struct sd *sd = (struct sd *) gspca_dev; | 1276 | struct sd *sd = (struct sd *) gspca_dev; |
1277 | const u8 *sn9c1xx; | ||
1276 | u8 regGpio[] = { 0x29, 0x74 }; | 1278 | u8 regGpio[] = { 0x29, 0x74 }; |
1277 | u8 regF1; | 1279 | u8 regF1; |
1278 | 1280 | ||
@@ -1315,6 +1317,10 @@ static int sd_init(struct gspca_dev *gspca_dev) | |||
1315 | 1317 | ||
1316 | reg_w1(gspca_dev, 0xf1, 0x01); | 1318 | reg_w1(gspca_dev, 0xf1, 0x01); |
1317 | 1319 | ||
1320 | /* set the i2c address */ | ||
1321 | sn9c1xx = sn_tb[sd->sensor]; | ||
1322 | sd->i2c_addr = sn9c1xx[9]; | ||
1323 | |||
1318 | return 0; | 1324 | return 0; |
1319 | } | 1325 | } |
1320 | 1326 | ||
@@ -1326,7 +1332,7 @@ static u32 setexposure(struct gspca_dev *gspca_dev, | |||
1326 | switch (sd->sensor) { | 1332 | switch (sd->sensor) { |
1327 | case SENSOR_HV7131R: { | 1333 | case SENSOR_HV7131R: { |
1328 | u8 Expodoit[] = | 1334 | u8 Expodoit[] = |
1329 | { 0xc1, 0x11, 0x25, 0x07, 0x27, 0xc0, 0x00, 0x16 }; | 1335 | { 0xc1, 0x11, 0x25, 0x00, 0x00, 0x00, 0x00, 0x16 }; |
1330 | 1336 | ||
1331 | Expodoit[3] = expo >> 16; | 1337 | Expodoit[3] = expo >> 16; |
1332 | Expodoit[4] = expo >> 8; | 1338 | Expodoit[4] = expo >> 8; |
@@ -1336,7 +1342,7 @@ static u32 setexposure(struct gspca_dev *gspca_dev, | |||
1336 | } | 1342 | } |
1337 | case SENSOR_MI0360: { | 1343 | case SENSOR_MI0360: { |
1338 | u8 expoMi[] = /* exposure 0x0635 -> 4 fp/s 0x10 */ | 1344 | u8 expoMi[] = /* exposure 0x0635 -> 4 fp/s 0x10 */ |
1339 | { 0xb1, 0x5d, 0x09, 0x06, 0x35, 0x00, 0x00, 0x16 }; | 1345 | { 0xb1, 0x5d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x16 }; |
1340 | static const u8 doit[] = /* update sensor */ | 1346 | static const u8 doit[] = /* update sensor */ |
1341 | { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 }; | 1347 | { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 }; |
1342 | static const u8 sensorgo[] = /* sensor on */ | 1348 | static const u8 sensorgo[] = /* sensor on */ |
@@ -1355,9 +1361,9 @@ static u32 setexposure(struct gspca_dev *gspca_dev, | |||
1355 | } | 1361 | } |
1356 | case SENSOR_MO4000: { | 1362 | case SENSOR_MO4000: { |
1357 | u8 expoMof[] = | 1363 | u8 expoMof[] = |
1358 | { 0xa1, 0x21, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x10 }; | 1364 | { 0xa1, 0x21, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x10 }; |
1359 | u8 expoMo10[] = | 1365 | u8 expoMo10[] = |
1360 | { 0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10 }; | 1366 | { 0xa1, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10 }; |
1361 | static const u8 gainMo[] = | 1367 | static const u8 gainMo[] = |
1362 | { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d }; | 1368 | { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d }; |
1363 | 1369 | ||
@@ -1393,6 +1399,7 @@ static u32 setexposure(struct gspca_dev *gspca_dev, | |||
1393 | case SENSOR_OM6802: { | 1399 | case SENSOR_OM6802: { |
1394 | u8 gainOm[] = | 1400 | u8 gainOm[] = |
1395 | { 0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10 }; | 1401 | { 0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10 }; |
1402 | /* preset AGC - works when AutoExpo = off */ | ||
1396 | 1403 | ||
1397 | if (expo > 0x03ff) | 1404 | if (expo > 0x03ff) |
1398 | expo = 0x03ff; | 1405 | expo = 0x03ff; |
@@ -1400,7 +1407,7 @@ static u32 setexposure(struct gspca_dev *gspca_dev, | |||
1400 | expo = 0x0001; | 1407 | expo = 0x0001; |
1401 | gainOm[3] = expo >> 2; | 1408 | gainOm[3] = expo >> 2; |
1402 | i2c_w8(gspca_dev, gainOm); | 1409 | i2c_w8(gspca_dev, gainOm); |
1403 | reg_w1(gspca_dev, 0x96, (expo >> 5) & 0x1f); | 1410 | reg_w1(gspca_dev, 0x96, expo >> 5); |
1404 | PDEBUG(D_FRAM, "set exposure %d", gainOm[3]); | 1411 | PDEBUG(D_FRAM, "set exposure %d", gainOm[3]); |
1405 | break; | 1412 | break; |
1406 | } | 1413 | } |
@@ -1432,7 +1439,7 @@ static void setbrightness(struct gspca_dev *gspca_dev) | |||
1432 | case SENSOR_MT9V111: | 1439 | case SENSOR_MT9V111: |
1433 | expo = sd->brightness >> 8; | 1440 | expo = sd->brightness >> 8; |
1434 | sd->exposure = setexposure(gspca_dev, expo); | 1441 | sd->exposure = setexposure(gspca_dev, expo); |
1435 | break; | 1442 | return; /* don't set the Y offset */ |
1436 | case SENSOR_OM6802: | 1443 | case SENSOR_OM6802: |
1437 | expo = sd->brightness >> 6; | 1444 | expo = sd->brightness >> 6; |
1438 | sd->exposure = setexposure(gspca_dev, expo); | 1445 | sd->exposure = setexposure(gspca_dev, expo); |
@@ -1440,8 +1447,7 @@ static void setbrightness(struct gspca_dev *gspca_dev) | |||
1440 | break; | 1447 | break; |
1441 | } | 1448 | } |
1442 | 1449 | ||
1443 | if (sd->sensor != SENSOR_MT9V111) | 1450 | reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ |
1444 | reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ | ||
1445 | } | 1451 | } |
1446 | 1452 | ||
1447 | static void setcontrast(struct gspca_dev *gspca_dev) | 1453 | static void setcontrast(struct gspca_dev *gspca_dev) |
@@ -1469,6 +1475,7 @@ static void setcolors(struct gspca_dev *gspca_dev) | |||
1469 | -24, -38, 64, /* UR UG UB */ | 1475 | -24, -38, 64, /* UR UG UB */ |
1470 | 62, -51, -9 /* VR VG VB */ | 1476 | 62, -51, -9 /* VR VG VB */ |
1471 | }; | 1477 | }; |
1478 | |||
1472 | for (i = 0; i < 6; i++) { | 1479 | for (i = 0; i < 6; i++) { |
1473 | v = uv[i] * sd->colors / COLOR_DEF; | 1480 | v = uv[i] * sd->colors / COLOR_DEF; |
1474 | reg8a[i * 2] = v; | 1481 | reg8a[i * 2] = v; |
@@ -1692,6 +1699,7 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
1692 | /* initialize the bridge */ | 1699 | /* initialize the bridge */ |
1693 | sn9c1xx = sn_tb[sd->sensor]; | 1700 | sn9c1xx = sn_tb[sd->sensor]; |
1694 | bridge_init(gspca_dev, sn9c1xx); | 1701 | bridge_init(gspca_dev, sn9c1xx); |
1702 | |||
1695 | /* initialize the sensor */ | 1703 | /* initialize the sensor */ |
1696 | i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); | 1704 | i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); |
1697 | 1705 | ||
@@ -1779,7 +1787,7 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
1779 | reg_w1(gspca_dev, 0x06, sn9c1xx[6]); /* blue */ | 1787 | reg_w1(gspca_dev, 0x06, sn9c1xx[6]); /* blue */ |
1780 | 1788 | ||
1781 | init = NULL; | 1789 | init = NULL; |
1782 | mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; | 1790 | mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; |
1783 | if (mode) | 1791 | if (mode) |
1784 | reg1 = 0x46; /* 320x240: clk 48Mhz, video trf enable */ | 1792 | reg1 = 0x46; /* 320x240: clk 48Mhz, video trf enable */ |
1785 | else | 1793 | else |
@@ -1913,12 +1921,8 @@ static void sd_stopN(struct gspca_dev *gspca_dev) | |||
1913 | case SENSOR_OV7630: | 1921 | case SENSOR_OV7630: |
1914 | data = 0x29; | 1922 | data = 0x29; |
1915 | break; | 1923 | break; |
1916 | default: | ||
1917 | /* case SENSOR_MO4000: */ | ||
1918 | /* case SENSOR_OV7660: */ | ||
1919 | break; | ||
1920 | } | 1924 | } |
1921 | sn9c1xx = sn_tb[(int) sd->sensor]; | 1925 | sn9c1xx = sn_tb[sd->sensor]; |
1922 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); | 1926 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); |
1923 | reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]); | 1927 | reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]); |
1924 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); | 1928 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); |
@@ -2277,70 +2281,69 @@ static const struct sd_desc sd_desc = { | |||
2277 | }; | 2281 | }; |
2278 | 2282 | ||
2279 | /* -- module initialisation -- */ | 2283 | /* -- module initialisation -- */ |
2280 | #define BSI(bridge, sensor, i2c_addr) \ | 2284 | #define BS(bridge, sensor) \ |
2281 | .driver_info = (BRIDGE_ ## bridge << 16) \ | 2285 | .driver_info = (BRIDGE_ ## bridge << 16) \ |
2282 | | (SENSOR_ ## sensor << 8) \ | 2286 | | SENSOR_ ## sensor |
2283 | | (i2c_addr) | ||
2284 | static const __devinitdata struct usb_device_id device_table[] = { | 2287 | static const __devinitdata struct usb_device_id device_table[] = { |
2285 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE | 2288 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE |
2286 | {USB_DEVICE(0x0458, 0x7025), BSI(SN9C120, MI0360, 0x5d)}, | 2289 | {USB_DEVICE(0x0458, 0x7025), BS(SN9C120, MI0360)}, |
2287 | {USB_DEVICE(0x0458, 0x702e), BSI(SN9C120, OV7660, 0x21)}, | 2290 | {USB_DEVICE(0x0458, 0x702e), BS(SN9C120, OV7660)}, |
2288 | #endif | 2291 | #endif |
2289 | {USB_DEVICE(0x045e, 0x00f5), BSI(SN9C105, OV7660, 0x21)}, | 2292 | {USB_DEVICE(0x045e, 0x00f5), BS(SN9C105, OV7660)}, |
2290 | {USB_DEVICE(0x045e, 0x00f7), BSI(SN9C105, OV7660, 0x21)}, | 2293 | {USB_DEVICE(0x045e, 0x00f7), BS(SN9C105, OV7660)}, |
2291 | {USB_DEVICE(0x0471, 0x0327), BSI(SN9C105, MI0360, 0x5d)}, | 2294 | {USB_DEVICE(0x0471, 0x0327), BS(SN9C105, MI0360)}, |
2292 | {USB_DEVICE(0x0471, 0x0328), BSI(SN9C105, MI0360, 0x5d)}, | 2295 | {USB_DEVICE(0x0471, 0x0328), BS(SN9C105, MI0360)}, |
2293 | {USB_DEVICE(0x0471, 0x0330), BSI(SN9C105, MI0360, 0x5d)}, | 2296 | {USB_DEVICE(0x0471, 0x0330), BS(SN9C105, MI0360)}, |
2294 | {USB_DEVICE(0x06f8, 0x3004), BSI(SN9C105, OV7660, 0x21)}, | 2297 | {USB_DEVICE(0x06f8, 0x3004), BS(SN9C105, OV7660)}, |
2295 | {USB_DEVICE(0x06f8, 0x3008), BSI(SN9C105, OV7660, 0x21)}, | 2298 | {USB_DEVICE(0x06f8, 0x3008), BS(SN9C105, OV7660)}, |
2296 | /* {USB_DEVICE(0x0c45, 0x603a), BSI(SN9C102P, OV7648, 0x21)}, */ | 2299 | /* {USB_DEVICE(0x0c45, 0x603a), BS(SN9C102P, OV7648)}, */ |
2297 | {USB_DEVICE(0x0c45, 0x6040), BSI(SN9C102P, HV7131R, 0x11)}, | 2300 | {USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, HV7131R)}, |
2298 | /* {USB_DEVICE(0x0c45, 0x607a), BSI(SN9C102P, OV7648, 0x21)}, */ | 2301 | /* {USB_DEVICE(0x0c45, 0x607a), BS(SN9C102P, OV7648)}, */ |
2299 | /* {USB_DEVICE(0x0c45, 0x607b), BSI(SN9C102P, OV7660, 0x21)}, */ | 2302 | /* {USB_DEVICE(0x0c45, 0x607b), BS(SN9C102P, OV7660)}, */ |
2300 | {USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)}, | 2303 | {USB_DEVICE(0x0c45, 0x607c), BS(SN9C102P, HV7131R)}, |
2301 | /* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x21)}, */ | 2304 | /* {USB_DEVICE(0x0c45, 0x607e), BS(SN9C102P, OV7630)}, */ |
2302 | {USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)}, | 2305 | {USB_DEVICE(0x0c45, 0x60c0), BS(SN9C105, MI0360)}, |
2303 | /* {USB_DEVICE(0x0c45, 0x60c2), BSI(SN9C105, P1030xC, 0x??)}, */ | 2306 | /* {USB_DEVICE(0x0c45, 0x60c2), BS(SN9C105, P1030xC)}, */ |
2304 | /* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6802, 0x34)}, */ | 2307 | /* {USB_DEVICE(0x0c45, 0x60c8), BS(SN9C105, OM6802)}, */ |
2305 | /* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */ | 2308 | /* {USB_DEVICE(0x0c45, 0x60cc), BS(SN9C105, HV7131GP)}, */ |
2306 | {USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)}, | 2309 | {USB_DEVICE(0x0c45, 0x60ec), BS(SN9C105, MO4000)}, |
2307 | /* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */ | 2310 | /* {USB_DEVICE(0x0c45, 0x60ef), BS(SN9C105, ICM105C)}, */ |
2308 | /* {USB_DEVICE(0x0c45, 0x60fa), BSI(SN9C105, OV7648, 0x21)}, */ | 2311 | /* {USB_DEVICE(0x0c45, 0x60fa), BS(SN9C105, OV7648)}, */ |
2309 | {USB_DEVICE(0x0c45, 0x60fb), BSI(SN9C105, OV7660, 0x21)}, | 2312 | {USB_DEVICE(0x0c45, 0x60fb), BS(SN9C105, OV7660)}, |
2310 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE | 2313 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE |
2311 | {USB_DEVICE(0x0c45, 0x60fc), BSI(SN9C105, HV7131R, 0x11)}, | 2314 | {USB_DEVICE(0x0c45, 0x60fc), BS(SN9C105, HV7131R)}, |
2312 | {USB_DEVICE(0x0c45, 0x60fe), BSI(SN9C105, OV7630, 0x21)}, | 2315 | {USB_DEVICE(0x0c45, 0x60fe), BS(SN9C105, OV7630)}, |
2313 | #endif | 2316 | #endif |
2314 | {USB_DEVICE(0x0c45, 0x6100), BSI(SN9C120, MI0360, 0x5d)}, /*sn9c128*/ | 2317 | {USB_DEVICE(0x0c45, 0x6100), BS(SN9C120, MI0360)}, /*sn9c128*/ |
2315 | /* {USB_DEVICE(0x0c45, 0x6102), BSI(SN9C120, P1030xC, ??)}, */ | 2318 | /* {USB_DEVICE(0x0c45, 0x6102), BS(SN9C120, P1030xC)}, */ |
2316 | /* {USB_DEVICE(0x0c45, 0x6108), BSI(SN9C120, OM6802, 0x34)}, */ | 2319 | /* {USB_DEVICE(0x0c45, 0x6108), BS(SN9C120, OM6802)}, */ |
2317 | {USB_DEVICE(0x0c45, 0x610a), BSI(SN9C120, OV7648, 0x21)}, /*sn9c128*/ | 2320 | {USB_DEVICE(0x0c45, 0x610a), BS(SN9C120, OV7648)}, /*sn9c128*/ |
2318 | {USB_DEVICE(0x0c45, 0x610b), BSI(SN9C120, OV7660, 0x21)}, /*sn9c128*/ | 2321 | {USB_DEVICE(0x0c45, 0x610b), BS(SN9C120, OV7660)}, /*sn9c128*/ |
2319 | {USB_DEVICE(0x0c45, 0x610c), BSI(SN9C120, HV7131R, 0x11)}, /*sn9c128*/ | 2322 | {USB_DEVICE(0x0c45, 0x610c), BS(SN9C120, HV7131R)}, /*sn9c128*/ |
2320 | {USB_DEVICE(0x0c45, 0x610e), BSI(SN9C120, OV7630, 0x21)}, /*sn9c128*/ | 2323 | {USB_DEVICE(0x0c45, 0x610e), BS(SN9C120, OV7630)}, /*sn9c128*/ |
2321 | /* {USB_DEVICE(0x0c45, 0x610f), BSI(SN9C120, S5K53BEB, 0x??)}, */ | 2324 | /* {USB_DEVICE(0x0c45, 0x610f), BS(SN9C120, S5K53BEB)}, */ |
2322 | /* {USB_DEVICE(0x0c45, 0x6122), BSI(SN9C110, ICM105C, 0x??)}, */ | 2325 | /* {USB_DEVICE(0x0c45, 0x6122), BS(SN9C110, ICM105C)}, */ |
2323 | /* {USB_DEVICE(0x0c45, 0x6123), BSI(SN9C110, SanyoCCD, 0x??)}, */ | 2326 | /* {USB_DEVICE(0x0c45, 0x6123), BS(SN9C110, SanyoCCD)}, */ |
2324 | {USB_DEVICE(0x0c45, 0x6128), BSI(SN9C120, OM6802, 0x34)}, /*sn9c325?*/ | 2327 | {USB_DEVICE(0x0c45, 0x6128), BS(SN9C120, OM6802)}, /*sn9c325?*/ |
2325 | /*bw600.inf:*/ | 2328 | /*bw600.inf:*/ |
2326 | {USB_DEVICE(0x0c45, 0x612a), BSI(SN9C120, OV7648, 0x21)}, /*sn9c110?*/ | 2329 | {USB_DEVICE(0x0c45, 0x612a), BS(SN9C120, OV7648)}, /*sn9c110?*/ |
2327 | {USB_DEVICE(0x0c45, 0x612c), BSI(SN9C110, MO4000, 0x21)}, | 2330 | {USB_DEVICE(0x0c45, 0x612c), BS(SN9C110, MO4000)}, |
2328 | {USB_DEVICE(0x0c45, 0x612e), BSI(SN9C110, OV7630, 0x21)}, | 2331 | {USB_DEVICE(0x0c45, 0x612e), BS(SN9C110, OV7630)}, |
2329 | /* {USB_DEVICE(0x0c45, 0x612f), BSI(SN9C110, ICM105C, 0x??)}, */ | 2332 | /* {USB_DEVICE(0x0c45, 0x612f), BS(SN9C110, ICM105C)}, */ |
2330 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE | 2333 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE |
2331 | {USB_DEVICE(0x0c45, 0x6130), BSI(SN9C120, MI0360, 0x5d)}, | 2334 | {USB_DEVICE(0x0c45, 0x6130), BS(SN9C120, MI0360)}, |
2332 | #endif | 2335 | #endif |
2333 | /* {USB_DEVICE(0x0c45, 0x6132), BSI(SN9C120, OV7670, 0x21)}, */ | 2336 | /* {USB_DEVICE(0x0c45, 0x6132), BS(SN9C120, OV7670)}, */ |
2334 | {USB_DEVICE(0x0c45, 0x6138), BSI(SN9C120, MO4000, 0x21)}, | 2337 | {USB_DEVICE(0x0c45, 0x6138), BS(SN9C120, MO4000)}, |
2335 | {USB_DEVICE(0x0c45, 0x613a), BSI(SN9C120, OV7648, 0x21)}, | 2338 | {USB_DEVICE(0x0c45, 0x613a), BS(SN9C120, OV7648)}, |
2336 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE | 2339 | #if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE |
2337 | {USB_DEVICE(0x0c45, 0x613b), BSI(SN9C120, OV7660, 0x21)}, | 2340 | {USB_DEVICE(0x0c45, 0x613b), BS(SN9C120, OV7660)}, |
2338 | #endif | 2341 | #endif |
2339 | {USB_DEVICE(0x0c45, 0x613c), BSI(SN9C120, HV7131R, 0x11)}, | 2342 | {USB_DEVICE(0x0c45, 0x613c), BS(SN9C120, HV7131R)}, |
2340 | {USB_DEVICE(0x0c45, 0x613e), BSI(SN9C120, OV7630, 0x21)}, | 2343 | {USB_DEVICE(0x0c45, 0x613e), BS(SN9C120, OV7630)}, |
2341 | /* {USB_DEVICE(0x0c45, 0x6142), BSI(SN9C120, PO2030N, ??)}, *sn9c120b*/ | 2344 | /* {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, *sn9c120b*/ |
2342 | {USB_DEVICE(0x0c45, 0x6143), BSI(SN9C120, SP80708, 0x18)}, /*sn9c120b*/ | 2345 | {USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)}, /*sn9c120b*/ |
2343 | {USB_DEVICE(0x0c45, 0x6148), BSI(SN9C120, OM6802, 0x34)}, /*sn9c120b*/ | 2346 | {USB_DEVICE(0x0c45, 0x6148), BS(SN9C120, OM6802)}, /*sn9c120b*/ |
2344 | {} | 2347 | {} |
2345 | }; | 2348 | }; |
2346 | MODULE_DEVICE_TABLE(usb, device_table); | 2349 | MODULE_DEVICE_TABLE(usb, device_table); |