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.c45
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
1088static 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
1202void cx88_card_setup(struct cx88_core *core) 1191void 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: