diff --git a/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch b/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch
index 4daa354..d1cc9d9 100644
--- a/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch
+++ b/meta-nicole/recipes-bsp/u-boot/files/0001-Add-system-reset-status-support.patch
@@ -1,4 +1,4 @@
-From cf39fde2c1cfb55aa756bfb551c4087ba2fd4b6c Mon Sep 17 00:00:00 2001
+From 1c5b450a068583f2407767451ef636d0661071da Mon Sep 17 00:00:00 2001
 From: Alexander Filippov <a.filippov@yadro.com>
 Date: Tue, 7 Apr 2020 16:45:41 +0300
 Subject: [PATCH] Add system reset status support
@@ -11,27 +11,17 @@
 for applications to query.
 
 Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
-
 ---
- arch/arm/include/asm/arch-aspeed/ast_g5_platform.h |  1 +
- arch/arm/include/asm/arch-aspeed/ast_scu.h         |  2 +-
- arch/arm/mach-aspeed/ast-scu.c                     |  6 +-
- board/aspeed/ast-g5/ast-g5.c                       | 98 ++++++++++++++++++++++
- 4 files changed, 105 insertions(+), 2 deletions(-)
+ arch/arm/include/asm/arch-aspeed/ast_scu.h  |   2 +-
+ arch/arm/include/asm/arch-aspeed/platform.h |   2 +
+ arch/arm/mach-aspeed/Makefile               |   1 +
+ arch/arm/mach-aspeed/ast-late-init.c        | 114 ++++++++++++++++++++
+ arch/arm/mach-aspeed/ast-scu.c              |   6 +-
+ 5 files changed, 123 insertions(+), 2 deletions(-)
+ create mode 100644 arch/arm/mach-aspeed/ast-late-init.c
 
-diff --git a/arch/arm/include/asm/arch-aspeed/ast_g5_platform.h b/arch/arm/include/asm/arch-aspeed/ast_g5_platform.h
-index 4210873..d2a4268cd 100644
---- a/arch/arm/include/asm/arch-aspeed/ast_g5_platform.h
-+++ b/arch/arm/include/asm/arch-aspeed/ast_g5_platform.h
-@@ -188,5 +188,6 @@
- #define AST_FORMATTER_MEM_SIZE		0xC00000 /* 12MB */
- #define AST_FORMATTER_MEM_BASE 		(AST_H264_MEM_BASE + AST_H264_MEM_SIZE)
- 
-+#define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */
- 
- #endif
 diff --git a/arch/arm/include/asm/arch-aspeed/ast_scu.h b/arch/arm/include/asm/arch-aspeed/ast_scu.h
-index dcbc673..b428f38 100644
+index dcbc6730d4..b428f386d6 100644
 --- a/arch/arm/include/asm/arch-aspeed/ast_scu.h
 +++ b/arch/arm/include/asm/arch-aspeed/ast_scu.h
 @@ -29,7 +29,7 @@
@@ -43,48 +33,43 @@
  extern void ast_scu_security_info(void);
  extern u32 ast_scu_revision_id(void);
  extern u32 ast_scu_get_vga_memsize(void);
-diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c
-index 12de9b8..5afd379 100644
---- a/arch/arm/mach-aspeed/ast-scu.c
-+++ b/arch/arm/mach-aspeed/ast-scu.c
-@@ -482,22 +482,26 @@ void ast_scu_security_info(void)
- 	}
- }
+diff --git a/arch/arm/include/asm/arch-aspeed/platform.h b/arch/arm/include/asm/arch-aspeed/platform.h
+index 1c02914fcb..b9207c492f 100644
+--- a/arch/arm/include/asm/arch-aspeed/platform.h
++++ b/arch/arm/include/asm/arch-aspeed/platform.h
+@@ -31,4 +31,6 @@
+ #err "No define for platform.h"
+ #endif
  
--void ast_scu_sys_rest_info(void)
-+u32 ast_scu_sys_rest_info(void)
- {
- 	u32 rest = ast_scu_read(AST_SCU_SYS_CTRL);
- 
- 	if (rest & SCU_SYS_EXT_RESET_FLAG) {
- 		printf("RST : External\n");
- 		ast_scu_write(SCU_SYS_EXT_RESET_FLAG, AST_SCU_SYS_CTRL);
-+		rest = SCU_SYS_EXT_RESET_FLAG;
- 	} else if (rest & SCU_SYS_WDT_RESET_FLAG) {
- 		printf("RST : Watchdog\n");
- 		ast_scu_write(SCU_SYS_WDT_RESET_FLAG, AST_SCU_SYS_CTRL);
-+		rest = SCU_SYS_WDT_RESET_FLAG;
- 	} else if (rest & SCU_SYS_PWR_RESET_FLAG) {
- 		printf("RST : Power On\n");
- 		ast_scu_write(SCU_SYS_PWR_RESET_FLAG, AST_SCU_SYS_CTRL);
-+		rest = SCU_SYS_PWR_RESET_FLAG;
- 	} else {
- 		printf("RST : CLK en\n");
- 	}
-+	return rest;
- }
- 
- u32 ast_scu_get_vga_memsize(void)
-diff --git a/board/aspeed/ast-g5/ast-g5.c b/board/aspeed/ast-g5/ast-g5.c
-index 12496ce..42d7496 100644
---- a/board/aspeed/ast-g5/ast-g5.c
-+++ b/board/aspeed/ast-g5/ast-g5.c
-@@ -105,3 +105,104 @@ void hw_watchdog_reset(void)
- 	writel(0x4755, AST_WDT2_BASE + 0x08);
- }
- #endif /* CONFIG_WATCHDOG */
++#define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */
 +
-+#ifdef CONFIG_BOARD_LATE_INIT
+ #endif
+diff --git a/arch/arm/mach-aspeed/Makefile b/arch/arm/mach-aspeed/Makefile
+index 7d8930beb9..4af2a7c96a 100644
+--- a/arch/arm/mach-aspeed/Makefile
++++ b/arch/arm/mach-aspeed/Makefile
+@@ -15,3 +15,4 @@ obj-y += timer.o reset.o cpuinfo.o ast-scu.o ast-ahbc.o ast-sdmc.o
+ obj-$(CONFIG_AST_SPI_NOR) += flash.o
+ obj-$(CONFIG_ARCH_AST2500) += platform_g5.o
+ obj-$(CONFIG_ARCH_AST2400) += platform_g4.o
++obj-$(CONFIG_BOARD_LATE_INIT) += ast-late-init.o
+diff --git a/arch/arm/mach-aspeed/ast-late-init.c b/arch/arm/mach-aspeed/ast-late-init.c
+new file mode 100644
+index 0000000000..5646c0e882
+--- /dev/null
++++ b/arch/arm/mach-aspeed/ast-late-init.c
+@@ -0,0 +1,114 @@
++/*
++ * SPDX-License-Identifier: Apache-2.0
++ * Copyright (C) 2020 YADRO.
++ */
++
++#include <common.h>
++
++#include <asm/arch/ast_scu.h>
++#include <asm/arch/regs-scu.h>
++#include <malloc.h>
++
 +static void update_bootargs_cmd(const char *key, const char *value)
 +{
 +    int buf_len;
@@ -158,7 +143,7 @@
 +    free(buf);
 +}
 +
-+int board_late_init(void)
++static void set_reset_reason(void)
 +{
 +    u32 reset_reason = ast_scu_sys_rest_info();
 +
@@ -180,7 +165,46 @@
 +        snprintf(value, sizeof(value) - 1, "0x%x", reset_reason);
 +        update_bootargs_cmd("resetreason", value);
 +    }
++}
++
++int board_late_init(void)
++{
++    set_reset_reason();
 +
 +    return 0;
 +}
-+#endif /* CONFIG_BOARD_LATE_INIT */
+diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c
+index 12de9b8036..5afd3793e3 100644
+--- a/arch/arm/mach-aspeed/ast-scu.c
++++ b/arch/arm/mach-aspeed/ast-scu.c
+@@ -482,22 +482,26 @@ void ast_scu_security_info(void)
+ 	}
+ }
+ 
+-void ast_scu_sys_rest_info(void)
++u32 ast_scu_sys_rest_info(void)
+ {
+ 	u32 rest = ast_scu_read(AST_SCU_SYS_CTRL);
+ 
+ 	if (rest & SCU_SYS_EXT_RESET_FLAG) {
+ 		printf("RST : External\n");
+ 		ast_scu_write(SCU_SYS_EXT_RESET_FLAG, AST_SCU_SYS_CTRL);
++		rest = SCU_SYS_EXT_RESET_FLAG;
+ 	} else if (rest & SCU_SYS_WDT_RESET_FLAG) {
+ 		printf("RST : Watchdog\n");
+ 		ast_scu_write(SCU_SYS_WDT_RESET_FLAG, AST_SCU_SYS_CTRL);
++		rest = SCU_SYS_WDT_RESET_FLAG;
+ 	} else if (rest & SCU_SYS_PWR_RESET_FLAG) {
+ 		printf("RST : Power On\n");
+ 		ast_scu_write(SCU_SYS_PWR_RESET_FLAG, AST_SCU_SYS_CTRL);
++		rest = SCU_SYS_PWR_RESET_FLAG;
+ 	} else {
+ 		printf("RST : CLK en\n");
+ 	}
++	return rest;
+ }
+ 
+ u32 ast_scu_get_vga_memsize(void)
+-- 
+2.25.4
+
diff --git a/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch b/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch
new file mode 100644
index 0000000..2e825c8
--- /dev/null
+++ b/meta-nicole/recipes-bsp/u-boot/files/0003-aspeed-add-gpio-support.patch
@@ -0,0 +1,512 @@
+From 9bb68d8820480519e8b331f7a8b866b8718ad7fd Mon Sep 17 00:00:00 2001
+From: Alexander Filippov <a.filippov@yadro.com>
+Date: Tue, 19 May 2020 18:55:41 +0300
+Subject: [PATCH] aspeed: add gpio support
+
+This is an initial support for the parallel GPIO pins directly connected
+to the AHB on the Aspeed 2400/2500.
+
+This brings the functions and a shell command to manipulate the GPIO
+state. The GPIO value reading and writing work in non interrupt mode
+only.
+
+Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
+---
+ arch/arm/include/asm/arch-aspeed/gpio.h     |  65 ++++
+ arch/arm/include/asm/arch-aspeed/platform.h |   1 +
+ drivers/gpio/Makefile                       |   2 +
+ drivers/gpio/aspeed_gpio.c                  | 386 ++++++++++++++++++++
+ 4 files changed, 454 insertions(+)
+ create mode 100644 arch/arm/include/asm/arch-aspeed/gpio.h
+ create mode 100644 drivers/gpio/aspeed_gpio.c
+
+diff --git a/arch/arm/include/asm/arch-aspeed/gpio.h b/arch/arm/include/asm/arch-aspeed/gpio.h
+new file mode 100644
+index 0000000000..c63987e917
+--- /dev/null
++++ b/arch/arm/include/asm/arch-aspeed/gpio.h
+@@ -0,0 +1,65 @@
++/*
++ * SPDX-License-Identifier: GPL-2.0+
++ * Copyright (C) 2020 YADRO.
++ */
++#ifndef _ASPEED_GPIO_H
++#define _ASPEED_GPIO_H
++
++#define ASPEED_GPIO_PORT_A 0
++#define ASPEED_GPIO_PORT_B 1
++#define ASPEED_GPIO_PORT_C 2
++#define ASPEED_GPIO_PORT_D 3
++#define ASPEED_GPIO_PORT_E 4
++#define ASPEED_GPIO_PORT_F 5
++#define ASPEED_GPIO_PORT_G 6
++#define ASPEED_GPIO_PORT_H 7
++#define ASPEED_GPIO_PORT_I 8
++#define ASPEED_GPIO_PORT_J 9
++#define ASPEED_GPIO_PORT_K 10
++#define ASPEED_GPIO_PORT_L 11
++#define ASPEED_GPIO_PORT_M 12
++#define ASPEED_GPIO_PORT_N 13
++#define ASPEED_GPIO_PORT_O 14
++#define ASPEED_GPIO_PORT_P 15
++#define ASPEED_GPIO_PORT_Q 16
++#define ASPEED_GPIO_PORT_R 17
++#define ASPEED_GPIO_PORT_S 18
++#define ASPEED_GPIO_PORT_T 19
++#define ASPEED_GPIO_PORT_U 20
++#define ASPEED_GPIO_PORT_V 21
++#define ASPEED_GPIO_PORT_W 22
++#define ASPEED_GPIO_PORT_X 23
++#define ASPEED_GPIO_PORT_Y 24
++#define ASPEED_GPIO_PORT_Z 25
++#define ASPEED_GPIO_PORT_AA 26
++#define ASPEED_GPIO_PORT_AB 27
++#define ASPEED_GPIO_PORT_AC 28
++
++#define ASPEED_GPIO_PORT_SHIFT 3
++#define ASPEED_GPIO_PIN_MASK 0x7
++#define ASPEED_GPIO(port, pin)                                                 \
++    ((ASPEED_GPIO_PORT_##port << ASPEED_GPIO_PORT_SHIFT) |                     \
++     (pin & ASPEED_GPIO_PIN_MASK))
++
++/* Direction values */
++#define ASPEED_GPIO_INPUT 0
++#define ASPEED_GPIO_OUTPUT 1
++
++/* Trigger values */
++#define ASPEED_GPIO_FALLING_EDGE 0
++#define ASPEED_GPIO_RISING_EDGE 1
++#define ASPEED_GPIO_LOW_LEVEL 2
++#define ASPEED_GPIO_HIGH_LEVEL 3
++#define ASPEED_GPIO_DUAL_EDGE 4
++
++/* Debounce values */
++#define ASPEED_GPIO_DEBOUNCE_NONE 0
++#define ASPEED_GPIO_DEBOUNCE_1 1
++#define ASPEED_GPIO_DEBOUNCE_2 2
++#define ASPEED_GPIO_DEBOUNCE_3 3
++
++#define gpio_status() gpio_info()
++
++extern void gpio_info(void);
++
++#endif /* #ifndef _ASPEED_GPIO_H */
+diff --git a/arch/arm/include/asm/arch-aspeed/platform.h b/arch/arm/include/asm/arch-aspeed/platform.h
+index b9207c492f..0a05a7a7a0 100644
+--- a/arch/arm/include/asm/arch-aspeed/platform.h
++++ b/arch/arm/include/asm/arch-aspeed/platform.h
+@@ -32,5 +32,6 @@
+ #endif
+ 
+ #define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */
++#define CONFIG_CMD_GPIO 1        /* Enable gpio command in shell */
+ 
+ #endif
+diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
+index 792d19186a..5f043e07ce 100644
+--- a/drivers/gpio/Makefile
++++ b/drivers/gpio/Makefile
+@@ -14,6 +14,8 @@ obj-$(CONFIG_DM_GPIO)		+= gpio-uclass.o
+ obj-$(CONFIG_DM_PCA953X)	+= pca953x_gpio.o
+ obj-$(CONFIG_DM_74X164)		+= 74x164_gpio.o
+ 
++obj-$(CONFIG_ARCH_AST2400)	+= aspeed_gpio.o
++obj-$(CONFIG_ARCH_AST2500)	+= aspeed_gpio.o
+ obj-$(CONFIG_AT91_GPIO)	+= at91_gpio.o
+ obj-$(CONFIG_ATMEL_PIO4)	+= atmel_pio4.o
+ obj-$(CONFIG_INTEL_ICH6_GPIO)	+= intel_ich6_gpio.o
+diff --git a/drivers/gpio/aspeed_gpio.c b/drivers/gpio/aspeed_gpio.c
+new file mode 100644
+index 0000000000..dc07f5a520
+--- /dev/null
++++ b/drivers/gpio/aspeed_gpio.c
+@@ -0,0 +1,386 @@
++/*
++ * SPDX-License-Identifier: GPL-2.0+
++ * Copyright (C) 2020 YADRO.
++ */
++
++#include <common.h>
++
++#include <asm/arch/gpio.h>
++#include <asm/arch/platform.h>
++#include <asm/io.h>
++#include <linux/ctype.h>
++
++typedef struct _ast_gpio_regs
++{
++    uint32_t base;     /* data and direction registers */
++    uint32_t intcfg;   /* interrupt config */
++    uint32_t debounce; /* debounce config */
++    uint32_t cmdsrc;   /* command source config */
++    uint32_t data;     /* data read register */
++} ast_gpio_regs_t;
++
++static ast_gpio_regs_t ast_gpio_regs[] = {
++    /* A/B/C/D */
++    {AST_GPIO_BASE + 0x0000, AST_GPIO_BASE + 0x0008, AST_GPIO_BASE + 0x0040,
++     AST_GPIO_BASE + 0x0060, AST_GPIO_BASE + 0x00C0},
++    /* E/F/G/H */
++    {AST_GPIO_BASE + 0x0020, AST_GPIO_BASE + 0x0028, AST_GPIO_BASE + 0x0048,
++     AST_GPIO_BASE + 0x0068, AST_GPIO_BASE + 0x00C4},
++    /* I/J/K/L */
++    {AST_GPIO_BASE + 0x0070, AST_GPIO_BASE + 0x0098, AST_GPIO_BASE + 0x00B0,
++     AST_GPIO_BASE + 0x0090, AST_GPIO_BASE + 0x00C8},
++    /* M/N/O/P */
++    {AST_GPIO_BASE + 0x0078, AST_GPIO_BASE + 0x00E8, AST_GPIO_BASE + 0x0100,
++     AST_GPIO_BASE + 0x00E0, AST_GPIO_BASE + 0x00CC},
++    /* Q/R/S/T */
++    {AST_GPIO_BASE + 0x0080, AST_GPIO_BASE + 0x0118, AST_GPIO_BASE + 0x0130,
++     AST_GPIO_BASE + 0x0110, AST_GPIO_BASE + 0x00D0},
++    /* U/V/W/X */
++    {AST_GPIO_BASE + 0x0088, AST_GPIO_BASE + 0x0148, AST_GPIO_BASE + 0x0160,
++     AST_GPIO_BASE + 0x0140, AST_GPIO_BASE + 0x00D4},
++    /* Y/Z/AA/AB */
++    {AST_GPIO_BASE + 0x01E0, AST_GPIO_BASE + 0x0178, AST_GPIO_BASE + 0x0190,
++     AST_GPIO_BASE + 0x0170, AST_GPIO_BASE + 0x00D8},
++    /* AC */
++    {AST_GPIO_BASE + 0x01E8, AST_GPIO_BASE + 0x01A8, AST_GPIO_BASE + 0x01C0,
++     AST_GPIO_BASE + 0x01A0, AST_GPIO_BASE + 0x00DC},
++};
++
++#define AST_GPIO_PINS_PER_PORT 8
++#define AST_GPIO_PORTS_PER_REGISTER 4
++
++#define AST_GPIO_PORT(gpio) (gpio >> ASPEED_GPIO_PORT_SHIFT)
++#define AST_GPIO_PIN(gpio) (gpio & ASPEED_GPIO_PIN_MASK)
++#define AST_GPIO_SHIFT(gpio)                                                   \
++    ((AST_GPIO_PORT(gpio) % AST_GPIO_PORTS_PER_REGISTER) *                     \
++         AST_GPIO_PINS_PER_PORT +                                              \
++     AST_GPIO_PIN(gpio))
++
++#define AST_GPIO_REG_INDEX(gpio)                                               \
++    (AST_GPIO_PORT(gpio) / AST_GPIO_PORTS_PER_REGISTER)
++
++/**
++ * @return Pointer to corresponding item from ast_gpio_regs table.
++ */
++#define AST_GPIO_REGS(gpio)                                                    \
++    ((AST_GPIO_REG_INDEX(gpio) < ARRAY_SIZE(ast_gpio_regs))                    \
++         ? (ast_gpio_regs + AST_GPIO_REG_INDEX(gpio))                          \
++         : NULL)
++
++/**
++ * @brief Set a corresponding bit in specified register.
++ *
++ * @param val - Required bit value
++ * @param base - Register address
++ * @param shift - Bit index.
++ */
++#define AST_GPIO_WRITE(val, base, shift)                                       \
++    writel(((val) ? readl(base) | (1 << (shift))                               \
++                  : readl(base) & ~(1 << (shift))),                            \
++           base)
++
++/**
++ * @brief Get value of corresponging bit from specified register.
++ *
++ * @param base - Register address
++ * @param shift - Bit index
++ *
++ * @return Bit value
++ */
++#define AST_GPIO_READ(base, shift) ((readl(base) >> (shift)) & 1)
++
++#define IS_VALID_GPIO(gpio)                                                    \
++    ((gpio) >= ASPEED_GPIO(A, 0) && (gpio) <= ASPEED_GPIO(AC, 7))
++
++#define AST_GPIO_DIRECTION 0x04
++#define AST_GPIO_INT_SENS0 0x04
++#define AST_GPIO_INT_SENS1 0x08
++#define AST_GPIO_INT_SENS2 0x0C
++#define AST_GPIO_INT_STATUS 0x10
++#define AST_GPIO_DEBOUNCE0 0x00
++#define AST_GPIO_DEBOUNCE1 0x04
++#define AST_GPIO_CMD_SRC0 0x00
++#define AST_GPIO_CMD_SRC1 0x04
++
++/**
++ * @brief Set a GPIO direction
++ *
++ * @param gpio      GPIO line
++ * @param direction GPIO direction (0 for input or 1 for output)
++ *
++ * @return 0 if ok, -1 on error
++ */
++static int ast_gpio_set_direction(unsigned gpio, unsigned direction)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (!regs)
++    {
++        printf("%s: Invalid GPIO!\n", __func__);
++        return -1;
++    }
++
++    AST_GPIO_WRITE(direction, regs->base + AST_GPIO_DIRECTION,
++                   AST_GPIO_SHIFT(gpio));
++    return 0;
++}
++
++/**
++ * The 6 following functions are generic u-boot gpio implementation.
++ * They are declared in `include/asm-generic/gpio.h`
++ */
++
++int gpio_request(unsigned gpio, const char *label)
++{
++    return (IS_VALID_GPIO(gpio) ? 0 : -1);
++}
++
++int gpio_free(unsigned gpio)
++{
++    return (IS_VALID_GPIO(gpio) ? 0 : -1);
++}
++
++int gpio_get_value(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (!regs)
++    {
++        printf("%s: Invalid GPIO!\n", __func__);
++        return -1;
++    }
++
++    return AST_GPIO_READ(regs->base, AST_GPIO_SHIFT(gpio));
++}
++
++int gpio_set_value(unsigned gpio, int value)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (!regs)
++    {
++        printf("%s: Invalid GPIO!\n", __func__);
++        return -1;
++    }
++
++    AST_GPIO_WRITE(value, regs->base, AST_GPIO_SHIFT(gpio));
++    return 0;
++}
++
++int gpio_direction_input(unsigned gpio)
++{
++    return ast_gpio_set_direction(gpio, ASPEED_GPIO_INPUT);
++}
++
++int gpio_direction_output(unsigned gpio, int value)
++{
++    int rc = ast_gpio_set_direction(gpio, ASPEED_GPIO_OUTPUT);
++    return (rc == 0 ? gpio_set_value(gpio, value) : rc);
++}
++
++/**
++ * @brief Convert a string to GPIO line. Used by `do_gpio()` from `cmd/gpio.c`
++ *
++ * @param str a GPIO name or line number
++ *
++ * @return GPIO line if ok, -1 on error
++ */
++int name_to_gpio(const char *str)
++{
++    int gpio = -1;
++
++    if (str)
++    {
++        if (isalpha(*str))
++        {
++            gpio = (toupper(*str) - 'A') << ASPEED_GPIO_PORT_SHIFT;
++
++            if (toupper(*str) == 'A' && toupper(*(str + 1)) >= 'A' &&
++                toupper(*(str + 1)) <= 'C')
++            {
++                str++;
++                gpio = (ASPEED_GPIO_PORT_AA + toupper(*str) - 'A')
++                       << ASPEED_GPIO_PORT_SHIFT;
++            }
++
++            str++;
++            if (*str >= '0' && *str <= '7' && !*(str + 1))
++            {
++                gpio += *str - '0';
++            }
++            else
++            {
++                gpio = -1;
++            }
++        }
++        else if (isdigit(*str))
++        {
++            gpio = simple_strtoul(str, NULL, 0);
++        }
++    }
++
++    return gpio;
++}
++
++/**
++ * @return A GPIO direction in human readable format.
++ */
++static const char *ast_gpio_direction(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (regs)
++    {
++        int direction = AST_GPIO_READ(regs->base + AST_GPIO_DIRECTION,
++                                      AST_GPIO_SHIFT(gpio));
++        switch (direction)
++        {
++            case ASPEED_GPIO_INPUT:
++                return "input";
++            case ASPEED_GPIO_OUTPUT:
++                return "output";
++            default:
++                break;
++        }
++    }
++    return "error";
++}
++
++/**
++ * @return An interrupt trigger settings in human readable format.
++ */
++static const char *ast_gpio_trigger(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (regs)
++    {
++        unsigned shift = AST_GPIO_SHIFT(gpio);
++        unsigned trigger =
++            (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS0, shift) << 0) |
++            (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS1, shift) << 1) |
++            (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS2, shift) << 2);
++
++        switch (trigger)
++        {
++            case ASPEED_GPIO_FALLING_EDGE:
++                return "fall";
++            case ASPEED_GPIO_RISING_EDGE:
++                return "rise";
++            case ASPEED_GPIO_LOW_LEVEL:
++                return "low ";
++            case ASPEED_GPIO_HIGH_LEVEL:
++                return "high";
++            default:
++                return "both";
++        }
++    }
++    return "error";
++}
++
++/**
++ * @return An interrupt status in human readable format.
++ */
++static const char *ast_gpio_int_status(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (regs)
++    {
++        unsigned shift = AST_GPIO_SHIFT(gpio);
++        if (AST_GPIO_READ(regs->intcfg, shift))
++        {
++            return AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_STATUS, shift)
++                       ? "pending"
++                       : "cleaned";
++        }
++        return "disabled";
++    }
++
++    return "error";
++}
++
++/**
++ * @return A debounce value in human readable format.
++ */
++static const char *ast_gpio_debounce(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (regs)
++    {
++        unsigned shift = AST_GPIO_SHIFT(gpio);
++        unsigned debounce =
++            (AST_GPIO_READ(regs->debounce + AST_GPIO_DEBOUNCE0, shift) << 0) |
++            (AST_GPIO_READ(regs->debounce + AST_GPIO_DEBOUNCE1, shift) << 1);
++        switch (debounce)
++        {
++            case ASPEED_GPIO_DEBOUNCE_NONE:
++                return "none";
++            case ASPEED_GPIO_DEBOUNCE_1:
++                return "timer1";
++            case ASPEED_GPIO_DEBOUNCE_2:
++                return "timer2";
++            case ASPEED_GPIO_DEBOUNCE_3:
++                return "timer3";
++            default:
++                break;
++        }
++    }
++
++    return "error";
++}
++
++/**
++ * @return A command source value in human readable format.
++ */
++static const char *ast_gpio_command_source(unsigned gpio)
++{
++    ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++    if (regs)
++    {
++        /* Used one bit per gpio port */
++        unsigned shift = AST_GPIO_SHIFT(gpio) - AST_GPIO_PIN(gpio);
++        unsigned cmdsrc =
++            (AST_GPIO_READ(regs->cmdsrc + AST_GPIO_CMD_SRC0, shift) << 0) |
++            (AST_GPIO_READ(regs->cmdsrc + AST_GPIO_CMD_SRC1, shift) << 1);
++
++        switch (cmdsrc)
++        {
++            /* The single place where these values are used is here. */
++            case 0x0:
++                return "ARM";
++            case 0x1:
++                return "LPC";
++            case 0x2:
++                return "CoCPU";
++            default:
++                return "Unknown";
++        }
++    }
++
++    return "error";
++}
++
++/**
++ * @brief Show all GPIO pins statuses. Used by `do_gpio()` in `cmd/gpio.c`
++ */
++void gpio_info(void)
++{
++    unsigned first = ASPEED_GPIO(A, 0);
++    unsigned last = ASPEED_GPIO(AC, 7);
++    for (unsigned gpio = first; gpio <= last; gpio++)
++    {
++        unsigned port = AST_GPIO_PORT(gpio);
++        unsigned pin = AST_GPIO_PIN(gpio);
++        unsigned shift = AST_GPIO_SHIFT(gpio);
++        ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
++        if (!regs)
++        {
++            printf("gpio %u is invalid!\n", gpio);
++            continue;
++        }
++
++        printf("gpio %c%c%c line %3d: %s, int: %s, %s, deb: %s, src: %s, "
++               "val: %d/%d\n",
++               (port >= ASPEED_GPIO_PORT_AA ? 'A' : ' '),
++               ('A' + port % ASPEED_GPIO_PORT_AA), ('0' + pin), gpio,
++               ast_gpio_direction(gpio), ast_gpio_trigger(gpio),
++               ast_gpio_int_status(gpio), ast_gpio_debounce(gpio),
++               ast_gpio_command_source(gpio), gpio_get_value(gpio),
++               AST_GPIO_READ(regs->data, shift));
++    }
++}
+-- 
+2.25.4
+
diff --git a/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch b/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch
new file mode 100644
index 0000000..423092b
--- /dev/null
+++ b/meta-nicole/recipes-bsp/u-boot/files/0004-aspeed-add-bmc-position-support.patch
@@ -0,0 +1,61 @@
+From 8098310be5887bd5e80830f105b63ed59dc10421 Mon Sep 17 00:00:00 2001
+From: Alexander Filippov <a.filippov@yadro.com>
+Date: Fri, 22 May 2020 11:45:31 +0300
+Subject: [PATCH] aspeed: add bmc position support
+
+There are two Nicoles in one chassis in the Tatlin hardware.
+The position is encoded by a pin, read by an MCU, and then translated
+to the BMC via GPIO pin GPIOE1.
+
+This reads the GPIO pin state and put is as a bootargs item.
+
+Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
+---
+ arch/arm/mach-aspeed/ast-late-init.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/arch/arm/mach-aspeed/ast-late-init.c b/arch/arm/mach-aspeed/ast-late-init.c
+index 5646c0e882..7d36dc0d8a 100644
+--- a/arch/arm/mach-aspeed/ast-late-init.c
++++ b/arch/arm/mach-aspeed/ast-late-init.c
+@@ -7,6 +7,7 @@
+ 
+ #include <asm/arch/ast_scu.h>
+ #include <asm/arch/regs-scu.h>
++#include <asm/gpio.h>
+ #include <malloc.h>
+ 
+ static void update_bootargs_cmd(const char *key, const char *value)
+@@ -106,9 +107,29 @@ static void set_reset_reason(void)
+     }
+ }
+ 
++static void set_bmc_position(void)
++{
++    unsigned gpio = ASPEED_GPIO(E, 1);
++
++    /* Init GPIO */
++    if (gpio_request(gpio, "bmcposition") == 0 &&
++        gpio_direction_input(gpio) == 0)
++    {
++        int position = gpio_get_value(gpio);
++        if (position >= 0)
++        {
++            printf("BMC Position: %d\n", position);
++            update_bootargs_cmd("bmcposition", position ? "1" : "0");
++        }
++    }
++
++    gpio_free(gpio);
++}
++
+ int board_late_init(void)
+ {
+     set_reset_reason();
++    set_bmc_position();
+ 
+     return 0;
+ }
+-- 
+2.25.4
+
diff --git a/meta-nicole/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend b/meta-nicole/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend
index bf7802a..1390922 100644
--- a/meta-nicole/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend
+++ b/meta-nicole/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend
@@ -3,4 +3,6 @@
 SRC_URI_append = " \
     file://0001-Add-system-reset-status-support.patch \
     file://0002-config-ast-common-set-fieldmode-to-true.patch \
+    file://0003-aspeed-add-gpio-support.patch \
+    file://0004-aspeed-add-bmc-position-support.patch \
     "
