Acked-by: Ronald G. Minnich rminnich@gmail.com
On 5/30/07, Marc Jones marc.jones@amd.com wrote:
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
-- Marc Jones Senior Software Engineer (970) 226-9684 Office mailto:Marc.Jones@amd.com http://www.amd.com/embeddedprocessors
Index: cs5536.c
--- cs5536.c (revision 2705) +++ cs5536.c (working copy) @@ -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); }
}
-- linuxbios mailing list linuxbios@linuxbios.org http://www.linuxbios.org/mailman/listinfo/linuxbios