All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support
@ 2021-03-26 18:40 Michael Walle
  2021-03-26 18:40 ` [PATCH 1/5] armv8: fsl-layerscape: spl: add debug UART support Michael Walle
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

Enable DM_SERIAL for this board. For this to work, we first need to make
DM_SERIAL work on LS1028A SoCs, which just means we have to properly call
spl_early_init(). After this, clean up the board config by moving the
CONFIG_DM_* macros to Kconfig. Now we can switch to DM_SERIAL. As the last
patch, provide a configuration option to switch the output to the first
serial line on this board, which is not possible because we can enable
LPUART support (which needs DM_SERIAL).

Please note, the first patch is not really required but helps a lot in
debugging early startup on Layerscape SoCs.

Michael Walle (5):
  armv8: fsl-layerscape: spl: add debug UART support
  armv8: fsl-layerscape: spl: call spl_early_init()
  board: sl28: move DM_* configs to Kconfig
  board: sl28: enable DM_SERIAL
  board: sl28: add config to enable console output on SER0

 arch/arm/Kconfig                              | 20 +++++++++++++++++++
 arch/arm/cpu/armv8/fsl-layerscape/spl.c       | 11 ++++++++++
 .../dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi  | 12 +++++++++++
 board/kontron/sl28/Kconfig                    | 10 ++++++++++
 board/kontron/sl28/Makefile                   |  2 +-
 board/kontron/sl28/common.c                   | 11 ++++++++++
 configs/kontron_sl28_defconfig                | 17 ----------------
 include/configs/kontron_sl28.h                |  2 --
 8 files changed, 65 insertions(+), 20 deletions(-)
 create mode 100644 board/kontron/sl28/common.c

-- 
2.20.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/5] armv8: fsl-layerscape: spl: add debug UART support
  2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
@ 2021-03-26 18:40 ` Michael Walle
  2021-03-26 18:40 ` [PATCH 2/5] armv8: fsl-layerscape: spl: call spl_early_init() Michael Walle
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

To use the debug UART we have to call debug_uart_init() in the SPL. Do
so as soon as possible.

As an example, here is how you can use it on a LS1028A SoC:
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_BASE=0x21c0500
CONFIG_DEBUG_UART_CLOCK=200000000

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm/cpu/armv8/fsl-layerscape/spl.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index d5131bcf4b..888c02f6c5 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <clock_legacy.h>
 #include <cpu_func.h>
+#include <debug_uart.h>
 #include <env.h>
 #include <image.h>
 #include <init.h>
@@ -70,6 +71,8 @@ void board_init_f(ulong dummy)
 	icache_enable();
 	/* Clear global data */
 	memset((void *)gd, 0, sizeof(gd_t));
+	if (IS_ENABLED(CONFIG_DEBUG_UART))
+		debug_uart_init();
 	board_early_init_f();
 	timer_init();
 #ifdef CONFIG_ARCH_LS2080A
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/5] armv8: fsl-layerscape: spl: call spl_early_init()
  2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
  2021-03-26 18:40 ` [PATCH 1/5] armv8: fsl-layerscape: spl: add debug UART support Michael Walle
@ 2021-03-26 18:40 ` Michael Walle
  2021-03-26 18:40 ` [PATCH 3/5] board: sl28: move DM_* configs to Kconfig Michael Walle
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

DM_SERIAL needs both the device tree as well as an early heap. Thus, we
have to call spl_early_init() to initialize the memory allocator and the
setup the device tree.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm/cpu/armv8/fsl-layerscape/spl.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index 888c02f6c5..01dd6a30e8 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -8,6 +8,7 @@
 #include <cpu_func.h>
 #include <debug_uart.h>
 #include <env.h>
+#include <hang.h>
 #include <image.h>
 #include <init.h>
 #include <log.h>
@@ -68,12 +69,19 @@ void spl_board_init(void)
 
 void board_init_f(ulong dummy)
 {
+	int ret;
+
 	icache_enable();
 	/* Clear global data */
 	memset((void *)gd, 0, sizeof(gd_t));
 	if (IS_ENABLED(CONFIG_DEBUG_UART))
 		debug_uart_init();
 	board_early_init_f();
+	ret = spl_early_init();
+	if (ret) {
+		debug("spl_early_init() failed: %d\n", ret);
+		hang();
+	}
 	timer_init();
 #ifdef CONFIG_ARCH_LS2080A
 	env_init();
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/5] board: sl28: move DM_* configs to Kconfig
  2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
  2021-03-26 18:40 ` [PATCH 1/5] armv8: fsl-layerscape: spl: add debug UART support Michael Walle
  2021-03-26 18:40 ` [PATCH 2/5] armv8: fsl-layerscape: spl: call spl_early_init() Michael Walle
@ 2021-03-26 18:40 ` Michael Walle
  2021-03-26 18:40 ` [PATCH 4/5] board: sl28: enable DM_SERIAL Michael Walle
  2021-03-26 18:40 ` [PATCH 5/5] board: sl28: add config to enable console output on SER0 Michael Walle
  4 siblings, 0 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

Move the CONFIG_DM_* from the defconfig to the TARGET_SL28 config.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm/Kconfig               | 19 +++++++++++++++++++
 configs/kontron_sl28_defconfig | 17 -----------------
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 3307f2b3fc..d72c2520d1 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1624,6 +1624,25 @@ config TARGET_SL28
 	select ARMV8_MULTIENTRY
 	select SUPPORT_SPL
 	select BINMAN
+	select DM
+	select DM_GPIO
+	select DM_I2C
+	select DM_MMC
+	select DM_SPI_FLASH
+	select DM_ETH
+	select DM_MDIO
+	select DM_PCI
+	select DM_RNG
+	select DM_RTC
+	select DM_SCSI
+	select DM_SPI
+	select DM_USB
+	select SPL_DM if SPL
+	select SPL_DM_SPI if SPL
+	select SPL_DM_SPI_FLASH if SPL
+	select SPL_DM_I2C if SPL
+	select SPL_DM_MMC if SPL
+	select SPL_DM_SERIAL if SPL
 	help
 	  Support for Kontron SMARC-sAL28 board.
 
diff --git a/configs/kontron_sl28_defconfig b/configs/kontron_sl28_defconfig
index 1c781e091c..98718db5c2 100644
--- a/configs/kontron_sl28_defconfig
+++ b/configs/kontron_sl28_defconfig
@@ -8,8 +8,6 @@ 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_SPL_DM_SPI=y
 CONFIG_SPL_TEXT_BASE=0x18010000
 CONFIG_SYS_FSL_SDHC_CLK_DIV=1
 CONFIG_SPL_SERIAL_SUPPORT=y
@@ -35,7 +33,6 @@ CONFIG_PCI_INIT_R=y
 CONFIG_SPL_BOARD_INIT=y
 CONFIG_SPL_SEPARATE_BSS=y
 CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT=y
-CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPL_SPI_LOAD=y
 CONFIG_CMD_ASKENV=y
 CONFIG_CMD_GREPENV=y
@@ -58,52 +55,38 @@ 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_SATA_CEVA=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_MMC_HS400_SUPPORT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_FSL_ESDHC_SUPPORT_ADMA2=y
-CONFIG_DM_SPI_FLASH=y
 # CONFIG_SPI_FLASH_UNLOCK_ALL is not set
 CONFIG_SPI_FLASH_WINBOND=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
 CONFIG_PHY_ATHEROS=y
 CONFIG_PHY_FIXED=y
-CONFIG_DM_ETH=y
-CONFIG_DM_MDIO=y
 CONFIG_DM_DSA=y
 CONFIG_PHY_GIGE=y
 CONFIG_E1000=y
 CONFIG_MSCC_FELIX_SWITCH=y
 CONFIG_NVME=y
 CONFIG_PCI=y
-CONFIG_DM_PCI=y
-CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_ECAM_GENERIC=y
 CONFIG_PCIE_LAYERSCAPE_RC=y
-CONFIG_DM_RNG=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
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/5] board: sl28: enable DM_SERIAL
  2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
                   ` (2 preceding siblings ...)
  2021-03-26 18:40 ` [PATCH 3/5] board: sl28: move DM_* configs to Kconfig Michael Walle
@ 2021-03-26 18:40 ` Michael Walle
  2021-03-26 18:40 ` [PATCH 5/5] board: sl28: add config to enable console output on SER0 Michael Walle
  4 siblings, 0 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

With all preparations in place, switch over to DM_SERIAL.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm/Kconfig               | 1 +
 include/configs/kontron_sl28.h | 2 --
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index d72c2520d1..2ee4f10e39 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1635,6 +1635,7 @@ config TARGET_SL28
 	select DM_RNG
 	select DM_RTC
 	select DM_SCSI
+	select DM_SERIAL
 	select DM_SPI
 	select DM_USB
 	select SPL_DM if SPL
diff --git a/include/configs/kontron_sl28.h b/include/configs/kontron_sl28.h
index 5d818a708d..5f11205802 100644
--- a/include/configs/kontron_sl28.h
+++ b/include/configs/kontron_sl28.h
@@ -49,8 +49,6 @@
 #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 }
 
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 5/5] board: sl28: add config to enable console output on SER0
  2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
                   ` (3 preceding siblings ...)
  2021-03-26 18:40 ` [PATCH 4/5] board: sl28: enable DM_SERIAL Michael Walle
@ 2021-03-26 18:40 ` Michael Walle
  4 siblings, 0 replies; 6+ messages in thread
From: Michael Walle @ 2021-03-26 18:40 UTC (permalink / raw)
  To: u-boot

Sometimes it is desireable to have the console output on the first
serial line. Introduce a configuration option for it (in the board
scope).

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm/dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi | 12 ++++++++++++
 board/kontron/sl28/Kconfig                        | 10 ++++++++++
 board/kontron/sl28/Makefile                       |  2 +-
 board/kontron/sl28/common.c                       | 11 +++++++++++
 4 files changed, 34 insertions(+), 1 deletion(-)
 create mode 100644 board/kontron/sl28/common.c

diff --git a/arch/arm/dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi b/arch/arm/dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi
index 240178ab4e..b3861ed98c 100644
--- a/arch/arm/dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi
+++ b/arch/arm/dts/fsl-ls1028a-kontron-sl28-u-boot.dtsi
@@ -133,6 +133,14 @@
 	};
 };
 
+#ifdef CONFIG_SL28_ENABLE_SER0_CONSOLE
+/ {
+	chosen {
+		stdout-path = "serial2:115200n8";
+	};
+};
+#endif
+
 #ifdef CONFIG_SL28_SPL_LOADS_ATF_BL31
 &binman {
 	fit {
@@ -250,6 +258,10 @@
 	u-boot,dm-pre-reloc;
 };
 
+&lpuart1 {
+	u-boot,dm-pre-reloc;
+};
+
 &serial0 {
 	u-boot,dm-pre-reloc;
 };
diff --git a/board/kontron/sl28/Kconfig b/board/kontron/sl28/Kconfig
index 4078ef186b..abcacc3185 100644
--- a/board/kontron/sl28/Kconfig
+++ b/board/kontron/sl28/Kconfig
@@ -48,4 +48,14 @@ config SL28_BL32_ENTRY_ADDR
 
 endif
 
+config SL28_ENABLE_SER0_CONSOLE
+	bool "Enable console output on SER0"
+	select DM_SERIAL
+	select SPL_DM_SERIAL
+	select FSL_LPUART
+	help
+	  By default the console output of this board is on the second serial
+	  line (SER1). Sometimes it is desirable to enable output on the first
+	  serial line (SER0). For example, if you have a carrier which only
+	  supports the first serial port.
 endif
diff --git a/board/kontron/sl28/Makefile b/board/kontron/sl28/Makefile
index 147ef9872b..5d220f0744 100644
--- a/board/kontron/sl28/Makefile
+++ b/board/kontron/sl28/Makefile
@@ -4,7 +4,7 @@ ifndef CONFIG_SPL_BUILD
 obj-y += sl28.o cmds.o
 endif
 
-obj-y += ddr.o
+obj-y += common.o ddr.o
 
 ifdef CONFIG_SPL_BUILD
 obj-y += spl.o
diff --git a/board/kontron/sl28/common.c b/board/kontron/sl28/common.c
new file mode 100644
index 0000000000..33c6843c3f
--- /dev/null
+++ b/board/kontron/sl28/common.c
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <asm/global_data.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+u32 get_lpuart_clk(void)
+{
+	return gd->bus_clk / CONFIG_SYS_FSL_LPUART_CLK_DIV;
+}
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-03-26 18:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-26 18:40 [PATCH 0/5] board: sl28: enable DM_SERIAL and lpuart support Michael Walle
2021-03-26 18:40 ` [PATCH 1/5] armv8: fsl-layerscape: spl: add debug UART support Michael Walle
2021-03-26 18:40 ` [PATCH 2/5] armv8: fsl-layerscape: spl: call spl_early_init() Michael Walle
2021-03-26 18:40 ` [PATCH 3/5] board: sl28: move DM_* configs to Kconfig Michael Walle
2021-03-26 18:40 ` [PATCH 4/5] board: sl28: enable DM_SERIAL Michael Walle
2021-03-26 18:40 ` [PATCH 5/5] board: sl28: add config to enable console output on SER0 Michael Walle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.