Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm: dts: add Nuvoton NPCM750 device tree

Add a common device tree for all Nuvoton NPCM750 BMCs and a board
specific device tree for the NPCM750 (Poleg) evaluation board.

Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
Reviewed-by: Tomer Maimon <tmaimon77@gmail.com>
Reviewed-by: Avi Fishman <avifishman70@gmail.com>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Rob Herring <robh@kernel.org>
Tested-by: Tomer Maimon <tmaimon77@gmail.com>
Tested-by: Avi Fishman <avifishman70@gmail.com>
Tested-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

authored by

Brendan Higgins and committed by
Arnd Bergmann
d6bdd009 1796483f

+250
+42
Documentation/devicetree/bindings/arm/cpu-enable-method/nuvoton,npcm750-smp
··· 1 + ========================================================= 2 + Secondary CPU enable-method "nuvoton,npcm750-smp" binding 3 + ========================================================= 4 + 5 + To apply to all CPUs, a single "nuvoton,npcm750-smp" enable method should be 6 + defined in the "cpus" node. 7 + 8 + Enable method name: "nuvoton,npcm750-smp" 9 + Compatible machines: "nuvoton,npcm750" 10 + Compatible CPUs: "arm,cortex-a9" 11 + Related properties: (none) 12 + 13 + Note: 14 + This enable method needs valid nodes compatible with "arm,cortex-a9-scu" and 15 + "nuvoton,npcm750-gcr". 16 + 17 + Example: 18 + 19 + cpus { 20 + #address-cells = <1>; 21 + #size-cells = <0>; 22 + enable-method = "nuvoton,npcm750-smp"; 23 + 24 + cpu@0 { 25 + device_type = "cpu"; 26 + compatible = "arm,cortex-a9"; 27 + clocks = <&clk NPCM7XX_CLK_CPU>; 28 + clock-names = "clk_cpu"; 29 + reg = <0>; 30 + next-level-cache = <&L2>; 31 + }; 32 + 33 + cpu@1 { 34 + device_type = "cpu"; 35 + compatible = "arm,cortex-a9"; 36 + clocks = <&clk NPCM7XX_CLK_CPU>; 37 + clock-names = "clk_cpu"; 38 + reg = <1>; 39 + next-level-cache = <&L2>; 40 + }; 41 + }; 42 +
+6
Documentation/devicetree/bindings/arm/npcm/npcm.txt
··· 1 + NPCM Platforms Device Tree Bindings 2 + ----------------------------------- 3 + NPCM750 SoC 4 + Required root node properties: 5 + - compatible = "nuvoton,npcm750"; 6 +
+2
arch/arm/boot/dts/Makefile
··· 304 304 dtb-$(CONFIG_ARCH_LPC32XX) += \ 305 305 lpc3250-ea3250.dtb \ 306 306 lpc3250-phy3250.dtb 307 + dtb-$(CONFIG_ARCH_NPCM750) += \ 308 + nuvoton-npcm750-evb.dtb 307 309 dtb-$(CONFIG_MACH_MESON6) += \ 308 310 meson6-atv1200.dtb 309 311 dtb-$(CONFIG_MACH_MESON8) += \
+35
arch/arm/boot/dts/nuvoton-npcm750-evb.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // Copyright (c) 2018 Nuvoton Technology corporation. 3 + // Copyright 2018 Google, Inc. 4 + 5 + /dts-v1/; 6 + #include "nuvoton-npcm750.dtsi" 7 + 8 + / { 9 + model = "Nuvoton npcm750 Development Board (Device Tree)"; 10 + compatible = "nuvoton,npcm750"; 11 + 12 + chosen { 13 + stdout-path = &serial3; 14 + }; 15 + 16 + memory { 17 + reg = <0 0x40000000>; 18 + }; 19 + }; 20 + 21 + &serial0 { 22 + status = "okay"; 23 + }; 24 + 25 + &serial1 { 26 + status = "okay"; 27 + }; 28 + 29 + &serial2 { 30 + status = "okay"; 31 + }; 32 + 33 + &serial3 { 34 + status = "okay"; 35 + };
+165
arch/arm/boot/dts/nuvoton-npcm750.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // Copyright (c) 2018 Nuvoton Technology corporation. 3 + // Copyright 2018 Google, Inc. 4 + 5 + #include <dt-bindings/interrupt-controller/arm-gic.h> 6 + 7 + / { 8 + #address-cells = <1>; 9 + #size-cells = <1>; 10 + interrupt-parent = <&gic>; 11 + 12 + cpus { 13 + #address-cells = <1>; 14 + #size-cells = <0>; 15 + enable-method = "nuvoton,npcm750-smp"; 16 + 17 + cpu@0 { 18 + device_type = "cpu"; 19 + compatible = "arm,cortex-a9"; 20 + clocks = <&clk 10>; 21 + clock-names = "clk_cpu"; 22 + reg = <0>; 23 + next-level-cache = <&l2>; 24 + }; 25 + 26 + cpu@1 { 27 + device_type = "cpu"; 28 + compatible = "arm,cortex-a9"; 29 + clocks = <&clk 10>; 30 + clock-names = "clk_cpu"; 31 + reg = <1>; 32 + next-level-cache = <&l2>; 33 + }; 34 + }; 35 + 36 + /* external clock signal rg1refck, supplied by the phy */ 37 + clk-rg1refck { 38 + compatible = "fixed-clock"; 39 + #clock-cells = <0>; 40 + clock-frequency = <125000000>; 41 + }; 42 + 43 + /* external clock signal rg2refck, supplied by the phy */ 44 + clk-rg2refck { 45 + compatible = "fixed-clock"; 46 + #clock-cells = <0>; 47 + clock-frequency = <125000000>; 48 + }; 49 + 50 + clk-xin { 51 + compatible = "fixed-clock"; 52 + #clock-cells = <0>; 53 + clock-frequency = <50000000>; 54 + }; 55 + 56 + soc { 57 + #address-cells = <1>; 58 + #size-cells = <1>; 59 + compatible = "simple-bus"; 60 + interrupt-parent = <&gic>; 61 + ranges = <0x0 0xf0000000 0x00900000>; 62 + 63 + gcr: gcr@800000 { 64 + compatible = "nuvoton,npcm750-gcr", "syscon", 65 + "simple-mfd"; 66 + reg = <0x800000 0x1000>; 67 + }; 68 + 69 + scu: scu@3fe000 { 70 + compatible = "arm,cortex-a9-scu"; 71 + reg = <0x3fe000 0x1000>; 72 + }; 73 + 74 + l2: cache-controller@3fc000 { 75 + compatible = "arm,pl310-cache"; 76 + reg = <0x3fc000 0x1000>; 77 + interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 78 + cache-unified; 79 + cache-level = <2>; 80 + clocks = <&clk 22>; 81 + arm,shared-override; 82 + }; 83 + 84 + gic: interrupt-controller@3ff000 { 85 + compatible = "arm,cortex-a9-gic"; 86 + interrupt-controller; 87 + #interrupt-cells = <3>; 88 + reg = <0x3ff000 0x1000>, 89 + <0x3fe100 0x100>; 90 + }; 91 + 92 + timer@3fe600 { 93 + compatible = "arm,cortex-a9-twd-timer"; 94 + reg = <0x3fe600 0x20>; 95 + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | 96 + IRQ_TYPE_LEVEL_HIGH)>; 97 + clocks = <&clk 15>; 98 + }; 99 + }; 100 + 101 + ahb { 102 + #address-cells = <1>; 103 + #size-cells = <1>; 104 + compatible = "simple-bus"; 105 + interrupt-parent = <&gic>; 106 + ranges; 107 + 108 + clk: clock-controller@f0801000 { 109 + compatible = "nuvoton,npcm750-clk"; 110 + #clock-cells = <1>; 111 + reg = <0xf0801000 0x1000>; 112 + }; 113 + 114 + apb { 115 + #address-cells = <1>; 116 + #size-cells = <1>; 117 + compatible = "simple-bus"; 118 + interrupt-parent = <&gic>; 119 + ranges = <0x0 0xf0000000 0x00300000>; 120 + 121 + timer0: timer@8000 { 122 + compatible = "nuvoton,npcm750-timer"; 123 + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 124 + reg = <0x8000 0x1000>; 125 + clocks = <&clk 15>; 126 + }; 127 + 128 + serial0: serial@1000 { 129 + compatible = "ns16550a"; 130 + reg = <0x1000 0x1000>; 131 + clocks = <&clk 14>; 132 + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 133 + reg-shift = <2>; 134 + status = "disabled"; 135 + }; 136 + 137 + serial1: serial@2000 { 138 + compatible = "ns16550a"; 139 + reg = <0x2000 0x1000>; 140 + clocks = <&clk 14>; 141 + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 142 + reg-shift = <2>; 143 + status = "disabled"; 144 + }; 145 + 146 + serial2: serial@3000 { 147 + compatible = "ns16550a"; 148 + reg = <0x3000 0x1000>; 149 + clocks = <&clk 14>; 150 + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 151 + reg-shift = <2>; 152 + status = "disabled"; 153 + }; 154 + 155 + serial3: serial@4000 { 156 + compatible = "ns16550a"; 157 + reg = <0x4000 0x1000>; 158 + clocks = <&clk 14>; 159 + interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 160 + reg-shift = <2>; 161 + status = "disabled"; 162 + }; 163 + }; 164 + }; 165 + };