[PATCH 4/4] arm64: dts: uniphier: Add NX1 SoC and boards support

Krzysztof Kozlowski krzysztof.kozlowski at linaro.org
Thu Oct 27 06:36:57 PDT 2022


On 27/10/2022 00:51, Kunihiko Hayashi wrote:
> Initial version of devicetree sources for NX1 SoC and boards.
> 

Thank you for your patch. There is something to discuss/improve.

> diff --git a/arch/arm64/boot/dts/socionext/uniphier-nx1.dtsi b/arch/arm64/boot/dts/socionext/uniphier-nx1.dtsi
> new file mode 100644
> index 000000000000..e401763de86e
> --- /dev/null
> +++ b/arch/arm64/boot/dts/socionext/uniphier-nx1.dtsi
> @@ -0,0 +1,704 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +//
> +// Device Tree Source for UniPhier NX1 SoC
> +//
> +// Copyright (C) 2021 Socionext Inc.
> +//   Author: Kunihiko Hayashi <hayashi.kunihiko at socionext.com>
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/gpio/uniphier-gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/thermal/thermal.h>
> +
> +/ {
> +	compatible = "socionext,uniphier-nx1";
> +	#address-cells = <2>;
> +	#size-cells = <2>;
> +	interrupt-parent = <&gic>;
> +
> +	cpus {
> +		#address-cells = <2>;
> +		#size-cells = <0>;
> +
> +		cpu-map {
> +			cluster0 {
> +				core0 {
> +					cpu = <&cpu0>;
> +				};
> +				core1 {
> +					cpu = <&cpu1>;
> +				};
> +				core2 {
> +					cpu = <&cpu2>;
> +				};
> +				core3 {
> +					cpu = <&cpu3>;
> +				};
> +			};
> +		};
> +
> +		cpu0: cpu at 0 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53";
> +			reg = <0 0x000>;
> +			clocks = <&sys_clk 33>;
> +			enable-method = "psci";
> +			next-level-cache = <&l2>;
> +			operating-points-v2 = <&cluster0_opp>;
> +			#cooling-cells = <2>;
> +		};
> +
> +		cpu1: cpu at 1 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53";
> +			reg = <0 0x001>;
> +			clocks = <&sys_clk 33>;
> +			enable-method = "psci";
> +			next-level-cache = <&l2>;
> +			operating-points-v2 = <&cluster0_opp>;
> +			#cooling-cells = <2>;
> +		};
> +
> +		cpu2: cpu at 2 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53";
> +			reg = <0 0x002>;
> +			clocks = <&sys_clk 33>;
> +			enable-method = "psci";
> +			next-level-cache = <&l2>;
> +			operating-points-v2 = <&cluster0_opp>;
> +			#cooling-cells = <2>;
> +		};
> +
> +		cpu3: cpu at 3 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53";
> +			reg = <0 0x003>;
> +			clocks = <&sys_clk 33>;
> +			enable-method = "psci";
> +			next-level-cache = <&l2>;
> +			operating-points-v2 = <&cluster0_opp>;
> +			#cooling-cells = <2>;
> +		};
> +
> +		l2: l2-cache {
> +			compatible = "cache";
> +		};
> +	};
> +
> +	cluster0_opp: opp-table {
> +		compatible = "operating-points-v2";
> +		opp-shared;
> +
> +		opp-78125000 {
> +			opp-hz = /bits/ 64 <78125000>;
> +			clock-latency-ns = <300>;
> +		};
> +		opp-156250000 {
> +			opp-hz = /bits/ 64 <156250000>;
> +			clock-latency-ns = <300>;
> +		};
> +		opp-312500000 {
> +			opp-hz = /bits/ 64 <312500000>;
> +			clock-latency-ns = <300>;
> +		};
> +		opp-625000000 {
> +			opp-hz = /bits/ 64 <625000000>;
> +			clock-latency-ns = <300>;
> +		};
> +		opp-1250000000 {
> +			opp-hz = /bits/ 64 <1250000000>;
> +			clock-latency-ns = <300>;
> +		};
> +	};
> +
> +	psci {
> +		compatible = "arm,psci-1.0";
> +		method = "smc";
> +	};
> +
> +	clocks {
> +		refclk: ref {

Generic node name, so at least "clock" prefix or suffix.

> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-frequency = <25000000>;

Are you sure the clock is a property of a SoC? IOW, it is physically on
the SoC? If not, define entire clock or its frequency by boards.

> +		};
> +	};
> +
> +	emmc_pwrseq: emmc-pwrseq {
> +		compatible = "mmc-pwrseq-emmc";
> +		reset-gpios = <&gpio UNIPHIER_GPIO_PORT(3, 0) GPIO_ACTIVE_LOW>;
> +	};
> +
> +	timer {
> +		compatible = "arm,armv8-timer";
> +		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +	};
> +
> +	thermal-zones {
> +		cpu-thermal {
> +			polling-delay-passive = <250>;	/* 250ms */
> +			polling-delay = <1000>;		/* 1000ms */
> +			thermal-sensors = <&pvtctl>;
> +
> +			trips {
> +				cpu_crit: cpu-crit {
> +					temperature = <120000>;	/* 120C */
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +				cpu_alert: cpu-alert {
> +					temperature = <110000>;	/* 110C */
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu_alert>;
> +					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +	};
> +
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		secure-memory at 21000000 {
> +			reg = <0x0 0x21000000 0x0 0x01000000>;
> +			no-map;
> +		};
> +	};
> +
> +	soc at 0 {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0 0 0xffffffff>;
> +
> +		sysctrl: sysctrl at 11840000 {

Node name: system-controller or syscon

> +			compatible = "socionext,uniphier-nx1-sysctrl",

This looks undocumented.

Did you run `make dtbs_check`?


> +				     "simple-mfd", "syscon";
> +			reg = <0x11840000 0x10000>;
> +
> +			sys_clk: clock {

Node name: clock-controller

> +				compatible = "socionext,uniphier-nx1-clock";
> +				#clock-cells = <1>;
> +			};
> +
> +			sys_rst: reset {

reset-controller

> +				compatible = "socionext,uniphier-nx1-reset";
> +				#reset-cells = <1>;
> +			};
> +
> +			watchdog {
> +				compatible = "socionext,uniphier-wdt";
> +			};
> +
> +			pvtctl: thermal-sensor {
> +				compatible = "socionext,uniphier-nx1-thermal";
> +				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> +				#thermal-sensor-cells = <0>;
> +				socionext,tmod-calibration = <0x0f22 0x68ee>;
> +			};
> +		};
> +
> +		spi0: spi at 14006000 {
> +			compatible = "socionext,uniphier-scssi";
> +			status = "disabled";
> +			reg = <0x14006000 0x100>;

Reg is second property. Status goes last. The same in other nodes.


> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_spi0>;
> +			clocks = <&peri_clk 11>;
> +			resets = <&peri_rst 11>;
> +		};
> +
> +		spi1: spi at 14006100 {
> +			compatible = "socionext,uniphier-scssi";
> +			status = "disabled";
> +			reg = <0x14006100 0x100>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_spi1>;
> +			clocks = <&peri_clk 12>;
> +			resets = <&peri_rst 12>;
> +		};
> +
> +		serial0: serial at 14006800 {
> +			compatible = "socionext,uniphier-uart";
> +			status = "disabled";
> +			reg = <0x14006800 0x40>;
> +			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_uart0>;
> +			clocks = <&peri_clk 0>;
> +			resets = <&peri_rst 0>;
> +		};
> +
> +		serial1: serial at 14006900 {
> +			compatible = "socionext,uniphier-uart";
> +			status = "disabled";
> +			reg = <0x14006900 0x40>;
> +			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_uart1>;
> +			clocks = <&peri_clk 1>;
> +			resets = <&peri_rst 1>;
> +		};
> +
> +		serial2: serial at 14006a00 {
> +			compatible = "socionext,uniphier-uart";
> +			status = "disabled";
> +			reg = <0x14006a00 0x40>;
> +			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_uart2>;
> +			clocks = <&peri_clk 2>;
> +			resets = <&peri_rst 2>;
> +		};
> +
> +		serial3: serial at 14006b00 {
> +			compatible = "socionext,uniphier-uart";
> +			status = "disabled";
> +			reg = <0x14006b00 0x40>;
> +			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_uart3>;
> +			clocks = <&peri_clk 3>;
> +			resets = <&peri_rst 3>;
> +		};
> +
> +		gpio: gpio at 14007000 {
> +			compatible = "socionext,uniphier-gpio";
> +			reg = <0x14007000 0x200>;
> +			interrupt-parent = <&aidet>;
> +			interrupt-controller;
> +			#interrupt-cells = <2>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
> +			gpio-ranges = <&pinctrl 0 0 0>,
> +				      <&pinctrl 49 0 0>,
> +				      <&pinctrl 53 0 0>,
> +				      <&pinctrl 96 0 0>,
> +				      <&pinctrl 120 0 0>;
> +			gpio-ranges-group-names = "gpio_range0",
> +						  "gpio_range1",
> +						  "gpio_range2",
> +						  "gpio_range3",
> +						  "gpio_range4";
> +			ngpios = <126>;
> +			socionext,interrupt-ranges = <0 48 6>;
> +		};
> +
> +		eth: ethernet at 15000000 {
> +			compatible = "socionext,uniphier-nx1-ave4";
> +			status = "disabled";
> +			reg = <0x15000000 0x8500>;
> +			interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_ether_rgmii>;
> +			clock-names = "ether";
> +			clocks = <&sys_clk 6>;
> +			reset-names = "ether";
> +			resets = <&sys_rst 6>;
> +			phy-mode = "rgmii-id";
> +			local-mac-address = [00 00 00 00 00 00];
> +			socionext,syscon-phy-mode = <&soc_glue 0>;
> +
> +			mdio: mdio {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +			};
> +		};
> +
> +		usb: usb at 15a00000 {
> +			compatible = "socionext,uniphier-dwc3", "snps,dwc3";
> +			status = "disabled";
> +			reg = <0x15a00000 0xcd00>;
> +			interrupt-names = "host";
> +			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_usb0>, <&pinctrl_usb1>;
> +			clock-names = "ref", "bus_early", "suspend";
> +			clocks = <&sys_clk 12>, <&sys_clk 12>, <&sys_clk 12>;
> +			resets = <&usb_rst 15>;
> +			phys = <&usb_hsphy0>, <&usb_hsphy1>,
> +			       <&usb_ssphy0>, <&usb_ssphy1>;
> +			dr_mode = "host";
> +		};
> +
> +		usb-controller at 15b00000 {
> +			compatible = "socionext,uniphier-nx1-dwc3-glue",

Undocumented compatible.

> +				     "simple-mfd";


Missing reg. Did you run `make dtbs_check`? Did you actually check it
with dtc?

> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges = <0 0x15b00000 0x400>;
> +
> +			usb_rst: reset at 0 {

reset-controller

> +				compatible = "socionext,uniphier-nx1-usb3-reset";
> +				reg = <0x0 0x4>;
> +				#reset-cells = <1>;
> +				clock-names = "link";
> +				clocks = <&sys_clk 12>;
> +				reset-names = "link";
> +				resets = <&sys_rst 12>;
> +			};
> +
> +			usb_vbus0: regulator at 100 {
> +				compatible = "socionext,uniphier-nx1-usb3-regulator";
> +				reg = <0x100 0x10>;
> +				clock-names = "link";
> +				clocks = <&sys_clk 12>;
> +				reset-names = "link";
> +				resets = <&sys_rst 12>;
> +			};
> +
> +			usb_vbus1: regulator at 110 {
> +				compatible = "socionext,uniphier-nx1-usb3-regulator";
> +				reg = <0x110 0x10>;
> +				clock-names = "link";
> +				clocks = <&sys_clk 12>;
> +				reset-names = "link";
> +				resets = <&sys_rst 12>;
> +			};
> +
> +			usb_hsphy0: hs-phy at 200 {

Node name: phy

The same in all other places. It can be also usb-phy and few others
mentioned iin DT spec:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation

> +				compatible = "socionext,uniphier-nx1-usb3-hsphy";
> +				reg = <0x200 0x10>;
> +				#phy-cells = <0>;
> +				clock-names = "link", "phy", "phy-ext";
> +				clocks = <&sys_clk 12>, <&sys_clk 16>,
> +					 <&sys_clk 13>;
> +				reset-names = "link", "phy";
> +				resets = <&sys_rst 12>, <&sys_rst 16>;
> +				vbus-supply = <&usb_vbus0>;
> +			};
> +
> +			usb_hsphy1: hs-phy at 210 {
> +				compatible = "socionext,uniphier-nx1-usb3-hsphy";
> +				reg = <0x210 0x10>;
> +				#phy-cells = <0>;
> +				clock-names = "link", "phy", "phy-ext";
> +				clocks = <&sys_clk 12>, <&sys_clk 16>,
> +					 <&sys_clk 13>;
> +				reset-names = "link", "phy";
> +				resets = <&sys_rst 12>, <&sys_rst 16>;
> +				vbus-supply = <&usb_vbus1>;
> +			};
> +
> +			usb_ssphy0: ss-phy at 300 {
> +				compatible = "socionext,uniphier-nx1-usb3-ssphy";
> +				reg = <0x300 0x10>;
> +				#phy-cells = <0>;
> +				clock-names = "link", "phy", "phy-ext";
> +				clocks = <&sys_clk 12>, <&sys_clk 17>,
> +					 <&sys_clk 13>;
> +				reset-names = "link", "phy";
> +				resets = <&sys_rst 12>, <&sys_rst 17>;
> +				vbus-supply = <&usb_vbus0>;
> +			};
> +
> +			usb_ssphy1: ss-phy at 310 {
> +				compatible = "socionext,uniphier-nx1-usb3-ssphy";
> +				reg = <0x310 0x10>;
> +				#phy-cells = <0>;
> +				clock-names = "link", "phy", "phy-ext";
> +				clocks = <&sys_clk 12>, <&sys_clk 18>,
> +					 <&sys_clk 13>;
> +				reset-names = "link", "phy";
> +				resets = <&sys_rst 12>, <&sys_rst 18>;
> +				vbus-supply = <&usb_vbus1>;
> +			};
> +		};
> +
> +		pcie: pcie at 16000000 {
> +			compatible = "socionext,uniphier-pcie";
> +			status = "disabled";
> +			reg-names = "dbi", "link", "config", "atu";
> +			reg = <0x16000000 0x1000>, <0x179a0000 0x10000>,
> +			      <0x0fff0000 0x10000>, <0x16300000 0x1000>;
> +			#address-cells = <3>;
> +			#size-cells = <2>;
> +			clocks = <&sys_clk 24>;
> +			resets = <&sys_rst 24>;
> +			num-lanes = <2>;
> +			num-viewport = <1>;
> +			bus-range = <0x0 0xff>;
> +			device_type = "pci";
> +			ranges =
> +			/* downstream I/O */
> +				<0x81000000 0 0x00000000 0x0ffe0000 0 0x00010000>,
> +			/* non-prefetchable memory */
> +				<0x82000000 0 0x20000000 0x04200000 0 0x0bde0000>;
> +			#interrupt-cells = <1>;
> +			interrupt-names = "dma", "msi";
> +			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
> +				     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-map-mask = <0 0 0 7>;
> +			interrupt-map = <0 0 0 1 &pcie_intc 0>,	/* INTA */
> +					<0 0 0 2 &pcie_intc 1>,	/* INTB */
> +					<0 0 0 3 &pcie_intc 2>,	/* INTC */
> +					<0 0 0 4 &pcie_intc 3>;	/* INTD */
> +			phy-names = "pcie-phy";
> +			phys = <&pcie_phy>;
> +
> +			pcie_intc: legacy-interrupt-controller {
> +				interrupt-controller;
> +				#interrupt-cells = <1>;
> +				interrupt-parent = <&gic>;
> +				interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +		};
> +
> +		pcie_ep: pcie-ep at 16000000 {
> +			compatible = "socionext,uniphier-nx1-pcie-ep";
> +			status = "disabled";
> +			reg-names = "dbi", "dbi2", "link", "addr_space", "atu";
> +			reg = <0x16000000 0x1000>, <0x16100000 0x1000>,
> +			      <0x179a0000 0x10000>, <0x04200000 0xbe00000>,
> +			      <0x16300000 0x1000>;
> +			clock-names = "link";
> +			clocks = <&sys_clk 24>;
> +			reset-names = "link";
> +			resets = <&sys_rst 24>;
> +			num-ib-windows = <16>;
> +			num-ob-windows = <16>;
> +			num-lanes = <2>;
> +			phy-names = "pcie-phy";
> +			phys = <&pcie_phy>;
> +		};
> +
> +		pcie_phy: phy at 179b8000 {
> +			compatible = "socionext,uniphier-nx1-pcie-phy";
> +			reg = <0x179b8000 0x4000>;
> +			#phy-cells = <0>;
> +			clock-names = "link";
> +			clocks = <&sys_clk 24>;
> +			reset-names = "link";
> +			resets = <&sys_rst 24>;
> +			socionext,syscon = <&sysctrl>;
> +		};
> +
> +		i2c0: i2c at 18780000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18780000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c0>;
> +			clocks = <&peri_clk 4>;
> +			resets = <&peri_rst 4>;
> +			clock-frequency = <400000>;
> +		};
> +
> +		i2c1: i2c at 18781000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18781000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c1>;
> +			clocks = <&peri_clk 5>;
> +			resets = <&peri_rst 5>;
> +			clock-frequency = <400000>;
> +		};
> +
> +		i2c2: i2c at 18782000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18782000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c2>;
> +			clocks = <&peri_clk 6>;
> +			resets = <&peri_rst 6>;
> +			clock-frequency = <400000>;
> +		};
> +
> +		i2c3: i2c at 18783000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18783000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c3>;
> +			clocks = <&peri_clk 7>;
> +			resets = <&peri_rst 7>;
> +			clock-frequency = <400000>;
> +		};
> +
> +		i2c4: i2c at 18784000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18784000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c4>;
> +			clocks = <&peri_clk 8>;
> +			resets = <&peri_rst 8>;
> +			clock-frequency = <100000>;
> +		};
> +
> +		i2c5: i2c at 18785000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18785000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c5>;
> +			clocks = <&peri_clk 9>;
> +			resets = <&peri_rst 9>;
> +			clock-frequency = <100000>;
> +		};
> +
> +		i2c6: i2c at 18786000 {
> +			compatible = "socionext,uniphier-fi2c";
> +			status = "disabled";
> +			reg = <0x18786000 0x80>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_i2c6>;
> +			clocks = <&peri_clk 10>;
> +			resets = <&peri_rst 10>;
> +			clock-frequency = <100000>;
> +		};
> +
> +		sdctrl at 19810000 {

Same comment as before...

> +			compatible = "socionext,uniphier-nx1-sdctrl",

Same problem as before...

> +				     "simple-mfd", "syscon";
> +			reg = <0x19810000 0x400>;
> +
> +			sd_clk: clock {
> +				compatible = "socionext,uniphier-nx1-sd-clock";
> +				#clock-cells = <1>;
> +			};
> +
> +			sd_rst: reset {
> +				compatible = "socionext,uniphier-nx1-sd-reset";
> +				#reset-cells = <1>;
> +			};
> +		};
> +
> +		perictrl at 19820000 {
> +			compatible = "socionext,uniphier-nx1-perictrl",

Also undocumented.

> +				     "simple-mfd", "syscon";
> +			reg = <0x19820000 0x200>;
> +
> +			peri_clk: clock {

clock-controller

> +				compatible = "socionext,uniphier-nx1-peri-clock";
> +				#clock-cells = <1>;
> +			};
> +
> +			peri_rst: reset {

reset-controller

> +				compatible = "socionext,uniphier-nx1-peri-reset";
> +				#reset-cells = <1>;
> +			};
> +		};
> +
> +		emmc: mmc at 1a000000 {
> +			compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
> +			reg = <0x1a000000 0x400>;
> +			interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_emmc>;
> +			clocks = <&sys_clk 4>;
> +			resets = <&sys_rst 4>;
> +			bus-width = <8>;
> +			mmc-ddr-1_8v;
> +			mmc-hs200-1_8v;
> +			mmc-pwrseq = <&emmc_pwrseq>;
> +			cdns,phy-input-delay-legacy = <9>;
> +			cdns,phy-input-delay-mmc-highspeed = <2>;
> +			cdns,phy-input-delay-mmc-ddr = <3>;
> +			cdns,phy-dll-delay-sdclk = <21>;
> +			cdns,phy-dll-delay-sdclk-hsmmc = <21>;
> +		};
> +
> +		sd: mmc at 1a400000 {
> +			compatible = "socionext,uniphier-sd-v3.1.1";
> +			status = "disabled";
> +			reg = <0x1a400000 0x800>;
> +			interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_sd>;
> +			clocks = <&sd_clk 0>;
> +			reset-names = "host";
> +			resets = <&sd_rst 0>;
> +			bus-width = <4>;
> +			cap-sd-highspeed;
> +		};
> +
> +		soc_glue: soc-glue at 1f800000 {
> +			compatible = "socionext,uniphier-nx1-soc-glue",

I am not going to check...

> +				     "simple-mfd", "syscon";
> +			reg = <0x1f800000 0x2000>;
> +
> +			pinctrl: pinctrl {
> +				compatible = "socionext,uniphier-nx1-pinctrl";
> +			};
> +		};
> +
> +		soc-glue at 1f900000 {
> +			compatible = "socionext,uniphier-nx1-soc-glue-debug",

Hm...

> +				     "simple-mfd";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges = <0 0x1f900000 0x2000>;
> +		};
> +
> +		xdmac: dma-controller at 1fa10000 {
> +			compatible = "socionext,uniphier-xdmac";
> +			reg = <0x1fa10000 0x5300>;
> +			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
> +			dma-channels = <16>;
> +			#dma-cells = <2>;
> +		};
> +
> +		aidet: aidet at 1fb20000 {

Node names should be generic.
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation

> +			compatible = "socionext,uniphier-nx1-aidet";
> +			reg = <0x1fb20000 0x200>;
> +			interrupt-controller;
> +			#interrupt-cells = <2>;
> +		};


Best regards,
Krzysztof




More information about the linux-arm-kernel mailing list