On Mon, Mar 11, 2019 at 2:48 AM Sascha Hauer <[email protected]> wrote:
>
> This adds initial STMicroelectronics MP1 support along with support
> for the DK2 devel board. Only very basic support:
>
> - UART
> - SDRAM memory base/size
> - No 1st stage support
>
> Signed-off-by: Sascha Hauer <[email protected]>
> ---
> arch/arm/Kconfig | 11 +++
> arch/arm/Makefile | 1 +
> arch/arm/boards/Makefile | 1 +
> arch/arm/boards/stm32mp157c-dk2/Makefile | 2 +
> arch/arm/boards/stm32mp157c-dk2/board.c | 16 +++
> arch/arm/boards/stm32mp157c-dk2/lowlevel.c | 18 ++++
> arch/arm/configs/stm32mp1_defconfig | 98 +++++++++++++++++++
> arch/arm/dts/Makefile | 1 +
> arch/arm/dts/stm32mp157a-dk1.dts | 62 ++++++++++++
> arch/arm/dts/stm32mp157c-dk2.dts | 14 +++
> arch/arm/dts/stm32mp157c.dtsi | 7 ++
> arch/arm/mach-stm32mp1/Kconfig | 10 ++
> arch/arm/mach-stm32mp1/Makefile | 1 +
> .../arm/mach-stm32mp1/include/mach/debug_ll.h | 28 ++++++
> arch/arm/mach-stm32mp1/include/mach/stm32.h | 35 +++++++
> images/Makefile | 1 +
> images/Makefile.stm32mp1 | 8 ++
> 17 files changed, 314 insertions(+)
> create mode 100644 arch/arm/boards/stm32mp157c-dk2/Makefile
> create mode 100644 arch/arm/boards/stm32mp157c-dk2/board.c
> create mode 100644 arch/arm/boards/stm32mp157c-dk2/lowlevel.c
> create mode 100644 arch/arm/configs/stm32mp1_defconfig
> create mode 100644 arch/arm/dts/stm32mp157a-dk1.dts
> create mode 100644 arch/arm/dts/stm32mp157c-dk2.dts
> create mode 100644 arch/arm/dts/stm32mp157c.dtsi
> create mode 100644 arch/arm/mach-stm32mp1/Kconfig
> create mode 100644 arch/arm/mach-stm32mp1/Makefile
> create mode 100644 arch/arm/mach-stm32mp1/include/mach/debug_ll.h
> create mode 100644 arch/arm/mach-stm32mp1/include/mach/stm32.h
> create mode 100644 images/Makefile.stm32mp1
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 9d3f5b2ca7..6e5f431e29 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -198,6 +198,16 @@ config ARCH_S3C64xx
> select CPU_V6
> select GENERIC_GPIO
>
> +config ARCH_STM32MP1
> + bool "ST stm32mp1xx"
> + select CPU_V7
> + select HAVE_PBL_MULTI_IMAGES
> + select CLKDEV_LOOKUP
> + select COMMON_CLK
> + select COMMON_CLK_OF_PROVIDER
> + select HAS_DEBUG_LL
> + select HAVE_CLK
> +
> config ARCH_VERSATILE
> bool "ARM Versatile boards (ARM926EJ-S)"
> select GPIOLIB
> @@ -284,6 +294,7 @@ source arch/arm/mach-pxa/Kconfig
> source arch/arm/mach-rockchip/Kconfig
> source arch/arm/mach-samsung/Kconfig
> source arch/arm/mach-socfpga/Kconfig
> +source arch/arm/mach-stm32mp1/Kconfig
> source arch/arm/mach-versatile/Kconfig
> source arch/arm/mach-vexpress/Kconfig
> source arch/arm/mach-tegra/Kconfig
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 6b5f21a7a9..9b0e34f50b 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -96,6 +96,7 @@ machine-$(CONFIG_ARCH_PXA) := pxa
> machine-$(CONFIG_ARCH_ROCKCHIP) := rockchip
> machine-$(CONFIG_ARCH_SAMSUNG) := samsung
> machine-$(CONFIG_ARCH_SOCFPGA) := socfpga
> +machine-$(CONFIG_ARCH_STM32MP1) := stm32mp1
> machine-$(CONFIG_ARCH_VERSATILE) := versatile
> machine-$(CONFIG_ARCH_VEXPRESS) := vexpress
> machine-$(CONFIG_ARCH_TEGRA) := tegra
> diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
> index c5dc41526b..5193edff9f 100644
> --- a/arch/arm/boards/Makefile
> +++ b/arch/arm/boards/Makefile
> @@ -123,6 +123,7 @@ obj-$(CONFIG_MACH_SOCFPGA_TERASIC_DE0_NANO_SOC) +=
> terasic-de0-nano-soc/
> obj-$(CONFIG_MACH_SOCFPGA_TERASIC_SOCKIT) += terasic-sockit/
> obj-$(CONFIG_MACH_SOLIDRUN_CUBOX) += solidrun-cubox/
> obj-$(CONFIG_MACH_SOLIDRUN_MICROSOM) += solidrun-microsom/
> +obj-$(CONFIG_MACH_STM32MP157C_DK2) += stm32mp157c-dk2/
> obj-$(CONFIG_MACH_TECHNEXION_PICO_HOBBIT) += technexion-pico-hobbit/
> obj-$(CONFIG_MACH_TECHNEXION_WANDBOARD) +=
> technexion-wandboard/
> obj-$(CONFIG_MACH_TNY_A9260) += tny-a926x/
> diff --git a/arch/arm/boards/stm32mp157c-dk2/Makefile
> b/arch/arm/boards/stm32mp157c-dk2/Makefile
> new file mode 100644
> index 0000000000..092c31d6b2
> --- /dev/null
> +++ b/arch/arm/boards/stm32mp157c-dk2/Makefile
> @@ -0,0 +1,2 @@
> +lwl-y += lowlevel.o
> +obj-y += board.o
> diff --git a/arch/arm/boards/stm32mp157c-dk2/board.c
> b/arch/arm/boards/stm32mp157c-dk2/board.c
> new file mode 100644
> index 0000000000..278a0c0126
> --- /dev/null
> +++ b/arch/arm/boards/stm32mp157c-dk2/board.c
> @@ -0,0 +1,16 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +#include <common.h>
> +#include <linux/sizes.h>
> +#include <init.h>
> +#include <asm/memory.h>
> +
> +static int dk2_postcore_init(void)
> +{
> + if (!of_machine_is_compatible("st,stm32mp157c-dk2"))
> + return 0;
> +
> + arm_add_mem_device("ram0", 0xc0000000, SZ_512M);
> +
Minor nit: I think you can replace 0xc0000000 with STM32_DDR_BASE.
> + return 0;
> +}
> +mem_initcall(dk2_postcore_init);
> diff --git a/arch/arm/boards/stm32mp157c-dk2/lowlevel.c
> b/arch/arm/boards/stm32mp157c-dk2/lowlevel.c
> new file mode 100644
> index 0000000000..be12160a0b
> --- /dev/null
> +++ b/arch/arm/boards/stm32mp157c-dk2/lowlevel.c
> @@ -0,0 +1,18 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +#include <common.h>
> +#include <asm/barebox-arm-head.h>
> +#include <asm/barebox-arm.h>
> +#include <debug_ll.h>
> +
> +extern char __dtb_stm32mp157c_dk2_start[];
> +
> +ENTRY_FUNCTION(start_stm32mp157c_dk2, r0, r1, r2)
> +{
> + void *fdt;
> +
> + arm_cpu_lowlevel_init();
> +
> + fdt = __dtb_stm32mp157c_dk2_start + get_runtime_offset();
> +
> + barebox_arm_entry(0xc0000000, SZ_512M, fdt);
Ditto.
Thanks,
Andrey Smirnov
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox