diff options
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 45 |
1 files changed, 17 insertions, 28 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index f2268631b7c0..951709aa88ba 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -567,6 +567,7 @@ struct cx88_board cx88_boards[] = { | |||
567 | .radio_type = UNSET, | 567 | .radio_type = UNSET, |
568 | .tuner_addr = ADDR_UNSET, | 568 | .tuner_addr = ADDR_UNSET, |
569 | .radio_addr = ADDR_UNSET, | 569 | .radio_addr = ADDR_UNSET, |
570 | .tda9887_conf = TDA9887_PRESENT, | ||
570 | .input = {{ | 571 | .input = {{ |
571 | .type = CX88_VMUX_TELEVISION, | 572 | .type = CX88_VMUX_TELEVISION, |
572 | .vmux = 0, | 573 | .vmux = 0, |
@@ -711,6 +712,7 @@ struct cx88_board cx88_boards[] = { | |||
711 | .radio_type = UNSET, | 712 | .radio_type = UNSET, |
712 | .tuner_addr = ADDR_UNSET, | 713 | .tuner_addr = ADDR_UNSET, |
713 | .radio_addr = ADDR_UNSET, | 714 | .radio_addr = ADDR_UNSET, |
715 | .tda9887_conf = TDA9887_PRESENT, | ||
714 | .input = {{ | 716 | .input = {{ |
715 | .type = CX88_VMUX_TELEVISION, | 717 | .type = CX88_VMUX_TELEVISION, |
716 | .vmux = 0, | 718 | .vmux = 0, |
@@ -1083,41 +1085,28 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data) | |||
1083 | tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); | 1085 | tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); |
1084 | core->tuner_type = tv.tuner_type; | 1086 | core->tuner_type = tv.tuner_type; |
1085 | core->has_radio = tv.has_radio; | 1087 | core->has_radio = tv.has_radio; |
1086 | } | ||
1087 | |||
1088 | static int hauppauge_eeprom_dvb(struct cx88_core *core, u8 *ee) | ||
1089 | { | ||
1090 | int model; | ||
1091 | int tuner; | ||
1092 | 1088 | ||
1093 | /* Make sure we support the board model */ | 1089 | /* Make sure we support the board model */ |
1094 | model = ee[0x1f] << 24 | ee[0x1e] << 16 | ee[0x1d] << 8 | ee[0x1c]; | 1090 | switch (tv.model) |
1095 | switch(model) { | 1091 | { |
1096 | case 90002: | 1092 | case 90002: /* Nova-T-PCI (9002) */ |
1097 | case 90500: | 1093 | case 92001: /* Nova-S-Plus (Video and IR) */ |
1098 | case 90501: | 1094 | case 92002: /* Nova-S-Plus (Video and IR) */ |
1095 | case 90003: /* Nova-T-PCI (9002 No RF out) */ | ||
1096 | case 90500: /* Nova-T-PCI (oem) */ | ||
1097 | case 90501: /* Nova-T-PCI (oem/IR) */ | ||
1098 | case 92000: /* Nova-SE2 (OEM, No Video or IR) */ | ||
1099 | |||
1099 | /* known */ | 1100 | /* known */ |
1100 | break; | 1101 | break; |
1101 | default: | 1102 | default: |
1102 | printk("%s: warning: unknown hauppauge model #%d\n", | 1103 | printk("%s: warning: unknown hauppauge model #%d\n", |
1103 | core->name, model); | 1104 | core->name, tv.model); |
1104 | break; | 1105 | break; |
1105 | } | 1106 | } |
1106 | 1107 | ||
1107 | /* Make sure we support the tuner */ | 1108 | printk(KERN_INFO "%s: hauppauge eeprom: model=%d\n", |
1108 | tuner = ee[0x2d]; | 1109 | core->name, tv.model); |
1109 | switch(tuner) { | ||
1110 | case 0x4B: /* dtt 7595 */ | ||
1111 | case 0x4C: /* dtt 7592 */ | ||
1112 | break; | ||
1113 | default: | ||
1114 | printk("%s: error: unknown hauppauge tuner 0x%02x\n", | ||
1115 | core->name, tuner); | ||
1116 | return -ENODEV; | ||
1117 | } | ||
1118 | printk(KERN_INFO "%s: hauppauge eeprom: model=%d, tuner=%d\n", | ||
1119 | core->name, model, tuner); | ||
1120 | return 0; | ||
1121 | } | 1110 | } |
1122 | 1111 | ||
1123 | /* ----------------------------------------------------------------------- */ | 1112 | /* ----------------------------------------------------------------------- */ |
@@ -1201,7 +1190,7 @@ void cx88_card_list(struct cx88_core *core, struct pci_dev *pci) | |||
1201 | 1190 | ||
1202 | void cx88_card_setup(struct cx88_core *core) | 1191 | void cx88_card_setup(struct cx88_core *core) |
1203 | { | 1192 | { |
1204 | static u8 eeprom[128]; | 1193 | static u8 eeprom[256]; |
1205 | 1194 | ||
1206 | if (0 == core->i2c_rc) { | 1195 | if (0 == core->i2c_rc) { |
1207 | core->i2c_client.addr = 0xa0 >> 1; | 1196 | core->i2c_client.addr = 0xa0 >> 1; |
@@ -1224,7 +1213,7 @@ void cx88_card_setup(struct cx88_core *core) | |||
1224 | break; | 1213 | break; |
1225 | case CX88_BOARD_HAUPPAUGE_DVB_T1: | 1214 | case CX88_BOARD_HAUPPAUGE_DVB_T1: |
1226 | if (0 == core->i2c_rc) | 1215 | if (0 == core->i2c_rc) |
1227 | hauppauge_eeprom_dvb(core,eeprom); | 1216 | hauppauge_eeprom(core,eeprom); |
1228 | break; | 1217 | break; |
1229 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: | 1218 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: |
1230 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: | 1219 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: |