aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoristvan_v@mailbox.hu <istvan_v@mailbox.hu>2011-06-07 12:16:56 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-07-27 16:53:05 -0400
commit8eb79c0b9ba602123279bcc0cd65458a0dfcecfc (patch)
tree78eef2e45a84121b8be632f72c6ef2b38c1c0549
parentf271a3affae3529c3cb6dc66f3bf0a8aeaebf5d5 (diff)
[media] cx88: added support for Leadtek WinFast DTV1800 H with XC4000 tuner
This patch implements support for the Leadtek WinFast DTV1800 H card with XC4000 tuner (107d:6f38). Signed-off-by: Istvan Varga <istvan_v@mailbox.hu> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/cx88/cx88-cards.c48
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c1
-rw-r--r--drivers/media/video/cx88/cx88-input.c2
-rw-r--r--drivers/media/video/cx88/cx88.h1
4 files changed, 52 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index ca21da12b208..e2a736ef2a7d 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -2120,6 +2120,47 @@ static const struct cx88_board cx88_boards[] = {
2120 }, 2120 },
2121 .mpeg = CX88_MPEG_DVB, 2121 .mpeg = CX88_MPEG_DVB,
2122 }, 2122 },
2123 [CX88_BOARD_WINFAST_DTV1800H_XC4000] = {
2124 .name = "Leadtek WinFast DTV1800 H (XC4000)",
2125 .tuner_type = TUNER_XC4000,
2126 .radio_type = TUNER_XC4000,
2127 .tuner_addr = 0x61,
2128 .radio_addr = 0x61,
2129 /*
2130 * GPIO setting
2131 *
2132 * 2: mute (0=off,1=on)
2133 * 12: tuner reset pin
2134 * 13: audio source (0=tuner audio,1=line in)
2135 * 14: FM (0=on,1=off ???)
2136 */
2137 .input = {{
2138 .type = CX88_VMUX_TELEVISION,
2139 .vmux = 0,
2140 .gpio0 = 0x0400, /* pin 2 = 0 */
2141 .gpio1 = 0x6040, /* pin 13 = 0, pin 14 = 1 */
2142 .gpio2 = 0x0000,
2143 }, {
2144 .type = CX88_VMUX_COMPOSITE1,
2145 .vmux = 1,
2146 .gpio0 = 0x0400, /* pin 2 = 0 */
2147 .gpio1 = 0x6060, /* pin 13 = 1, pin 14 = 1 */
2148 .gpio2 = 0x0000,
2149 }, {
2150 .type = CX88_VMUX_SVIDEO,
2151 .vmux = 2,
2152 .gpio0 = 0x0400, /* pin 2 = 0 */
2153 .gpio1 = 0x6060, /* pin 13 = 1, pin 14 = 1 */
2154 .gpio2 = 0x0000,
2155 }},
2156 .radio = {
2157 .type = CX88_RADIO,
2158 .gpio0 = 0x0400, /* pin 2 = 0 */
2159 .gpio1 = 0x6000, /* pin 13 = 0, pin 14 = 0 */
2160 .gpio2 = 0x0000,
2161 },
2162 .mpeg = CX88_MPEG_DVB,
2163 },
2123 [CX88_BOARD_WINFAST_DTV2000H_PLUS] = { 2164 [CX88_BOARD_WINFAST_DTV2000H_PLUS] = {
2124 .name = "Leadtek WinFast DTV2000 H PLUS", 2165 .name = "Leadtek WinFast DTV2000 H PLUS",
2125 .tuner_type = TUNER_XC4000, 2166 .tuner_type = TUNER_XC4000,
@@ -2634,6 +2675,11 @@ static const struct cx88_subid cx88_subids[] = {
2634 .subdevice = 0x6654, 2675 .subdevice = 0x6654,
2635 .card = CX88_BOARD_WINFAST_DTV1800H, 2676 .card = CX88_BOARD_WINFAST_DTV1800H,
2636 }, { 2677 }, {
2678 /* WinFast DTV1800 H with XC4000 tuner */
2679 .subvendor = 0x107d,
2680 .subdevice = 0x6f38,
2681 .card = CX88_BOARD_WINFAST_DTV1800H_XC4000,
2682 }, {
2637 .subvendor = 0x107d, 2683 .subvendor = 0x107d,
2638 .subdevice = 0x6f42, 2684 .subdevice = 0x6f42,
2639 .card = CX88_BOARD_WINFAST_DTV2000H_PLUS, 2685 .card = CX88_BOARD_WINFAST_DTV2000H_PLUS,
@@ -3027,6 +3073,7 @@ static int cx88_xc4000_tuner_callback(struct cx88_core *core,
3027{ 3073{
3028 /* Board-specific callbacks */ 3074 /* Board-specific callbacks */
3029 switch (core->boardnr) { 3075 switch (core->boardnr) {
3076 case CX88_BOARD_WINFAST_DTV1800H_XC4000:
3030 case CX88_BOARD_WINFAST_DTV2000H_PLUS: 3077 case CX88_BOARD_WINFAST_DTV2000H_PLUS:
3031 return cx88_xc4000_winfast2000h_plus_callback(core, 3078 return cx88_xc4000_winfast2000h_plus_callback(core,
3032 command, arg); 3079 command, arg);
@@ -3207,6 +3254,7 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
3207 mdelay(50); 3254 mdelay(50);
3208 break; 3255 break;
3209 3256
3257 case CX88_BOARD_WINFAST_DTV1800H_XC4000:
3210 case CX88_BOARD_WINFAST_DTV2000H_PLUS: 3258 case CX88_BOARD_WINFAST_DTV2000H_PLUS:
3211 cx88_xc4000_winfast2000h_plus_callback(core, 3259 cx88_xc4000_winfast2000h_plus_callback(core,
3212 XC4000_TUNER_RESET, 0); 3260 XC4000_TUNER_RESET, 0);
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index c4e20942dcc6..1ed72ce2413c 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -1328,6 +1328,7 @@ static int dvb_register(struct cx8802_dev *dev)
1328 goto frontend_detach; 1328 goto frontend_detach;
1329 } 1329 }
1330 break; 1330 break;
1331 case CX88_BOARD_WINFAST_DTV1800H_XC4000:
1331 case CX88_BOARD_WINFAST_DTV2000H_PLUS: 1332 case CX88_BOARD_WINFAST_DTV2000H_PLUS:
1332 fe0->dvb.frontend = dvb_attach(zl10353_attach, 1333 fe0->dvb.frontend = dvb_attach(zl10353_attach,
1333 &cx88_pinnacle_hybrid_pctv, 1334 &cx88_pinnacle_hybrid_pctv,
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index 662438fe9ac1..e614201b5ed3 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -100,6 +100,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
100 break; 100 break;
101 case CX88_BOARD_WINFAST_DTV1000: 101 case CX88_BOARD_WINFAST_DTV1000:
102 case CX88_BOARD_WINFAST_DTV1800H: 102 case CX88_BOARD_WINFAST_DTV1800H:
103 case CX88_BOARD_WINFAST_DTV1800H_XC4000:
103 case CX88_BOARD_WINFAST_DTV2000H_PLUS: 104 case CX88_BOARD_WINFAST_DTV2000H_PLUS:
104 case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: 105 case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL:
105 gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900); 106 gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900);
@@ -290,6 +291,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
290 case CX88_BOARD_WINFAST_DTV2000H: 291 case CX88_BOARD_WINFAST_DTV2000H:
291 case CX88_BOARD_WINFAST_DTV2000H_J: 292 case CX88_BOARD_WINFAST_DTV2000H_J:
292 case CX88_BOARD_WINFAST_DTV1800H: 293 case CX88_BOARD_WINFAST_DTV1800H:
294 case CX88_BOARD_WINFAST_DTV1800H_XC4000:
293 case CX88_BOARD_WINFAST_DTV2000H_PLUS: 295 case CX88_BOARD_WINFAST_DTV2000H_PLUS:
294 ir_codes = RC_MAP_WINFAST; 296 ir_codes = RC_MAP_WINFAST;
295 ir->gpio_addr = MO_GP0_IO; 297 ir->gpio_addr = MO_GP0_IO;
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 31c2356ea96d..5719063d2881 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -243,6 +243,7 @@ extern const struct sram_channel const cx88_sram_channels[];
243#define CX88_BOARD_TWINHAN_VP1027_DVBS 85 243#define CX88_BOARD_TWINHAN_VP1027_DVBS 85
244#define CX88_BOARD_TEVII_S464 86 244#define CX88_BOARD_TEVII_S464 86
245#define CX88_BOARD_WINFAST_DTV2000H_PLUS 87 245#define CX88_BOARD_WINFAST_DTV2000H_PLUS 87
246#define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
246 247
247enum cx88_itype { 248enum cx88_itype {
248 CX88_VMUX_COMPOSITE1 = 1, 249 CX88_VMUX_COMPOSITE1 = 1,