qlcnic: Add support for 84xx adapters to load firmware from file
authorPratik Pujar <pratik.pujar@qlogic.com>
Fri, 16 Aug 2013 23:07:16 +0000 (19:07 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Aug 2013 07:32:02 +0000 (00:32 -0700)
o Use appropriate firmware image file name based on device IDs.

Signed-off-by: Pratik Pujar <pratik.pujar@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c

index b89b07486961a0ec482f5dbfcaf0ddc8a21194e8..d4c58c6a97d84ba0d341d0e5758f4bdcfd116fdc 100644 (file)
 /* Firmware image definitions */
 #define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000
 #define QLC_83XX_FW_FILE_NAME          "83xx_fw.bin"
+#define QLC_84XX_FW_FILE_NAME          "84xx_fw.bin"
 #define QLC_83XX_BOOT_FROM_FLASH       0
 #define QLC_83XX_BOOT_FROM_FILE                0x12345678
 
+#define QLC_FW_FILE_NAME_LEN           20
 #define QLC_83XX_MAX_RESET_SEQ_ENTRIES 16
 
 #define QLC_83XX_MBX_POST_BC_OP                0x1
index c97e2e07b2796c73390f1d4422e66aee63dd844c..f23e66780e7ab5f44d23ba67b8a59a644d7c4436 100644 (file)
@@ -1948,12 +1948,36 @@ static void qlcnic_83xx_init_hw(struct qlcnic_adapter *p_dev)
                dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__);
 }
 
+static inline void qlcnic_83xx_get_fw_file_name(struct qlcnic_adapter *adapter,
+                                               char *file_name)
+{
+       struct pci_dev *pdev = adapter->pdev;
+
+       memset(file_name, 0, QLC_FW_FILE_NAME_LEN);
+
+       switch (pdev->device) {
+       case PCI_DEVICE_ID_QLOGIC_QLE834X:
+               strncpy(file_name, QLC_83XX_FW_FILE_NAME,
+                       QLC_FW_FILE_NAME_LEN);
+               break;
+       case PCI_DEVICE_ID_QLOGIC_QLE844X:
+               strncpy(file_name, QLC_84XX_FW_FILE_NAME,
+                       QLC_FW_FILE_NAME_LEN);
+               break;
+       default:
+               dev_err(&pdev->dev, "%s: Invalid device id\n",
+                       __func__);
+       }
+}
+
 static int qlcnic_83xx_load_fw_image_from_host(struct qlcnic_adapter *adapter)
 {
+       char fw_file_name[QLC_FW_FILE_NAME_LEN];
        int err = -EIO;
 
-       if (request_firmware(&adapter->ahw->fw_info.fw,
-                            QLC_83XX_FW_FILE_NAME, &(adapter->pdev->dev))) {
+       qlcnic_83xx_get_fw_file_name(adapter, fw_file_name);
+       if (request_firmware(&adapter->ahw->fw_info.fw, fw_file_name,
+                            &(adapter->pdev->dev))) {
                dev_err(&adapter->pdev->dev,
                        "No file FW image, loading flash FW image.\n");
                QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID,