[media] NetUP Dual DVB-T/C CI RF: load firmware according card revision
authorAbylay Ospan <aospan@netup.ru>
Thu, 14 Jul 2011 08:20:29 +0000 (05:20 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 27 Jul 2011 20:56:07 +0000 (17:56 -0300)
Currently available two hardware revision:
0x1 firmware filename: dvb-netup-altera-01.fw
0x4 firmware filename: dvb-netup-altera-04.fw

Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx23885/cx23885-cards.c

index bbdd2b5..9fa4db2 100644 (file)
@@ -29,6 +29,7 @@
 #include "../../../staging/altera-stapl/altera.h"
 #include "cx23885.h"
 #include "tuner-xc2028.h"
+#include "netup-eeprom.h"
 #include "netup-init.h"
 #include "altera-ci.h"
 #include "xc4000.h"
@@ -1430,6 +1431,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
                const struct firmware *fw;
                const char *filename = "dvb-netup-altera-01.fw";
                char *action = "configure";
+               static struct netup_card_info cinfo;
                struct altera_config netup_config = {
                        .dev = dev,
                        .action = action,
@@ -1438,6 +1440,18 @@ void cx23885_card_setup(struct cx23885_dev *dev)
 
                netup_initialize(dev);
 
+               netup_get_card_info(&dev->i2c_bus[0].i2c_adap, &cinfo);
+               switch (cinfo.rev) {
+               case 0x4:
+                       filename = "dvb-netup-altera-04.fw";
+                       break;
+               default:
+                       filename = "dvb-netup-altera-01.fw";
+                       break;
+               }
+               printk(KERN_INFO "NetUP card rev=0x%x fw_filename=%s\n",
+                               cinfo.rev, filename);
+
                ret = request_firmware(&fw, filename, &dev->pci->dev);
                if (ret != 0)
                        printk(KERN_ERR "did not find the firmware file. (%s) "