[LinuxBIOS] [Patch] AMD cs5536 uart disable

ron minnich rminnich at gmail.com
Thu May 31 16:14:00 CEST 2007


Acked-by: Ronald G. Minnich <rminnich at gmail.com>

On 5/30/07, Marc Jones <marc.jones at 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 at amd.com>
>
> --
> Marc Jones
> Senior Software Engineer
> (970) 226-9684 Office
> mailto:Marc.Jones at 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 at linuxbios.org
> http://www.linuxbios.org/mailman/listinfo/linuxbios
>




More information about the coreboot mailing list