[U-Boot] [PATCH v2 7/8] ARM: hikey: hi6220: Migrate over to DM_SERIAL and use UART3 by default.

Simon Glass sjg at chromium.org
Fri Sep 18 06:04:08 CEST 2015


Hi Peter,

On 10 September 2015 at 14:55, Peter Griffin <peter.griffin at linaro.org> wrote:
> Use DM for the pl01x serial driver on hikey. Also allow UART0 or
> UART3 to be chosen via Kconfig.
>
> By default we now output to UART3 as the latest version of ATF outputs
> to this UART. Also UART3 comes out on the LS connector, as opposed to
> UART0 which goes to a unpopulated header.
>
> As part of this change we also enable CONFIG_BOARD_EARLY_INIT_F and
> call the pinmux configuration code for the UART. Before we were
> relying on ATF having already configured the pin configuration.
>
> NB: Upstream Linux kernel doesn't yet support UART3, so serial console
> will still be output on UART0 when booting a upstream kernel.
>
> Signed-off-by: Peter Griffin <peter.griffin at linaro.org>
> ---
>  arch/arm/Kconfig              |  2 +-
>  board/hisilicon/hikey/Kconfig |  7 +++++++
>  board/hisilicon/hikey/hikey.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  configs/hikey_defconfig       |  1 +
>  include/configs/hikey.h       | 11 ++++-------
>  5 files changed, 56 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 9c2b3ab..5bb568d 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -650,6 +650,7 @@ config TARGET_HIKEY
>         select ARM64
>         select DM
>         select DM_GPIO
> +       select DM_SERIAL
>           help
>           Support for HiKey 96boards platform. It features a HI6220
>           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
> @@ -658,7 +659,6 @@ config TARGET_LS1021AQDS
>         bool "Support ls1021aqds"
>         select CPU_V7
>         select SUPPORT_SPL
> -
>  config TARGET_LS1021ATWR
>         bool "Support ls1021atwr"
>         select CPU_V7
> diff --git a/board/hisilicon/hikey/Kconfig b/board/hisilicon/hikey/Kconfig
> index f7f1055..9171502 100644
> --- a/board/hisilicon/hikey/Kconfig
> +++ b/board/hisilicon/hikey/Kconfig
> @@ -12,4 +12,11 @@ config SYS_SOC
>  config SYS_CONFIG_NAME
>         default "hikey"
>
> +config CONS_INDEX
> +       int "UART used for console"
> +       range 1 4
> +       default 4
> +       help
> +         The hi6220 SoC has 5 UARTs. For example to use UART0 enter 1 here.
> +

I was hoping to kill off this option but since you are not using
device tree yet I think it makes sense.

>  endif
> diff --git a/board/hisilicon/hikey/hikey.c b/board/hisilicon/hikey/hikey.c
> index 9948747..c4ae40b 100644
> --- a/board/hisilicon/hikey/hikey.c
> +++ b/board/hisilicon/hikey/hikey.c
> @@ -6,6 +6,7 @@
>   */
>  #include <common.h>
>  #include <dm.h>
> +#include <dm/platform_data/serial_pl01x.h>
>  #include <errno.h>
>  #include <malloc.h>
>  #include <netdev.h>
> @@ -69,6 +70,48 @@ U_BOOT_DEVICES(hi6220_gpios) = {
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> +static const struct pl01x_serial_platdata serial_platdata = {
> +#if CONFIG_CONS_INDEX == 1
> +       .base = HI6220_UART0_BASE,
> +#elif CONFIG_CONS_INDEX == 4
> +       .base = HI6220_UART3_BASE,
> +#else
> +#error "Unsuported console index value."
> +#endif
> +       .type = TYPE_PL011,
> +       .clock = 19200000
> +};
> +
> +U_BOOT_DEVICE(hikey_seriala) = {
> +       .name = "serial_pl01x",
> +       .platdata = &serial_platdata,
> +};
> +
> +#ifdef CONFIG_BOARD_EARLY_INIT_F
> +int board_uart_init(void)
> +{
> +       switch (CONFIG_CONS_INDEX) {
> +       case 1:
> +               hi6220_pinmux_config(PERIPH_ID_UART0);
> +               break;
> +       case 4:
> +               hi6220_pinmux_config(PERIPH_ID_UART3);
> +               break;
> +       default:
> +               debug("%s: Unsupported UART selected\n", __func__);
> +               return -1;
> +       }
> +
> +       return 0;
> +}
> +
> +int board_early_init_f(void)
> +{
> +       board_uart_init();
> +       return 0;
> +}
> +#endif
> +
>  struct peri_sc_periph_regs *peri_sc =
>         (struct peri_sc_periph_regs *)HI6220_PERI_BASE;
>
> diff --git a/configs/hikey_defconfig b/configs/hikey_defconfig
> index aa4fb0d..ee67c29 100644
> --- a/configs/hikey_defconfig
> +++ b/configs/hikey_defconfig
> @@ -2,4 +2,5 @@
>  CONFIG_ARM=y
>  CONFIG_TARGET_HIKEY=y
>  CONFIG_NET=y
> +CONFIG_SYS_MALLOC_F_LEN=0x2000
>  # CONFIG_CMD_IMLS is not set
> diff --git a/include/configs/hikey.h b/include/configs/hikey.h
> index ae8187a..b7c22e8 100644
> --- a/include/configs/hikey.h
> +++ b/include/configs/hikey.h
> @@ -31,6 +31,8 @@
>  /* Flat Device Tree Definitions */
>  #define CONFIG_OF_LIBFDT
>
> +#define CONFIG_BOARD_EARLY_INIT_F
> +
>  /* Physical Memory Map */
>
>  /* CONFIG_SYS_TEXT_BASE needs to align with where ATF loads bl33.bin */
> @@ -59,13 +61,8 @@
>  /* Size of malloc() pool */
>  #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + SZ_8M)
>
> -/* PL011 Serial Configuration */
> -#define CONFIG_PL011_SERIAL
> -
> -#define CONFIG_PL011_CLOCK             19200000
> -#define CONFIG_PL01x_PORTS             {(void *)0xF8015000}
> -#define CONFIG_CONS_INDEX              0
> -
> +/* Serial port PL010/PL011 through the device model */
> +#define CONFIG_PL01X_SERIAL
>  #define CONFIG_BAUDRATE                        115200
>
>  #define CONFIG_CMD_USB
> --
> 1.9.1
>

Regards,
Simon


More information about the U-Boot mailing list