не знаю откуда взялась ссылка на RI2. Реально все завязано на пины 97 и 61. Тоже GPIO. Но это для MA790X-DS4.
А сам выбор загрузочной флэшки делается с помощью strapping'а
Взялось от меня, для моей мат. платы (MA780G-UD3H), на основании нижеприведенного кода из БИОСа (комментарии и имена мои).
Возможно, что я неправильно его истолковал.
Буду рад услышать о вашем опыте более подробно.
F000:4C93 ; =============== S U B R O U T I N E =======================================
F000:4C93
F000:4C93
F000:4C93 sio_ri2_chk proc near ; CODE XREF: do_start+20j
F000:4C93 shl esp, 10h
F000:4C97 mov cx, 0A348h ; enable sio access at 0x2e
F000:4C9A mov sp, 4CA0h ; pci 0:20:3 0x48
F000:4C9D jmp pci_cfg_readb
F000:4C9D ; ---------------------------------------------------------------------------
F000:4CA0 dw 4CA2h
F000:4CA2 ; ---------------------------------------------------------------------------
F000:4CA2 or al, 1
F000:4CA4 mov sp, 4CAAh
F000:4CA7 jmp pci_cfg_writeb
F000:4CA7 ; ---------------------------------------------------------------------------
F000:4CAA dw 4CACh
F000:4CAC ; ---------------------------------------------------------------------------
F000:4CAC mov dx, 2Eh ; '.' ; sio config mode
F000:4CAF mov al, 87h ; 'ç'
F000:4CB1 out dx, al
F000:4CB2
F000:4CB2 loc_F4CB2:
F000:4CB2 mov al, 1
F000:4CB4 out dx, al
F000:4CB5 mov al, 55h ; 'U'
F000:4CB7 out dx, al
F000:4CB8 mov al, 55h ; 'U'
F000:4CBA out dx, al
F000:4CBB mov cl, 4 ; select ldn 4 (EC)
F000:4CBD mov dx, 2Eh ; '.'
F000:4CC0 mov al, 7
F000:4CC2 out dx, al
F000:4CC3 out 0EBh, al
F000:4CC5 inc dx
F000:4CC6 mov al, cl
F000:4CC8 out dx, al
F000:4CC9 out 0EBh, al
F000:4CCB mov cl, 0F1h ; '±' ; ldn 4, reg F1
F000:4CCD mov al, cl
F000:4CCF mov dx, 2Eh ; '.'
F000:4CD2 out dx, al
F000:4CD3 out 0EBh, al
F000:4CD5 inc dx
F000:4CD6 in al, dx
F000:4CD7 out 0EBh, al
F000:4CD9 test al, 4 ; check RI2
F000:4CDB jz short end_0 ; RI2 not set
F000:4CDD otherwise switch to backup bios
F000:4CDD mov cl, 7 ; select ldn 7 (GPIO)
F000:4CDF mov dx, 2Eh ; '.'
F000:4CE2 mov al, 7
F000:4CE4 out dx, al
F000:4CE5 out 0EBh, al
F000:4CE7 inc dx
F000:4CE8 mov al, cl
F000:4CEA out dx, al
F000:4CEB out 0EBh, al
F000:4CED mov cl, 0EFh ; 'n' ; 0xef register (undocumented)
F000:4CEF mov al, cl
F000:4CF1 mov dx, 2Eh ; '.'
F000:4CF4 out dx, al
F000:4CF5 out 0EBh, al
F000:4CF7 inc dx
F000:4CF8 in al, dx ; current value: 72h
F000:4CF9 out 0EBh, al
F000:4CFB test al, 1 ; if already backup bios, don't do anything
F000:4CFD jnz short end_0 ; exit sio config
F000:4CFF mov cl, 0EFh ; 'n' ; working with EF again
F000:4D01 mov al, cl
F000:4D03 mov dx, 2Eh ; '.'
F000:4D06 out dx, al
F000:4D07 out 0EBh, al
F000:4D09 inc dx
F000:4D0A in al, dx ; re-read
F000:4D0B out 0EBh, al
F000:4D0D or al, 1 ; switch to backup
F000:4D0F mov ah, al
F000:4D11 mov dx, 2Eh ; '.'
F000:4D14 mov al, cl
F000:4D16 out dx, al
F000:4D17 out 0EBh, al
F000:4D19 mov al, ah
F000:4D1B inc dx
F000:4D1C out dx, al ; write back 'val | 1'
F000:4D1D out 0EBh, al
F000:4D1F mov al, 2
F000:4D21 mov dx, 0CF9h ; system reset register
F000:4D24 out dx, al
F000:4D25 mov al, 6
F000:4D27 out dx, al ; do hard reset
F000:4D28
F000:4D28 forever: ; CODE XREF: sio_ri2_chk:foreverj
F000:4D28 jmp short forever
F000:4D2A ; ---------------------------------------------------------------------------
F000:4D2A
F000:4D2A end_0: ; CODE XREF: sio_ri2_chk+48j
F000:4D2A ; sio_ri2_chk+6Aj
F000:4D2A mov dx, 2Eh ; '.' ; exit sio config
F000:4D2D mov al, 2
F000:4D2F out dx, al
F000:4D30 out 0EBh, al
F000:4D32 inc dx
F000:4D33 mov al, 2
F000:4D35 out dx, al
F000:4D36 shr esp, 10h
F000:4D3A retn
F000:4D3A sio_ri2_chk endp
F000:4D3A
Взялось от меня, для моей мат. платы (MA780G-UD3H), на основании нижеприведенного кода из БИОСа (комментарии и имена мои).
Возможно, что я неправильно его истолковал.
Буду рад услышать о вашем опыте более подробно.