Skip to contentSkip to conversation

af9015 : more robust eeprom parsing

PATCH In review matthieu castet 2 participants 2 messages Mar 21, 2010 – May 13, 2010 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 af9015 : more robust eeprom parsing

the af9015 eeprom parsing accept 0x38 as 2nd demodulator. But this is impossible because the first one is already hardcoded to 0x38.
This remove a special case for AverMedia AVerTV Volar Black HD.

Also in af9015_copy_firmware don't hardcode the 2nd demodulator address to 0x3a.

drivers/media/dvb/dvb-usb/af9015.c +7 -7
index d797538..f93767e 100644
@@ -493,7 +493,7 @@ static int af9015_copy_firmware(struct dvb_usb_device *d)
 	/* wait 2nd demodulator ready */
 	msleep(100);
 
-	ret = af9015_read_reg_i2c(d, 0x3a, 0x98be, &val);
+	ret = af9015_read_reg_i2c(d, af9015_af9013_config[1].demod_address, 0x98be, &val);
 	if (ret)
 		goto error;
 	else
@@ -913,8 +913,13 @@ static int af9015_read_config(struct usb_device *udev)
 		ret = af9015_rw_udev(udev, &req);
 		if (ret)
 			goto error;
-		af9015_af9013_config[1].demod_address = val;
+		if (val != AF9015_I2C_DEMOD)
+			af9015_af9013_config[1].demod_address = val;
+		else 
+			af9015_config.dual_mode = 0;
+	}
 
+	if (af9015_config.dual_mode) {
 		/* enable 2nd adapter */
 		for (i = 0; i < af9015_properties_count; i++)
 			af9015_properties[i].num_adapters = 2;
@@ -1023,11 +1028,6 @@ error:
 	if (le16_to_cpu(udev->descriptor.idVendor) == USB_VID_AVERMEDIA &&
 	    le16_to_cpu(udev->descriptor.idProduct) == USB_PID_AVERMEDIA_A850) {
 		deb_info("%s: AverMedia A850: overriding config\n", __func__);
-		/* disable dual mode */
-		af9015_config.dual_mode = 0;
-		 /* disable 2nd adapter */
-		for (i = 0; i < af9015_properties_count; i++)
-			af9015_properties[i].num_adapters = 1;
 
 		/* set correct IF */
 		af9015_af9013_config[0].tuner_if = 4570;
#1 lore raw

Terve!
And sorry I have been "out of the office" for few months... Now I am back and I think I have again time for this project...

Quoted 4 lines · matthieu castet

the af9015 eeprom parsing accept 0x38 as 2nd demodulator. But this is impossible because the
first one is already hardcoded to 0x38.
This remove a special case for AverMedia AVerTV Volar Black HD.

I don't like this. It adds one more rather unnecessary if(). Of course we can validity check many kind of values from eeprom but I think it is not rather wise. Just trust eeprom and if there is device which does have garbage content in eeprom then add special case for that broken device. Currently AverMedia AVerTV Volar Black HD (A850) is only device I know which does have bad eeprom content.

Quoted 2 lines

Also in af9015_copy_firmware don't hardcode the 2nd demodulator address to 0x3a.

This one looks good.

Quoted 3 lines

regards
Antti

Signature · 1 line
http://palosaari.fi/