mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
board: samsung: add support for Galaxy A series of 2017 (a5y17lte)
Samsung Galaxy A3, A5, A7 (2017) - middle class Samsung smartphones. U-boot can be used as chain-loaded bootloader to gain control on booting vanilla linux(and possibly others) kernels Signed-off-by: Dzmitry Sankouski <dsankouski@gmail.com> Cc: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
parent
69bde0410a
commit
3e2095e960
13 changed files with 316 additions and 0 deletions
|
@ -28,6 +28,9 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
|
||||||
exynos5800-peach-pi.dtb \
|
exynos5800-peach-pi.dtb \
|
||||||
exynos5422-odroidxu3.dtb
|
exynos5422-odroidxu3.dtb
|
||||||
dtb-$(CONFIG_EXYNOS7420) += exynos7420-espresso7420.dtb
|
dtb-$(CONFIG_EXYNOS7420) += exynos7420-espresso7420.dtb
|
||||||
|
dtb-$(CONFIG_TARGET_A5Y17LTE) += exynos78x0-axy17lte.dtb
|
||||||
|
dtb-$(CONFIG_TARGET_A3Y17LTE) += exynos78x0-axy17lte.dtb
|
||||||
|
dtb-$(CONFIG_TARGET_A7Y17LTE) += exynos78x0-axy17lte.dtb
|
||||||
|
|
||||||
dtb-$(CONFIG_ARCH_APPLE) += \
|
dtb-$(CONFIG_ARCH_APPLE) += \
|
||||||
t8103-j274.dtb \
|
t8103-j274.dtb \
|
||||||
|
|
29
arch/arm/dts/exynos78x0-axy17lte.dts
Normal file
29
arch/arm/dts/exynos78x0-axy17lte.dts
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Samsung Exynos78x0 SoC device tree source
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Dzmitry Sankouski (dsankouski@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "exynos78x0.dtsi"
|
||||||
|
/ {
|
||||||
|
compatible = "samsung,exynos78x0", "samsung,exynos7880", "samsung,exynos7870";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
console = &uart2;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = &uart2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpioi2c0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&fin_pll {
|
||||||
|
clock-frequency = <26000000>;
|
||||||
|
};
|
||||||
|
|
|
@ -151,6 +151,33 @@ config TARGET_ESPRESSO7420
|
||||||
select PINCTRL_EXYNOS7420
|
select PINCTRL_EXYNOS7420
|
||||||
select SUPPORT_SPL
|
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-A520F board"
|
||||||
|
select ARM64
|
||||||
|
select CLK_EXYNOS
|
||||||
|
select OF_CONTROL
|
||||||
|
select PINCTRL
|
||||||
|
select PINCTRL_EXYNOS78x0
|
||||||
|
select SUPPORT_SPL
|
||||||
|
|
||||||
|
config TARGET_A3Y17LTE
|
||||||
|
bool "Samsung SM-A520F board"
|
||||||
|
select ARM64
|
||||||
|
select CLK_EXYNOS
|
||||||
|
select OF_CONTROL
|
||||||
|
select PINCTRL
|
||||||
|
select PINCTRL_EXYNOS7880
|
||||||
|
select SUPPORT_SPL
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -167,6 +194,7 @@ source "board/samsung/arndale/Kconfig"
|
||||||
source "board/samsung/smdk5250/Kconfig"
|
source "board/samsung/smdk5250/Kconfig"
|
||||||
source "board/samsung/smdk5420/Kconfig"
|
source "board/samsung/smdk5420/Kconfig"
|
||||||
source "board/samsung/espresso7420/Kconfig"
|
source "board/samsung/espresso7420/Kconfig"
|
||||||
|
source "board/samsung/axy17lte/Kconfig"
|
||||||
|
|
||||||
config SPL_LDSCRIPT
|
config SPL_LDSCRIPT
|
||||||
default "board/samsung/common/exynos-uboot-spl.lds" if ARCH_EXYNOS5 || ARCH_EXYNOS4
|
default "board/samsung/common/exynos-uboot-spl.lds" if ARCH_EXYNOS5 || ARCH_EXYNOS4
|
||||||
|
|
58
board/samsung/axy17lte/Kconfig
Normal file
58
board/samsung/axy17lte/Kconfig
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
config SYS_CONFIG_NAME
|
||||||
|
string "Board configuration name"
|
||||||
|
default "exynos78x0-common.h"
|
||||||
|
help
|
||||||
|
This option contains information about board configuration name.
|
||||||
|
Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
|
||||||
|
will be used for board configuration.
|
||||||
|
|
||||||
|
if TARGET_A5Y17LTE
|
||||||
|
config SYS_BOARD
|
||||||
|
default "axy17lte"
|
||||||
|
help
|
||||||
|
a5y17lte is a production board for SM-A520F phone on Exynos7880 SoC.
|
||||||
|
|
||||||
|
config SYS_VENDOR
|
||||||
|
default "samsung"
|
||||||
|
|
||||||
|
config SYS_CONFIG_NAME
|
||||||
|
default "a5y17lte"
|
||||||
|
|
||||||
|
config EXYNOS7880
|
||||||
|
bool "Exynos 7880 SOC support"
|
||||||
|
default y
|
||||||
|
endif
|
||||||
|
|
||||||
|
if TARGET_A7Y17LTE
|
||||||
|
config SYS_BOARD
|
||||||
|
default "axy17lte"
|
||||||
|
help
|
||||||
|
a5y17lte is a production board for SM-A520F phone on Exynos7880 SoC.
|
||||||
|
|
||||||
|
config SYS_VENDOR
|
||||||
|
default "samsung"
|
||||||
|
|
||||||
|
config SYS_CONFIG_NAME
|
||||||
|
default "a5y17lte"
|
||||||
|
|
||||||
|
config EXYNOS7880
|
||||||
|
bool "Exynos 7880 SOC support"
|
||||||
|
default y
|
||||||
|
endif
|
||||||
|
|
||||||
|
if TARGET_A3Y17LTE
|
||||||
|
config SYS_BOARD
|
||||||
|
default "axy17lte"
|
||||||
|
help
|
||||||
|
a3y17lte is a production board for SM-A520F phone on Exynos7880 SoC.
|
||||||
|
|
||||||
|
config SYS_VENDOR
|
||||||
|
default "samsung"
|
||||||
|
|
||||||
|
config SYS_CONFIG_NAME
|
||||||
|
default "a3y17lte"
|
||||||
|
|
||||||
|
config EXYNOS7870
|
||||||
|
bool "Exynos 7870 SOC support"
|
||||||
|
default y
|
||||||
|
endif
|
8
board/samsung/axy17lte/MAINTAINERS
Normal file
8
board/samsung/axy17lte/MAINTAINERS
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Samsung A series 2017 phones Board
|
||||||
|
M: Dzmitry Sankouski <dsankouski@gmail.com>
|
||||||
|
S: Maintained
|
||||||
|
F: board/samsung/axy17lte/
|
||||||
|
F: include/configs/exynos78x0-common.h
|
||||||
|
F: configs/a3y17lte_defconfig
|
||||||
|
F: configs/a5y17lte_defconfig
|
||||||
|
F: configs/a7y17lte_defconfig
|
3
board/samsung/axy17lte/Makefile
Normal file
3
board/samsung/axy17lte/Makefile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#
|
||||||
|
obj-y += axy17lte.o
|
11
board/samsung/axy17lte/axy17lte.c
Normal file
11
board/samsung/axy17lte/axy17lte.c
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Samsung A5Y17 and A3Y17 LTE boards based on Exynos 7880 and Exynos 7870 SoCs
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
|
||||||
|
int exynos_init(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
24
configs/a3y17lte_defconfig
Normal file
24
configs/a3y17lte_defconfig
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_EXYNOS=y
|
||||||
|
CONFIG_ARCH_EXYNOS7=y
|
||||||
|
CONFIG_S5P=y
|
||||||
|
CONFIG_TARGET_A3Y17LTE=y
|
||||||
|
# This option is a number of 256MB DRAM banks, i.e. (ram size) / 256MB.
|
||||||
|
# Used in samsung common board dram_init function.
|
||||||
|
CONFIG_NR_DRAM_BANKS=8
|
||||||
|
CONFIG_SYS_CONFIG_NAME="exynos78x0-common"
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="exynos78x0-axy17lte"
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x40001000
|
||||||
|
CONFIG_SYS_LOAD_ADDR=0x40001000
|
||||||
|
CONFIG_HUSH_PARSER=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_BOARD_EARLY_INIT_F=n
|
||||||
|
CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
CONFIG_DISPLAY_CPUINFO=n
|
||||||
|
CONFIG_CMD_I2C=y
|
||||||
|
CONFIG_DM_I2C_GPIO=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS78x0=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS=y
|
||||||
|
# CONFIG_DEBUG_UART_S5P=y
|
||||||
|
# CONFIG_DEBUG_UART_BASE=0x13820000
|
24
configs/a5y17lte_defconfig
Normal file
24
configs/a5y17lte_defconfig
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_EXYNOS=y
|
||||||
|
CONFIG_ARCH_EXYNOS7=y
|
||||||
|
CONFIG_S5P=y
|
||||||
|
CONFIG_TARGET_A5Y17LTE=y
|
||||||
|
# This option is a number of 256MB DRAM banks, i.e. (ram size) / 256MB.
|
||||||
|
# Used in samsung common board dram_init function.
|
||||||
|
CONFIG_NR_DRAM_BANKS=12
|
||||||
|
CONFIG_SYS_CONFIG_NAME="exynos78x0-common"
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="exynos78x0-axy17lte"
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x40001000
|
||||||
|
CONFIG_SYS_LOAD_ADDR=0x40001000
|
||||||
|
CONFIG_HUSH_PARSER=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_BOARD_EARLY_INIT_F=n
|
||||||
|
CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
CONFIG_DISPLAY_CPUINFO=n
|
||||||
|
CONFIG_CMD_I2C=y
|
||||||
|
CONFIG_DM_I2C_GPIO=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS78x0=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS=y
|
||||||
|
# CONFIG_DEBUG_UART_S5P=y
|
||||||
|
# CONFIG_DEBUG_UART_BASE=0x13820000
|
24
configs/a7y17lte_defconfig
Normal file
24
configs/a7y17lte_defconfig
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_EXYNOS=y
|
||||||
|
CONFIG_ARCH_EXYNOS7=y
|
||||||
|
CONFIG_S5P=y
|
||||||
|
CONFIG_TARGET_A7Y17LTE=y
|
||||||
|
# This option is a number of 256MB DRAM banks, i.e. (ram size) / 256MB.
|
||||||
|
# Used in samsung common board dram_init function.
|
||||||
|
CONFIG_NR_DRAM_BANKS=12
|
||||||
|
CONFIG_SYS_CONFIG_NAME="exynos78x0-common"
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="exynos78x0-axy17lte"
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x40001000
|
||||||
|
CONFIG_SYS_LOAD_ADDR=0x40001000
|
||||||
|
CONFIG_HUSH_PARSER=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_BOARD_EARLY_INIT_F=n
|
||||||
|
CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
CONFIG_DISPLAY_CPUINFO=n
|
||||||
|
CONFIG_CMD_I2C=y
|
||||||
|
CONFIG_DM_I2C_GPIO=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS78x0=y
|
||||||
|
CONFIG_PINCTRL_EXYNOS=y
|
||||||
|
# CONFIG_DEBUG_UART_S5P=y
|
||||||
|
# CONFIG_DEBUG_UART_BASE=0x13820000
|
|
@ -23,6 +23,7 @@ Board-specific doc
|
||||||
openpiton/index
|
openpiton/index
|
||||||
qualcomm/index
|
qualcomm/index
|
||||||
rockchip/index
|
rockchip/index
|
||||||
|
samsung/index
|
||||||
siemens/index
|
siemens/index
|
||||||
sifive/index
|
sifive/index
|
||||||
sipeed/index
|
sipeed/index
|
||||||
|
|
94
doc/board/samsung/axy17lte.rst
Normal file
94
doc/board/samsung/axy17lte.rst
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
.. sectionauthor:: Dzmitry Sankouski <dsankouski@gmail.com>
|
||||||
|
|
||||||
|
Samsung 2017 A series phones
|
||||||
|
============================
|
||||||
|
|
||||||
|
About this
|
||||||
|
----------
|
||||||
|
This document describes the information about Samsung A(7/5/3) 2017 midrange
|
||||||
|
phones and u-boot usage steps.
|
||||||
|
|
||||||
|
U-Boot can be used as a chain-loaded bootloader to replace Samsung's original SBOOT bootloader.
|
||||||
|
It is loaded as an Android boot image through SBOOT.
|
||||||
|
|
||||||
|
Phone specs
|
||||||
|
-----------
|
||||||
|
A3 (SM-320) (a3y17lte)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
- 4.7 AMOLED display
|
||||||
|
- Exynos 7870 SoC
|
||||||
|
- 16GB flash
|
||||||
|
- 2GB RAM
|
||||||
|
|
||||||
|
.. A3 2017 wiki page: https://en.wikipedia.org/wiki/Samsung_Galaxy_A3_(2017)
|
||||||
|
|
||||||
|
A5 (SM-520) (a5y17lte)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
- 5.2 AMOLED display
|
||||||
|
- Exynos 7880 SoC
|
||||||
|
- 32GB flash
|
||||||
|
- 3GB RAM
|
||||||
|
|
||||||
|
.. A5 2017 wiki page: https://en.wikipedia.org/wiki/Samsung_Galaxy_A5_(2017)
|
||||||
|
|
||||||
|
A7 (SM-720) (a5y17lte)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
- 5.7 AMOLED display
|
||||||
|
- Exynos 7880 SoC
|
||||||
|
- 32GB flash
|
||||||
|
- 3GB RAM
|
||||||
|
|
||||||
|
.. A7 2017 wiki page: https://en.wikipedia.org/wiki/Samsung_Galaxy_A7_(2017)
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Building u-boot
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
First, setup ``CROSS_COMPILE`` for aarch64.
|
||||||
|
Then, build U-Boot for your phone, for example ``a5y17lte``::
|
||||||
|
|
||||||
|
$ export CROSS_COMPILE=<aarch64 toolchain prefix>
|
||||||
|
$ make a5y17lte_defconfig
|
||||||
|
$ make
|
||||||
|
|
||||||
|
This will build ``u-boot.bin`` in the configured output directory.
|
||||||
|
|
||||||
|
Payload
|
||||||
|
^^^^^^^
|
||||||
|
What is a payload?
|
||||||
|
""""""""""""""""""
|
||||||
|
A payload file is a file to be used instead of linux kernel in android boot image.
|
||||||
|
This file will be loaded into memory, and executed by SBOOT,
|
||||||
|
and is therefore SBOOT's payload.
|
||||||
|
It may be pure u-boot (with loading u-boot's payload from flash in mind),
|
||||||
|
or u-boot + u-boot's payload.
|
||||||
|
|
||||||
|
It should be kept in mind, that SBOOT binary patches it's payload after loading
|
||||||
|
in address range 0x401f8550-0x401f9280. Given SBOOT loads payload to 0x40001000,
|
||||||
|
a range of 0x1f7550-0x1f8280 (2061648-2065024) in a payload file
|
||||||
|
will be corrupted after loading to RAM.
|
||||||
|
|
||||||
|
Creating payload file
|
||||||
|
"""""""""""""""""""""
|
||||||
|
- Assemble FIT image for your kernel
|
||||||
|
- Create a file for u-boot payload ``touch sboot-payload``
|
||||||
|
- Write zeroes till 0x200000 address to be sure SBOOT won't corrupt your info
|
||||||
|
``dd if=/dev/zero of=sboot-payload bs=$((0x200000)) count=1``
|
||||||
|
- Write u-boot to the start of the payload ``dd if=<u-boot.bin path> of=sboot-payload``
|
||||||
|
- Write FIT image to payload from 0x200000 address
|
||||||
|
``dd if=<FIT image path> of=sboot-payload seek=1 bs=2M``
|
||||||
|
|
||||||
|
Creating android boot image
|
||||||
|
"""""""""""""""""""""""""""
|
||||||
|
Once payload created, it's time for android image::
|
||||||
|
|
||||||
|
mkbootimg --base 0x40000000 --kernel_offset 0x00000000 --ramdisk_offset 0x01000000 --tags_offset 0x00000100 --pagesize 2048 --second_offset 0x00f00000 --kernel <sboot-payload path> -o uboot.img
|
||||||
|
|
||||||
|
Note, that stock Samsung bootloader ignores offsets, set in mkbootimg.
|
||||||
|
|
||||||
|
Flashing
|
||||||
|
""""""""
|
||||||
|
Flash like regular android boot image.
|
9
doc/board/samsung/index.rst
Normal file
9
doc/board/samsung/index.rst
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
Samsung
|
||||||
|
========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
axy17lte
|
Loading…
Add table
Reference in a new issue