diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/af9015.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9015.c | 94 |
1 files changed, 88 insertions, 6 deletions
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index 53bfc8e42fb9..4cb31e7c13c2 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c | |||
@@ -40,7 +40,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | |||
40 | static DEFINE_MUTEX(af9015_usb_mutex); | 40 | static DEFINE_MUTEX(af9015_usb_mutex); |
41 | 41 | ||
42 | static struct af9015_config af9015_config; | 42 | static struct af9015_config af9015_config; |
43 | static struct dvb_usb_device_properties af9015_properties[2]; | 43 | static struct dvb_usb_device_properties af9015_properties[3]; |
44 | static int af9015_properties_count = ARRAY_SIZE(af9015_properties); | 44 | static int af9015_properties_count = ARRAY_SIZE(af9015_properties); |
45 | 45 | ||
46 | static struct af9013_config af9015_af9013_config[] = { | 46 | static struct af9013_config af9015_af9013_config[] = { |
@@ -538,7 +538,7 @@ exit: | |||
538 | /* dump eeprom */ | 538 | /* dump eeprom */ |
539 | static int af9015_eeprom_dump(struct dvb_usb_device *d) | 539 | static int af9015_eeprom_dump(struct dvb_usb_device *d) |
540 | { | 540 | { |
541 | char buf[52], buf2[4]; | 541 | char buf[4+3*16+1], buf2[4]; |
542 | u8 reg, val; | 542 | u8 reg, val; |
543 | 543 | ||
544 | for (reg = 0; ; reg++) { | 544 | for (reg = 0; ; reg++) { |
@@ -1261,7 +1261,11 @@ static struct usb_device_id af9015_usb_table[] = { | |||
1261 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_2)}, | 1261 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_2)}, |
1262 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_3)}, | 1262 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_3)}, |
1263 | {USB_DEVICE(USB_VID_AFATECH, USB_PID_TREKSTOR_DVBT)}, | 1263 | {USB_DEVICE(USB_VID_AFATECH, USB_PID_TREKSTOR_DVBT)}, |
1264 | {USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A850)}, | 1264 | /* 20 */{USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A850)}, |
1265 | {USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A805)}, | ||
1266 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_CONCEPTRONIC_CTVDIGRCU)}, | ||
1267 | {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_MC810)}, | ||
1268 | {USB_DEVICE(USB_VID_KYE, USB_PID_GENIUS_TVGO_DVB_T03)}, | ||
1265 | {0}, | 1269 | {0}, |
1266 | }; | 1270 | }; |
1267 | MODULE_DEVICE_TABLE(usb, af9015_usb_table); | 1271 | MODULE_DEVICE_TABLE(usb, af9015_usb_table); |
@@ -1321,7 +1325,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { | |||
1321 | 1325 | ||
1322 | .i2c_algo = &af9015_i2c_algo, | 1326 | .i2c_algo = &af9015_i2c_algo, |
1323 | 1327 | ||
1324 | .num_device_descs = 9, | 1328 | .num_device_descs = 9, /* max 9 */ |
1325 | .devices = { | 1329 | .devices = { |
1326 | { | 1330 | { |
1327 | .name = "Afatech AF9015 DVB-T USB2.0 stick", | 1331 | .name = "Afatech AF9015 DVB-T USB2.0 stick", |
@@ -1426,7 +1430,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { | |||
1426 | 1430 | ||
1427 | .i2c_algo = &af9015_i2c_algo, | 1431 | .i2c_algo = &af9015_i2c_algo, |
1428 | 1432 | ||
1429 | .num_device_descs = 9, | 1433 | .num_device_descs = 9, /* max 9 */ |
1430 | .devices = { | 1434 | .devices = { |
1431 | { | 1435 | { |
1432 | .name = "Xtensions XD-380", | 1436 | .name = "Xtensions XD-380", |
@@ -1478,7 +1482,85 @@ static struct dvb_usb_device_properties af9015_properties[] = { | |||
1478 | .warm_ids = {NULL}, | 1482 | .warm_ids = {NULL}, |
1479 | }, | 1483 | }, |
1480 | } | 1484 | } |
1481 | } | 1485 | }, { |
1486 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, | ||
1487 | |||
1488 | .usb_ctrl = DEVICE_SPECIFIC, | ||
1489 | .download_firmware = af9015_download_firmware, | ||
1490 | .firmware = "dvb-usb-af9015.fw", | ||
1491 | .no_reconnect = 1, | ||
1492 | |||
1493 | .size_of_priv = sizeof(struct af9015_state), \ | ||
1494 | |||
1495 | .num_adapters = 2, | ||
1496 | .adapter = { | ||
1497 | { | ||
1498 | .caps = DVB_USB_ADAP_HAS_PID_FILTER | | ||
1499 | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, | ||
1500 | |||
1501 | .pid_filter_count = 32, | ||
1502 | .pid_filter = af9015_pid_filter, | ||
1503 | .pid_filter_ctrl = af9015_pid_filter_ctrl, | ||
1504 | |||
1505 | .frontend_attach = | ||
1506 | af9015_af9013_frontend_attach, | ||
1507 | .tuner_attach = af9015_tuner_attach, | ||
1508 | .stream = { | ||
1509 | .type = USB_BULK, | ||
1510 | .count = 6, | ||
1511 | .endpoint = 0x84, | ||
1512 | }, | ||
1513 | }, | ||
1514 | { | ||
1515 | .frontend_attach = | ||
1516 | af9015_af9013_frontend_attach, | ||
1517 | .tuner_attach = af9015_tuner_attach, | ||
1518 | .stream = { | ||
1519 | .type = USB_BULK, | ||
1520 | .count = 6, | ||
1521 | .endpoint = 0x85, | ||
1522 | .u = { | ||
1523 | .bulk = { | ||
1524 | .buffersize = | ||
1525 | TS_USB20_MAX_PACKET_SIZE, | ||
1526 | } | ||
1527 | } | ||
1528 | }, | ||
1529 | } | ||
1530 | }, | ||
1531 | |||
1532 | .identify_state = af9015_identify_state, | ||
1533 | |||
1534 | .rc_query = af9015_rc_query, | ||
1535 | .rc_interval = 150, | ||
1536 | |||
1537 | .i2c_algo = &af9015_i2c_algo, | ||
1538 | |||
1539 | .num_device_descs = 4, /* max 9 */ | ||
1540 | .devices = { | ||
1541 | { | ||
1542 | .name = "AverMedia AVerTV Volar GPS 805 (A805)", | ||
1543 | .cold_ids = {&af9015_usb_table[21], NULL}, | ||
1544 | .warm_ids = {NULL}, | ||
1545 | }, | ||
1546 | { | ||
1547 | .name = "Conceptronic USB2.0 DVB-T CTVDIGRCU " \ | ||
1548 | "V3.0", | ||
1549 | .cold_ids = {&af9015_usb_table[22], NULL}, | ||
1550 | .warm_ids = {NULL}, | ||
1551 | }, | ||
1552 | { | ||
1553 | .name = "KWorld Digial MC-810", | ||
1554 | .cold_ids = {&af9015_usb_table[23], NULL}, | ||
1555 | .warm_ids = {NULL}, | ||
1556 | }, | ||
1557 | { | ||
1558 | .name = "Genius TVGo DVB-T03", | ||
1559 | .cold_ids = {&af9015_usb_table[24], NULL}, | ||
1560 | .warm_ids = {NULL}, | ||
1561 | }, | ||
1562 | } | ||
1563 | }, | ||
1482 | }; | 1564 | }; |
1483 | 1565 | ||
1484 | static int af9015_usb_probe(struct usb_interface *intf, | 1566 | static int af9015_usb_probe(struct usb_interface *intf, |