summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-12-20 12:20:01 +0800
committerIru Cai <mytbk920423@gmail.com>2019-11-17 15:10:43 +0800
commit2915891ae85cf177a671d26beabd6e5912749e30 (patch)
tree8a4ddba37c0b9a633008567a4c0e697b62581aea
parented549a43a82da37bdcf5eb646d013bddac21e0a4 (diff)
downloadcoreboot-2915891ae85cf177a671d26beabd6e5912749e30.tar.xz
mrc_pch_init
-rw-r--r--src/northbridge/intel/haswell/Makefile.inc1
-rw-r--r--src/northbridge/intel/haswell/mrc.asm1790
-rw-r--r--src/northbridge/intel/haswell/mrc_pch_init.c154
-rw-r--r--src/northbridge/intel/haswell/mrc_pch_init.h443
4 files changed, 604 insertions, 1784 deletions
diff --git a/src/northbridge/intel/haswell/Makefile.inc b/src/northbridge/intel/haswell/Makefile.inc
index 1e4628a4f2..accc51b9e5 100644
--- a/src/northbridge/intel/haswell/Makefile.inc
+++ b/src/northbridge/intel/haswell/Makefile.inc
@@ -48,6 +48,7 @@ romstage-y += mrc_io.c
romstage-y += mrc_pch.c
romstage-y += stall.c
romstage-y += mrc_main.c
+romstage-y += mrc_pch_init.c
postcar-y += memmap.c
endif
diff --git a/src/northbridge/intel/haswell/mrc.asm b/src/northbridge/intel/haswell/mrc.asm
index a58770f153..151f214969 100644
--- a/src/northbridge/intel/haswell/mrc.asm
+++ b/src/northbridge/intel/haswell/mrc.asm
@@ -25,6 +25,7 @@ extern printGuid
extern usleep
extern mrc_pch_iobp_read
extern mrc_pch_iobp_update
+extern mrc_pch_init
; PEI services
extern PeiInstallPpi
@@ -3084,14 +3085,14 @@ mov ebx, dword [0xff7d7538]
and eax, 0xfc000000
mov edx, dword [eax + 0xf80f0]
and edx, 0xfffffffe
-mov word [edx + 0x3424], 0x10
+mov word [edx + 0x3424], 0x10 ; RCBA16(DISPBDF) = 0x0010;
mov eax, dword [edx + 0x3428]
or eax, 1
-mov dword [edx + 0x3428], eax
+mov dword [edx + 0x3428], eax ; RCBA32_OR(FD2, PCH_ENABLE_DBDF);
mov eax, dword [0xf0000060]
add esp, 0x10
and eax, 0xfc000000
-mov ax, word [eax + 0xf80a4]
+mov ax, word [eax + 0xf80a4] ; pci_read_config16(PCH_LPC_DEV, GEN_PMCON_3);
test al, 4
je loc_fffa3c99 ; je 0xfffa3c99
jmp near loc_fffa3c2e ; jmp 0xfffa3c2e
@@ -3267,9 +3268,9 @@ and eax, 0x7f
out 0x71, al
loc_fffa3c99:
-mov dword [edx + 0x3310], 0x10
+mov dword [edx + 0x3310], 0x10 ; RCBA32(0x3310) = 0x10;
mov eax, ebx
-call fcn_fffc7c9d ; call 0xfffc7c9d
+call mrc_pch_init
mov eax, 0xc
call mrc_alloc
test eax, eax
@@ -46860,580 +46861,6 @@ mov ebx, dword [ebp - 4]
leave
ret
-fcn_fffc7c9d:
-push ebp
-mov ebp, esp
-push edi
-push esi
-push ebx
-lea esp, [esp - 0x3c]
-call mrc_sku_type
-mov dword [ebp - 0x34], eax
-mov eax, dword [0xf0000060]
-and eax, 0xfc000000
-mov eax, dword [eax + 0xf80f0]
-and eax, 0xfffffffe
-mov dword [ebp - 0x38], eax
-mov eax, dword [0xf0000060]
-and eax, 0xfc000000
-mov ax, word [eax + 0xf8002]
-mov word [ebp - 0x2c], ax
-mov esi, dword [0xf0000060]
-and esi, 0xfc000000
-mov edx, dword [0xf0000060]
-mov al, byte [esi + 0xfa092]
-test al, 0xf
-setne al
-cmp dword [ebp - 0x34], 1
-jne loc_fffc8280 ; jne 0xfffc8280
-mov cl, byte [esi + 0xfa092]
-and cl, 0x30
-je loc_fffc8273 ; je 0xfffc8273
-
-loc_fffc7d10:
-lea ecx, [ebp - 0x1c]
-mov edx, 0xea000aac
-mov eax, dword [ebp - 0x38]
-call mrc_pch_iobp_read
-jmp near loc_fffc8288 ; jmp 0xfffc8288
-
-loc_fffc7d25:
-mov al, byte [esi + 0xfa090]
-and eax, 0x1f
-or eax, 0x60
-jmp short loc_fffc7d45 ; jmp 0xfffc7d45
-
-loc_fffc7d33:
-cmp dword [ebp - 0x34], 2
-jne short loc_fffc7d4b ; jne 0xfffc7d4b
-mov al, byte [esi + 0xfa090]
-and eax, 0x3f
-or eax, 0x40
-
-loc_fffc7d45:
-mov byte [esi + 0xfa090], al
-
-loc_fffc7d4b:
-mov dword [ebp - 0x1c], 0xfffffe00
-mov eax, dword [esi + 0xfa094]
-and eax, 0xfffffe00
-or eax, 0x183
-mov dword [esi + 0xfa094], eax
-mov ax, word [esi + 0xfa092]
-or ax, 0x8000
-mov word [esi + 0xfa092], ax
-and edx, 0xfc000000
-mov dword [ebp - 0x3c], edx
-mov al, byte [edx + 0xe0410]
-mov byte [ebp - 0x2d], al
-call mrc_pch_revision
-cmp eax, 3
-ja short loc_fffc7da6 ; ja 0xfffc7da6
-movzx edi, byte [eax + ref_fffcc32c] ; movzx edi, byte [eax - 0x33cd4]
-mov ebx, dword [eax*4 + ref_fffcc330] ; mov ebx, dword [eax*4 - 0x33cd0]
-jmp short loc_fffc7daa ; jmp 0xfffc7daa
-
-loc_fffc7da6:
-xor ebx, ebx
-xor edi, edi
-
-loc_fffc7daa:
-mov word [ebp - 0x2a], 0
-jmp short loc_fffc7dcf ; jmp 0xfffc7dcf
-
-loc_fffc7db2:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add ebx, 0xc
-inc word [ebp - 0x2a]
-add esp, 0x10
-
-loc_fffc7dcf:
-cmp word [ebp - 0x2a], di
-jne short loc_fffc7db2 ; jne 0xfffc7db2
-call mrc_pch_revision
-cmp eax, 6
-ja short loc_fffc7def ; ja 0xfffc7def
-movzx edx, byte [eax + ref_fffcc340] ; movzx edx, byte [eax - 0x33cc0]
-mov ebx, dword [eax*4 + ref_fffcc348] ; mov ebx, dword [eax*4 - 0x33cb8]
-jmp short loc_fffc7df3 ; jmp 0xfffc7df3
-
-loc_fffc7def:
-xor ebx, ebx
-xor edx, edx
-
-loc_fffc7df3:
-imul edx, edx, 0xc
-mov al, byte [ebp - 0x2d]
-and eax, 0x10
-mov byte [ebp - 0x2e], al
-lea edi, [ebx + edx]
-mov dl, byte [ebp - 0x2d]
-and edx, 0x20
-mov byte [ebp - 0x2a], dl
-jmp short loc_fffc7e88 ; jmp 0xfffc7e88
-
-loc_fffc7e0d:
-cmp dword [ebp - 0x34], 2
-jne short loc_fffc7e48 ; jne 0xfffc7e48
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc7e23 ; jne 0xfffc7e23
-jmp short loc_fffc7e5c ; jmp 0xfffc7e5c
-
-loc_fffc7e23:
-cmp eax, 0x2200
-jne short loc_fffc7e2c ; jne 0xfffc7e2c
-jmp short loc_fffc7e69 ; jmp 0xfffc7e69
-
-loc_fffc7e2c:
-cmp eax, 0x2400
-jne short loc_fffc7e39 ; jne 0xfffc7e39
-test byte [ebp - 0x2d], 0x40
-jmp short loc_fffc7e6d ; jmp 0xfffc7e6d
-
-loc_fffc7e39:
-cmp eax, 0x2600
-jne short loc_fffc7e6f ; jne 0xfffc7e6f
-cmp byte [ebp - 0x2d], 0
-jns short loc_fffc7e6f ; jns 0xfffc7e6f
-jmp short loc_fffc7e85 ; jmp 0xfffc7e85
-
-loc_fffc7e48:
-cmp dword [ebp - 0x34], 1
-jne short loc_fffc7e6f ; jne 0xfffc7e6f
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc7e62 ; jne 0xfffc7e62
-
-loc_fffc7e5c:
-cmp byte [ebp - 0x2e], 0
-jmp short loc_fffc7e6d ; jmp 0xfffc7e6d
-
-loc_fffc7e62:
-cmp eax, 0x2200
-jne short loc_fffc7e6f ; jne 0xfffc7e6f
-
-loc_fffc7e69:
-cmp byte [ebp - 0x2a], 0
-
-loc_fffc7e6d:
-jne short loc_fffc7e85 ; jne 0xfffc7e85
-
-loc_fffc7e6f:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add esp, 0x10
-
-loc_fffc7e85:
-add ebx, 0xc
-
-loc_fffc7e88:
-cmp ebx, edi
-jne short loc_fffc7e0d ; jne 0xfffc7e0d
-cmp word [ebp - 0x2c], 0x8c4f
-sete dl
-cmp word [ebp - 0x2c], 0x8c49
-sete al
-or dl, al
-mov byte [ebp - 0x2f], dl
-jne short loc_fffc7ecc ; jne 0xfffc7ecc
-cmp word [ebp - 0x2c], 0x8c41
-sete dl
-cmp word [ebp - 0x2c], 0x8c4b
-sete al
-or dl, al
-jne short loc_fffc7ecc ; jne 0xfffc7ecc
-mov eax, dword [ebp - 0x2c]
-add ax, 0x63bf
-cmp ax, 6
-ja loc_fffc7fe1 ; ja 0xfffc7fe1
-
-loc_fffc7ecc:
-call mrc_pch_revision
-cmp eax, 3
-ja short loc_fffc7ee6 ; ja 0xfffc7ee6
-movzx edi, byte [eax + ref_fffcc364] ; movzx edi, byte [eax - 0x33c9c]
-mov ebx, dword [eax*4 + ref_fffcc368] ; mov ebx, dword [eax*4 - 0x33c98]
-jmp short loc_fffc7eea ; jmp 0xfffc7eea
-
-loc_fffc7ee6:
-xor ebx, ebx
-xor edi, edi
-
-loc_fffc7eea:
-mov word [ebp - 0x2a], 0
-jmp short loc_fffc7f0f ; jmp 0xfffc7f0f
-
-loc_fffc7ef2:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add ebx, 0xc
-inc word [ebp - 0x2a]
-add esp, 0x10
-
-loc_fffc7f0f:
-cmp word [ebp - 0x2a], di
-jne short loc_fffc7ef2 ; jne 0xfffc7ef2
-call mrc_pch_revision
-cmp eax, 6
-ja short loc_fffc7f2f ; ja 0xfffc7f2f
-movzx edx, byte [eax + ref_fffcc378] ; movzx edx, byte [eax - 0x33c88]
-mov ebx, dword [eax*4 + ref_fffcc380] ; mov ebx, dword [eax*4 - 0x33c80]
-jmp short loc_fffc7f33 ; jmp 0xfffc7f33
-
-loc_fffc7f2f:
-xor ebx, ebx
-xor edx, edx
-
-loc_fffc7f33:
-imul edx, edx, 0xc
-mov al, byte [ebp - 0x2d]
-and eax, 0x10
-mov byte [ebp - 0x2e], al
-lea edi, [ebx + edx]
-mov dl, byte [ebp - 0x2d]
-and edx, 0x20
-mov byte [ebp - 0x2a], dl
-jmp short loc_fffc7fc8 ; jmp 0xfffc7fc8
-
-loc_fffc7f4d:
-cmp dword [ebp - 0x34], 2
-jne short loc_fffc7f88 ; jne 0xfffc7f88
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc7f63 ; jne 0xfffc7f63
-jmp short loc_fffc7f9c ; jmp 0xfffc7f9c
-
-loc_fffc7f63:
-cmp eax, 0x2200
-jne short loc_fffc7f6c ; jne 0xfffc7f6c
-jmp short loc_fffc7fa9 ; jmp 0xfffc7fa9
-
-loc_fffc7f6c:
-cmp eax, 0x2400
-jne short loc_fffc7f79 ; jne 0xfffc7f79
-test byte [ebp - 0x2d], 0x40
-jmp short loc_fffc7fad ; jmp 0xfffc7fad
-
-loc_fffc7f79:
-cmp eax, 0x2600
-jne short loc_fffc7faf ; jne 0xfffc7faf
-cmp byte [ebp - 0x2d], 0
-jns short loc_fffc7faf ; jns 0xfffc7faf
-jmp short loc_fffc7fc5 ; jmp 0xfffc7fc5
-
-loc_fffc7f88:
-cmp dword [ebp - 0x34], 1
-jne short loc_fffc7faf ; jne 0xfffc7faf
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc7fa2 ; jne 0xfffc7fa2
-
-loc_fffc7f9c:
-cmp byte [ebp - 0x2e], 0
-jmp short loc_fffc7fad ; jmp 0xfffc7fad
-
-loc_fffc7fa2:
-cmp eax, 0x2200
-jne short loc_fffc7faf ; jne 0xfffc7faf
-
-loc_fffc7fa9:
-cmp byte [ebp - 0x2a], 0
-
-loc_fffc7fad:
-jne short loc_fffc7fc5 ; jne 0xfffc7fc5
-
-loc_fffc7faf:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add esp, 0x10
-
-loc_fffc7fc5:
-add ebx, 0xc
-
-loc_fffc7fc8:
-cmp ebx, edi
-jne short loc_fffc7f4d ; jne 0xfffc7f4d
-
-loc_fffc7fcc:
-mov eax, dword [ebp - 0x2c]
-and eax, 0xfffffffd
-cmp ax, 0x8c44
-jne loc_fffc80e6 ; jne 0xfffc80e6
-jmp near loc_fffc8137 ; jmp 0xfffc8137
-
-loc_fffc7fe1:
-call mrc_pch_revision
-cmp eax, 3
-ja short loc_fffc7ffb ; ja 0xfffc7ffb
-movzx edi, byte [eax + ref_fffcc39c] ; movzx edi, byte [eax - 0x33c64]
-mov ebx, dword [eax*4 + ref_fffcc3a0] ; mov ebx, dword [eax*4 - 0x33c60]
-jmp short loc_fffc7fff ; jmp 0xfffc7fff
-
-loc_fffc7ffb:
-xor ebx, ebx
-xor edi, edi
-
-loc_fffc7fff:
-mov word [ebp - 0x2a], 0
-jmp short loc_fffc8024 ; jmp 0xfffc8024
-
-loc_fffc8007:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add ebx, 0xc
-inc word [ebp - 0x2a]
-add esp, 0x10
-
-loc_fffc8024:
-cmp word [ebp - 0x2a], di
-jne short loc_fffc8007 ; jne 0xfffc8007
-call mrc_pch_revision
-cmp eax, 6
-ja short loc_fffc8044 ; ja 0xfffc8044
-movzx edx, byte [eax + ref_fffcc3b0] ; movzx edx, byte [eax - 0x33c50]
-mov ebx, dword [eax*4 + ref_fffcc3b8] ; mov ebx, dword [eax*4 - 0x33c48]
-jmp short loc_fffc8048 ; jmp 0xfffc8048
-
-loc_fffc8044:
-xor ebx, ebx
-xor edx, edx
-
-loc_fffc8048:
-imul edx, edx, 0xc
-mov al, byte [ebp - 0x2d]
-and eax, 0x10
-mov byte [ebp - 0x2e], al
-lea edi, [ebx + edx]
-mov dl, byte [ebp - 0x2d]
-and edx, 0x20
-mov byte [ebp - 0x2a], dl
-jmp short loc_fffc80dd ; jmp 0xfffc80dd
-
-loc_fffc8062:
-cmp dword [ebp - 0x34], 2
-jne short loc_fffc809d ; jne 0xfffc809d
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc8078 ; jne 0xfffc8078
-jmp short loc_fffc80b1 ; jmp 0xfffc80b1
-
-loc_fffc8078:
-cmp eax, 0x2200
-jne short loc_fffc8081 ; jne 0xfffc8081
-jmp short loc_fffc80be ; jmp 0xfffc80be
-
-loc_fffc8081:
-cmp eax, 0x2400
-jne short loc_fffc808e ; jne 0xfffc808e
-test byte [ebp - 0x2d], 0x40
-jmp short loc_fffc80c2 ; jmp 0xfffc80c2
-
-loc_fffc808e:
-cmp eax, 0x2600
-jne short loc_fffc80c4 ; jne 0xfffc80c4
-cmp byte [ebp - 0x2d], 0
-jns short loc_fffc80c4 ; jns 0xfffc80c4
-jmp short loc_fffc80da ; jmp 0xfffc80da
-
-loc_fffc809d:
-cmp dword [ebp - 0x34], 1
-jne short loc_fffc80c4 ; jne 0xfffc80c4
-mov eax, dword [ebx]
-and eax, 0xfe00
-cmp eax, 0x2000
-jne short loc_fffc80b7 ; jne 0xfffc80b7
-
-loc_fffc80b1:
-cmp byte [ebp - 0x2e], 0
-jmp short loc_fffc80c2 ; jmp 0xfffc80c2
-
-loc_fffc80b7:
-cmp eax, 0x2200
-jne short loc_fffc80c4 ; jne 0xfffc80c4
-
-loc_fffc80be:
-cmp byte [ebp - 0x2a], 0
-
-loc_fffc80c2:
-jne short loc_fffc80da ; jne 0xfffc80da
-
-loc_fffc80c4:
-sub esp, 0xc
-mov ecx, dword [ebx + 4]
-push dword [ebx + 8]
-mov eax, dword [ebp - 0x38]
-mov edx, dword [ebx]
-call mrc_pch_iobp_update
-add esp, 0x10
-
-loc_fffc80da:
-add ebx, 0xc
-
-loc_fffc80dd:
-cmp ebx, edi
-jne short loc_fffc8062 ; jne 0xfffc8062
-jmp near loc_fffc7fcc ; jmp 0xfffc7fcc
-
-loc_fffc80e6:
-cmp ax, 0x8c4c
-je short loc_fffc8137 ; je 0xfffc8137
-cmp word [ebp - 0x2c], 0x8c5c
-sete dl
-cmp word [ebp - 0x2c], 0x8c50
-sete al
-or dl, al
-jne short loc_fffc8137 ; jne 0xfffc8137
-mov eax, dword [ebp - 0x2c]
-and eax, 0xfffffff7
-cmp ax, 0x8c42
-je short loc_fffc8137 ; je 0xfffc8137
-cmp byte [ebp - 0x2f], 0
-jne short loc_fffc8137 ; jne 0xfffc8137
-cmp word [ebp - 0x2c], 0x8c41
-sete dl
-cmp word [ebp - 0x2c], 0x8c4b
-sete al
-or dl, al
-jne short loc_fffc8137 ; jne 0xfffc8137
-mov eax, dword [ebp - 0x2c]
-add ax, 0x63bf
-cmp ax, 6
-ja short loc_fffc8148 ; ja 0xfffc8148
-
-loc_fffc8137:
-mov eax, dword [esi + 0xfa098]
-or eax, 0x400000
-mov dword [esi + 0xfa098], eax
-
-loc_fffc8148:
-mov eax, dword [esi + 0xfa098]
-or eax, 0x80000
-mov dword [esi + 0xfa098], eax
-mov dword [ebp - 0x1c], 0xffffe27f
-mov eax, dword [esi + 0xfa098]
-and eax, 0xffffe27f
-or ah, 2
-mov dword [esi + 0xfa098], eax
-mov eax, dword [esi + 0xfa098]
-or eax, 0x100000
-mov dword [esi + 0xfa098], eax
-mov eax, dword [esi + 0xfa098]
-and eax, 0xffffff9f
-or eax, 0x20
-mov dword [esi + 0xfa098], eax
-mov eax, dword [esi + 0xfa098]
-or eax, 0x40000
-mov dword [esi + 0xfa098], eax
-cmp dword [ebp - 0x34], 1
-jne short loc_fffc81d0 ; jne 0xfffc81d0
-mov al, byte [esi + 0xfa092]
-or eax, 0xf
-mov byte [esi + 0xfa092], al
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, 0x10
-jne loc_fffc8255 ; jne 0xfffc8255
-jmp short loc_fffc8246 ; jmp 0xfffc8246
-
-loc_fffc81d0:
-cmp dword [ebp - 0x34], 2
-jne loc_fffc8288 ; jne 0xfffc8288
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, al
-js short loc_fffc81f6 ; js 0xfffc81f6
-mov al, byte [esi + 0xfa092]
-or eax, 1
-mov byte [esi + 0xfa092], al
-
-loc_fffc81f6:
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, 0x40
-jne short loc_fffc8212 ; jne 0xfffc8212
-mov al, byte [esi + 0xfa092]
-or eax, 2
-mov byte [esi + 0xfa092], al
-
-loc_fffc8212:
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, 0x20
-jne short loc_fffc822e ; jne 0xfffc822e
-mov al, byte [esi + 0xfa092]
-or eax, 4
-mov byte [esi + 0xfa092], al
-
-loc_fffc822e:
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, 0x10
-jne short loc_fffc8288 ; jne 0xfffc8288
-mov al, byte [esi + 0xfa092]
-or eax, 8
-jmp short loc_fffc826b ; jmp 0xfffc826b
-
-loc_fffc8246:
-mov al, byte [esi + 0xfa092]
-or eax, 0x10
-mov byte [esi + 0xfa092], al
-
-loc_fffc8255:
-mov edx, dword [ebp - 0x3c]
-mov al, byte [edx + 0xe0410]
-test al, 0x20
-jne short loc_fffc8288 ; jne 0xfffc8288
-mov al, byte [esi + 0xfa092]
-or eax, 0x20
-
-loc_fffc826b:
-mov byte [esi + 0xfa092], al
-jmp short loc_fffc8288 ; jmp 0xfffc8288
-
-loc_fffc8273:
-dec al
-jne loc_fffc7d25 ; jne 0xfffc7d25
-jmp near loc_fffc7d10 ; jmp 0xfffc7d10
-
-loc_fffc8280:
-dec al
-jne loc_fffc7d33 ; jne 0xfffc7d33
-
-loc_fffc8288:
-lea esp, [ebp - 0xc]
-pop ebx
-pop esi
-pop edi
-pop ebp
-ret
-
fcn_fffc8290:
push ebp
mov ebp, esp
@@ -52367,71 +51794,6 @@ dd 0x00000000
dd 0x00000000
dd 0x00000200
-ref_fffcc32c:
-dd 0x45454552
-
-ref_fffcc330:
-dd ref_fffcd58c
-dd ref_fffcd964
-dd ref_fffcd964
-dd ref_fffcd964
-
-ref_fffcc340:
-db '("""MMM',0x00
-
-ref_fffcc348:
-dd ref_fffcdca0
-dd ref_fffcde80
-dd ref_fffcde80
-dd ref_fffcde80
-dd ref_fffce018
-dd ref_fffce018
-dd ref_fffce018
-
-ref_fffcc364:
-dd 0x0c0c0c08
-
-ref_fffcc368:
-dd ref_fffce3b4
-dd ref_fffce414
-dd ref_fffce414
-dd ref_fffce414
-
-ref_fffcc378:
-dd 0x06060604
-dd 0x00040404
-
-ref_fffcc380:
-dd ref_fffce4a4
-dd ref_fffce4d4
-dd ref_fffce4d4
-dd ref_fffce4d4
-dd ref_fffce51c
-dd ref_fffce51c
-dd ref_fffce51c
-
-ref_fffcc39c:
-dd 0x0c0c0c08
-
-ref_fffcc3a0:
-dd ref_fffce54c
-dd ref_fffce5ac
-dd ref_fffce5ac
-dd ref_fffce5ac
-
-ref_fffcc3b0:
-dd 0x06060604
-dd 0x00040404
-
-ref_fffcc3b8:
-dd ref_fffce63c
-dd ref_fffce66c
-dd ref_fffce66c
-dd ref_fffce66c
-dd ref_fffce6b4
-dd ref_fffce6b4
-dd ref_fffce6b4
-
ref_fffcc3d4:
dd loc_fffc8509
dd loc_fffc8514
@@ -53445,1143 +52807,3 @@ dd 0x605ea650
dd 0x42e1c65c
dd 0xa59180ba
dd 0xc618b62a
-
-ref_fffcd58c:
-dd 0xea008008
-dd 0x00ffffff
-dd 0x1c000000
-dd 0xea00800c
-dd 0xffff8000
-dd 0x00002b50
-dd 0xea0024a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0026a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0008a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea000aa4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0024ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0026ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0008ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea000aac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea002488
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea002688
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea000888
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea000a88
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea002494
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea002694
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea000894
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea000a94
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea002540
-dd 0xff000000
-dd 0x00180918
-dd 0xea002740
-dd 0xff000000
-dd 0x00180918
-dd 0xea000940
-dd 0xff000000
-dd 0x00180918
-dd 0xea000b40
-dd 0xff000000
-dd 0x00180918
-dd 0xea002544
-dd 0xff000000
-dd 0x00140918
-dd 0xea002744
-dd 0xff000000
-dd 0x00140918
-dd 0xea000944
-dd 0xff000000
-dd 0x00140918
-dd 0xea000b44
-dd 0xff000000
-dd 0x00140918
-dd 0xea002548
-dd 0xff000000
-dd 0x00140918
-dd 0xea002748
-dd 0xff000000
-dd 0x00140918
-dd 0xea000948
-dd 0xff000000
-dd 0x00140918
-dd 0xea000b48
-dd 0xff000000
-dd 0x00140918
-dd 0xea002550
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002750
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000950
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000b50
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002554
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002754
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000954
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000b54
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002410
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002610
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea000810
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea000a10
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002400
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002600
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea000800
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea000a00
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002408
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002608
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea000808
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea000a08
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002418
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002618
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea000818
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea000a18
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002428
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002628
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea000828
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea000a28
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002438
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002638
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea000838
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea000a38
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002440
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002640
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea000840
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea000a40
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea00242c
-dd 0xfffdffff
-dd 0x00020000
-dd 0xea00262c
-dd 0xfffdffff
-dd 0x00020000
-dd 0xea00082c
-dd 0xfffdffff
-dd 0x00020000
-dd 0xea000a2c
-dd 0xfffdffff
-dd 0x00020000
-dd 0xea00241c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00261c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00081c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea000a1c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea002500
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea002700
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea000900
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea000b00
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea00257c
-dd 0xfff0c0ff
-dd 0x00003f00
-dd 0xea00277c
-dd 0xfff0c0ff
-dd 0x00003f00
-dd 0xea00097c
-dd 0xfff0c0ff
-dd 0x00003f00
-dd 0xea000b7c
-dd 0xfff0c0ff
-dd 0x00003f00
-
-ref_fffcd964:
-dd 0xea008008
-dd 0x00ffffff
-dd 0x1c000000
-dd 0xea002408
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002608
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea000808
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea000a08
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002438
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002638
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea000838
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea000a38
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002440
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002640
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea000840
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea000a40
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002410
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002610
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea000810
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea000a10
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea00242c
-dd 0xfffdf7ff
-dd 0x00020000
-dd 0xea00262c
-dd 0xfffdf7ff
-dd 0x00020000
-dd 0xea00082c
-dd 0xfffdf7ff
-dd 0x00020000
-dd 0xea000a2c
-dd 0xfffdf7ff
-dd 0x00020000
-dd 0xea002418
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002618
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea000818
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea000a18
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002400
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002600
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea000800
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea000a00
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002428
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002628
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea000828
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea000a28
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea00241c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00261c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00081c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea000a1c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00248c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00268c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00088c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea000a8c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea0024a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0026a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0008a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea000aa4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0024ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0026ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0008ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea000aac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea002540
-dd 0xff000000
-dd 0x00140718
-dd 0xea002740
-dd 0xff000000
-dd 0x00140718
-dd 0xea000940
-dd 0xff000000
-dd 0x00140718
-dd 0xea000b40
-dd 0xff000000
-dd 0x00140718
-dd 0xea002544
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002744
-dd 0xff000000
-dd 0x0014091b
-dd 0xea000944
-dd 0xff000000
-dd 0x0014091b
-dd 0xea000b44
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002548
-dd 0xff000000
-dd 0x00140918
-dd 0xea002748
-dd 0xff000000
-dd 0x00140918
-dd 0xea000948
-dd 0xff000000
-dd 0x00140918
-dd 0xea000b48
-dd 0xff000000
-dd 0x00140918
-dd 0xea00257c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00277c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00097c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea000b7c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea002578
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea002778
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea000978
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea000b78
-dd 0xffffe0ff
-dd 0x00001800
-
-ref_fffcdca0:
-dd 0xea0020a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0022a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0020ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0022ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea002088
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea002288
-dd 0xffff00ff
-dd 0x00008000
-dd 0xea002094
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea002294
-dd 0x7fffffff
-dd 0x80000000
-dd 0xea002140
-dd 0xff000000
-dd 0x00180918
-dd 0xea002340
-dd 0xff000000
-dd 0x00180918
-dd 0xea002144
-dd 0xff000000
-dd 0x00140918
-dd 0xea002344
-dd 0xff000000
-dd 0x00140918
-dd 0xea002148
-dd 0xff000000
-dd 0x00140918
-dd 0xea002348
-dd 0xff000000
-dd 0x00140918
-dd 0xea002150
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002350
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002154
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002354
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002010
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002210
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002000
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002200
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002008
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002208
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002018
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002218
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002028
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002228
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002038
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002238
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002040
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002240
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea00202c
-dd 0xfffdf8ff
-dd 0x00020100
-dd 0xea00222c
-dd 0xfffdf8ff
-dd 0x00020100
-dd 0xea00201c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00221c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea002100
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea002300
-dd 0xffff1fc1
-dd 0x00004008
-dd 0xea00217c
-dd 0xfff0c0ff
-dd 0x00003f00
-dd 0xea00237c
-dd 0xfff0c0ff
-dd 0x00003f00
-
-ref_fffcde80:
-dd 0xea002008
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002208
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002038
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002238
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea00202c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea00222c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea002040
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002240
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002010
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002210
-dd 0x0000ffff
-dd 0x0d510000
-dd 0xea002018
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002218
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002000
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002200
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002028
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002228
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea00201c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00221c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00208c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00228c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea0020a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0022a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0020ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0022ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea002140
-dd 0xff000000
-dd 0x00140718
-dd 0xea002340
-dd 0xff000000
-dd 0x00140718
-dd 0xea002144
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002344
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002148
-dd 0xff000000
-dd 0x00140918
-dd 0xea002348
-dd 0xff000000
-dd 0x00140918
-dd 0xea00217c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00237c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea002178
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea002378
-dd 0xffffe0ff
-dd 0x00001800
-
-ref_fffce018:
-dd 0xea008008
-dd 0x00ffffff
-dd 0x1c000000
-dd 0xea002008
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002208
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002408
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002608
-dd 0x00039ef7
-dd 0xea6c6108
-dd 0xea002038
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002238
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002438
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea002638
-dd 0xfffffff0
-dd 0x0000000d
-dd 0xea00202c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea00222c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea00242c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea00262c
-dd 0xfffdf0ff
-dd 0x00020100
-dd 0xea002040
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002240
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002440
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002640
-dd 0xe0ffffff
-dd 0x01000000
-dd 0xea002010
-dd 0x0000ffff
-dd 0x55510000
-dd 0xea002210
-dd 0x0000ffff
-dd 0x55510000
-dd 0xea002410
-dd 0x0000ffff
-dd 0x55510000
-dd 0xea002610
-dd 0x0000ffff
-dd 0x55510000
-dd 0xea002150
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002350
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002550
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002750
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002154
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002354
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002554
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002754
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002140
-dd 0xff000000
-dd 0x00140718
-dd 0xea002340
-dd 0xff000000
-dd 0x00140718
-dd 0xea002540
-dd 0xff000000
-dd 0x00140718
-dd 0xea002740
-dd 0xff000000
-dd 0x00140718
-dd 0xea002144
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002344
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002544
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002744
-dd 0xff000000
-dd 0x0014091b
-dd 0xea002148
-dd 0xff000000
-dd 0x00140918
-dd 0xea002348
-dd 0xff000000
-dd 0x00140918
-dd 0xea002548
-dd 0xff000000
-dd 0x00140918
-dd 0xea002748
-dd 0xff000000
-dd 0x00140918
-dd 0xea00217c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00237c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00257c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00277c
-dd 0xfcffffff
-dd 0x03000000
-dd 0xea00208c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00228c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00248c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00268c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea0020a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0022a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0024a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0026a4
-dd 0xffcf00ff
-dd 0x00308300
-dd 0xea0020ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0022ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0024ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea0026ac
-dd 0xffffffcf
-dd 0x00000020
-dd 0xea002018
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002218
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002418
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002618
-dd 0x0000fcff
-dd 0x38250100
-dd 0xea002000
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002200
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002400
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002600
-dd 0x30fcffff
-dd 0xcf030000
-dd 0xea002028
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002228
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002428
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea002628
-dd 0x00e0ffff
-dd 0x580e0000
-dd 0xea00201c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00221c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00241c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea00261c
-dd 0xffff83ff
-dd 0x00002400
-dd 0xea002178
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea002378
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea002578
-dd 0xffffe0ff
-dd 0x00001800
-dd 0xea002778
-dd 0xffffe0ff
-dd 0x00001800
-
-ref_fffce3b4:
-dd 0xea002490
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002690
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea000890
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea000a90
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea00248c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00268c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00088c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea000a8c
-dd 0xff00ffff
-dd 0x00800000
-
-ref_fffce414:
-dd 0xea002550
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002750
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000950
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000b50
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002554
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002754
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000954
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000b54
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002490
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002690
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea000890
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea000a90
-dd 0xffff0000
-dd 0x00004c5a
-
-ref_fffce4a4:
-dd 0xea002090
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002290
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea00208c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00228c
-dd 0xff00ffff
-dd 0x00800000
-
-ref_fffce4d4:
-dd 0xea002150
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002350
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002154
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002354
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002090
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002290
-dd 0xffff0000
-dd 0x00004c5a
-
-ref_fffce51c:
-dd 0xea002090
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002290
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002490
-dd 0xffff0000
-dd 0x00004c5a
-dd 0xea002690
-dd 0xffff0000
-dd 0x00004c5a
-
-ref_fffce54c:
-dd 0xea002490
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002690
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea000890
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea000a90
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea00248c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00268c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00088c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea000a8c
-dd 0xff00ffff
-dd 0x00800000
-
-ref_fffce5ac:
-dd 0xea002550
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002750
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000950
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea000b50
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002554
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002754
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000954
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea000b54
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002490
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002690
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea000890
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea000a90
-dd 0xffff0000
-dd 0x00003e67
-
-ref_fffce63c:
-dd 0xea002090
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002290
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea00208c
-dd 0xff00ffff
-dd 0x00800000
-dd 0xea00228c
-dd 0xff00ffff
-dd 0x00800000
-
-ref_fffce66c:
-dd 0xea002150
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002350
-dd 0xc0ffffff
-dd 0x02000000
-dd 0xea002154
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002354
-dd 0xffc0ffff
-dd 0x00020000
-dd 0xea002090
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002290
-dd 0xffff0000
-dd 0x00003e67
-
-ref_fffce6b4:
-dd 0xea002090
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002290
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002490
-dd 0xffff0000
-dd 0x00003e67
-dd 0xea002690
-dd 0xffff0000
-dd 0x00003e67
diff --git a/src/northbridge/intel/haswell/mrc_pch_init.c b/src/northbridge/intel/haswell/mrc_pch_init.c
new file mode 100644
index 0000000000..95f0264eab
--- /dev/null
+++ b/src/northbridge/intel/haswell/mrc_pch_init.c
@@ -0,0 +1,154 @@
+#include <southbridge/intel/lynxpoint/pch.h>
+#include <device/pci_ops.h>
+#include "mrc_pch.h"
+#include "mrc_sku.h"
+#include "mrc_pch_init.h"
+
+static void
+do_update_iopb(uint8_t pch_rev, uint8_t sku_type, const u8 r410_bits[],
+ const uint8_t sz0[], const iobp_upd_st * const upd0[],
+ const uint8_t sz1[], const iobp_upd_st * const upd1[])
+{
+ int iobp_sz;
+ const iobp_upd_st *iobp_upd_data;
+ uint32_t rcba = pci_read_config32(PCH_LPC_DEV, 0xf0) & 0xfffffffe;
+
+ if (pch_rev <= 3) {
+ iobp_sz = sz0[pch_rev];
+ iobp_upd_data = upd0[pch_rev];
+ } else {
+ iobp_sz = 0;
+ iobp_upd_data = NULL;
+ }
+ for (int i = 0; i != iobp_sz; i++) {
+ mrc_pch_iobp_update (rcba, iobp_upd_data[i].address,
+ iobp_upd_data[i].andv, iobp_upd_data[i].orv);
+ }
+
+ if (pch_rev <= 6) {
+ iobp_sz = sz1[pch_rev];
+ iobp_upd_data = upd1[pch_rev];
+ } else {
+ iobp_sz = 0;
+ iobp_upd_data = NULL;
+ }
+ for (int i = 0; i != iobp_sz; i++) {
+ uint32_t m_addr = iobp_upd_data[i].address & 0xfe00;
+ if (sku_type == 2) {
+ if (m_addr == 0x2000 && r410_bits[0])
+ continue;
+ if (m_addr == 0x2200 && r410_bits[1])
+ continue;
+ if (m_addr == 0x2400 && r410_bits[2])
+ continue;
+ if (m_addr == 0x2600 && r410_bits[3])
+ continue;
+ } else if (sku_type == 1) {
+ if (m_addr == 0x2000 && r410_bits[0])
+ continue;
+ if (m_addr == 0x2200 && r410_bits[1])
+ continue;
+ }
+ mrc_pch_iobp_update (rcba, iobp_upd_data[i].address,
+ iobp_upd_data[i].andv, iobp_upd_data[i].orv);
+ }
+}
+
+void mrc_pch_init(void)
+{
+ uint32_t rcba;
+ int sku_type;
+ uint16_t pch_did;
+ uint32_t tmp;
+ uint8_t pch_rev;
+ uint8_t reg_410;
+ uint8_t r410_bits[4];
+
+ sku_type = mrc_sku_type ();
+ rcba = pci_read_config32(PCH_LPC_DEV, 0xf0) & 0xfffffffe;
+ pch_did = pci_read_config16(PCH_LPC_DEV, 2);
+ uint8_t pcs = pci_read_config8(PCI_DEV(0, 0x1f, 2), 0x92);
+ uint8_t al = ((pcs & 0xf) != 0) ? 1 : 0;
+
+ if (sku_type == 1) {
+ pcs = pci_read_config8(PCI_DEV(0, 0x1f, 2), 0x92);
+ uint8_t cl = pcs & 0x30;
+ if (cl == 0 && al != 1) {
+ pci_update_config8(PCI_DEV(0, 0x1f, 2), 0x90, 0x1f, 0x60);
+ } else {
+ mrc_pch_iobp_read (rcba, 0xea000aac, &tmp);
+ return;
+ }
+ } else {
+ if (al == 1)
+ return;
+ if (sku_type == 2) {
+ pci_update_config8(PCI_DEV(0, 0x1f, 2), 0x90, 0x3f, 0x40);
+ }
+ }
+
+ pci_update_config32(PCI_DEV(0, 0x1f, 2), 0x94, 0xfffffe00, 0x183);
+ pci_or_config16(PCI_DEV(0, 0x1f, 2), 0x92, 0x8000);
+
+ // PCIE 0x410: pin ownership?
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ r410_bits[0] = reg_410 & 0x10;
+ r410_bits[1] = reg_410 & 0x20;
+ r410_bits[2] = reg_410 & 0x40;
+ r410_bits[3] = reg_410 & 0x80;
+ pch_rev = mrc_pch_revision();
+
+ do_update_iopb(pch_rev, sku_type, r410_bits,
+ iobp0_sz, iobp0_ref, iobp1_sz, iobp1_ref);
+
+ if (sku_type == 2 || pch_did == 0x8c49 || pch_did == 0x8c4b
+ || pch_did == 0x8c4f || pch_did == 0x8c41) {
+ /* mobile/LP platform */
+ do_update_iopb(pch_rev, sku_type, r410_bits,
+ iobp2_sz, iobp2_ref, iobp3_sz, iobp3_ref);
+ } else {
+ do_update_iopb(pch_rev, sku_type, r410_bits,
+ iobp4_sz, iobp4_ref, iobp5_sz, iobp5_ref);
+ }
+ if (sku_type <= 2) {
+ pci_or_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0x400000);
+ }
+ pci_or_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0x80000);
+ pci_update_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0xffffe27f, 2);
+ pci_or_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0x100000);
+ pci_update_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0xffffff9f, 0x20);
+ pci_or_config32(PCI_DEV(0, 0x1f, 2), 0x98, 0x40000);
+
+ if (sku_type == 1) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 0xf);
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x10) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 0x10);
+ }
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x20) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 0x20);
+ }
+ return;
+ } else {
+ if (sku_type == 2) {
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x80) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 1);
+ }
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x40) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 2);
+ }
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x20) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 4);
+ }
+ reg_410 = pci_read_config8(PCI_DEV(0, 0x1c, 0), 0x410);
+ if ((reg_410 & 0x10) == 0) {
+ pci_or_config8(PCI_DEV(0, 0x1f, 2), 0x92, 8);
+ }
+ }
+ return;
+ }
+}
diff --git a/src/northbridge/intel/haswell/mrc_pch_init.h b/src/northbridge/intel/haswell/mrc_pch_init.h
new file mode 100644
index 0000000000..cf64222b48
--- /dev/null
+++ b/src/northbridge/intel/haswell/mrc_pch_init.h
@@ -0,0 +1,443 @@
+#include <stdint.h>
+
+typedef struct {
+ uint32_t address;
+ uint32_t andv;
+ uint32_t orv;
+} iobp_upd_st;
+
+void mrc_pch_init(void);
+
+static const iobp_upd_st iobp0_0[] = {
+ { 0xea008008, 0x00ffffff, 0x1c000000 },
+ { 0xea00800c, 0xffff8000, 0x00002b50 },
+ { 0xea0024a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0026a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0008a4, 0xffcf00ff, 0x00308300 },
+ { 0xea000aa4, 0xffcf00ff, 0x00308300 },
+ { 0xea0024ac, 0xffffffcf, 0x00000020 },
+ { 0xea0026ac, 0xffffffcf, 0x00000020 },
+ { 0xea0008ac, 0xffffffcf, 0x00000020 },
+ { 0xea000aac, 0xffffffcf, 0x00000020 },
+ { 0xea002488, 0xffff00ff, 0x00008000 },
+ { 0xea002688, 0xffff00ff, 0x00008000 },
+ { 0xea000888, 0xffff00ff, 0x00008000 },
+ { 0xea000a88, 0xffff00ff, 0x00008000 },
+ { 0xea002494, 0x7fffffff, 0x80000000 },
+ { 0xea002694, 0x7fffffff, 0x80000000 },
+ { 0xea000894, 0x7fffffff, 0x80000000 },
+ { 0xea000a94, 0x7fffffff, 0x80000000 },
+ { 0xea002540, 0xff000000, 0x00180918 },
+ { 0xea002740, 0xff000000, 0x00180918 },
+ { 0xea000940, 0xff000000, 0x00180918 },
+ { 0xea000b40, 0xff000000, 0x00180918 },
+ { 0xea002544, 0xff000000, 0x00140918 },
+ { 0xea002744, 0xff000000, 0x00140918 },
+ { 0xea000944, 0xff000000, 0x00140918 },
+ { 0xea000b44, 0xff000000, 0x00140918 },
+ { 0xea002548, 0xff000000, 0x00140918 },
+ { 0xea002748, 0xff000000, 0x00140918 },
+ { 0xea000948, 0xff000000, 0x00140918 },
+ { 0xea000b48, 0xff000000, 0x00140918 },
+ { 0xea002550, 0xc0ffffff, 0x02000000 },
+ { 0xea002750, 0xc0ffffff, 0x02000000 },
+ { 0xea000950, 0xc0ffffff, 0x02000000 },
+ { 0xea000b50, 0xc0ffffff, 0x02000000 },
+ { 0xea002554, 0xffc0ffff, 0x00020000 },
+ { 0xea002754, 0xffc0ffff, 0x00020000 },
+ { 0xea000954, 0xffc0ffff, 0x00020000 },
+ { 0xea000b54, 0xffc0ffff, 0x00020000 },
+ { 0xea002410, 0x0000ffff, 0x0d510000 },
+ { 0xea002610, 0x0000ffff, 0x0d510000 },
+ { 0xea000810, 0x0000ffff, 0x0d510000 },
+ { 0xea000a10, 0x0000ffff, 0x0d510000 },
+ { 0xea002400, 0x30fcffff, 0xcf030000 },
+ { 0xea002600, 0x30fcffff, 0xcf030000 },
+ { 0xea000800, 0x30fcffff, 0xcf030000 },
+ { 0xea000a00, 0x30fcffff, 0xcf030000 },
+ { 0xea002408, 0x00039ef7, 0xea6c6108 },
+ { 0xea002608, 0x00039ef7, 0xea6c6108 },
+ { 0xea000808, 0x00039ef7, 0xea6c6108 },
+ { 0xea000a08, 0x00039ef7, 0xea6c6108 },
+ { 0xea002418, 0x0000fcff, 0x38250100 },
+ { 0xea002618, 0x0000fcff, 0x38250100 },
+ { 0xea000818, 0x0000fcff, 0x38250100 },
+ { 0xea000a18, 0x0000fcff, 0x38250100 },
+ { 0xea002428, 0x00e0ffff, 0x580e0000 },
+ { 0xea002628, 0x00e0ffff, 0x580e0000 },
+ { 0xea000828, 0x00e0ffff, 0x580e0000 },
+ { 0xea000a28, 0x00e0ffff, 0x580e0000 },
+ { 0xea002438, 0xfffffff0, 0x0000000d },
+ { 0xea002638, 0xfffffff0, 0x0000000d },
+ { 0xea000838, 0xfffffff0, 0x0000000d },
+ { 0xea000a38, 0xfffffff0, 0x0000000d },
+ { 0xea002440, 0xe0ffffff, 0x01000000 },
+ { 0xea002640, 0xe0ffffff, 0x01000000 },
+ { 0xea000840, 0xe0ffffff, 0x01000000 },
+ { 0xea000a40, 0xe0ffffff, 0x01000000 },
+ { 0xea00242c, 0xfffdffff, 0x00020000 },
+ { 0xea00262c, 0xfffdffff, 0x00020000 },
+ { 0xea00082c, 0xfffdffff, 0x00020000 },
+ { 0xea000a2c, 0xfffdffff, 0x00020000 },
+ { 0xea00241c, 0xffff83ff, 0x00002400 },
+ { 0xea00261c, 0xffff83ff, 0x00002400 },
+ { 0xea00081c, 0xffff83ff, 0x00002400 },
+ { 0xea000a1c, 0xffff83ff, 0x00002400 },
+ { 0xea002500, 0xffff1fc1, 0x00004008 },
+ { 0xea002700, 0xffff1fc1, 0x00004008 },
+ { 0xea000900, 0xffff1fc1, 0x00004008 },
+ { 0xea000b00, 0xffff1fc1, 0x00004008 },
+ { 0xea00257c, 0xfff0c0ff, 0x00003f00 },
+ { 0xea00277c, 0xfff0c0ff, 0x00003f00 },
+ { 0xea00097c, 0xfff0c0ff, 0x00003f00 },
+ { 0xea000b7c, 0xfff0c0ff, 0x00003f00 },
+};
+static const iobp_upd_st iobp0_1[] = {
+ { 0xea008008, 0x00ffffff, 0x1c000000 },
+ { 0xea002408, 0x00039ef7, 0xea6c6108 },
+ { 0xea002608, 0x00039ef7, 0xea6c6108 },
+ { 0xea000808, 0x00039ef7, 0xea6c6108 },
+ { 0xea000a08, 0x00039ef7, 0xea6c6108 },
+ { 0xea002438, 0xfffffff0, 0x0000000d },
+ { 0xea002638, 0xfffffff0, 0x0000000d },
+ { 0xea000838, 0xfffffff0, 0x0000000d },
+ { 0xea000a38, 0xfffffff0, 0x0000000d },
+ { 0xea002440, 0xe0ffffff, 0x01000000 },
+ { 0xea002640, 0xe0ffffff, 0x01000000 },
+ { 0xea000840, 0xe0ffffff, 0x01000000 },
+ { 0xea000a40, 0xe0ffffff, 0x01000000 },
+ { 0xea002410, 0x0000ffff, 0x0d510000 },
+ { 0xea002610, 0x0000ffff, 0x0d510000 },
+ { 0xea000810, 0x0000ffff, 0x0d510000 },
+ { 0xea000a10, 0x0000ffff, 0x0d510000 },
+ { 0xea00242c, 0xfffdf7ff, 0x00020000 },
+ { 0xea00262c, 0xfffdf7ff, 0x00020000 },
+ { 0xea00082c, 0xfffdf7ff, 0x00020000 },
+ { 0xea000a2c, 0xfffdf7ff, 0x00020000 },
+ { 0xea002418, 0x0000fcff, 0x38250100 },
+ { 0xea002618, 0x0000fcff, 0x38250100 },
+ { 0xea000818, 0x0000fcff, 0x38250100 },
+ { 0xea000a18, 0x0000fcff, 0x38250100 },
+ { 0xea002400, 0x30fcffff, 0xcf030000 },
+ { 0xea002600, 0x30fcffff, 0xcf030000 },
+ { 0xea000800, 0x30fcffff, 0xcf030000 },
+ { 0xea000a00, 0x30fcffff, 0xcf030000 },
+ { 0xea002428, 0x00e0ffff, 0x580e0000 },
+ { 0xea002628, 0x00e0ffff, 0x580e0000 },
+ { 0xea000828, 0x00e0ffff, 0x580e0000 },
+ { 0xea000a28, 0x00e0ffff, 0x580e0000 },
+ { 0xea00241c, 0xffff83ff, 0x00002400 },
+ { 0xea00261c, 0xffff83ff, 0x00002400 },
+ { 0xea00081c, 0xffff83ff, 0x00002400 },
+ { 0xea000a1c, 0xffff83ff, 0x00002400 },
+ { 0xea00248c, 0xff00ffff, 0x00800000 },
+ { 0xea00268c, 0xff00ffff, 0x00800000 },
+ { 0xea00088c, 0xff00ffff, 0x00800000 },
+ { 0xea000a8c, 0xff00ffff, 0x00800000 },
+ { 0xea0024a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0026a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0008a4, 0xffcf00ff, 0x00308300 },
+ { 0xea000aa4, 0xffcf00ff, 0x00308300 },
+ { 0xea0024ac, 0xffffffcf, 0x00000020 },
+ { 0xea0026ac, 0xffffffcf, 0x00000020 },
+ { 0xea0008ac, 0xffffffcf, 0x00000020 },
+ { 0xea000aac, 0xffffffcf, 0x00000020 },
+ { 0xea002540, 0xff000000, 0x00140718 },
+ { 0xea002740, 0xff000000, 0x00140718 },
+ { 0xea000940, 0xff000000, 0x00140718 },
+ { 0xea000b40, 0xff000000, 0x00140718 },
+ { 0xea002544, 0xff000000, 0x0014091b },
+ { 0xea002744, 0xff000000, 0x0014091b },
+ { 0xea000944, 0xff000000, 0x0014091b },
+ { 0xea000b44, 0xff000000, 0x0014091b },
+ { 0xea002548, 0xff000000, 0x00140918 },
+ { 0xea002748, 0xff000000, 0x00140918 },
+ { 0xea000948, 0xff000000, 0x00140918 },
+ { 0xea000b48, 0xff000000, 0x00140918 },
+ { 0xea00257c, 0xfcffffff, 0x03000000 },
+ { 0xea00277c, 0xfcffffff, 0x03000000 },
+ { 0xea00097c, 0xfcffffff, 0x03000000 },
+ { 0xea000b7c, 0xfcffffff, 0x03000000 },
+ { 0xea002578, 0xffffe0ff, 0x00001800 },
+ { 0xea002778, 0xffffe0ff, 0x00001800 },
+ { 0xea000978, 0xffffe0ff, 0x00001800 },
+ { 0xea000b78, 0xffffe0ff, 0x00001800 },
+};
+static const iobp_upd_st * const iobp0_ref[] = {
+ iobp0_0, iobp0_1, iobp0_1, iobp0_1 };
+static const uint8_t iobp0_sz[] = { 82, 69, 69, 69 };
+
+static const iobp_upd_st iobp1_0[] = {
+ { 0xea0020a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0022a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0020ac, 0xffffffcf, 0x00000020 },
+ { 0xea0022ac, 0xffffffcf, 0x00000020 },
+ { 0xea002088, 0xffff00ff, 0x00008000 },
+ { 0xea002288, 0xffff00ff, 0x00008000 },
+ { 0xea002094, 0x7fffffff, 0x80000000 },
+ { 0xea002294, 0x7fffffff, 0x80000000 },
+ { 0xea002140, 0xff000000, 0x00180918 },
+ { 0xea002340, 0xff000000, 0x00180918 },
+ { 0xea002144, 0xff000000, 0x00140918 },
+ { 0xea002344, 0xff000000, 0x00140918 },
+ { 0xea002148, 0xff000000, 0x00140918 },
+ { 0xea002348, 0xff000000, 0x00140918 },
+ { 0xea002150, 0xc0ffffff, 0x02000000 },
+ { 0xea002350, 0xc0ffffff, 0x02000000 },
+ { 0xea002154, 0xffc0ffff, 0x00020000 },
+ { 0xea002354, 0xffc0ffff, 0x00020000 },
+ { 0xea002010, 0x0000ffff, 0x0d510000 },
+ { 0xea002210, 0x0000ffff, 0x0d510000 },
+ { 0xea002000, 0x30fcffff, 0xcf030000 },
+ { 0xea002200, 0x30fcffff, 0xcf030000 },
+ { 0xea002008, 0x00039ef7, 0xea6c6108 },
+ { 0xea002208, 0x00039ef7, 0xea6c6108 },
+ { 0xea002018, 0x0000fcff, 0x38250100 },
+ { 0xea002218, 0x0000fcff, 0x38250100 },
+ { 0xea002028, 0x00e0ffff, 0x580e0000 },
+ { 0xea002228, 0x00e0ffff, 0x580e0000 },
+ { 0xea002038, 0xfffffff0, 0x0000000d },
+ { 0xea002238, 0xfffffff0, 0x0000000d },
+ { 0xea002040, 0xe0ffffff, 0x01000000 },
+ { 0xea002240, 0xe0ffffff, 0x01000000 },
+ { 0xea00202c, 0xfffdf8ff, 0x00020100 },
+ { 0xea00222c, 0xfffdf8ff, 0x00020100 },
+ { 0xea00201c, 0xffff83ff, 0x00002400 },
+ { 0xea00221c, 0xffff83ff, 0x00002400 },
+ { 0xea002100, 0xffff1fc1, 0x00004008 },
+ { 0xea002300, 0xffff1fc1, 0x00004008 },
+ { 0xea00217c, 0xfff0c0ff, 0x00003f00 },
+ { 0xea00237c, 0xfff0c0ff, 0x00003f00 },
+};
+static const iobp_upd_st iobp1_1[] = {
+ { 0xea002008, 0x00039ef7, 0xea6c6108 },
+ { 0xea002208, 0x00039ef7, 0xea6c6108 },
+ { 0xea002038, 0xfffffff0, 0x0000000d },
+ { 0xea002238, 0xfffffff0, 0x0000000d },
+ { 0xea00202c, 0xfffdf0ff, 0x00020100 },
+ { 0xea00222c, 0xfffdf0ff, 0x00020100 },
+ { 0xea002040, 0xe0ffffff, 0x01000000 },
+ { 0xea002240, 0xe0ffffff, 0x01000000 },
+ { 0xea002010, 0x0000ffff, 0x0d510000 },
+ { 0xea002210, 0x0000ffff, 0x0d510000 },
+ { 0xea002018, 0x0000fcff, 0x38250100 },
+ { 0xea002218, 0x0000fcff, 0x38250100 },
+ { 0xea002000, 0x30fcffff, 0xcf030000 },
+ { 0xea002200, 0x30fcffff, 0xcf030000 },
+ { 0xea002028, 0x00e0ffff, 0x580e0000 },
+ { 0xea002228, 0x00e0ffff, 0x580e0000 },
+ { 0xea00201c, 0xffff83ff, 0x00002400 },
+ { 0xea00221c, 0xffff83ff, 0x00002400 },
+ { 0xea00208c, 0xff00ffff, 0x00800000 },
+ { 0xea00228c, 0xff00ffff, 0x00800000 },
+ { 0xea0020a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0022a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0020ac, 0xffffffcf, 0x00000020 },
+ { 0xea0022ac, 0xffffffcf, 0x00000020 },
+ { 0xea002140, 0xff000000, 0x00140718 },
+ { 0xea002340, 0xff000000, 0x00140718 },
+ { 0xea002144, 0xff000000, 0x0014091b },
+ { 0xea002344, 0xff000000, 0x0014091b },
+ { 0xea002148, 0xff000000, 0x00140918 },
+ { 0xea002348, 0xff000000, 0x00140918 },
+ { 0xea00217c, 0xfcffffff, 0x03000000 },
+ { 0xea00237c, 0xfcffffff, 0x03000000 },
+ { 0xea002178, 0xffffe0ff, 0x00001800 },
+ { 0xea002378, 0xffffe0ff, 0x00001800 },
+};
+static const iobp_upd_st iobp1_2[] = {
+ { 0xea008008, 0x00ffffff, 0x1c000000 },
+ { 0xea002008, 0x00039ef7, 0xea6c6108 },
+ { 0xea002208, 0x00039ef7, 0xea6c6108 },
+ { 0xea002408, 0x00039ef7, 0xea6c6108 },
+ { 0xea002608, 0x00039ef7, 0xea6c6108 },
+ { 0xea002038, 0xfffffff0, 0x0000000d },
+ { 0xea002238, 0xfffffff0, 0x0000000d },
+ { 0xea002438, 0xfffffff0, 0x0000000d },
+ { 0xea002638, 0xfffffff0, 0x0000000d },
+ { 0xea00202c, 0xfffdf0ff, 0x00020100 },
+ { 0xea00222c, 0xfffdf0ff, 0x00020100 },
+ { 0xea00242c, 0xfffdf0ff, 0x00020100 },
+ { 0xea00262c, 0xfffdf0ff, 0x00020100 },
+ { 0xea002040, 0xe0ffffff, 0x01000000 },
+ { 0xea002240, 0xe0ffffff, 0x01000000 },
+ { 0xea002440, 0xe0ffffff, 0x01000000 },
+ { 0xea002640, 0xe0ffffff, 0x01000000 },
+ { 0xea002010, 0x0000ffff, 0x55510000 },
+ { 0xea002210, 0x0000ffff, 0x55510000 },
+ { 0xea002410, 0x0000ffff, 0x55510000 },
+ { 0xea002610, 0x0000ffff, 0x55510000 },
+ { 0xea002150, 0xc0ffffff, 0x02000000 },
+ { 0xea002350, 0xc0ffffff, 0x02000000 },
+ { 0xea002550, 0xc0ffffff, 0x02000000 },
+ { 0xea002750, 0xc0ffffff, 0x02000000 },
+ { 0xea002154, 0xffc0ffff, 0x00020000 },
+ { 0xea002354, 0xffc0ffff, 0x00020000 },
+ { 0xea002554, 0xffc0ffff, 0x00020000 },
+ { 0xea002754, 0xffc0ffff, 0x00020000 },
+ { 0xea002140, 0xff000000, 0x00140718 },
+ { 0xea002340, 0xff000000, 0x00140718 },
+ { 0xea002540, 0xff000000, 0x00140718 },
+ { 0xea002740, 0xff000000, 0x00140718 },
+ { 0xea002144, 0xff000000, 0x0014091b },
+ { 0xea002344, 0xff000000, 0x0014091b },
+ { 0xea002544, 0xff000000, 0x0014091b },
+ { 0xea002744, 0xff000000, 0x0014091b },
+ { 0xea002148, 0xff000000, 0x00140918 },
+ { 0xea002348, 0xff000000, 0x00140918 },
+ { 0xea002548, 0xff000000, 0x00140918 },
+ { 0xea002748, 0xff000000, 0x00140918 },
+ { 0xea00217c, 0xfcffffff, 0x03000000 },
+ { 0xea00237c, 0xfcffffff, 0x03000000 },
+ { 0xea00257c, 0xfcffffff, 0x03000000 },
+ { 0xea00277c, 0xfcffffff, 0x03000000 },
+ { 0xea00208c, 0xff00ffff, 0x00800000 },
+ { 0xea00228c, 0xff00ffff, 0x00800000 },
+ { 0xea00248c, 0xff00ffff, 0x00800000 },
+ { 0xea00268c, 0xff00ffff, 0x00800000 },
+ { 0xea0020a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0022a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0024a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0026a4, 0xffcf00ff, 0x00308300 },
+ { 0xea0020ac, 0xffffffcf, 0x00000020 },
+ { 0xea0022ac, 0xffffffcf, 0x00000020 },
+ { 0xea0024ac, 0xffffffcf, 0x00000020 },
+ { 0xea0026ac, 0xffffffcf, 0x00000020 },
+ { 0xea002018, 0x0000fcff, 0x38250100 },
+ { 0xea002218, 0x0000fcff, 0x38250100 },
+ { 0xea002418, 0x0000fcff, 0x38250100 },
+ { 0xea002618, 0x0000fcff, 0x38250100 },
+ { 0xea002000, 0x30fcffff, 0xcf030000 },
+ { 0xea002200, 0x30fcffff, 0xcf030000 },
+ { 0xea002400, 0x30fcffff, 0xcf030000 },
+ { 0xea002600, 0x30fcffff, 0xcf030000 },
+ { 0xea002028, 0x00e0ffff, 0x580e0000 },
+ { 0xea002228, 0x00e0ffff, 0x580e0000 },
+ { 0xea002428, 0x00e0ffff, 0x580e0000 },
+ { 0xea002628, 0x00e0ffff, 0x580e0000 },
+ { 0xea00201c, 0xffff83ff, 0x00002400 },
+ { 0xea00221c, 0xffff83ff, 0x00002400 },
+ { 0xea00241c, 0xffff83ff, 0x00002400 },
+ { 0xea00261c, 0xffff83ff, 0x00002400 },
+ { 0xea002178, 0xffffe0ff, 0x00001800 },
+ { 0xea002378, 0xffffe0ff, 0x00001800 },
+ { 0xea002578, 0xffffe0ff, 0x00001800 },
+ { 0xea002778, 0xffffe0ff, 0x00001800 },
+};
+static const iobp_upd_st * const iobp1_ref[] = {
+ iobp1_0,
+ iobp1_1, iobp1_1, iobp1_1,
+ iobp1_2, iobp1_2, iobp1_2 };
+static const uint8_t iobp1_sz[] = {
+ 40, 34, 34, 34, 77, 77, 77 };
+
+static const iobp_upd_st iobp2_0[] = {
+ { 0xea002490, 0xffff0000, 0x00004c5a },
+ { 0xea002690, 0xffff0000, 0x00004c5a },
+ { 0xea000890, 0xffff0000, 0x00004c5a },
+ { 0xea000a90, 0xffff0000, 0x00004c5a },
+ { 0xea00248c, 0xff00ffff, 0x00800000 },
+ { 0xea00268c, 0xff00ffff, 0x00800000 },
+ { 0xea00088c, 0xff00ffff, 0x00800000 },
+ { 0xea000a8c, 0xff00ffff, 0x00800000 },
+};
+static const iobp_upd_st iobp2_1[] = {
+ { 0xea002550, 0xc0ffffff, 0x02000000 },
+ { 0xea002750, 0xc0ffffff, 0x02000000 },
+ { 0xea000950, 0xc0ffffff, 0x02000000 },
+ { 0xea000b50, 0xc0ffffff, 0x02000000 },
+ { 0xea002554, 0xffc0ffff, 0x00020000 },
+ { 0xea002754, 0xffc0ffff, 0x00020000 },
+ { 0xea000954, 0xffc0ffff, 0x00020000 },
+ { 0xea000b54, 0xffc0ffff, 0x00020000 },
+ { 0xea002490, 0xffff0000, 0x00004c5a },
+ { 0xea002690, 0xffff0000, 0x00004c5a },
+ { 0xea000890, 0xffff0000, 0x00004c5a },
+ { 0xea000a90, 0xffff0000, 0x00004c5a },
+};
+static const iobp_upd_st * const iobp2_ref[] = {
+ iobp2_0, iobp2_1, iobp2_1, iobp2_1 };
+static const uint8_t iobp2_sz[] = { 8, 12, 12, 12 };
+
+static const iobp_upd_st iobp3_0[] = {
+ { 0xea002090, 0xffff0000, 0x00004c5a },
+ { 0xea002290, 0xffff0000, 0x00004c5a },
+ { 0xea00208c, 0xff00ffff, 0x00800000 },
+ { 0xea00228c, 0xff00ffff, 0x00800000 },
+};
+static const iobp_upd_st iobp3_1[] = {
+ { 0xea002150, 0xc0ffffff, 0x02000000 },
+ { 0xea002350, 0xc0ffffff, 0x02000000 },
+ { 0xea002154, 0xffc0ffff, 0x00020000 },
+ { 0xea002354, 0xffc0ffff, 0x00020000 },
+ { 0xea002090, 0xffff0000, 0x00004c5a },
+ { 0xea002290, 0xffff0000, 0x00004c5a },
+};
+static const iobp_upd_st iobp3_2[] = {
+ { 0xea002090, 0xffff0000, 0x00004c5a },
+ { 0xea002290, 0xffff0000, 0x00004c5a },
+ { 0xea002490, 0xffff0000, 0x00004c5a },
+ { 0xea002690, 0xffff0000, 0x00004c5a },
+};
+static const iobp_upd_st * const iobp3_ref[] = {
+ iobp3_0,
+ iobp3_1, iobp3_1, iobp3_1,
+ iobp3_2, iobp3_2, iobp3_2 };
+static const uint8_t iobp3_sz[] = { 4, 6, 6, 6, 4, 4, 4 };
+
+static const iobp_upd_st iobp4_0[] = {
+ { 0xea002490, 0xffff0000, 0x00003e67 },
+ { 0xea002690, 0xffff0000, 0x00003e67 },
+ { 0xea000890, 0xffff0000, 0x00003e67 },
+ { 0xea000a90, 0xffff0000, 0x00003e67 },
+ { 0xea00248c, 0xff00ffff, 0x00800000 },
+ { 0xea00268c, 0xff00ffff, 0x00800000 },
+ { 0xea00088c, 0xff00ffff, 0x00800000 },
+ { 0xea000a8c, 0xff00ffff, 0x00800000 },
+};
+static const iobp_upd_st iobp4_1[] = {
+ { 0xea002550, 0xc0ffffff, 0x02000000 },
+ { 0xea002750, 0xc0ffffff, 0x02000000 },
+ { 0xea000950, 0xc0ffffff, 0x02000000 },
+ { 0xea000b50, 0xc0ffffff, 0x02000000 },
+ { 0xea002554, 0xffc0ffff, 0x00020000 },
+ { 0xea002754, 0xffc0ffff, 0x00020000 },
+ { 0xea000954, 0xffc0ffff, 0x00020000 },
+ { 0xea000b54, 0xffc0ffff, 0x00020000 },
+ { 0xea002490, 0xffff0000, 0x00003e67 },
+ { 0xea002690, 0xffff0000, 0x00003e67 },
+ { 0xea000890, 0xffff0000, 0x00003e67 },
+ { 0xea000a90, 0xffff0000, 0x00003e67 },
+};
+static const iobp_upd_st * const iobp4_ref[] = {
+ iobp4_0, iobp4_1, iobp4_1, iobp4_1 };
+static const uint8_t iobp4_sz[] = { 8, 12, 12, 12 };
+
+static const iobp_upd_st iobp5_0[] = {
+ { 0xea002090, 0xffff0000, 0x00003e67 },
+ { 0xea002290, 0xffff0000, 0x00003e67 },
+ { 0xea00208c, 0xff00ffff, 0x00800000 },
+ { 0xea00228c, 0xff00ffff, 0x00800000 },
+};
+static const iobp_upd_st iobp5_1[] = {
+ { 0xea002150, 0xc0ffffff, 0x02000000 },
+ { 0xea002350, 0xc0ffffff, 0x02000000 },
+ { 0xea002154, 0xffc0ffff, 0x00020000 },
+ { 0xea002354, 0xffc0ffff, 0x00020000 },
+ { 0xea002090, 0xffff0000, 0x00003e67 },
+ { 0xea002290, 0xffff0000, 0x00003e67 },
+};
+static const iobp_upd_st iobp5_2[] = {
+ { 0xea002090, 0xffff0000, 0x00003e67 },
+ { 0xea002290, 0xffff0000, 0x00003e67 },
+ { 0xea002490, 0xffff0000, 0x00003e67 },
+ { 0xea002690, 0xffff0000, 0x00003e67 },
+};
+static const iobp_upd_st * const iobp5_ref[] = {
+ iobp5_0,
+ iobp5_1, iobp5_1, iobp5_1,
+ iobp5_2, iobp5_2, iobp5_2 };
+static const uint8_t iobp5_sz[] = {
+ 4,
+ 6, 6, 6,
+ 4, 4, 4 };