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.c38
1 files changed, 10 insertions, 28 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 746ccaf40cfa..cf2d2c3a33a6 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1083,44 +1083,26 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
1083 tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data); 1083 tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data);
1084 core->tuner_type = tv.tuner_type; 1084 core->tuner_type = tv.tuner_type;
1085 core->has_radio = tv.has_radio; 1085 core->has_radio = tv.has_radio;
1086}
1087
1088/* fixme: This is bogus code... add new pnp code to parse or see tveeprom.ko */
1089static int hauppauge_eeprom_dvb(struct cx88_core *core, u8 *ee)
1090{
1091 int model;
1092 int tuner;
1093 1086
1094 /* Make sure we support the board model */ 1087 /* Make sure we support the board model */
1095 model = ee[0x1f] << 24 | ee[0x1e] << 16 | ee[0x1d] << 8 | ee[0x1c]; 1088 switch (tv.model)
1096 switch(model) { 1089 {
1097 case 90002: /* Nova-T-PCI (9002) */ 1090 case 90002: /* Nova-T-PCI (9002) */
1098 case 90500: /* Nova-T-PCI (oem) */ 1091 case 90500: /* Nova-T-PCI (oem) */
1099 case 90501: /* Nova-T-PCI (oem/IR) */ 1092 case 90501: /* Nova-T-PCI (oem/IR) */
1100 case 92000: /* Nova-S-Plus */ 1093 case 92000: /* Nova-SE2 (OEM, No Video or IR) */
1101 case 92002: /* Nova-SE2 */ 1094 case 92001: /* Nova-S-Plus (Video and IR) */
1095 case 92002: /* Nova-S-Plus (Video and IR) */
1102 /* known */ 1096 /* known */
1103 break; 1097 break;
1104 default: 1098 default:
1105 printk("%s: warning: unknown hauppauge model #%d\n", 1099 printk("%s: warning: unknown hauppauge model #%d\n",
1106 core->name, model); 1100 core->name, tv.model);
1107 break; 1101 break;
1108 } 1102 }
1109 1103
1110 /* Make sure we support the tuner */ 1104 printk(KERN_INFO "%s: hauppauge eeprom: model=%d\n",
1111 tuner = ee[0x2d]; 1105 core->name, tv.model);
1112 switch(tuner) {
1113 case 0x4B: /* dtt 7595 */
1114 case 0x4C: /* dtt 7592 */
1115 break;
1116 default:
1117 printk("%s: error: unknown hauppauge tuner 0x%02x\n",
1118 core->name, tuner);
1119 return -ENODEV;
1120 }
1121 printk(KERN_INFO "%s: hauppauge eeprom: model=%d, tuner=%d\n",
1122 core->name, model, tuner);
1123 return 0;
1124} 1106}
1125 1107
1126/* ----------------------------------------------------------------------- */ 1108/* ----------------------------------------------------------------------- */
@@ -1204,7 +1186,7 @@ void cx88_card_list(struct cx88_core *core, struct pci_dev *pci)
1204 1186
1205void cx88_card_setup(struct cx88_core *core) 1187void cx88_card_setup(struct cx88_core *core)
1206{ 1188{
1207 static u8 eeprom[128]; 1189 static u8 eeprom[256];
1208 1190
1209 if (0 == core->i2c_rc) { 1191 if (0 == core->i2c_rc) {
1210 core->i2c_client.addr = 0xa0 >> 1; 1192 core->i2c_client.addr = 0xa0 >> 1;
@@ -1227,7 +1209,7 @@ void cx88_card_setup(struct cx88_core *core)
1227 break; 1209 break;
1228 case CX88_BOARD_HAUPPAUGE_DVB_T1: 1210 case CX88_BOARD_HAUPPAUGE_DVB_T1:
1229 if (0 == core->i2c_rc) 1211 if (0 == core->i2c_rc)
1230 hauppauge_eeprom_dvb(core,eeprom); 1212 hauppauge_eeprom(core,eeprom);
1231 break; 1213 break;
1232 case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: 1214 case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1:
1233 case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: 1215 case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: