diff options
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/ngene/ngene-core.c | 47 |
1 files changed, 16 insertions, 31 deletions
diff --git a/drivers/media/dvb/ngene/ngene-core.c b/drivers/media/dvb/ngene/ngene-core.c index c0ef11c77f59..1fb16353708b 100644 --- a/drivers/media/dvb/ngene/ngene-core.c +++ b/drivers/media/dvb/ngene/ngene-core.c @@ -48,17 +48,6 @@ #include "ngene-ioctls.h" #endif -/* #define FW_INC 1 */ -#ifdef FW_INC -#include "ngene_fw_15.h" -#include "ngene_fw_16.h" -#include "ngene_fw_17.h" - -static int load_firmware; -module_param(load_firmware, int, 0444); -MODULE_PARM_DESC(load_firmware, "Try to load firmware from file."); -#endif - static int copy_eeprom; module_param(copy_eeprom, int, 0444); MODULE_PARM_DESC(copy_eeprom, "Copy eeprom."); @@ -2238,43 +2227,39 @@ static int ngene_load_firm(struct ngene *dev) default: case 15: version = 15; + size = 23466; fw_name = "ngene_15.fw"; break; case 16: + size = 23498; fw_name = "ngene_16.fw"; break; case 17: + size = 24446; fw_name = "ngene_17.fw"; break; } -#ifdef FW_INC - if (load_firmware && - request_firmware(&fw, fw_name, &dev->pci_dev->dev) >= 0) { - printk(KERN_INFO DEVICE_NAME - ": Loading firmware file %s.\n", fw_name); - size = fw->size; - ngene_fw = fw->data; - } else - printk(KERN_INFO DEVICE_NAME - ": Loading built-in firmware version %d.\n", version); - err = ngene_command_load_firmware(dev, ngene_fw, size); - if (fw) - release_firmware(fw); -#else if (request_firmware(&fw, fw_name, &dev->pci_dev->dev) < 0) { printk(KERN_ERR DEVICE_NAME - ": Could not load firmware file %s. \n", fw_name); + ": Could not load firmware file %s.\n", fw_name); printk(KERN_INFO DEVICE_NAME ": Copy %s to your hotplug directory!\n", fw_name); return -1; } - printk(KERN_INFO DEVICE_NAME ": Loading firmware file %s.\n", fw_name); - size = fw->size; - ngene_fw = (u8 *) fw->data; - err = ngene_command_load_firmware(dev, ngene_fw, size); + if (size != fw->size) { + printk(KERN_ERR DEVICE_NAME + ": Firmware %s has invalid size!", fw_name); + err = -1; + } else { + printk(KERN_INFO DEVICE_NAME + ": Loading firmware file %s.\n", fw_name); + ngene_fw = (u8 *) fw->data; + err = ngene_command_load_firmware(dev, ngene_fw, size); + } + release_firmware(fw); -#endif + return err; } |