diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2008-07-25 07:53:03 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-27 10:06:38 -0400 |
commit | 9d64fdb15b1b9ce9144cfde4001e9194ccde42d1 (patch) | |
tree | da578050af9867c0247b55099b4e7337f8fea2b4 /drivers/media/video/gspca/sunplus.c | |
parent | 07767ebda385956bd2b193f9820de719475bfe6e (diff) |
V4L/DVB (8513): gspca: Set the specific per webcam information in driver_info.
This patch removes a big part of the code run at probe time.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/gspca/sunplus.c')
-rw-r--r-- | drivers/media/video/gspca/sunplus.c | 349 |
1 files changed, 76 insertions, 273 deletions
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c index 030cb18b3557..54efa48bee01 100644 --- a/drivers/media/video/gspca/sunplus.c +++ b/drivers/media/video/gspca/sunplus.c | |||
@@ -801,228 +801,29 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
801 | struct sd *sd = (struct sd *) gspca_dev; | 801 | struct sd *sd = (struct sd *) gspca_dev; |
802 | struct usb_device *dev = gspca_dev->dev; | 802 | struct usb_device *dev = gspca_dev->dev; |
803 | struct cam *cam; | 803 | struct cam *cam; |
804 | __u16 vendor; | 804 | |
805 | __u16 product; | 805 | cam = &gspca_dev->cam; |
806 | __u8 fw; | 806 | cam->epaddr = 0x01; |
807 | 807 | ||
808 | vendor = id->idVendor; | 808 | sd->bridge = id->driver_info >> 8; |
809 | product = id->idProduct; | 809 | sd->subtype = id->driver_info; |
810 | switch (vendor) { | 810 | |
811 | case 0x041e: /* Creative cameras */ | 811 | if (sd->subtype == AiptekMiniPenCam13) { |
812 | /* switch (product) { */ | ||
813 | /* case 0x400b: */ | ||
814 | /* case 0x4012: */ | ||
815 | /* case 0x4013: */ | ||
816 | /* sd->bridge = BRIDGE_SPCA504C; */ | ||
817 | /* break; */ | ||
818 | /* } */ | ||
819 | break; | ||
820 | case 0x0458: /* Genius KYE cameras */ | ||
821 | /* switch (product) { */ | ||
822 | /* case 0x7006: */ | ||
823 | sd->bridge = BRIDGE_SPCA504B; | ||
824 | /* break; */ | ||
825 | /* } */ | ||
826 | break; | ||
827 | case 0x0461: /* MicroInnovation */ | ||
828 | /* switch (product) { */ | ||
829 | /* case 0x0821: */ | ||
830 | sd->bridge = BRIDGE_SPCA533; | ||
831 | /* break; */ | ||
832 | /* } */ | ||
833 | break; | ||
834 | case 0x046d: /* Logitech Labtec */ | ||
835 | switch (product) { | ||
836 | case 0x0905: | ||
837 | sd->subtype = LogitechClickSmart820; | ||
838 | sd->bridge = BRIDGE_SPCA533; | ||
839 | break; | ||
840 | case 0x0960: | ||
841 | sd->subtype = LogitechClickSmart420; | ||
842 | sd->bridge = BRIDGE_SPCA504C; | ||
843 | break; | ||
844 | } | ||
845 | break; | ||
846 | case 0x0471: /* Philips */ | ||
847 | /* switch (product) { */ | ||
848 | /* case 0x0322: */ | ||
849 | sd->bridge = BRIDGE_SPCA504B; | ||
850 | /* break; */ | ||
851 | /* } */ | ||
852 | break; | ||
853 | case 0x04a5: /* Benq */ | ||
854 | switch (product) { | ||
855 | case 0x3003: | ||
856 | sd->bridge = BRIDGE_SPCA504B; | ||
857 | break; | ||
858 | case 0x3008: | ||
859 | case 0x300a: | ||
860 | sd->bridge = BRIDGE_SPCA533; | ||
861 | break; | ||
862 | } | ||
863 | break; | ||
864 | case 0x04f1: /* JVC */ | ||
865 | /* switch (product) { */ | ||
866 | /* case 0x1001: */ | ||
867 | sd->bridge = BRIDGE_SPCA504B; | ||
868 | /* break; */ | ||
869 | /* } */ | ||
870 | break; | ||
871 | case 0x04fc: /* SunPlus */ | ||
872 | switch (product) { | ||
873 | case 0x500c: | ||
874 | sd->bridge = BRIDGE_SPCA504B; | ||
875 | break; | ||
876 | case 0x504a: | ||
877 | /* try to get the firmware as some cam answer 2.0.1.2.2 | 812 | /* try to get the firmware as some cam answer 2.0.1.2.2 |
878 | * and should be a spca504b then overwrite that setting */ | 813 | * and should be a spca504b then overwrite that setting */ |
879 | reg_r(dev, 0x20, 0, gspca_dev->usb_buf, 1); | 814 | reg_r(dev, 0x20, 0, gspca_dev->usb_buf, 1); |
880 | fw = gspca_dev->usb_buf[0]; | 815 | switch (gspca_dev->usb_buf[0]) { |
881 | if (fw == 1) { | 816 | case 1: |
882 | sd->subtype = AiptekMiniPenCam13; | 817 | break; /* (right bridge/subtype) */ |
883 | sd->bridge = BRIDGE_SPCA504; | 818 | case 2: |
884 | } else if (fw == 2) { | ||
885 | sd->bridge = BRIDGE_SPCA504B; | ||
886 | } else | ||
887 | return -ENODEV; | ||
888 | break; | ||
889 | case 0x504b: | ||
890 | sd->bridge = BRIDGE_SPCA504B; | ||
891 | break; | ||
892 | case 0x5330: | ||
893 | sd->bridge = BRIDGE_SPCA533; | ||
894 | break; | ||
895 | case 0x5360: | ||
896 | sd->bridge = BRIDGE_SPCA536; | ||
897 | break; | ||
898 | case 0xffff: | ||
899 | sd->bridge = BRIDGE_SPCA504B; | ||
900 | break; | ||
901 | } | ||
902 | break; | ||
903 | case 0x052b: /* ?? Megapix */ | ||
904 | /* switch (product) { */ | ||
905 | /* case 0x1513: */ | ||
906 | sd->subtype = MegapixV4; | ||
907 | sd->bridge = BRIDGE_SPCA533; | ||
908 | /* break; */ | ||
909 | /* } */ | ||
910 | break; | ||
911 | case 0x0546: /* Polaroid */ | ||
912 | switch (product) { | ||
913 | case 0x3155: | ||
914 | sd->bridge = BRIDGE_SPCA533; | ||
915 | break; | ||
916 | case 0x3191: | ||
917 | case 0x3273: | ||
918 | sd->bridge = BRIDGE_SPCA504B; | 819 | sd->bridge = BRIDGE_SPCA504B; |
820 | sd->subtype = 0; | ||
919 | break; | 821 | break; |
822 | default: | ||
823 | return -ENODEV; | ||
920 | } | 824 | } |
921 | break; | ||
922 | case 0x055f: /* Mustek cameras */ | ||
923 | switch (product) { | ||
924 | case 0xc211: | ||
925 | sd->bridge = BRIDGE_SPCA536; | ||
926 | break; | ||
927 | case 0xc230: | ||
928 | case 0xc232: | ||
929 | sd->bridge = BRIDGE_SPCA533; | ||
930 | break; | ||
931 | case 0xc360: | ||
932 | sd->bridge = BRIDGE_SPCA536; | ||
933 | break; | ||
934 | case 0xc420: | ||
935 | sd->bridge = BRIDGE_SPCA504; | ||
936 | break; | ||
937 | case 0xc430: | ||
938 | case 0xc440: | ||
939 | sd->bridge = BRIDGE_SPCA533; | ||
940 | break; | ||
941 | case 0xc520: | ||
942 | sd->bridge = BRIDGE_SPCA504; | ||
943 | break; | ||
944 | case 0xc530: | ||
945 | case 0xc540: | ||
946 | case 0xc630: | ||
947 | case 0xc650: | ||
948 | sd->bridge = BRIDGE_SPCA533; | ||
949 | break; | ||
950 | } | ||
951 | break; | ||
952 | case 0x05da: /* Digital Dream cameras */ | ||
953 | /* switch (product) { */ | ||
954 | /* case 0x1018: */ | ||
955 | sd->bridge = BRIDGE_SPCA504B; | ||
956 | /* break; */ | ||
957 | /* } */ | ||
958 | break; | ||
959 | case 0x06d6: /* Trust */ | ||
960 | /* switch (product) { */ | ||
961 | /* case 0x0031: */ | ||
962 | sd->bridge = BRIDGE_SPCA533; /* SPCA533A */ | ||
963 | /* break; */ | ||
964 | /* } */ | ||
965 | break; | ||
966 | case 0x0733: /* Rebadged ViewQuest (Intel) and ViewQuest cameras */ | ||
967 | switch (product) { | ||
968 | case 0x1311: | ||
969 | case 0x1314: | ||
970 | case 0x2211: | ||
971 | case 0x2221: | ||
972 | sd->bridge = BRIDGE_SPCA533; | ||
973 | break; | ||
974 | case 0x3261: | ||
975 | case 0x3281: | ||
976 | sd->bridge = BRIDGE_SPCA536; | ||
977 | break; | ||
978 | } | ||
979 | break; | ||
980 | case 0x08ca: /* Aiptek */ | ||
981 | switch (product) { | ||
982 | case 0x0104: | ||
983 | case 0x0106: | ||
984 | sd->bridge = BRIDGE_SPCA533; | ||
985 | break; | ||
986 | case 0x2008: | ||
987 | sd->bridge = BRIDGE_SPCA504B; | ||
988 | break; | ||
989 | case 0x2010: | ||
990 | sd->bridge = BRIDGE_SPCA533; | ||
991 | break; | ||
992 | case 0x2016: | ||
993 | case 0x2018: | ||
994 | sd->bridge = BRIDGE_SPCA504B; | ||
995 | break; | ||
996 | case 0x2020: | ||
997 | case 0x2022: | ||
998 | sd->bridge = BRIDGE_SPCA533; | ||
999 | break; | ||
1000 | case 0x2024: | ||
1001 | sd->bridge = BRIDGE_SPCA536; | ||
1002 | break; | ||
1003 | case 0x2028: | ||
1004 | sd->bridge = BRIDGE_SPCA533; | ||
1005 | break; | ||
1006 | case 0x2040: | ||
1007 | case 0x2042: | ||
1008 | case 0x2050: | ||
1009 | case 0x2060: | ||
1010 | sd->bridge = BRIDGE_SPCA536; | ||
1011 | break; | ||
1012 | } | ||
1013 | break; | ||
1014 | case 0x0d64: /* SunPlus */ | ||
1015 | /* switch (product) { */ | ||
1016 | /* case 0x0303: */ | ||
1017 | sd->bridge = BRIDGE_SPCA536; | ||
1018 | /* break; */ | ||
1019 | /* } */ | ||
1020 | break; | ||
1021 | } | 825 | } |
1022 | 826 | ||
1023 | cam = &gspca_dev->cam; | ||
1024 | cam->epaddr = 0x01; | ||
1025 | |||
1026 | switch (sd->bridge) { | 827 | switch (sd->bridge) { |
1027 | default: | 828 | default: |
1028 | /* case BRIDGE_SPCA504B: */ | 829 | /* case BRIDGE_SPCA504B: */ |
@@ -1577,65 +1378,67 @@ static const struct sd_desc sd_desc = { | |||
1577 | }; | 1378 | }; |
1578 | 1379 | ||
1579 | /* -- module initialisation -- */ | 1380 | /* -- module initialisation -- */ |
1580 | #define DVNM(name) .driver_info = (kernel_ulong_t) name | 1381 | #define BS(bridge, subtype) \ |
1382 | .driver_info = (BRIDGE_ ## bridge << 8) \ | ||
1383 | | (subtype) | ||
1581 | static const __devinitdata struct usb_device_id device_table[] = { | 1384 | static const __devinitdata struct usb_device_id device_table[] = { |
1582 | {USB_DEVICE(0x041e, 0x400b), DVNM("Creative PC-CAM 600")}, | 1385 | {USB_DEVICE(0x041e, 0x400b), BS(SPCA504C, 0)}, |
1583 | {USB_DEVICE(0x041e, 0x4012), DVNM("PC-Cam350")}, | 1386 | {USB_DEVICE(0x041e, 0x4012), BS(SPCA504C, 0)}, |
1584 | {USB_DEVICE(0x041e, 0x4013), DVNM("Creative Pccam750")}, | 1387 | {USB_DEVICE(0x041e, 0x4013), BS(SPCA504C, 0)}, |
1585 | {USB_DEVICE(0x0458, 0x7006), DVNM("Genius Dsc 1.3 Smart")}, | 1388 | {USB_DEVICE(0x0458, 0x7006), BS(SPCA504B, 0)}, |
1586 | {USB_DEVICE(0x0461, 0x0821), DVNM("Fujifilm MV-1")}, | 1389 | {USB_DEVICE(0x0461, 0x0821), BS(SPCA533, 0)}, |
1587 | {USB_DEVICE(0x046d, 0x0905), DVNM("Logitech ClickSmart 820")}, | 1390 | {USB_DEVICE(0x046d, 0x0905), BS(SPCA533, LogitechClickSmart820)}, |
1588 | {USB_DEVICE(0x046d, 0x0960), DVNM("Logitech ClickSmart 420")}, | 1391 | {USB_DEVICE(0x046d, 0x0960), BS(SPCA504C, LogitechClickSmart420)}, |
1589 | {USB_DEVICE(0x0471, 0x0322), DVNM("Philips DMVC1300K")}, | 1392 | {USB_DEVICE(0x0471, 0x0322), BS(SPCA504B, 0)}, |
1590 | {USB_DEVICE(0x04a5, 0x3003), DVNM("Benq DC 1300")}, | 1393 | {USB_DEVICE(0x04a5, 0x3003), BS(SPCA504B, 0)}, |
1591 | {USB_DEVICE(0x04a5, 0x3008), DVNM("Benq DC 1500")}, | 1394 | {USB_DEVICE(0x04a5, 0x3008), BS(SPCA533, 0)}, |
1592 | {USB_DEVICE(0x04a5, 0x300a), DVNM("Benq DC3410")}, | 1395 | {USB_DEVICE(0x04a5, 0x300a), BS(SPCA533, 0)}, |
1593 | {USB_DEVICE(0x04f1, 0x1001), DVNM("JVC GC A50")}, | 1396 | {USB_DEVICE(0x04f1, 0x1001), BS(SPCA504B, 0)}, |
1594 | {USB_DEVICE(0x04fc, 0x500c), DVNM("Sunplus CA500C")}, | 1397 | {USB_DEVICE(0x04fc, 0x500c), BS(SPCA504B, 0)}, |
1595 | {USB_DEVICE(0x04fc, 0x504a), DVNM("Aiptek Mini PenCam 1.3")}, | 1398 | {USB_DEVICE(0x04fc, 0x504a), BS(SPCA504, AiptekMiniPenCam13)}, |
1596 | {USB_DEVICE(0x04fc, 0x504b), DVNM("Maxell MaxPocket LE 1.3")}, | 1399 | {USB_DEVICE(0x04fc, 0x504b), BS(SPCA504B, 0)}, |
1597 | {USB_DEVICE(0x04fc, 0x5330), DVNM("Digitrex 2110")}, | 1400 | {USB_DEVICE(0x04fc, 0x5330), BS(SPCA533, 0)}, |
1598 | {USB_DEVICE(0x04fc, 0x5360), DVNM("Sunplus Generic")}, | 1401 | {USB_DEVICE(0x04fc, 0x5360), BS(SPCA536, 0)}, |
1599 | {USB_DEVICE(0x04fc, 0xffff), DVNM("Pure DigitalDakota")}, | 1402 | {USB_DEVICE(0x04fc, 0xffff), BS(SPCA504B, 0)}, |
1600 | {USB_DEVICE(0x052b, 0x1513), DVNM("Megapix V4")}, | 1403 | {USB_DEVICE(0x052b, 0x1513), BS(SPCA533, MegapixV4)}, |
1601 | {USB_DEVICE(0x0546, 0x3155), DVNM("Polaroid PDC3070")}, | 1404 | {USB_DEVICE(0x0546, 0x3155), BS(SPCA533, 0)}, |
1602 | {USB_DEVICE(0x0546, 0x3191), DVNM("Polaroid Ion 80")}, | 1405 | {USB_DEVICE(0x0546, 0x3191), BS(SPCA504B, 0)}, |
1603 | {USB_DEVICE(0x0546, 0x3273), DVNM("Polaroid PDC2030")}, | 1406 | {USB_DEVICE(0x0546, 0x3273), BS(SPCA504B, 0)}, |
1604 | {USB_DEVICE(0x055f, 0xc211), DVNM("Kowa Bs888e Microcamera")}, | 1407 | {USB_DEVICE(0x055f, 0xc211), BS(SPCA536, 0)}, |
1605 | {USB_DEVICE(0x055f, 0xc230), DVNM("Mustek Digicam 330K")}, | 1408 | {USB_DEVICE(0x055f, 0xc230), BS(SPCA533, 0)}, |
1606 | {USB_DEVICE(0x055f, 0xc232), DVNM("Mustek MDC3500")}, | 1409 | {USB_DEVICE(0x055f, 0xc232), BS(SPCA533, 0)}, |
1607 | {USB_DEVICE(0x055f, 0xc360), DVNM("Mustek DV4000 Mpeg4 ")}, | 1410 | {USB_DEVICE(0x055f, 0xc360), BS(SPCA536, 0)}, |
1608 | {USB_DEVICE(0x055f, 0xc420), DVNM("Mustek gSmart Mini 2")}, | 1411 | {USB_DEVICE(0x055f, 0xc420), BS(SPCA504, 0)}, |
1609 | {USB_DEVICE(0x055f, 0xc430), DVNM("Mustek Gsmart LCD 2")}, | 1412 | {USB_DEVICE(0x055f, 0xc430), BS(SPCA533, 0)}, |
1610 | {USB_DEVICE(0x055f, 0xc440), DVNM("Mustek DV 3000")}, | 1413 | {USB_DEVICE(0x055f, 0xc440), BS(SPCA533, 0)}, |
1611 | {USB_DEVICE(0x055f, 0xc520), DVNM("Mustek gSmart Mini 3")}, | 1414 | {USB_DEVICE(0x055f, 0xc520), BS(SPCA504, 0)}, |
1612 | {USB_DEVICE(0x055f, 0xc530), DVNM("Mustek Gsmart LCD 3")}, | 1415 | {USB_DEVICE(0x055f, 0xc530), BS(SPCA533, 0)}, |
1613 | {USB_DEVICE(0x055f, 0xc540), DVNM("Gsmart D30")}, | 1416 | {USB_DEVICE(0x055f, 0xc540), BS(SPCA533, 0)}, |
1614 | {USB_DEVICE(0x055f, 0xc630), DVNM("Mustek MDC4000")}, | 1417 | {USB_DEVICE(0x055f, 0xc630), BS(SPCA533, 0)}, |
1615 | {USB_DEVICE(0x055f, 0xc650), DVNM("Mustek MDC5500Z")}, | 1418 | {USB_DEVICE(0x055f, 0xc650), BS(SPCA533, 0)}, |
1616 | {USB_DEVICE(0x05da, 0x1018), DVNM("Digital Dream Enigma 1.3")}, | 1419 | {USB_DEVICE(0x05da, 0x1018), BS(SPCA504B, 0)}, |
1617 | {USB_DEVICE(0x06d6, 0x0031), DVNM("Trust 610 LCD PowerC@m Zoom")}, | 1420 | {USB_DEVICE(0x06d6, 0x0031), BS(SPCA533, 0)}, |
1618 | {USB_DEVICE(0x0733, 0x1311), DVNM("Digital Dream Epsilon 1.3")}, | 1421 | {USB_DEVICE(0x0733, 0x1311), BS(SPCA533, 0)}, |
1619 | {USB_DEVICE(0x0733, 0x1314), DVNM("Mercury 2.1MEG Deluxe Classic Cam")}, | 1422 | {USB_DEVICE(0x0733, 0x1314), BS(SPCA533, 0)}, |
1620 | {USB_DEVICE(0x0733, 0x2211), DVNM("Jenoptik jdc 21 LCD")}, | 1423 | {USB_DEVICE(0x0733, 0x2211), BS(SPCA533, 0)}, |
1621 | {USB_DEVICE(0x0733, 0x2221), DVNM("Mercury Digital Pro 3.1p")}, | 1424 | {USB_DEVICE(0x0733, 0x2221), BS(SPCA533, 0)}, |
1622 | {USB_DEVICE(0x0733, 0x3261), DVNM("Concord 3045 spca536a")}, | 1425 | {USB_DEVICE(0x0733, 0x3261), BS(SPCA536, 0)}, |
1623 | {USB_DEVICE(0x0733, 0x3281), DVNM("Cyberpix S550V")}, | 1426 | {USB_DEVICE(0x0733, 0x3281), BS(SPCA536, 0)}, |
1624 | {USB_DEVICE(0x08ca, 0x0104), DVNM("Aiptek PocketDVII 1.3")}, | 1427 | {USB_DEVICE(0x08ca, 0x0104), BS(SPCA533, 0)}, |
1625 | {USB_DEVICE(0x08ca, 0x0106), DVNM("Aiptek Pocket DV3100+")}, | 1428 | {USB_DEVICE(0x08ca, 0x0106), BS(SPCA533, 0)}, |
1626 | {USB_DEVICE(0x08ca, 0x2008), DVNM("Aiptek Mini PenCam 2 M")}, | 1429 | {USB_DEVICE(0x08ca, 0x2008), BS(SPCA504B, 0)}, |
1627 | {USB_DEVICE(0x08ca, 0x2010), DVNM("Aiptek PocketCam 3M")}, | 1430 | {USB_DEVICE(0x08ca, 0x2010), BS(SPCA533, 0)}, |
1628 | {USB_DEVICE(0x08ca, 0x2016), DVNM("Aiptek PocketCam 2 Mega")}, | 1431 | {USB_DEVICE(0x08ca, 0x2016), BS(SPCA504B, 0)}, |
1629 | {USB_DEVICE(0x08ca, 0x2018), DVNM("Aiptek Pencam SD 2M")}, | 1432 | {USB_DEVICE(0x08ca, 0x2018), BS(SPCA504B, 0)}, |
1630 | {USB_DEVICE(0x08ca, 0x2020), DVNM("Aiptek Slim 3000F")}, | 1433 | {USB_DEVICE(0x08ca, 0x2020), BS(SPCA533, 0)}, |
1631 | {USB_DEVICE(0x08ca, 0x2022), DVNM("Aiptek Slim 3200")}, | 1434 | {USB_DEVICE(0x08ca, 0x2022), BS(SPCA533, 0)}, |
1632 | {USB_DEVICE(0x08ca, 0x2024), DVNM("Aiptek DV3500 Mpeg4 ")}, | 1435 | {USB_DEVICE(0x08ca, 0x2024), BS(SPCA536, 0)}, |
1633 | {USB_DEVICE(0x08ca, 0x2028), DVNM("Aiptek PocketCam4M")}, | 1436 | {USB_DEVICE(0x08ca, 0x2028), BS(SPCA533, 0)}, |
1634 | {USB_DEVICE(0x08ca, 0x2040), DVNM("Aiptek PocketDV4100M")}, | 1437 | {USB_DEVICE(0x08ca, 0x2040), BS(SPCA536, 0)}, |
1635 | {USB_DEVICE(0x08ca, 0x2042), DVNM("Aiptek PocketDV5100")}, | 1438 | {USB_DEVICE(0x08ca, 0x2042), BS(SPCA536, 0)}, |
1636 | {USB_DEVICE(0x08ca, 0x2050), DVNM("Medion MD 41437")}, | 1439 | {USB_DEVICE(0x08ca, 0x2050), BS(SPCA536, 0)}, |
1637 | {USB_DEVICE(0x08ca, 0x2060), DVNM("Aiptek PocketDV5300")}, | 1440 | {USB_DEVICE(0x08ca, 0x2060), BS(SPCA536, 0)}, |
1638 | {USB_DEVICE(0x0d64, 0x0303), DVNM("Sunplus FashionCam DXG")}, | 1441 | {USB_DEVICE(0x0d64, 0x0303), BS(SPCA536, 0)}, |
1639 | {} | 1442 | {} |
1640 | }; | 1443 | }; |
1641 | MODULE_DEVICE_TABLE(usb, device_table); | 1444 | MODULE_DEVICE_TABLE(usb, device_table); |