Commit cf4b382a authored by Keguang Zhang's avatar Keguang Zhang Committed by Thomas Bogendoerfer
Browse files

MIPS: dts: loongson: Add Smartloong-1C board



Add a device tree for Smartloong-1C board, supporting CPU, clock, INTC,
UART, Ethernet, GPIO, USB host, RTC, watchdog, DMA, and NAND.

Signed-off-by: default avatarKeguang Zhang <keguang.zhang@gmail.com>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 9c607077
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,3 +8,4 @@ dtb-$(CONFIG_MACH_LOONGSON64) += loongson64v_4core_virtio.dtb

dtb-$(CONFIG_MACH_LOONGSON32)	+= ls1b-demo.dtb
dtb-$(CONFIG_MACH_LOONGSON32)	+= lsgz_1b_dev.dtb
dtb-$(CONFIG_MACH_LOONGSON32)	+= smartloong-1c.dtb
+141 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2023-2025 Keguang Zhang <keguang.zhang@gmail.com>
 */

/dts-v1/;
#include "loongson1.dtsi"

/ {
	clkc: clock-controller@1fe78030 {
		compatible = "loongson,ls1c-clk";
		reg = <0x1fe78030 0x8>;
		clocks = <&xtal>;
		#clock-cells = <1>;
	};
};

&soc {
	syscon: syscon@420 {
		compatible = "loongson,ls1c-syscon", "syscon";
		reg = <0x420 0x8>;
	};

	intc4: interrupt-controller@10a0 {
		compatible = "loongson,ls1x-intc";
		reg = <0x10a0 0x18>;
		interrupt-controller;
		interrupt-parent = <&cpu_intc>;
		interrupts = <6>;
		#interrupt-cells = <2>;
	};

	gpio2: gpio@10c8 {
		compatible = "loongson,ls1x-gpio";
		reg = <0x10c8 0x4>;
		gpio-controller;
		ngpios = <32>;
		#gpio-cells = <2>;
	};

	gpio3: gpio@10cc {
		compatible = "loongson,ls1x-gpio";
		reg = <0x10cc 0x4>;
		gpio-controller;
		ngpios = <32>;
		#gpio-cells = <2>;
	};

	dma: dma-controller@1160 {
		compatible = "loongson,ls1c-apbdma", "loongson,ls1b-apbdma";
		reg = <0x1160 0x4>;
		interrupt-parent = <&intc0>;
		interrupts = <13 IRQ_TYPE_EDGE_RISING>,
			     <14 IRQ_TYPE_EDGE_RISING>,
			     <15 IRQ_TYPE_EDGE_RISING>;
		interrupt-names = "ch0", "ch1", "ch2";
		#dma-cells = <1>;
	};

	emac: ethernet@110000 {
		compatible = "loongson,ls1c-emac", "snps,dwmac-3.50a";
		reg = <0x110000 0x10000>;
		clocks = <&clkc LS1X_CLKID_AHB>;
		clock-names = "stmmaceth";
		interrupt-parent = <&intc1>;
		interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "macirq";
		loongson,ls1-syscon = <&syscon>;
		snps,pbl = <1>;
		status = "disabled";
	};

	ehci: usb@120000 {
		compatible = "generic-ehci";
		reg = <0x120000 0x100>;
		interrupt-parent = <&intc1>;
		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
		status = "disabled";
	};

	ohci: usb@128000 {
		compatible = "generic-ohci";
		reg = <0x128000 0x100>;
		interrupt-parent = <&intc1>;
		interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
		status = "disabled";
	};
};

&apb {
	watchdog: watchdog@1c060 {
		compatible = "loongson,ls1c-wdt";
		reg = <0x1c060 0xc>;
		clocks = <&clkc LS1X_CLKID_APB>;
		status = "disabled";
	};

	rtc: rtc@24000 {
		compatible = "loongson,ls1c-rtc";
		reg = <0x24000 0x78>;
		status = "disabled";
	};

	nand: nand-controller@38000 {
		compatible = "loongson,ls1c-nand-controller";
		reg = <0x38000 0x24>, <0x38040 0x4>;
		reg-names = "nand", "nand-dma";
		dmas = <&dma 0>;
		dma-names = "rxtx";
		#address-cells = <1>;
		#size-cells = <0>;
		status = "disabled";

		nand@0 {
			reg = <0>;
			label = "ls1x-nand";
			nand-use-soft-ecc-engine;
			nand-ecc-algo = "hamming";
		};
	};
};

&gpio0 {
	ngpios = <32>;
};

&gpio1 {
	ngpios = <32>;
};

&uart1 {
	interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
};

&uart2 {
	interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
};

&uart3 {
	interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
};
+110 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2023-2025 Keguang Zhang <keguang.zhang@gmail.com>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>

#include "loongson1c.dtsi"

/ {
	compatible = "loongmasses,smartloong-1c", "loongson,ls1c";
	model = "Smartloong-1C Board";

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x4000000>;
	};

	aliases {
		gpio0 = &gpio0;
		gpio1 = &gpio1;
		gpio2 = &gpio2;
		gpio3 = &gpio3;
		serial0 = &uart2;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	leds {
		compatible = "gpio-leds";

		led0 {
			label = "led0";
			gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};

		led1 {
			label = "led1";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "nand-disk";
		};
	};
};

&xtal {
	clock-frequency = <24000000>;
};

&emac {
	phy-handle = <&phy0>;
	phy-mode = "rmii";
	status = "okay";

	mdio {
		compatible = "snps,dwmac-mdio";
		#address-cells = <1>;
		#size-cells = <0>;

		phy0: ethernet-phy@13 {
			reg = <0x13>;
		};
	};
};

&nand {
	status = "okay";

	nand@0 {
		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "kernel";
				reg = <0x0 0x1000000>;
			};

			partition@1000000 {
				label = "rootfs";
				reg = <0x1000000 0x7000000>;
			};
		};
	};
};

&ehci {
	status = "okay";
};

&ohci {
	status = "okay";
};

&rtc {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&watchdog {
	status = "okay";
};