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@amd.com Acked-by: Ronald G. Minnich rminnich@gmail.com Acked-by: Uwe Hermann uwe@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); } }