V4L/DVB (11340): af9015: add support for AverMedia AVerTV Volar Black HD (A850)
authorAntti Palosaari <crope@iki.fi>
Tue, 31 Mar 2009 20:01:02 +0000 (17:01 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 7 Apr 2009 00:43:55 +0000 (21:43 -0300)
Add USB ID (07ca:850a) and configuration hack for AverMedia AVerTV Volar
Black HD (A850) DVB-T USB stick.

Tested-by: Olivier MENUEL <omenuel@laposte.net>
Tested-by: Thomas Renard <threnard@gmail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/af9015.c
drivers/media/dvb/dvb-usb/dvb-usb-ids.h

index 14967464e812e19a05c971dd003a0ac239529b39..2d9d45d290033e14c5045d52f61be548365055f1 100644 (file)
@@ -991,6 +991,21 @@ error:
        if (ret)
                err("eeprom read failed:%d", ret);
 
+       /* AverMedia AVerTV Volar Black HD (A850) device have bad EEPROM
+          content :-( Override some wrong values here. */
+       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;
+       }
+
        return ret;
 }
 
@@ -1249,6 +1264,7 @@ static struct usb_device_id af9015_usb_table[] = {
        {USB_DEVICE(USB_VID_KWORLD_2,  USB_PID_KWORLD_395U_2)},
        {USB_DEVICE(USB_VID_KWORLD_2,  USB_PID_KWORLD_395U_3)},
        {USB_DEVICE(USB_VID_AFATECH,   USB_PID_TREKSTOR_DVBT)},
+       {USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A850)},
        {0},
 };
 MODULE_DEVICE_TABLE(usb, af9015_usb_table);
@@ -1413,7 +1429,7 @@ static struct dvb_usb_device_properties af9015_properties[] = {
 
                .i2c_algo = &af9015_i2c_algo,
 
-               .num_device_descs = 8,
+               .num_device_descs = 9,
                .devices = {
                        {
                                .name = "Xtensions XD-380",
@@ -1458,6 +1474,12 @@ static struct dvb_usb_device_properties af9015_properties[] = {
                                .cold_ids = {&af9015_usb_table[19], NULL},
                                .warm_ids = {NULL},
                        },
+                       {
+                               .name = "AverMedia AVerTV Volar Black HD " \
+                                       "(A850)",
+                               .cold_ids = {&af9015_usb_table[20], NULL},
+                               .warm_ids = {NULL},
+                       },
                }
        }
 };
index 4870ed6eb6e95b86d8fc395fa83e38d63ce02893..f506c74119f3bfb48d5714d2f3ad6d36e11d3066 100644 (file)
 #define USB_PID_AVERMEDIA_VOLAR_X_2                    0x8150
 #define USB_PID_AVERMEDIA_A309                         0xa309
 #define USB_PID_AVERMEDIA_A310                         0xa310
+#define USB_PID_AVERMEDIA_A850                         0x850a
 #define USB_PID_TECHNOTREND_CONNECT_S2400               0x3006
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY       0x005a
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2     0x0081