xref: /openbmc/linux/arch/arm64/boot/dts/arm/juno-motherboard.dtsi (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
171f867ecSLiviu Dudau/*
271f867ecSLiviu Dudau * ARM Juno Platform motherboard peripherals
371f867ecSLiviu Dudau *
471f867ecSLiviu Dudau * Copyright (c) 2013-2014 ARM Ltd
571f867ecSLiviu Dudau *
671f867ecSLiviu Dudau * This file is licensed under a dual GPLv2 or BSD license.
771f867ecSLiviu Dudau *
871f867ecSLiviu Dudau */
971f867ecSLiviu Dudau
10349b0f95SSudeep Holla/ {
1171f867ecSLiviu Dudau	mb_clk24mhz: clk24mhz {
1271f867ecSLiviu Dudau		compatible = "fixed-clock";
1371f867ecSLiviu Dudau		#clock-cells = <0>;
1471f867ecSLiviu Dudau		clock-frequency = <24000000>;
1571f867ecSLiviu Dudau		clock-output-names = "juno_mb:clk24mhz";
1671f867ecSLiviu Dudau	};
1771f867ecSLiviu Dudau
1871f867ecSLiviu Dudau	mb_clk25mhz: clk25mhz {
1971f867ecSLiviu Dudau		compatible = "fixed-clock";
2071f867ecSLiviu Dudau		#clock-cells = <0>;
2171f867ecSLiviu Dudau		clock-frequency = <25000000>;
2271f867ecSLiviu Dudau		clock-output-names = "juno_mb:clk25mhz";
2371f867ecSLiviu Dudau	};
2471f867ecSLiviu Dudau
253bb1555cSSudeep Holla	v2m_refclk1mhz: refclk1mhz {
263bb1555cSSudeep Holla		compatible = "fixed-clock";
273bb1555cSSudeep Holla		#clock-cells = <0>;
283bb1555cSSudeep Holla		clock-frequency = <1000000>;
293bb1555cSSudeep Holla		clock-output-names = "juno_mb:refclk1mhz";
303bb1555cSSudeep Holla	};
313bb1555cSSudeep Holla
323bb1555cSSudeep Holla	v2m_refclk32khz: refclk32khz {
333bb1555cSSudeep Holla		compatible = "fixed-clock";
343bb1555cSSudeep Holla		#clock-cells = <0>;
353bb1555cSSudeep Holla		clock-frequency = <32768>;
363bb1555cSSudeep Holla		clock-output-names = "juno_mb:refclk32khz";
373bb1555cSSudeep Holla	};
383bb1555cSSudeep Holla
396d6acd14SSudeep Holla	mb_fixed_3v3: mcc-sb-3v3 {
4071f867ecSLiviu Dudau		compatible = "regulator-fixed";
4171f867ecSLiviu Dudau		regulator-name = "MCC_SB_3V3";
4271f867ecSLiviu Dudau		regulator-min-microvolt = <3300000>;
4371f867ecSLiviu Dudau		regulator-max-microvolt = <3300000>;
4471f867ecSLiviu Dudau		regulator-always-on;
4571f867ecSLiviu Dudau	};
4671f867ecSLiviu Dudau
47506eeeabSSudeep Holla	gpio-keys {
4853bdd72cSLinus Walleij		compatible = "gpio-keys";
4953bdd72cSLinus Walleij
506d6acd14SSudeep Holla		power-button {
51c213f874SSudeep Holla			debounce-interval = <50>;
524db7062cSSudeep Holla			wakeup-source;
5353bdd72cSLinus Walleij			linux,code = <116>;
5453bdd72cSLinus Walleij			label = "POWER";
5553bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 0 0x4>;
5653bdd72cSLinus Walleij		};
576d6acd14SSudeep Holla		home-button {
58c213f874SSudeep Holla			debounce-interval = <50>;
594db7062cSSudeep Holla			wakeup-source;
6053bdd72cSLinus Walleij			linux,code = <102>;
6153bdd72cSLinus Walleij			label = "HOME";
6253bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 1 0x4>;
6353bdd72cSLinus Walleij		};
646d6acd14SSudeep Holla		rlock-button {
65c213f874SSudeep Holla			debounce-interval = <50>;
664db7062cSSudeep Holla			wakeup-source;
6753bdd72cSLinus Walleij			linux,code = <152>;
6853bdd72cSLinus Walleij			label = "RLOCK";
6953bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 2 0x4>;
7053bdd72cSLinus Walleij		};
716d6acd14SSudeep Holla		vol-up-button {
72c213f874SSudeep Holla			debounce-interval = <50>;
734db7062cSSudeep Holla			wakeup-source;
7453bdd72cSLinus Walleij			linux,code = <115>;
7553bdd72cSLinus Walleij			label = "VOL+";
7653bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 3 0x4>;
7753bdd72cSLinus Walleij		};
786d6acd14SSudeep Holla		vol-down-button {
79c213f874SSudeep Holla			debounce-interval = <50>;
804db7062cSSudeep Holla			wakeup-source;
8153bdd72cSLinus Walleij			linux,code = <114>;
8253bdd72cSLinus Walleij			label = "VOL-";
8353bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 4 0x4>;
8453bdd72cSLinus Walleij		};
856d6acd14SSudeep Holla		nmi-button {
86c213f874SSudeep Holla			debounce-interval = <50>;
874db7062cSSudeep Holla			wakeup-source;
8853bdd72cSLinus Walleij			linux,code = <99>;
8953bdd72cSLinus Walleij			label = "NMI";
9053bdd72cSLinus Walleij			gpios = <&iofpga_gpio0 5 0x4>;
9153bdd72cSLinus Walleij		};
9253bdd72cSLinus Walleij	};
9353bdd72cSLinus Walleij
94948204a1SAndre Przywara	bus@8000000 {
95078fb7aaSRob Herring		compatible = "simple-bus";
96078fb7aaSRob Herring		#address-cells = <2>;
97078fb7aaSRob Herring		#size-cells = <1>;
98078fb7aaSRob Herring		ranges = <0 0x8000000 0 0x8000000 0x18000000>;
99078fb7aaSRob Herring
100078fb7aaSRob Herring		motherboard-bus@8000000 {
101948204a1SAndre Przywara			compatible = "arm,vexpress,v2p-p1", "simple-bus";
102948204a1SAndre Przywara			#address-cells = <2>;  /* SMB chipselect number and offset */
103948204a1SAndre Przywara			#size-cells = <1>;
104078fb7aaSRob Herring			ranges = <0 0 0 0x08000000 0x04000000>,
105078fb7aaSRob Herring				 <1 0 0 0x14000000 0x04000000>,
106078fb7aaSRob Herring				 <2 0 0 0x18000000 0x04000000>,
107078fb7aaSRob Herring				 <3 0 0 0x1c000000 0x04000000>,
108078fb7aaSRob Herring				 <4 0 0 0x0c000000 0x04000000>,
109078fb7aaSRob Herring				 <5 0 0 0x10000000 0x04000000>;
110948204a1SAndre Przywara			arm,hbi = <0x252>;
111948204a1SAndre Przywara			arm,vexpress,site = <0>;
112948204a1SAndre Przywara
113bb5cce12SAndre Przywara			flash@0 {
1145078f77eSLinus Walleij				/* 2 * 32MiB NOR Flash memory mounted on CS0 */
1155078f77eSLinus Walleij				compatible = "arm,vexpress-flash", "cfi-flash";
1165078f77eSLinus Walleij				reg = <0 0x00000000 0x04000000>;
1175078f77eSLinus Walleij				bank-width = <4>;
118980bbff0SLinus Walleij				/*
119980bbff0SLinus Walleij				 * Unfortunately, accessing the flash disturbs
120980bbff0SLinus Walleij				 * the CPU idle states (suspend) and CPU
121980bbff0SLinus Walleij				 * hotplug of the platform. For this reason,
122980bbff0SLinus Walleij				 * flash hardware access is disabled by default.
123980bbff0SLinus Walleij				 */
124980bbff0SLinus Walleij				status = "disabled";
1257f8e78caSLinus Walleij				partitions {
1267f8e78caSLinus Walleij					compatible = "arm,arm-firmware-suite";
1277f8e78caSLinus Walleij				};
1285078f77eSLinus Walleij			};
1295078f77eSLinus Walleij
130bb5cce12SAndre Przywara			ethernet@200000000 {
13171f867ecSLiviu Dudau				compatible = "smsc,lan9118", "smsc,lan9115";
13271f867ecSLiviu Dudau				reg = <2 0x00000000 0x10000>;
13371f867ecSLiviu Dudau				interrupts = <3>;
13471f867ecSLiviu Dudau				phy-mode = "mii";
13571f867ecSLiviu Dudau				reg-io-width = <4>;
13671f867ecSLiviu Dudau				smsc,irq-active-high;
13771f867ecSLiviu Dudau				smsc,irq-push-pull;
13871f867ecSLiviu Dudau				clocks = <&mb_clk25mhz>;
13971f867ecSLiviu Dudau				vdd33a-supply = <&mb_fixed_3v3>;
14071f867ecSLiviu Dudau				vddvario-supply = <&mb_fixed_3v3>;
14171f867ecSLiviu Dudau			};
14271f867ecSLiviu Dudau
1439d0a36ddSAndre Przywara			iofpga-bus@300000000 {
1442ef7d5f3SMasahiro Yamada				compatible = "simple-bus";
14571f867ecSLiviu Dudau				#address-cells = <1>;
14671f867ecSLiviu Dudau				#size-cells = <1>;
14771f867ecSLiviu Dudau				ranges = <0 3 0 0x200000>;
14871f867ecSLiviu Dudau
14972cc1993SSudeep Holla				v2m_sysctl: sysctl@20000 {
1503bb1555cSSudeep Holla					compatible = "arm,sp810", "arm,primecell";
1513bb1555cSSudeep Holla					reg = <0x020000 0x1000>;
1523bb1555cSSudeep Holla					clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&mb_clk24mhz>;
1533bb1555cSSudeep Holla					clock-names = "refclk", "timclk", "apb_pclk";
1543bb1555cSSudeep Holla					#clock-cells = <1>;
1553bb1555cSSudeep Holla					clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
156341a670aSStephen Boyd					assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
157341a670aSStephen Boyd					assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
1583bb1555cSSudeep Holla				};
1593bb1555cSSudeep Holla
16072cc1993SSudeep Holla				apbregs@10000 {
161bfb47629SLinus Walleij					compatible = "syscon", "simple-mfd";
162bfb47629SLinus Walleij					reg = <0x010000 0x1000>;
163*25b892b5SRob Herring					ranges = <0x0 0x10000 0x1000>;
164*25b892b5SRob Herring					#address-cells = <1>;
165*25b892b5SRob Herring					#size-cells = <1>;
166bfb47629SLinus Walleij
167*25b892b5SRob Herring					led@8,0 {
168bfb47629SLinus Walleij						compatible = "register-bit-led";
169*25b892b5SRob Herring						reg = <0x08 0x04>;
170bfb47629SLinus Walleij						offset = <0x08>;
171bfb47629SLinus Walleij						mask = <0x01>;
172bfb47629SLinus Walleij						label = "vexpress:0";
173bfb47629SLinus Walleij						linux,default-trigger = "heartbeat";
174bfb47629SLinus Walleij						default-state = "on";
175bfb47629SLinus Walleij					};
176*25b892b5SRob Herring					led@8,1 {
177bfb47629SLinus Walleij						compatible = "register-bit-led";
178*25b892b5SRob Herring						reg = <0x08 0x04>;
179bfb47629SLinus Walleij						offset = <0x08>;
180bfb47629SLinus Walleij						mask = <0x02>;
181bfb47629SLinus Walleij						label = "vexpress:1";
182bfb47629SLinus Walleij						linux,default-trigger = "mmc0";
183bfb47629SLinus Walleij						default-state = "off";
184bfb47629SLinus Walleij					};
185*25b892b5SRob Herring					led@8,2 {
186bfb47629SLinus Walleij						compatible = "register-bit-led";
187*25b892b5SRob Herring						reg = <0x08 0x04>;
188bfb47629SLinus Walleij						offset = <0x08>;
189bfb47629SLinus Walleij						mask = <0x04>;
190bfb47629SLinus Walleij						label = "vexpress:2";
191bfb47629SLinus Walleij						linux,default-trigger = "cpu0";
192bfb47629SLinus Walleij						default-state = "off";
193bfb47629SLinus Walleij					};
194*25b892b5SRob Herring					led@8,3 {
195bfb47629SLinus Walleij						compatible = "register-bit-led";
196*25b892b5SRob Herring						reg = <0x08 0x04>;
197bfb47629SLinus Walleij						offset = <0x08>;
198bfb47629SLinus Walleij						mask = <0x08>;
199bfb47629SLinus Walleij						label = "vexpress:3";
200bfb47629SLinus Walleij						linux,default-trigger = "cpu1";
201bfb47629SLinus Walleij						default-state = "off";
202bfb47629SLinus Walleij					};
203*25b892b5SRob Herring					led@8,4 {
204bfb47629SLinus Walleij						compatible = "register-bit-led";
205*25b892b5SRob Herring						reg = <0x08 0x04>;
206bfb47629SLinus Walleij						offset = <0x08>;
207bfb47629SLinus Walleij						mask = <0x10>;
208bfb47629SLinus Walleij						label = "vexpress:4";
209bfb47629SLinus Walleij						linux,default-trigger = "cpu2";
210bfb47629SLinus Walleij						default-state = "off";
211bfb47629SLinus Walleij					};
212*25b892b5SRob Herring					led@8,5 {
213bfb47629SLinus Walleij						compatible = "register-bit-led";
214*25b892b5SRob Herring						reg = <0x08 0x04>;
215bfb47629SLinus Walleij						offset = <0x08>;
216bfb47629SLinus Walleij						mask = <0x20>;
217bfb47629SLinus Walleij						label = "vexpress:5";
218bfb47629SLinus Walleij						linux,default-trigger = "cpu3";
219bfb47629SLinus Walleij						default-state = "off";
220bfb47629SLinus Walleij					};
221*25b892b5SRob Herring					led@8,6 {
222bfb47629SLinus Walleij						compatible = "register-bit-led";
223*25b892b5SRob Herring						reg = <0x08 0x04>;
224bfb47629SLinus Walleij						offset = <0x08>;
225bfb47629SLinus Walleij						mask = <0x40>;
226bfb47629SLinus Walleij						label = "vexpress:6";
227bfb47629SLinus Walleij						default-state = "off";
228bfb47629SLinus Walleij					};
229*25b892b5SRob Herring					led@8,7 {
230bfb47629SLinus Walleij						compatible = "register-bit-led";
231*25b892b5SRob Herring						reg = <0x08 0x04>;
232bfb47629SLinus Walleij						offset = <0x08>;
233bfb47629SLinus Walleij						mask = <0x80>;
234bfb47629SLinus Walleij						label = "vexpress:7";
235bfb47629SLinus Walleij						default-state = "off";
236bfb47629SLinus Walleij					};
237bfb47629SLinus Walleij				};
238bfb47629SLinus Walleij
239b43446b4SKrzysztof Kozlowski				mmc@50000 {
24071f867ecSLiviu Dudau					compatible = "arm,pl180", "arm,primecell";
24171f867ecSLiviu Dudau					reg = <0x050000 0x1000>;
24271f867ecSLiviu Dudau					interrupts = <5>;
24371f867ecSLiviu Dudau					/* cd-gpios = <&v2m_mmc_gpios 0 0>;
24471f867ecSLiviu Dudau					wp-gpios = <&v2m_mmc_gpios 1 0>; */
24571f867ecSLiviu Dudau					max-frequency = <12000000>;
24671f867ecSLiviu Dudau					vmmc-supply = <&mb_fixed_3v3>;
24771f867ecSLiviu Dudau					clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
24871f867ecSLiviu Dudau					clock-names = "mclk", "apb_pclk";
24971f867ecSLiviu Dudau				};
25071f867ecSLiviu Dudau
25172cc1993SSudeep Holla				kmi@60000 {
25271f867ecSLiviu Dudau					compatible = "arm,pl050", "arm,primecell";
25371f867ecSLiviu Dudau					reg = <0x060000 0x1000>;
25471f867ecSLiviu Dudau					interrupts = <8>;
25571f867ecSLiviu Dudau					clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
25671f867ecSLiviu Dudau					clock-names = "KMIREFCLK", "apb_pclk";
25771f867ecSLiviu Dudau				};
25871f867ecSLiviu Dudau
25972cc1993SSudeep Holla				kmi@70000 {
26071f867ecSLiviu Dudau					compatible = "arm,pl050", "arm,primecell";
26171f867ecSLiviu Dudau					reg = <0x070000 0x1000>;
26271f867ecSLiviu Dudau					interrupts = <8>;
26371f867ecSLiviu Dudau					clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
26471f867ecSLiviu Dudau					clock-names = "KMIREFCLK", "apb_pclk";
26571f867ecSLiviu Dudau				};
26671f867ecSLiviu Dudau
267b43446b4SKrzysztof Kozlowski				watchdog@f0000 {
26871f867ecSLiviu Dudau					compatible = "arm,sp805", "arm,primecell";
26971f867ecSLiviu Dudau					reg = <0x0f0000 0x10000>;
27071f867ecSLiviu Dudau					interrupts = <7>;
27171f867ecSLiviu Dudau					clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
272b83ded8aSAndre Przywara					clock-names = "wdog_clk", "apb_pclk";
27371f867ecSLiviu Dudau				};
27471f867ecSLiviu Dudau
27571f867ecSLiviu Dudau				v2m_timer01: timer@110000 {
27671f867ecSLiviu Dudau					compatible = "arm,sp804", "arm,primecell";
27771f867ecSLiviu Dudau					reg = <0x110000 0x10000>;
27871f867ecSLiviu Dudau					interrupts = <9>;
2793bb1555cSSudeep Holla					clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&mb_clk24mhz>;
2803bb1555cSSudeep Holla					clock-names = "timclken1", "timclken2", "apb_pclk";
28171f867ecSLiviu Dudau				};
28271f867ecSLiviu Dudau
28371f867ecSLiviu Dudau				v2m_timer23: timer@120000 {
28471f867ecSLiviu Dudau					compatible = "arm,sp804", "arm,primecell";
28571f867ecSLiviu Dudau					reg = <0x120000 0x10000>;
28671f867ecSLiviu Dudau					interrupts = <9>;
2873bb1555cSSudeep Holla					clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&mb_clk24mhz>;
2883bb1555cSSudeep Holla					clock-names = "timclken1", "timclken2", "apb_pclk";
28971f867ecSLiviu Dudau				};
29071f867ecSLiviu Dudau
29171f867ecSLiviu Dudau				rtc@170000 {
29271f867ecSLiviu Dudau					compatible = "arm,pl031", "arm,primecell";
29371f867ecSLiviu Dudau					reg = <0x170000 0x10000>;
29471f867ecSLiviu Dudau					interrupts = <0>;
29571f867ecSLiviu Dudau					clocks = <&soc_smc50mhz>;
29671f867ecSLiviu Dudau					clock-names = "apb_pclk";
29771f867ecSLiviu Dudau				};
29853bdd72cSLinus Walleij
29953bdd72cSLinus Walleij				iofpga_gpio0: gpio@1d0000 {
30053bdd72cSLinus Walleij					compatible = "arm,pl061", "arm,primecell";
30153bdd72cSLinus Walleij					reg = <0x1d0000 0x1000>;
30253bdd72cSLinus Walleij					interrupts = <6>;
30353bdd72cSLinus Walleij					clocks = <&soc_smc50mhz>;
30453bdd72cSLinus Walleij					clock-names = "apb_pclk";
30553bdd72cSLinus Walleij					gpio-controller;
30653bdd72cSLinus Walleij					#gpio-cells = <2>;
30753bdd72cSLinus Walleij					interrupt-controller;
30853bdd72cSLinus Walleij					#interrupt-cells = <2>;
30953bdd72cSLinus Walleij				};
31071f867ecSLiviu Dudau			};
31171f867ecSLiviu Dudau		};
312349b0f95SSudeep Holla	};
313349b0f95SSudeep Holla};
314