Support controllers whose option ROM is disabled in the BIOS by kicking
the firmware so that it boots. PR: kern/154978 Submitted by: Andrew Boyer aboyer of averesystems com Obtained from: LSI MFC after: 1 week
This commit is contained in:
parent
62f9375715
commit
aadbd5321a
@ -260,8 +260,12 @@ mfi_transition_firmware(struct mfi_softc *sc)
|
||||
case MFI_FWSTATE_FLUSH_CACHE:
|
||||
max_wait = 20;
|
||||
break;
|
||||
case MFI_FWSTATE_BOOT_MESSAGE_PENDING:
|
||||
MFI_WRITE4(sc, MFI_IDB, MFI_FWINIT_HOTPLUG);
|
||||
max_wait = 10;
|
||||
break;
|
||||
default:
|
||||
device_printf(sc->mfi_dev,"Unknown firmware state %d\n",
|
||||
device_printf(sc->mfi_dev,"Unknown firmware state %#x\n",
|
||||
fw_state);
|
||||
return (ENXIO);
|
||||
}
|
||||
@ -273,7 +277,7 @@ mfi_transition_firmware(struct mfi_softc *sc)
|
||||
break;
|
||||
}
|
||||
if (fw_state == cur_state) {
|
||||
device_printf(sc->mfi_dev, "firmware stuck in state "
|
||||
device_printf(sc->mfi_dev, "Firmware stuck in state "
|
||||
"%#x\n", fw_state);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
@ -112,6 +112,7 @@ __FBSDID("$FreeBSD$");
|
||||
#define MFI_FWSTATE_WAIT_HANDSHAKE 0x60000000
|
||||
#define MFI_FWSTATE_FW_INIT_2 0x70000000
|
||||
#define MFI_FWSTATE_DEVICE_SCAN 0x80000000
|
||||
#define MFI_FWSTATE_BOOT_MESSAGE_PENDING 0x90000000
|
||||
#define MFI_FWSTATE_FLUSH_CACHE 0xa0000000
|
||||
#define MFI_FWSTATE_READY 0xb0000000
|
||||
#define MFI_FWSTATE_OPERATIONAL 0xc0000000
|
||||
@ -127,6 +128,7 @@ __FBSDID("$FreeBSD$");
|
||||
#define MFI_FWINIT_READY 0x00000002 /* Move from operational to ready */
|
||||
#define MFI_FWINIT_MFIMODE 0x00000004 /* unknown */
|
||||
#define MFI_FWINIT_CLEAR_HANDSHAKE 0x00000008 /* Respond to WAIT_HANDSHAKE */
|
||||
#define MFI_FWINIT_HOTPLUG 0x00000010
|
||||
|
||||
/* MFI Commands */
|
||||
typedef enum {
|
||||
|
Loading…
x
Reference in New Issue
Block a user