From a28017a6d7988fab689d09f6e8592b389bf243c5 Mon Sep 17 00:00:00 2001 From: GH Cao Date: Sun, 4 May 2025 13:16:23 +0800 Subject: [PATCH 1/2] feat: support ctci 99pi tf --- arch/loongarch/dts/ls2k300_99pi_tf.dts | 139 +++++++++++++++++++ arch/loongarch/mach-loongson/Kconfig | 6 + configs/loongson_2k300_99pi_tf_defconfig | 168 +++++++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 arch/loongarch/dts/ls2k300_99pi_tf.dts create mode 100644 configs/loongson_2k300_99pi_tf_defconfig diff --git a/arch/loongarch/dts/ls2k300_99pi_tf.dts b/arch/loongarch/dts/ls2k300_99pi_tf.dts new file mode 100644 index 00000000..76ac15c3 --- /dev/null +++ b/arch/loongarch/dts/ls2k300_99pi_tf.dts @@ -0,0 +1,139 @@ +#include "ls2k300.dtsi" +#include "ls2k300_ddr_samsung_512m.dtsi" +#include +#include + +/ { + model = "loongson-2k300"; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "earlycon"; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + bootparam: bootparam_region { + reg = <0x90000000 0x0f000000 0x0 0x1000000>; + no-map; + }; + }; + + sysinfo-smbios { + compatible = "u-boot,sysinfo-smbios"; + u-boot,dm-pre-reloc; + + smbios { + system { + manufacturer = "Loongson"; + product = "LS2K300"; + }; + + baseboard { + manufacturer = "Loongson"; + product = "LS2K300-99PI-TF"; + }; + + chassis { + manufacturer = "Loongson"; + product = "LS2K300-99PI-TF"; + }; + }; + }; + + panel_rgb: panel-rgb { + compatible = "simple-panel"; + backlight = <&panel_bkl>; + + display-timings { +#if 0 // 4.3' LCD + native-mode = <&atk_md0430r>; + + atk_md0430r: 800x480 { + clock-frequency = <27000000>; + hactive = <800>; + vactive = <480>; + hsync-len = <40>; + hfront-porch = <48>; + hback-porch = <40>; + vfront-porch = <13>; + vback-porch = <32>; + vsync-len = <0>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#else // 7' LCD + native-mode = <&atk_md0700r>; + + atk_md0700r: 1024x600 { + clock-frequency = <51200000>; + hactive = <1024>; + vactive = <600>; + hsync-len = <20>; + hfront-porch = <160>; + hback-porch = <140>; + vfront-porch = <12>; + vback-porch = <20>; + vsync-len = <3>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#endif + }; + }; + + panel_bkl: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>; + // default-on; + }; +}; + +&dvo0 { + status = "okay"; + connector-type = "panel"; // panel, vga, hdmi + connector = <&panel_rgb>; + pix-fmt = "rgb888"; +}; + +&gmac0 { + status = "okay"; + phy-mode = "rgmii-txid"; + // max-speed = <100>; + phy-handle = <ð_phy0>; + mdio0: mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + + eth_phy0: ethernet-phy@0 { + reg = <0>; + }; + }; +}; + +&spi0 { + status = "okay"; + + spi-flash@0 { + compatible = "jedec,spi-nor"; + spi-max-frequency = <25000000>; /* input clock */ + reg = <0>; /* CS0 */ + }; +}; + +&otg { + status = "okay"; +}; + +&sdio1 { + status = "okay"; + use-sdcard; +}; \ No newline at end of file diff --git a/arch/loongarch/mach-loongson/Kconfig b/arch/loongarch/mach-loongson/Kconfig index e9211c67..4c82776f 100644 --- a/arch/loongarch/mach-loongson/Kconfig +++ b/arch/loongarch/mach-loongson/Kconfig @@ -195,6 +195,12 @@ config TARGET_LS2K300_99PI_WIFI help This supports Loongson 2K300 Customer 99PI WIFI board. +config TARGET_LS2K300_99PI_TF + bool "LS2K300 99PI TF Board" + depends on SOC_LS2K300 + help + This supports Loongson 2K300 Customer 99PI TF board. + endchoice config SYS_CPU diff --git a/configs/loongson_2k300_99pi_tf_defconfig b/configs/loongson_2k300_99pi_tf_defconfig new file mode 100644 index 00000000..c3e49f7b --- /dev/null +++ b/configs/loongson_2k300_99pi_tf_defconfig @@ -0,0 +1,168 @@ +CONFIG_LOONGARCH=y +CONFIG_SYS_TEXT_BASE=0x900000000ec00000 +CONFIG_SYS_MALLOC_LEN=0x1000000 +CONFIG_SYS_MALLOC_F_LEN=0x4000 +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_NR_DRAM_BANKS=2 +CONFIG_ENV_SIZE=0x4000 +CONFIG_ENV_OFFSET=0xe7000 +CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_DM_GPIO=y +CONFIG_SPL_DM_SPI=y +CONFIG_DEFAULT_DEVICE_TREE="ls2k300_99pi_tf" +CONFIG_SPL_TEXT_BASE=0x9000000090000000 +CONFIG_SPL_SERIAL=y +CONFIG_SPL_STACK_R_ADDR=0x9000000002000000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x8000 +CONFIG_SPL_SIZE_LIMIT=0x40000 +CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x100 +CONFIG_SPL=y +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI=y +CONFIG_ARCH_LA_LOONGSON=y +CONFIG_SOC_LS2K300=y +CONFIG_CPU_1000MHZ=y +CONFIG_TARGET_LS2K300_99PI_TF=y +CONFIG_LOONGSON_RECOVER=y +CONFIG_LOONGSON_GENERAL_LOAD=y +CONFIG_LOONGSON_BOARD_MMC_FS=y +CONFIG_LOONGSON_MMC_HIGH_PERFORMANCE=y +CONFIG_SPL_PAYLOAD="u-boot.img" +CONFIG_PHYS_64BIT=y +CONFIG_SYS_LOAD_ADDR=0x9000000003000000 +CONFIG_STACK_SIZE=0x200000 +CONFIG_BOOTDELAY=0 +CONFIG_AUTOBOOT_KEYED=y +CONFIG_AUTOBOOT_DELAY_STR="m" +CONFIG_AUTOBOOT_STOP_STR="c" +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200 rw noinitrd init=/sbin/init rootfstype=ext4 rootwait" +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="setenv bootargs ${bootargs} root=/dev/mmcblk0p${syspart} mtdparts=${mtdparts} fbcon=rotate:${rotate} panel=${panel};sf probe;sf read ${fdt_addr} dtb;ext4load mmc 0:${syspart} ${loadaddr} /boot/uImage;bootm" +CONFIG_LOGLEVEL=7 +CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y +# CONFIG_SYS_DEVICE_NULLDEV is not set +CONFIG_DISPLAY_BOARDINFO=y +CONFIG_BOARD_EARLY_INIT_F=y +CONFIG_BOARD_EARLY_INIT_R=y +CONFIG_BOARD_LATE_INIT=y +CONFIG_MISC_INIT_R=y +CONFIG_SPL_SIZE_LIMIT_SUBTRACT_GD=y +CONFIG_SPL_SIZE_LIMIT_SUBTRACT_MALLOC=y +CONFIG_SPL_SHOW_ERRORS=y +CONFIG_SPL_SYS_MALLOC_SIMPLE=y +CONFIG_SPL_STACK_R=y +# CONFIG_SPL_BANNER_PRINT is not set +CONFIG_SPL_DISPLAY_PRINT=y +CONFIG_SPL_MTD_SUPPORT=y +CONFIG_SPL_DM_SPI_FLASH=y +CONFIG_SPL_SPI_FLASH_MTD=y +CONFIG_SPL_SPI_LOAD=y +# CONFIG_BOOTM_PLAN9 is not set +CONFIG_CMD_BOOTMENU=y +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_RANDOM is not set +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_GPT=y +# CONFIG_RANDOM_UUID is not set +CONFIG_CMD_GPT_RENAME=y +CONFIG_CMD_MMC=y +CONFIG_CMD_MTD=y +CONFIG_CMD_POWEROFF=y +CONFIG_CMD_SF_TEST=y +CONFIG_CMD_USB=y +# CONFIG_CMD_ITEST is not set +CONFIG_CMD_DHCP=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +CONFIG_CMD_BMP=y +CONFIG_CMD_TIME=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y +CONFIG_CMD_MTDPARTS=y +CONFIG_MTDIDS_DEFAULT="nor0=spi0.0" +CONFIG_MTDPARTS_DEFAULT="spi0.0:924k(uboot),32k(uboot_env),4k(bdinfo),52k(dtb),4k(bdinfo_e),8k(ddr_context)" +CONFIG_ISO_PARTITION=y +# CONFIG_SPL_EFI_PARTITION is not set +CONFIG_OF_LIVE=y +CONFIG_OF_BOARD=y +CONFIG_OF_SPL_REMOVE_PROPS="interrupt-parent interrupts" +CONFIG_ENV_OVERWRITE=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_ENV_SECT_SIZE_AUTO=y +CONFIG_ENV_SPI_MAX_HZ=30000000 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_BOOTP_SERVERIP=y +CONFIG_SPL_DM=y +CONFIG_SPL_OF_TRANSLATE=y +CONFIG_LOONGSON_GPIO=y +# CONFIG_I2C is not set +CONFIG_MMC=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_LOONGSON=y +CONFIG_MTD=y +CONFIG_DM_MTD=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SF_DEFAULT_SPEED=25000000 +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_SPI_FLASH_XTX=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_DM_ETH=y +CONFIG_DM_MDIO=y +CONFIG_DM_ETH_PHY=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_RGMII=y +CONFIG_MII=y +CONFIG_PHY=y +CONFIG_PHY_LS2K_USB=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_RAM=y +CONFIG_SPL_RAM=y +CONFIG_LOONGSON_DDR4=y +CONFIG_SERIAL_RX_BUFFER=y +CONFIG_SYS_NS16550=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_LOONGSON_SPI=y +CONFIG_SYSINFO=y +CONFIG_SYSINFO_SMBIOS=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_GENERIC=y +CONFIG_USB_DWC2=y +CONFIG_USB_STORAGE=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_KEYBOARD_FN_KEYS=y +CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP=y +CONFIG_DM_VIDEO=y +CONFIG_VIDEO_LOGO=y +CONFIG_BACKLIGHT_GPIO=y +CONFIG_SYS_WHITE_ON_BLACK=y +CONFIG_VIDCONSOLE_AS_LCD=y +CONFIG_VIDEO_LOONGSON=y +CONFIG_SPLASH_SCREEN=y +CONFIG_SPLASHIMAGE_GUARD=y +CONFIG_SPLASH_SCREEN_ALIGN=y +CONFIG_BMP_16BPP=y +CONFIG_BMP_24BPP=y +CONFIG_BMP_32BPP=y +# CONFIG_WATCHDOG is not set +# CONFIG_WATCHDOG_AUTOSTART is not set +CONFIG_WDT=y +CONFIG_WDT_LS2X=y +CONFIG_FAT_WRITE=y +CONFIG_BCH=y +CONFIG_PANIC_HANG=y +CONFIG_LMB=y From 12134ba3b5f93b3727177ae2be0fc664c6532c90 Mon Sep 17 00:00:00 2001 From: GH Cao Date: Mon, 5 May 2025 00:13:48 +0800 Subject: [PATCH 2/2] feat: add a common 99pi dtsi for both variants --- arch/loongarch/dts/ls2k300_99pi.dtsi | 110 +++++++++++++++++++++++ arch/loongarch/dts/ls2k300_99pi_tf.dts | 107 +--------------------- arch/loongarch/dts/ls2k300_99pi_wifi.dts | 107 +--------------------- 3 files changed, 112 insertions(+), 212 deletions(-) create mode 100644 arch/loongarch/dts/ls2k300_99pi.dtsi diff --git a/arch/loongarch/dts/ls2k300_99pi.dtsi b/arch/loongarch/dts/ls2k300_99pi.dtsi new file mode 100644 index 00000000..b3f74d94 --- /dev/null +++ b/arch/loongarch/dts/ls2k300_99pi.dtsi @@ -0,0 +1,110 @@ +#include +#include + +/ { + model = "loongson-2k300"; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "earlycon"; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + bootparam: bootparam_region { + reg = <0x90000000 0x0f000000 0x0 0x1000000>; + no-map; + }; + }; + + panel_rgb: panel-rgb { + compatible = "simple-panel"; + backlight = <&panel_bkl>; + + display-timings { +#if 0 // 4.3' LCD + native-mode = <&atk_md0430r>; + + atk_md0430r: 800x480 { + clock-frequency = <27000000>; + hactive = <800>; + vactive = <480>; + hsync-len = <40>; + hfront-porch = <48>; + hback-porch = <40>; + vfront-porch = <13>; + vback-porch = <32>; + vsync-len = <0>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#else // 7' LCD + native-mode = <&atk_md0700r>; + + atk_md0700r: 1024x600 { + clock-frequency = <51200000>; + hactive = <1024>; + vactive = <600>; + hsync-len = <20>; + hfront-porch = <160>; + hback-porch = <140>; + vfront-porch = <12>; + vback-porch = <20>; + vsync-len = <3>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#endif + }; + }; + + panel_bkl: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>; + // default-on; + }; +}; + +&dvo0 { + status = "okay"; + connector-type = "panel"; // panel, vga, hdmi + connector = <&panel_rgb>; + pix-fmt = "rgb888"; +}; + +&gmac0 { + status = "okay"; + phy-mode = "rgmii-txid"; + // max-speed = <100>; + phy-handle = <ð_phy0>; + mdio0: mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + + eth_phy0: ethernet-phy@0 { + reg = <0>; + }; + }; +}; + +&spi0 { + status = "okay"; + + spi-flash@0 { + compatible = "jedec,spi-nor"; + spi-max-frequency = <25000000>; /* input clock */ + reg = <0>; /* CS0 */ + }; +}; + +&otg { + status = "okay"; +}; diff --git a/arch/loongarch/dts/ls2k300_99pi_tf.dts b/arch/loongarch/dts/ls2k300_99pi_tf.dts index 76ac15c3..f5c11f17 100644 --- a/arch/loongarch/dts/ls2k300_99pi_tf.dts +++ b/arch/loongarch/dts/ls2k300_99pi_tf.dts @@ -1,27 +1,10 @@ #include "ls2k300.dtsi" #include "ls2k300_ddr_samsung_512m.dtsi" +#include "ls2k300_99pi.dtsi" #include #include / { - model = "loongson-2k300"; - - chosen { - stdout-path = "serial0:115200n8"; - bootargs = "earlycon"; - }; - - reserved-memory { - #address-cells = <2>; - #size-cells = <2>; - ranges; - - bootparam: bootparam_region { - reg = <0x90000000 0x0f000000 0x0 0x1000000>; - no-map; - }; - }; - sysinfo-smbios { compatible = "u-boot,sysinfo-smbios"; u-boot,dm-pre-reloc; @@ -43,94 +26,6 @@ }; }; }; - - panel_rgb: panel-rgb { - compatible = "simple-panel"; - backlight = <&panel_bkl>; - - display-timings { -#if 0 // 4.3' LCD - native-mode = <&atk_md0430r>; - - atk_md0430r: 800x480 { - clock-frequency = <27000000>; - hactive = <800>; - vactive = <480>; - hsync-len = <40>; - hfront-porch = <48>; - hback-porch = <40>; - vfront-porch = <13>; - vback-porch = <32>; - vsync-len = <0>; - de-active = <1>; - hsync-active = <0>; - vsync-active = <0>; - pixelclk-active = <0>; - }; -#else // 7' LCD - native-mode = <&atk_md0700r>; - - atk_md0700r: 1024x600 { - clock-frequency = <51200000>; - hactive = <1024>; - vactive = <600>; - hsync-len = <20>; - hfront-porch = <160>; - hback-porch = <140>; - vfront-porch = <12>; - vback-porch = <20>; - vsync-len = <3>; - de-active = <1>; - hsync-active = <0>; - vsync-active = <0>; - pixelclk-active = <0>; - }; -#endif - }; - }; - - panel_bkl: backlight { - compatible = "gpio-backlight"; - gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>; - // default-on; - }; -}; - -&dvo0 { - status = "okay"; - connector-type = "panel"; // panel, vga, hdmi - connector = <&panel_rgb>; - pix-fmt = "rgb888"; -}; - -&gmac0 { - status = "okay"; - phy-mode = "rgmii-txid"; - // max-speed = <100>; - phy-handle = <ð_phy0>; - mdio0: mdio@0 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "snps,dwmac-mdio"; - - eth_phy0: ethernet-phy@0 { - reg = <0>; - }; - }; -}; - -&spi0 { - status = "okay"; - - spi-flash@0 { - compatible = "jedec,spi-nor"; - spi-max-frequency = <25000000>; /* input clock */ - reg = <0>; /* CS0 */ - }; -}; - -&otg { - status = "okay"; }; &sdio1 { diff --git a/arch/loongarch/dts/ls2k300_99pi_wifi.dts b/arch/loongarch/dts/ls2k300_99pi_wifi.dts index 0de3a471..dbef55ec 100644 --- a/arch/loongarch/dts/ls2k300_99pi_wifi.dts +++ b/arch/loongarch/dts/ls2k300_99pi_wifi.dts @@ -1,27 +1,10 @@ #include "ls2k300.dtsi" #include "ls2k300_ddr_samsung_512m.dtsi" +#include "ls2k300_99pi.dtsi" #include #include / { - model = "loongson-2k300"; - - chosen { - stdout-path = "serial0:115200n8"; - bootargs = "earlycon"; - }; - - reserved-memory { - #address-cells = <2>; - #size-cells = <2>; - ranges; - - bootparam: bootparam_region { - reg = <0x90000000 0x0f000000 0x0 0x1000000>; - no-map; - }; - }; - sysinfo-smbios { compatible = "u-boot,sysinfo-smbios"; u-boot,dm-pre-reloc; @@ -43,96 +26,8 @@ }; }; }; - - panel_rgb: panel-rgb { - compatible = "simple-panel"; - backlight = <&panel_bkl>; - - display-timings { -#if 0 // 4.3' LCD - native-mode = <&atk_md0430r>; - - atk_md0430r: 800x480 { - clock-frequency = <27000000>; - hactive = <800>; - vactive = <480>; - hsync-len = <40>; - hfront-porch = <48>; - hback-porch = <40>; - vfront-porch = <13>; - vback-porch = <32>; - vsync-len = <0>; - de-active = <1>; - hsync-active = <0>; - vsync-active = <0>; - pixelclk-active = <0>; - }; -#else // 7' LCD - native-mode = <&atk_md0700r>; - - atk_md0700r: 1024x600 { - clock-frequency = <51200000>; - hactive = <1024>; - vactive = <600>; - hsync-len = <20>; - hfront-porch = <160>; - hback-porch = <140>; - vfront-porch = <12>; - vback-porch = <20>; - vsync-len = <3>; - de-active = <1>; - hsync-active = <0>; - vsync-active = <0>; - pixelclk-active = <0>; - }; -#endif - }; - }; - - panel_bkl: backlight { - compatible = "gpio-backlight"; - gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>; - // default-on; - }; -}; - -&dvo0 { - status = "okay"; - connector-type = "panel"; // panel, vga, hdmi - connector = <&panel_rgb>; - pix-fmt = "rgb888"; -}; - -&gmac0 { - status = "okay"; - phy-mode = "rgmii-txid"; - // max-speed = <100>; - phy-handle = <ð_phy0>; - mdio0: mdio@0 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "snps,dwmac-mdio"; - - eth_phy0: ethernet-phy@0 { - reg = <0>; - }; - }; }; &emmc0 { status = "okay"; }; - -&spi0 { - status = "okay"; - - spi-flash@0 { - compatible = "jedec,spi-nor"; - spi-max-frequency = <25000000>; /* input clock */ - reg = <0>; /* CS0 */ - }; -}; - -&otg { - status = "okay"; -};