V4L/DVB: media: dvb/af9015, add hashes support
authorJiri Slaby <jslaby@suse.cz>
Fri, 22 Jan 2010 15:10:55 +0000 (12:10 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:52 +0000 (15:10 -0300)
So as a final patch, add support for hash and one hash entry
for MSI digi vox mini II:
iManufacturer 1 Afatech
iProduct      2 DVB-T 2
iSerial       3 010101010600001

It is now handled with proper IR and key map tables.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/af9015.c

index 03ba2fdee83434c5eed2e07ea4e1375657a80a35..47ab2e92c6aff2f7e2d7104cf141425c5b23553a 100644 (file)
@@ -788,6 +788,13 @@ static const struct af9015_setup af9015_setup_usbids[] = {
        { }
 };
 
+static const struct af9015_setup af9015_setup_hashes[] = {
+       { 0xb8feb708,
+               af9015_rc_keys_msi, ARRAY_SIZE(af9015_rc_keys_msi),
+               af9015_ir_table_msi, ARRAY_SIZE(af9015_ir_table_msi) },
+       { }
+};
+
 static void af9015_set_remote_config(struct usb_device *udev,
                struct dvb_usb_device_properties *props)
 {
@@ -800,7 +807,10 @@ static void af9015_set_remote_config(struct usb_device *udev,
        } else {
                u16 vendor = le16_to_cpu(udev->descriptor.idVendor);
 
-               if (vendor == USB_VID_AFATECH) {
+               table = af9015_setup_match(af9015_config.eeprom_sum,
+                               af9015_setup_hashes);
+
+               if (!table && vendor == USB_VID_AFATECH) {
                        /* Check USB manufacturer and product strings and try
                           to determine correct remote in case of chip vendor
                           reference IDs are used.
@@ -831,7 +841,7 @@ static void af9015_set_remote_config(struct usb_device *udev,
                                        ARRAY_SIZE(af9015_ir_table_trekstor)
                                };
                        }
-               } else
+               } else if (!table)
                        table = af9015_setup_match(vendor, af9015_setup_usbids);
        }