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>
This commit is contained in:
parent
77bead466c
commit
fef349ce37
|
@ -84,9 +84,11 @@
|
||||||
/* Firmware image definitions */
|
/* Firmware image definitions */
|
||||||
#define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000
|
#define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000
|
||||||
#define QLC_83XX_FW_FILE_NAME "83xx_fw.bin"
|
#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_FLASH 0
|
||||||
#define QLC_83XX_BOOT_FROM_FILE 0x12345678
|
#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_MAX_RESET_SEQ_ENTRIES 16
|
||||||
|
|
||||||
#define QLC_83XX_MBX_POST_BC_OP 0x1
|
#define QLC_83XX_MBX_POST_BC_OP 0x1
|
||||||
|
|
|
@ -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__);
|
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)
|
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;
|
int err = -EIO;
|
||||||
|
|
||||||
if (request_firmware(&adapter->ahw->fw_info.fw,
|
qlcnic_83xx_get_fw_file_name(adapter, fw_file_name);
|
||||||
QLC_83XX_FW_FILE_NAME, &(adapter->pdev->dev))) {
|
if (request_firmware(&adapter->ahw->fw_info.fw, fw_file_name,
|
||||||
|
&(adapter->pdev->dev))) {
|
||||||
dev_err(&adapter->pdev->dev,
|
dev_err(&adapter->pdev->dev,
|
||||||
"No file FW image, loading flash FW image.\n");
|
"No file FW image, loading flash FW image.\n");
|
||||||
QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID,
|
QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID,
|
||||||
|
|
Loading…
Reference in New Issue