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.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 888d25d48416..388440789dfb 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -823,6 +823,35 @@ struct cx88_board cx88_boards[] = {
823 .gpio3 = 0x00100000, 823 .gpio3 = 0x00100000,
824 }}, 824 }},
825 }, 825 },
826 [CX88_BOARD_ATI_HDTVWONDER] = {
827 .name = "ATI HDTV Wonder",
828 .tuner_type = TUNER_PHILIPS_TUV1236D,
829 .radio_type = UNSET,
830 .tuner_addr = ADDR_UNSET,
831 .radio_addr = ADDR_UNSET,
832 .input = {{
833 .type = CX88_VMUX_TELEVISION,
834 .vmux = 0,
835 .gpio0 = 0x00000ff7,
836 .gpio1 = 0x000000ff,
837 .gpio2 = 0x00000001,
838 .gpio3 = 0x00000000,
839 },{
840 .type = CX88_VMUX_COMPOSITE1,
841 .vmux = 1,
842 .gpio0 = 0x00000ffe,
843 .gpio1 = 0x000000ff,
844 .gpio2 = 0x00000001,
845 .gpio3 = 0x00000000,
846 },{
847 .type = CX88_VMUX_SVIDEO,
848 .vmux = 2,
849 .gpio0 = 0x00000ffe,
850 .gpio1 = 0x000000ff,
851 .gpio2 = 0x00000001,
852 .gpio3 = 0x00000000,
853 }},
854 },
826}; 855};
827const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); 856const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
828 857
@@ -958,6 +987,10 @@ struct cx88_subid cx88_subids[] = {
958 .subvendor = 0x1461, 987 .subvendor = 0x1461,
959 .subdevice = 0x8011, 988 .subdevice = 0x8011,
960 .card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550, 989 .card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550,
990 },{
991 .subvendor = PCI_VENDOR_ID_ATI,
992 .subdevice = 0xa101,
993 .card = CX88_BOARD_ATI_HDTVWONDER,
961 }, 994 },
962}; 995};
963const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); 996const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1159,6 +1192,22 @@ void cx88_card_setup(struct cx88_core *core)
1159 cx_clear(MO_GP0_IO, 0x00000007); 1192 cx_clear(MO_GP0_IO, 0x00000007);
1160 cx_set(MO_GP2_IO, 0x00000101); 1193 cx_set(MO_GP2_IO, 0x00000101);
1161 break; 1194 break;
1195 case CX88_BOARD_ATI_HDTVWONDER:
1196 if (0 == core->i2c_rc) {
1197 /* enable tuner */
1198 int i;
1199 u8 buffer[12];
1200 core->i2c_client.addr = 0x0a;
1201 buffer[0] = 0x10; buffer[1] = 0x12; buffer[2] = 0x13; buffer[3] = 0x04;
1202 buffer[4] = 0x16; buffer[5] = 0x00; buffer[6] = 0x14; buffer[7] = 0x04;
1203 buffer[8] = 0x14; buffer[9] = 0x00; buffer[10] = 0x17; buffer[11] = 0x00;
1204
1205 for (i = 0; i < 6; i++)
1206 if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2))
1207 printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n",
1208 core->name, i);
1209 }
1210 break;
1162 } 1211 }
1163 if (cx88_boards[core->board].radio.type == CX88_RADIO) 1212 if (cx88_boards[core->board].radio.type == CX88_RADIO)
1164 core->has_radio = 1; 1213 core->has_radio = 1;