aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r--drivers/media/video/cx88/cx88-cards.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index d484e5ce579c..3ba31572c657 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1375,6 +1375,32 @@ static const struct cx88_board cx88_boards[] = {
1375 .gpio0 = 0x07fa, 1375 .gpio0 = 0x07fa,
1376 }}, 1376 }},
1377 }, 1377 },
1378 [CX88_BOARD_PINNACLE_PCTV_HD_800i] = {
1379 .name = "Pinnacle PCTV HD 800i",
1380 .tuner_type = TUNER_XC5000,
1381 .radio_type = UNSET,
1382 .tuner_addr = ADDR_UNSET,
1383 .radio_addr = ADDR_UNSET,
1384 .input = {{
1385 .type = CX88_VMUX_TELEVISION,
1386 .vmux = 0,
1387 .gpio0 = 0x04fb,
1388 .gpio1 = 0x10ff,
1389 },{
1390 .type = CX88_VMUX_COMPOSITE1,
1391 .vmux = 1,
1392 .gpio0 = 0x04fb,
1393 .gpio1 = 0x10ef,
1394 .audioroute = 1,
1395 },{
1396 .type = CX88_VMUX_SVIDEO,
1397 .vmux = 2,
1398 .gpio0 = 0x04fb,
1399 .gpio1 = 0x10ef,
1400 .audioroute = 1,
1401 }},
1402 .mpeg = CX88_MPEG_DVB,
1403 },
1378}; 1404};
1379 1405
1380/* ------------------------------------------------------------------ */ 1406/* ------------------------------------------------------------------ */
@@ -1684,6 +1710,10 @@ static const struct cx88_subid cx88_subids[] = {
1684 .subvendor = 0x1421, 1710 .subvendor = 0x1421,
1685 .subdevice = 0x0390, 1711 .subdevice = 0x0390,
1686 .card = CX88_BOARD_ADSTECH_PTV_390, 1712 .card = CX88_BOARD_ADSTECH_PTV_390,
1713 },{
1714 .subvendor = 0x11bd,
1715 .subdevice = 0x0051,
1716 .card = CX88_BOARD_PINNACLE_PCTV_HD_800i,
1687 }, 1717 },
1688}; 1718};
1689 1719
@@ -1851,6 +1881,39 @@ static void dvico_fusionhdtv_hybrid_init(struct cx88_core *core)
1851} 1881}
1852 1882
1853/* ----------------------------------------------------------------------- */ 1883/* ----------------------------------------------------------------------- */
1884/* Tuner callback function. Currently only needed for the Pinnacle *
1885 * PCTV HD 800i with an xc5000 sillicon tuner. This is used for both *
1886 * analog tuner attach (tuner-core.c) and dvb tuner attach (cx88-dvb.c) */
1887
1888int cx88_tuner_callback(void *i2c_algo, int command, int arg)
1889{
1890 struct i2c_algo_bit_data *algo = i2c_algo;
1891 struct cx88_core *core = algo->data;
1892
1893 switch(core->boardnr) {
1894 case CX88_BOARD_PINNACLE_PCTV_HD_800i:
1895 if(command == 0) { /* This is the reset command from xc5000 */
1896 /* Reset XC5000 tuner via GPIO pin #2 */
1897 cx_set(MO_GP0_IO, 0x00000400);
1898 cx_clear(MO_GP0_IO, 0x00000004);
1899 mdelay(200);
1900 cx_set(MO_GP0_IO, 0x00000004);
1901 printk(KERN_ERR "xc5000: in reset for xc5000\n");
1902 mdelay(200);
1903 return 0;
1904 }
1905 else {
1906 printk(KERN_ERR
1907 "xc5000: unknown tuner callback command.\n");
1908 return -EINVAL;
1909 }
1910 break;
1911 }
1912 return 0; /* Should never be here */
1913}
1914EXPORT_SYMBOL(cx88_tuner_callback);
1915
1916/* ----------------------------------------------------------------------- */
1854 1917
1855static void cx88_card_list(struct cx88_core *core, struct pci_dev *pci) 1918static void cx88_card_list(struct cx88_core *core, struct pci_dev *pci)
1856{ 1919{