Add support for the STM32F1-based stm3210e-eval boards from ST. UART, Flash, GPIO, and LEDs are supported.
Signed-off-by: Matt Porter <mpor...@konsulko.com> --- arch/arm/Kconfig | 5 ++ board/st/stm3210e-eval/Kconfig | 19 ++++++ board/st/stm3210e-eval/MAINTAINERS | 5 ++ board/st/stm3210e-eval/Makefile | 13 ++++ board/st/stm3210e-eval/stm3210e-eval.c | 85 ++++++++++++++++++++++++ configs/stm3210e-eval_defconfig | 3 + include/configs/stm3210e-eval.h | 117 +++++++++++++++++++++++++++++++++ 7 files changed, 247 insertions(+) create mode 100644 board/st/stm3210e-eval/Kconfig create mode 100644 board/st/stm3210e-eval/MAINTAINERS create mode 100644 board/st/stm3210e-eval/Makefile create mode 100644 board/st/stm3210e-eval/stm3210e-eval.c create mode 100644 configs/stm3210e-eval_defconfig create mode 100644 include/configs/stm3210e-eval.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4eb047c..bcf4e46 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -731,6 +731,10 @@ config ARCH_UNIPHIER select SPL select OF_CONTROL +config TARGET_STM3210E_EVAL + bool "Support STM3210E-EVAL board" + select CPU_V7M + config TARGET_STM32F429_DISCOVERY bool "Support STM32F429 Discovery" select CPU_V7M @@ -872,6 +876,7 @@ source "board/spear/spear600/Kconfig" source "board/spear/x600/Kconfig" source "board/st-ericsson/snowball/Kconfig" source "board/st-ericsson/u8500/Kconfig" +source "board/st/stm3210e-eval/Kconfig" source "board/st/stm32f429-discovery/Kconfig" source "board/st/stv0991/Kconfig" source "board/sunxi/Kconfig" diff --git a/board/st/stm3210e-eval/Kconfig b/board/st/stm3210e-eval/Kconfig new file mode 100644 index 0000000..49bc770 --- /dev/null +++ b/board/st/stm3210e-eval/Kconfig @@ -0,0 +1,19 @@ +if TARGET_STM3210E_EVAL + +config SYS_BOARD + string + default "stm3210e-eval" + +config SYS_VENDOR + string + default "st" + +config SYS_SOC + string + default "stm32f1" + +config SYS_CONFIG_NAME + string + default "stm3210e-eval" + +endif diff --git a/board/st/stm3210e-eval/MAINTAINERS b/board/st/stm3210e-eval/MAINTAINERS new file mode 100644 index 0000000..0f9f31b --- /dev/null +++ b/board/st/stm3210e-eval/MAINTAINERS @@ -0,0 +1,5 @@ +M: Matt Porter <mpor...@konsulko.com> +S: Maintained +F: board/st/stm3210e-eval/ +F: include/configs/stm3210e-eval.h +F: configs/stm3210e-eval_defconfig diff --git a/board/st/stm3210e-eval/Makefile b/board/st/stm3210e-eval/Makefile new file mode 100644 index 0000000..b018e08 --- /dev/null +++ b/board/st/stm3210e-eval/Makefile @@ -0,0 +1,13 @@ +# +# (C) Copyright 2000-2004 +# Wolfgang Denk, DENX Software Engineering, w...@denx.de. +# +# (C) Copyright 2015 +# Kamil Lulko, <re...@wp.pl> +# +# Copyright 2015 Konsulko Group, Matt Porter <mpor...@konsulko.com> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := stm3210e-eval.o diff --git a/board/st/stm3210e-eval/stm3210e-eval.c b/board/st/stm3210e-eval/stm3210e-eval.c new file mode 100644 index 0000000..a801983 --- /dev/null +++ b/board/st/stm3210e-eval/stm3210e-eval.c @@ -0,0 +1,85 @@ +/* + * (C) Copyright 2011, 2012, 2013 + * Yuri Tikhonov, Emcraft Systems, y...@emcraft.com + * Alexander Potashev, Emcraft Systems, aspotas...@emcraft.com + * Vladimir Khusainov, Emcraft Systems, v...@emcraft.com + * Pavel Boldin, Emcraft Systems, pabol...@emcraft.com + * + * (C) Copyright 2015 + * Kamil Lulko, <re...@wp.pl> + * + * Copyright 2015 Konsulko Group, Matt Porter <mpor...@konsulko.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/armv7m.h> +#include <asm/arch/stm32.h> +#include <asm/arch/gpio.h> + +DECLARE_GLOBAL_DATA_PTR; + +const struct stm32_gpio_ctl gpio_ctl_usart[] = { + /* TX */ + { + .mode = STM32_GPIO_MODE_OUT_50M, + .ocnf = STM32_GPIO_OCNF_AF_PP, + }, + /* RX */ + { + .mode = STM32_GPIO_MODE_IN, + .icnf = STM32_GPIO_ICNF_IN_FLT, + } +}; + +static const struct stm32_gpio_dsc usart1_gpio[] = { + {STM32_GPIO_PORT_A, STM32_GPIO_PIN_9}, /* TX */ + {STM32_GPIO_PORT_A, STM32_GPIO_PIN_10}, /* RX */ +}; + +int uart2_setup_gpio(void) +{ + int i; + int rv = 0; + + for (i = 0; i < ARRAY_SIZE(usart1_gpio); i++) { + rv = stm32_gpio_config(&usart1_gpio[i], &gpio_ctl_usart[i]); + if (rv) + goto out; + } + +out: + return rv; +} + +int dram_init(void) +{ + gd->ram_size = CONFIG_SYS_RAM_SIZE; + + return 0; +} + +u32 get_board_rev(void) +{ + return 0; +} + +int board_early_init_f(void) +{ + int res; + + res = uart2_setup_gpio(); + if (res) + return res; + + return 0; +} + +int board_init(void) +{ + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; + + return 0; +} diff --git a/configs/stm3210e-eval_defconfig b/configs/stm3210e-eval_defconfig new file mode 100644 index 0000000..ac3cad3 --- /dev/null +++ b/configs/stm3210e-eval_defconfig @@ -0,0 +1,3 @@ +CONFIG_ARM=y +CONFIG_TARGET_STM3210E_EVAL=y +CONFIG_CMD_BOOTM=n diff --git a/include/configs/stm3210e-eval.h b/include/configs/stm3210e-eval.h new file mode 100644 index 0000000..295c472 --- /dev/null +++ b/include/configs/stm3210e-eval.h @@ -0,0 +1,117 @@ +/* + * (C) Copyright 2015 + * Kamil Lulko, <re...@wp.pl> + * + * Copyright 2015 Konsulko Group, Matt Porter <mpor...@konsulko.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#define CONFIG_STM32F1 +#define CONFIG_STM3210E_EVAL +#define CONFIG_SYS_GENERIC_BOARD + +#define CONFIG_BOARD_EARLY_INIT_F + +#define CONFIG_SYS_MAX_FLASH_BANKS 2 +#define CONFIG_SYS_MAX_FLASH_SECT 256 +#define CONFIG_SYS_FLASH_BASE 0x08000000 + +#define CONFIG_SYS_INIT_SP_ADDR 0x20010000 +#define CONFIG_SYS_TEXT_BASE 0x08000000 + +#define CONFIG_SYS_ICACHE_OFF +#define CONFIG_SYS_DCACHE_OFF + +#define CONFIG_SYS_RAM_SIZE 0x00018000 +#define CONFIG_SYS_SDRAM_BASE 0x20000000 +#define CONFIG_SYS_LOAD_ADDR 0x20000000 +#define CONFIG_LOADADDR 0x20000000 + +#define CONFIG_ENV_IS_IN_FLASH +#define CONFIG_ENV_OFFSET (64 << 10) +#define CONFIG_ENV_SECT_SIZE (2 << 10) +#define CONFIG_ENV_SIZE (2 << 10) +#define CONFIG_ENV_MAX_ENTRIES 32 + +#define CONFIG_GPIO_LED +#define CONFIG_STATUS_LED +#define CONFIG_BOARD_SPECIFIC_LED +#define STATUS_LED_BOOT 0 +#define STATUS_LED_BIT 86 /* LD1 - Green */ +#define STATUS_LED_STATE STATUS_LED_OFF +#define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 10) +#define STATUS_LED_BIT1 87 /* LD2 - Orange */ +#define STATUS_LED_STATE1 STATUS_LED_OFF +#define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 10) +#define STATUS_LED_BIT2 88 /* LD3 - Red */ +#define STATUS_LED_STATE2 STATUS_LED_OFF +#define STATUS_LED_PERIOD2 (CONFIG_SYS_HZ / 10) +#define STATUS_LED_BIT3 89 /* LD4 - Blue */ +#define STATUS_LED_STATE3 STATUS_LED_OFF +#define STATUS_LED_PERIOD3 (CONFIG_SYS_HZ / 10) + +#define CONFIG_STM32_GPIO +#define CONFIG_STM32_SERIAL +#define CONFIG_STM32_USART1 + +#define CONFIG_STM32_HSE_HZ 8000000 + +#define CONFIG_SYS_HZ_CLOCK 1000000 /* Timer is clocked at 1MHz */ + +#define CONFIG_SYS_CBSIZE 256 +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \ + + sizeof(CONFIG_SYS_PROMPT) + 16) + +#define CONFIG_SYS_MAXARGS 16 + +#define CONFIG_SYS_MALLOC_LEN (2048) + +#define CONFIG_STACKSIZE (2048) + +#define CONFIG_BAUDRATE 115200 + +#define CONFIG_SYS_BARGSIZE 64 + +#define CONFIG_BOOTDELAY 3 +#define CONFIG_AUTOBOOT + +/* + * Command line configuration. + */ +#define CONFIG_SYS_LONGHELP +#undef CONFIG_CMD_BDI /* bdinfo */ +#undef CONFIG_CMD_BOOTD /* bootd */ +#define CONFIG_CMD_ECHO /* echo arguments */ +#define CONFIG_CMD_LOADB /* loadb */ +#define CONFIG_CMD_MEMORY /* md mm nm mw cp cmp crc base loop */ +#undef CONFIG_CMD_MISC /* Misc functions like sleep etc*/ +#undef CONFIG_CMD_RUN /* run command in env variable */ +#define CONFIG_CMD_SAVEENV /* saveenv */ +#define CONFIG_CRC32 + +#undef CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_PROMPT "STM3210E-EVAL> " +#undef CONFIG_AUTO_COMPLETE +#undef CONFIG_CMDLINE_EDITING + +#define CONFIG_CMD_FLASH +#undef CONFIG_CMD_MISC +#undef CONFIG_CMD_TIMER +#define CONFIG_CMD_LED + +#undef CONFIG_BOOTM_LINUX +#undef CONFIG_BOOTM_NETBSD +#undef CONFIG_BOOTM_PLAN9 +#undef CONFIG_BOOTM_RTEMS +#undef CONFIG_BOOTM_VXWORKS + +#undef CONFIG_GZIP +#undef CONFIG_ZLIB +#undef CONFIG_PARTITIONS + + +#endif /* __CONFIG_H */ -- 2.1.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot