diff options
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 91 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 4 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 2 |
3 files changed, 97 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index 8b66b642a76b..62c7ad050f9b 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1643,6 +1643,78 @@ static const struct cx88_board cx88_boards[] = { | |||
1643 | .gpio3 = 0x0000, | 1643 | .gpio3 = 0x0000, |
1644 | }, | 1644 | }, |
1645 | }, | 1645 | }, |
1646 | [CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36] = { | ||
1647 | .name = "Leadtek TV2000 XP Global (SC4100)", | ||
1648 | .tuner_type = TUNER_XC4000, | ||
1649 | .tuner_addr = 0x61, | ||
1650 | .radio_type = UNSET, | ||
1651 | .radio_addr = ADDR_UNSET, | ||
1652 | .input = { { | ||
1653 | .type = CX88_VMUX_TELEVISION, | ||
1654 | .vmux = 0, | ||
1655 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1656 | .gpio1 = 0x0000, | ||
1657 | .gpio2 = 0x0C04, /* pin 18 = 1, pin 19 = 0 */ | ||
1658 | .gpio3 = 0x0000, | ||
1659 | }, { | ||
1660 | .type = CX88_VMUX_COMPOSITE1, | ||
1661 | .vmux = 1, | ||
1662 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1663 | .gpio1 = 0x0000, | ||
1664 | .gpio2 = 0x0C0C, /* pin 18 = 1, pin 19 = 1 */ | ||
1665 | .gpio3 = 0x0000, | ||
1666 | }, { | ||
1667 | .type = CX88_VMUX_SVIDEO, | ||
1668 | .vmux = 2, | ||
1669 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1670 | .gpio1 = 0x0000, | ||
1671 | .gpio2 = 0x0C0C, /* pin 18 = 1, pin 19 = 1 */ | ||
1672 | .gpio3 = 0x0000, | ||
1673 | } }, | ||
1674 | .radio = { | ||
1675 | .type = CX88_RADIO, | ||
1676 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1677 | .gpio1 = 0x0000, | ||
1678 | .gpio2 = 0x0C00, /* pin 18 = 0, pin 19 = 0 */ | ||
1679 | .gpio3 = 0x0000, | ||
1680 | }, | ||
1681 | }, | ||
1682 | [CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43] = { | ||
1683 | .name = "Leadtek TV2000 XP Global (XC4100)", | ||
1684 | .tuner_type = TUNER_XC4000, | ||
1685 | .tuner_addr = 0x61, | ||
1686 | .radio_type = UNSET, | ||
1687 | .radio_addr = ADDR_UNSET, | ||
1688 | .input = { { | ||
1689 | .type = CX88_VMUX_TELEVISION, | ||
1690 | .vmux = 0, | ||
1691 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1692 | .gpio1 = 0x6040, /* pin 14 = 1, pin 13 = 0 */ | ||
1693 | .gpio2 = 0x0000, | ||
1694 | .gpio3 = 0x0000, | ||
1695 | }, { | ||
1696 | .type = CX88_VMUX_COMPOSITE1, | ||
1697 | .vmux = 1, | ||
1698 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1699 | .gpio1 = 0x6060, /* pin 14 = 1, pin 13 = 1 */ | ||
1700 | .gpio2 = 0x0000, | ||
1701 | .gpio3 = 0x0000, | ||
1702 | }, { | ||
1703 | .type = CX88_VMUX_SVIDEO, | ||
1704 | .vmux = 2, | ||
1705 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1706 | .gpio1 = 0x6060, /* pin 14 = 1, pin 13 = 1 */ | ||
1707 | .gpio2 = 0x0000, | ||
1708 | .gpio3 = 0x0000, | ||
1709 | } }, | ||
1710 | .radio = { | ||
1711 | .type = CX88_RADIO, | ||
1712 | .gpio0 = 0x0400, /* pin 2 = 0 */ | ||
1713 | .gpio1 = 0x6000, /* pin 14 = 1, pin 13 = 0 */ | ||
1714 | .gpio2 = 0x0000, | ||
1715 | .gpio3 = 0x0000, | ||
1716 | }, | ||
1717 | }, | ||
1646 | [CX88_BOARD_POWERCOLOR_REAL_ANGEL] = { | 1718 | [CX88_BOARD_POWERCOLOR_REAL_ANGEL] = { |
1647 | .name = "PowerColor RA330", /* Long names may confuse LIRC. */ | 1719 | .name = "PowerColor RA330", /* Long names may confuse LIRC. */ |
1648 | .tuner_type = TUNER_XC2028, | 1720 | .tuner_type = TUNER_XC2028, |
@@ -2719,6 +2791,21 @@ static const struct cx88_subid cx88_subids[] = { | |||
2719 | .subdevice = 0x6618, | 2791 | .subdevice = 0x6618, |
2720 | .card = CX88_BOARD_WINFAST_TV2000_XP_GLOBAL, | 2792 | .card = CX88_BOARD_WINFAST_TV2000_XP_GLOBAL, |
2721 | }, { | 2793 | }, { |
2794 | /* TV2000 XP Global [107d:6618] */ | ||
2795 | .subvendor = 0x107d, | ||
2796 | .subdevice = 0x6619, | ||
2797 | .card = CX88_BOARD_WINFAST_TV2000_XP_GLOBAL, | ||
2798 | }, { | ||
2799 | /* WinFast TV2000 XP Global with XC4000 tuner */ | ||
2800 | .subvendor = 0x107d, | ||
2801 | .subdevice = 0x6f36, | ||
2802 | .card = CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36, | ||
2803 | }, { | ||
2804 | /* WinFast TV2000 XP Global with XC4000 tuner and different GPIOs */ | ||
2805 | .subvendor = 0x107d, | ||
2806 | .subdevice = 0x6f43, | ||
2807 | .card = CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43, | ||
2808 | }, { | ||
2722 | .subvendor = 0xb034, | 2809 | .subvendor = 0xb034, |
2723 | .subdevice = 0x3034, | 2810 | .subdevice = 0x3034, |
2724 | .card = CX88_BOARD_PROF_7301, | 2811 | .card = CX88_BOARD_PROF_7301, |
@@ -3075,6 +3162,8 @@ static int cx88_xc4000_tuner_callback(struct cx88_core *core, | |||
3075 | switch (core->boardnr) { | 3162 | switch (core->boardnr) { |
3076 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: | 3163 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: |
3077 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: | 3164 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: |
3165 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36: | ||
3166 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43: | ||
3078 | return cx88_xc4000_winfast2000h_plus_callback(core, | 3167 | return cx88_xc4000_winfast2000h_plus_callback(core, |
3079 | command, arg); | 3168 | command, arg); |
3080 | } | 3169 | } |
@@ -3251,6 +3340,8 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core) | |||
3251 | 3340 | ||
3252 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: | 3341 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: |
3253 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: | 3342 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: |
3343 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36: | ||
3344 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43: | ||
3254 | cx88_xc4000_winfast2000h_plus_callback(core, | 3345 | cx88_xc4000_winfast2000h_plus_callback(core, |
3255 | XC4000_TUNER_RESET, 0); | 3346 | XC4000_TUNER_RESET, 0); |
3256 | break; | 3347 | break; |
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index e614201b5ed3..ebf448c48ca3 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -103,6 +103,8 @@ static void cx88_ir_handle_key(struct cx88_IR *ir) | |||
103 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: | 103 | case CX88_BOARD_WINFAST_DTV1800H_XC4000: |
104 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: | 104 | case CX88_BOARD_WINFAST_DTV2000H_PLUS: |
105 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: | 105 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: |
106 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36: | ||
107 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43: | ||
106 | gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900); | 108 | gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900); |
107 | auxgpio = gpio; | 109 | auxgpio = gpio; |
108 | break; | 110 | break; |
@@ -302,6 +304,8 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
302 | case CX88_BOARD_WINFAST2000XP_EXPERT: | 304 | case CX88_BOARD_WINFAST2000XP_EXPERT: |
303 | case CX88_BOARD_WINFAST_DTV1000: | 305 | case CX88_BOARD_WINFAST_DTV1000: |
304 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: | 306 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: |
307 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36: | ||
308 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43: | ||
305 | ir_codes = RC_MAP_WINFAST; | 309 | ir_codes = RC_MAP_WINFAST; |
306 | ir->gpio_addr = MO_GP0_IO; | 310 | ir->gpio_addr = MO_GP0_IO; |
307 | ir->mask_keycode = 0x8f8; | 311 | ir->mask_keycode = 0x8f8; |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index fa8d307e1a3d..c9659def2a78 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -244,6 +244,8 @@ extern const struct sram_channel const cx88_sram_channels[]; | |||
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 | #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88 |
247 | #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89 | ||
248 | #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90 | ||
247 | 249 | ||
248 | enum cx88_itype { | 250 | enum cx88_itype { |
249 | CX88_VMUX_COMPOSITE1 = 1, | 251 | CX88_VMUX_COMPOSITE1 = 1, |