aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mcs814x/files-3.3/arch/arm/boot/dts/mcs8140.dtsi
blob: ad52d9277b69ec69dc07e7d83e0d231403c9fcd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
/*
 * mcs8140.dtsi - Device Tree Include file for Moschip MCS8140 family SoC
 *
 * Copyright (C) 2012, Florian Fainelli <florian@openwrt.org>
 *
 * Licensed under GPLv2.
 */

/include/ "skeleton.dtsi"

/ {
	model = "Moschip MCS8140 family SoC";
	compatible = "moschip,mcs8140";
	interrupt-parent = <&intc>;

	aliases {
		serial0 = &uart0;
		eth0 = &eth0;
	};

	cpus {
		cpu@0 {
			compatible = "arm,arm926ejs";
		};
	};

	ahb {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		vci {
			compatible = "simple-bus";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			eth0: ethernet@40084000 {
				compatible = "moschip,nuport-mac";
				reg = <0x40084000 0xd8		// mac
					0x40080000 0x58>;	// dma channels
				interrupts = <4 5 29>;	/* tx, rx, link */
				nuport-mac,buffer-shifting;
				nuport-mac,link-activity = <0>;
			};

			tso@40088000 {
				reg = <0x40088000 0x1c>;
				interrupts = <7>;
			};

			i2s@4008c000 {
				compatible = "moschip,mcs814x-i2s";
				reg = <0x4008c000 0x18>;
				interrupts = <8>;
			};

			ipsec@40094000 {
				compatible = "moschip,mcs814x-ipsec";
				reg = <0x40094000 0x1d8>;
				interrupts = <16>;
			};

			rng@4009c000 {
				compatible = "moschip,mcs814x-rng";
				reg = <0x4009c000 0x8>;
			};

			memc@400a8000 {
				reg = <0x400a8000 0x58>;
			};

			list-proc@400ac0c0 {
				reg = <0x400ac0c0 0x38>;
				interrupts = <19 27>;		// done, error
			};

			pci@400b0000 {
				compatible = "moschip,mcs8140-pci", "moschip,mcs814x-pci";
				reg = <0x400b0000 0x44		// PCI master
					0x400d8000 0xe4>;	// EEPROM emulator
				interrupts = <25>;		// abort interrupt
				status = "disabled";
				#address-cells = <3>;
				#size-cells = <2>;

				ranges = <0x01000000 0 0x80000000 0x80000000 0 0x04000000   // IO
					  0x42000000 0 0x90000000 0x90000000 0 0x20000000   // non-prefetch
					  0x02000000 0 0xb0000000 0xb0000000 0 0x10000000>; // prefecth

				#interrupt-cells = <1>;
				interrupt-map-mask = <>;
				interrupt-map = <0 0 0 1 &intc 22 0
						 0 0 0 2 &intc 23 0
						 0 0 0 3 &intc 24 0
						 0 0 0 4 &intc 26 0>;
			};

			gpio: gpio@400d0000 {
				compatible = "moschip,mcs814x-gpio";
				reg = <0x400d0000 0x670>;
				interrupts = <10>;
				#gpio-cells = <2>;
				gpio-controller;
				num-gpios = <20>;
			};

			eepio: gpio@400d4000 {
				compatible = "moschip,mcs814x-gpio";
				reg = <0x400d4000 0x470>;
				#gpio-cells = <2>;
				gpio-controller;
				num-gpios = <4>;
			};

			uart0: serial@400dc000 {
				compatible = "ns16550";
				reg = <0x400dc000 0x20>;
				clock-frequency = <50000000>;
				reg-shift = <2>;
				interrupts = <21>;
				status = "okay";
			};

			intc: interrupt-controller@400e4000 {
				#interrupt-cells = <1>;
				compatible = "moschip,mcs814x-intc";
				interrupt-controller;
				interrupt-parent;
				reg = <0x400e4000 0x48>;
			};

			m2m@400e8000 {
				reg = <0x400e8000 0x24>;
				interrupts = <17>;
			};

			eth-filters@400ec000 {
				reg = <0x400ec000 0x80>;
			};

			timer: timer@400f800c {
				compatible = "moschip,mcs814x-timer";
				interrupts = <0>;
				reg = <0x400f800c 0x8>;
			};

			watchdog@400f8014 {
				compatible = "moschip,mcs814x-wdt";
				reg = <0x400f8014 0x8>;
			};

			adc {
				compatible = "simple-bus";
				#address-cells = <2>;
				#size-cells = <1>;
				// 8 64MB chip-selects
				ranges = <0 0 0x00000000 0x4000000	// sdram
					  1 0 0x04000000 0x4000000	// sdram
					  2 0 0x08000000 0x4000000	// reserved
					  3 0 0x0c000000 0x4000000	// flash/localbus
					  4 0 0x10000000 0x4000000	// flash/localbus
					  5 0 0x14000000 0x4000000	// flash/localbus
					  6 0 0x18000000 0x4000000	// flash/localbus
					  7 0 0x1c000000 0x4000000>;	// flash/localbus

				sdram: memory@0,0 {
					reg = <0 0 0>;
				};

				nor: flash@7,0 {
					reg = <7 0 0x4000000>;
					compatible = "cfi-flash";
					bank-width = <1>;		// 8-bit external flash
					#address-cells = <1>;
					#size-cells = <1>;
                                };
                        };

			usb0: ehci@400fc000 {
				compatible = "moschip,mcs814x-ehci", "usb-ehci";
				reg = <0x400fc000 0x74>;
				interrupts = <2>;
			};

			usb1: ohci@400fd000 {
				compatible = "moschip,mcs814x-ohci", "ohci-le";
				reg = <0x400fd000 0x74>;
				interrupts = <11>;
			};

			usb2: ohci@400fe000 {
				compatible = "moschip,mcs814x-ohci", "ohci-le";
				reg = <0x400fe000 0x74>;
				interrupts = <12>;
			};

			usb3: otg@400ff000 {
				compatible = "moschip,msc814x-otg", "usb-otg";
				reg = <0x400ff000 0x1000>;
				interrupts = <13>;
			};
		};

	};
};