diff options
| author | Pratik Pujar <pratik.pujar@qlogic.com> | 2013-08-16 19:07:16 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-08-20 03:32:02 -0400 |
| commit | fef349ce37b2edafea34a73d4e8a719214fc6ffc (patch) | |
| tree | a2c18c91fa1f9b9cd06268733de8e5bd617ecc79 | |
| parent | 77bead466cfb0bc352e424eacdd17700aca851b3 (diff) | |
qlcnic: Add support for 84xx adapters to load firmware from file
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>
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 28 |
2 files changed, 28 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h index b89b07486961..d4c58c6a97d8 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h | |||
| @@ -84,9 +84,11 @@ | |||
| 84 | /* Firmware image definitions */ | 84 | /* Firmware image definitions */ |
| 85 | #define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000 | 85 | #define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000 |
| 86 | #define QLC_83XX_FW_FILE_NAME "83xx_fw.bin" | 86 | #define QLC_83XX_FW_FILE_NAME "83xx_fw.bin" |
| 87 | #define QLC_84XX_FW_FILE_NAME "84xx_fw.bin" | ||
| 87 | #define QLC_83XX_BOOT_FROM_FLASH 0 | 88 | #define QLC_83XX_BOOT_FROM_FLASH 0 |
| 88 | #define QLC_83XX_BOOT_FROM_FILE 0x12345678 | 89 | #define QLC_83XX_BOOT_FROM_FILE 0x12345678 |
| 89 | 90 | ||
| 91 | #define QLC_FW_FILE_NAME_LEN 20 | ||
| 90 | #define QLC_83XX_MAX_RESET_SEQ_ENTRIES 16 | 92 | #define QLC_83XX_MAX_RESET_SEQ_ENTRIES 16 |
| 91 | 93 | ||
| 92 | #define QLC_83XX_MBX_POST_BC_OP 0x1 | 94 | #define QLC_83XX_MBX_POST_BC_OP 0x1 |
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c index c97e2e07b279..f23e66780e7a 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | |||
| @@ -1948,12 +1948,36 @@ static void qlcnic_83xx_init_hw(struct qlcnic_adapter *p_dev) | |||
| 1948 | dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); | 1948 | dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); |
| 1949 | } | 1949 | } |
| 1950 | 1950 | ||
| 1951 | static inline void qlcnic_83xx_get_fw_file_name(struct qlcnic_adapter *adapter, | ||
| 1952 | char *file_name) | ||
| 1953 | { | ||
| 1954 | struct pci_dev *pdev = adapter->pdev; | ||
| 1955 | |||
| 1956 | memset(file_name, 0, QLC_FW_FILE_NAME_LEN); | ||
| 1957 | |||
| 1958 | switch (pdev->device) { | ||
| 1959 | case PCI_DEVICE_ID_QLOGIC_QLE834X: | ||
| 1960 | strncpy(file_name, QLC_83XX_FW_FILE_NAME, | ||
| 1961 | QLC_FW_FILE_NAME_LEN); | ||
| 1962 | break; | ||
| 1963 | case PCI_DEVICE_ID_QLOGIC_QLE844X: | ||
| 1964 | strncpy(file_name, QLC_84XX_FW_FILE_NAME, | ||
| 1965 | QLC_FW_FILE_NAME_LEN); | ||
| 1966 | break; | ||
| 1967 | default: | ||
| 1968 | dev_err(&pdev->dev, "%s: Invalid device id\n", | ||
| 1969 | __func__); | ||
| 1970 | } | ||
| 1971 | } | ||
| 1972 | |||
| 1951 | static int qlcnic_83xx_load_fw_image_from_host(struct qlcnic_adapter *adapter) | 1973 | static int qlcnic_83xx_load_fw_image_from_host(struct qlcnic_adapter *adapter) |
| 1952 | { | 1974 | { |
| 1975 | char fw_file_name[QLC_FW_FILE_NAME_LEN]; | ||
| 1953 | int err = -EIO; | 1976 | int err = -EIO; |
| 1954 | 1977 | ||
| 1955 | if (request_firmware(&adapter->ahw->fw_info.fw, | 1978 | qlcnic_83xx_get_fw_file_name(adapter, fw_file_name); |
| 1956 | QLC_83XX_FW_FILE_NAME, &(adapter->pdev->dev))) { | 1979 | if (request_firmware(&adapter->ahw->fw_info.fw, fw_file_name, |
| 1980 | &(adapter->pdev->dev))) { | ||
| 1957 | dev_err(&adapter->pdev->dev, | 1981 | dev_err(&adapter->pdev->dev, |
| 1958 | "No file FW image, loading flash FW image.\n"); | 1982 | "No file FW image, loading flash FW image.\n"); |
| 1959 | QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID, | 1983 | QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID, |
