diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dib0700_devices.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 501 |
1 files changed, 496 insertions, 5 deletions
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index d1d6f4491403..0b2812aa30a4 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -4,13 +4,14 @@ | |||
4 | * under the terms of the GNU General Public License as published by the Free | 4 | * under the terms of the GNU General Public License as published by the Free |
5 | * Software Foundation, version 2. | 5 | * Software Foundation, version 2. |
6 | * | 6 | * |
7 | * Copyright (C) 2005-7 DiBcom, SA | 7 | * Copyright (C) 2005-9 DiBcom, SA et al |
8 | */ | 8 | */ |
9 | #include "dib0700.h" | 9 | #include "dib0700.h" |
10 | 10 | ||
11 | #include "dib3000mc.h" | 11 | #include "dib3000mc.h" |
12 | #include "dib7000m.h" | 12 | #include "dib7000m.h" |
13 | #include "dib7000p.h" | 13 | #include "dib7000p.h" |
14 | #include "dib8000.h" | ||
14 | #include "mt2060.h" | 15 | #include "mt2060.h" |
15 | #include "mt2266.h" | 16 | #include "mt2266.h" |
16 | #include "tuner-xc2028.h" | 17 | #include "tuner-xc2028.h" |
@@ -1098,11 +1099,13 @@ static struct dibx000_agc_config dib7070_agc_config = { | |||
1098 | 1099 | ||
1099 | static int dib7070_tuner_reset(struct dvb_frontend *fe, int onoff) | 1100 | static int dib7070_tuner_reset(struct dvb_frontend *fe, int onoff) |
1100 | { | 1101 | { |
1102 | deb_info("reset: %d", onoff); | ||
1101 | return dib7000p_set_gpio(fe, 8, 0, !onoff); | 1103 | return dib7000p_set_gpio(fe, 8, 0, !onoff); |
1102 | } | 1104 | } |
1103 | 1105 | ||
1104 | static int dib7070_tuner_sleep(struct dvb_frontend *fe, int onoff) | 1106 | static int dib7070_tuner_sleep(struct dvb_frontend *fe, int onoff) |
1105 | { | 1107 | { |
1108 | deb_info("sleep: %d", onoff); | ||
1106 | return dib7000p_set_gpio(fe, 9, 0, onoff); | 1109 | return dib7000p_set_gpio(fe, 9, 0, onoff); |
1107 | } | 1110 | } |
1108 | 1111 | ||
@@ -1112,16 +1115,26 @@ static struct dib0070_config dib7070p_dib0070_config[2] = { | |||
1112 | .reset = dib7070_tuner_reset, | 1115 | .reset = dib7070_tuner_reset, |
1113 | .sleep = dib7070_tuner_sleep, | 1116 | .sleep = dib7070_tuner_sleep, |
1114 | .clock_khz = 12000, | 1117 | .clock_khz = 12000, |
1115 | .clock_pad_drive = 4 | 1118 | .clock_pad_drive = 4, |
1119 | .charge_pump = 2, | ||
1116 | }, { | 1120 | }, { |
1117 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, | 1121 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, |
1118 | .reset = dib7070_tuner_reset, | 1122 | .reset = dib7070_tuner_reset, |
1119 | .sleep = dib7070_tuner_sleep, | 1123 | .sleep = dib7070_tuner_sleep, |
1120 | .clock_khz = 12000, | 1124 | .clock_khz = 12000, |
1121 | 1125 | .charge_pump = 2, | |
1122 | } | 1126 | } |
1123 | }; | 1127 | }; |
1124 | 1128 | ||
1129 | static struct dib0070_config dib7770p_dib0070_config = { | ||
1130 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, | ||
1131 | .reset = dib7070_tuner_reset, | ||
1132 | .sleep = dib7070_tuner_sleep, | ||
1133 | .clock_khz = 12000, | ||
1134 | .clock_pad_drive = 0, | ||
1135 | .flip_chip = 1, | ||
1136 | }; | ||
1137 | |||
1125 | static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep) | 1138 | static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep) |
1126 | { | 1139 | { |
1127 | struct dvb_usb_adapter *adap = fe->dvb->priv; | 1140 | struct dvb_usb_adapter *adap = fe->dvb->priv; |
@@ -1139,6 +1152,45 @@ static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_fronte | |||
1139 | return state->set_param_save(fe, fep); | 1152 | return state->set_param_save(fe, fep); |
1140 | } | 1153 | } |
1141 | 1154 | ||
1155 | static int dib7770_set_param_override(struct dvb_frontend *fe, | ||
1156 | struct dvb_frontend_parameters *fep) | ||
1157 | { | ||
1158 | struct dvb_usb_adapter *adap = fe->dvb->priv; | ||
1159 | struct dib0700_adapter_state *state = adap->priv; | ||
1160 | |||
1161 | u16 offset; | ||
1162 | u8 band = BAND_OF_FREQUENCY(fep->frequency/1000); | ||
1163 | switch (band) { | ||
1164 | case BAND_VHF: | ||
1165 | dib7000p_set_gpio(fe, 0, 0, 1); | ||
1166 | offset = 850; | ||
1167 | break; | ||
1168 | case BAND_UHF: | ||
1169 | default: | ||
1170 | dib7000p_set_gpio(fe, 0, 0, 0); | ||
1171 | offset = 250; | ||
1172 | break; | ||
1173 | } | ||
1174 | deb_info("WBD for DiB7000P: %d\n", offset + dib0070_wbd_offset(fe)); | ||
1175 | dib7000p_set_wbd_ref(fe, offset + dib0070_wbd_offset(fe)); | ||
1176 | return state->set_param_save(fe, fep); | ||
1177 | } | ||
1178 | |||
1179 | static int dib7770p_tuner_attach(struct dvb_usb_adapter *adap) | ||
1180 | { | ||
1181 | struct dib0700_adapter_state *st = adap->priv; | ||
1182 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe, | ||
1183 | DIBX000_I2C_INTERFACE_TUNER, 1); | ||
1184 | |||
1185 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | ||
1186 | &dib7770p_dib0070_config) == NULL) | ||
1187 | return -ENODEV; | ||
1188 | |||
1189 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | ||
1190 | adap->fe->ops.tuner_ops.set_params = dib7770_set_param_override; | ||
1191 | return 0; | ||
1192 | } | ||
1193 | |||
1142 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) | 1194 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) |
1143 | { | 1195 | { |
1144 | struct dib0700_adapter_state *st = adap->priv; | 1196 | struct dib0700_adapter_state *st = adap->priv; |
@@ -1217,6 +1269,306 @@ static int stk7070p_frontend_attach(struct dvb_usb_adapter *adap) | |||
1217 | return adap->fe == NULL ? -ENODEV : 0; | 1269 | return adap->fe == NULL ? -ENODEV : 0; |
1218 | } | 1270 | } |
1219 | 1271 | ||
1272 | /* DIB807x generic */ | ||
1273 | static struct dibx000_agc_config dib807x_agc_config[2] = { | ||
1274 | { | ||
1275 | BAND_VHF, | ||
1276 | /* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, | ||
1277 | * P_agc_freq_pwm_div=1, P_agc_inv_pwm1=0, | ||
1278 | * P_agc_inv_pwm2=0,P_agc_inh_dc_rv_est=0, | ||
1279 | * P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=5, | ||
1280 | * P_agc_write=0 */ | ||
1281 | (0 << 15) | (0 << 14) | (7 << 11) | (0 << 10) | (0 << 9) | | ||
1282 | (0 << 8) | (3 << 5) | (0 << 4) | (5 << 1) | | ||
1283 | (0 << 0), /* setup*/ | ||
1284 | |||
1285 | 600, /* inv_gain*/ | ||
1286 | 10, /* time_stabiliz*/ | ||
1287 | |||
1288 | 0, /* alpha_level*/ | ||
1289 | 118, /* thlock*/ | ||
1290 | |||
1291 | 0, /* wbd_inv*/ | ||
1292 | 3530, /* wbd_ref*/ | ||
1293 | 1, /* wbd_sel*/ | ||
1294 | 5, /* wbd_alpha*/ | ||
1295 | |||
1296 | 65535, /* agc1_max*/ | ||
1297 | 0, /* agc1_min*/ | ||
1298 | |||
1299 | 65535, /* agc2_max*/ | ||
1300 | 0, /* agc2_min*/ | ||
1301 | |||
1302 | 0, /* agc1_pt1*/ | ||
1303 | 40, /* agc1_pt2*/ | ||
1304 | 183, /* agc1_pt3*/ | ||
1305 | 206, /* agc1_slope1*/ | ||
1306 | 255, /* agc1_slope2*/ | ||
1307 | 72, /* agc2_pt1*/ | ||
1308 | 152, /* agc2_pt2*/ | ||
1309 | 88, /* agc2_slope1*/ | ||
1310 | 90, /* agc2_slope2*/ | ||
1311 | |||
1312 | 17, /* alpha_mant*/ | ||
1313 | 27, /* alpha_exp*/ | ||
1314 | 23, /* beta_mant*/ | ||
1315 | 51, /* beta_exp*/ | ||
1316 | |||
1317 | 0, /* perform_agc_softsplit*/ | ||
1318 | }, { | ||
1319 | BAND_UHF, | ||
1320 | /* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, | ||
1321 | * P_agc_freq_pwm_div=1, P_agc_inv_pwm1=0, | ||
1322 | * P_agc_inv_pwm2=0, P_agc_inh_dc_rv_est=0, | ||
1323 | * P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=5, | ||
1324 | * P_agc_write=0 */ | ||
1325 | (0 << 15) | (0 << 14) | (1 << 11) | (0 << 10) | (0 << 9) | | ||
1326 | (0 << 8) | (3 << 5) | (0 << 4) | (5 << 1) | | ||
1327 | (0 << 0), /* setup */ | ||
1328 | |||
1329 | 600, /* inv_gain*/ | ||
1330 | 10, /* time_stabiliz*/ | ||
1331 | |||
1332 | 0, /* alpha_level*/ | ||
1333 | 118, /* thlock*/ | ||
1334 | |||
1335 | 0, /* wbd_inv*/ | ||
1336 | 3530, /* wbd_ref*/ | ||
1337 | 1, /* wbd_sel*/ | ||
1338 | 5, /* wbd_alpha*/ | ||
1339 | |||
1340 | 65535, /* agc1_max*/ | ||
1341 | 0, /* agc1_min*/ | ||
1342 | |||
1343 | 65535, /* agc2_max*/ | ||
1344 | 0, /* agc2_min*/ | ||
1345 | |||
1346 | 0, /* agc1_pt1*/ | ||
1347 | 40, /* agc1_pt2*/ | ||
1348 | 183, /* agc1_pt3*/ | ||
1349 | 206, /* agc1_slope1*/ | ||
1350 | 255, /* agc1_slope2*/ | ||
1351 | 72, /* agc2_pt1*/ | ||
1352 | 152, /* agc2_pt2*/ | ||
1353 | 88, /* agc2_slope1*/ | ||
1354 | 90, /* agc2_slope2*/ | ||
1355 | |||
1356 | 17, /* alpha_mant*/ | ||
1357 | 27, /* alpha_exp*/ | ||
1358 | 23, /* beta_mant*/ | ||
1359 | 51, /* beta_exp*/ | ||
1360 | |||
1361 | 0, /* perform_agc_softsplit*/ | ||
1362 | } | ||
1363 | }; | ||
1364 | |||
1365 | static struct dibx000_bandwidth_config dib807x_bw_config_12_mhz = { | ||
1366 | 60000, 15000, /* internal, sampling*/ | ||
1367 | 1, 20, 3, 1, 0, /* pll_cfg: prediv, ratio, range, reset, bypass*/ | ||
1368 | 0, 0, 1, 1, 2, /* misc: refdiv, bypclk_div, IO_CLK_en_core, | ||
1369 | ADClkSrc, modulo */ | ||
1370 | (3 << 14) | (1 << 12) | (599 << 0), /* sad_cfg: refsel, sel, freq_15k*/ | ||
1371 | (0 << 25) | 0, /* ifreq = 0.000000 MHz*/ | ||
1372 | 18179755, /* timf*/ | ||
1373 | 12000000, /* xtal_hz*/ | ||
1374 | }; | ||
1375 | |||
1376 | static struct dib8000_config dib807x_dib8000_config[2] = { | ||
1377 | { | ||
1378 | .output_mpeg2_in_188_bytes = 1, | ||
1379 | |||
1380 | .agc_config_count = 2, | ||
1381 | .agc = dib807x_agc_config, | ||
1382 | .pll = &dib807x_bw_config_12_mhz, | ||
1383 | .tuner_is_baseband = 1, | ||
1384 | |||
1385 | .gpio_dir = DIB8000_GPIO_DEFAULT_DIRECTIONS, | ||
1386 | .gpio_val = DIB8000_GPIO_DEFAULT_VALUES, | ||
1387 | .gpio_pwm_pos = DIB8000_GPIO_DEFAULT_PWM_POS, | ||
1388 | |||
1389 | .hostbus_diversity = 1, | ||
1390 | .div_cfg = 1, | ||
1391 | .agc_control = &dib0070_ctrl_agc_filter, | ||
1392 | .output_mode = OUTMODE_MPEG2_FIFO, | ||
1393 | .drives = 0x2d98, | ||
1394 | }, { | ||
1395 | .output_mpeg2_in_188_bytes = 1, | ||
1396 | |||
1397 | .agc_config_count = 2, | ||
1398 | .agc = dib807x_agc_config, | ||
1399 | .pll = &dib807x_bw_config_12_mhz, | ||
1400 | .tuner_is_baseband = 1, | ||
1401 | |||
1402 | .gpio_dir = DIB8000_GPIO_DEFAULT_DIRECTIONS, | ||
1403 | .gpio_val = DIB8000_GPIO_DEFAULT_VALUES, | ||
1404 | .gpio_pwm_pos = DIB8000_GPIO_DEFAULT_PWM_POS, | ||
1405 | |||
1406 | .hostbus_diversity = 1, | ||
1407 | .agc_control = &dib0070_ctrl_agc_filter, | ||
1408 | .output_mode = OUTMODE_MPEG2_FIFO, | ||
1409 | .drives = 0x2d98, | ||
1410 | } | ||
1411 | }; | ||
1412 | |||
1413 | static int dib807x_tuner_reset(struct dvb_frontend *fe, int onoff) | ||
1414 | { | ||
1415 | return dib8000_set_gpio(fe, 5, 0, !onoff); | ||
1416 | } | ||
1417 | |||
1418 | static int dib807x_tuner_sleep(struct dvb_frontend *fe, int onoff) | ||
1419 | { | ||
1420 | return dib8000_set_gpio(fe, 0, 0, onoff); | ||
1421 | } | ||
1422 | |||
1423 | static const struct dib0070_wbd_gain_cfg dib8070_wbd_gain_cfg[] = { | ||
1424 | { 240, 7}, | ||
1425 | { 0xffff, 6}, | ||
1426 | }; | ||
1427 | |||
1428 | static struct dib0070_config dib807x_dib0070_config[2] = { | ||
1429 | { | ||
1430 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, | ||
1431 | .reset = dib807x_tuner_reset, | ||
1432 | .sleep = dib807x_tuner_sleep, | ||
1433 | .clock_khz = 12000, | ||
1434 | .clock_pad_drive = 4, | ||
1435 | .vga_filter = 1, | ||
1436 | .force_crystal_mode = 1, | ||
1437 | .enable_third_order_filter = 1, | ||
1438 | .charge_pump = 0, | ||
1439 | .wbd_gain = dib8070_wbd_gain_cfg, | ||
1440 | .osc_buffer_state = 0, | ||
1441 | .freq_offset_khz_uhf = -100, | ||
1442 | .freq_offset_khz_vhf = -100, | ||
1443 | }, { | ||
1444 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, | ||
1445 | .reset = dib807x_tuner_reset, | ||
1446 | .sleep = dib807x_tuner_sleep, | ||
1447 | .clock_khz = 12000, | ||
1448 | .clock_pad_drive = 2, | ||
1449 | .vga_filter = 1, | ||
1450 | .force_crystal_mode = 1, | ||
1451 | .enable_third_order_filter = 1, | ||
1452 | .charge_pump = 0, | ||
1453 | .wbd_gain = dib8070_wbd_gain_cfg, | ||
1454 | .osc_buffer_state = 0, | ||
1455 | .freq_offset_khz_uhf = -25, | ||
1456 | .freq_offset_khz_vhf = -25, | ||
1457 | } | ||
1458 | }; | ||
1459 | |||
1460 | static int dib807x_set_param_override(struct dvb_frontend *fe, | ||
1461 | struct dvb_frontend_parameters *fep) | ||
1462 | { | ||
1463 | struct dvb_usb_adapter *adap = fe->dvb->priv; | ||
1464 | struct dib0700_adapter_state *state = adap->priv; | ||
1465 | |||
1466 | u16 offset = dib0070_wbd_offset(fe); | ||
1467 | u8 band = BAND_OF_FREQUENCY(fep->frequency/1000); | ||
1468 | switch (band) { | ||
1469 | case BAND_VHF: | ||
1470 | offset += 750; | ||
1471 | break; | ||
1472 | case BAND_UHF: /* fall-thru wanted */ | ||
1473 | default: | ||
1474 | offset += 250; break; | ||
1475 | } | ||
1476 | deb_info("WBD for DiB8000: %d\n", offset); | ||
1477 | dib8000_set_wbd_ref(fe, offset); | ||
1478 | |||
1479 | return state->set_param_save(fe, fep); | ||
1480 | } | ||
1481 | |||
1482 | static int dib807x_tuner_attach(struct dvb_usb_adapter *adap) | ||
1483 | { | ||
1484 | struct dib0700_adapter_state *st = adap->priv; | ||
1485 | struct i2c_adapter *tun_i2c = dib8000_get_i2c_master(adap->fe, | ||
1486 | DIBX000_I2C_INTERFACE_TUNER, 1); | ||
1487 | |||
1488 | if (adap->id == 0) { | ||
1489 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | ||
1490 | &dib807x_dib0070_config[0]) == NULL) | ||
1491 | return -ENODEV; | ||
1492 | } else { | ||
1493 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | ||
1494 | &dib807x_dib0070_config[1]) == NULL) | ||
1495 | return -ENODEV; | ||
1496 | } | ||
1497 | |||
1498 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | ||
1499 | adap->fe->ops.tuner_ops.set_params = dib807x_set_param_override; | ||
1500 | return 0; | ||
1501 | } | ||
1502 | |||
1503 | |||
1504 | /* STK807x */ | ||
1505 | static int stk807x_frontend_attach(struct dvb_usb_adapter *adap) | ||
1506 | { | ||
1507 | dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1); | ||
1508 | msleep(10); | ||
1509 | dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1); | ||
1510 | dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1); | ||
1511 | dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1); | ||
1512 | |||
1513 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); | ||
1514 | |||
1515 | dib0700_ctrl_clock(adap->dev, 72, 1); | ||
1516 | |||
1517 | msleep(10); | ||
1518 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); | ||
1519 | msleep(10); | ||
1520 | dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1); | ||
1521 | |||
1522 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, | ||
1523 | 0x80); | ||
1524 | |||
1525 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, | ||
1526 | &dib807x_dib8000_config[0]); | ||
1527 | |||
1528 | return adap->fe == NULL ? -ENODEV : 0; | ||
1529 | } | ||
1530 | |||
1531 | /* STK807xPVR */ | ||
1532 | static int stk807xpvr_frontend_attach0(struct dvb_usb_adapter *adap) | ||
1533 | { | ||
1534 | dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0); | ||
1535 | msleep(30); | ||
1536 | dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1); | ||
1537 | msleep(500); | ||
1538 | dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1); | ||
1539 | dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1); | ||
1540 | dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1); | ||
1541 | |||
1542 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); | ||
1543 | |||
1544 | dib0700_ctrl_clock(adap->dev, 72, 1); | ||
1545 | |||
1546 | msleep(10); | ||
1547 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); | ||
1548 | msleep(10); | ||
1549 | dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1); | ||
1550 | |||
1551 | /* initialize IC 0 */ | ||
1552 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x12, 0x80); | ||
1553 | |||
1554 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, | ||
1555 | &dib807x_dib8000_config[0]); | ||
1556 | |||
1557 | return adap->fe == NULL ? -ENODEV : 0; | ||
1558 | } | ||
1559 | |||
1560 | static int stk807xpvr_frontend_attach1(struct dvb_usb_adapter *adap) | ||
1561 | { | ||
1562 | /* initialize IC 1 */ | ||
1563 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x22, 0x82); | ||
1564 | |||
1565 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82, | ||
1566 | &dib807x_dib8000_config[1]); | ||
1567 | |||
1568 | return adap->fe == NULL ? -ENODEV : 0; | ||
1569 | } | ||
1570 | |||
1571 | |||
1220 | /* STK7070PD */ | 1572 | /* STK7070PD */ |
1221 | static struct dib7000p_config stk7070pd_dib7000p_config[2] = { | 1573 | static struct dib7000p_config stk7070pd_dib7000p_config[2] = { |
1222 | { | 1574 | { |
@@ -1500,7 +1852,15 @@ struct usb_device_id dib0700_usb_id_table[] = { | |||
1500 | { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_T3) }, | 1852 | { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_T3) }, |
1501 | { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_T5) }, | 1853 | { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_T5) }, |
1502 | { USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_STK7700D) }, | 1854 | { USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_STK7700D) }, |
1503 | { USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_STK7700D_2) }, | 1855 | /* 55 */{ USB_DEVICE(USB_VID_YUAN, USB_PID_YUAN_STK7700D_2) }, |
1856 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73A) }, | ||
1857 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, | ||
1858 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, | ||
1859 | { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK7770P) }, | ||
1860 | /* 60 */{ USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_XXS_2) }, | ||
1861 | { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XPVR) }, | ||
1862 | { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XP) }, | ||
1863 | { USB_DEVICE(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD) }, | ||
1504 | { 0 } /* Terminating entry */ | 1864 | { 0 } /* Terminating entry */ |
1505 | }; | 1865 | }; |
1506 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); | 1866 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); |
@@ -1565,7 +1925,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1565 | { NULL }, | 1925 | { NULL }, |
1566 | }, | 1926 | }, |
1567 | { "Leadtek Winfast DTV Dongle (STK7700P based)", | 1927 | { "Leadtek Winfast DTV Dongle (STK7700P based)", |
1568 | { &dib0700_usb_id_table[8], &dib0700_usb_id_table[34] }, | 1928 | { &dib0700_usb_id_table[8] }, |
1569 | { NULL }, | 1929 | { NULL }, |
1570 | }, | 1930 | }, |
1571 | { "AVerMedia AVerTV DVB-T Express", | 1931 | { "AVerMedia AVerTV DVB-T Express", |
@@ -1764,6 +2124,41 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1764 | 2124 | ||
1765 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2125 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
1766 | 2126 | ||
2127 | .num_adapters = 1, | ||
2128 | .adapter = { | ||
2129 | { | ||
2130 | .frontend_attach = stk7070p_frontend_attach, | ||
2131 | .tuner_attach = dib7070p_tuner_attach, | ||
2132 | |||
2133 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2134 | |||
2135 | .size_of_priv = sizeof(struct dib0700_adapter_state), | ||
2136 | }, | ||
2137 | }, | ||
2138 | |||
2139 | .num_device_descs = 3, | ||
2140 | .devices = { | ||
2141 | { "Pinnacle PCTV 73A", | ||
2142 | { &dib0700_usb_id_table[56], NULL }, | ||
2143 | { NULL }, | ||
2144 | }, | ||
2145 | { "Pinnacle PCTV 73e SE", | ||
2146 | { &dib0700_usb_id_table[57], NULL }, | ||
2147 | { NULL }, | ||
2148 | }, | ||
2149 | { "Pinnacle PCTV 282e", | ||
2150 | { &dib0700_usb_id_table[58], NULL }, | ||
2151 | { NULL }, | ||
2152 | }, | ||
2153 | }, | ||
2154 | |||
2155 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2156 | .rc_key_map = dib0700_rc_keys, | ||
2157 | .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), | ||
2158 | .rc_query = dib0700_rc_query | ||
2159 | |||
2160 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2161 | |||
1767 | .num_adapters = 2, | 2162 | .num_adapters = 2, |
1768 | .adapter = { | 2163 | .adapter = { |
1769 | { | 2164 | { |
@@ -1927,6 +2322,102 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1927 | { NULL }, | 2322 | { NULL }, |
1928 | }, | 2323 | }, |
1929 | }, | 2324 | }, |
2325 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2326 | |||
2327 | .num_adapters = 1, | ||
2328 | .adapter = { | ||
2329 | { | ||
2330 | .frontend_attach = stk7070p_frontend_attach, | ||
2331 | .tuner_attach = dib7770p_tuner_attach, | ||
2332 | |||
2333 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2334 | |||
2335 | .size_of_priv = | ||
2336 | sizeof(struct dib0700_adapter_state), | ||
2337 | }, | ||
2338 | }, | ||
2339 | |||
2340 | .num_device_descs = 2, | ||
2341 | .devices = { | ||
2342 | { "DiBcom STK7770P reference design", | ||
2343 | { &dib0700_usb_id_table[59], NULL }, | ||
2344 | { NULL }, | ||
2345 | }, | ||
2346 | { "Terratec Cinergy T USB XXS (HD)", | ||
2347 | { &dib0700_usb_id_table[34], &dib0700_usb_id_table[60] }, | ||
2348 | { NULL }, | ||
2349 | }, | ||
2350 | }, | ||
2351 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2352 | .rc_key_map = dib0700_rc_keys, | ||
2353 | .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), | ||
2354 | .rc_query = dib0700_rc_query | ||
2355 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2356 | .num_adapters = 1, | ||
2357 | .adapter = { | ||
2358 | { | ||
2359 | .frontend_attach = stk807x_frontend_attach, | ||
2360 | .tuner_attach = dib807x_tuner_attach, | ||
2361 | |||
2362 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2363 | |||
2364 | .size_of_priv = | ||
2365 | sizeof(struct dib0700_adapter_state), | ||
2366 | }, | ||
2367 | }, | ||
2368 | |||
2369 | .num_device_descs = 2, | ||
2370 | .devices = { | ||
2371 | { "DiBcom STK807xP reference design", | ||
2372 | { &dib0700_usb_id_table[62], NULL }, | ||
2373 | { NULL }, | ||
2374 | }, | ||
2375 | { "Prolink Pixelview SBTVD", | ||
2376 | { &dib0700_usb_id_table[63], NULL }, | ||
2377 | { NULL }, | ||
2378 | }, | ||
2379 | }, | ||
2380 | |||
2381 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2382 | .rc_key_map = dib0700_rc_keys, | ||
2383 | .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), | ||
2384 | .rc_query = dib0700_rc_query | ||
2385 | |||
2386 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2387 | .num_adapters = 2, | ||
2388 | .adapter = { | ||
2389 | { | ||
2390 | .frontend_attach = stk807xpvr_frontend_attach0, | ||
2391 | .tuner_attach = dib807x_tuner_attach, | ||
2392 | |||
2393 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2394 | |||
2395 | .size_of_priv = | ||
2396 | sizeof(struct dib0700_adapter_state), | ||
2397 | }, | ||
2398 | { | ||
2399 | .frontend_attach = stk807xpvr_frontend_attach1, | ||
2400 | .tuner_attach = dib807x_tuner_attach, | ||
2401 | |||
2402 | DIB0700_DEFAULT_STREAMING_CONFIG(0x03), | ||
2403 | |||
2404 | .size_of_priv = | ||
2405 | sizeof(struct dib0700_adapter_state), | ||
2406 | }, | ||
2407 | }, | ||
2408 | |||
2409 | .num_device_descs = 1, | ||
2410 | .devices = { | ||
2411 | { "DiBcom STK807xPVR reference design", | ||
2412 | { &dib0700_usb_id_table[61], NULL }, | ||
2413 | { NULL }, | ||
2414 | }, | ||
2415 | }, | ||
2416 | |||
2417 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2418 | .rc_key_map = dib0700_rc_keys, | ||
2419 | .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), | ||
2420 | .rc_query = dib0700_rc_query | ||
1930 | }, | 2421 | }, |
1931 | }; | 2422 | }; |
1932 | 2423 | ||