return -EINVAL;
}
+ /* check if flashed firmware is newer */
+ if (netxen_rom_fast_read(adapter,
+ NX_FW_VERSION_OFFSET, (int *)&val))
+ return -EIO;
+ major = (__force u32)val & 0xff;
+ minor = ((__force u32)val >> 8) & 0xff;
+ build = (__force u32)val >> 16;
+ if (NETXEN_VERSION_CODE(major, minor, build) > ver)
+ return -EINVAL;
+
netxen_nic_reg_write(adapter, NETXEN_CAM_RAM(0x1fc),
NETXEN_BDINFO_MAGIC);
return 0;
goto request_fw;
}
+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
+ fw_name = NX_P3_CT_ROMIMAGE;
+ goto request_fw;
+ }
+
+request_mn:
capability = 0;
netxen_rom_fast_read(adapter,
}
}
-request_ct:
- fw_name = NX_P3_CT_ROMIMAGE;
-
request_fw:
rc = request_firmware(&fw, fw_name, &pdev->dev);
if (rc != 0) {
- if (fw_name == NX_P3_MN_ROMIMAGE) {
+ if (fw_name == NX_P3_CT_ROMIMAGE) {
msleep(1);
- goto request_ct;
+ goto request_mn;
}
fw = NULL;
if (rc != 0) {
release_firmware(fw);
- if (fw_name == NX_P3_MN_ROMIMAGE) {
+ if (fw_name == NX_P3_CT_ROMIMAGE) {
msleep(1);
- goto request_ct;
+ goto request_mn;
}
fw = NULL;
return err;
}
- if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
- netxen_set_port_mode(adapter);
-
if (first_boot != 0x55555555) {
adapter->pci_write_normalize(adapter,
CRB_CMDPEG_STATE, 0);
netxen_pinit_from_rom(adapter, 0);
msleep(1);
}
+
netxen_nic_reg_write(adapter, CRB_DMA_SHIFT, 0x55555555);
+ if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
+ netxen_set_port_mode(adapter);
+
netxen_load_firmware(adapter);
if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {