[U-Boot] [PATCH 3/3] x86: fsp: Disable legacy internal UART if necessary

Bin Meng bmeng.cn at gmail.com
Tue Jan 19 09:40:46 CET 2016


Hi Stefan,

On Mon, Jan 18, 2016 at 5:56 PM, Stefan Roese <sr at denx.de> wrote:
> The FSP enables the BayTrail internal UART (again). Boards that don't use
> this UART but an external one instead (e.g. provided by a Super IO chip)
> need to disable this internal UART. So that the one from the Super IO
> chip can be used. This patch adds the necessary code, to disable the
> internal legacy UART if the Winbond Super IO chip is enabled.
>
> Signed-off-by: Stefan Roese <sr at denx.de>
> Cc: Bin Meng <bmeng.cn at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> ---
>  arch/x86/lib/fsp/fsp_support.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/arch/x86/lib/fsp/fsp_support.c b/arch/x86/lib/fsp/fsp_support.c
> index 875c96a..8114b81 100644
> --- a/arch/x86/lib/fsp/fsp_support.c
> +++ b/arch/x86/lib/fsp/fsp_support.c
> @@ -89,6 +89,13 @@ struct fsp_header *__attribute__((optimize("O0"))) find_fsp_header(void)
>
>  void fsp_continue(u32 status, void *hob_list)
>  {
> +       /*
> +        * The FSP enables the BayTrail internal legacy UART (again).
> +        * Disable it again, so that the Winbond one can be used.
> +        */
> +       if (IS_ENABLED(CONFIG_WINBOND_W83627))
> +               disable_internal_uart();
> +

I would put this into the board_init_f(), right before enabling super
I/O legacy UART. This way we avoid changing the generic FSP codes.

>         post_code(POST_MRC);
>
>         assert(status == 0);
> @@ -114,6 +121,13 @@ void fsp_init(u32 stack_top, u32 boot_mode, void *nvs_buf)
>         setup_early_uart();
>  #endif
>
> +       /*
> +        * To use the Winbond legacy UART (COM1), the BayTrail internal
> +        * legacy UART needs to get disabled first.
> +        */
> +       if (IS_ENABLED(CONFIG_WINBOND_W83627))
> +               disable_internal_uart();
> +

I don't think this change is needed as fsp_init() will enable legacy
UART anyway.

>         fsp_hdr = find_fsp_header();
>         if (fsp_hdr == NULL) {
>                 /* No valid FSP info header was found */
> --

Regards,
Bin


More information about the U-Boot mailing list