u-boot/arch/arm/mach-exynos/Kconfig
Sam Protsenko 3d80ec5265 board: samsung: Add support for E850-96 board
Add support for WinLink E850-96 board [1]. It's based on Exynos850 SoC
and follows 96boards specification, so it's compatible with 96boards
mezzanine boards [2]. This patch enables next features:

  * Serial console
  * USI
  * PMU (muxing AP UART path)
  * Pinctrl
  * Clocks
  * Timer (ARMv8 architected)
  * Reset control

It's quite a minimal enablement. Features like MMC, USB and Ethernet
will be enabled later.

The rationale for config values is as follows:

  * TEXT_BASE = 0xf8800000

    That's where BL2 loads the U-Boot payload, so TEXT_BASE must be
    exactly this value. Overall the memory map is designed in a way to
    keep the bootloader in the upper 128 MiB area of RAM, which is
    0xf8000000..0xffffffff. That includes bootloader's code, stack,
    data, heap, MMU tables, etc. All the memory below that 128 MiB chunk
    can be used for storing boot images (0x80000000..0xf8000000).

  * CUSTOM_SYS_INIT_SP_ADDR = 0xf8c00000

    Just 4 MiB above the TEXT_BASE address, to leave enough space for
    U-Boot code and stack itself (grows downwards).

  * SYS_LOAD_ADDR = 0x80000000

    The beginning of RAM. That's where Linux kernel image must be
    loaded.

  * SYS_MALLOC_LEN = 0x81f000

    8 MiB for malloc() + ENV_SIZE (128 KiB)

  * SYS_MALLOC_F_LEN = 0x4000

    Increase malloc() pool size available before relocation from 8 KiB
    (default) to 16 KiB. Otherwise "alloc space exhausted" message
    appears in U-Boot log during board_init_f() stage. There are next
    reasons for doing so:

      1. Having "bootph-all" flags in some dts nodes leads to binding
         those during pre-relocation stage, and binding (DM) uses
         dynamic memory allocation
      2. clk-exynos850 driver uses CCF clocks, which in turn use dynamic
         memory allocation

Device tree file was imported from Linux kernel. All nodes and boot
phase flags added in exynos850-e850-96-u-boot.dtsi are only needed to
enable serial console:

  * oscclk -> cmu_top -> cmu_peri: generate UART/USI clocks
  * pinctrl_alive and uart1_pins: needed to mux UART pins
  * pmu_system_controller: configures AP UART path to uart1_pins
  * usi_uart: configures USI block to operate as a UART protocol
  * serial_0: enables serial console (UART)

[1] https://www.96boards.org/product/e850-96b/
[2] https://www.96boards.org/products/mezzanine/

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-01-24 11:23:20 +09:00

282 lines
5.2 KiB
Text

if ARCH_EXYNOS
config BOARD_COMMON
def_bool y
depends on !TARGET_SMDKV310 && !TARGET_ARNDALE && !TARGET_E850_96
config SPI_BOOTING
bool
config USB_BOOTING
bool
choice
prompt "EXYNOS architecture type select"
optional
config ARCH_EXYNOS4
bool "Exynos4 SoC family"
select BOARD_EARLY_INIT_F
select CPU_V7A
select BLK
select DM_MMC
help
Samsung Exynos4 SoC family are based on ARM Cortex-A9 CPU. There
are multiple SoCs in this family including Exynos4210, Exynos4412,
and Exynos4212.
config ARCH_EXYNOS5
bool "Exynos5 SoC family"
select BOARD_EARLY_INIT_F
select CPU_V7A
select SHA_HW_ACCEL
select SPI_BOOTING if EXYNOS5_DT
select USB_BOOTING
imply CMD_HASH
imply CRC32_VERIFY
imply HASH_VERIFY
imply KEYBOARD
imply USB_ETHER_ASIX
imply USB_ETHER_RTL8152
imply USB_ETHER_SMSC95XX
select BLK
select DM_MMC
help
Samsung Exynos5 SoC family are based on ARM Cortex-A15 CPU (and
Cortex-A7 CPU in big.LITTLE configuration). There are multiple SoCs
in this family including Exynos5250, Exynos5420 and Exynos5800.
config ARCH_EXYNOS7
bool "Exynos7 SoC family"
select ARM64
select BOARD_EARLY_INIT_F
select BLK
select DM_MMC
help
Samsung Exynos7 SoC family are based on ARM Cortex-A57 CPU or
Cortex-A53 CPU (and some in a big.LITTLE configuration). There are
multiple SoCs in this family including Exynos7420.
config ARCH_EXYNOS9
bool "Exynos9 SoC family"
select ARM64
select BLK
select DM_MMC
help
Samsung Exynos9 SoC family are based on ARMv8 Cortex CPU. There are
multiple SoCs in this family including Exynos850.
endchoice
if ARCH_EXYNOS4
config EXYNOS4210
bool
choice
prompt "EXYNOS4 board select"
config TARGET_SMDKV310
bool "Exynos4210 SMDKV310 board"
select EXYNOS4210
select OF_CONTROL
select SUPPORT_SPL
config TARGET_TRATS
select MISC_COMMON
bool "Exynos4210 Trats board"
config TARGET_S5PC210_UNIVERSAL
bool "EXYNOS4210 Universal C210 board"
select MISC_COMMON
config TARGET_ORIGEN
bool "Exynos4412 Origen board"
select EXYNOS4210
select SUPPORT_SPL
config TARGET_TRATS2
bool "Exynos4412 Trat2 board"
select MISC_COMMON
config TARGET_ODROID
bool "Exynos4412 Odroid board"
select MISC_COMMON
endchoice
endif
if ARCH_EXYNOS5
config EXYNOS5250
bool
config EXYNOS5420
bool
config EXYNOS5_DT
bool
config SPL_GPIO
default y
config SPL_LIBCOMMON_SUPPORT
default y
config SPL_LIBGENERIC_SUPPORT
default y
choice
prompt "EXYNOS5 board select"
config TARGET_ODROID_XU3
bool "Exynos5422 Odroid board"
select EXYNOS5_DT
select EXYNOS5420
select MISC_COMMON
select OF_CONTROL
config TARGET_ARNDALE
bool "Exynos5250 Arndale board"
select ARM_ERRATA_773022
select ARM_ERRATA_774769
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select EXYNOS5250
select OF_CONTROL
select SUPPORT_SPL
config TARGET_SMDK5250
bool "SMDK5250 board"
select EXYNOS5_DT
select EXYNOS5250
select OF_CONTROL
select SUPPORT_SPL
config TARGET_SNOW
bool "Snow board"
select EXYNOS5_DT
select EXYNOS5250
select OF_CONTROL
select SUPPORT_SPL
config TARGET_SPRING
bool "Spring board"
select EXYNOS5_DT
select EXYNOS5250
select OF_CONTROL
select SUPPORT_SPL
config TARGET_SMDK5420
bool "SMDK5420 board"
select EXYNOS5_DT
select EXYNOS5420
select OF_CONTROL
select SUPPORT_SPL
config TARGET_PEACH_PI
bool "Peach Pi board"
select EXYNOS5_DT
select EXYNOS5420
select OF_CONTROL
select SUPPORT_SPL
config TARGET_PEACH_PIT
bool "Peach Pit board"
select EXYNOS5_DT
select EXYNOS5420
select OF_CONTROL
select SUPPORT_SPL
endchoice
endif
if ARCH_EXYNOS7
choice
prompt "EXYNOS7 board select"
config TARGET_ESPRESSO7420
bool "ESPRESSO7420 board"
select ARM64
select ARMV8_MULTIENTRY
select CLK_EXYNOS
select OF_CONTROL
select PINCTRL
select PINCTRL_EXYNOS7420
select SUPPORT_SPL
config TARGET_A5Y17LTE
bool "Samsung SM-A520F board"
select ARM64
select CLK_EXYNOS
select OF_CONTROL
select PINCTRL
select PINCTRL_EXYNOS78x0
select SUPPORT_SPL
config TARGET_A7Y17LTE
bool "Samsung SM-A720F board"
select ARM64
select CLK_EXYNOS
select OF_CONTROL
select PINCTRL
select PINCTRL_EXYNOS78x0
select SUPPORT_SPL
config TARGET_A3Y17LTE
bool "Samsung SM-A320F board"
select ARM64
select CLK_EXYNOS
select OF_CONTROL
select PINCTRL
select PINCTRL_EXYNOS78x0
select SUPPORT_SPL
endchoice
endif
if ARCH_EXYNOS9
choice
prompt "EXYNOS9 board select"
config TARGET_E850_96
bool "WinLink E850-96 board"
select ARM64
select CLK_EXYNOS
select OF_CONTROL
select PINCTRL
select PINCTRL_EXYNOS850
endchoice
endif
config SYS_SOC
default "exynos"
config EXYNOS_ACE_SHA
bool "Advanced Crypto Engine SHA support"
depends on (ARCH_EXYNOS4 || ARCH_EXYNOS5) && (LIB_HW_RAND || SHA_HW_ACCEL)
default y if ARCH_EXYNOS5
config EXYNOS_TMU
bool "Exynos5 thermal management unit support"
depends on ARCH_EXYNOS5
default y
source "board/samsung/smdkv310/Kconfig"
source "board/samsung/trats/Kconfig"
source "board/samsung/universal_c210/Kconfig"
source "board/samsung/origen/Kconfig"
source "board/samsung/trats2/Kconfig"
source "board/samsung/odroid/Kconfig"
source "board/samsung/arndale/Kconfig"
source "board/samsung/smdk5250/Kconfig"
source "board/samsung/smdk5420/Kconfig"
source "board/samsung/espresso7420/Kconfig"
source "board/samsung/axy17lte/Kconfig"
source "board/samsung/e850-96/Kconfig"
endif