summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-01-02 11:38:38 +0800
committerIru Cai <mytbk920423@gmail.com>2019-11-17 15:10:46 +0800
commitbc959d55b740b1a40de68e7da5432e1b6fe341e2 (patch)
tree78a68b8f9917b000ee292e83504c044514ab91c8
parentf4252ae2939cc82181d5d29331fc9bf3e5a72b88 (diff)
downloadcoreboot-bc959d55b740b1a40de68e7da5432e1b6fe341e2.tar.xz
frag_usb_fffaf210
-rw-r--r--src/northbridge/intel/haswell/mrc_frags.c12
-rw-r--r--src/northbridge/intel/haswell/pei_usb.asm20
2 files changed, 18 insertions, 14 deletions
diff --git a/src/northbridge/intel/haswell/mrc_frags.c b/src/northbridge/intel/haswell/mrc_frags.c
index 26fc654d66..b79a356011 100644
--- a/src/northbridge/intel/haswell/mrc_frags.c
+++ b/src/northbridge/intel/haswell/mrc_frags.c
@@ -687,6 +687,18 @@ void frag_usb_fffaeb10(PEI_USB *upd, void *ebar)
}
}
+void frag_usb_fffaf210(void *ebx, u32 *esi, int count);
+void frag_usb_fffaf210(void *ebx, u32 *esi, int count)
+{
+ for (int i = 0; i < count; i++) {
+ void *addr = ebx + esi[i];
+ u32 tmp = read32(addr);
+ tmp &= 0x7ffffffd;
+ tmp |= 0x80000000;
+ write32(addr, tmp);
+ }
+}
+
/* from loc_fffaf684 to loc_fffaf75b */
void set_usb_overcurrent(PEI_USB *upd);
void set_usb_overcurrent(PEI_USB *upd)
diff --git a/src/northbridge/intel/haswell/pei_usb.asm b/src/northbridge/intel/haswell/pei_usb.asm
index 196c3b446b..4a64e26972 100644
--- a/src/northbridge/intel/haswell/pei_usb.asm
+++ b/src/northbridge/intel/haswell/pei_usb.asm
@@ -16,6 +16,7 @@ extern frag_usb_fffaeb10
extern set_usb_overcurrent
extern frag_usb_fffaf75b
extern frag_usb_fffaf7d8
+extern frag_usb_fffaf210
mrc_init_usb:
push ebp
@@ -268,22 +269,13 @@ test al, 0x20
jne short loc_fffaf226 ; jne 0xfffaf226
jmp near loc_fffaf9e7 ; jmp 0xfffaf9e7
-loc_fffaf210:
-mov ecx, dword [esi + edx*4]
-add ecx, ebx
-mov eax, dword [ecx]
-and eax, 0x7ffffffd
-or eax, 0x80000000
-mov dword [ecx], eax
-inc edx
-jmp short loc_fffaf228 ; jmp 0xfffaf228
-
loc_fffaf226:
-xor edx, edx
+push dword [ebp - 0x34]
+push esi
+push ebx
+call frag_usb_fffaf210
+add esp, 12
-loc_fffaf228:
-cmp edx, dword [ebp - 0x34]
-jne short loc_fffaf210 ; jne 0xfffaf210
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x2c], 0xa
lea eax, [esi + eax*4]