1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
4 *
5 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
6 */
7
8#include "dt-bindings/clock/pxa-clock.h"
9
10#define PMGROUP(pin) #pin
11#define PMMUX(func, pin, af)			\
12	mux- ## func {				\
13		groups = PMGROUP(P ## pin);	\
14		function = #af;			\
15	}
16#define PMMUX_LPM_LOW(func, pin, af)		\
17	mux- ## func {				\
18		groups = PMGROUP(P ## pin);	\
19		function = #af;			\
20		low-power-disable;		\
21	}
22#define PMMUX_LPM_HIGH(func, pin, af)		\
23	mux- ## func {				\
24		groups = PMGROUP(P ## pin);	\
25		function = #af;			\
26		low-power-enable;		\
27	}
28
29/ {
30	#address-cells = <1>;
31	#size-cells = <1>;
32	model = "Marvell PXA2xx family SoC";
33	compatible = "marvell,pxa2xx";
34	interrupt-parent = <&pxairq>;
35
36	aliases {
37		serial0 = &ffuart;
38		serial1 = &btuart;
39		serial2 = &stuart;
40		serial3 = &hwuart;
41		i2c0 = &pwri2c;
42		i2c1 = &pxai2c1;
43	};
44
45	cpus {
46		cpu {
47			compatible = "marvell,xscale";
48			device_type = "cpu";
49		};
50	};
51
52	pxabus {
53		compatible = "simple-bus";
54		#address-cells = <1>;
55		#size-cells = <1>;
56		ranges;
57
58		pxairq: interrupt-controller@40d00000 {
59			#interrupt-cells = <1>;
60			compatible = "marvell,pxa-intc";
61			interrupt-controller;
62			interrupt-parent;
63			marvell,intc-nr-irqs = <32>;
64			reg = <0x40d00000 0xd0>;
65		};
66
67		gpio: gpio@40e00000 {
68			compatible = "mrvl,pxa-gpio";
69			#address-cells = <0x1>;
70			#size-cells = <0x1>;
71			reg = <0x40e00000 0x10000>;
72			gpio-controller;
73			#gpio-cells = <0x2>;
74			interrupts = <8>, <9>, <10>;
75			interrupt-names = "gpio0", "gpio1", "gpio_mux";
76			interrupt-controller;
77			#interrupt-cells = <0x2>;
78			ranges;
79
80			gcb0: gpio@40e00000 {
81				reg = <0x40e00000 0x4>;
82			};
83
84			gcb1: gpio@40e00004 {
85				reg = <0x40e00004 0x4>;
86			};
87
88			gcb2: gpio@40e00008 {
89				reg = <0x40e00008 0x4>;
90			};
91			gcb3: gpio@40e0000c {
92				reg = <0x40e0000c 0x4>;
93			};
94		};
95
96		ffuart: serial@40100000 {
97			compatible = "mrvl,pxa-uart";
98			reg = <0x40100000 0x30>;
99			interrupts = <22>;
100			clocks = <&clks CLK_FFUART>;
101			status = "disabled";
102		};
103
104		btuart: serial@40200000 {
105			compatible = "mrvl,pxa-uart";
106			reg = <0x40200000 0x30>;
107			interrupts = <21>;
108			clocks = <&clks CLK_BTUART>;
109			status = "disabled";
110		};
111
112		stuart: serial@40700000 {
113			compatible = "mrvl,pxa-uart";
114			reg = <0x40700000 0x30>;
115			interrupts = <20>;
116			clocks = <&clks CLK_STUART>;
117			status = "disabled";
118		};
119
120		hwuart: serial@41600000 {
121			compatible = "mrvl,pxa-uart";
122			reg = <0x41600000 0x30>;
123			interrupts = <7>;
124			status = "disabled";
125		};
126
127		pxai2c1: i2c@40301680 {
128			compatible = "mrvl,pxa-i2c";
129			reg = <0x40301680 0x30>;
130			interrupts = <18>;
131			clocks = <&clks CLK_I2C>;
132			#address-cells = <0x1>;
133			#size-cells = <0>;
134			status = "disabled";
135		};
136
137		mmc0: mmc@41100000 {
138			compatible = "marvell,pxa-mmc";
139			reg = <0x41100000 0x1000>;
140			interrupts = <23>;
141			clocks = <&clks CLK_MMC>;
142			dmas = <&pdma 21 3
143				&pdma 22 3>;
144			dma-names = "rx", "tx";
145			status = "disabled";
146		};
147
148		rtc@40900000 {
149			compatible = "marvell,pxa-rtc";
150			reg = <0x40900000 0x3c>;
151			interrupts = <30 31>;
152		};
153
154		lcdc: lcd-controller@40500000 {
155			compatible = "marvell,pxa2xx-lcdc";
156			reg = <0x44000000 0x10000>;
157			interrupts = <17>;
158			clocks = <&clks CLK_LCD>;
159			status = "disabled";
160		};
161	};
162};
163