
On 11/28/23 05:34, Artur Rojek wrote:
Introduce support for Conclusive WHLE-LS1046A Single Board Computer.
Co-developed-by: Jakub Klama jakub@conclusive.pl Signed-off-by: Jakub Klama jakub@conclusive.pl Signed-off-by: Artur Rojek artur@conclusive.pl
v3: no change
v2: - drop non-DM_ETH case - clean-up defines in configs/whle_ls1046a.h: remove unneeded ones, move others to appropriate files in board directory - move environment variables to whle-ls1046a.env - move away from distro_bootcmd and use BOOTSTD - fix i2c-mux node parent and ext_i2c address in Device Tree - style changes to eth.c - fix CONFIG_MTDPARTS_DEFAULT value in defconfigs
arch/arm/Kconfig | 19 ++ arch/arm/dts/Makefile | 1 + arch/arm/dts/fsl-ls1046a-whle.dts | 208 +++++++++++++++++ board/conclusive/whle-ls1046a/Kconfig | 15 ++ board/conclusive/whle-ls1046a/MAINTAINERS | 9 + board/conclusive/whle-ls1046a/Makefile | 7 + board/conclusive/whle-ls1046a/ddr.c | 21 ++ board/conclusive/whle-ls1046a/eth.c | 65 ++++++ board/conclusive/whle-ls1046a/whle-ls1046a.c | 215 ++++++++++++++++++ .../conclusive/whle-ls1046a/whle-ls1046a.env | 13 ++ configs/whle_ls1046a_emmc_defconfig | 83 +++++++ configs/whle_ls1046a_qspi_defconfig | 84 +++++++ include/configs/whle_ls1046a.h | 47 ++++ 13 files changed, 787 insertions(+) create mode 100644 arch/arm/dts/fsl-ls1046a-whle.dts create mode 100644 board/conclusive/whle-ls1046a/Kconfig create mode 100644 board/conclusive/whle-ls1046a/MAINTAINERS create mode 100644 board/conclusive/whle-ls1046a/Makefile create mode 100644 board/conclusive/whle-ls1046a/ddr.c create mode 100644 board/conclusive/whle-ls1046a/eth.c create mode 100644 board/conclusive/whle-ls1046a/whle-ls1046a.c create mode 100644 board/conclusive/whle-ls1046a/whle-ls1046a.env create mode 100644 configs/whle_ls1046a_emmc_defconfig create mode 100644 configs/whle_ls1046a_qspi_defconfig create mode 100644 include/configs/whle_ls1046a.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d812685c9842..609571e6e421 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1851,6 +1851,24 @@ config TARGET_SL28 help Support for Kontron SMARC-sAL28 board.
+config TARGET_WHLE_LS1046A
- bool "Support Conclusive WHLE-LS1046A"
- select ARCH_LS1046A
- select ARM64
- select ARMV8_MULTIENTRY
- select ARCH_SUPPORT_TFABOOT
- select BOARD_EARLY_INIT_F
- select BOARD_LATE_INIT
- select GPIO_EXTRA_HEADER
- select DM_SPI_FLASH if DM_SPI
- imply SCSI
- help
Support for Conclusive WHLE-LS1046A platform.
The WHLE-LS1046A is a high-performance Single Board Computer with
extensive connectivity features that supports the QorIQ LS1046A
Layerscape Architecture processor:
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2fconclusive.tech%2fproducts%2fwhle%2dls1%2dsbc%2f&umid=bfe70e04-e3cb-4832-a510-cd7686941d3c&auth=d807158c60b7d2502abde8a2fc01f40662980862-65691d364ff53ae48e02cdbc52323838b4503b62
config TARGET_TEN64 bool "Support ten64" select ARCH_LS1088A @@ -2299,6 +2317,7 @@ source "board/cortina/presidio-asic/Kconfig" source "board/broadcom/bcmns/Kconfig" source "board/broadcom/bcmns3/Kconfig" source "board/cavium/thunderx/Kconfig" +source "board/conclusive/whle-ls1046a/Kconfig" source "board/eets/pdu001/Kconfig" source "board/emulation/qemu-arm/Kconfig" source "board/freescale/ls2080aqds/Kconfig" diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 1be08c5fdc2e..8dcbf29df363 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -615,6 +615,7 @@ dtb-$(CONFIG_FSL_LSCH2) += fsl-ls1043a-qds-duart.dtb \ fsl-ls1046a-qds-lpuart.dtb \ fsl-ls1046a-rdb.dtb \ fsl-ls1046a-frwy.dtb \
- fsl-ls1046a-whle.dtb \ fsl-ls1012a-qds.dtb \ fsl-ls1012a-rdb.dtb \ fsl-ls1012a-2g5rdb.dtb \
diff --git a/arch/arm/dts/fsl-ls1046a-whle.dts b/arch/arm/dts/fsl-ls1046a-whle.dts new file mode 100644 index 000000000000..1aed3e8c4701 --- /dev/null +++ b/arch/arm/dts/fsl-ls1046a-whle.dts @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: GPL-2.0+ OR X11 +/*
- Copyright 2020-2023 Conclusive Engineering Sp. z o. o.
- */
+#include <dt-bindings/gpio/gpio.h>
+/dts-v1/; +#include "fsl-ls1046a.dtsi"
+/ {
- model = "Conclusive WHLE-LS1046A";
- compatible = "conclusive,whle-ls1046a", "fsl,ls1046a";
- chosen {
stdout-path = &duart0;
- };
- aliases {
spi0 = &qspi;
- };
+};
+&soc {
- pcie@3400000 {
status = "okay";
- };
+};
+&qspi {
- status = "okay";
- gd25lq128: flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
spi-max-frequency = <50000000>;
reg = <0>;
partitions {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fixed-partitions";
partition@0 {
label = "bl2";
reg = <0 0x100000>;
};
partition@100000 {
label = "fip1";
reg = <0x100000 0x400000>;
};
partition@500000 {
label = "fip2";
reg = <0x500000 0x400000>;
};
partition@900000 {
label = "uboot-env";
reg = <0x900000 0x10000>;
};
partition@910000 {
label = "fman-firmware";
reg = <0x910000 0x200000>;
};
partition@a10000 {
label = "dtb";
reg = <0xa10000 0x10000>;
};
};
- };
+};
+&i2c0 {
- status = "okay";
- spd@50 {
compatible = "spd";
reg = <0x50>;
status = "okay";
- };
- eeprom@56 {
compatible = "atmel,24c64";
reg = <0x56>;
status = "okay";
- };
- eeprom@57 {
compatible = "24c01";
reg = <0x57>;
status = "okay";
- };
- leds@62 {
compatible = "nxp,pca9633";
reg = <0x62>;
status = "okay";
- };
- rtc@6f {
compatible = "microchip,mcp7941x";
reg = <0x6f>;
status = "okay";
- };
+};
+&i2c2 {
- status = "okay";
- i2c-mux@70 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "nxp,pca9546";
reg = <0x70>;
status = "okay";
pcie0_i2c: i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
};
sfp0_i2c: i2c@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
};
sfp1_i2c: i2c@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
};
ext_i2c: i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
};
- };
+};
+#include "fsl-ls1046-post.dtsi"
+&fman0 {
- ethernet@e4000 {
phy-handle = <&rgmii_phy0>;
phy-connection-type = "rgmii-id";
status = "okay";
- };
- ethernet@e6000 {
phy-handle = <&rgmii_phy1>;
phy-connection-type = "rgmii-id";
status = "okay";
- };
- ethernet@e8000 {
phy-handle = <&sgmii_phy2>;
phy-connection-type = "sgmii";
status = "okay";
- };
- ethernet@ea000 {
phy-handle = <&sgmii_phy3>;
phy-connection-type = "sgmii";
status = "okay";
- };
- ethernet@f0000 { /* 10GEC1 */
fixed-link = <0 1 1000 0 0>;
Should this be
managed = "in-band-status"; sfp = <&sfp0>;
or do you actually have a fixed link
phy-connection-type = "xgmii";
Should be 10gbase-x
status = "okay";
- };
- ethernet@f2000 { /* 10GEC2 */
fixed-link = <0 1 1000 0 0>;
phy-connection-type = "xgmii";
status = "okay";
- };
- mdio@fc000 {
rgmii_phy0: ethernet-phy@1 {
reg = <0x1>;
Missing compatible.
};
rgmii_phy1: ethernet-phy@2 {
reg = <0x2>;
};
sgmii_phy2: ethernet-phy@3 {
reg = <0x3>;
};
sgmii_phy3: ethernet-phy@4 {
reg = <0x4>;
};
- };
+};
+&duart0 {
- status = "okay";
+}; diff --git a/board/conclusive/whle-ls1046a/Kconfig b/board/conclusive/whle-ls1046a/Kconfig new file mode 100644 index 000000000000..5778fbd5cd22 --- /dev/null +++ b/board/conclusive/whle-ls1046a/Kconfig @@ -0,0 +1,15 @@ +if TARGET_WHLE_LS1046A
+config SYS_BOARD
- default "whle-ls1046a"
+config SYS_VENDOR
- default "conclusive"
+config SYS_SOC
- default "fsl-layerscape"
+config SYS_CONFIG_NAME
- default "whle_ls1046a"
+endif diff --git a/board/conclusive/whle-ls1046a/MAINTAINERS b/board/conclusive/whle-ls1046a/MAINTAINERS new file mode 100644 index 000000000000..1dcf067a06d8 --- /dev/null +++ b/board/conclusive/whle-ls1046a/MAINTAINERS @@ -0,0 +1,9 @@ +WHLE-LS1046A Board +M: Jakub Klama jakub@conclusive.pl +M: Artur Rojek artur@conclusive.pl +S: Maintained +F: board/conclusive/whle-ls1046a +F: include/configs/whle_ls1046a.h +F: configs/whle_ls1046a_emmc_defconfig +F: configs/whle_ls1046a_qspi_defconfig +F: arch/arm/dts/fsl-ls1046a-whle.dts diff --git a/board/conclusive/whle-ls1046a/Makefile b/board/conclusive/whle-ls1046a/Makefile new file mode 100644 index 000000000000..9197ec93a6de --- /dev/null +++ b/board/conclusive/whle-ls1046a/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright 2020-2023 Conclusive Engineering Sp. z o. o.
+obj-y += ddr.o +obj-y += whle-ls1046a.o +obj-$(CONFIG_NET) += eth.o diff --git a/board/conclusive/whle-ls1046a/ddr.c b/board/conclusive/whle-ls1046a/ddr.c new file mode 100644 index 000000000000..cbefc779d55d --- /dev/null +++ b/board/conclusive/whle-ls1046a/ddr.c @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/*
- Copyright 2019 NXP
- Copyright 2020-2023 Conclusive Engineering Sp. z o. o.
- */
+#include <config.h> +#include <fsl_ddr_sdram.h> +#include <asm/global_data.h>
+DECLARE_GLOBAL_DATA_PTR;
+int fsl_initdram(void) +{
- gd->ram_size = tfa_get_dram_size();
- if (!gd->ram_size)
gd->ram_size = fsl_ddr_sdram_size();
- return 0;
+} diff --git a/board/conclusive/whle-ls1046a/eth.c b/board/conclusive/whle-ls1046a/eth.c new file mode 100644 index 000000000000..05b83352b0ab --- /dev/null +++ b/board/conclusive/whle-ls1046a/eth.c @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: GPL-2.0+ +/*
- Copyright 2019 NXP
- Copyright 2020-2023 Conclusive Engineering Sp. z o. o.
- */
+#include <config.h> +#include <fdt_support.h> +#include <net.h> +#include <asm/io.h> +#include <netdev.h> +#include <fm_eth.h> +#include <fsl_dtsec.h> +#include <fsl_mdio.h>
+#define RGMII_PHY1_ADDR 0x01 +#define RGMII_PHY2_ADDR 0x02 +#define SGMII_PHY3_ADDR 0x03 +#define SGMII_PHY4_ADDR 0x04
+int board_eth_init(struct bd_info *bis) +{ +#ifdef CONFIG_FMAN_ENET
- struct memac_mdio_info dtsec_mdio_info;
- struct memac_mdio_controller *regs;
- struct mii_dev *dev;
- u32 srds;
- struct ccsr_gur *gur = (struct ccsr_gur *)(CFG_SYS_FSL_GUTS_ADDR);
- srds = in_be32(&gur->rcwsr[4]) & FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_MASK;
- srds >>= FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT;
- if (srds != 0x1133 && srds != 0x3333)
printf("Invalid SerDes protocol 0x%x for WHLE-LS1046A\n", srds);
- regs = (struct memac_mdio_controller *)CFG_SYS_FM1_DTSEC_MDIO_ADDR;
- dtsec_mdio_info.regs = regs;
- dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
- /* Register the 1G MDIO bus */
- fm_memac_mdio_init(bis, &dtsec_mdio_info);
- /* RGMII on MAC 3 and 4, SGMII on MAC 5 and 6 */
- fm_info_set_phy_address(FM1_DTSEC3, RGMII_PHY1_ADDR);
- fm_info_set_phy_address(FM1_DTSEC4, RGMII_PHY2_ADDR);
- fm_info_set_phy_address(FM1_DTSEC5, SGMII_PHY3_ADDR);
- fm_info_set_phy_address(FM1_DTSEC6, SGMII_PHY4_ADDR);
- dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
- fm_info_set_mdio(FM1_DTSEC3, dev);
- fm_info_set_mdio(FM1_DTSEC4, dev);
- fm_info_set_mdio(FM1_DTSEC5, dev);
- fm_info_set_mdio(FM1_DTSEC6, dev);
- cpu_eth_init(bis);
+#endif
- return pci_eth_init(bis);
+}
+#ifdef CONFIG_FMAN_ENET +int fdt_update_ethernet_dt(void *blob) +{
- return 0;
+} +#endif diff --git a/board/conclusive/whle-ls1046a/whle-ls1046a.c b/board/conclusive/whle-ls1046a/whle-ls1046a.c new file mode 100644 index 000000000000..6b4bd149cdb2 --- /dev/null +++ b/board/conclusive/whle-ls1046a/whle-ls1046a.c @@ -0,0 +1,215 @@ +// SPDX-License-Identifier: GPL-2.0+ +/*
- whle-ls1046a.c - Board init file for Conclusive WHLE-LS1046A board
- Copyright (C) 2020-2023 Conclusive Engineering Sp. z o. o.
- */
+#include <config.h> +#include <i2c.h> +#include <fdt_support.h> +#include <init.h> +#include <env.h> +#include <asm/io.h> +#include <asm/arch/clock.h> +#include <asm/arch/fsl_serdes.h> +#include <asm/arch/soc.h> +#include <asm/arch-fsl-layerscape/fsl_icid.h> +#include <hwconfig.h> +#include <ahci.h> +#include <mmc.h> +#include <scsi.h> +#include <fm_eth.h> +#include <fsl_csu.h> +#include <fsl_esdhc.h> +#include <fsl_sec.h> +#include <fsl_dspi.h>
+#define BOARD_REV_MASK 0x0f +#define SPI_MCR_REG 0x2100000
+/* Retimer */ +#define I2C_RETIMER_BUS 0 +#define I2C_RETIMER_ADDR 0x18
+DECLARE_GLOBAL_DATA_PTR;
+static inline void set_spi_cs_signal_inactive(void) +{
- /* default: all CS signals inactive state is high */
- uint mcr_val;
- uint mcr_cfg_val = DSPI_MCR_MSTR | DSPI_MCR_PCSIS_MASK |
DSPI_MCR_CRXF | DSPI_MCR_CTXF;
- mcr_val = in_be32(SPI_MCR_REG);
- mcr_val |= DSPI_MCR_HALT;
- out_be32(SPI_MCR_REG, mcr_val);
- out_be32(SPI_MCR_REG, mcr_cfg_val);
- mcr_val = in_be32(SPI_MCR_REG);
- mcr_val &= ~DSPI_MCR_HALT;
- out_be32(SPI_MCR_REG, mcr_val);
Shouldn't the SPI driver handle this?
+}
+int board_early_init_f(void) +{
- fsl_lsch2_early_init_f();
- return 0;
+}
+static inline uint8_t get_board_version(void) +{
- struct ccsr_gur __iomem *gur = (void *)(CFG_SYS_FSL_GUTS_ADDR);
- return in_be32(&gur->gpporcr1) & BOARD_REV_MASK;
+}
+static int settings_r(void) +{
- serial_read_from_eeprom(0);
- return 0;
+} +EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r);
+#if defined(CONFIG_DISPLAY_BOARDINFO_LATE) +int checkboard(void) +{
- const char *serial_number = env_get("serial#");
- printf("Board: WHLE-LS1046A, Rev: %s\n",
get_board_version() == 0x00 ? "0" : "unknown");
- if (!serial_number)
printf("Warning: unknown serial number.\n");
- else
printf("S/N: %s\n", serial_number);
- return 0;
+} +#endif
+static void board_retimer_init_rx(struct udevice *dev, int chnum) +{
- /* Select channel */
- dm_i2c_reg_write(dev, 0xff, chnum);
- /* Initialize receive channel */
- dm_i2c_reg_clrset(dev, 0x00, 0x04, 0x04);
- dm_i2c_reg_clrset(dev, 0x0a, 0x0c, 0x0c);
- dm_i2c_reg_clrset(dev, 0x2f, 0xf0, 0xc0);
- dm_i2c_reg_clrset(dev, 0x31, 0x60, 0x00);
- dm_i2c_reg_clrset(dev, 0x03, 0xff, 0x00);
- dm_i2c_reg_clrset(dev, 0x3a, 0xff, 0x00);
- dm_i2c_reg_clrset(dev, 0x40, 0xff, 0x00);
- dm_i2c_reg_clrset(dev, 0x1e, 0x08, 0x08);
- dm_i2c_reg_clrset(dev, 0x2d, 0x08, 0x08);
- dm_i2c_reg_clrset(dev, 0x2d, 0x07, 0x02);
- dm_i2c_reg_clrset(dev, 0x15, 0x47, 0x00);
- dm_i2c_reg_clrset(dev, 0x0a, 0x0c, 0x00);
+}
+static void board_retimer_init_tx(struct udevice *dev, int chnum) +{
- /* Select channel */
- dm_i2c_reg_write(dev, 0xff, chnum);
- /* Initialize transmit channel */
- dm_i2c_reg_clrset(dev, 0x00, 0x04, 0x04);
- dm_i2c_reg_clrset(dev, 0x0a, 0x0c, 0x0c);
- dm_i2c_reg_clrset(dev, 0x2f, 0xf0, 0xc0);
- dm_i2c_reg_clrset(dev, 0x31, 0x20, 0x20);
- dm_i2c_reg_clrset(dev, 0x3a, 0xff, 0x00);
- dm_i2c_reg_clrset(dev, 0x1e, 0x08, 0x08);
- dm_i2c_reg_clrset(dev, 0x2d, 0x07, 0x00);
- dm_i2c_reg_clrset(dev, 0x15, 0x47, 0x00);
- dm_i2c_reg_clrset(dev, 0x0a, 0x0c, 0x00);
+}
+static void board_retimer_init(void) +{
- struct udevice *dev;
- i2c_get_chip_for_busnum(I2C_RETIMER_BUS, I2C_RETIMER_ADDR, 1, &dev);
- board_retimer_init_tx(dev, 0x04);
- board_retimer_init_rx(dev, 0x05);
- board_retimer_init_tx(dev, 0x06);
- board_retimer_init_rx(dev, 0x07);
+}
+int board_init(void) +{ +#ifdef CONFIG_NXP_ESBC
- /*
* In case of Secure Boot, the IBR configures the SMMU
* to allow only Secure transactions.
* SMMU must be reset in bypass mode.
* Set the ClientPD bit and Clear the USFCFG Bit
*/
- u32 val;
- val = (in_le32(SMMU_SCR0) | SCR0_CLIENTPD_MASK) & ~(SCR0_USFCFG_MASK);
- out_le32(SMMU_SCR0, val);
- val = (in_le32(SMMU_NSCR0) | SCR0_CLIENTPD_MASK) & ~(SCR0_USFCFG_MASK);
- out_le32(SMMU_NSCR0, val);
+#endif
+#ifdef CONFIG_FSL_CAAM
- sec_init();
+#endif
- board_retimer_init();
- return 0;
Do you need to call pci_init here?
+}
+int board_setup_core_volt(u32 vdd) +{
- return 0;
+}
+static void board_config_mux(void) +{
- struct ccsr_scfg *scfg = (struct ccsr_scfg *)CFG_SYS_FSL_SCFG_ADDR;
- u32 usb_pwrfault;
- /* Configure IRQ01 and IRQ02 lines polarity to negated */
- out_be32(&scfg->intpcr, 0x60000000);
- /*
* IIC3 is used, configure mux to IIC3_SCL/IIC3/SDA
* IIC4 is not used, configure mux to USB3_DRVVBUS/USB3_PWRFAULT
*/
- out_be32(&scfg->rcwpmuxcr0, 0x0033);
- out_be32(&scfg->usbdrvvbus_selcr, SCFG_USBDRVVBUS_SELCR_USB1);
- usb_pwrfault =
(SCFG_USBPWRFAULT_DEDICATED << SCFG_USBPWRFAULT_USB3_SHIFT) |
(SCFG_USBPWRFAULT_SHARED << SCFG_USBPWRFAULT_USB2_SHIFT) |
(SCFG_USBPWRFAULT_SHARED << SCFG_USBPWRFAULT_USB1_SHIFT);
- out_be32(&scfg->usbpwrfault_selcr, usb_pwrfault);
- set_spi_cs_signal_inactive();
Why not pinctrl for this? On my board I have e.g.
pinctrl@157040c { compatible = "pinctrl-single"; reg = <0 0x157040c 0 4>; #pinctrl-cells = <2>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0xf>; pinctrl-single,bit-per-mux;
/* This register is big endian! */ i2c2_pins: i2c2-pins { pinctrl-single,bits = <0 0x00000000 0x00ff0000>; };
i2c3_pins: i2c3-pins { pinctrl-single,bits = <0 0x00000000 0xff000000>; }; };
and then e.g. over in i2c2 I have
&i2c2 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins>; };
of course you would modify this to mux USB instead.
+}
+#ifdef CONFIG_MISC_INIT_R +int misc_init_r(void) +{
- board_config_mux();
- return 0;
+} +#endif
+int ft_board_setup(void *blob, struct bd_info *bd) +{
- u64 base[CONFIG_NR_DRAM_BANKS];
- u64 size[CONFIG_NR_DRAM_BANKS];
- /* fixup DT for the two DDR banks */
- base[0] = gd->bd->bi_dram[0].start;
- size[0] = gd->bd->bi_dram[0].size;
- base[1] = gd->bd->bi_dram[1].start;
- size[1] = gd->bd->bi_dram[1].size;
- fdt_fixup_memory_banks(blob, base, size, 2);
- ft_cpu_setup(blob, bd);
- fdt_fixup_icid(blob);
- return 0;
+} diff --git a/board/conclusive/whle-ls1046a/whle-ls1046a.env b/board/conclusive/whle-ls1046a/whle-ls1046a.env new file mode 100644 index 000000000000..fd82a9a6b1d8 --- /dev/null +++ b/board/conclusive/whle-ls1046a/whle-ls1046a.env @@ -0,0 +1,13 @@ +hwconfig=fsl_ddr:bank_intlv=auto +kernel_addr_r=0x81000000 +kernel_size=0x07000000 +kernel_comp_addr_r=0x88000000 +kernel_comp_size=0x04000000 +ramdisk_addr_r=0x90000000 +ramdisk_size=0x08000000 +fdt_addr_r=0x98000000 +pxefile_addr_r=0x99000000 +scriptaddr=0x9a000000 +fdtfile=fsl-ls1046a-whle.dtb +console=ttyS0,115200 +fsl_bootcmd_mcinitcmd_set=y diff --git a/configs/whle_ls1046a_emmc_defconfig b/configs/whle_ls1046a_emmc_defconfig new file mode 100644 index 000000000000..a3104b0023e9 --- /dev/null +++ b/configs/whle_ls1046a_emmc_defconfig @@ -0,0 +1,83 @@ +CONFIG_ARM=y +CONFIG_COUNTER_FREQUENCY=25000000 +CONFIG_TARGET_WHLE_LS1046A=y +CONFIG_TFABOOT=y +CONFIG_TEXT_BASE=0x82000000 +CONFIG_NR_DRAM_BANKS=2 +CONFIG_ENV_SIZE=0x2000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-whle" +CONFIG_QSPI_AHB_INIT=y +CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y +CONFIG_SEC_FIRMWARE_ARMV8_PSCI=y +CONFIG_PCI=y +CONFIG_AHCI=y +CONFIG_MP=y +CONFIG_FIT_VERBOSE=y +CONFIG_BOOTSTD_FULL=y +CONFIG_BOOTSTD_DEFAULTS=y +CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTDELAY=10 +CONFIG_OF_BOARD_SETUP=y +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200 root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500"
You should just be able to use earlycon without args. And you shouldn't need console= either.
+# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_MISC_INIT_R=y +CONFIG_CMD_TLV_EEPROM=y +CONFIG_CMD_BOOTMENU=y +CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=5 +CONFIG_CMD_DM=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_MTD=y +CONFIG_CMD_PCI=y +CONFIG_CMD_USB=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_CONTROL=y +CONFIG_ENV_IS_IN_EXT4=y +CONFIG_ENV_EXT4_INTERFACE="mmc" +CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1" +CONFIG_ENV_EXT4_FILE="/boot/uboot.env" +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_USE_ETHPRIME=y +CONFIG_ETHPRIME="fm1-mac3" +CONFIG_FSL_CAAM=y +CONFIG_MPC8XXX_GPIO=y +CONFIG_DM_I2C=y +CONFIG_I2C_SET_DEFAULT_BUS_NUM=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_EEPROM=y +CONFIG_FSL_ESDHC=y +CONFIG_MTD=y +CONFIG_DM_MTD=y +CONFIG_MTD_SPI_NAND=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_PHYLIB=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_FIXED=y +CONFIG_DM_MDIO=y +CONFIG_PHY_GIGE=y +CONFIG_E1000=y +CONFIG_FMAN_ENET=y +CONFIG_SYS_FMAN_FW_ADDR=0x900000 +CONFIG_NVME_PCI=y +CONFIG_DM_PCI_COMPAT=y +CONFIG_PCIE_LAYERSCAPE_RC=y +CONFIG_SYS_QE_FMAN_FW_IN_MMC=y +CONFIG_DM_SCSI=y +CONFIG_SPECIFY_CONSOLE_INDEX=y +CONFIG_DM_SERIAL=y +CONFIG_SYS_NS16550=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_FSL_QSPI=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y diff --git a/configs/whle_ls1046a_qspi_defconfig b/configs/whle_ls1046a_qspi_defconfig new file mode 100644 index 000000000000..7d6a6ba50eaf --- /dev/null +++ b/configs/whle_ls1046a_qspi_defconfig @@ -0,0 +1,84 @@ +CONFIG_ARM=y +CONFIG_COUNTER_FREQUENCY=25000000 +CONFIG_TARGET_WHLE_LS1046A=y +CONFIG_TFABOOT=y +CONFIG_TEXT_BASE=0x82000000 +CONFIG_NR_DRAM_BANKS=2 +CONFIG_ENV_SIZE=0x10000 +CONFIG_ENV_OFFSET=0x900000 +CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-whle" +CONFIG_QSPI_AHB_INIT=y +CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y +CONFIG_SEC_FIRMWARE_ARMV8_PSCI=y +CONFIG_PCI=y +CONFIG_AHCI=y +CONFIG_MP=y +CONFIG_FIT_VERBOSE=y +CONFIG_BOOTSTD_FULL=y +CONFIG_BOOTSTD_DEFAULTS=y +CONFIG_BOOTSTD_BOOTCOMMAND=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTDELAY=10 +CONFIG_OF_BOARD_SETUP=y +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200 root=/dev/mmcblk0p1 earlycon=uart8250,mmio,0x21c0500"
ditto
+CONFIG_BOOTCOMMAND="sf probe; mtd read dtb $fdt_addr_r; bootflow scan -lb" +# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_MISC_INIT_R=y +CONFIG_CMD_TLV_EEPROM=y +CONFIG_CMD_BOOTMENU=y +CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=5 +CONFIG_CMD_DM=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_MTD=y +CONFIG_CMD_PCI=y +CONFIG_CMD_USB=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_CONTROL=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_ENV_SECT_SIZE_AUTO=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_USE_ETHPRIME=y +CONFIG_ETHPRIME="fm1-mac3" +CONFIG_FSL_CAAM=y +CONFIG_MPC8XXX_GPIO=y +CONFIG_DM_I2C=y +CONFIG_I2C_SET_DEFAULT_BUS_NUM=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_EEPROM=y +CONFIG_FSL_ESDHC=y +CONFIG_MTD=y +CONFIG_DM_MTD=y +CONFIG_MTD_SPI_NAND=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_PHYLIB=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_FIXED=y +CONFIG_DM_MDIO=y +CONFIG_PHY_GIGE=y +CONFIG_E1000=y +CONFIG_FMAN_ENET=y +CONFIG_SYS_FMAN_FW_ADDR=0x910000 +CONFIG_NVME_PCI=y +CONFIG_DM_PCI_COMPAT=y +CONFIG_PCIE_LAYERSCAPE_RC=y +CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH=y +CONFIG_DM_SCSI=y +CONFIG_SPECIFY_CONSOLE_INDEX=y +CONFIG_DM_SERIAL=y +CONFIG_SYS_NS16550=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_FSL_QSPI=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y diff --git a/include/configs/whle_ls1046a.h b/include/configs/whle_ls1046a.h new file mode 100644 index 000000000000..597d1b274940 --- /dev/null +++ b/include/configs/whle_ls1046a.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/*
- Copyright 2019-2020 NXP
- Copyright 2020-2023 Conclusive Engineering Sp. z o. o.
- */
+#ifndef __WHLE_LS1046A_H__ +#define __WHLE_LS1046A_H__
+#include <asm/arch/config.h> +#include <asm/arch/stream_id_lsch2.h> +#include <asm/arch/soc.h>
+#define CFG_SYS_UBOOT_BASE 0x40100000 +#define CFG_SYS_DDR_SDRAM_BASE 0x80000000 +#define CFG_SYS_SDRAM_BASE CFG_SYS_DDR_SDRAM_BASE +#define CFG_SYS_FSL_DDR_SDRAM_BASE_PHY 0 +#define CFG_SYS_DDR_BLOCK2_BASE 0x880000000ULL +#define CPU_RELEASE_ADDR secondary_boot_addr
+/* Serial Port */ +#define CFG_SYS_NS16550_CLK (get_serial_clock())
+/* Miscellaneous configurable options */ +#define HWCONFIG_BUFFER_SIZE 128
+/* I2C bus multiplexer */ +#define I2C_MUX_PCA_ADDR_PRI 0x77 /* Primary Mux*/ +#define I2C_MUX_CH_DEFAULT 0x1 /* Channel 0*/
use I2C_MUX
+/* RTC */ +#define RTC +#define CFG_SYS_I2C_RTC_ADDR 0x51 /* Channel 0 I2C bus 0*/ +#define CFG_SYS_RTC_BUS_NUM 0
Use DM_RTC.
+/* FMan */ +#ifdef CONFIG_FMAN_ENET +#define CFG_SYS_FM_MURAM_SIZE 0x60000 +#define FDT_SEQ_MACADDR_FROM_ENV +#endif
+/* TF-A */
this is not related to tfa
+#define QSPI_NOR_BOOTCOMMAND CONFIG_BOOTCOMMAND +#define QSPI_NAND_BOOTCOMMAND CONFIG_BOOTCOMMAND +#define SD_BOOTCOMMAND CONFIG_BOOTCOMMAND
+#endif /* __WHLE_LS1046A_H__ */