[LinuxBIOS] r2706 - trunk/LinuxBIOSv2/src/southbridge/amd/cs5536

svn at openbios.org svn at openbios.org
Sun Jun 3 01:55:17 CEST 2007


Author: uwe
Date: 2007-06-03 01:55:17 +0200 (Sun, 03 Jun 2007)
New Revision: 2706

Modified:
   trunk/LinuxBIOSv2/src/southbridge/amd/cs5536/cs5536.c
Log:
The UART disable code was causing a hang and was worked around with a
return that skipped the disable code. This patch removes the return and
fixes the UART disable code.

The problem was that the disable code was ORing bits into the Legacy_IO
MSR causing issues with the LPC SIOs init code that would manifest as a
hang because the IO would not be decoded correctly. ANDing to clear the
bits fixes the issue.

Signed-off-by: Marc Jones <marc.jones at amd.com>
Acked-by: Ronald G. Minnich <rminnich at gmail.com>
Acked-by: Uwe Hermann <uwe at hermann-uwe.de>



Modified: trunk/LinuxBIOSv2/src/southbridge/amd/cs5536/cs5536.c
===================================================================
--- trunk/LinuxBIOSv2/src/southbridge/amd/cs5536/cs5536.c	2007-05-29 19:26:37 UTC (rev 2705)
+++ trunk/LinuxBIOSv2/src/southbridge/amd/cs5536/cs5536.c	2007-06-02 23:55:17 UTC (rev 2706)
@@ -316,9 +316,6 @@
 
 	} else {
 		/* Reset and disable COM1 */
-		printk_err("Not disabling COM1 due to a bug ...\n");
-		/* for now, don't do this! */
-		return;
 		msr = rdmsr(MDD_UART1_CONF);
 		msr.lo = 1;	// reset
 		wrmsr(MDD_UART1_CONF, msr);
@@ -327,7 +324,7 @@
 
 		/* Disable the IRQ */
 		msr = rdmsr(MDD_LEG_IO);
-		msr.lo |= ~(0xF << 16);
+		msr.lo &= ~(0xF << 16);
 		wrmsr(MDD_LEG_IO, msr);
 	}
 
@@ -391,7 +388,7 @@
 
 		/* Disable the IRQ */
 		msr = rdmsr(MDD_LEG_IO);
-		msr.lo |= ~(0xF << 20);
+		msr.lo &= ~(0xF << 20);
 		wrmsr(MDD_LEG_IO, msr);
 	}
 }





More information about the coreboot mailing list