dw2102.c (818b930bc15077fc00ff16bb22c5df1857f05afa) | dw2102.c (73f0af44a9137cc2ab18e181f68f59d2ad3fe3f7) |
---|---|
1/* DVB USB framework compliant Linux driver for the 2 * DVBWorld DVB-S 2101, 2102, DVB-S2 2104, DVB-C 3101, 3 * TeVii S600, S630, S650, S660, S480, 4 * Prof 1100, 7500, 5 * Geniatech SU3000 Cards 6 * Copyright (C) 2008-2011 Igor M. Liplianin (liplianin@me.by) 7 * 8 * This program is free software; you can redistribute it and/or modify it --- 8 unchanged lines hidden (view full) --- 17#include "z0194a.h" 18#include "stv0288.h" 19#include "stb6000.h" 20#include "eds1547.h" 21#include "cx24116.h" 22#include "tda1002x.h" 23#include "mt312.h" 24#include "zl10039.h" | 1/* DVB USB framework compliant Linux driver for the 2 * DVBWorld DVB-S 2101, 2102, DVB-S2 2104, DVB-C 3101, 3 * TeVii S600, S630, S650, S660, S480, 4 * Prof 1100, 7500, 5 * Geniatech SU3000 Cards 6 * Copyright (C) 2008-2011 Igor M. Liplianin (liplianin@me.by) 7 * 8 * This program is free software; you can redistribute it and/or modify it --- 8 unchanged lines hidden (view full) --- 17#include "z0194a.h" 18#include "stv0288.h" 19#include "stb6000.h" 20#include "eds1547.h" 21#include "cx24116.h" 22#include "tda1002x.h" 23#include "mt312.h" 24#include "zl10039.h" |
25#include "ts2020.h" |
|
25#include "ds3000.h" 26#include "stv0900.h" 27#include "stv6110.h" 28#include "stb6100.h" 29#include "stb6100_proc.h" 30 31#ifndef USB_PID_DW2102 32#define USB_PID_DW2102 0x2102 --- 42 unchanged lines hidden (view full) --- 75#define REG_20_SYMBOLRATE_BYTE1 0x20 76#define REG_21_SYMBOLRATE_BYTE2 0x21 77/* on my own*/ 78#define DW2102_VOLTAGE_CTRL (0x1800) 79#define SU3000_STREAM_CTRL (0x1900) 80#define DW2102_RC_QUERY (0x1a00) 81#define DW2102_LED_CTRL (0x1b00) 82 | 26#include "ds3000.h" 27#include "stv0900.h" 28#include "stv6110.h" 29#include "stb6100.h" 30#include "stb6100_proc.h" 31 32#ifndef USB_PID_DW2102 33#define USB_PID_DW2102 0x2102 --- 42 unchanged lines hidden (view full) --- 76#define REG_20_SYMBOLRATE_BYTE1 0x20 77#define REG_21_SYMBOLRATE_BYTE2 0x21 78/* on my own*/ 79#define DW2102_VOLTAGE_CTRL (0x1800) 80#define SU3000_STREAM_CTRL (0x1900) 81#define DW2102_RC_QUERY (0x1a00) 82#define DW2102_LED_CTRL (0x1b00) 83 |
84#define DW2101_FIRMWARE "dvb-usb-dw2101.fw" 85#define DW2102_FIRMWARE "dvb-usb-dw2102.fw" 86#define DW2104_FIRMWARE "dvb-usb-dw2104.fw" 87#define DW3101_FIRMWARE "dvb-usb-dw3101.fw" 88#define S630_FIRMWARE "dvb-usb-s630.fw" 89#define S660_FIRMWARE "dvb-usb-s660.fw" 90#define P1100_FIRMWARE "dvb-usb-p1100.fw" 91#define P7500_FIRMWARE "dvb-usb-p7500.fw" 92 |
|
83#define err_str "did not find the firmware file. (%s) " \ 84 "Please see linux/Documentation/dvb/ for more details " \ 85 "on firmware-problems." 86 87struct rc_map_dvb_usb_table_table { 88 struct rc_map_table *rc_keys; 89 int rc_keys_size; 90}; --- 836 unchanged lines hidden (view full) --- 927static struct mt312_config zl313_config = { 928 .demod_address = 0x0e, 929}; 930 931static struct ds3000_config dw2104_ds3000_config = { 932 .demod_address = 0x68, 933}; 934 | 93#define err_str "did not find the firmware file. (%s) " \ 94 "Please see linux/Documentation/dvb/ for more details " \ 95 "on firmware-problems." 96 97struct rc_map_dvb_usb_table_table { 98 struct rc_map_table *rc_keys; 99 int rc_keys_size; 100}; --- 836 unchanged lines hidden (view full) --- 937static struct mt312_config zl313_config = { 938 .demod_address = 0x0e, 939}; 940 941static struct ds3000_config dw2104_ds3000_config = { 942 .demod_address = 0x68, 943}; 944 |
945static struct ts2020_config dw2104_ts2020_config = { 946 .tuner_address = 0x60, 947}; 948 |
|
935static struct stv0900_config dw2104a_stv0900_config = { 936 .demod_address = 0x6a, 937 .demod_mode = 0, 938 .xtal = 27000000, 939 .clkmode = 3,/* 0-CLKI, 2-XTALI, else AUTO */ 940 .diseqc_mode = 2,/* 2/3 PWM */ 941 .tun1_maddress = 0,/* 0x60 */ 942 .tun1_adc = 0,/* 2 Vpp */ --- 35 unchanged lines hidden (view full) --- 978 .set_lock_led = dw210x_led_ctrl, 979}; 980 981static struct ds3000_config su3000_ds3000_config = { 982 .demod_address = 0x68, 983 .ci_mode = 1, 984}; 985 | 949static struct stv0900_config dw2104a_stv0900_config = { 950 .demod_address = 0x6a, 951 .demod_mode = 0, 952 .xtal = 27000000, 953 .clkmode = 3,/* 0-CLKI, 2-XTALI, else AUTO */ 954 .diseqc_mode = 2,/* 2/3 PWM */ 955 .tun1_maddress = 0,/* 0x60 */ 956 .tun1_adc = 0,/* 2 Vpp */ --- 35 unchanged lines hidden (view full) --- 992 .set_lock_led = dw210x_led_ctrl, 993}; 994 995static struct ds3000_config su3000_ds3000_config = { 996 .demod_address = 0x68, 997 .ci_mode = 1, 998}; 999 |
1000static struct ts2020_config su3000_ts2020_config = { 1001 .tuner_address = 0x60, 1002}; 1003 |
|
986static int dw2104_frontend_attach(struct dvb_usb_adapter *d) 987{ 988 struct dvb_tuner_ops *tuner_ops = NULL; 989 990 if (demod_probe & 4) { 991 d->fe_adap[0].fe = dvb_attach(stv0900_attach, &dw2104a_stv0900_config, 992 &d->dev->i2c_adap, 0); 993 if (d->fe_adap[0].fe != NULL) { --- 34 unchanged lines hidden (view full) --- 1028 info("Attached cx24116!\n"); 1029 return 0; 1030 } 1031 } 1032 1033 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, 1034 &d->dev->i2c_adap); 1035 if (d->fe_adap[0].fe != NULL) { | 1004static int dw2104_frontend_attach(struct dvb_usb_adapter *d) 1005{ 1006 struct dvb_tuner_ops *tuner_ops = NULL; 1007 1008 if (demod_probe & 4) { 1009 d->fe_adap[0].fe = dvb_attach(stv0900_attach, &dw2104a_stv0900_config, 1010 &d->dev->i2c_adap, 0); 1011 if (d->fe_adap[0].fe != NULL) { --- 34 unchanged lines hidden (view full) --- 1046 info("Attached cx24116!\n"); 1047 return 0; 1048 } 1049 } 1050 1051 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, 1052 &d->dev->i2c_adap); 1053 if (d->fe_adap[0].fe != NULL) { |
1054 dvb_attach(ts2020_attach, d->fe_adap[0].fe, 1055 &dw2104_ts2020_config, &d->dev->i2c_adap); |
|
1036 d->fe_adap[0].fe->ops.set_voltage = dw210x_set_voltage; 1037 info("Attached DS3000!\n"); 1038 return 0; 1039 } 1040 1041 return -EIO; 1042} 1043 --- 96 unchanged lines hidden (view full) --- 1140 u8 obuf[] = {7, 1}; 1141 1142 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, 1143 &d->dev->i2c_adap); 1144 1145 if (d->fe_adap[0].fe == NULL) 1146 return -EIO; 1147 | 1056 d->fe_adap[0].fe->ops.set_voltage = dw210x_set_voltage; 1057 info("Attached DS3000!\n"); 1058 return 0; 1059 } 1060 1061 return -EIO; 1062} 1063 --- 96 unchanged lines hidden (view full) --- 1160 u8 obuf[] = {7, 1}; 1161 1162 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, 1163 &d->dev->i2c_adap); 1164 1165 if (d->fe_adap[0].fe == NULL) 1166 return -EIO; 1167 |
1168 dvb_attach(ts2020_attach, d->fe_adap[0].fe, &dw2104_ts2020_config, 1169 &d->dev->i2c_adap); 1170 |
|
1148 st->old_set_voltage = d->fe_adap[0].fe->ops.set_voltage; 1149 d->fe_adap[0].fe->ops.set_voltage = s660_set_voltage; 1150 1151 dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); 1152 1153 info("Attached ds3000+ds2020!\n"); 1154 1155 return 0; --- 44 unchanged lines hidden (view full) --- 1200 if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0) 1201 err("command 0x51 transfer failed."); 1202 1203 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &su3000_ds3000_config, 1204 &d->dev->i2c_adap); 1205 if (d->fe_adap[0].fe == NULL) 1206 return -EIO; 1207 | 1171 st->old_set_voltage = d->fe_adap[0].fe->ops.set_voltage; 1172 d->fe_adap[0].fe->ops.set_voltage = s660_set_voltage; 1173 1174 dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); 1175 1176 info("Attached ds3000+ds2020!\n"); 1177 1178 return 0; --- 44 unchanged lines hidden (view full) --- 1223 if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0) 1224 err("command 0x51 transfer failed."); 1225 1226 d->fe_adap[0].fe = dvb_attach(ds3000_attach, &su3000_ds3000_config, 1227 &d->dev->i2c_adap); 1228 if (d->fe_adap[0].fe == NULL) 1229 return -EIO; 1230 |
1231 dvb_attach(ts2020_attach, d->fe_adap[0].fe, &su3000_ts2020_config, 1232 &d->dev->i2c_adap); 1233 |
|
1208 info("Attached DS3000!\n"); 1209 1210 return 0; 1211} 1212 1213static int dw2102_tuner_attach(struct dvb_usb_adapter *adap) 1214{ 1215 dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x60, --- 257 unchanged lines hidden (view full) --- 1473static int dw2102_load_firmware(struct usb_device *dev, 1474 const struct firmware *frmwr) 1475{ 1476 u8 *b, *p; 1477 int ret = 0, i; 1478 u8 reset; 1479 u8 reset16[] = {0, 0, 0, 0, 0, 0, 0}; 1480 const struct firmware *fw; | 1234 info("Attached DS3000!\n"); 1235 1236 return 0; 1237} 1238 1239static int dw2102_tuner_attach(struct dvb_usb_adapter *adap) 1240{ 1241 dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x60, --- 257 unchanged lines hidden (view full) --- 1499static int dw2102_load_firmware(struct usb_device *dev, 1500 const struct firmware *frmwr) 1501{ 1502 u8 *b, *p; 1503 int ret = 0, i; 1504 u8 reset; 1505 u8 reset16[] = {0, 0, 0, 0, 0, 0, 0}; 1506 const struct firmware *fw; |
1481 const char *fw_2101 = "dvb-usb-dw2101.fw"; | |
1482 1483 switch (dev->descriptor.idProduct) { 1484 case 0x2101: | 1507 1508 switch (dev->descriptor.idProduct) { 1509 case 0x2101: |
1485 ret = request_firmware(&fw, fw_2101, &dev->dev); | 1510 ret = request_firmware(&fw, DW2101_FIRMWARE, &dev->dev); |
1486 if (ret != 0) { | 1511 if (ret != 0) { |
1487 err(err_str, fw_2101); | 1512 err(err_str, DW2101_FIRMWARE); |
1488 return ret; 1489 } 1490 break; 1491 default: 1492 fw = frmwr; 1493 break; 1494 } 1495 info("start downloading DW210X firmware"); --- 85 unchanged lines hidden (view full) --- 1581 kfree(p); 1582 } 1583 return ret; 1584} 1585 1586static struct dvb_usb_device_properties dw2102_properties = { 1587 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1588 .usb_ctrl = DEVICE_SPECIFIC, | 1513 return ret; 1514 } 1515 break; 1516 default: 1517 fw = frmwr; 1518 break; 1519 } 1520 info("start downloading DW210X firmware"); --- 85 unchanged lines hidden (view full) --- 1606 kfree(p); 1607 } 1608 return ret; 1609} 1610 1611static struct dvb_usb_device_properties dw2102_properties = { 1612 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1613 .usb_ctrl = DEVICE_SPECIFIC, |
1589 .firmware = "dvb-usb-dw2102.fw", | 1614 .firmware = DW2102_FIRMWARE, |
1590 .no_reconnect = 1, 1591 1592 .i2c_algo = &dw2102_serit_i2c_algo, 1593 1594 .rc.legacy = { 1595 .rc_map_table = rc_map_dw210x_table, 1596 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1597 .rc_interval = 150, --- 38 unchanged lines hidden (view full) --- 1636 {NULL}, 1637 }, 1638 } 1639}; 1640 1641static struct dvb_usb_device_properties dw2104_properties = { 1642 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1643 .usb_ctrl = DEVICE_SPECIFIC, | 1615 .no_reconnect = 1, 1616 1617 .i2c_algo = &dw2102_serit_i2c_algo, 1618 1619 .rc.legacy = { 1620 .rc_map_table = rc_map_dw210x_table, 1621 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1622 .rc_interval = 150, --- 38 unchanged lines hidden (view full) --- 1661 {NULL}, 1662 }, 1663 } 1664}; 1665 1666static struct dvb_usb_device_properties dw2104_properties = { 1667 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1668 .usb_ctrl = DEVICE_SPECIFIC, |
1644 .firmware = "dvb-usb-dw2104.fw", | 1669 .firmware = DW2104_FIRMWARE, |
1645 .no_reconnect = 1, 1646 1647 .i2c_algo = &dw2104_i2c_algo, 1648 .rc.legacy = { 1649 .rc_map_table = rc_map_dw210x_table, 1650 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1651 .rc_interval = 150, 1652 .rc_query = dw2102_rc_query, --- 33 unchanged lines hidden (view full) --- 1686 {NULL}, 1687 }, 1688 } 1689}; 1690 1691static struct dvb_usb_device_properties dw3101_properties = { 1692 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1693 .usb_ctrl = DEVICE_SPECIFIC, | 1670 .no_reconnect = 1, 1671 1672 .i2c_algo = &dw2104_i2c_algo, 1673 .rc.legacy = { 1674 .rc_map_table = rc_map_dw210x_table, 1675 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1676 .rc_interval = 150, 1677 .rc_query = dw2102_rc_query, --- 33 unchanged lines hidden (view full) --- 1711 {NULL}, 1712 }, 1713 } 1714}; 1715 1716static struct dvb_usb_device_properties dw3101_properties = { 1717 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1718 .usb_ctrl = DEVICE_SPECIFIC, |
1694 .firmware = "dvb-usb-dw3101.fw", | 1719 .firmware = DW3101_FIRMWARE, |
1695 .no_reconnect = 1, 1696 1697 .i2c_algo = &dw3101_i2c_algo, 1698 .rc.legacy = { 1699 .rc_map_table = rc_map_dw210x_table, 1700 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1701 .rc_interval = 150, 1702 .rc_query = dw2102_rc_query, --- 31 unchanged lines hidden (view full) --- 1734 }, 1735 } 1736}; 1737 1738static struct dvb_usb_device_properties s6x0_properties = { 1739 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1740 .usb_ctrl = DEVICE_SPECIFIC, 1741 .size_of_priv = sizeof(struct s6x0_state), | 1720 .no_reconnect = 1, 1721 1722 .i2c_algo = &dw3101_i2c_algo, 1723 .rc.legacy = { 1724 .rc_map_table = rc_map_dw210x_table, 1725 .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), 1726 .rc_interval = 150, 1727 .rc_query = dw2102_rc_query, --- 31 unchanged lines hidden (view full) --- 1759 }, 1760 } 1761}; 1762 1763static struct dvb_usb_device_properties s6x0_properties = { 1764 .caps = DVB_USB_IS_AN_I2C_ADAPTER, 1765 .usb_ctrl = DEVICE_SPECIFIC, 1766 .size_of_priv = sizeof(struct s6x0_state), |
1742 .firmware = "dvb-usb-s630.fw", | 1767 .firmware = S630_FIRMWARE, |
1743 .no_reconnect = 1, 1744 1745 .i2c_algo = &s6x0_i2c_algo, 1746 .rc.legacy = { 1747 .rc_map_table = rc_map_tevii_table, 1748 .rc_map_size = ARRAY_SIZE(rc_map_tevii_table), 1749 .rc_interval = 150, 1750 .rc_query = dw2102_rc_query, --- 123 unchanged lines hidden (view full) --- 1874 const struct usb_device_id *id) 1875{ 1876 p1100 = kmemdup(&s6x0_properties, 1877 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1878 if (!p1100) 1879 return -ENOMEM; 1880 /* copy default structure */ 1881 /* fill only different fields */ | 1768 .no_reconnect = 1, 1769 1770 .i2c_algo = &s6x0_i2c_algo, 1771 .rc.legacy = { 1772 .rc_map_table = rc_map_tevii_table, 1773 .rc_map_size = ARRAY_SIZE(rc_map_tevii_table), 1774 .rc_interval = 150, 1775 .rc_query = dw2102_rc_query, --- 123 unchanged lines hidden (view full) --- 1899 const struct usb_device_id *id) 1900{ 1901 p1100 = kmemdup(&s6x0_properties, 1902 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1903 if (!p1100) 1904 return -ENOMEM; 1905 /* copy default structure */ 1906 /* fill only different fields */ |
1882 p1100->firmware = "dvb-usb-p1100.fw"; | 1907 p1100->firmware = P1100_FIRMWARE; |
1883 p1100->devices[0] = d1100; 1884 p1100->rc.legacy.rc_map_table = rc_map_tbs_table; 1885 p1100->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table); 1886 p1100->adapter->fe[0].frontend_attach = stv0288_frontend_attach; 1887 1888 s660 = kmemdup(&s6x0_properties, 1889 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1890 if (!s660) { 1891 kfree(p1100); 1892 return -ENOMEM; 1893 } | 1908 p1100->devices[0] = d1100; 1909 p1100->rc.legacy.rc_map_table = rc_map_tbs_table; 1910 p1100->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table); 1911 p1100->adapter->fe[0].frontend_attach = stv0288_frontend_attach; 1912 1913 s660 = kmemdup(&s6x0_properties, 1914 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1915 if (!s660) { 1916 kfree(p1100); 1917 return -ENOMEM; 1918 } |
1894 s660->firmware = "dvb-usb-s660.fw"; | 1919 s660->firmware = S660_FIRMWARE; |
1895 s660->num_device_descs = 3; 1896 s660->devices[0] = d660; 1897 s660->devices[1] = d480_1; 1898 s660->devices[2] = d480_2; 1899 s660->adapter->fe[0].frontend_attach = ds3000_frontend_attach; 1900 1901 p7500 = kmemdup(&s6x0_properties, 1902 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1903 if (!p7500) { 1904 kfree(p1100); 1905 kfree(s660); 1906 return -ENOMEM; 1907 } | 1920 s660->num_device_descs = 3; 1921 s660->devices[0] = d660; 1922 s660->devices[1] = d480_1; 1923 s660->devices[2] = d480_2; 1924 s660->adapter->fe[0].frontend_attach = ds3000_frontend_attach; 1925 1926 p7500 = kmemdup(&s6x0_properties, 1927 sizeof(struct dvb_usb_device_properties), GFP_KERNEL); 1928 if (!p7500) { 1929 kfree(p1100); 1930 kfree(s660); 1931 return -ENOMEM; 1932 } |
1908 p7500->firmware = "dvb-usb-p7500.fw"; | 1933 p7500->firmware = P7500_FIRMWARE; |
1909 p7500->devices[0] = d7500; 1910 p7500->rc.legacy.rc_map_table = rc_map_tbs_table; 1911 p7500->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table); 1912 p7500->adapter->fe[0].frontend_attach = prof_7500_frontend_attach; 1913 1914 if (0 == dvb_usb_device_init(intf, &dw2102_properties, 1915 THIS_MODULE, NULL, adapter_nr) || 1916 0 == dvb_usb_device_init(intf, &dw2104_properties, --- 27 unchanged lines hidden (view full) --- 1944MODULE_AUTHOR("Igor M. Liplianin (c) liplianin@me.by"); 1945MODULE_DESCRIPTION("Driver for DVBWorld DVB-S 2101, 2102, DVB-S2 2104," 1946 " DVB-C 3101 USB2.0," 1947 " TeVii S600, S630, S650, S660, S480," 1948 " Prof 1100, 7500 USB2.0," 1949 " Geniatech SU3000 devices"); 1950MODULE_VERSION("0.1"); 1951MODULE_LICENSE("GPL"); | 1934 p7500->devices[0] = d7500; 1935 p7500->rc.legacy.rc_map_table = rc_map_tbs_table; 1936 p7500->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table); 1937 p7500->adapter->fe[0].frontend_attach = prof_7500_frontend_attach; 1938 1939 if (0 == dvb_usb_device_init(intf, &dw2102_properties, 1940 THIS_MODULE, NULL, adapter_nr) || 1941 0 == dvb_usb_device_init(intf, &dw2104_properties, --- 27 unchanged lines hidden (view full) --- 1969MODULE_AUTHOR("Igor M. Liplianin (c) liplianin@me.by"); 1970MODULE_DESCRIPTION("Driver for DVBWorld DVB-S 2101, 2102, DVB-S2 2104," 1971 " DVB-C 3101 USB2.0," 1972 " TeVii S600, S630, S650, S660, S480," 1973 " Prof 1100, 7500 USB2.0," 1974 " Geniatech SU3000 devices"); 1975MODULE_VERSION("0.1"); 1976MODULE_LICENSE("GPL"); |
1977MODULE_FIRMWARE(DW2101_FIRMWARE); 1978MODULE_FIRMWARE(DW2102_FIRMWARE); 1979MODULE_FIRMWARE(DW2104_FIRMWARE); 1980MODULE_FIRMWARE(DW3101_FIRMWARE); 1981MODULE_FIRMWARE(S630_FIRMWARE); 1982MODULE_FIRMWARE(S660_FIRMWARE); 1983MODULE_FIRMWARE(P1100_FIRMWARE); 1984MODULE_FIRMWARE(P7500_FIRMWARE); |
|