u-boot/arch/arm/mach-exynos
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
..
include/mach arm: exynos: Include missing CPU header in gpio.h 2023-11-13 16:18:01 +09:00
clock.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
clock_init.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
clock_init_exynos4.c ARM: exynos: move SoC sources to mach-exynos 2015-08-17 13:06:52 +09:00
clock_init_exynos5.c exynos: Add proid_is_exynos542x() for common 542x 2018-12-13 16:36:30 -07:00
common_setup.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
config.mk SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dmc_common.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dmc_init_ddr3.c global: Move remaining CONFIG_SYS_SDRAM_* to CFG_SYS_SDRAM_* 2022-12-05 16:06:07 -05:00
dmc_init_exynos4.c arm: samsung: Migrate a number of symbols to Kconfig 2022-06-28 17:04:37 -04:00
exynos4_setup.h arm: Partial cleanup and audit usage of <config.h> 2023-12-21 08:54:37 -05:00
exynos5_setup.h arm: Partial cleanup and audit usage of <config.h> 2023-12-21 08:54:37 -05:00
Kconfig board: samsung: Add support for E850-96 board 2024-01-24 11:23:20 +09:00
lowlevel_init.c global: Migrate CONFIG_PHY_IRAM_BASE to CFG 2022-12-23 10:14:51 -05:00
Makefile arm: samsung: Migrate a number of symbols to Kconfig 2022-06-28 17:04:37 -04:00
mmu-arm64.c arm: exynos: Add Exynos850 SoC support 2024-01-24 11:23:20 +09:00
pinmux.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
power.c exynos: Add proid_is_exynos542x() for common 542x 2018-12-13 16:36:30 -07:00
sec_boot.S global: Migrate CONFIG_IRAM_TOP to CFG 2022-12-23 10:10:40 -05:00
soc.c exynos: Avoid duplicate reset_cpu with SYSRESET enabled 2023-11-13 16:19:04 +09:00
spl_boot.c global: Move remaining CONFIG_SYS_* to CFG_SYS_* 2022-12-05 16:06:08 -05:00
system.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
tzpc.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00