>-----Original Message-----
>From: U-Boot <[email protected]> On Behalf Of Michael Walle
>Sent: Sunday, May 10, 2020 4:50 AM
>To: [email protected]
>Cc: Sudhanshu Gupta <[email protected]>; Harninder Rai
><[email protected]>; Rajesh Bhagat <[email protected]>; Andy
>Tang <[email protected]>; Priyanka Jain <[email protected]>;
>Prabhakar Kushwaha <[email protected]>; Michael Walle
><[email protected]>
>Subject: [PATCH v3 2/2] board: kontron: add sl28 support
>
>Add basic support for the Kontron SMARC-sAL28 board. This includes just the
>bare minimum to be able to bring up the board and boot linux.
>
>For now, the Single and Dual PHY variant is supported. Other variants will fall
>back to the basic variant.
>
>In particular, there is no watchdog support for now. This means that you have
>to disable the default watchdog, otherwise you'll end up in the recovery
>bootloader. See the board README for details.
>
>Signed-off-by: Michael Walle <[email protected]>
>---
> arch/arm/Kconfig                              |  10 ++
> arch/arm/dts/Makefile                         |   3 +
> .../arm/dts/fsl-ls1028a-kontron-sl28-var3.dts |  14 ++  
> .../arm/dts/fsl-ls1028a-
>kontron-sl28-var4.dts |  42 ++++++
> arch/arm/dts/fsl-ls1028a-kontron-sl28.dts     | 128 ++++++++++++++++++
> board/kontron/sl28/Kconfig                    |  18 +++
> board/kontron/sl28/MAINTAINERS                |   6 +
> board/kontron/sl28/Makefile                   |   8 ++
> board/kontron/sl28/README                     |  63 +++++++++
> board/kontron/sl28/common.c                   |  10 ++
> board/kontron/sl28/ddr.c                      |  98 ++++++++++++++
> board/kontron/sl28/sl28.c                     |  92 +++++++++++++
> board/kontron/sl28/spl.c                      |   9 ++
> configs/kontron_sl28_defconfig                | 102 ++++++++++++++
> include/configs/kontron_sl28.h                | 119 ++++++++++++++++
> 15 files changed, 722 insertions(+)
> create mode 100644 arch/arm/dts/fsl-ls1028a-kontron-sl28-var3.dts
> create mode 100644 arch/arm/dts/fsl-ls1028a-kontron-sl28-var4.dts
> create mode 100644 arch/arm/dts/fsl-ls1028a-kontron-sl28.dts
> create mode 100644 board/kontron/sl28/Kconfig  create mode 100644
>board/kontron/sl28/MAINTAINERS  create mode 100644
>board/kontron/sl28/Makefile  create mode 100644
>board/kontron/sl28/README  create mode 100644
>board/kontron/sl28/common.c  create mode 100644
>board/kontron/sl28/ddr.c  create mode 100644 board/kontron/sl28/sl28.c
>create mode 100644 board/kontron/sl28/spl.c  create mode 100644
>configs/kontron_sl28_defconfig  create mode 100644
>include/configs/kontron_sl28.h
>
>diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index
>0d463088a2..9fb8d2943c 100644
>--- a/arch/arm/Kconfig
>+++ b/arch/arm/Kconfig
>@@ -1574,6 +1574,15 @@ config TARGET_LS1046AFRWY
>         development platform that supports the QorIQ LS1046A
>         Layerscape Architecture processor.
>
>+config TARGET_SL28
>+      bool "Support sl28"
>+      select ARCH_LS1028A
>+      select ARM64
>+      select ARMV8_MULTIENTRY
>+      select SUPPORT_SPL
>+      help
>+        Support for Kontron SMARC-sAL28 board.
>+
> config TARGET_COLIBRI_PXA270
>       bool "Support colibri_pxa270"
>       select CPU_PXA
>@@ -1904,6 +1913,7 @@ source "board/hisilicon/hikey/Kconfig"
> source "board/hisilicon/hikey960/Kconfig"
> source "board/hisilicon/poplar/Kconfig"
> source "board/isee/igep003x/Kconfig"
>+source "board/kontron/sl28/Kconfig"
> source "board/phytec/pcm051/Kconfig"
> source "board/silica/pengwyn/Kconfig"
> source "board/spear/spear300/Kconfig"
>diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index
>559d3ab6a7..7050ec72eb 100644
>--- a/arch/arm/dts/Makefile
>+++ b/arch/arm/dts/Makefile
>@@ -379,6 +379,9 @@ dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \
>       fsl-ls2088a-rdb-qspi.dtb \
>       fsl-ls1088a-rdb.dtb \
>       fsl-ls1088a-qds.dtb \
>+      fsl-ls1028a-kontron-sl28.dtb \
>+      fsl-ls1028a-kontron-sl28-var3.dtb \
>+      fsl-ls1028a-kontron-sl28-var4.dtb \
>       fsl-ls1028a-rdb.dtb \
>       fsl-ls1028a-qds-duart.dtb \
>       fsl-ls1028a-qds-lpuart.dtb \
>diff --git a/arch/arm/dts/fsl-ls1028a-kontron-sl28-var3.dts
>b/arch/arm/dts/fsl-ls1028a-kontron-sl28-var3.dts
>new file mode 100644
>index 0000000000..23f89eadb3
>--- /dev/null
>+++ b/arch/arm/dts/fsl-ls1028a-kontron-sl28-var3.dts
>@@ -0,0 +1,14 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+/*
>+ * Kontron SMARC-sAL28 device tree source (Single PHY version)  */
>+
>+/dts-v1/;
>+
>+#include "fsl-ls1028a-kontron-sl28.dts"
>+
>+/ {
>+      u-boot,dm-pre-reloc;
>+      model = "Kontron SMARC-sAL28 Board (Single PHY)";
>+      compatible = "kontron,sl28-var3", "kontron,sl28", "fsl,ls1028a"; };
>diff --git a/arch/arm/dts/fsl-ls1028a-kontron-sl28-var4.dts
>b/arch/arm/dts/fsl-ls1028a-kontron-sl28-var4.dts
>new file mode 100644
>index 0000000000..8b51cf1207
>--- /dev/null
>+++ b/arch/arm/dts/fsl-ls1028a-kontron-sl28-var4.dts
>@@ -0,0 +1,42 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+/*
>+ * Kontron SMARC-sAL28 device tree source (Dual PHY version)  */
>+
>+/dts-v1/;
>+
>+#include "fsl-ls1028a-kontron-sl28.dts"
>+#include <dt-bindings/net/qca-ar803x.h>
>+
>+/ {
>+      u-boot,dm-pre-reloc;
>+      model = "Kontron SMARC-sAL28 Board (Dual PHY)";
>+      compatible = "kontron,sl28-var4", "kontron,sl28", "fsl,ls1028a"; };
>+
>+&enetc1 {
>+      status = "okay";
>+      phy-mode = "rgmii-id";
>+      phy-handle = <&phy1>;
>+};
>+
>+&mdio0 {
>+      phy1: phy@4 {
>+              reg = <4>;
>+
>+              qca,clk-out-frequency = <125000000>;
>+              qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
>+
>+              vddio-supply = <&vddh>;
>+
>+              vddio: vddio-regulator {
>+                      regulator-name = "VDDIO";
>+                      regulator-min-microvolt = <1800000>;
>+                      regulator-max-microvolt = <1800000>;
>+              };
>+
>+              vddh: vddh-regulator {
>+                      regulator-name = "VDDH";
>+              };
>+      };
>+};
>diff --git a/arch/arm/dts/fsl-ls1028a-kontron-sl28.dts b/arch/arm/dts/fsl-
>ls1028a-kontron-sl28.dts
>new file mode 100644
>index 0000000000..8d4c1102c4
>--- /dev/null
>+++ b/arch/arm/dts/fsl-ls1028a-kontron-sl28.dts
>@@ -0,0 +1,128 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+/*
>+ * Kontron SMARC-sAL28 device tree source (base version)  */
>+
>+/dts-v1/;
>+
>+#include "fsl-ls1028a.dtsi"
>+
>+/ {
>+      u-boot,dm-pre-reloc;
>+      model = "Kontron SMARC-sAL28 Board";
>+      compatible = "kontron,sl28", "fsl,ls1028a";
>+
>+      aliases {
>+              serial0 = &serial0;
>+              serial1 = &serial1;
>+              spi0 = &fspi;
>+              spi1 = &dspi2;
>+              mmc0 = &esdhc0;
>+              mmc1 = &esdhc1;
>+              i2c0 = &i2c0;
>+              i2c1 = &i2c3;
>+              i2c2 = &i2c4;
>+              rtc0 = &rtc;
>+              ethernet0 = &enetc0;
>+              ethernet1 = &enetc1;
>+              ethernet2 = &enetc2;
>+              ethernet3 = &enetc6;
>+      };
>+
>+      chosen {
>+              stdout-path = &serial0;
>+      };
>+};
>+
>+&dspi2 {
>+      u-boot,dm-pre-reloc;
>+      status = "okay";
>+};
>+
>+&enetc0 {
>+      status = "okay";
>+      phy-mode = "sgmii";
>+      phy-handle = <&phy0>;
>+};
>+
>+&enetc1 {
>+      status = "disabled";
>+};
>+
>+&enetc2 {
>+      status = "disabled";
>+};
>+
>+&enetc6 {
>+      status = "disabled";
>+};
>+
>+&esdhc0 {
>+      u-boot,dm-pre-reloc;
>+      status = "okay";
>+};
>+
>+&esdhc1 {
>+      u-boot,dm-pre-reloc;
>+      status = "okay";
>+      bus-width = <8>;
>+};
>+
>+&fspi {
>+      u-boot,dm-pre-reloc;
>+      status = "okay";
>+
>+      flash@0 {
>+              u-boot,dm-pre-reloc;
>+              #address-cells = <1>;
>+              #size-cells = <1>;
>+              compatible = "jedec,spi-nor";
>+              m25p,fast-read;
>+              spi-max-frequency = <133000000>;
>+              reg = <0>;
>+              spi-rx-bus-width = <2>;
>+              spi-tx-bus-width = <1>;
>+       };
>+};
>+
>+&i2c0 {
>+      status = "okay";
>+
>+      rtc: rtc@32 {
>+              compatible = "microcrystal,rv8803";
>+              reg = <0x32>;
>+      };
>+};
>+
>+&i2c3 {
>+      status = "okay";
>+};
>+
>+&i2c4 {
>+      status = "okay";
>+};
>+
>+&mdio0 {
>+      status = "okay";
>+
>+      phy0: phy@5 {
>+              reg = <5>;
>+      };
>+};
>+
>+&serial0 {
>+      u-boot,dm-pre-reloc;
>+      status = "okay";
>+};
>+
>+&sysclk {
>+      u-boot,dm-pre-reloc;
>+};
>+
>+&usb1 {
>+      status = "okay";
>+};
>+
>+&usb2 {
>+      status = "okay";
>+};
>diff --git a/board/kontron/sl28/Kconfig b/board/kontron/sl28/Kconfig new file
>mode 100644 index 0000000000..cdec39be01
>--- /dev/null
>+++ b/board/kontron/sl28/Kconfig
>@@ -0,0 +1,18 @@
>+if TARGET_SL28
>+
>+config SYS_BOARD
>+      default "sl28"
>+
>+config SYS_VENDOR
>+      default "kontron"
>+
>+config SYS_SOC
>+      default "fsl-layerscape"
>+
>+config SYS_CONFIG_NAME
>+      default "kontron_sl28"
>+
>+config SYS_TEXT_BASE
>+      default 0x96000000
>+
>+endif
>diff --git a/board/kontron/sl28/MAINTAINERS
>b/board/kontron/sl28/MAINTAINERS new file mode 100644 index
>0000000000..047a057646
>--- /dev/null
>+++ b/board/kontron/sl28/MAINTAINERS
>@@ -0,0 +1,6 @@
>+Kontron SMARC-sAL28 board
>+M:    Michael Walle <[email protected]>
>+S:    Maintained
>+F:    board/kontron/sl28/
>+F:    include/configs/kontron_sl28.h
>+F:    configs/kontron_sl28_defconfig
>diff --git a/board/kontron/sl28/Makefile b/board/kontron/sl28/Makefile new
>file mode 100644 index 0000000000..0f1866c874
>--- /dev/null
>+++ b/board/kontron/sl28/Makefile
>@@ -0,0 +1,8 @@
>+# SPDX-License-Identifier:    GPL-2.0+
>+
>+ifndef CONFIG_SPL_BUILD
>+obj-y += sl28.o
>+endif
>+
>+obj-y += common.o ddr.o
>+obj-$(CONFIG_SPL_BUILD) += spl.o
>diff --git a/board/kontron/sl28/README b/board/kontron/sl28/README new
>file mode 100644 index 0000000000..931563f299
>--- /dev/null
>+++ b/board/kontron/sl28/README
>@@ -0,0 +1,63 @@
>+Summary
>+=======
>+
>+The Kontron SMARC-sAL28 board is a TSN-enabled dual-core ARM A72
>+processor module with an on-chip 6-port TSN switch and a 3D GPU.
>+
>+
>+Quickstart
>+==========
>+
>+Compile U-Boot
>+--------------
>+
>+ $ make kontron_sl28_defconfig
>+ $ CROSS_COMPILE=aarch64-linux-gnu make
>+
>+Copy u-boot-with-spl.bin to a TFTP server.
>+
>+Install the bootloader on the board
>+-----------------------------------
>+
>+Please note, this bootloader doesn't support the builtin watchdog
>+(yet), therefore you have to disable it, see below. Otherwise you'll
>+end up in the failsafe bootloader on every reset.
>+
>+ > tftp path/to/u-boot-with-spl.bin
>+ > sf probe 0
>+ > sf update $fileaddr 0x210000 $filesize
>+
>+The board is fully failsafe, you can't break anything. But since you've
>+disabled the builtin watchdog you might have to manually enter failsafe
>+mode by asserting the FORCE_RECOV# line during board reset.
>+
>+Disable the builtin watchdog
>+----------------------------
>+
>+ - boot into the failsafe bootloader, either by asserting the
>+   FORCE_RECOV# line or if you still have the original bootloader
>+   installed you can use the command "wdt dev cpld_watchdog@4a; wdt
>+   expire 1"
>+ - in the failsafe bootloader use the "sl28 nvm" command to disable
>+   the automatic start of the builtin watchdog:
>+   > sl28 nvm 0008
>+ - power-cycle the board
>+
>+
>+Useful I2C tricks
>+=================
>+
>+The board has a board management controller which is not supported in
>+u-boot (yet). But you can use the i2c command to access it:
>+
>+ # reset into failsafe bootloader
>+ > i2c mw 4a 5.1 0; i2c mw 4a 6.1 6b; i2c mw 4a 4.1 42
>+
>+ # read board management controller version
>+ > i2c md 4a 3.1 1
>+
>+
>+Vendor Documentation
>+====================
>+
>+https://raw.githubusercontent.com/kontron/u-boot-smarc-
>sal28/master/boa
>+rd/kontron/sl28/README.md
>diff --git a/board/kontron/sl28/common.c b/board/kontron/sl28/common.c
>new file mode 100644 index 0000000000..14704f7051
>--- /dev/null
>+++ b/board/kontron/sl28/common.c
>@@ -0,0 +1,10 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+
>+#include <common.h>
>+#include <asm/arch-fsl-layerscape/soc.h>
>+
>+int board_early_init_f(void)
>+{
>+      fsl_lsch3_early_init_f();
>+      return 0;
>+}
>diff --git a/board/kontron/sl28/ddr.c b/board/kontron/sl28/ddr.c new file
>mode 100644 index 0000000000..110f57ac90
>--- /dev/null
>+++ b/board/kontron/sl28/ddr.c
>@@ -0,0 +1,98 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+
>+#include <common.h>
>+#include <asm/io.h>
>+#include <fsl_ddr_sdram.h>
>+
>+DECLARE_GLOBAL_DATA_PTR;
>+
>+#define DCFG_GPPORCR1 0x20
>+
>+#define GPPORCR1_MEM_MASK             (0x7 << 5)
>+#define GPPORCR1_MEM_512MB_CS0                (0x0 << 5)
>+#define GPPORCR1_MEM_1GB_CS0          (0x1 << 5)
>+#define GPPORCR1_MEM_2GB_CS0          (0x2 << 5)
>+#define GPPORCR1_MEM_4GB_CS0_1                (0x3 << 5)
>+#define GPPORCR1_MEM_4GB_CS0_2                (0x4 << 5)
>+#define GPPORCR1_MEM_8GB_CS0_1_2_3    (0x5 << 5)
>+#define GPPORCR1_MEM_8GB_CS0_1                (0x6 << 5)
>+
>+static fsl_ddr_cfg_regs_t __maybe_unused ddr_cfg_regs = {
>+      .cs[0].bnds             = 0x0000007f,
>+      .cs[0].config           = 0x80044402,
>+      .cs[1].bnds             = 0x008000ff,
>+      .cs[1].config           = 0x80004402,
>+
>+      .timing_cfg_0           = 0x9011010c,
>+      .timing_cfg_3           = 0x010c1000,
>+      .timing_cfg_1           = 0xbcb48c66,
>+      .timing_cfg_2           = 0x0fc0d118,
>+      .ddr_sdram_cfg          = 0xe70c000c,
>+      .ddr_sdram_cfg_2        = 0x24401111,
>+      .ddr_sdram_mode         = 0x00441c70,
>+      .ddr_sdram_mode_3       = 0x00001c70,
>+      .ddr_sdram_mode_5       = 0x00001c70,
>+      .ddr_sdram_mode_7       = 0x00001c70,
>+      .ddr_sdram_mode_2       = 0x00180000,
>+      .ddr_sdram_mode_4       = 0x00180000,
>+      .ddr_sdram_mode_6       = 0x00180000,
>+      .ddr_sdram_mode_8       = 0x00180000,
>+
>+      .ddr_sdram_interval     = 0x0c30030c,
>+      .ddr_data_init          = 0xdeadbeef,
>+
>+      .ddr_sdram_clk_cntl     = 0x02400000,
>+
>+      .timing_cfg_4           = 0x00000001,
>+      .timing_cfg_5           = 0x04401400,
>+
>+      .ddr_zq_cntl            = 0x89080600,
>+      .ddr_wrlvl_cntl         = 0x8675f606,
>+      .ddr_wrlvl_cntl_2       = 0x04080700,
>+      .ddr_wrlvl_cntl_3       = 0x00000009,
>+
>+      .ddr_cdr1               = 0x80040000,
>+      .ddr_cdr2               = 0x0000bc01,
>+};
>+
>+int fsl_initdram(void)
>+{
>+      u32 gpporcr1 = in_le32(DCFG_BASE + DCFG_GPPORCR1);
>+      phys_size_t dram_size;
>+
>+      switch (gpporcr1 & GPPORCR1_MEM_MASK) {
>+      case GPPORCR1_MEM_2GB_CS0:
>+              dram_size = 0x80000000;
>+              ddr_cfg_regs.cs[1].bnds = 0;
>+              ddr_cfg_regs.cs[1].config = 0;
>+              ddr_cfg_regs.cs[1].config_2 = 0;
>+              break;
>+      case GPPORCR1_MEM_4GB_CS0_1:
>+              dram_size = 0x100000000ULL;
>+              break;
>+      case GPPORCR1_MEM_512MB_CS0:
>+              dram_size = 0x20000000;
>+              /* fall through for now */
>+      case GPPORCR1_MEM_1GB_CS0:
>+              dram_size = 0x40000000;
>+              /* fall through for now */
>+      case GPPORCR1_MEM_4GB_CS0_2:
>+              dram_size = 0x100000000ULL;
>+              /* fall through for now */
>+      case GPPORCR1_MEM_8GB_CS0_1:
>+      case GPPORCR1_MEM_8GB_CS0_1_2_3:
>+              dram_size = 0x200000000ULL;
>+              /* fall through for now */
>+      default:
>+              panic("Unsupported memory configuration (%08x)\n",
>+                    gpporcr1 & GPPORCR1_MEM_MASK);
>+              break;
>+      }
>+
>+#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD)
>+      fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0); #endif
>+      gd->ram_size = dram_size;
>+
>+      return 0;
>+}
>diff --git a/board/kontron/sl28/sl28.c b/board/kontron/sl28/sl28.c new file
>mode 100644 index 0000000000..ef35541c86
>--- /dev/null
>+++ b/board/kontron/sl28/sl28.c
>@@ -0,0 +1,92 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+
>+#include <common.h>
>+#include <malloc.h>
>+#include <errno.h>
>+#include <fsl_ddr.h>
>+#include <asm/io.h>
>+#include <fdt_support.h>
>+#include <linux/libfdt.h>
>+#include <env_internal.h>
>+#include <asm/arch-fsl-layerscape/soc.h> #include
>+<asm/arch-fsl-layerscape/fsl_icid.h>
>+#include <i2c.h>
>+#include <asm/arch/soc.h>
>+#include <fsl_immap.h>
>+#include <netdev.h>
>+
>+#include <fdtdec.h>
>+#include <miiphy.h>
>+
>+#define DCFG_RCWSR25 0x160
>+#define GPINFO_HW_VARIANT_MASK 0xff
>+
>+DECLARE_GLOBAL_DATA_PTR;
>+
>+int sl28_variant(void)
>+{
>+      return in_le32(DCFG_BASE + DCFG_RCWSR25) &
>GPINFO_HW_VARIANT_MASK; }
>+
>+int board_fit_config_name_match(const char *name) {
>+      int variant = sl28_variant();
>+
>+      switch (variant) {
>+      case 3:
>+              return strcmp(name, "fsl-ls1028a-kontron-sl28-var3");
>+      case 4:
>+              return strcmp(name, "fsl-ls1028a-kontron-sl28-var4");
>+      default:
>+              return strcmp(name, "fsl-ls1028a-kontron-sl28");
>+      }
>+}
>+
>+int board_init(void)
>+{
>+#ifdef CONFIG_ENV_IS_NOWHERE
>+      gd->env_addr = (ulong)&default_environment[0]; #endif
>+
>+#ifndef CONFIG_SYS_EARLY_PCI_INIT
>+      pci_init();
>+#endif
>+
>+      return 0;
>+}
>+
>+int board_eth_init(bd_t *bis)
>+{
>+      return pci_eth_init(bis);
>+}
>+
>+void detail_board_ddr_info(void)
>+{
>+      puts("\nDDR    ");
>+      print_size(gd->bd->bi_dram[0].size + gd->bd->bi_dram[1].size, "");
>+      print_ddr_info(0);
>+}
>+
>+#ifdef CONFIG_OF_BOARD_SETUP
>+int ft_board_setup(void *blob, bd_t *bd) {
>+      u64 base[CONFIG_NR_DRAM_BANKS];
>+      u64 size[CONFIG_NR_DRAM_BANKS];
>+      int nbanks = CONFIG_NR_DRAM_BANKS;
>+      int i;
>+
>+      ft_cpu_setup(blob, bd);
>+
>+      /* fixup DT for the two GPP DDR banks */
>+      for (i = 0; i < nbanks; i++) {
>+              base[i] = gd->bd->bi_dram[i].start;
>+              size[i] = gd->bd->bi_dram[i].size;
>+      }
>+
>+      fdt_fixup_memory_banks(blob, base, size, nbanks);
>+
>+      fdt_fixup_icid(blob);
>+
>+      return 0;
>+}
>+#endif
>diff --git a/board/kontron/sl28/spl.c b/board/kontron/sl28/spl.c new file
>mode 100644 index 0000000000..eb6d2dc909
>--- /dev/null
>+++ b/board/kontron/sl28/spl.c
>@@ -0,0 +1,9 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+
>+#include <common.h>
>+#include <asm/spl.h>
>+
>+void board_boot_order(u32 *spl_boot_list) {
>+      spl_boot_list[0] = BOOT_DEVICE_SPI;
>+}
>diff --git a/configs/kontron_sl28_defconfig b/configs/kontron_sl28_defconfig
>new file mode 100644 index 0000000000..14bff90249
>--- /dev/null
>+++ b/configs/kontron_sl28_defconfig
>@@ -0,0 +1,102 @@
>+CONFIG_ARM=y
>+CONFIG_TARGET_SL28=y
>+CONFIG_SPL_LIBCOMMON_SUPPORT=y
>+CONFIG_SPL_LIBGENERIC_SUPPORT=y
>+CONFIG_SYS_MALLOC_F_LEN=0x4000
>+CONFIG_ENV_SIZE=0x2000
>+CONFIG_ENV_OFFSET=0x3e0000
>+CONFIG_ENV_SECT_SIZE=0x10000
>+CONFIG_SYS_SPI_U_BOOT_OFFS=0x230000
>+CONFIG_DM_GPIO=y
>+CONFIG_SYS_FSL_SDHC_CLK_DIV=1
>+CONFIG_SPL_SERIAL_SUPPORT=y
>+CONFIG_NR_DRAM_BANKS=2
>+CONFIG_SPL_SIZE_LIMIT=0x20000
>+CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x0
>+CONFIG_SPL=y
>+CONFIG_ENV_OFFSET_REDUND=0x3f0000
>+CONFIG_SPL_SPI_FLASH_SUPPORT=y
>+CONFIG_SPL_SPI_SUPPORT=y
>+# CONFIG_PSCI_RESET is not set
>+CONFIG_SPL_TEXT_BASE=0x18010000
>+CONFIG_AHCI=y
>+CONFIG_DISTRO_DEFAULTS=y
>+CONFIG_FIT=y
>+CONFIG_FIT_VERBOSE=y
>+CONFIG_OF_BOARD_SETUP=y
>+CONFIG_OF_STDOUT_VIA_ALIAS=y
>+CONFIG_BOOTDELAY=10
>+CONFIG_USE_BOOTARGS=y
>+CONFIG_BOARD_LATE_INIT=y
>+CONFIG_SPL_BOARD_INIT=y
>+# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
>CONFIG_SPL_SEPARATE_BSS=y
>+CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT=y
>+CONFIG_SPL_SPI_LOAD=y
>+CONFIG_CMD_ASKENV=y
>+CONFIG_CMD_GREPENV=y
>+CONFIG_CMD_DM=y
>+CONFIG_CMD_GPT=y
>+CONFIG_CMD_I2C=y
>+CONFIG_CMD_MMC=y
>+CONFIG_CMD_PCI=y
>+CONFIG_CMD_USB=y
>+CONFIG_CMD_WDT=y
>+CONFIG_CMD_CACHE=y
>+CONFIG_MP=y
>+CONFIG_OF_CONTROL=y
>+CONFIG_SPL_OF_CONTROL=y
>+CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1028a-kontron-sl28"
>+CONFIG_OF_LIST="fsl-ls1028a-kontron-sl28 fsl-ls1028a-kontron-sl28-var3 fsl-
>ls1028a-kontron-sl28-var4"
>+CONFIG_MULTI_DTB_FIT=y
>+CONFIG_ENV_IS_IN_SPI_FLASH=y
>+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
>+CONFIG_NET_RANDOM_ETHADDR=y
>+CONFIG_NETCONSOLE=y
>+CONFIG_DM=y
>+CONFIG_SPL_DM=y
>+CONFIG_SPL_DM_SEQ_ALIAS=y
>+CONFIG_SCSI_AHCI=y
>+CONFIG_FSL_CAAM=y
>+CONFIG_SYS_FSL_DDR3=y
>+CONFIG_DM_I2C=y
>+CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
>+CONFIG_I2C_DEFAULT_BUS_NUMBER=0
>+CONFIG_I2C_MUX=y
>+CONFIG_DM_MMC=y
>+CONFIG_FSL_ESDHC=y
>+CONFIG_DM_SPI_FLASH=y
>+CONFIG_SPI_FLASH_WINBOND=y
>+# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set CONFIG_PHYLIB=y
>+CONFIG_PHY_ATHEROS=y CONFIG_DM_ETH=y CONFIG_DM_MDIO=y
>CONFIG_PHY_GIGE=y
>+CONFIG_E1000=y CONFIG_FSL_ENETC=y CONFIG_NVME=y CONFIG_PCI=y
>+CONFIG_DM_PCI=y CONFIG_DM_PCI_COMPAT=y
>CONFIG_PCIE_ECAM_GENERIC=y
>+CONFIG_PCIE_LAYERSCAPE=y CONFIG_DM_RTC=y CONFIG_RTC_RV8803=y
>+CONFIG_SCSI=y CONFIG_DM_SCSI=y CONFIG_SYS_NS16550=y CONFIG_SPI=y
>+CONFIG_DM_SPI=y CONFIG_FSL_DSPI=y CONFIG_NXP_FSPI=y CONFIG_USB=y
>+CONFIG_DM_USB=y # CONFIG_SPL_DM_USB is not set
>CONFIG_USB_XHCI_HCD=y
>+CONFIG_USB_XHCI_DWC3=y CONFIG_WDT=y CONFIG_WDT_SP805=y
>+CONFIG_OF_LIBFDT_ASSUME_MASK=0x0
>+CONFIG_OF_LIBFDT_OVERLAY=y
>+CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>diff --git a/include/configs/kontron_sl28.h b/include/configs/kontron_sl28.h
>new file mode 100644 index 0000000000..3711f8b744
>--- /dev/null
>+++ b/include/configs/kontron_sl28.h
>@@ -0,0 +1,119 @@
>+/* SPDX-License-Identifier: GPL-2.0+ */
>+
>+#ifndef __SL28_H
>+#define __SL28_H
>+
>+#include <asm/arch/stream_id_lsch3.h>
>+#include <asm/arch/config.h>
>+#include <asm/arch/soc.h>
>+
>+/* We don't use hwconfig but this has to be defined.. */ #define
>+HWCONFIG_BUFFER_SIZE 256
>+
>+/* DDR */
>+#define CONFIG_DDR_ECC
>+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
>+#define CONFIG_MEM_INIT_VALUE         0xdeadbeef
>+
>+#define CONFIG_VERY_BIG_RAM
>+#define CONFIG_CHIP_SELECTS_PER_CTRL  4
>+#define CONFIG_DIMM_SLOTS_PER_CTLR    1
>+#define CONFIG_SYS_DDR_SDRAM_BASE     0x80000000UL
>+#define CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY     0
>+#define CONFIG_SYS_SDRAM_BASE
>       CONFIG_SYS_DDR_SDRAM_BASE
>+#define CONFIG_SYS_DDR_BLOCK2_BASE    0x2080000000ULL
>+#define CONFIG_SYS_FSL_DDR_MAIN_NUM_CTRLS     1
>+
>+/* early stack pointer */
>+#define CONFIG_SYS_INIT_SP_ADDR
>       (CONFIG_SYS_FSL_OCRAM_BASE + 0xeff0)
>+
>+/* memtest command */
>+#define CONFIG_SYS_MEMTEST_START        0x80000000
>+#define CONFIG_SYS_MEMTEST_END          0x9fffffff
>+
>+/* SMP */
>+#define CPU_RELEASE_ADDR              secondary_boot_func
>+
>+/* generic timer */
>+#define COUNTER_FREQUENCY             25000000
>+
>+/* size of malloc() pool */
>+#define CONFIG_SYS_MALLOC_LEN         (CONFIG_ENV_SIZE + 2048 *
>1024)
>+
>+/* early heap for SPL DM */
>+#define CONFIG_MALLOC_F_ADDR
>       CONFIG_SYS_FSL_OCRAM_BASE
>+
>+/* serial port */
>+#define CONFIG_SYS_NS16550_SERIAL
>+#define CONFIG_SYS_NS16550_REG_SIZE 1
>+#define CONFIG_SYS_NS16550_CLK          (get_bus_freq(0) / 2)
>+#define CONFIG_SYS_BAUDRATE_TABLE     { 9600, 19200, 38400, 57600,
>115200 }
>+
>+#define CONFIG_SYS_CLK_FREQ           100000000
>+#define CONFIG_DDR_CLK_FREQ           100000000
>+#define COUNTER_FREQUENCY_REAL                (CONFIG_SYS_CLK_FREQ / 4)
>+
>+/* MMC */
>+#ifdef CONFIG_MMC
>+#define CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33
>+#endif
>+
>+/* ethernet */
>+#define CONFIG_SYS_RX_ETH_BUFFER      8
>+
>+#ifdef CONFIG_SPL
>+#define CONFIG_SPL_TARGET             "u-boot-with-spl.bin"
>+#define CONFIG_SPL_BSS_START_ADDR     0x80100000
>+#define CONFIG_SPL_BSS_MAX_SIZE               0x00100000
>+#define CONFIG_SPL_MAX_SIZE           0x20000
>+#define CONFIG_SPL_STACK              (CONFIG_SYS_FSL_OCRAM_BASE +
>0x9ff0)
>+
>+#define CONFIG_SYS_SPL_MALLOC_SIZE    0x00100000
>+#define CONFIG_SYS_SPL_MALLOC_START   0x80200000
>+#define CONFIG_SYS_MONITOR_LEN                (1024 * 1024)
>+#define CONFIG_SYS_SPI_U_BOOT_SIZE    (0x100000 -
>(CONFIG_SYS_SPI_U_BOOT_OFFS)
>+#endif
>+
>+#ifdef CONFIG_SPL_BUILD
>+#define CONFIG_SYS_MONITOR_BASE               CONFIG_SPL_TEXT_BASE
>+#else
>+#define CONFIG_SYS_MONITOR_BASE               CONFIG_SYS_TEXT_BASE
>+#endif
>+
>+#define CONFIG_SYS_LOAD_ADDR
>       (CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000)
>+
>+/* environment */
>+/* allow to overwrite serial and ethaddr */ #define
>+CONFIG_ENV_OVERWRITE
>+
>+#define CONFIG_LOADADDR 0x81000000
>+#define ENV_MEM_LAYOUT_SETTINGS \
>+      "scriptaddr=0x90000000\0" \
>+      "pxefile_addr_r=0x90100000\0" \
>+      "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
>+      "fdt_addr_r=0x83000000\0" \
>+      "ramdisk_addr_r=0x83100000\0"
>+
>+#ifndef CONFIG_SPL_BUILD
>+#define BOOT_TARGET_DEVICES(func) \
>+      func(MMC, mmc, 1) \
>+      func(MMC, mmc, 0) \
>+      func(NVME, nvme, 0) \
>+      func(USB, usb, 0) \
>+      func(DHCP, dhcp, 0) \
>+      func(PXE, pxe, 0)
>+#include <config_distro_bootcmd.h>
>+#else
>+#define BOOTENV
>+#endif
>+
>+#define CONFIG_EXTRA_ENV_SETTINGS \
>+      "fdt_high=0xffffffffffffffff\0" \
>+      "initrd_high=0xffffffffffffffff\0" \
>+      "env_addr=0x203e0004\0" \
>+      "envload=env import -d -b ${env_addr}\0" \
>+      "install_rcw=source 20200000\0" \
>+      ENV_MEM_LAYOUT_SETTINGS \
>+      BOOTENV
>+
>+#endif /* __SL28_H */
>--
>2.20.1

Kindly fix below build error:

board/kontron/sl28/sl28.c: In function 'board_init':
+board/kontron/sl28/sl28.c:52:2: error: implicit declaration of function 
'pci_init'; did you mean 'phy_init'? [-Werror=implicit-function-declaration]
+   52 |  pci_init();
+      |  ^~~~~~~~
+      |  phy_init
+board/kontron/sl28/sl28.c: At top level:
+board/kontron/sl28/sl28.c:58:20: error: unknown type name 'bd_t'; did you mean 
'gd_t'?
+   58 | int board_eth_init(bd_t *bis)
+      |                    ^~~~
+      |                    gd_t
+board/kontron/sl28/sl28.c:71:32: error: unknown type name 'bd_t'; did you mean 
'gd_t'?
+   71 | int ft_board_setup(void *blob, bd_t *bd)
+      |                                ^~~~
+      |                                gd_t
+cc1: all warnings being treated as errors
+make[2]: *** [board/kontron/sl28/sl28.o] Error 1
+make[1]: *** [board/kontron/sl28] Error 2
+make: *** [sub-make] Error 2

Regards
Priyanka

Reply via email to