1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

stm32mp1: add support for stm32mp157c-ev1 board

Add support of stm32mp157c-ev1, the evaluation board with pmic stpmu1
(ev1 = mother board + daughter ed1) with device tree.
EV1 is the selected board by default in basic defconfig.

PS: CONFIG_PINCTRL_FULL activation avoid to increase
    SYS_MALLOC_F_LEN (Early malloc usage: 2034)

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
Patrick Delaunay
2018-07-09 15:17:22 +02:00
committed by Tom Rini
parent bc06134e17
commit 5f16f655cc
5 changed files with 215 additions and 7 deletions

View File

@@ -541,7 +541,8 @@ dtb-$(CONFIG_ARCH_ASPEED) += ast2500-evb.dtb
dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb
dtb-$(CONFIG_TARGET_STM32MP1) += \ dtb-$(CONFIG_TARGET_STM32MP1) += \
stm32mp157c-ed1.dtb stm32mp157c-ed1.dtb \
stm32mp157c-ev1.dtb
targets += $(dtb-y) targets += $(dtb-y)

View File

@@ -0,0 +1,62 @@
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
/*
* Copyright : STMicroelectronics 2018
*/
#include "stm32mp157c-ed1-u-boot.dtsi"
/ {
aliases {
spi0 = &qspi;
i2c1 = &i2c2;
i2c4 = &i2c5;
};
};
&flash0 {
compatible = "spi-flash";
};
&flash1 {
compatible = "spi-flash";
};
&v3v3 {
regulator-always-on;
};
/* SPL part **************************************/
&qspi {
u-boot,dm-spl;
};
&qspi_clk_pins_a {
u-boot,dm-spl;
pins {
u-boot,dm-spl;
};
};
&qspi_bk1_pins_a {
u-boot,dm-spl;
pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl;
};
};
&qspi_bk2_pins_a {
u-boot,dm-spl;
pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl;
};
};
&flash0 {
u-boot,dm-spl;
};

View File

@@ -0,0 +1,101 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2017 - All Rights Reserved
* Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
*/
/dts-v1/;
#include "stm32mp157c-ed1.dts"
/ {
model = "STMicroelectronics STM32MP157C eval daughter on eval mother";
compatible = "st,stm32mp157c-ev1", "st,stm32mp157c-ed1", "st,stm32mp157";
};
&cec {
pinctrl-names = "default";
pinctrl-0 = <&cec_pins_a>;
status = "okay";
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_pins_a>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
status = "okay";
};
&i2c5 {
pinctrl-names = "default";
pinctrl-0 = <&i2c5_pins_a>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
status = "okay";
};
&qspi {
pinctrl-names = "default";
pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a &qspi_bk2_pins_a>;
reg = <0x58003000 0x1000>, <0x70000000 0x4000000>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
flash0: mx66l51235l@0 {
reg = <0>;
spi-rx-bus-width = <4>;
spi-max-frequency = <108000000>;
#address-cells = <1>;
#size-cells = <1>;
};
flash1: mx66l51235l@1 {
reg = <1>;
spi-rx-bus-width = <4>;
spi-max-frequency = <108000000>;
#address-cells = <1>;
#size-cells = <1>;
};
};
&timers2 {
status = "disabled";
pwm {
pinctrl-0 = <&pwm2_pins_a>;
pinctrl-names = "default";
status = "okay";
};
timer@1 {
status = "okay";
};
};
&timers8 {
status = "disabled";
pwm {
pinctrl-0 = <&pwm8_pins_a>;
pinctrl-names = "default";
status = "okay";
};
timer@7 {
status = "okay";
};
};
&timers12 {
status = "disabled";
pwm {
pinctrl-0 = <&pwm12_pins_a>;
pinctrl-names = "default";
status = "okay";
};
timer@11 {
status = "okay";
};
};
&usbphyc {
status = "okay";
};

View File

@@ -29,9 +29,12 @@ Everything is supported in Linux but U-Boot is limited to:
And the necessary drivers And the necessary drivers
1. I2C 1. I2C
2. STPMU1 2. STPMU1
3. Clock, Reset 2. STPMU1 (PMIC and regulator)
3. Clock, Reset, Sysreset
4. Fuse
Currently the following boards are supported: Currently the following boards are supported:
+ stm32mp157c-ev1
+ stm32mp157c-ed1 + stm32mp157c-ed1
3. Boot Sequences 3. Boot Sequences
@@ -61,6 +64,9 @@ Each board is configurated only with the associated device tree.
You need to select the appropriate device tree for your board, You need to select the appropriate device tree for your board,
the supported device trees for stm32mp157 are: the supported device trees for stm32mp157 are:
+ ev1: eval board with pmic stpmu1 (ev1 = mother board + daughter ed1)
dts: stm32mp157c-ev1
+ ed1: daughter board with pmic stpmu1 + ed1: daughter board with pmic stpmu1
dts: stm32mp157c-ed1 dts: stm32mp157c-ed1
@@ -98,6 +104,11 @@ the supported device trees for stm32mp157 are:
example: example:
basic boot on ev1
# export KBUILD_OUTPUT=stm32mp15_basic
# make stm32mp15_basic_defconfig
# make DEVICE_TREE=stm32mp157c-ev1 all
basic boot on ed1 basic boot on ed1
# export KBUILD_OUTPUT=stm32mp15_basic # export KBUILD_OUTPUT=stm32mp15_basic
# make stm32mp15_basic_defconfig # make stm32mp15_basic_defconfig
@@ -105,7 +116,7 @@ the supported device trees for stm32mp157 are:
6. Output files 6. Output files
BootRom and ATF expect binaries with STM32 image header BootRom and TF-A expect binaries with STM32 image header
SPL expects file with U-Boot uImage header SPL expects file with U-Boot uImage header
So in the output directory (selected by KBUILD_OUTPUT), So in the output directory (selected by KBUILD_OUTPUT),
@@ -150,8 +161,8 @@ Then the minimal GPT partition is:
----- ------- --------- ------------- ----- ------- --------- -------------
| Num | Name | Size | Content | | Num | Name | Size | Content |
----- ------- -------- -------------- ----- ------- -------- --------------
| 1 | fsbl1 | 256 KiB | ATF or SPL | | 1 | fsbl1 | 256 KiB | TF-A or SPL |
| 2 | fsbl2 | 256 KiB | ATF or SPL | | 2 | fsbl2 | 256 KiB | TF-A or SPL |
| 3 | ssbl | enought | U-Boot | | 3 | ssbl | enought | U-Boot |
| * | - | - | Boot/Rootfs| | * | - | - | Boot/Rootfs|
----- ------- --------- ------------- ----- ------- --------- -------------
@@ -176,7 +187,9 @@ for example: with gpt table with 128 entries
-n 3:1058:5153 -c 3:ssbl \ -n 3:1058:5153 -c 3:ssbl \
-p /dev/<SDCard dev> -p /dev/<SDCard dev>
you can add other partition for kernel (rootfs for example) you can add other partitions for kernel
one partition rootfs for example:
-n 3:5154: -c 4:rootfs
c) copy the FSBL (2 times) and SSBL file on the correct partition. c) copy the FSBL (2 times) and SSBL file on the correct partition.
in this example in partition 1 to 3 in this example in partition 1 to 3
@@ -223,3 +236,33 @@ b) copy U-Boot in first GPT partition of eMMC
# mmc write ${fileaddr} ${partstart} ${partsize} # mmc write ${fileaddr} ${partstart} ${partsize}
To boot from eMMC, select BootPinMode = 0 1 0 and reset. To boot from eMMC, select BootPinMode = 0 1 0 and reset.
9. MAC Address
==============
Please read doc/README.enetaddr for the implementation guidelines for mac id
usage. Basically, environment has precedence over board specific storage.
Mac id storage and retrieval in stm32mp otp :
- OTP_57[31:0] = MAC_ADDR[31:0]
- OTP_58[15:0] = MAC_ADDR[47:32]
To program a MAC address on virgin OTP words above, you can use the fuse command
on bank 0 to access to internal OTP:
example to set mac address "12:34:56:78:9a:bc"
1- Write OTP
STM32MP> fuse prog -y 0 57 0x78563412 0x0000bc9a
2- Read OTP
STM32MP> fuse sense 0 57 2
Sensing bank 0:
Word 0x00000039: 78563412 0000bc9a
3- next REBOOT :
### Setting environment from OTP MAC address = "12:34:56:78:9a:bc"
4 check env update
STM32MP> print ethaddr
ethaddr=12:34:56:78:9a:bc

View File

@@ -4,7 +4,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_MMC_SUPPORT=y
CONFIG_SPL=y CONFIG_SPL=y
CONFIG_TARGET_STM32MP1=y CONFIG_TARGET_STM32MP1=y
CONFIG_DEFAULT_DEVICE_TREE="stm32mp157c-ed1" CONFIG_DEFAULT_DEVICE_TREE="stm32mp157c-ev1"
CONFIG_DISTRO_DEFAULTS=y CONFIG_DISTRO_DEFAULTS=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
@@ -31,6 +31,7 @@ CONFIG_DM_I2C=y
CONFIG_SYS_I2C_STM32F7=y CONFIG_SYS_I2C_STM32F7=y
CONFIG_DM_MMC=y CONFIG_DM_MMC=y
CONFIG_STM32_SDMMC2=y CONFIG_STM32_SDMMC2=y
# CONFIG_PINCTRL_FULL is not set
# CONFIG_SPL_PINCTRL_FULL is not set # CONFIG_SPL_PINCTRL_FULL is not set
CONFIG_DM_PMIC=y CONFIG_DM_PMIC=y
# CONFIG_SPL_PMIC_CHILDREN is not set # CONFIG_SPL_PMIC_CHILDREN is not set