Angel Pons has submitted this change. ( https://review.coreboot.org/c/coreboot/+/51861 )
Change subject: nb/intel/pineview: Correct COMP register write ......................................................................
nb/intel/pineview: Correct COMP register write
Reference code does an and-or operation with zero as or-value, reading and writing to the same address. The accessed register is 32-bit, and reference code programs bits 22, 21, 20, 16 to zero. However, coreboot code reads the value from bits 7..0 instead. Correct this.
Change-Id: I33bf268449c2f799321be81a02bbccff855ee1fe Signed-off-by: Angel Pons th3fanbus@gmail.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/51861 Reviewed-by: Nico Huber nico.h@gmx.de Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/northbridge/intel/pineview/raminit.c 1 file changed, 2 insertions(+), 2 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/src/northbridge/intel/pineview/raminit.c b/src/northbridge/intel/pineview/raminit.c index 7b9f410..391aa82 100644 --- a/src/northbridge/intel/pineview/raminit.c +++ b/src/northbridge/intel/pineview/raminit.c @@ -1401,8 +1401,8 @@ MCHBAR8_AND(XCOMPSDR0BNS, ~(1 << 5));
FOR_EACH_RCOMP_GROUP(i) { - /* FIXME: This should be an _AND_OR */ - MCHBAR8(C0RCOMPCTRLx(i) + 2) = MCHBAR8(C0RCOMPCTRLx(i)) & ~0x71; + /* POR values are zero */ + MCHBAR8_AND(C0RCOMPCTRLx(i) + 2, ~0x71); }
if ((MCHBAR32(COMPCTRL1) & (1 << 30)) == 0) {