ath79: add support for TP-LINK Archer C7 v4
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.9 / 950-0054-BCM2708-Add-core-Device-Tree-support.patch
1 From 589cd87acedc0e24214934816b6c16b4e76a894d Mon Sep 17 00:00:00 2001
2 From: notro <notro@tronnes.org>
3 Date: Wed, 9 Jul 2014 14:46:08 +0200
4 Subject: [PATCH] BCM2708: Add core Device Tree support
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 Add the bare minimum needed to boot BCM2708 from a Device Tree.
10
11 Signed-off-by: Noralf Tronnes <notro@tronnes.org>
12
13 BCM2708: DT: change 'axi' nodename to 'soc'
14
15 Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
16 The VC4 bootloader fills in certain properties in the 'axi' subtree,
17 but since this is part of an upstreaming effort, the name is changed.
18
19 Signed-off-by: Noralf Tronnes notro@tronnes.org
20
21 BCM2708_DT: Correct length of the peripheral space
22
23 Use dts-dirs feature for overlays.
24
25 The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
26
27 Using this fixes the install_dtbs target, which previously did not install the overlays.
28
29 BCM270X_DT: configure I2S DMA channels
30
31 Signed-off-by: Matthias Reichl <hias@horus.com>
32
33 BCM270X_DT: switch to bcm2835-i2s
34
35 I2S soundcard drivers with proper devicetree support (i.e. not linking
36 to the cpu_dai/platform via name but to cpu/platform via of_node)
37 will work out of the box without any modifications.
38
39 When the kernel is compiled without devicetree support the platform
40 code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
41 will link to it via name, as before.
42
43 Signed-off-by: Matthias Reichl <hias@horus.com>
44
45 SDIO-overlay: add poll_once-boolean parameter
46
47 Add paramter to toggle sdio-device-polling
48 done every second or once at boot-time.
49
50 Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
51
52 BCM270X_DT: Make mmc overlay compatible with current firmware
53
54 The original DT overlay logic followed a merge-then-patch procedure,
55 i.e. parameters are applied to the loaded overlay before the overlay
56 is merged into the base DTB. This sequence has been changed to
57 patch-then-merge, in order to support parameterised node names, and
58 to protect against bad overlays. As a result, overrides (parameters)
59 must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.
60
61 mmc-overlay.dts (that switches back to the original mmc sdcard
62 driver) is the only overlay violating that rule, and this patch
63 fixes it.
64
65 bcm270x_dt: Use the sdhost MMC controller by default
66
67 The "mmc" overlay reverts to using the other controller.
68
69 squash: Add cprman to dt
70
71 BCM270X_DT: Use clk_core for I2C interfaces
72
73 BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
74
75 The mainline Device Tree files are quite close to downstream now.
76 Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files
77 for our dts files.
78
79 Mainline dts files are based on these files:
80
81 bcm2835-rpi.dtsi
82 bcm2835.dtsi bcm2836.dtsi
83 bcm283x.dtsi
84
85 Current downstream are based on these:
86
87 bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi
88 bcm2708_common.dtsi
89
90 This patch introduces this dependency:
91
92 bcm2708.dtsi bcm2709.dtsi
93 bcm2708-rpi.dtsi
94 bcm270x.dtsi
95 bcm2835.dtsi bcm2836.dtsi
96 bcm283x.dtsi
97
98 And:
99 bcm2710.dtsi
100 bcm2708-rpi.dtsi
101 bcm270x.dtsi
102 bcm283x.dtsi
103
104 bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
105 bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.
106
107 Other changes:
108 - The led node has moved from /soc/leds to /leds. This is not a problem
109 since the label is used to reference it.
110 - The clk_osc reg property changes from 6 to 3.
111 - The gpu nodes has their interrupt property set in the base file.
112 - the clocks label does not point to the /clocks node anymore, but
113 points to the cprman node. This is not a problem since the overlays
114 that use the clock node refer to it directly: target-path = "/clocks";
115 - some nodes now have 2 labels since mainline and downstream differs in
116 this respect: cprman/clocks, spi0/spi, gpu/vc4.
117 - some nodes doesn't have an explicit status = "okay" since they're not
118 disabled in the base file: watchdog and random.
119 - gpiomem doesn't need an explicit status = "okay".
120 - bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi,
121 it's now set directly in that file.
122 - bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer.
123 - Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes.
124
125 Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
126
127 BCM270X_DT: Use raspberrypi-power to turn on USB power
128
129 Use the raspberrypi-power driver to turn on USB power.
130
131 Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
132
133 BCM270X_DT: Add a .dtbo target, use for overlays
134
135 Change the filenames and extensions to keep the pre-DDT style of
136 overlay (<name>-overlay.dtb) distinct from new ones that use a
137 different style of local fixups (<name>.dtbo), and to match other
138 platforms.
139
140 The RPi firmware uses the DDTK trailer atom to choose which type of
141 overlay to use for each kernel.
142
143 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
144
145 BCM270X_DT: Don't generate "linux,phandle" props
146
147 The EPAPR standard says to use "phandle" properties to store phandles,
148 rather than the deprecated "linux,phandle" version. By default, dtc
149 generates both, but adding "-H epapr" causes it to only generate
150 "phandle"s, saving some space and clutter.
151
152 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
153
154 BCM270X_DT: Add overlay for enc28j60 on SPI2
155
156 Works on SPI2 for compute module
157
158 BCM270X_DT: Add midi-uart0 overlay
159
160 MIDI requires 31.25kbaud, a baudrate unsupported by Linux. The
161 midi-uart0 overlay configures uart0 (ttyAMA0) to use a fake clock
162 so that requesting 38.4kbaud actually gets 31.25kbaud.
163
164 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
165
166 BCM270X_DT: Add i2c-sensor overlay
167
168 The i2c-sensor overlay is a container for various pressure and
169 temperature sensors, currently bmp085 and bmp280. The standalone
170 bmp085_i2c-sensor overlay is now deprecated.
171
172 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
173
174 BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (#1752)
175
176 We now create overlays as .dtbo files.
177
178 build: support for .dtbo files for dtb overlays
179
180 Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
181 Patch the kernel, which has faulty rules to generate .dtbo the way yocto does
182
183 Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
184 Signed-off-by: Khem Raj <raj.khem@gmail.com>
185 ---
186 arch/arm/Makefile | 2 +
187 arch/arm/boot/.gitignore | 2 +-
188 arch/arm/boot/dts/Makefile | 19 +
189 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 156 +++
190 arch/arm/boot/dts/bcm2708-rpi-b.dts | 146 +++
191 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 105 ++
192 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 50 +
193 arch/arm/boot/dts/bcm2708-rpi.dtsi | 109 ++
194 arch/arm/boot/dts/bcm2708.dtsi | 16 +
195 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 156 +++
196 arch/arm/boot/dts/bcm2709.dtsi | 22 +
197 arch/arm/boot/dts/bcm270x.dtsi | 141 ++
198 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 203 +++
199 arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 155 +++
200 arch/arm/boot/dts/bcm2710.dtsi | 155 +++
201 arch/arm/boot/dts/overlays/Makefile | 105 ++
202 arch/arm/boot/dts/overlays/README | 1368 ++++++++++++++++++++
203 .../arm/boot/dts/overlays/adau1977-adc-overlay.dts | 53 +
204 arch/arm/boot/dts/overlays/ads1015-overlay.dts | 98 ++
205 arch/arm/boot/dts/overlays/ads7846-overlay.dts | 89 ++
206 .../dts/overlays/akkordion-iqdacplus-overlay.dts | 46 +
207 .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 +
208 arch/arm/boot/dts/overlays/at86rf233-overlay.dts | 57 +
209 .../audioinjector-wm8731-audio-overlay.dts | 39 +
210 arch/arm/boot/dts/overlays/audremap-overlay.dts | 19 +
211 .../dts/overlays/bmp085_i2c-sensor-overlay.dts | 23 +
212 arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 +
213 .../boot/dts/overlays/dionaudio-loco-overlay.dts | 39 +
214 arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 +
215 arch/arm/boot/dts/overlays/dpi24-overlay.dts | 31 +
216 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts | 20 +
217 arch/arm/boot/dts/overlays/dwc2-overlay.dts | 29 +
218 arch/arm/boot/dts/overlays/enc28j60-overlay.dts | 53 +
219 .../boot/dts/overlays/enc28j60-spi2-overlay.dts | 47 +
220 arch/arm/boot/dts/overlays/gpio-ir-overlay.dts | 44 +
221 .../boot/dts/overlays/gpio-poweroff-overlay.dts | 34 +
222 .../boot/dts/overlays/hifiberry-amp-overlay.dts | 39 +
223 .../boot/dts/overlays/hifiberry-dac-overlay.dts | 34 +
224 .../dts/overlays/hifiberry-dacplus-overlay.dts | 56 +
225 .../boot/dts/overlays/hifiberry-digi-overlay.dts | 39 +
226 .../dts/overlays/hifiberry-digi-pro-overlay.dts | 41 +
227 arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 ++
228 arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 +++
229 arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts | 13 +
230 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts | 43 +
231 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts | 139 ++
232 .../boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts | 26 +
233 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts | 83 ++
234 arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts | 34 +
235 .../arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts | 61 +
236 .../arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts | 37 +
237 .../boot/dts/overlays/i2s-gpio28-31-overlay.dts | 18 +
238 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts | 43 +
239 .../boot/dts/overlays/iqaudio-dacplus-overlay.dts | 46 +
240 .../overlays/iqaudio-digi-wm8804-audio-overlay.dts | 47 +
241 .../arm/boot/dts/overlays/justboom-dac-overlay.dts | 43 +
242 .../boot/dts/overlays/justboom-digi-overlay.dts | 39 +
243 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts | 57 +
244 arch/arm/boot/dts/overlays/mcp23017-overlay.dts | 54 +
245 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 +++++++++++
246 .../arm/boot/dts/overlays/mcp2515-can0-overlay.dts | 73 ++
247 .../arm/boot/dts/overlays/mcp2515-can1-overlay.dts | 73 ++
248 arch/arm/boot/dts/overlays/midi-uart0-overlay.dts | 36 +
249 arch/arm/boot/dts/overlays/mmc-overlay.dts | 38 +
250 arch/arm/boot/dts/overlays/mz61581-overlay.dts | 117 ++
251 arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts | 27 +
252 .../boot/dts/overlays/pi3-disable-bt-overlay.dts | 46 +
253 .../boot/dts/overlays/pi3-miniuart-bt-overlay.dts | 64 +
254 arch/arm/boot/dts/overlays/piscreen-overlay.dts | 102 ++
255 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts | 106 ++
256 arch/arm/boot/dts/overlays/pisound-overlay.dts | 114 ++
257 arch/arm/boot/dts/overlays/pitft22-overlay.dts | 69 +
258 .../dts/overlays/pitft28-capacitive-overlay.dts | 91 ++
259 .../dts/overlays/pitft28-resistive-overlay.dts | 121 ++
260 .../dts/overlays/pitft35-resistive-overlay.dts | 121 ++
261 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 35 +
262 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 47 +
263 arch/arm/boot/dts/overlays/pwm-overlay.dts | 43 +
264 arch/arm/boot/dts/overlays/qca7000-overlay.dts | 52 +
265 arch/arm/boot/dts/overlays/raspidac3-overlay.dts | 45 +
266 .../boot/dts/overlays/rpi-backlight-overlay.dts | 21 +
267 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 +
268 arch/arm/boot/dts/overlays/rpi-display-overlay.dts | 89 ++
269 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts | 17 +
270 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 39 +
271 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts | 47 +
272 .../overlays/rra-digidac1-wm8741-audio-overlay.dts | 81 ++
273 .../boot/dts/overlays/sc16is750-i2c-overlay.dts | 37 +
274 .../boot/dts/overlays/sc16is752-spi1-overlay.dts | 61 +
275 arch/arm/boot/dts/overlays/sdhost-overlay.dts | 32 +
276 arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts | 36 +
277 arch/arm/boot/dts/overlays/sdio-overlay.dts | 36 +
278 arch/arm/boot/dts/overlays/sdtweak-overlay.dts | 23 +
279 arch/arm/boot/dts/overlays/smi-dev-overlay.dts | 18 +
280 arch/arm/boot/dts/overlays/smi-nand-overlay.dts | 69 +
281 arch/arm/boot/dts/overlays/smi-overlay.dts | 37 +
282 .../boot/dts/overlays/spi-gpio35-39-overlay.dts | 31 +
283 arch/arm/boot/dts/overlays/spi-rtc-overlay.dts | 33 +
284 arch/arm/boot/dts/overlays/spi0-hw-cs-overlay.dts | 26 +
285 arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts | 57 +
286 arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts | 69 +
287 arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts | 81 ++
288 arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts | 57 +
289 arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts | 69 +
290 arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts | 81 ++
291 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts | 224 ++++
292 arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 +
293 .../arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts | 89 ++
294 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 136 ++
295 arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 +
296 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts | 39 +
297 .../boot/dts/overlays/w1-gpio-pullup-overlay.dts | 41 +
298 arch/arm/boot/dts/overlays/wittypi-overlay.dts | 44 +
299 scripts/Makefile.dtbinst | 10 +-
300 scripts/Makefile.lib | 11 +
301 115 files changed, 8979 insertions(+), 4 deletions(-)
302 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
303 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
304 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts
305 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
306 create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi
307 create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
308 create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
309 create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
310 create mode 100644 arch/arm/boot/dts/bcm270x.dtsi
311 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts
312 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts
313 create mode 100644 arch/arm/boot/dts/bcm2710.dtsi
314 create mode 100644 arch/arm/boot/dts/overlays/Makefile
315 create mode 100644 arch/arm/boot/dts/overlays/README
316 create mode 100644 arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
317 create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts
318 create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
319 create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
320 create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
321 create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts
322 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
323 create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts
324 create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
325 create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
326 create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
327 create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts
328 create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts
329 create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
330 create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts
331 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
332 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
333 create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
334 create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
335 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
336 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
337 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
338 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
339 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
340 create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
341 create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
342 create mode 100644 arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
343 create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
344 create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
345 create mode 100644 arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
346 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
347 create mode 100644 arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
348 create mode 100644 arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
349 create mode 100644 arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
350 create mode 100644 arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
351 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
352 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
353 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
354 create mode 100644 arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
355 create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
356 create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
357 create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts
358 create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
359 create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
360 create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
361 create mode 100644 arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
362 create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
363 create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
364 create mode 100644 arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts
365 create mode 100644 arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
366 create mode 100644 arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
367 create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
368 create mode 100644 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
369 create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts
370 create mode 100644 arch/arm/boot/dts/overlays/pitft22-overlay.dts
371 create mode 100644 arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
372 create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
373 create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
374 create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
375 create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
376 create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts
377 create mode 100644 arch/arm/boot/dts/overlays/qca7000-overlay.dts
378 create mode 100644 arch/arm/boot/dts/overlays/raspidac3-overlay.dts
379 create mode 100644 arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
380 create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
381 create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
382 create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
383 create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
384 create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
385 create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
386 create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
387 create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
388 create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
389 create mode 100644 arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
390 create mode 100644 arch/arm/boot/dts/overlays/sdio-overlay.dts
391 create mode 100644 arch/arm/boot/dts/overlays/sdtweak-overlay.dts
392 create mode 100644 arch/arm/boot/dts/overlays/smi-dev-overlay.dts
393 create mode 100644 arch/arm/boot/dts/overlays/smi-nand-overlay.dts
394 create mode 100644 arch/arm/boot/dts/overlays/smi-overlay.dts
395 create mode 100644 arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
396 create mode 100644 arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
397 create mode 100644 arch/arm/boot/dts/overlays/spi0-hw-cs-overlay.dts
398 create mode 100644 arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
399 create mode 100644 arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
400 create mode 100644 arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
401 create mode 100644 arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
402 create mode 100644 arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
403 create mode 100644 arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
404 create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
405 create mode 100644 arch/arm/boot/dts/overlays/uart1-overlay.dts
406 create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
407 create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
408 create mode 100644 arch/arm/boot/dts/overlays/vga666-overlay.dts
409 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
410 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
411 create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts
412
413 --- a/arch/arm/Makefile
414 +++ b/arch/arm/Makefile
415 @@ -334,6 +334,8 @@ $(INSTALL_TARGETS):
416
417 %.dtb: | scripts
418 $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
419 +%.dtbo: | scripts
420 + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
421
422 PHONY += dtbs dtbs_install
423
424 --- a/arch/arm/boot/.gitignore
425 +++ b/arch/arm/boot/.gitignore
426 @@ -3,4 +3,4 @@ zImage
427 xipImage
428 bootpImage
429 uImage
430 -*.dtb
431 +*.dtb*
432 --- a/arch/arm/boot/dts/Makefile
433 +++ b/arch/arm/boot/dts/Makefile
434 @@ -1,5 +1,13 @@
435 ifeq ($(CONFIG_OF),y)
436
437 +dtb-$(CONFIG_ARCH_BCM2835) += \
438 + bcm2708-rpi-b.dtb \
439 + bcm2708-rpi-b-plus.dtb \
440 + bcm2708-rpi-cm.dtb \
441 + bcm2709-rpi-2-b.dtb \
442 + bcm2710-rpi-3-b.dtb \
443 + bcm2710-rpi-cm3.dtb
444 +
445 dtb-$(CONFIG_ARCH_ALPINE) += \
446 alpine-db.dtb
447 dtb-$(CONFIG_MACH_ARTPEC6) += \
448 @@ -955,10 +963,21 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
449 dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
450 dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \
451 aspeed-ast2500-evb.dtb
452 +
453 +targets += dtbs dtbs_install
454 +targets += $(dtb-y)
455 +
456 endif
457
458 dtstree := $(srctree)/$(src)
459 dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
460
461 always := $(dtb-y)
462 +subdir-y := overlays
463 clean-files := *.dtb
464 +
465 +# Enable fixups to support overlays on BCM2835 platforms
466 +ifeq ($(CONFIG_ARCH_BCM2835),y)
467 + DTC_FLAGS ?= -@ -H epapr
468 + dts-dirs += overlays
469 +endif
470 --- /dev/null
471 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
472 @@ -0,0 +1,156 @@
473 +/dts-v1/;
474 +
475 +#include "bcm2708.dtsi"
476 +
477 +/ {
478 + model = "Raspberry Pi Model B+";
479 +};
480 +
481 +&gpio {
482 + sdhost_pins: sdhost_pins {
483 + brcm,pins = <48 49 50 51 52 53>;
484 + brcm,function = <4>; /* alt0 */
485 + };
486 +
487 + spi0_pins: spi0_pins {
488 + brcm,pins = <9 10 11>;
489 + brcm,function = <4>; /* alt0 */
490 + };
491 +
492 + spi0_cs_pins: spi0_cs_pins {
493 + brcm,pins = <8 7>;
494 + brcm,function = <1>; /* output */
495 + };
496 +
497 + i2c0_pins: i2c0 {
498 + brcm,pins = <0 1>;
499 + brcm,function = <4>;
500 + };
501 +
502 + i2c1_pins: i2c1 {
503 + brcm,pins = <2 3>;
504 + brcm,function = <4>;
505 + };
506 +
507 + i2s_pins: i2s {
508 + brcm,pins = <18 19 20 21>;
509 + brcm,function = <4>; /* alt0 */
510 + };
511 +
512 + audio_pins: audio_pins {
513 + brcm,pins = <40 45>;
514 + brcm,function = <4>;
515 + };
516 +};
517 +
518 +&sdhost {
519 + pinctrl-names = "default";
520 + pinctrl-0 = <&sdhost_pins>;
521 + bus-width = <4>;
522 + status = "okay";
523 +};
524 +
525 +&fb {
526 + status = "okay";
527 +};
528 +
529 +&uart0 {
530 + status = "okay";
531 +};
532 +
533 +&spi0 {
534 + pinctrl-names = "default";
535 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
536 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
537 +
538 + spidev0: spidev@0{
539 + compatible = "spidev";
540 + reg = <0>; /* CE0 */
541 + #address-cells = <1>;
542 + #size-cells = <0>;
543 + spi-max-frequency = <500000>;
544 + };
545 +
546 + spidev1: spidev@1{
547 + compatible = "spidev";
548 + reg = <1>; /* CE1 */
549 + #address-cells = <1>;
550 + #size-cells = <0>;
551 + spi-max-frequency = <500000>;
552 + };
553 +};
554 +
555 +&i2c0 {
556 + pinctrl-names = "default";
557 + pinctrl-0 = <&i2c0_pins>;
558 + clock-frequency = <100000>;
559 +};
560 +
561 +&i2c1 {
562 + pinctrl-names = "default";
563 + pinctrl-0 = <&i2c1_pins>;
564 + clock-frequency = <100000>;
565 +};
566 +
567 +&i2c2 {
568 + clock-frequency = <100000>;
569 +};
570 +
571 +&i2s {
572 + pinctrl-names = "default";
573 + pinctrl-0 = <&i2s_pins>;
574 +};
575 +
576 +&leds {
577 + act_led: act {
578 + label = "led0";
579 + linux,default-trigger = "mmc0";
580 + gpios = <&gpio 47 0>;
581 + };
582 +
583 + pwr_led: pwr {
584 + label = "led1";
585 + linux,default-trigger = "input";
586 + gpios = <&gpio 35 0>;
587 + };
588 +};
589 +
590 +&hdmi {
591 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
592 +};
593 +
594 +&audio {
595 + pinctrl-names = "default";
596 + pinctrl-0 = <&audio_pins>;
597 +};
598 +
599 +/ {
600 + __overrides__ {
601 + uart0 = <&uart0>,"status";
602 + uart1 = <&uart1>,"status";
603 + i2s = <&i2s>,"status";
604 + spi = <&spi0>,"status";
605 + i2c0 = <&i2c0>,"status";
606 + i2c1 = <&i2c1>,"status";
607 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
608 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
609 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
610 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
611 +
612 + act_led_gpio = <&act_led>,"gpios:4";
613 + act_led_activelow = <&act_led>,"gpios:8";
614 + act_led_trigger = <&act_led>,"linux,default-trigger";
615 +
616 + pwr_led_gpio = <&pwr_led>,"gpios:4";
617 + pwr_led_activelow = <&pwr_led>,"gpios:8";
618 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
619 +
620 + audio = <&audio>,"status";
621 + watchdog = <&watchdog>,"status";
622 + random = <&random>,"status";
623 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
624 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
625 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
626 + sd_debug = <&sdhost>,"brcm,debug";
627 + };
628 +};
629 --- /dev/null
630 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
631 @@ -0,0 +1,146 @@
632 +/dts-v1/;
633 +
634 +#include "bcm2708.dtsi"
635 +
636 +/ {
637 + model = "Raspberry Pi Model B";
638 +};
639 +
640 +&gpio {
641 + sdhost_pins: sdhost_pins {
642 + brcm,pins = <48 49 50 51 52 53>;
643 + brcm,function = <4>; /* alt0 */
644 + };
645 +
646 + spi0_pins: spi0_pins {
647 + brcm,pins = <9 10 11>;
648 + brcm,function = <4>; /* alt0 */
649 + };
650 +
651 + spi0_cs_pins: spi0_cs_pins {
652 + brcm,pins = <8 7>;
653 + brcm,function = <1>; /* output */
654 + };
655 +
656 + i2c0_pins: i2c0 {
657 + brcm,pins = <0 1>;
658 + brcm,function = <4>;
659 + };
660 +
661 + i2c1_pins: i2c1 {
662 + brcm,pins = <2 3>;
663 + brcm,function = <4>;
664 + };
665 +
666 + i2s_pins: i2s {
667 + brcm,pins = <28 29 30 31>;
668 + brcm,function = <6>; /* alt2 */
669 + };
670 +
671 + audio_pins: audio_pins {
672 + brcm,pins = <40 45>;
673 + brcm,function = <4>;
674 + };
675 +};
676 +
677 +&sdhost {
678 + pinctrl-names = "default";
679 + pinctrl-0 = <&sdhost_pins>;
680 + bus-width = <4>;
681 + status = "okay";
682 +};
683 +
684 +&fb {
685 + status = "okay";
686 +};
687 +
688 +&uart0 {
689 + status = "okay";
690 +};
691 +
692 +&spi0 {
693 + pinctrl-names = "default";
694 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
695 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
696 +
697 + spidev0: spidev@0{
698 + compatible = "spidev";
699 + reg = <0>; /* CE0 */
700 + #address-cells = <1>;
701 + #size-cells = <0>;
702 + spi-max-frequency = <500000>;
703 + };
704 +
705 + spidev1: spidev@1{
706 + compatible = "spidev";
707 + reg = <1>; /* CE1 */
708 + #address-cells = <1>;
709 + #size-cells = <0>;
710 + spi-max-frequency = <500000>;
711 + };
712 +};
713 +
714 +&i2c0 {
715 + pinctrl-names = "default";
716 + pinctrl-0 = <&i2c0_pins>;
717 + clock-frequency = <100000>;
718 +};
719 +
720 +&i2c1 {
721 + pinctrl-names = "default";
722 + pinctrl-0 = <&i2c1_pins>;
723 + clock-frequency = <100000>;
724 +};
725 +
726 +&i2c2 {
727 + clock-frequency = <100000>;
728 +};
729 +
730 +&i2s {
731 + pinctrl-names = "default";
732 + pinctrl-0 = <&i2s_pins>;
733 +};
734 +
735 +&leds {
736 + act_led: act {
737 + label = "led0";
738 + linux,default-trigger = "mmc0";
739 + gpios = <&gpio 16 1>;
740 + };
741 +};
742 +
743 +&hdmi {
744 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
745 +};
746 +
747 +&audio {
748 + pinctrl-names = "default";
749 + pinctrl-0 = <&audio_pins>;
750 +};
751 +
752 +/ {
753 + __overrides__ {
754 + uart0 = <&uart0>,"status";
755 + uart1 = <&uart1>,"status";
756 + i2s = <&i2s>,"status";
757 + spi = <&spi0>,"status";
758 + i2c0 = <&i2c0>,"status";
759 + i2c1 = <&i2c1>,"status";
760 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
761 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
762 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
763 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
764 +
765 + act_led_gpio = <&act_led>,"gpios:4";
766 + act_led_activelow = <&act_led>,"gpios:8";
767 + act_led_trigger = <&act_led>,"linux,default-trigger";
768 +
769 + audio = <&audio>,"status";
770 + watchdog = <&watchdog>,"status";
771 + random = <&random>,"status";
772 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
773 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
774 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
775 + sd_debug = <&sdhost>,"brcm,debug";
776 + };
777 +};
778 --- /dev/null
779 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
780 @@ -0,0 +1,105 @@
781 +/dts-v1/;
782 +
783 +#include "bcm2708-rpi-cm.dtsi"
784 +
785 +/ {
786 + model = "Raspberry Pi Compute Module";
787 +};
788 +
789 +&uart0 {
790 + status = "okay";
791 +};
792 +
793 +&gpio {
794 + spi0_pins: spi0_pins {
795 + brcm,pins = <9 10 11>;
796 + brcm,function = <4>; /* alt0 */
797 + };
798 +
799 + spi0_cs_pins: spi0_cs_pins {
800 + brcm,pins = <8 7>;
801 + brcm,function = <1>; /* output */
802 + };
803 +
804 + i2c0_pins: i2c0 {
805 + brcm,pins = <0 1>;
806 + brcm,function = <4>;
807 + };
808 +
809 + i2c1_pins: i2c1 {
810 + brcm,pins = <2 3>;
811 + brcm,function = <4>;
812 + };
813 +
814 + i2s_pins: i2s {
815 + brcm,pins = <18 19 20 21>;
816 + brcm,function = <4>; /* alt0 */
817 + };
818 +
819 + audio_pins: audio_pins {
820 + brcm,pins;
821 + brcm,function;
822 + };
823 +};
824 +
825 +&spi0 {
826 + pinctrl-names = "default";
827 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
828 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
829 +
830 + spidev0: spidev@0{
831 + compatible = "spidev";
832 + reg = <0>; /* CE0 */
833 + #address-cells = <1>;
834 + #size-cells = <0>;
835 + spi-max-frequency = <500000>;
836 + };
837 +
838 + spidev1: spidev@1{
839 + compatible = "spidev";
840 + reg = <1>; /* CE1 */
841 + #address-cells = <1>;
842 + #size-cells = <0>;
843 + spi-max-frequency = <500000>;
844 + };
845 +};
846 +
847 +&i2c0 {
848 + pinctrl-names = "default";
849 + pinctrl-0 = <&i2c0_pins>;
850 + clock-frequency = <100000>;
851 +};
852 +
853 +&i2c1 {
854 + pinctrl-names = "default";
855 + pinctrl-0 = <&i2c1_pins>;
856 + clock-frequency = <100000>;
857 +};
858 +
859 +&i2c2 {
860 + clock-frequency = <100000>;
861 +};
862 +
863 +&i2s {
864 + pinctrl-names = "default";
865 + pinctrl-0 = <&i2s_pins>;
866 +};
867 +
868 +&hdmi {
869 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
870 +};
871 +
872 +/ {
873 + __overrides__ {
874 + uart0 = <&uart0>,"status";
875 + uart1 = <&uart1>,"status";
876 + i2s = <&i2s>,"status";
877 + spi = <&spi0>,"status";
878 + i2c0 = <&i2c0>,"status";
879 + i2c1 = <&i2c1>,"status";
880 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
881 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
882 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
883 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
884 + };
885 +};
886 --- /dev/null
887 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
888 @@ -0,0 +1,50 @@
889 +#include "bcm2708.dtsi"
890 +
891 +&gpio {
892 + sdhost_pins: sdhost_pins {
893 + brcm,pins = <48 49 50 51 52 53>;
894 + brcm,function = <4>; /* alt0 */
895 + };
896 +};
897 +
898 +&gpio {
899 + mmc_pins: mmc_pins {
900 + brcm,pins = <48 49 50 51 52 53>;
901 + brcm,function = <7>; /* alt3 */
902 + };
903 +};
904 +
905 +&leds {
906 + act_led: act {
907 + label = "led0";
908 + linux,default-trigger = "mmc0";
909 + gpios = <&gpio 47 0>;
910 + };
911 +};
912 +
913 +
914 +&sdhost {
915 + pinctrl-names = "default";
916 + pinctrl-0 = <&sdhost_pins>;
917 + non-removable;
918 + bus-width = <4>;
919 + status = "okay";
920 + brcm,overclock-50 = <0>;
921 +};
922 +
923 +&fb {
924 + status = "okay";
925 +};
926 +
927 +/ {
928 + __overrides__ {
929 + act_led_gpio = <&act_led>,"gpios:4";
930 + act_led_activelow = <&act_led>,"gpios:8";
931 + act_led_trigger = <&act_led>,"linux,default-trigger";
932 +
933 + audio = <&audio>,"status";
934 + watchdog = <&watchdog>,"status";
935 + random = <&random>,"status";
936 + sd_overclock = <&mmc>,"brcm,overclock-50:0";
937 + };
938 +};
939 --- /dev/null
940 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
941 @@ -0,0 +1,109 @@
942 +/* Downstream version of bcm2835-rpi.dtsi */
943 +
944 +#include <dt-bindings/power/raspberrypi-power.h>
945 +
946 +/ {
947 + memory {
948 + device_type = "memory";
949 + reg = <0x0 0x0>;
950 + };
951 +
952 + aliases {
953 + audio = &audio;
954 + aux = &aux;
955 + sound = &sound;
956 + soc = &soc;
957 + dma = &dma;
958 + intc = &intc;
959 + watchdog = &watchdog;
960 + random = &random;
961 + mailbox = &mailbox;
962 + gpio = &gpio;
963 + uart0 = &uart0;
964 + sdhost = &sdhost;
965 + i2s = &i2s;
966 + spi0 = &spi0;
967 + i2c0 = &i2c0;
968 + uart1 = &uart1;
969 + spi1 = &spi1;
970 + spi2 = &spi2;
971 + mmc = &mmc;
972 + i2c1 = &i2c1;
973 + i2c2 = &i2c2;
974 + usb = &usb;
975 + leds = &leds;
976 + fb = &fb;
977 + vchiq = &vchiq;
978 + thermal = &thermal;
979 + };
980 +
981 + leds: leds {
982 + compatible = "gpio-leds";
983 + };
984 +
985 + soc {
986 + gpiomem {
987 + compatible = "brcm,bcm2835-gpiomem";
988 + reg = <0x7e200000 0x1000>;
989 + };
990 +
991 + firmware: firmware {
992 + compatible = "raspberrypi,bcm2835-firmware";
993 + mboxes = <&mailbox>;
994 + };
995 +
996 + power: power {
997 + compatible = "raspberrypi,bcm2835-power";
998 + firmware = <&firmware>;
999 + #power-domain-cells = <1>;
1000 + };
1001 +
1002 + fb: fb {
1003 + compatible = "brcm,bcm2708-fb";
1004 + firmware = <&firmware>;
1005 + status = "disabled";
1006 + };
1007 +
1008 + vchiq: vchiq {
1009 + compatible = "brcm,bcm2835-vchiq";
1010 + reg = <0x7e00b840 0xf>;
1011 + interrupts = <0 2>;
1012 + cache-line-size = <32>;
1013 + firmware = <&firmware>;
1014 + };
1015 +
1016 + thermal: thermal@7e212000 {
1017 + compatible = "brcm,bcm2835-thermal";
1018 + firmware = <&firmware>;
1019 + };
1020 +
1021 + /* Onboard audio */
1022 + audio: audio {
1023 + compatible = "brcm,bcm2835-audio";
1024 + brcm,pwm-channels = <8>;
1025 + status = "disabled";
1026 + };
1027 +
1028 + /* External sound card */
1029 + sound: sound {
1030 + status = "disabled";
1031 + };
1032 +
1033 + };
1034 +
1035 + __overrides__ {
1036 + cache_line_size = <&vchiq>, "cache-line-size:0";
1037 + };
1038 +};
1039 +
1040 +&dma {
1041 + brcm,dma-channel-mask = <0x7f34>;
1042 +};
1043 +
1044 +&hdmi {
1045 + power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
1046 +};
1047 +
1048 +&usb {
1049 + power-domains = <&power RPI_POWER_DOMAIN_USB>;
1050 +};
1051 --- /dev/null
1052 +++ b/arch/arm/boot/dts/bcm2708.dtsi
1053 @@ -0,0 +1,16 @@
1054 +#include "bcm2835.dtsi"
1055 +#include "bcm270x.dtsi"
1056 +#include "bcm2708-rpi.dtsi"
1057 +
1058 +/ {
1059 + soc {
1060 + timer@7e003000 {
1061 + compatible = "brcm,bcm2835-system-timer";
1062 + reg = <0x7e003000 0x1000>;
1063 + interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
1064 + clock-frequency = <1000000>;
1065 + };
1066 + };
1067 +
1068 + /delete-node/ cpus;
1069 +};
1070 --- /dev/null
1071 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
1072 @@ -0,0 +1,156 @@
1073 +/dts-v1/;
1074 +
1075 +#include "bcm2709.dtsi"
1076 +
1077 +/ {
1078 + model = "Raspberry Pi 2 Model B";
1079 +};
1080 +
1081 +&gpio {
1082 + sdhost_pins: sdhost_pins {
1083 + brcm,pins = <48 49 50 51 52 53>;
1084 + brcm,function = <4>; /* alt0 */
1085 + };
1086 +
1087 + spi0_pins: spi0_pins {
1088 + brcm,pins = <9 10 11>;
1089 + brcm,function = <4>; /* alt0 */
1090 + };
1091 +
1092 + spi0_cs_pins: spi0_cs_pins {
1093 + brcm,pins = <8 7>;
1094 + brcm,function = <1>; /* output */
1095 + };
1096 +
1097 + i2c0_pins: i2c0 {
1098 + brcm,pins = <0 1>;
1099 + brcm,function = <4>;
1100 + };
1101 +
1102 + i2c1_pins: i2c1 {
1103 + brcm,pins = <2 3>;
1104 + brcm,function = <4>;
1105 + };
1106 +
1107 + i2s_pins: i2s {
1108 + brcm,pins = <18 19 20 21>;
1109 + brcm,function = <4>; /* alt0 */
1110 + };
1111 +
1112 + audio_pins: audio_pins {
1113 + brcm,pins = <40 45>;
1114 + brcm,function = <4>;
1115 + };
1116 +};
1117 +
1118 +&sdhost {
1119 + pinctrl-names = "default";
1120 + pinctrl-0 = <&sdhost_pins>;
1121 + bus-width = <4>;
1122 + status = "okay";
1123 +};
1124 +
1125 +&fb {
1126 + status = "okay";
1127 +};
1128 +
1129 +&uart0 {
1130 + status = "okay";
1131 +};
1132 +
1133 +&spi0 {
1134 + pinctrl-names = "default";
1135 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1136 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1137 +
1138 + spidev0: spidev@0{
1139 + compatible = "spidev";
1140 + reg = <0>; /* CE0 */
1141 + #address-cells = <1>;
1142 + #size-cells = <0>;
1143 + spi-max-frequency = <500000>;
1144 + };
1145 +
1146 + spidev1: spidev@1{
1147 + compatible = "spidev";
1148 + reg = <1>; /* CE1 */
1149 + #address-cells = <1>;
1150 + #size-cells = <0>;
1151 + spi-max-frequency = <500000>;
1152 + };
1153 +};
1154 +
1155 +&i2c0 {
1156 + pinctrl-names = "default";
1157 + pinctrl-0 = <&i2c0_pins>;
1158 + clock-frequency = <100000>;
1159 +};
1160 +
1161 +&i2c1 {
1162 + pinctrl-names = "default";
1163 + pinctrl-0 = <&i2c1_pins>;
1164 + clock-frequency = <100000>;
1165 +};
1166 +
1167 +&i2c2 {
1168 + clock-frequency = <100000>;
1169 +};
1170 +
1171 +&i2s {
1172 + pinctrl-names = "default";
1173 + pinctrl-0 = <&i2s_pins>;
1174 +};
1175 +
1176 +&leds {
1177 + act_led: act {
1178 + label = "led0";
1179 + linux,default-trigger = "mmc0";
1180 + gpios = <&gpio 47 0>;
1181 + };
1182 +
1183 + pwr_led: pwr {
1184 + label = "led1";
1185 + linux,default-trigger = "input";
1186 + gpios = <&gpio 35 0>;
1187 + };
1188 +};
1189 +
1190 +&hdmi {
1191 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1192 +};
1193 +
1194 +&audio {
1195 + pinctrl-names = "default";
1196 + pinctrl-0 = <&audio_pins>;
1197 +};
1198 +
1199 +/ {
1200 + __overrides__ {
1201 + uart0 = <&uart0>,"status";
1202 + uart1 = <&uart1>,"status";
1203 + i2s = <&i2s>,"status";
1204 + spi = <&spi0>,"status";
1205 + i2c0 = <&i2c0>,"status";
1206 + i2c1 = <&i2c1>,"status";
1207 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
1208 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
1209 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1210 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
1211 +
1212 + act_led_gpio = <&act_led>,"gpios:4";
1213 + act_led_activelow = <&act_led>,"gpios:8";
1214 + act_led_trigger = <&act_led>,"linux,default-trigger";
1215 +
1216 + pwr_led_gpio = <&pwr_led>,"gpios:4";
1217 + pwr_led_activelow = <&pwr_led>,"gpios:8";
1218 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
1219 +
1220 + audio = <&audio>,"status";
1221 + watchdog = <&watchdog>,"status";
1222 + random = <&random>,"status";
1223 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
1224 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
1225 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
1226 + sd_debug = <&sdhost>,"brcm,debug";
1227 + };
1228 +};
1229 --- /dev/null
1230 +++ b/arch/arm/boot/dts/bcm2709.dtsi
1231 @@ -0,0 +1,22 @@
1232 +#include "bcm2836.dtsi"
1233 +#include "bcm270x.dtsi"
1234 +#include "bcm2708-rpi.dtsi"
1235 +
1236 +/ {
1237 + soc {
1238 + ranges = <0x7e000000 0x3f000000 0x01000000>,
1239 + <0x40000000 0x40000000 0x00040000>;
1240 +
1241 + syscon@40000000 {
1242 + compatible = "brcm,bcm2836-arm-local", "syscon";
1243 + reg = <0x40000000 0x100>;
1244 + };
1245 + };
1246 +
1247 + __overrides__ {
1248 + arm_freq = <&v7_cpu0>, "clock-frequency:0",
1249 + <&v7_cpu1>, "clock-frequency:0",
1250 + <&v7_cpu2>, "clock-frequency:0",
1251 + <&v7_cpu3>, "clock-frequency:0";
1252 + };
1253 +};
1254 --- /dev/null
1255 +++ b/arch/arm/boot/dts/bcm270x.dtsi
1256 @@ -0,0 +1,141 @@
1257 +/* Downstream bcm283x.dtsi diff */
1258 +#include "dt-bindings/power/raspberrypi-power.h"
1259 +
1260 +/ {
1261 + chosen {
1262 + bootargs = "";
1263 + };
1264 +
1265 + soc: soc {
1266 +
1267 + /delete-node/ timer@7e003000;
1268 +
1269 + watchdog: watchdog@7e100000 {
1270 + /* Add alias */
1271 + };
1272 +
1273 + cprman: cprman@7e101000 {
1274 + /* Add alias */
1275 + };
1276 +
1277 + random: rng@7e104000 {
1278 + /* Add alias */
1279 + };
1280 +
1281 + gpio@7e200000 { /* gpio */
1282 + interrupts = <2 17>, <2 18>;
1283 + };
1284 +
1285 + sdhost: sdhost@7e202000 {
1286 + compatible = "brcm,bcm2835-sdhost";
1287 + reg = <0x7e202000 0x100>;
1288 + interrupts = <2 24>;
1289 + clocks = <&clocks BCM2835_CLOCK_VPU>;
1290 + dmas = <&dma 13>;
1291 + dma-names = "rx-tx";
1292 + brcm,overclock-50 = <0>;
1293 + brcm,pio-limit = <1>;
1294 + status = "disabled";
1295 + };
1296 +
1297 + i2s@7e203000 { /* i2s */
1298 + #sound-dai-cells = <0>;
1299 + reg = <0x7e203000 0x24>;
1300 + clocks = <&clocks BCM2835_CLOCK_PCM>;
1301 + };
1302 +
1303 + spi0: spi@7e204000 {
1304 + /* Add alias */
1305 + dmas = <&dma 6>, <&dma 7>;
1306 + dma-names = "tx", "rx";
1307 + };
1308 +
1309 + pixelvalve0: pixelvalve@7e206000 {
1310 + /* Add alias */
1311 + status = "disabled";
1312 + };
1313 +
1314 + pixelvalve1: pixelvalve@7e207000 {
1315 + /* Add alias */
1316 + status = "disabled";
1317 + };
1318 +
1319 + dpi: dpi@7e208000 {
1320 + compatible = "brcm,bcm2835-dpi";
1321 + reg = <0x7e208000 0x8c>;
1322 + clocks = <&clocks BCM2835_CLOCK_VPU>,
1323 + <&clocks BCM2835_CLOCK_DPI>;
1324 + clock-names = "core", "pixel";
1325 + #address-cells = <1>;
1326 + #size-cells = <0>;
1327 + status = "disabled";
1328 + };
1329 +
1330 + /delete-node/ sdhci@7e300000;
1331 +
1332 + mmc: mmc@7e300000 {
1333 + compatible = "brcm,bcm2835-mmc";
1334 + reg = <0x7e300000 0x100>;
1335 + interrupts = <2 30>;
1336 + clocks = <&clocks BCM2835_CLOCK_EMMC>;
1337 + dmas = <&dma 11>;
1338 + dma-names = "rx-tx";
1339 + brcm,overclock-50 = <0>;
1340 + status = "disabled";
1341 + };
1342 +
1343 + hvs: hvs@7e400000 {
1344 + /* Add alias */
1345 + status = "disabled";
1346 + };
1347 +
1348 + firmwarekms: firmwarekms@7e600000 {
1349 + compatible = "raspberrypi,rpi-firmware-kms";
1350 + /* SMI interrupt reg */
1351 + reg = <0x7e600000 0x100>;
1352 + interrupts = <2 16>;
1353 + brcm,firmware = <&firmware>;
1354 + status = "disabled";
1355 + };
1356 +
1357 + smi: smi@7e600000 {
1358 + compatible = "brcm,bcm2835-smi";
1359 + reg = <0x7e600000 0x100>;
1360 + interrupts = <2 16>;
1361 + clocks = <&clocks BCM2835_CLOCK_SMI>;
1362 + assigned-clocks = <&cprman BCM2835_CLOCK_SMI>;
1363 + assigned-clock-rates = <125000000>;
1364 + dmas = <&dma 4>;
1365 + dma-names = "rx-tx";
1366 + status = "disabled";
1367 + };
1368 +
1369 + pixelvalve2: pixelvalve@7e807000 {
1370 + /* Add alias */
1371 + status = "disabled";
1372 + };
1373 +
1374 + hdmi@7e902000 { /* hdmi */
1375 + status = "disabled";
1376 + };
1377 +
1378 + usb@7e980000 { /* usb */
1379 + compatible = "brcm,bcm2708-usb";
1380 + reg = <0x7e980000 0x10000>,
1381 + <0x7e006000 0x1000>;
1382 + interrupts = <2 0>,
1383 + <1 9>;
1384 + };
1385 +
1386 + v3d@7ec00000 { /* vd3 */
1387 + compatible = "brcm,vc4-v3d";
1388 + power-domains = <&power RPI_POWER_DOMAIN_V3D>;
1389 + status = "disabled";
1390 + };
1391 +
1392 + gpu: gpu {
1393 + /* Add alias */
1394 + status = "disabled";
1395 + };
1396 + };
1397 +};
1398 --- /dev/null
1399 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
1400 @@ -0,0 +1,203 @@
1401 +/dts-v1/;
1402 +
1403 +#ifdef RPI364
1404 +/memreserve/ 0x00000000 0x00001000;
1405 +#endif
1406 +
1407 +#include "bcm2710.dtsi"
1408 +
1409 +/ {
1410 + model = "Raspberry Pi 3 Model B";
1411 +};
1412 +
1413 +&gpio {
1414 + sdhost_pins: sdhost_pins {
1415 + brcm,pins = <48 49 50 51 52 53>;
1416 + brcm,function = <4>; /* alt0 */
1417 + };
1418 +
1419 + spi0_pins: spi0_pins {
1420 + brcm,pins = <9 10 11>;
1421 + brcm,function = <4>; /* alt0 */
1422 + };
1423 +
1424 + spi0_cs_pins: spi0_cs_pins {
1425 + brcm,pins = <8 7>;
1426 + brcm,function = <1>; /* output */
1427 + };
1428 +
1429 + i2c0_pins: i2c0 {
1430 + brcm,pins = <0 1>;
1431 + brcm,function = <4>;
1432 + };
1433 +
1434 + i2c1_pins: i2c1 {
1435 + brcm,pins = <2 3>;
1436 + brcm,function = <4>;
1437 + };
1438 +
1439 + i2s_pins: i2s {
1440 + brcm,pins = <18 19 20 21>;
1441 + brcm,function = <4>; /* alt0 */
1442 + };
1443 +
1444 + sdio_pins: sdio_pins {
1445 + brcm,pins = <34 35 36 37 38 39>;
1446 + brcm,function = <7>; // alt3 = SD1
1447 + brcm,pull = <0 2 2 2 2 2>;
1448 + };
1449 +
1450 + bt_pins: bt_pins {
1451 + brcm,pins = <43>;
1452 + brcm,function = <4>; /* alt0:GPCLK2 */
1453 + brcm,pull = <0>;
1454 + };
1455 +
1456 + uart0_pins: uart0_pins {
1457 + brcm,pins = <32 33>;
1458 + brcm,function = <7>; /* alt3=UART0 */
1459 + brcm,pull = <0 2>;
1460 + };
1461 +
1462 + uart1_pins: uart1_pins {
1463 + brcm,pins;
1464 + brcm,function;
1465 + brcm,pull;
1466 + };
1467 +
1468 + audio_pins: audio_pins {
1469 + brcm,pins = <40 41>;
1470 + brcm,function = <4>;
1471 + };
1472 +};
1473 +
1474 +&sdhost {
1475 + pinctrl-names = "default";
1476 + pinctrl-0 = <&sdhost_pins>;
1477 + bus-width = <4>;
1478 + status = "okay";
1479 +};
1480 +
1481 +&mmc {
1482 + pinctrl-names = "default";
1483 + pinctrl-0 = <&sdio_pins>;
1484 + non-removable;
1485 + bus-width = <4>;
1486 + status = "okay";
1487 + brcm,overclock-50 = <0>;
1488 +};
1489 +
1490 +&soc {
1491 + virtgpio: virtgpio {
1492 + compatible = "brcm,bcm2835-virtgpio";
1493 + gpio-controller;
1494 + #gpio-cells = <2>;
1495 + firmware = <&firmware>;
1496 + status = "okay";
1497 + };
1498 +};
1499 +
1500 +&fb {
1501 + status = "okay";
1502 +};
1503 +
1504 +&uart0 {
1505 + pinctrl-names = "default";
1506 + pinctrl-0 = <&uart0_pins &bt_pins>;
1507 + status = "okay";
1508 +};
1509 +
1510 +&uart1 {
1511 + pinctrl-names = "default";
1512 + pinctrl-0 = <&uart1_pins>;
1513 + status = "okay";
1514 +};
1515 +
1516 +&spi0 {
1517 + pinctrl-names = "default";
1518 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1519 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1520 +
1521 + spidev0: spidev@0{
1522 + compatible = "spidev";
1523 + reg = <0>; /* CE0 */
1524 + #address-cells = <1>;
1525 + #size-cells = <0>;
1526 + spi-max-frequency = <500000>;
1527 + };
1528 +
1529 + spidev1: spidev@1{
1530 + compatible = "spidev";
1531 + reg = <1>; /* CE1 */
1532 + #address-cells = <1>;
1533 + #size-cells = <0>;
1534 + spi-max-frequency = <500000>;
1535 + };
1536 +};
1537 +
1538 +&i2c0 {
1539 + pinctrl-names = "default";
1540 + pinctrl-0 = <&i2c0_pins>;
1541 + clock-frequency = <100000>;
1542 +};
1543 +
1544 +&i2c1 {
1545 + pinctrl-names = "default";
1546 + pinctrl-0 = <&i2c1_pins>;
1547 + clock-frequency = <100000>;
1548 +};
1549 +
1550 +&i2c2 {
1551 + clock-frequency = <100000>;
1552 +};
1553 +
1554 +&i2s {
1555 + pinctrl-names = "default";
1556 + pinctrl-0 = <&i2s_pins>;
1557 +};
1558 +
1559 +&leds {
1560 + act_led: act {
1561 + label = "led0";
1562 + linux,default-trigger = "mmc0";
1563 + gpios = <&virtgpio 0 0>;
1564 + };
1565 +};
1566 +
1567 +&audio {
1568 + pinctrl-names = "default";
1569 + pinctrl-0 = <&audio_pins>;
1570 +};
1571 +
1572 +/ {
1573 + chosen {
1574 + bootargs = "8250.nr_uarts=1";
1575 + };
1576 +};
1577 +
1578 +/ {
1579 + __overrides__ {
1580 + uart0 = <&uart0>,"status";
1581 + uart1 = <&uart1>,"status";
1582 + i2s = <&i2s>,"status";
1583 + spi = <&spi0>,"status";
1584 + i2c0 = <&i2c0>,"status";
1585 + i2c1 = <&i2c1>,"status";
1586 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
1587 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
1588 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1589 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
1590 +
1591 + act_led_gpio = <&act_led>,"gpios:4";
1592 + act_led_activelow = <&act_led>,"gpios:8";
1593 + act_led_trigger = <&act_led>,"linux,default-trigger";
1594 +
1595 + audio = <&audio>,"status";
1596 + watchdog = <&watchdog>,"status";
1597 + random = <&random>,"status";
1598 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
1599 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
1600 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
1601 + sd_debug = <&sdhost>,"brcm,debug";
1602 + };
1603 +};
1604 --- /dev/null
1605 +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
1606 @@ -0,0 +1,155 @@
1607 +/dts-v1/;
1608 +
1609 +#include "bcm2710.dtsi"
1610 +
1611 +/ {
1612 + model = "Raspberry Pi Compute Module 3";
1613 +};
1614 +
1615 +&gpio {
1616 + sdhost_pins: sdhost_pins {
1617 + brcm,pins = <48 49 50 51 52 53>;
1618 + brcm,function = <4>; /* alt0 */
1619 + brcm,pull = <0 2 2 2 2 2>;
1620 + };
1621 +
1622 + spi0_pins: spi0_pins {
1623 + brcm,pins = <9 10 11>;
1624 + brcm,function = <4>; /* alt0 */
1625 + };
1626 +
1627 + spi0_cs_pins: spi0_cs_pins {
1628 + brcm,pins = <8 7>;
1629 + brcm,function = <1>; /* output */
1630 + };
1631 +
1632 + i2c0_pins: i2c0 {
1633 + brcm,pins = <0 1>;
1634 + brcm,function = <4>;
1635 + };
1636 +
1637 + i2c1_pins: i2c1 {
1638 + brcm,pins = <2 3>;
1639 + brcm,function = <4>;
1640 + };
1641 +
1642 + i2s_pins: i2s {
1643 + brcm,pins = <18 19 20 21>;
1644 + brcm,function = <4>; /* alt0 */
1645 + };
1646 +
1647 + audio_pins: audio_pins {
1648 + brcm,pins;
1649 + brcm,function;
1650 + };
1651 +};
1652 +
1653 +&sdhost {
1654 + pinctrl-names = "default";
1655 + pinctrl-0 = <&sdhost_pins>;
1656 + non-removable;
1657 + bus-width = <4>;
1658 + status = "okay";
1659 + brcm,overclock-50 = <0>;
1660 +};
1661 +
1662 +&soc {
1663 + virtgpio: virtgpio {
1664 + compatible = "brcm,bcm2835-virtgpio";
1665 + gpio-controller;
1666 + #gpio-cells = <2>;
1667 + firmware = <&firmware>;
1668 + status = "okay";
1669 + };
1670 +};
1671 +
1672 +&fb {
1673 + status = "okay";
1674 +};
1675 +
1676 +&spi0 {
1677 + pinctrl-names = "default";
1678 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1679 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1680 +
1681 + spidev0: spidev@0{
1682 + compatible = "spidev";
1683 + reg = <0>; /* CE0 */
1684 + #address-cells = <1>;
1685 + #size-cells = <0>;
1686 + spi-max-frequency = <500000>;
1687 + };
1688 +
1689 + spidev1: spidev@1{
1690 + compatible = "spidev";
1691 + reg = <1>; /* CE1 */
1692 + #address-cells = <1>;
1693 + #size-cells = <0>;
1694 + spi-max-frequency = <500000>;
1695 + };
1696 +};
1697 +
1698 +&i2c0 {
1699 + pinctrl-names = "default";
1700 + pinctrl-0 = <&i2c0_pins>;
1701 + clock-frequency = <100000>;
1702 +};
1703 +
1704 +&i2c1 {
1705 + pinctrl-names = "default";
1706 + pinctrl-0 = <&i2c1_pins>;
1707 + clock-frequency = <100000>;
1708 +};
1709 +
1710 +&i2c2 {
1711 + clock-frequency = <100000>;
1712 +};
1713 +
1714 +&i2s {
1715 + pinctrl-names = "default";
1716 + pinctrl-0 = <&i2s_pins>;
1717 +};
1718 +
1719 +&leds {
1720 + act_led: act {
1721 + label = "led0";
1722 + linux,default-trigger = "mmc0";
1723 + gpios = <&virtgpio 0 0>;
1724 + };
1725 +};
1726 +
1727 +&hdmi {
1728 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1729 +};
1730 +
1731 +&audio {
1732 + pinctrl-names = "default";
1733 + pinctrl-0 = <&audio_pins>;
1734 +};
1735 +
1736 +/ {
1737 + __overrides__ {
1738 + uart0 = <&uart0>,"status";
1739 + uart1 = <&uart1>,"status";
1740 + i2s = <&i2s>,"status";
1741 + spi = <&spi0>,"status";
1742 + i2c0 = <&i2c0>,"status";
1743 + i2c1 = <&i2c1>,"status";
1744 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
1745 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
1746 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1747 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
1748 +
1749 + act_led_gpio = <&act_led>,"gpios:4";
1750 + act_led_activelow = <&act_led>,"gpios:8";
1751 + act_led_trigger = <&act_led>,"linux,default-trigger";
1752 +
1753 + audio = <&audio>,"status";
1754 + watchdog = <&watchdog>,"status";
1755 + random = <&random>,"status";
1756 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
1757 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
1758 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
1759 + sd_debug = <&sdhost>,"brcm,debug";
1760 + };
1761 +};
1762 --- /dev/null
1763 +++ b/arch/arm/boot/dts/bcm2710.dtsi
1764 @@ -0,0 +1,155 @@
1765 +#include "bcm283x.dtsi"
1766 +#include "bcm270x.dtsi"
1767 +#include "bcm2708-rpi.dtsi"
1768 +
1769 +/ {
1770 + compatible = "brcm,bcm2837", "brcm,bcm2836";
1771 + model = "BCM2837";
1772 +
1773 + soc {
1774 + ranges = <0x7e000000 0x3f000000 0x01000000>,
1775 + <0x40000000 0x40000000 0x00040000>;
1776 + dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
1777 +
1778 + local_intc: local_intc {
1779 + compatible = "brcm,bcm2836-l1-intc";
1780 + reg = <0x40000000 0x100>;
1781 + interrupt-controller;
1782 + #interrupt-cells = <1>;
1783 + interrupt-parent = <&local_intc>;
1784 + };
1785 +
1786 + arm-pmu {
1787 +#ifdef RPI364
1788 + compatible = "arm,armv8-pmuv3", "arm,cortex-a7-pmu";
1789 +#else
1790 + compatible = "arm,cortex-a7-pmu";
1791 +#endif
1792 + interrupt-parent = <&local_intc>;
1793 + interrupts = <9>;
1794 + };
1795 +
1796 + timer {
1797 +#ifdef RPI364
1798 + compatible = "arm,armv8-timer", "arm,armv7-timer";
1799 +#else
1800 + compatible = "arm,armv7-timer";
1801 +#endif
1802 + interrupt-parent = <&local_intc>;
1803 + interrupts = <0>, // PHYS_SECURE_PPI
1804 + <1>, // PHYS_NONSECURE_PPI
1805 + <3>, // VIRT_PPI
1806 + <2>; // HYP_PPI
1807 + always-on;
1808 + };
1809 +
1810 + syscon@40000000 {
1811 + compatible = "brcm,bcm2836-arm-local", "syscon";
1812 + reg = <0x40000000 0x100>;
1813 + };
1814 + };
1815 +
1816 +#ifdef RPI364
1817 + cpus: cpus {
1818 + #address-cells = <1>;
1819 + #size-cells = <0>;
1820 +
1821 + v8_cpu0: cpu@0 {
1822 + device_type = "cpu";
1823 + compatible = "arm,cortex-a53", "arm,armv8";
1824 + reg = <0x0>;
1825 + clock-frequency = <1200000000>;
1826 + };
1827 +
1828 + v8_cpu1: cpu@1 {
1829 + device_type = "cpu";
1830 + compatible = "arm,cortex-a53", "arm,armv8";
1831 + reg = <0x1>;
1832 + clock-frequency = <1200000000>;
1833 + enable-method = "spin-table";
1834 + cpu-release-addr = <0x0 0x000000e0>;
1835 + };
1836 +
1837 + v8_cpu2: cpu@2 {
1838 + device_type = "cpu";
1839 + compatible = "arm,cortex-a53", "arm,armv8";
1840 + reg = <0x2>;
1841 + clock-frequency = <1200000000>;
1842 + enable-method = "spin-table";
1843 + cpu-release-addr = <0x0 0x000000e8>;
1844 + };
1845 +
1846 + v8_cpu3: cpu@3 {
1847 + device_type = "cpu";
1848 + compatible = "arm,cortex-a53", "arm,armv8";
1849 + reg = <0x3>;
1850 + clock-frequency = <1200000000>;
1851 + enable-method = "spin-table";
1852 + cpu-release-addr = <0x0 0x000000f0>;
1853 + };
1854 + };
1855 +
1856 + __overrides__ {
1857 + arm_freq = <&v8_cpu0>, "clock-frequency:0",
1858 + <&v8_cpu1>, "clock-frequency:0",
1859 + <&v8_cpu2>, "clock-frequency:0",
1860 + <&v8_cpu3>, "clock-frequency:0";
1861 + };
1862 +
1863 +#else
1864 + cpus: cpus {
1865 + #address-cells = <1>;
1866 + #size-cells = <0>;
1867 +
1868 + v7_cpu0: cpu@0 {
1869 + device_type = "cpu";
1870 + compatible = "arm,cortex-a7";
1871 + reg = <0x000>;
1872 + clock-frequency = <800000000>;
1873 + };
1874 +
1875 + v7_cpu1: cpu@1 {
1876 + device_type = "cpu";
1877 + compatible = "arm,cortex-a7";
1878 + reg = <0x001>;
1879 + clock-frequency = <800000000>;
1880 + };
1881 +
1882 + v7_cpu2: cpu@2 {
1883 + device_type = "cpu";
1884 + compatible = "arm,cortex-a7";
1885 + reg = <0x002>;
1886 + clock-frequency = <800000000>;
1887 + };
1888 +
1889 + v7_cpu3: cpu@3 {
1890 + device_type = "cpu";
1891 + compatible = "arm,cortex-a7";
1892 + reg = <0x003>;
1893 + clock-frequency = <800000000>;
1894 + };
1895 + };
1896 +
1897 + __overrides__ {
1898 + arm_freq = <&v7_cpu0>, "clock-frequency:0",
1899 + <&v7_cpu1>, "clock-frequency:0",
1900 + <&v7_cpu2>, "clock-frequency:0",
1901 + <&v7_cpu3>, "clock-frequency:0";
1902 + };
1903 +#endif
1904 +};
1905 +
1906 +&intc {
1907 + compatible = "brcm,bcm2836-armctrl-ic";
1908 + reg = <0x7e00b200 0x200>;
1909 + interrupt-parent = <&local_intc>;
1910 + interrupts = <8>;
1911 +};
1912 +
1913 +#ifdef RPI364
1914 +&usb {
1915 + compatible = "brcm,bcm2835-usb";
1916 + reg = <0x7e980000 0x10000>;
1917 + interrupts = <1 9>;
1918 +};
1919 +#endif
1920 --- /dev/null
1921 +++ b/arch/arm/boot/dts/overlays/Makefile
1922 @@ -0,0 +1,105 @@
1923 +# Overlays for the Raspberry Pi platform
1924 +
1925 +dtbo-$(CONFIG_ARCH_BCM2835) += \
1926 + adau1977-adc.dtbo \
1927 + ads1015.dtbo \
1928 + ads7846.dtbo \
1929 + akkordion-iqdacplus.dtbo \
1930 + allo-piano-dac-pcm512x-audio.dtbo \
1931 + at86rf233.dtbo \
1932 + audioinjector-wm8731-audio.dtbo \
1933 + audremap.dtbo \
1934 + bmp085_i2c-sensor.dtbo \
1935 + dht11.dtbo \
1936 + dionaudio-loco.dtbo \
1937 + dpi18.dtbo \
1938 + dpi24.dtbo \
1939 + dwc-otg.dtbo \
1940 + dwc2.dtbo \
1941 + enc28j60.dtbo \
1942 + enc28j60-spi2.dtbo \
1943 + gpio-ir.dtbo \
1944 + gpio-poweroff.dtbo \
1945 + hifiberry-amp.dtbo \
1946 + hifiberry-dac.dtbo \
1947 + hifiberry-dacplus.dtbo \
1948 + hifiberry-digi.dtbo \
1949 + hifiberry-digi-pro.dtbo \
1950 + hy28a.dtbo \
1951 + hy28b.dtbo \
1952 + i2c-bcm2708.dtbo \
1953 + i2c-gpio.dtbo \
1954 + i2c-mux.dtbo \
1955 + i2c-pwm-pca9685a.dtbo \
1956 + i2c-rtc.dtbo \
1957 + i2c-sensor.dtbo \
1958 + i2c0-bcm2708.dtbo \
1959 + i2c1-bcm2708.dtbo \
1960 + i2s-gpio28-31.dtbo \
1961 + iqaudio-dac.dtbo \
1962 + iqaudio-dacplus.dtbo \
1963 + iqaudio-digi-wm8804-audio.dtbo \
1964 + justboom-dac.dtbo \
1965 + justboom-digi.dtbo \
1966 + lirc-rpi.dtbo \
1967 + mcp23017.dtbo \
1968 + mcp23s17.dtbo \
1969 + mcp2515-can0.dtbo \
1970 + mcp2515-can1.dtbo \
1971 + midi-uart0.dtbo \
1972 + mmc.dtbo \
1973 + mz61581.dtbo \
1974 + pi3-act-led.dtbo \
1975 + pi3-disable-bt.dtbo \
1976 + pi3-miniuart-bt.dtbo \
1977 + piscreen.dtbo \
1978 + piscreen2r.dtbo \
1979 + pisound.dtbo \
1980 + pitft22.dtbo \
1981 + pitft28-capacitive.dtbo \
1982 + pitft28-resistive.dtbo \
1983 + pitft35-resistive.dtbo \
1984 + pps-gpio.dtbo \
1985 + pwm.dtbo \
1986 + pwm-2chan.dtbo \
1987 + qca7000.dtbo \
1988 + raspidac3.dtbo \
1989 + rpi-backlight.dtbo \
1990 + rpi-dac.dtbo \
1991 + rpi-display.dtbo \
1992 + rpi-ft5406.dtbo \
1993 + rpi-proto.dtbo \
1994 + rpi-sense.dtbo \
1995 + rra-digidac1-wm8741-audio.dtbo \
1996 + sc16is750-i2c.dtbo \
1997 + sc16is752-spi1.dtbo \
1998 + sdhost.dtbo \
1999 + sdio.dtbo \
2000 + sdio-1bit.dtbo \
2001 + sdtweak.dtbo \
2002 + smi.dtbo \
2003 + smi-dev.dtbo \
2004 + smi-nand.dtbo \
2005 + spi-gpio35-39.dtbo \
2006 + spi-rtc.dtbo \
2007 + spi0-hw-cs.dtbo \
2008 + spi1-1cs.dtbo \
2009 + spi1-2cs.dtbo \
2010 + spi1-3cs.dtbo \
2011 + spi2-1cs.dtbo \
2012 + spi2-2cs.dtbo \
2013 + spi2-3cs.dtbo \
2014 + tinylcd35.dtbo \
2015 + uart1.dtbo \
2016 + vc4-fkms-v3d.dtbo \
2017 + vc4-kms-v3d.dtbo \
2018 + vga666.dtbo \
2019 + w1-gpio.dtbo \
2020 + w1-gpio-pullup.dtbo \
2021 + wittypi.dtbo
2022 +
2023 +targets += dtbs dtbs_install
2024 +targets += $(dtbo-y)
2025 +
2026 +always := $(dtbo-y)
2027 +clean-files := *.dtbo
2028 --- /dev/null
2029 +++ b/arch/arm/boot/dts/overlays/README
2030 @@ -0,0 +1,1368 @@
2031 +Introduction
2032 +============
2033 +
2034 +This directory contains Device Tree overlays. Device Tree makes it possible
2035 +to support many hardware configurations with a single kernel and without the
2036 +need to explicitly load or blacklist kernel modules. Note that this isn't a
2037 +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
2038 +are still configured by the board support code, but the intention is to
2039 +eventually reach that goal.
2040 +
2041 +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
2042 +default, the Raspberry Pi kernel boots with device tree enabled. You can
2043 +completely disable DT usage (for now) by adding:
2044 +
2045 + device_tree=
2046 +
2047 +to your config.txt, which should cause your Pi to revert to the old way of
2048 +doing things after a reboot.
2049 +
2050 +In /boot you will find a .dtb for each base platform. This describes the
2051 +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
2052 +siblings) selects the .dtb file appropriate for the platform by name, and reads
2053 +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
2054 +are disabled, but they can be enabled using Device Tree parameters:
2055 +
2056 + dtparam=i2c=on,i2s=on,spi=on
2057 +
2058 +However, this shouldn't be necessary in many use cases because loading an
2059 +overlay that requires one of those interfaces will cause it to be enabled
2060 +automatically, and it is advisable to only enable interfaces if they are
2061 +needed.
2062 +
2063 +Configuring additional, optional hardware is done using Device Tree overlays
2064 +(see below).
2065 +
2066 +raspi-config
2067 +============
2068 +
2069 +The Advanced Options section of the raspi-config utility can enable and disable
2070 +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
2071 +is possible to both enable an interface and blacklist the driver, if for some
2072 +reason you should want to defer the loading.
2073 +
2074 +Modules
2075 +=======
2076 +
2077 +As well as describing the hardware, Device Tree also gives enough information
2078 +to allow suitable driver modules to be located and loaded, with the corollary
2079 +that unneeded modules are not loaded. As a result it should be possible to
2080 +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
2081 +have its contents deleted (or commented out).
2082 +
2083 +Using Overlays
2084 +==============
2085 +
2086 +Overlays are loaded using the "dtoverlay" directive. As an example, consider
2087 +the popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
2088 +pre-DT world this would be loaded from /etc/modules, with an explicit
2089 +"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
2090 +this becomes a line in config.txt:
2091 +
2092 + dtoverlay=lirc-rpi
2093 +
2094 +This causes the file /boot/overlays/lirc-rpi.dtbo to be loaded. By
2095 +default it will use GPIOs 17 (out) and 18 (in), but this can be modified using
2096 +DT parameters:
2097 +
2098 + dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13
2099 +
2100 +Parameters always have default values, although in some cases (e.g. "w1-gpio")
2101 +it is necessary to provided multiple overlays in order to get the desired
2102 +behaviour. See the list of overlays below for a description of the parameters
2103 +and their defaults.
2104 +
2105 +The Overlay and Parameter Reference
2106 +===================================
2107 +
2108 +N.B. When editing this file, please preserve the indentation levels to make it
2109 +simple to parse programmatically. NO HARD TABS.
2110 +
2111 +
2112 +Name: <The base DTB>
2113 +Info: Configures the base Raspberry Pi hardware
2114 +Load: <loaded automatically>
2115 +Params:
2116 + audio Set to "on" to enable the onboard ALSA audio
2117 + interface (default "off")
2118 +
2119 + i2c_arm Set to "on" to enable the ARM's i2c interface
2120 + (default "off")
2121 +
2122 + i2c_vc Set to "on" to enable the i2c interface
2123 + usually reserved for the VideoCore processor
2124 + (default "off")
2125 +
2126 + i2c An alias for i2c_arm
2127 +
2128 + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
2129 + (default "100000")
2130 +
2131 + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
2132 + (default "100000")
2133 +
2134 + i2c_baudrate An alias for i2c_arm_baudrate
2135 +
2136 + i2s Set to "on" to enable the i2s interface
2137 + (default "off")
2138 +
2139 + spi Set to "on" to enable the spi interfaces
2140 + (default "off")
2141 +
2142 + random Set to "on" to enable the hardware random
2143 + number generator (default "on")
2144 +
2145 + sd_overclock Clock (in MHz) to use when the MMC framework
2146 + requests 50MHz
2147 +
2148 + sd_force_pio Disable DMA support for SD driver (default off)
2149 +
2150 + sd_pio_limit Number of blocks above which to use DMA for
2151 + SD card (default 1)
2152 +
2153 + sd_debug Enable debug output from SD driver (default off)
2154 +
2155 + uart0 Set to "off" to disable uart0 (default "on")
2156 +
2157 + uart1 Set to "on" or "off" to enable or disable uart1
2158 + (default varies)
2159 +
2160 + watchdog Set to "on" to enable the hardware watchdog
2161 + (default "off")
2162 +
2163 + act_led_trigger Choose which activity the LED tracks.
2164 + Use "heartbeat" for a nice load indicator.
2165 + (default "mmc")
2166 +
2167 + act_led_activelow Set to "on" to invert the sense of the LED
2168 + (default "off")
2169 + N.B. For Pi3 see pi3-act-led overlay.
2170 +
2171 + act_led_gpio Set which GPIO to use for the activity LED
2172 + (in case you want to connect it to an external
2173 + device)
2174 + (default "16" on a non-Plus board, "47" on a
2175 + Plus or Pi 2)
2176 + N.B. For Pi3 see pi3-act-led overlay.
2177 +
2178 + pwr_led_trigger
2179 + pwr_led_activelow
2180 + pwr_led_gpio
2181 + As for act_led_*, but using the PWR LED.
2182 + Not available on Model A/B boards.
2183 +
2184 + N.B. It is recommended to only enable those interfaces that are needed.
2185 + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
2186 + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
2187 + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
2188 + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
2189 + but deprecated because the ARM/VC assignments differ between board
2190 + revisions. The same board-specific mapping applies to i2c_baudrate,
2191 + and the other i2c baudrate parameters.
2192 +
2193 +
2194 +Name: adau1977-adc
2195 +Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
2196 + and I2S for data.
2197 +Load: dtoverlay=adau1977-adc
2198 +Params: <None>
2199 +
2200 +
2201 +Name: ads1015
2202 +Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C
2203 +Load: dtoverlay=ads1015,<param>=<val>
2204 +Params: addr I2C bus address of device. Set based on how the
2205 + addr pin is wired. (default=0x48 assumes addr
2206 + is pulled to GND)
2207 + cha_enable Enable virtual channel a. (default=true)
2208 + cha_cfg Set the configuration for virtual channel a.
2209 + (default=4 configures this channel for the
2210 + voltage at A0 with respect to GND)
2211 + cha_datarate Set the datarate (samples/sec) for this channel.
2212 + (default=4 sets 1600 sps)
2213 + cha_gain Set the gain of the Programmable Gain
2214 + Amplifier for this channel. (default=2 sets the
2215 + full scale of the channel to 2.048 Volts)
2216 +
2217 + Channel (ch) parameters can be set for each enabled channel.
2218 + A maximum of 4 channels can be enabled (letters a thru d).
2219 + For more information refer to the device datasheet at:
2220 + http://www.ti.com/lit/ds/symlink/ads1015.pdf
2221 +
2222 +
2223 +Name: ads7846
2224 +Info: ADS7846 Touch controller
2225 +Load: dtoverlay=ads7846,<param>=<val>
2226 +Params: cs SPI bus Chip Select (default 1)
2227 + speed SPI bus speed (default 2MHz, max 3.25MHz)
2228 + penirq GPIO used for PENIRQ. REQUIRED
2229 + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
2230 + swapxy Swap x and y axis
2231 + xmin Minimum value on the X axis (default 0)
2232 + ymin Minimum value on the Y axis (default 0)
2233 + xmax Maximum value on the X axis (default 4095)
2234 + ymax Maximum value on the Y axis (default 4095)
2235 + pmin Minimum reported pressure value (default 0)
2236 + pmax Maximum reported pressure value (default 65535)
2237 + xohms Touchpanel sensitivity (X-plate resistance)
2238 + (default 400)
2239 +
2240 + penirq is required and usually xohms (60-100) has to be set as well.
2241 + Apart from that, pmax (255) and swapxy are also common.
2242 + The rest of the calibration can be done with xinput-calibrator.
2243 + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
2244 + Device Tree binding document:
2245 + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
2246 +
2247 +
2248 +Name: akkordion-iqdacplus
2249 +Info: Configures the Digital Dreamtime Akkordion Music Player (based on the
2250 + OEM IQAudIO DAC+ or DAC Zero module).
2251 +Load: dtoverlay=akkordion-iqdacplus,<param>=<val>
2252 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2253 + Digital volume control. Enable with
2254 + dtoverlay=akkordion-iqdacplus,24db_digital_gain
2255 + (The default behaviour is that the Digital
2256 + volume control is limited to a maximum of
2257 + 0dB. ie. it can attenuate but not provide
2258 + gain. For most users, this will be desired
2259 + as it will prevent clipping. By appending
2260 + the 24db_digital_gain parameter, the Digital
2261 + volume control will allow up to 24dB of
2262 + gain. If this parameter is enabled, it is the
2263 + responsibility of the user to ensure that
2264 + the Digital volume control is set to a value
2265 + that does not result in clipping/distortion!)
2266 +
2267 +
2268 +Name: allo-piano-dac-pcm512x-audio
2269 +Info: Configures the Allo Piano DAC (2.0/2.1) audio cards.
2270 + (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo.
2271 + The subwoofer outputs on the Piano 2.1 are not currently supported!)
2272 +Load: dtoverlay=allo-piano-dac-pcm512x-audio,<param>
2273 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2274 + Digital volume control.
2275 + (The default behaviour is that the Digital
2276 + volume control is limited to a maximum of
2277 + 0dB. ie. it can attenuate but not provide
2278 + gain. For most users, this will be desired
2279 + as it will prevent clipping. By appending
2280 + the 24db_digital_gain parameter, the Digital
2281 + volume control will allow up to 24dB of
2282 + gain. If this parameter is enabled, it is the
2283 + responsibility of the user to ensure that
2284 + the Digital volume control is set to a value
2285 + that does not result in clipping/distortion!)
2286 +
2287 +
2288 +Name: at86rf233
2289 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
2290 + connected to spi0.0
2291 +Load: dtoverlay=at86rf233,<param>=<val>
2292 +Params: interrupt GPIO used for INT (default 23)
2293 + reset GPIO used for Reset (default 24)
2294 + sleep GPIO used for Sleep (default 25)
2295 + speed SPI bus speed in Hz (default 3000000)
2296 + trim Fine tuning of the internal capacitance
2297 + arrays (0=+0pF, 15=+4.5pF, default 15)
2298 +
2299 +
2300 +Name: audioinjector-wm8731-audio
2301 +Info: Configures the audioinjector.net audio add on soundcard
2302 +Load: dtoverlay=audioinjector-wm8731-audio
2303 +Params: <None>
2304 +
2305 +
2306 +Name: audremap
2307 +Info: Switches PWM sound output to pins 12 (Right) & 13 (Left)
2308 +Load: dtoverlay=audremap,<param>=<val>
2309 +Params: swap_lr Reverse the channel allocation, which will also
2310 + swap the audio jack outputs (default off)
2311 + enable_jack Don't switch off the audio jack output
2312 + (default off)
2313 +
2314 +
2315 +Name: bmp085_i2c-sensor
2316 +Info: This overlay is now deprecated - see i2c-sensor
2317 +Load: dtoverlay=bmp085_i2c-sensor
2318 +Params: <None>
2319 +
2320 +
2321 +Name: dht11
2322 +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
2323 + Also sometimes found with the part number(s) AM230x.
2324 +Load: dtoverlay=dht11,<param>=<val>
2325 +Params: gpiopin GPIO connected to the sensor's DATA output.
2326 + (default 4)
2327 +
2328 +
2329 +Name: dionaudio-loco
2330 +Info: Configures the Dion Audio LOCO DAC-AMP
2331 +Load: dtoverlay=dionaudio-loco
2332 +Params: <None>
2333 +
2334 +
2335 +Name: dpi18
2336 +Info: Overlay for a generic 18-bit DPI display
2337 + This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output
2338 + 2-3 seconds after the kernel has started.
2339 +Load: dtoverlay=dpi18
2340 +Params: <None>
2341 +
2342 +
2343 +Name: dpi24
2344 +Info: Overlay for a generic 24-bit DPI display
2345 + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output
2346 + 2-3 seconds after the kernel has started.
2347 +Load: dtoverlay=dpi24
2348 +Params: <None>
2349 +
2350 +
2351 +Name: dwc-otg
2352 +Info: Selects the dwc_otg USB controller driver which has fiq support. This
2353 + is the default on all except the Pi Zero which defaults to dwc2.
2354 +Load: dtoverlay=dwc-otg
2355 +Params: <None>
2356 +
2357 +
2358 +Name: dwc2
2359 +Info: Selects the dwc2 USB controller driver
2360 +Load: dtoverlay=dwc2,<param>=<val>
2361 +Params: dr_mode Dual role mode: "host", "peripheral" or "otg"
2362 +
2363 + g-rx-fifo-size Size of rx fifo size in gadget mode
2364 +
2365 + g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget
2366 + mode
2367 +
2368 + g-tx-fifo-size Size of periodic tx fifo per endpoint
2369 + (except ep0) in gadget mode
2370 +
2371 +
2372 +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
2373 +
2374 +
2375 +Name: enc28j60
2376 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0
2377 +Load: dtoverlay=enc28j60,<param>=<val>
2378 +Params: int_pin GPIO used for INT (default 25)
2379 +
2380 + speed SPI bus speed (default 12000000)
2381 +
2382 +
2383 +Name: enc28j60-spi2
2384 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2
2385 +Load: dtoverlay=enc28j60-spi2,<param>=<val>
2386 +Params: int_pin GPIO used for INT (default 39)
2387 +
2388 + speed SPI bus speed (default 12000000)
2389 +
2390 +
2391 +Name: gpio-ir
2392 +Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core-
2393 + based gpio_ir_recv driver maps received keys directly to a
2394 + /dev/input/event* device, all decoding is done by the kernel - LIRC is
2395 + not required! The key mapping and other decoding parameters can be
2396 + configured by "ir-keytable" tool.
2397 +Load: dtoverlay=gpio-ir,<param>=<val>
2398 +Params: gpio_pin Input pin number. Default is 18.
2399 +
2400 + gpio_pull Desired pull-up/down state (off, down, up)
2401 + Default is "down".
2402 +
2403 + rc-map-name Default rc keymap (can also be changed by
2404 + ir-keytable), defaults to "rc-rc6-mce"
2405 +
2406 +
2407 +Name: gpio-poweroff
2408 +Info: Drives a GPIO high or low on poweroff (including halt)
2409 +Load: dtoverlay=gpio-poweroff,<param>=<val>
2410 +Params: gpiopin GPIO for signalling (default 26)
2411 +
2412 + active_low Set if the power control device requires a
2413 + high->low transition to trigger a power-down.
2414 + Note that this will require the support of a
2415 + custom dt-blob.bin to prevent a power-down
2416 + during the boot process, and that a reboot
2417 + will also cause the pin to go low.
2418 +
2419 +
2420 +Name: hifiberry-amp
2421 +Info: Configures the HifiBerry Amp and Amp+ audio cards
2422 +Load: dtoverlay=hifiberry-amp
2423 +Params: <None>
2424 +
2425 +
2426 +Name: hifiberry-dac
2427 +Info: Configures the HifiBerry DAC audio card
2428 +Load: dtoverlay=hifiberry-dac
2429 +Params: <None>
2430 +
2431 +
2432 +Name: hifiberry-dacplus
2433 +Info: Configures the HifiBerry DAC+ audio card
2434 +Load: dtoverlay=hifiberry-dacplus,<param>=<val>
2435 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2436 + Digital volume control. Enable with
2437 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
2438 + (The default behaviour is that the Digital
2439 + volume control is limited to a maximum of
2440 + 0dB. ie. it can attenuate but not provide
2441 + gain. For most users, this will be desired
2442 + as it will prevent clipping. By appending
2443 + the 24dB_digital_gain parameter, the Digital
2444 + volume control will allow up to 24dB of
2445 + gain. If this parameter is enabled, it is the
2446 + responsibility of the user to ensure that
2447 + the Digital volume control is set to a value
2448 + that does not result in clipping/distortion!)
2449 + slave Force DAC+ Pro into slave mode, using Pi as
2450 + master for bit clock and frame clock.
2451 +
2452 +
2453 +Name: hifiberry-digi
2454 +Info: Configures the HifiBerry Digi and Digi+ audio card
2455 +Load: dtoverlay=hifiberry-digi
2456 +Params: <None>
2457 +
2458 +
2459 +Name: hifiberry-digi-pro
2460 +Info: Configures the HifiBerry Digi+ Pro audio card
2461 +Load: dtoverlay=hifiberry-digi-pro
2462 +Params: <None>
2463 +
2464 +
2465 +Name: hy28a
2466 +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
2467 + Default values match Texy's display shield
2468 +Load: dtoverlay=hy28a,<param>=<val>
2469 +Params: speed Display SPI bus speed
2470 +
2471 + rotate Display rotation {0,90,180,270}
2472 +
2473 + fps Delay between frame updates
2474 +
2475 + debug Debug output level {0-7}
2476 +
2477 + xohms Touchpanel sensitivity (X-plate resistance)
2478 +
2479 + resetgpio GPIO used to reset controller
2480 +
2481 + ledgpio GPIO used to control backlight
2482 +
2483 +
2484 +Name: hy28b
2485 +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
2486 + Default values match Texy's display shield
2487 +Load: dtoverlay=hy28b,<param>=<val>
2488 +Params: speed Display SPI bus speed
2489 +
2490 + rotate Display rotation {0,90,180,270}
2491 +
2492 + fps Delay between frame updates
2493 +
2494 + debug Debug output level {0-7}
2495 +
2496 + xohms Touchpanel sensitivity (X-plate resistance)
2497 +
2498 + resetgpio GPIO used to reset controller
2499 +
2500 + ledgpio GPIO used to control backlight
2501 +
2502 +
2503 +Name: i2c-bcm2708
2504 +Info: Fall back to the i2c_bcm2708 driver for the i2c_arm bus.
2505 +Load: dtoverlay=i2c-bcm2708
2506 +Params: <None>
2507 +
2508 +
2509 +Name: i2c-gpio
2510 +Info: Adds support for software i2c controller on gpio pins
2511 +Load: dtoverlay=i2c-gpio,<param>=<val>
2512 +Params: i2c_gpio_sda GPIO used for I2C data (default "23")
2513 +
2514 + i2c_gpio_scl GPIO used for I2C clock (default "24")
2515 +
2516 + i2c_gpio_delay_us Clock delay in microseconds
2517 + (default "2" = ~100kHz)
2518 +
2519 +
2520 +Name: i2c-mux
2521 +Info: Adds support for a number of I2C bus multiplexers on i2c_arm
2522 +Load: dtoverlay=i2c-mux,<param>=<val>
2523 +Params: pca9542 Select the NXP PCA9542 device
2524 +
2525 + pca9545 Select the NXP PCA9545 device
2526 +
2527 + pca9548 Select the NXP PCA9548 device
2528 +
2529 + addr Change I2C address of the device (default 0x70)
2530 +
2531 +
2532 +[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
2533 +
2534 +
2535 +Name: i2c-pwm-pca9685a
2536 +Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
2537 +Load: dtoverlay=i2c-pwm-pca9685a,<param>=<val>
2538 +Params: addr I2C address of PCA9685A (default 0x40)
2539 +
2540 +
2541 +Name: i2c-rtc
2542 +Info: Adds support for a number of I2C Real Time Clock devices
2543 +Load: dtoverlay=i2c-rtc,<param>=<val>
2544 +Params: abx80x Select one of the ABx80x family:
2545 + AB0801, AB0803, AB0804, AB0805,
2546 + AB1801, AB1803, AB1804, AB1805
2547 +
2548 + ds1307 Select the DS1307 device
2549 +
2550 + ds1339 Select the DS1339 device
2551 +
2552 + ds3231 Select the DS3231 device
2553 +
2554 + mcp7940x Select the MCP7940x device
2555 +
2556 + mcp7941x Select the MCP7941x device
2557 +
2558 + pcf2127 Select the PCF2127 device
2559 +
2560 + pcf8523 Select the PCF8523 device
2561 +
2562 + pcf8563 Select the PCF8563 device
2563 +
2564 + trickle-diode-type Diode type for trickle charge - "standard" or
2565 + "schottky" (ABx80x only)
2566 +
2567 + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
2568 + ABx80x)
2569 +
2570 + wakeup-source Specify that the RTC can be used as a wakeup
2571 + source
2572 +
2573 +
2574 +Name: i2c-sensor
2575 +Info: Adds support for a number of I2C barometric pressure and temperature
2576 + sensors on i2c_arm
2577 +Load: dtoverlay=i2c-sensor,<param>=<val>
2578 +Params: bmp085 Select the Bosch sensortronic BMP085
2579 +
2580 + bmp280 Select the Bosch sensortronic BMP280
2581 +
2582 +
2583 +Name: i2c0-bcm2708
2584 +Info: Enable the i2c_bcm2708 driver for the i2c0 bus. Not all pin combinations
2585 + are usable on all platforms.
2586 +Load: dtoverlay=i2c0-bcm2708,<param>=<val>
2587 +Params: sda0_pin GPIO pin for SDA0 (deprecated - use pins_*)
2588 + scl0_pin GPIO pin for SCL0 (deprecated - use pins_*)
2589 + pins_0_1 Use pins 0 and 1 (default)
2590 + pins_28_29 Use pins 28 and 29
2591 + pins_44_45 Use pins 44 and 45
2592 + pins_46_47 Use pins 46 and 47
2593 +
2594 +
2595 +Name: i2c1-bcm2708
2596 +Info: Enable the i2c_bcm2708 driver for the i2c1 bus
2597 +Load: dtoverlay=i2c1-bcm2708,<param>=<val>
2598 +Params: sda1_pin GPIO pin for SDA1 (2 or 44 - default 2)
2599 + scl1_pin GPIO pin for SCL1 (3 or 45 - default 3)
2600 + pin_func Alternative pin function (4 (alt0), 6 (alt2) -
2601 + default 4)
2602 +
2603 +
2604 +Name: i2s-gpio28-31
2605 +Info: move I2S function block to GPIO 28 to 31
2606 +Load: dtoverlay=i2s-gpio28-31
2607 +Params: <None>
2608 +
2609 +
2610 +Name: iqaudio-dac
2611 +Info: Configures the IQaudio DAC audio card
2612 +Load: dtoverlay=iqaudio-dac,<param>
2613 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2614 + Digital volume control. Enable with
2615 + "dtoverlay=iqaudio-dac,24db_digital_gain"
2616 + (The default behaviour is that the Digital
2617 + volume control is limited to a maximum of
2618 + 0dB. ie. it can attenuate but not provide
2619 + gain. For most users, this will be desired
2620 + as it will prevent clipping. By appending
2621 + the 24db_digital_gain parameter, the Digital
2622 + volume control will allow up to 24dB of
2623 + gain. If this parameter is enabled, it is the
2624 + responsibility of the user to ensure that
2625 + the Digital volume control is set to a value
2626 + that does not result in clipping/distortion!)
2627 +
2628 +
2629 +Name: iqaudio-dacplus
2630 +Info: Configures the IQaudio DAC+ audio card
2631 +Load: dtoverlay=iqaudio-dacplus,<param>=<val>
2632 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2633 + Digital volume control. Enable with
2634 + "dtoverlay=iqaudio-dacplus,24db_digital_gain"
2635 + (The default behaviour is that the Digital
2636 + volume control is limited to a maximum of
2637 + 0dB. ie. it can attenuate but not provide
2638 + gain. For most users, this will be desired
2639 + as it will prevent clipping. By appending
2640 + the 24db_digital_gain parameter, the Digital
2641 + volume control will allow up to 24dB of
2642 + gain. If this parameter is enabled, it is the
2643 + responsibility of the user to ensure that
2644 + the Digital volume control is set to a value
2645 + that does not result in clipping/distortion!)
2646 + auto_mute_amp If specified, unmute/mute the IQaudIO amp when
2647 + starting/stopping audio playback.
2648 + unmute_amp If specified, unmute the IQaudIO amp once when
2649 + the DAC driver module loads.
2650 +
2651 +
2652 +Name: iqaudio-digi-wm8804-audio
2653 +Info: Configures the IQAudIO Digi WM8804 audio card
2654 +Load: dtoverlay=iqaudio-digi-wm8804-audio,<param>=<val>
2655 +Params: card_name Override the default, "IQAudIODigi", card name.
2656 + dai_name Override the default, "IQAudIO Digi", dai name.
2657 + dai_stream_name Override the default, "IQAudIO Digi HiFi",
2658 + dai stream name.
2659 +
2660 +
2661 +Name: justboom-dac
2662 +Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
2663 + cards
2664 +Load: dtoverlay=justboom-dac,<param>=<val>
2665 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2666 + Digital volume control. Enable with
2667 + "dtoverlay=justboom-dac,24db_digital_gain"
2668 + (The default behaviour is that the Digital
2669 + volume control is limited to a maximum of
2670 + 0dB. ie. it can attenuate but not provide
2671 + gain. For most users, this will be desired
2672 + as it will prevent clipping. By appending
2673 + the 24dB_digital_gain parameter, the Digital
2674 + volume control will allow up to 24dB of
2675 + gain. If this parameter is enabled, it is the
2676 + responsibility of the user to ensure that
2677 + the Digital volume control is set to a value
2678 + that does not result in clipping/distortion!)
2679 +
2680 +
2681 +Name: justboom-digi
2682 +Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
2683 +Load: dtoverlay=justboom-digi
2684 +Params: <None>
2685 +
2686 +
2687 +Name: lirc-rpi
2688 +Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi)
2689 + Consult the module documentation for more details.
2690 +Load: dtoverlay=lirc-rpi,<param>=<val>
2691 +Params: gpio_out_pin GPIO for output (default "17")
2692 +
2693 + gpio_in_pin GPIO for input (default "18")
2694 +
2695 + gpio_in_pull Pull up/down/off on the input pin
2696 + (default "down")
2697 +
2698 + sense Override the IR receive auto-detection logic:
2699 + "0" = force active-high
2700 + "1" = force active-low
2701 + "-1" = use auto-detection
2702 + (default "-1")
2703 +
2704 + softcarrier Turn the software carrier "on" or "off"
2705 + (default "on")
2706 +
2707 + invert "on" = invert the output pin (default "off")
2708 +
2709 + debug "on" = enable additional debug messages
2710 + (default "off")
2711 +
2712 +
2713 +Name: mcp23017
2714 +Info: Configures the MCP23017 I2C GPIO expander
2715 +Load: dtoverlay=mcp23017,<param>=<val>
2716 +Params: gpiopin Gpio pin connected to the INTA output of the
2717 + MCP23017 (default: 4)
2718 +
2719 + addr I2C address of the MCP23017 (default: 0x20)
2720 +
2721 +
2722 +Name: mcp23s17
2723 +Info: Configures the MCP23S08/17 SPI GPIO expanders.
2724 + If devices are present on SPI1 or SPI2, those interfaces must be enabled
2725 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
2726 + If interrupts are enabled for a device on a given CS# on a SPI bus, that
2727 + device must be the only one present on that SPI bus/CS#.
2728 +Load: dtoverlay=mcp23s17,<param>=<val>
2729 +Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
2730 + devices present on SPI<n>, CS#<m>
2731 +
2732 + s17-spi<n>-<m>-present 8-bit integer, bitmap indicating MCP23S17
2733 + devices present on SPI<n>, CS#<m>
2734 +
2735 + s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
2736 + MCP23S08 device on SPI<n>, CS#<m>, specifies
2737 + the GPIO pin to which INT output of MCP23S08
2738 + is connected.
2739 +
2740 + s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
2741 + single MCP23S17 device on SPI<n>, CS#<m>,
2742 + specifies the GPIO pin to which either INTA
2743 + or INTB output of MCP23S17 is connected.
2744 +
2745 +
2746 +Name: mcp2515-can0
2747 +Info: Configures the MCP2515 CAN controller on spi0.0
2748 +Load: dtoverlay=mcp2515-can0,<param>=<val>
2749 +Params: oscillator Clock frequency for the CAN controller (Hz)
2750 +
2751 + spimaxfrequency Maximum SPI frequence (Hz)
2752 +
2753 + interrupt GPIO for interrupt signal
2754 +
2755 +
2756 +Name: mcp2515-can1
2757 +Info: Configures the MCP2515 CAN controller on spi0.1
2758 +Load: dtoverlay=mcp2515-can1,<param>=<val>
2759 +Params: oscillator Clock frequency for the CAN controller (Hz)
2760 +
2761 + spimaxfrequency Maximum SPI frequence (Hz)
2762 +
2763 + interrupt GPIO for interrupt signal
2764 +
2765 +
2766 +Name: midi-uart0
2767 +Info: Configures UART0 (ttyAMA0) so that a requested 38.4kbaud actually gets
2768 + 31.25kbaud, the frequency required for MIDI
2769 +Load: dtoverlay=midi-uart0
2770 +Params: <None>
2771 +
2772 +
2773 +Name: mmc
2774 +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
2775 +Load: dtoverlay=mmc,<param>=<val>
2776 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
2777 + requests 50MHz
2778 +
2779 +
2780 +Name: mz61581
2781 +Info: MZ61581 display by Tontec
2782 +Load: dtoverlay=mz61581,<param>=<val>
2783 +Params: speed Display SPI bus speed
2784 +
2785 + rotate Display rotation {0,90,180,270}
2786 +
2787 + fps Delay between frame updates
2788 +
2789 + txbuflen Transmit buffer length (default 32768)
2790 +
2791 + debug Debug output level {0-7}
2792 +
2793 + xohms Touchpanel sensitivity (X-plate resistance)
2794 +
2795 +
2796 +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
2797 +
2798 +
2799 +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
2800 +
2801 +
2802 +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
2803 +
2804 +
2805 +Name: pi3-act-led
2806 +Info: Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
2807 + from the VPU. There is a special driver for this with a separate DT
2808 + node, which has the unfortunate consequence of breaking the
2809 + act_led_gpio and act_led_activelow dtparams.
2810 + This overlay changes the GPIO controller back to the standard one and
2811 + restores the dtparams.
2812 +Load: dtoverlay=pi3-act-led,<param>=<val>
2813 +Params: activelow Set to "on" to invert the sense of the LED
2814 + (default "off")
2815 +
2816 + gpio Set which GPIO to use for the activity LED
2817 + (in case you want to connect it to an external
2818 + device)
2819 + REQUIRED
2820 +
2821 +
2822 +Name: pi3-disable-bt
2823 +Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
2824 + N.B. To disable the systemd service that initialises the modem so it
2825 + doesn't use the UART, use 'sudo systemctl disable hciuart'.
2826 +Load: dtoverlay=pi3-disable-bt
2827 +Params: <None>
2828 +
2829 +
2830 +Name: pi3-miniuart-bt
2831 +Info: Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
2832 + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
2833 + usable baudrate.
2834 + N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
2835 + and replace ttyAMA0 with ttyS0, unless you have a system with udev rules
2836 + that create /dev/serial0 and /dev/serial1, in which case use
2837 + /dev/serial1 instead because it will always be correct. Furthermore,
2838 + you must also set core_freq=250 in config.txt or the miniuart will not
2839 + work.
2840 +Load: dtoverlay=pi3-miniuart-bt
2841 +Params: <None>
2842 +
2843 +
2844 +Name: piscreen
2845 +Info: PiScreen display by OzzMaker.com
2846 +Load: dtoverlay=piscreen,<param>=<val>
2847 +Params: speed Display SPI bus speed
2848 +
2849 + rotate Display rotation {0,90,180,270}
2850 +
2851 + fps Delay between frame updates
2852 +
2853 + debug Debug output level {0-7}
2854 +
2855 + xohms Touchpanel sensitivity (X-plate resistance)
2856 +
2857 +
2858 +Name: piscreen2r
2859 +Info: PiScreen 2 with resistive TP display by OzzMaker.com
2860 +Load: dtoverlay=piscreen2r,<param>=<val>
2861 +Params: speed Display SPI bus speed
2862 +
2863 + rotate Display rotation {0,90,180,270}
2864 +
2865 + fps Delay between frame updates
2866 +
2867 + debug Debug output level {0-7}
2868 +
2869 + xohms Touchpanel sensitivity (X-plate resistance)
2870 +
2871 +
2872 +Name: pisound
2873 +Info: Configures the Blokas Labs pisound card
2874 +Load: dtoverlay=pisound
2875 +Params: <None>
2876 +
2877 +
2878 +Name: pitft22
2879 +Info: Adafruit PiTFT 2.2" screen
2880 +Load: dtoverlay=pitft22,<param>=<val>
2881 +Params: speed Display SPI bus speed
2882 +
2883 + rotate Display rotation {0,90,180,270}
2884 +
2885 + fps Delay between frame updates
2886 +
2887 + debug Debug output level {0-7}
2888 +
2889 +
2890 +Name: pitft28-capacitive
2891 +Info: Adafruit PiTFT 2.8" capacitive touch screen
2892 +Load: dtoverlay=pitft28-capacitive,<param>=<val>
2893 +Params: speed Display SPI bus speed
2894 +
2895 + rotate Display rotation {0,90,180,270}
2896 +
2897 + fps Delay between frame updates
2898 +
2899 + debug Debug output level {0-7}
2900 +
2901 + touch-sizex Touchscreen size x (default 240)
2902 +
2903 + touch-sizey Touchscreen size y (default 320)
2904 +
2905 + touch-invx Touchscreen inverted x axis
2906 +
2907 + touch-invy Touchscreen inverted y axis
2908 +
2909 + touch-swapxy Touchscreen swapped x y axis
2910 +
2911 +
2912 +Name: pitft28-resistive
2913 +Info: Adafruit PiTFT 2.8" resistive touch screen
2914 +Load: dtoverlay=pitft28-resistive,<param>=<val>
2915 +Params: speed Display SPI bus speed
2916 +
2917 + rotate Display rotation {0,90,180,270}
2918 +
2919 + fps Delay between frame updates
2920 +
2921 + debug Debug output level {0-7}
2922 +
2923 +
2924 +Name: pitft35-resistive
2925 +Info: Adafruit PiTFT 3.5" resistive touch screen
2926 +Load: dtoverlay=pitft35-resistive,<param>=<val>
2927 +Params: speed Display SPI bus speed
2928 +
2929 + rotate Display rotation {0,90,180,270}
2930 +
2931 + fps Delay between frame updates
2932 +
2933 + debug Debug output level {0-7}
2934 +
2935 +
2936 +Name: pps-gpio
2937 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
2938 +Load: dtoverlay=pps-gpio,<param>=<val>
2939 +Params: gpiopin Input GPIO (default "18")
2940 + assert_falling_edge When present, assert is indicated by a falling
2941 + edge, rather than by a rising edge
2942 +
2943 +
2944 +Name: pwm
2945 +Info: Configures a single PWM channel
2946 + Legal pin,function combinations for each channel:
2947 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
2948 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
2949 + N.B.:
2950 + 1) Pin 18 is the only one available on all platforms, and
2951 + it is the one used by the I2S audio interface.
2952 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
2953 + 2) The onboard analogue audio output uses both PWM channels.
2954 + 3) So be careful mixing audio and PWM.
2955 + 4) Currently the clock must have been enabled and configured
2956 + by other means.
2957 +Load: dtoverlay=pwm,<param>=<val>
2958 +Params: pin Output pin (default 18) - see table
2959 + func Pin function (default 2 = Alt5) - see above
2960 + clock PWM clock frequency (informational)
2961 +
2962 +
2963 +Name: pwm-2chan
2964 +Info: Configures both PWM channels
2965 + Legal pin,function combinations for each channel:
2966 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
2967 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
2968 + N.B.:
2969 + 1) Pin 18 is the only one available on all platforms, and
2970 + it is the one used by the I2S audio interface.
2971 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
2972 + 2) The onboard analogue audio output uses both PWM channels.
2973 + 3) So be careful mixing audio and PWM.
2974 + 4) Currently the clock must have been enabled and configured
2975 + by other means.
2976 +Load: dtoverlay=pwm-2chan,<param>=<val>
2977 +Params: pin Output pin (default 18) - see table
2978 + pin2 Output pin for other channel (default 19)
2979 + func Pin function (default 2 = Alt5) - see above
2980 + func2 Function for pin2 (default 2 = Alt5)
2981 + clock PWM clock frequency (informational)
2982 +
2983 +
2984 +Name: qca7000
2985 +Info: I2SE's Evaluation Board for PLC Stamp micro
2986 +Load: dtoverlay=qca7000,<param>=<val>
2987 +Params: int_pin GPIO pin for interrupt signal (default 23)
2988 +
2989 + speed SPI bus speed (default 12 MHz)
2990 +
2991 +
2992 +Name: raspidac3
2993 +Info: Configures the RaspiDAV Rev.3x audio card
2994 +Load: dtoverlay=raspidac3
2995 +Params: <None>
2996 +
2997 +
2998 +Name: rpi-backlight
2999 +Info: Raspberry Pi official display backlight driver
3000 +Load: dtoverlay=rpi-backlight
3001 +Params: <None>
3002 +
3003 +
3004 +Name: rpi-dac
3005 +Info: Configures the RPi DAC audio card
3006 +Load: dtoverlay=rpi-dac
3007 +Params: <None>
3008 +
3009 +
3010 +Name: rpi-display
3011 +Info: RPi-Display - 2.8" Touch Display by Watterott
3012 +Load: dtoverlay=rpi-display,<param>=<val>
3013 +Params: speed Display SPI bus speed
3014 + rotate Display rotation {0,90,180,270}
3015 + fps Delay between frame updates
3016 + debug Debug output level {0-7}
3017 + xohms Touchpanel sensitivity (X-plate resistance)
3018 + swapxy Swap x and y axis
3019 +
3020 +
3021 +Name: rpi-ft5406
3022 +Info: Official Raspberry Pi display touchscreen
3023 +Load: dtoverlay=rpi-ft5406
3024 +Params: <None>
3025 +
3026 +
3027 +Name: rpi-proto
3028 +Info: Configures the RPi Proto audio card
3029 +Load: dtoverlay=rpi-proto
3030 +Params: <None>
3031 +
3032 +
3033 +Name: rpi-sense
3034 +Info: Raspberry Pi Sense HAT
3035 +Load: dtoverlay=rpi-sense
3036 +Params: <None>
3037 +
3038 +
3039 +Name: rra-digidac1-wm8741-audio
3040 +Info: Configures the Red Rocks Audio DigiDAC1 soundcard
3041 +Load: dtoverlay=rra-digidac1-wm8741-audio
3042 +Params: <None>
3043 +
3044 +
3045 +Name: sc16is750-i2c
3046 +Info: Overlay for the NXP SC16IS750 UART with I2C Interface
3047 + Enables the chip on I2C1 at 0x48. To select another address,
3048 + please refer to table 10 in reference manual.
3049 +
3050 +Load: dtoverlay=sc16is750-i2c,<param>=<val>
3051 +Params: int_pin GPIO used for IRQ (default 24)
3052 + addr Address (default 0x48)
3053 +
3054 +
3055 +Name: sc16is752-spi1
3056 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
3057 + Enables the chip on SPI1.
3058 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3059 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3060 +
3061 +Load: dtoverlay=sc16is752-spi1,<param>=<val>
3062 +Params: int_pin GPIO used for IRQ (default 24)
3063 +
3064 +
3065 +Name: sdhost
3066 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock.
3067 + N.B. This overlay is designed for situations where the mmc driver is
3068 + the default, so it disables the other (mmc) interface - this will kill
3069 + WiFi on a Pi3. If this isn't what you want, either use the sdtweak
3070 + overlay or the new sd_* dtparams of the base DTBs.
3071 +Load: dtoverlay=sdhost,<param>=<val>
3072 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
3073 + requests 50MHz
3074 +
3075 + force_pio Disable DMA support (default off)
3076 +
3077 + pio_limit Number of blocks above which to use DMA
3078 + (default 1)
3079 +
3080 + debug Enable debug output (default off)
3081 +
3082 +
3083 +Name: sdio
3084 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
3085 + and enables SDIO via GPIOs 22-27.
3086 +Load: dtoverlay=sdio,<param>=<val>
3087 +Params: overclock_50 SD Clock (in MHz) to use when the MMC framework
3088 + requests 50MHz
3089 +
3090 + sdio_overclock SDIO Clock (in MHz) to use when the MMC
3091 + framework requests 50MHz
3092 +
3093 + force_pio Disable DMA support (default off)
3094 +
3095 + pio_limit Number of blocks above which to use DMA
3096 + (default 1)
3097 +
3098 + debug Enable debug output (default off)
3099 +
3100 + poll_once Disable SDIO-device polling every second
3101 + (default on: polling once at boot-time)
3102 +
3103 + bus_width Set the SDIO host bus width (default 4 bits)
3104 +
3105 +
3106 +Name: sdio-1bit
3107 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
3108 + and enables 1-bit SDIO via GPIOs 22-25.
3109 +Load: dtoverlay=sdio-1bit,<param>=<val>
3110 +Params: overclock_50 SD Clock (in MHz) to use when the MMC framework
3111 + requests 50MHz
3112 +
3113 + sdio_overclock SDIO Clock (in MHz) to use when the MMC
3114 + framework requests 50MHz
3115 +
3116 + force_pio Disable DMA support (default off)
3117 +
3118 + pio_limit Number of blocks above which to use DMA
3119 + (default 1)
3120 +
3121 + debug Enable debug output (default off)
3122 +
3123 + poll_once Disable SDIO-device polling every second
3124 + (default on: polling once at boot-time)
3125 +
3126 +
3127 +Name: sdtweak
3128 +Info: Tunes the bcm2835-sdhost SD/MMC driver
3129 + N.B. This functionality is now available via the sd_* dtparams in the
3130 + base DTB.
3131 +Load: dtoverlay=sdtweak,<param>=<val>
3132 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
3133 + requests 50MHz
3134 +
3135 + force_pio Disable DMA support (default off)
3136 +
3137 + pio_limit Number of blocks above which to use DMA
3138 + (default 1)
3139 +
3140 + debug Enable debug output (default off)
3141 +
3142 +
3143 +Name: smi
3144 +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
3145 +Load: dtoverlay=smi
3146 +Params: <None>
3147 +
3148 +
3149 +Name: smi-dev
3150 +Info: Enables the userspace interface for the SMI driver
3151 +Load: dtoverlay=smi-dev
3152 +Params: <None>
3153 +
3154 +
3155 +Name: smi-nand
3156 +Info: Enables access to NAND flash via the SMI interface
3157 +Load: dtoverlay=smi-nand
3158 +Params: <None>
3159 +
3160 +
3161 +Name: spi-gpio35-39
3162 +Info: move SPI function block to GPIO 35 to 39
3163 +Load: dtoverlay=spi-gpio35-39
3164 +Params: <None>
3165 +
3166 +
3167 +Name: spi-rtc
3168 +Info: Adds support for a number of SPI Real Time Clock devices
3169 +Load: dtoverlay=spi-rtc,<param>=<val>
3170 +Params: pcf2123 Select the PCF2123 device
3171 +
3172 +
3173 +Name: spi0-hw-cs
3174 +Info: Re-enables hardware CS/CE (chip selects) for SPI0
3175 +Load: dtoverlay=spi0-hw-cs
3176 +Params: <None>
3177 +
3178 +
3179 +Name: spi1-1cs
3180 +Info: Enables spi1 with a single chip select (CS) line and associated spidev
3181 + dev node. The gpio pin number for the CS line and spidev device node
3182 + creation are configurable.
3183 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3184 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3185 +Load: dtoverlay=spi1-1cs,<param>=<val>
3186 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3187 + cs0_spidev Set to 'disabled' to stop the creation of a
3188 + userspace device node /dev/spidev1.0 (default
3189 + is 'okay' or enabled).
3190 +
3191 +
3192 +Name: spi1-2cs
3193 +Info: Enables spi1 with two chip select (CS) lines and associated spidev
3194 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3195 + creation are configurable.
3196 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3197 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3198 +Load: dtoverlay=spi1-2cs,<param>=<val>
3199 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3200 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
3201 + cs0_spidev Set to 'disabled' to stop the creation of a
3202 + userspace device node /dev/spidev1.0 (default
3203 + is 'okay' or enabled).
3204 + cs1_spidev Set to 'disabled' to stop the creation of a
3205 + userspace device node /dev/spidev1.1 (default
3206 + is 'okay' or enabled).
3207 +
3208 +
3209 +Name: spi1-3cs
3210 +Info: Enables spi1 with three chip select (CS) lines and associated spidev
3211 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3212 + creation are configurable.
3213 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3214 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3215 +Load: dtoverlay=spi1-3cs,<param>=<val>
3216 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3217 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
3218 + cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
3219 + cs0_spidev Set to 'disabled' to stop the creation of a
3220 + userspace device node /dev/spidev1.0 (default
3221 + is 'okay' or enabled).
3222 + cs1_spidev Set to 'disabled' to stop the creation of a
3223 + userspace device node /dev/spidev1.1 (default
3224 + is 'okay' or enabled).
3225 + cs2_spidev Set to 'disabled' to stop the creation of a
3226 + userspace device node /dev/spidev1.2 (default
3227 + is 'okay' or enabled).
3228 +
3229 +
3230 +Name: spi2-1cs
3231 +Info: Enables spi2 with a single chip select (CS) line and associated spidev
3232 + dev node. The gpio pin number for the CS line and spidev device node
3233 + creation are configurable.
3234 + N.B.: spi2 is only accessible with the Compute Module.
3235 +Load: dtoverlay=spi2-1cs,<param>=<val>
3236 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3237 + cs0_spidev Set to 'disabled' to stop the creation of a
3238 + userspace device node /dev/spidev2.0 (default
3239 + is 'okay' or enabled).
3240 +
3241 +
3242 +Name: spi2-2cs
3243 +Info: Enables spi2 with two chip select (CS) lines and associated spidev
3244 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3245 + creation are configurable.
3246 + N.B.: spi2 is only accessible with the Compute Module.
3247 +Load: dtoverlay=spi2-2cs,<param>=<val>
3248 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3249 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
3250 + cs0_spidev Set to 'disabled' to stop the creation of a
3251 + userspace device node /dev/spidev2.0 (default
3252 + is 'okay' or enabled).
3253 + cs1_spidev Set to 'disabled' to stop the creation of a
3254 + userspace device node /dev/spidev2.1 (default
3255 + is 'okay' or enabled).
3256 +
3257 +
3258 +Name: spi2-3cs
3259 +Info: Enables spi2 with three chip select (CS) lines and associated spidev
3260 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3261 + creation are configurable.
3262 + N.B.: spi2 is only accessible with the Compute Module.
3263 +Load: dtoverlay=spi2-3cs,<param>=<val>
3264 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3265 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
3266 + cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2).
3267 + cs0_spidev Set to 'disabled' to stop the creation of a
3268 + userspace device node /dev/spidev2.0 (default
3269 + is 'okay' or enabled).
3270 + cs1_spidev Set to 'disabled' to stop the creation of a
3271 + userspace device node /dev/spidev2.1 (default
3272 + is 'okay' or enabled).
3273 + cs2_spidev Set to 'disabled' to stop the creation of a
3274 + userspace device node /dev/spidev2.2 (default
3275 + is 'okay' or enabled).
3276 +
3277 +
3278 +Name: tinylcd35
3279 +Info: 3.5" Color TFT Display by www.tinylcd.com
3280 + Options: Touch, RTC, keypad
3281 +Load: dtoverlay=tinylcd35,<param>=<val>
3282 +Params: speed Display SPI bus speed
3283 +
3284 + rotate Display rotation {0,90,180,270}
3285 +
3286 + fps Delay between frame updates
3287 +
3288 + debug Debug output level {0-7}
3289 +
3290 + touch Enable touch panel
3291 +
3292 + touchgpio Touch controller IRQ GPIO
3293 +
3294 + xohms Touchpanel: Resistance of X-plate in ohms
3295 +
3296 + rtc-pcf PCF8563 Real Time Clock
3297 +
3298 + rtc-ds DS1307 Real Time Clock
3299 +
3300 + keypad Enable keypad
3301 +
3302 + Examples:
3303 + Display with touchpanel, PCF8563 RTC and keypad:
3304 + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
3305 + Old touch display:
3306 + dtoverlay=tinylcd35,touch,touchgpio=3
3307 +
3308 +
3309 +Name: uart1
3310 +Info: Enable uart1 in place of uart0
3311 +Load: dtoverlay=uart1,<param>=<val>
3312 +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
3313 +
3314 + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
3315 +
3316 +
3317 +Name: vc4-fkms-v3d
3318 +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
3319 + display stack.
3320 +Load: dtoverlay=vc4-fkms-v3d,<param>
3321 +Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
3322 + cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
3323 + cma-128 CMA is 128MB, 128MB-aligned
3324 + cma-96 CMA is 96MB, 128MB-aligned
3325 + cma-64 CMA is 64MB, 64MB-aligned
3326 +
3327 +
3328 +Name: vc4-kms-v3d
3329 +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
3330 + booting to GUI while this overlay is in use will cause interesting
3331 + lockups.
3332 +Load: dtoverlay=vc4-kms-v3d,<param>
3333 +Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
3334 + cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
3335 + cma-128 CMA is 128MB, 128MB-aligned
3336 + cma-96 CMA is 96MB, 128MB-aligned
3337 + cma-64 CMA is 64MB, 64MB-aligned
3338 +
3339 +
3340 +Name: vga666
3341 +Info: Overlay for the Fen Logic VGA666 board
3342 + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds
3343 + after the kernel has started.
3344 +Load: dtoverlay=vga666
3345 +Params: <None>
3346 +
3347 +
3348 +Name: w1-gpio
3349 +Info: Configures the w1-gpio Onewire interface module.
3350 + Use this overlay if you *don't* need a GPIO to drive an external pullup.
3351 +Load: dtoverlay=w1-gpio,<param>=<val>
3352 +Params: gpiopin GPIO for I/O (default "4")
3353 +
3354 + pullup Non-zero, "on", or "y" to enable the parasitic
3355 + power (2-wire, power-on-data) feature
3356 +
3357 +
3358 +Name: w1-gpio-pullup
3359 +Info: Configures the w1-gpio Onewire interface module.
3360 + Use this overlay if you *do* need a GPIO to drive an external pullup.
3361 +Load: dtoverlay=w1-gpio-pullup,<param>=<val>
3362 +Params: gpiopin GPIO for I/O (default "4")
3363 +
3364 + pullup Non-zero, "on", or "y" to enable the parasitic
3365 + power (2-wire, power-on-data) feature
3366 +
3367 + extpullup GPIO for external pullup (default "5")
3368 +
3369 +
3370 +Name: wittypi
3371 +Info: Configures the wittypi RTC module.
3372 +Load: dtoverlay=wittypi,<param>=<val>
3373 +Params: led_gpio GPIO for LED (default "17")
3374 + led_trigger Choose which activity the LED tracks (default
3375 + "default-on")
3376 +
3377 +
3378 +Troubleshooting
3379 +===============
3380 +
3381 +If you are experiencing problems that you think are DT-related, enable DT
3382 +diagnostic output by adding this to /boot/config.txt:
3383 +
3384 + dtdebug=on
3385 +
3386 +and rebooting. Then run:
3387 +
3388 + sudo vcdbg log msg
3389 +
3390 +and look for relevant messages.
3391 +
3392 +Further reading
3393 +===============
3394 +
3395 +This is only meant to be a quick introduction to the subject of Device Tree on
3396 +Raspberry Pi. There is a more complete explanation here:
3397 +
3398 +http://www.raspberrypi.org/documentation/configuration/device-tree.md
3399 --- /dev/null
3400 +++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
3401 @@ -0,0 +1,53 @@
3402 +// Definitions for ADAU1977 ADC
3403 +/dts-v1/;
3404 +/plugin/;
3405 +
3406 +/ {
3407 + compatible = "brcm,bcm2708";
3408 +
3409 + fragment@0 {
3410 + target = <&soc>;
3411 +
3412 + __overlay__ {
3413 + codec_supply: fixedregulator@0 {
3414 + compatible = "regulator-fixed";
3415 + regulator-name = "AVDD";
3416 + regulator-min-microvolt = <3300000>;
3417 + regulator-max-microvolt = <3300000>;
3418 + };
3419 + };
3420 + };
3421 +
3422 + fragment@1 {
3423 + target = <&i2c>;
3424 +
3425 + __overlay__ {
3426 + #address-cells = <1>;
3427 + #size-cells = <0>;
3428 + status = "okay";
3429 +
3430 + adau1977: codec@11 {
3431 + compatible = "adi,adau1977";
3432 + reg = <0x11>;
3433 + reset-gpios = <&gpio 5 0>;
3434 + AVDD-supply = <&codec_supply>;
3435 + };
3436 + };
3437 + };
3438 +
3439 + fragment@2 {
3440 + target = <&i2s>;
3441 + __overlay__ {
3442 + status = "okay";
3443 + };
3444 + };
3445 +
3446 + fragment@3 {
3447 + target = <&sound>;
3448 + __overlay__ {
3449 + compatible = "adi,adau1977-adc";
3450 + i2s-controller = <&i2s>;
3451 + status = "okay";
3452 + };
3453 + };
3454 +};
3455 --- /dev/null
3456 +++ b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
3457 @@ -0,0 +1,98 @@
3458 +/*
3459 + * 2016 - Erik Sejr
3460 + */
3461 +/dts-v1/;
3462 +/plugin/;
3463 +
3464 +/ {
3465 + compatible = "brcm,bcm2708";
3466 + /* ----------- ADS1015 ------------ */
3467 + fragment@0 {
3468 + target = <&i2c_arm>;
3469 + __overlay__ {
3470 + #address-cells = <1>;
3471 + #size-cells = <0>;
3472 + status = "okay";
3473 + ads1015: ads1015 {
3474 + compatible = "ti,ads1015";
3475 + status = "okay";
3476 + #address-cells = <1>;
3477 + #size-cells = <0>;
3478 + reg = <0x48>;
3479 + };
3480 + };
3481 + };
3482 +
3483 + fragment@1 {
3484 + target-path = "i2c_arm/ads1015";
3485 + __overlay__ {
3486 + #address-cells = <1>;
3487 + #size-cells = <0>;
3488 + channel_a: channel_a {
3489 + reg = <4>;
3490 + ti,gain = <2>;
3491 + ti,datarate = <4>;
3492 + };
3493 + };
3494 + };
3495 +
3496 + fragment@2 {
3497 + target-path = "i2c_arm/ads1015";
3498 + __dormant__ {
3499 + #address-cells = <1>;
3500 + #size-cells = <0>;
3501 + channel_b: channel_b {
3502 + reg = <5>;
3503 + ti,gain = <2>;
3504 + ti,datarate = <4>;
3505 + };
3506 + };
3507 + };
3508 +
3509 + fragment@3 {
3510 + target-path = "i2c_arm/ads1015";
3511 + __dormant__ {
3512 + #address-cells = <1>;
3513 + #size-cells = <0>;
3514 + channel_c: channel_c {
3515 + reg = <6>;
3516 + ti,gain = <2>;
3517 + ti,datarate = <4>;
3518 + };
3519 + };
3520 + };
3521 +
3522 + fragment@4 {
3523 + target-path = "i2c_arm/ads1015";
3524 + __dormant__ {
3525 + #address-cells = <1>;
3526 + #size-cells = <0>;
3527 + channel_d: channel_d {
3528 + reg = <7>;
3529 + ti,gain = <2>;
3530 + ti,datarate = <4>;
3531 + };
3532 + };
3533 + };
3534 +
3535 + __overrides__ {
3536 + addr = <&ads1015>,"reg:0";
3537 + cha_enable = <0>,"=1";
3538 + cha_cfg = <&channel_a>,"reg:0";
3539 + cha_gain = <&channel_a>,"ti,gain:0";
3540 + cha_datarate = <&channel_a>,"ti,datarate:0";
3541 + chb_enable = <0>,"=2";
3542 + chb_cfg = <&channel_b>,"reg:0";
3543 + chb_gain = <&channel_b>,"ti,gain:0";
3544 + chb_datarate = <&channel_b>,"ti,datarate:0";
3545 + chc_enable = <0>,"=3";
3546 + chc_cfg = <&channel_c>,"reg:0";
3547 + chc_gain = <&channel_c>,"ti,gain:0";
3548 + chc_datarate = <&channel_c>,"ti,datarate:0";
3549 + chd_enable = <0>,"=4";
3550 + chd_cfg = <&channel_d>,"reg:0";
3551 + chd_gain = <&channel_d>,"ti,gain:0";
3552 + chd_datarate = <&channel_d>,"ti,datarate:0";
3553 + };
3554 +
3555 +};
3556 --- /dev/null
3557 +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
3558 @@ -0,0 +1,89 @@
3559 +/*
3560 + * Generic Device Tree overlay for the ADS7846 touch controller
3561 + *
3562 + */
3563 +
3564 +/dts-v1/;
3565 +/plugin/;
3566 +
3567 +/ {
3568 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
3569 +
3570 + fragment@0 {
3571 + target = <&spi0>;
3572 + __overlay__ {
3573 + status = "okay";
3574 + };
3575 + };
3576 +
3577 + fragment@1 {
3578 + target = <&spidev0>;
3579 + __overlay__ {
3580 + status = "disabled";
3581 + };
3582 + };
3583 +
3584 + fragment@2 {
3585 + target = <&spidev1>;
3586 + __overlay__ {
3587 + status = "disabled";
3588 + };
3589 + };
3590 +
3591 + fragment@3 {
3592 + target = <&gpio>;
3593 + __overlay__ {
3594 + ads7846_pins: ads7846_pins {
3595 + brcm,pins = <255>; /* illegal default value */
3596 + brcm,function = <0>; /* in */
3597 + brcm,pull = <0>; /* none */
3598 + };
3599 + };
3600 + };
3601 +
3602 + fragment@4 {
3603 + target = <&spi0>;
3604 + __overlay__ {
3605 + /* needed to avoid dtc warning */
3606 + #address-cells = <1>;
3607 + #size-cells = <0>;
3608 +
3609 + ads7846: ads7846@1 {
3610 + compatible = "ti,ads7846";
3611 + reg = <1>;
3612 + pinctrl-names = "default";
3613 + pinctrl-0 = <&ads7846_pins>;
3614 +
3615 + spi-max-frequency = <2000000>;
3616 + interrupts = <255 2>; /* high-to-low edge triggered */
3617 + interrupt-parent = <&gpio>;
3618 + pendown-gpio = <&gpio 255 0>;
3619 +
3620 + /* driver defaults */
3621 + ti,x-min = /bits/ 16 <0>;
3622 + ti,y-min = /bits/ 16 <0>;
3623 + ti,x-max = /bits/ 16 <0x0FFF>;
3624 + ti,y-max = /bits/ 16 <0x0FFF>;
3625 + ti,pressure-min = /bits/ 16 <0>;
3626 + ti,pressure-max = /bits/ 16 <0xFFFF>;
3627 + ti,x-plate-ohms = /bits/ 16 <400>;
3628 + };
3629 + };
3630 + };
3631 + __overrides__ {
3632 + cs = <&ads7846>,"reg:0";
3633 + speed = <&ads7846>,"spi-max-frequency:0";
3634 + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
3635 + <&ads7846>,"interrupts:0",
3636 + <&ads7846>,"pendown-gpio:4";
3637 + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
3638 + swapxy = <&ads7846>,"ti,swap-xy?";
3639 + xmin = <&ads7846>,"ti,x-min;0";
3640 + ymin = <&ads7846>,"ti,y-min;0";
3641 + xmax = <&ads7846>,"ti,x-max;0";
3642 + ymax = <&ads7846>,"ti,y-max;0";
3643 + pmin = <&ads7846>,"ti,pressure-min;0";
3644 + pmax = <&ads7846>,"ti,pressure-max;0";
3645 + xohms = <&ads7846>,"ti,x-plate-ohms;0";
3646 + };
3647 +};
3648 --- /dev/null
3649 +++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
3650 @@ -0,0 +1,46 @@
3651 +// Definitions for Digital Dreamtime Akkordion using IQaudIO DAC+ or DACZero
3652 +/dts-v1/;
3653 +/plugin/;
3654 +
3655 +/ {
3656 + compatible = "brcm,bcm2708";
3657 +
3658 + fragment@0 {
3659 + target = <&i2s>;
3660 + __overlay__ {
3661 + status = "okay";
3662 + };
3663 + };
3664 +
3665 + fragment@1 {
3666 + target = <&i2c1>;
3667 + __overlay__ {
3668 + #address-cells = <1>;
3669 + #size-cells = <0>;
3670 + status = "okay";
3671 +
3672 + pcm5122@4c {
3673 + #sound-dai-cells = <0>;
3674 + compatible = "ti,pcm5122";
3675 + reg = <0x4c>;
3676 + status = "okay";
3677 + };
3678 + };
3679 + };
3680 +
3681 + fragment@2 {
3682 + target = <&sound>;
3683 + frag2: __overlay__ {
3684 + compatible = "iqaudio,iqaudio-dac";
3685 + card_name = "Akkordion";
3686 + dai_name = "IQaudIO DAC";
3687 + dai_stream_name = "IQaudIO DAC HiFi";
3688 + i2s-controller = <&i2s>;
3689 + status = "okay";
3690 + };
3691 + };
3692 +
3693 + __overrides__ {
3694 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
3695 + };
3696 +};
3697 --- /dev/null
3698 +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
3699 @@ -0,0 +1,54 @@
3700 +/*
3701 + * Definitions for Allo Piano DAC (2.0/2.1) boards
3702 + *
3703 + * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo
3704 + * (left/right) and the other provides a subwoofer output, using DSP on the
3705 + * chip for digital high/low pass crossover.
3706 + * The initial support for this hardware, that doesn't require any codec driver
3707 + * modifications, uses only one DAC chip for stereo (left/right) output, the
3708 + * chip with 0x4c slave address. The other chip at 0x4d is currently ignored!
3709 + */
3710 +
3711 +/dts-v1/;
3712 +/plugin/;
3713 +
3714 +/ {
3715 + compatible = "brcm,bcm2708";
3716 +
3717 + fragment@0 {
3718 + target = <&i2s>;
3719 + __overlay__ {
3720 + status = "okay";
3721 + };
3722 + };
3723 +
3724 + fragment@1 {
3725 + target = <&i2c1>;
3726 + __overlay__ {
3727 + #address-cells = <1>;
3728 + #size-cells = <0>;
3729 + status = "okay";
3730 +
3731 + pcm5142@4c {
3732 + #sound-dai-cells = <0>;
3733 + compatible = "ti,pcm5142";
3734 + reg = <0x4c>;
3735 + status = "okay";
3736 + };
3737 + };
3738 + };
3739 +
3740 + fragment@2 {
3741 + target = <&sound>;
3742 + piano_dac: __overlay__ {
3743 + compatible = "allo,piano-dac";
3744 + i2s-controller = <&i2s>;
3745 + status = "okay";
3746 + };
3747 + };
3748 +
3749 + __overrides__ {
3750 + 24db_digital_gain =
3751 + <&piano_dac>,"allo,24db_digital_gain?";
3752 + };
3753 +};
3754 --- /dev/null
3755 +++ b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
3756 @@ -0,0 +1,57 @@
3757 +/dts-v1/;
3758 +/plugin/;
3759 +
3760 +/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */
3761 +
3762 +/ {
3763 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
3764 +
3765 + fragment@0 {
3766 + target = <&spi0>;
3767 + __overlay__ {
3768 + #address-cells = <1>;
3769 + #size-cells = <0>;
3770 +
3771 + status = "okay";
3772 +
3773 + lowpan0: at86rf233@0 {
3774 + compatible = "atmel,at86rf233";
3775 + reg = <0>;
3776 + interrupt-parent = <&gpio>;
3777 + interrupts = <23 4>; /* active high */
3778 + reset-gpio = <&gpio 24 1>;
3779 + sleep-gpio = <&gpio 25 1>;
3780 + spi-max-frequency = <3000000>;
3781 + xtal-trim = /bits/ 8 <0xf>;
3782 + };
3783 + };
3784 + };
3785 +
3786 + fragment@1 {
3787 + target = <&spidev0>;
3788 + __overlay__ {
3789 + status = "disabled";
3790 + };
3791 + };
3792 +
3793 + fragment@2 {
3794 + target = <&gpio>;
3795 + __overlay__ {
3796 + lowpan0_pins: lowpan0_pins {
3797 + brcm,pins = <23 24 25>;
3798 + brcm,function = <0 1 1>; /* in out out */
3799 + };
3800 + };
3801 + };
3802 +
3803 + __overrides__ {
3804 + interrupt = <&lowpan0>, "interrupts:0",
3805 + <&lowpan0_pins>, "brcm,pins:0";
3806 + reset = <&lowpan0>, "reset-gpio:4",
3807 + <&lowpan0_pins>, "brcm,pins:4";
3808 + sleep = <&lowpan0>, "sleep-gpio:4",
3809 + <&lowpan0_pins>, "brcm,pins:8";
3810 + speed = <&lowpan0>, "spi-max-frequency:0";
3811 + trim = <&lowpan0>, "xtal-trim.0";
3812 + };
3813 +};
3814 --- /dev/null
3815 +++ b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
3816 @@ -0,0 +1,39 @@
3817 +// Definitions for audioinjector.net audio add on soundcard
3818 +/dts-v1/;
3819 +/plugin/;
3820 +
3821 +/ {
3822 + compatible = "brcm,bcm2708";
3823 +
3824 + fragment@0 {
3825 + target = <&i2s>;
3826 + __overlay__ {
3827 + status = "okay";
3828 + };
3829 + };
3830 +
3831 + fragment@1 {
3832 + target = <&i2c1>;
3833 + __overlay__ {
3834 + #address-cells = <1>;
3835 + #size-cells = <0>;
3836 + status = "okay";
3837 +
3838 + wm8731@1a {
3839 + #sound-dai-cells = <0>;
3840 + compatible = "wlf,wm8731";
3841 + reg = <0x1a>;
3842 + status = "okay";
3843 + };
3844 + };
3845 + };
3846 +
3847 + fragment@2 {
3848 + target = <&sound>;
3849 + __overlay__ {
3850 + compatible = "ai,audioinjector-pi-soundcard";
3851 + i2s-controller = <&i2s>;
3852 + status = "okay";
3853 + };
3854 + };
3855 +};
3856 --- /dev/null
3857 +++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
3858 @@ -0,0 +1,19 @@
3859 +/dts-v1/;
3860 +/plugin/;
3861 +
3862 +/ {
3863 + compatible = "brcm,bcm2708";
3864 +
3865 + fragment@0 {
3866 + target = <&audio_pins>;
3867 + frag0: __overlay__ {
3868 + brcm,pins = < 12 13 >;
3869 + brcm,function = < 4 >; /* alt0 alt0 */
3870 + };
3871 + };
3872 +
3873 + __overrides__ {
3874 + swap_lr = <&frag0>, "swap_lr?";
3875 + enable_jack = <&frag0>, "enable_jack?";
3876 + };
3877 +};
3878 --- /dev/null
3879 +++ b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
3880 @@ -0,0 +1,23 @@
3881 +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec
3882 +/dts-v1/;
3883 +/plugin/;
3884 +
3885 +/ {
3886 + compatible = "brcm,bcm2708";
3887 +
3888 + fragment@0 {
3889 + target = <&i2c_arm>;
3890 + __overlay__ {
3891 + #address-cells = <1>;
3892 + #size-cells = <0>;
3893 + status = "okay";
3894 +
3895 + bmp085@77 {
3896 + compatible = "bosch,bmp085";
3897 + reg = <0x77>;
3898 + default-oversampling = <3>;
3899 + status = "okay";
3900 + };
3901 + };
3902 + };
3903 +};
3904 --- /dev/null
3905 +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
3906 @@ -0,0 +1,39 @@
3907 +/*
3908 + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
3909 + */
3910 +/dts-v1/;
3911 +/plugin/;
3912 +
3913 +/ {
3914 + compatible = "brcm,bcm2708";
3915 +
3916 + fragment@0 {
3917 + target-path = "/";
3918 + __overlay__ {
3919 +
3920 + dht11: dht11@0 {
3921 + compatible = "dht11";
3922 + pinctrl-names = "default";
3923 + pinctrl-0 = <&dht11_pins>;
3924 + gpios = <&gpio 4 0>;
3925 + status = "okay";
3926 + };
3927 + };
3928 + };
3929 +
3930 + fragment@1 {
3931 + target = <&gpio>;
3932 + __overlay__ {
3933 + dht11_pins: dht11_pins {
3934 + brcm,pins = <4>;
3935 + brcm,function = <0>; // in
3936 + brcm,pull = <0>; // off
3937 + };
3938 + };
3939 + };
3940 +
3941 + __overrides__ {
3942 + gpiopin = <&dht11_pins>,"brcm,pins:0",
3943 + <&dht11>,"gpios:4";
3944 + };
3945 +};
3946 --- /dev/null
3947 +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
3948 @@ -0,0 +1,39 @@
3949 +// Definitions for Dion Audio LOCO DAC-AMP
3950 +
3951 +/*
3952 + * PCM5242 DAC (in hardware mode) and TPA3118 AMP.
3953 + */
3954 +
3955 +/dts-v1/;
3956 +/plugin/;
3957 +
3958 +/ {
3959 + compatible = "brcm,bcm2708";
3960 +
3961 + fragment@0 {
3962 + target = <&i2s>;
3963 + __overlay__ {
3964 + status = "okay";
3965 + };
3966 + };
3967 +
3968 + fragment@1 {
3969 + target-path = "/";
3970 + __overlay__ {
3971 + pcm5102a-codec {
3972 + #sound-dai-cells = <0>;
3973 + compatible = "ti,pcm5102a";
3974 + status = "okay";
3975 + };
3976 + };
3977 + };
3978 +
3979 + fragment@2 {
3980 + target = <&sound>;
3981 + __overlay__ {
3982 + compatible = "dionaudio,loco-pcm5242-tpa3118";
3983 + i2s-controller = <&i2s>;
3984 + status = "okay";
3985 + };
3986 + };
3987 +};
3988 --- /dev/null
3989 +++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
3990 @@ -0,0 +1,31 @@
3991 +/dts-v1/;
3992 +/plugin/;
3993 +
3994 +/{
3995 + compatible = "brcm,bcm2708";
3996 +
3997 + // There is no DPI driver module, but we need a platform device
3998 + // node (that doesn't already use pinctrl) to hang the pinctrl
3999 + // reference on - leds will do
4000 +
4001 + fragment@0 {
4002 + target = <&leds>;
4003 + __overlay__ {
4004 + pinctrl-names = "default";
4005 + pinctrl-0 = <&dpi18_pins>;
4006 + };
4007 + };
4008 +
4009 + fragment@1 {
4010 + target = <&gpio>;
4011 + __overlay__ {
4012 + dpi18_pins: dpi18_pins {
4013 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
4014 + 12 13 14 15 16 17 18 19 20
4015 + 21>;
4016 + brcm,function = <6>; /* alt2 */
4017 + brcm,pull = <0>; /* no pull */
4018 + };
4019 + };
4020 + };
4021 +};
4022 --- /dev/null
4023 +++ b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
4024 @@ -0,0 +1,31 @@
4025 +/dts-v1/;
4026 +/plugin/;
4027 +
4028 +/{
4029 + compatible = "brcm,bcm2708";
4030 +
4031 + // There is no DPI driver module, but we need a platform device
4032 + // node (that doesn't already use pinctrl) to hang the pinctrl
4033 + // reference on - leds will do
4034 +
4035 + fragment@0 {
4036 + target = <&leds>;
4037 + __overlay__ {
4038 + pinctrl-names = "default";
4039 + pinctrl-0 = <&dpi24_pins>;
4040 + };
4041 + };
4042 +
4043 + fragment@1 {
4044 + target = <&gpio>;
4045 + __overlay__ {
4046 + dpi24_pins: dpi24_pins {
4047 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
4048 + 12 13 14 15 16 17 18 19 20
4049 + 21 22 23 24 25 26 27>;
4050 + brcm,function = <6>; /* alt2 */
4051 + brcm,pull = <0>; /* no pull */
4052 + };
4053 + };
4054 + };
4055 +};
4056 --- /dev/null
4057 +++ b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
4058 @@ -0,0 +1,20 @@
4059 +/dts-v1/;
4060 +/plugin/;
4061 +
4062 +/{
4063 + compatible = "brcm,bcm2708";
4064 +
4065 + fragment@0 {
4066 + target = <&usb>;
4067 + #address-cells = <1>;
4068 + #size-cells = <1>;
4069 + __overlay__ {
4070 + compatible = "brcm,bcm2708-usb";
4071 + reg = <0x7e980000 0x10000>,
4072 + <0x7e006000 0x1000>;
4073 + interrupts = <2 0>,
4074 + <1 9>;
4075 + status = "okay";
4076 + };
4077 + };
4078 +};
4079 --- /dev/null
4080 +++ b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
4081 @@ -0,0 +1,29 @@
4082 +/dts-v1/;
4083 +/plugin/;
4084 +
4085 +/{
4086 + compatible = "brcm,bcm2708";
4087 +
4088 + fragment@0 {
4089 + target = <&usb>;
4090 + #address-cells = <1>;
4091 + #size-cells = <1>;
4092 + dwc2_usb: __overlay__ {
4093 + compatible = "brcm,bcm2835-usb";
4094 + reg = <0x7e980000 0x10000>;
4095 + interrupts = <1 9>;
4096 + dr_mode = "otg";
4097 + g-np-tx-fifo-size = <32>;
4098 + g-rx-fifo-size = <256>;
4099 + g-tx-fifo-size = <256 128 128 64 64 64 32>;
4100 + status = "okay";
4101 + };
4102 + };
4103 +
4104 + __overrides__ {
4105 + dr_mode = <&dwc2_usb>, "dr_mode";
4106 + g-np-tx-fifo-size = <&dwc2_usb>,"g-np-tx-fifo-size:0";
4107 + g-rx-fifo-size = <&dwc2_usb>,"g-rx-fifo-size:0";
4108 + g-tx-fifo-size = <&dwc2_usb>,"g-tx-fifo-size:0";
4109 + };
4110 +};
4111 --- /dev/null
4112 +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
4113 @@ -0,0 +1,53 @@
4114 +// Overlay for the Microchip ENC28J60 Ethernet Controller
4115 +/dts-v1/;
4116 +/plugin/;
4117 +
4118 +/ {
4119 + compatible = "brcm,bcm2708";
4120 +
4121 + fragment@0 {
4122 + target = <&spi0>;
4123 + __overlay__ {
4124 + /* needed to avoid dtc warning */
4125 + #address-cells = <1>;
4126 + #size-cells = <0>;
4127 +
4128 + status = "okay";
4129 +
4130 + eth1: enc28j60@0{
4131 + compatible = "microchip,enc28j60";
4132 + reg = <0>; /* CE0 */
4133 + pinctrl-names = "default";
4134 + pinctrl-0 = <&eth1_pins>;
4135 + interrupt-parent = <&gpio>;
4136 + interrupts = <25 0x2>; /* falling edge */
4137 + spi-max-frequency = <12000000>;
4138 + status = "okay";
4139 + };
4140 + };
4141 + };
4142 +
4143 + fragment@1 {
4144 + target = <&spidev0>;
4145 + __overlay__ {
4146 + status = "disabled";
4147 + };
4148 + };
4149 +
4150 + fragment@2 {
4151 + target = <&gpio>;
4152 + __overlay__ {
4153 + eth1_pins: eth1_pins {
4154 + brcm,pins = <25>;
4155 + brcm,function = <0>; /* in */
4156 + brcm,pull = <0>; /* none */
4157 + };
4158 + };
4159 + };
4160 +
4161 + __overrides__ {
4162 + int_pin = <&eth1>, "interrupts:0",
4163 + <&eth1_pins>, "brcm,pins:0";
4164 + speed = <&eth1>, "spi-max-frequency:0";
4165 + };
4166 +};
4167 --- /dev/null
4168 +++ b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
4169 @@ -0,0 +1,47 @@
4170 +// Overlay for the Microchip ENC28J60 Ethernet Controller - SPI2 Compute Module
4171 +// Interrupt pin: 39
4172 +/dts-v1/;
4173 +/plugin/;
4174 +
4175 +/ {
4176 + compatible = "brcm,bcm2708";
4177 +
4178 + fragment@0 {
4179 + target = <&spi2>;
4180 + __overlay__ {
4181 + /* needed to avoid dtc warning */
4182 + #address-cells = <1>;
4183 + #size-cells = <0>;
4184 +
4185 + status = "okay";
4186 +
4187 + eth1: enc28j60@0{
4188 + compatible = "microchip,enc28j60";
4189 + reg = <0>; /* CE0 */
4190 + pinctrl-names = "default";
4191 + pinctrl-0 = <&eth1_pins>;
4192 + interrupt-parent = <&gpio>;
4193 + interrupts = <39 0x2>; /* falling edge */
4194 + spi-max-frequency = <12000000>;
4195 + status = "okay";
4196 + };
4197 + };
4198 + };
4199 +
4200 + fragment@1 {
4201 + target = <&gpio>;
4202 + __overlay__ {
4203 + eth1_pins: eth1_pins {
4204 + brcm,pins = <39>;
4205 + brcm,function = <0>; /* in */
4206 + brcm,pull = <0>; /* none */
4207 + };
4208 + };
4209 + };
4210 +
4211 + __overrides__ {
4212 + int_pin = <&eth1>, "interrupts:0",
4213 + <&eth1_pins>, "brcm,pins:0";
4214 + speed = <&eth1>, "spi-max-frequency:0";
4215 + };
4216 +};
4217 --- /dev/null
4218 +++ b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
4219 @@ -0,0 +1,44 @@
4220 +// Definitions for ir-gpio module
4221 +/dts-v1/;
4222 +/plugin/;
4223 +
4224 +/ {
4225 + compatible = "brcm,bcm2708";
4226 +
4227 + fragment@0 {
4228 + target-path = "/";
4229 + __overlay__ {
4230 + gpio_ir: ir-receiver {
4231 + compatible = "gpio-ir-receiver";
4232 +
4233 + // pin number, high or low
4234 + gpios = <&gpio 18 1>;
4235 +
4236 + // parameter for keymap name
4237 + linux,rc-map-name = "rc-rc6-mce";
4238 +
4239 + status = "okay";
4240 + };
4241 + };
4242 + };
4243 +
4244 + fragment@1 {
4245 + target = <&gpio>;
4246 + __overlay__ {
4247 + gpio_ir_pins: gpio_ir_pins {
4248 + brcm,pins = <18>; // pin 18
4249 + brcm,function = <0>; // in
4250 + brcm,pull = <1>; // down
4251 + };
4252 + };
4253 + };
4254 +
4255 + __overrides__ {
4256 + // parameters
4257 + gpio_pin = <&gpio_ir>,"gpios:4",
4258 + <&gpio_ir_pins>,"brcm,pins:0"; // pin number
4259 + gpio_pull = <&gpio_ir_pins>,"brcm,pull:0"; // pull-up/down state
4260 +
4261 + rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
4262 + };
4263 +};
4264 --- /dev/null
4265 +++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
4266 @@ -0,0 +1,34 @@
4267 +// Definitions for gpio-poweroff module
4268 +/dts-v1/;
4269 +/plugin/;
4270 +
4271 +/ {
4272 + compatible = "brcm,bcm2708";
4273 +
4274 + fragment@0 {
4275 + target-path = "/";
4276 + __overlay__ {
4277 + power_ctrl: power_ctrl {
4278 + compatible = "gpio-poweroff";
4279 + gpios = <&gpio 26 0>;
4280 + force;
4281 + };
4282 + };
4283 + };
4284 +
4285 + fragment@1 {
4286 + target = <&gpio>;
4287 + __overlay__ {
4288 + power_ctrl_pins: power_ctrl_pins {
4289 + brcm,pins = <26>;
4290 + brcm,function = <1>; // out
4291 + };
4292 + };
4293 + };
4294 +
4295 + __overrides__ {
4296 + gpiopin = <&power_ctrl>,"gpios:4",
4297 + <&power_ctrl_pins>,"brcm,pins:0";
4298 + active_low = <&power_ctrl>,"gpios:8";
4299 + };
4300 +};
4301 --- /dev/null
4302 +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
4303 @@ -0,0 +1,39 @@
4304 +// Definitions for HiFiBerry Amp/Amp+
4305 +/dts-v1/;
4306 +/plugin/;
4307 +
4308 +/ {
4309 + compatible = "brcm,bcm2708";
4310 +
4311 + fragment@0 {
4312 + target = <&i2s>;
4313 + __overlay__ {
4314 + status = "okay";
4315 + };
4316 + };
4317 +
4318 + fragment@1 {
4319 + target = <&i2c1>;
4320 + __overlay__ {
4321 + #address-cells = <1>;
4322 + #size-cells = <0>;
4323 + status = "okay";
4324 +
4325 + tas5713@1b {
4326 + #sound-dai-cells = <0>;
4327 + compatible = "ti,tas5713";
4328 + reg = <0x1b>;
4329 + status = "okay";
4330 + };
4331 + };
4332 + };
4333 +
4334 + fragment@2 {
4335 + target = <&sound>;
4336 + __overlay__ {
4337 + compatible = "hifiberry,hifiberry-amp";
4338 + i2s-controller = <&i2s>;
4339 + status = "okay";
4340 + };
4341 + };
4342 +};
4343 --- /dev/null
4344 +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
4345 @@ -0,0 +1,34 @@
4346 +// Definitions for HiFiBerry DAC
4347 +/dts-v1/;
4348 +/plugin/;
4349 +
4350 +/ {
4351 + compatible = "brcm,bcm2708";
4352 +
4353 + fragment@0 {
4354 + target = <&i2s>;
4355 + __overlay__ {
4356 + status = "okay";
4357 + };
4358 + };
4359 +
4360 + fragment@1 {
4361 + target-path = "/";
4362 + __overlay__ {
4363 + pcm5102a-codec {
4364 + #sound-dai-cells = <0>;
4365 + compatible = "ti,pcm5102a";
4366 + status = "okay";
4367 + };
4368 + };
4369 + };
4370 +
4371 + fragment@2 {
4372 + target = <&sound>;
4373 + __overlay__ {
4374 + compatible = "hifiberry,hifiberry-dac";
4375 + i2s-controller = <&i2s>;
4376 + status = "okay";
4377 + };
4378 + };
4379 +};
4380 --- /dev/null
4381 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
4382 @@ -0,0 +1,56 @@
4383 +// Definitions for HiFiBerry DAC+
4384 +/dts-v1/;
4385 +/plugin/;
4386 +
4387 +/ {
4388 + compatible = "brcm,bcm2708";
4389 +
4390 + fragment@0 {
4391 + target-path = "/clocks";
4392 + __overlay__ {
4393 + dacpro_osc: dacpro_osc {
4394 + compatible = "hifiberry,dacpro-clk";
4395 + #clock-cells = <0>;
4396 + };
4397 + };
4398 + };
4399 +
4400 + fragment@1 {
4401 + target = <&i2s>;
4402 + __overlay__ {
4403 + status = "okay";
4404 + };
4405 + };
4406 +
4407 + fragment@2 {
4408 + target = <&i2c1>;
4409 + __overlay__ {
4410 + #address-cells = <1>;
4411 + #size-cells = <0>;
4412 + status = "okay";
4413 +
4414 + pcm5122@4d {
4415 + #sound-dai-cells = <0>;
4416 + compatible = "ti,pcm5122";
4417 + reg = <0x4d>;
4418 + clocks = <&dacpro_osc>;
4419 + status = "okay";
4420 + };
4421 + };
4422 + };
4423 +
4424 + fragment@3 {
4425 + target = <&sound>;
4426 + hifiberry_dacplus: __overlay__ {
4427 + compatible = "hifiberry,hifiberry-dacplus";
4428 + i2s-controller = <&i2s>;
4429 + status = "okay";
4430 + };
4431 + };
4432 +
4433 + __overrides__ {
4434 + 24db_digital_gain =
4435 + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
4436 + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
4437 + };
4438 +};
4439 --- /dev/null
4440 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
4441 @@ -0,0 +1,39 @@
4442 +// Definitions for HiFiBerry Digi
4443 +/dts-v1/;
4444 +/plugin/;
4445 +
4446 +/ {
4447 + compatible = "brcm,bcm2708";
4448 +
4449 + fragment@0 {
4450 + target = <&i2s>;
4451 + __overlay__ {
4452 + status = "okay";
4453 + };
4454 + };
4455 +
4456 + fragment@1 {
4457 + target = <&i2c1>;
4458 + __overlay__ {
4459 + #address-cells = <1>;
4460 + #size-cells = <0>;
4461 + status = "okay";
4462 +
4463 + wm8804@3b {
4464 + #sound-dai-cells = <0>;
4465 + compatible = "wlf,wm8804";
4466 + reg = <0x3b>;
4467 + status = "okay";
4468 + };
4469 + };
4470 + };
4471 +
4472 + fragment@2 {
4473 + target = <&sound>;
4474 + __overlay__ {
4475 + compatible = "hifiberry,hifiberry-digi";
4476 + i2s-controller = <&i2s>;
4477 + status = "okay";
4478 + };
4479 + };
4480 +};
4481 --- /dev/null
4482 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
4483 @@ -0,0 +1,41 @@
4484 +// Definitions for HiFiBerry Digi Pro
4485 +/dts-v1/;
4486 +/plugin/;
4487 +
4488 +/ {
4489 + compatible = "brcm,bcm2708";
4490 +
4491 + fragment@0 {
4492 + target = <&i2s>;
4493 + __overlay__ {
4494 + status = "okay";
4495 + };
4496 + };
4497 +
4498 + fragment@1 {
4499 + target = <&i2c1>;
4500 + __overlay__ {
4501 + #address-cells = <1>;
4502 + #size-cells = <0>;
4503 + status = "okay";
4504 +
4505 + wm8804@3b {
4506 + #sound-dai-cells = <0>;
4507 + compatible = "wlf,wm8804";
4508 + reg = <0x3b>;
4509 + status = "okay";
4510 + };
4511 + };
4512 + };
4513 +
4514 + fragment@2 {
4515 + target = <&sound>;
4516 + __overlay__ {
4517 + compatible = "hifiberry,hifiberry-digi";
4518 + i2s-controller = <&i2s>;
4519 + status = "okay";
4520 + clock44-gpio = <&gpio 5 0>;
4521 + clock48-gpio = <&gpio 6 0>;
4522 + };
4523 + };
4524 +};
4525 --- /dev/null
4526 +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
4527 @@ -0,0 +1,93 @@
4528 +/*
4529 + * Device Tree overlay for HY28A display
4530 + *
4531 + */
4532 +
4533 +/dts-v1/;
4534 +/plugin/;
4535 +
4536 +/ {
4537 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
4538 +
4539 + fragment@0 {
4540 + target = <&spi0>;
4541 + __overlay__ {
4542 + status = "okay";
4543 + };
4544 + };
4545 +
4546 + fragment@1 {
4547 + target = <&spidev0>;
4548 + __overlay__ {
4549 + status = "disabled";
4550 + };
4551 + };
4552 +
4553 + fragment@2 {
4554 + target = <&spidev1>;
4555 + __overlay__ {
4556 + status = "disabled";
4557 + };
4558 + };
4559 +
4560 + fragment@3 {
4561 + target = <&gpio>;
4562 + __overlay__ {
4563 + hy28a_pins: hy28a_pins {
4564 + brcm,pins = <17 25 18>;
4565 + brcm,function = <0 1 1>; /* in out out */
4566 + };
4567 + };
4568 + };
4569 +
4570 + fragment@4 {
4571 + target = <&spi0>;
4572 + __overlay__ {
4573 + /* needed to avoid dtc warning */
4574 + #address-cells = <1>;
4575 + #size-cells = <0>;
4576 +
4577 + hy28a: hy28a@0{
4578 + compatible = "ilitek,ili9320";
4579 + reg = <0>;
4580 + pinctrl-names = "default";
4581 + pinctrl-0 = <&hy28a_pins>;
4582 +
4583 + spi-max-frequency = <32000000>;
4584 + spi-cpol;
4585 + spi-cpha;
4586 + rotate = <270>;
4587 + bgr;
4588 + fps = <50>;
4589 + buswidth = <8>;
4590 + startbyte = <0x70>;
4591 + reset-gpios = <&gpio 25 0>;
4592 + led-gpios = <&gpio 18 1>;
4593 + debug = <0>;
4594 + };
4595 +
4596 + hy28a_ts: hy28a-ts@1 {
4597 + compatible = "ti,ads7846";
4598 + reg = <1>;
4599 +
4600 + spi-max-frequency = <2000000>;
4601 + interrupts = <17 2>; /* high-to-low edge triggered */
4602 + interrupt-parent = <&gpio>;
4603 + pendown-gpio = <&gpio 17 0>;
4604 + ti,x-plate-ohms = /bits/ 16 <100>;
4605 + ti,pressure-max = /bits/ 16 <255>;
4606 + };
4607 + };
4608 + };
4609 + __overrides__ {
4610 + speed = <&hy28a>,"spi-max-frequency:0";
4611 + rotate = <&hy28a>,"rotate:0";
4612 + fps = <&hy28a>,"fps:0";
4613 + debug = <&hy28a>,"debug:0";
4614 + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
4615 + resetgpio = <&hy28a>,"reset-gpios:4",
4616 + <&hy28a_pins>, "brcm,pins:1";
4617 + ledgpio = <&hy28a>,"led-gpios:4",
4618 + <&hy28a_pins>, "brcm,pins:2";
4619 + };
4620 +};
4621 --- /dev/null
4622 +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
4623 @@ -0,0 +1,148 @@
4624 +/*
4625 + * Device Tree overlay for HY28b display shield by Texy
4626 + *
4627 + */
4628 +
4629 +/dts-v1/;
4630 +/plugin/;
4631 +
4632 +/ {
4633 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
4634 +
4635 + fragment@0 {
4636 + target = <&spi0>;
4637 + __overlay__ {
4638 + status = "okay";
4639 + };
4640 + };
4641 +
4642 + fragment@1 {
4643 + target = <&spidev0>;
4644 + __overlay__ {
4645 + status = "disabled";
4646 + };
4647 + };
4648 +
4649 + fragment@2 {
4650 + target = <&spidev1>;
4651 + __overlay__ {
4652 + status = "disabled";
4653 + };
4654 + };
4655 +
4656 + fragment@3 {
4657 + target = <&gpio>;
4658 + __overlay__ {
4659 + hy28b_pins: hy28b_pins {
4660 + brcm,pins = <17 25 18>;
4661 + brcm,function = <0 1 1>; /* in out out */
4662 + };
4663 + };
4664 + };
4665 +
4666 + fragment@4 {
4667 + target = <&spi0>;
4668 + __overlay__ {
4669 + /* needed to avoid dtc warning */
4670 + #address-cells = <1>;
4671 + #size-cells = <0>;
4672 +
4673 + hy28b: hy28b@0{
4674 + compatible = "ilitek,ili9325";
4675 + reg = <0>;
4676 + pinctrl-names = "default";
4677 + pinctrl-0 = <&hy28b_pins>;
4678 +
4679 + spi-max-frequency = <48000000>;
4680 + spi-cpol;
4681 + spi-cpha;
4682 + rotate = <270>;
4683 + bgr;
4684 + fps = <50>;
4685 + buswidth = <8>;
4686 + startbyte = <0x70>;
4687 + reset-gpios = <&gpio 25 0>;
4688 + led-gpios = <&gpio 18 1>;
4689 +
4690 + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
4691 +
4692 + init = <0x10000e7 0x0010
4693 + 0x1000000 0x0001
4694 + 0x1000001 0x0100
4695 + 0x1000002 0x0700
4696 + 0x1000003 0x1030
4697 + 0x1000004 0x0000
4698 + 0x1000008 0x0207
4699 + 0x1000009 0x0000
4700 + 0x100000a 0x0000
4701 + 0x100000c 0x0001
4702 + 0x100000d 0x0000
4703 + 0x100000f 0x0000
4704 + 0x1000010 0x0000
4705 + 0x1000011 0x0007
4706 + 0x1000012 0x0000
4707 + 0x1000013 0x0000
4708 + 0x2000032
4709 + 0x1000010 0x1590
4710 + 0x1000011 0x0227
4711 + 0x2000032
4712 + 0x1000012 0x009c
4713 + 0x2000032
4714 + 0x1000013 0x1900
4715 + 0x1000029 0x0023
4716 + 0x100002b 0x000e
4717 + 0x2000032
4718 + 0x1000020 0x0000
4719 + 0x1000021 0x0000
4720 + 0x2000032
4721 + 0x1000050 0x0000
4722 + 0x1000051 0x00ef
4723 + 0x1000052 0x0000
4724 + 0x1000053 0x013f
4725 + 0x1000060 0xa700
4726 + 0x1000061 0x0001
4727 + 0x100006a 0x0000
4728 + 0x1000080 0x0000
4729 + 0x1000081 0x0000
4730 + 0x1000082 0x0000
4731 + 0x1000083 0x0000
4732 + 0x1000084 0x0000
4733 + 0x1000085 0x0000
4734 + 0x1000090 0x0010
4735 + 0x1000092 0x0000
4736 + 0x1000093 0x0003
4737 + 0x1000095 0x0110
4738 + 0x1000097 0x0000
4739 + 0x1000098 0x0000
4740 + 0x1000007 0x0133
4741 + 0x1000020 0x0000
4742 + 0x1000021 0x0000
4743 + 0x2000064>;
4744 + debug = <0>;
4745 + };
4746 +
4747 + hy28b_ts: hy28b-ts@1 {
4748 + compatible = "ti,ads7846";
4749 + reg = <1>;
4750 +
4751 + spi-max-frequency = <2000000>;
4752 + interrupts = <17 2>; /* high-to-low edge triggered */
4753 + interrupt-parent = <&gpio>;
4754 + pendown-gpio = <&gpio 17 0>;
4755 + ti,x-plate-ohms = /bits/ 16 <100>;
4756 + ti,pressure-max = /bits/ 16 <255>;
4757 + };
4758 + };
4759 + };
4760 + __overrides__ {
4761 + speed = <&hy28b>,"spi-max-frequency:0";
4762 + rotate = <&hy28b>,"rotate:0";
4763 + fps = <&hy28b>,"fps:0";
4764 + debug = <&hy28b>,"debug:0";
4765 + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
4766 + resetgpio = <&hy28b>,"reset-gpios:4",
4767 + <&hy28b_pins>, "brcm,pins:1";
4768 + ledgpio = <&hy28b>,"led-gpios:4",
4769 + <&hy28b_pins>, "brcm,pins:2";
4770 + };
4771 +};
4772 --- /dev/null
4773 +++ b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
4774 @@ -0,0 +1,13 @@
4775 +/dts-v1/;
4776 +/plugin/;
4777 +
4778 +/{
4779 + compatible = "brcm,bcm2708";
4780 +
4781 + fragment@0 {
4782 + target = <&i2c_arm>;
4783 + __overlay__ {
4784 + compatible = "brcm,bcm2708-i2c";
4785 + };
4786 + };
4787 +};
4788 --- /dev/null
4789 +++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
4790 @@ -0,0 +1,43 @@
4791 +// Overlay for i2c_gpio bitbanging host bus.
4792 +/dts-v1/;
4793 +/plugin/;
4794 +
4795 +/ {
4796 + compatible = "brcm,bcm2708";
4797 +
4798 + fragment@0 {
4799 + target-path = "/";
4800 + __overlay__ {
4801 + i2c_gpio: i2c@0 {
4802 + compatible = "i2c-gpio";
4803 + gpios = <&gpio 23 0 /* sda */
4804 + &gpio 24 0 /* scl */
4805 + >;
4806 + i2c-gpio,delay-us = <2>; /* ~100 kHz */
4807 + #address-cells = <1>;
4808 + #size-cells = <0>;
4809 + };
4810 + };
4811 + };
4812 +
4813 + fragment@1 {
4814 + target-path = "/aliases";
4815 + __overlay__ {
4816 + i2c_gpio = "/i2c@0";
4817 + };
4818 + };
4819 +
4820 + fragment@2 {
4821 + target-path = "/__symbols__";
4822 + __overlay__ {
4823 + i2c_gpio = "/i2c@0";
4824 + };
4825 + };
4826 +
4827 + __overrides__ {
4828 + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
4829 + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
4830 + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
4831 + };
4832 +};
4833 +
4834 --- /dev/null
4835 +++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
4836 @@ -0,0 +1,139 @@
4837 +// Umbrella I2C Mux overlay
4838 +
4839 +/dts-v1/;
4840 +/plugin/;
4841 +
4842 +/{
4843 + compatible = "brcm,bcm2708";
4844 +
4845 + fragment@0 {
4846 + target = <&i2c_arm>;
4847 + __dormant__ {
4848 + #address-cells = <1>;
4849 + #size-cells = <0>;
4850 + status = "okay";
4851 +
4852 + pca9542: mux@70 {
4853 + compatible = "nxp,pca9542";
4854 + reg = <0x70>;
4855 + #address-cells = <1>;
4856 + #size-cells = <0>;
4857 +
4858 + i2c@0 {
4859 + #address-cells = <1>;
4860 + #size-cells = <0>;
4861 + reg = <0>;
4862 + };
4863 + i2c@1 {
4864 + #address-cells = <1>;
4865 + #size-cells = <0>;
4866 + reg = <1>;
4867 + };
4868 + };
4869 + };
4870 + };
4871 +
4872 + fragment@1 {
4873 + target = <&i2c_arm>;
4874 + __dormant__ {
4875 + #address-cells = <1>;
4876 + #size-cells = <0>;
4877 + status = "okay";
4878 +
4879 + pca9545: mux@70 {
4880 + compatible = "nxp,pca9545";
4881 + reg = <0x70>;
4882 + #address-cells = <1>;
4883 + #size-cells = <0>;
4884 +
4885 + i2c@0 {
4886 + #address-cells = <1>;
4887 + #size-cells = <0>;
4888 + reg = <0>;
4889 + };
4890 + i2c@1 {
4891 + #address-cells = <1>;
4892 + #size-cells = <0>;
4893 + reg = <1>;
4894 + };
4895 + i2c@2 {
4896 + #address-cells = <1>;
4897 + #size-cells = <0>;
4898 + reg = <2>;
4899 + };
4900 + i2c@3 {
4901 + #address-cells = <1>;
4902 + #size-cells = <0>;
4903 + reg = <3>;
4904 + };
4905 + };
4906 + };
4907 + };
4908 +
4909 + fragment@2 {
4910 + target = <&i2c_arm>;
4911 + __dormant__ {
4912 + #address-cells = <1>;
4913 + #size-cells = <0>;
4914 + status = "okay";
4915 +
4916 + pca9548: mux@70 {
4917 + compatible = "nxp,pca9548";
4918 + reg = <0x70>;
4919 + #address-cells = <1>;
4920 + #size-cells = <0>;
4921 +
4922 + i2c@0 {
4923 + #address-cells = <1>;
4924 + #size-cells = <0>;
4925 + reg = <0>;
4926 + };
4927 + i2c@1 {
4928 + #address-cells = <1>;
4929 + #size-cells = <0>;
4930 + reg = <1>;
4931 + };
4932 + i2c@2 {
4933 + #address-cells = <1>;
4934 + #size-cells = <0>;
4935 + reg = <2>;
4936 + };
4937 + i2c@3 {
4938 + #address-cells = <1>;
4939 + #size-cells = <0>;
4940 + reg = <3>;
4941 + };
4942 + i2c@4 {
4943 + #address-cells = <1>;
4944 + #size-cells = <0>;
4945 + reg = <4>;
4946 + };
4947 + i2c@5 {
4948 + #address-cells = <1>;
4949 + #size-cells = <0>;
4950 + reg = <5>;
4951 + };
4952 + i2c@6 {
4953 + #address-cells = <1>;
4954 + #size-cells = <0>;
4955 + reg = <6>;
4956 + };
4957 + i2c@7 {
4958 + #address-cells = <1>;
4959 + #size-cells = <0>;
4960 + reg = <7>;
4961 + };
4962 + };
4963 + };
4964 + };
4965 +
4966 + __overrides__ {
4967 + pca9542 = <0>, "+0";
4968 + pca9545 = <0>, "+1";
4969 + pca9548 = <0>, "+2";
4970 +
4971 + addr = <&pca9542>,"reg:0",
4972 + <&pca9545>,"reg:0",
4973 + <&pca9548>,"reg:0";
4974 + };
4975 +};
4976 --- /dev/null
4977 +++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
4978 @@ -0,0 +1,26 @@
4979 +// Definitions for NXP PCA9685A I2C PWM controller on ARM I2C bus.
4980 +/dts-v1/;
4981 +/plugin/;
4982 +
4983 +/{
4984 + compatible = "brcm,bcm2708";
4985 +
4986 + fragment@0 {
4987 + target = <&i2c_arm>;
4988 + __overlay__ {
4989 + #address-cells = <1>;
4990 + #size-cells = <0>;
4991 + status = "okay";
4992 +
4993 + pca: pca@40 {
4994 + compatible = "nxp,pca9685";
4995 + #pwm-cells = <2>;
4996 + reg = <0x40>;
4997 + status = "okay";
4998 + };
4999 + };
5000 + };
5001 + __overrides__ {
5002 + addr = <&pca>,"reg:0";
5003 + };
5004 +};
5005 --- /dev/null
5006 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
5007 @@ -0,0 +1,83 @@
5008 +// Definitions for several I2C based Real Time Clocks
5009 +/dts-v1/;
5010 +/plugin/;
5011 +
5012 +/ {
5013 + compatible = "brcm,bcm2708";
5014 +
5015 + fragment@0 {
5016 + target = <&i2c_arm>;
5017 + __overlay__ {
5018 + #address-cells = <1>;
5019 + #size-cells = <0>;
5020 + status = "okay";
5021 +
5022 + abx80x: abx80x@69 {
5023 + compatible = "abracon,abx80x";
5024 + reg = <0x69>;
5025 + abracon,tc-diode = "standard";
5026 + abracon,tc-resistor = <0>;
5027 + status = "disable";
5028 + };
5029 + ds1307: ds1307@68 {
5030 + compatible = "maxim,ds1307";
5031 + reg = <0x68>;
5032 + status = "disable";
5033 + };
5034 + ds1339: ds1339@68 {
5035 + compatible = "dallas,ds1339";
5036 + trickle-resistor-ohms = <0>;
5037 + reg = <0x68>;
5038 + status = "disable";
5039 + };
5040 + mcp7940x: mcp7940x@6f {
5041 + compatible = "microchip,mcp7940x";
5042 + reg = <0x6f>;
5043 + status = "disable";
5044 + };
5045 + mcp7941x: mcp7941x@6f {
5046 + compatible = "microchip,mcp7941x";
5047 + reg = <0x6f>;
5048 + status = "disable";
5049 + };
5050 + ds3231: ds3231@68 {
5051 + compatible = "maxim,ds3231";
5052 + reg = <0x68>;
5053 + status = "disable";
5054 + };
5055 + pcf2127: pcf2127@51 {
5056 + compatible = "nxp,pcf2127";
5057 + reg = <0x51>;
5058 + status = "disable";
5059 + };
5060 + pcf8523: pcf8523@68 {
5061 + compatible = "nxp,pcf8523";
5062 + reg = <0x68>;
5063 + status = "disable";
5064 + };
5065 + pcf8563: pcf8563@51 {
5066 + compatible = "nxp,pcf8563";
5067 + reg = <0x51>;
5068 + status = "disable";
5069 + };
5070 + };
5071 + };
5072 + __overrides__ {
5073 + abx80x = <&abx80x>,"status";
5074 + ds1307 = <&ds1307>,"status";
5075 + ds1339 = <&ds1339>,"status";
5076 + ds3231 = <&ds3231>,"status";
5077 + mcp7940x = <&mcp7940x>,"status";
5078 + mcp7941x = <&mcp7941x>,"status";
5079 + pcf2127 = <&pcf2127>,"status";
5080 + pcf8523 = <&pcf8523>,"status";
5081 + pcf8563 = <&pcf8563>,"status";
5082 + trickle-diode-type = <&abx80x>,"abracon,tc-diode";
5083 + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
5084 + <&abx80x>,"abracon,tc-resistor";
5085 + wakeup-source = <&ds1339>,"wakeup-source?",
5086 + <&ds3231>,"wakeup-source?",
5087 + <&mcp7940x>,"wakeup-source?",
5088 + <&mcp7941x>,"wakeup-source?";
5089 + };
5090 +};
5091 --- /dev/null
5092 +++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
5093 @@ -0,0 +1,34 @@
5094 +// Definitions for a few digital barometric pressure and temperature sensors
5095 +/dts-v1/;
5096 +/plugin/;
5097 +
5098 +/ {
5099 + compatible = "brcm,bcm2708";
5100 +
5101 + fragment@0 {
5102 + target = <&i2c_arm>;
5103 + __overlay__ {
5104 + #address-cells = <1>;
5105 + #size-cells = <0>;
5106 + status = "okay";
5107 +
5108 + bmp085: bmp085@77 {
5109 + compatible = "bosch,bmp085";
5110 + reg = <0x77>;
5111 + default-oversampling = <3>;
5112 + status = "disable";
5113 + };
5114 +
5115 + bmp280: bmp280@76 {
5116 + compatible = "bosch,bmp280";
5117 + reg = <0x76>;
5118 + status = "disable";
5119 + };
5120 + };
5121 + };
5122 +
5123 + __overrides__ {
5124 + bmp085 = <&bmp085>,"status";
5125 + bmp280 = <&bmp280>,"status";
5126 + };
5127 +};
5128 --- /dev/null
5129 +++ b/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
5130 @@ -0,0 +1,61 @@
5131 +/*
5132 + * Device tree overlay for i2c_bcm2708, i2c0 bus
5133 + *
5134 + * Compile:
5135 + * dtc -@ -I dts -O dtb -o i2c0-bcm2708-overlay.dtb i2c0-bcm2708-overlay.dts
5136 + */
5137 +
5138 +/dts-v1/;
5139 +/plugin/;
5140 +
5141 +/{
5142 + compatible = "brcm,bcm2708";
5143 +
5144 + fragment@0 {
5145 + target = <&i2c0>;
5146 + __overlay__ {
5147 + status = "okay";
5148 + };
5149 + };
5150 +
5151 + fragment@1 {
5152 + target = <&i2c0_pins>;
5153 + frag1: __overlay__ {
5154 + brcm,pins = <0 1>;
5155 + brcm,function = <4>; /* alt0 */
5156 + };
5157 + };
5158 +
5159 + fragment@2 {
5160 + target = <&i2c0_pins>;
5161 + __dormant__ {
5162 + brcm,pins = <28 29>;
5163 + brcm,function = <4>; /* alt0 */
5164 + };
5165 + };
5166 +
5167 + fragment@3 {
5168 + target = <&i2c0_pins>;
5169 + __dormant__ {
5170 + brcm,pins = <44 45>;
5171 + brcm,function = <5>; /* alt1 */
5172 + };
5173 + };
5174 +
5175 + fragment@4 {
5176 + target = <&i2c0_pins>;
5177 + __dormant__ {
5178 + brcm,pins = <46 47>;
5179 + brcm,function = <4>; /* alt0 */
5180 + };
5181 + };
5182 +
5183 + __overrides__ {
5184 + sda0_pin = <&frag1>,"brcm,pins:0";
5185 + scl0_pin = <&frag1>,"brcm,pins:4";
5186 + pins_0_1 = <0>,"+1-2-3-4";
5187 + pins_28_29 = <0>,"-1+2-3-4";
5188 + pins_44_45 = <0>,"-1-2+3-4";
5189 + pins_46_47 = <0>,"-1-2-3+4";
5190 + };
5191 +};
5192 --- /dev/null
5193 +++ b/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
5194 @@ -0,0 +1,37 @@
5195 +/*
5196 + * Device tree overlay for i2c_bcm2708, i2c1 bus
5197 + *
5198 + * Compile:
5199 + * dtc -@ -I dts -O dtb -o i2c1-bcm2708-overlay.dtb i2c1-bcm2708-overlay.dts
5200 + */
5201 +
5202 +/dts-v1/;
5203 +/plugin/;
5204 +
5205 +/{
5206 + compatible = "brcm,bcm2708";
5207 +
5208 + fragment@0 {
5209 + target = <&i2c1>;
5210 + __overlay__ {
5211 + pinctrl-0 = <&i2c1_pins>;
5212 + status = "okay";
5213 + };
5214 + };
5215 +
5216 + fragment@1 {
5217 + target = <&gpio>;
5218 + __overlay__ {
5219 + i2c1_pins: i2c1 {
5220 + brcm,pins = <2 3>;
5221 + brcm,function = <4>; /* alt0 */
5222 + };
5223 + };
5224 + };
5225 +
5226 + __overrides__ {
5227 + sda1_pin = <&i2c1_pins>,"brcm,pins:0";
5228 + scl1_pin = <&i2c1_pins>,"brcm,pins:4";
5229 + pin_func = <&i2c1_pins>,"brcm,function:0";
5230 + };
5231 +};
5232 --- /dev/null
5233 +++ b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
5234 @@ -0,0 +1,18 @@
5235 +/*
5236 + * Device tree overlay to move i2s to gpio 28 to 31 on CM
5237 + */
5238 +
5239 +/dts-v1/;
5240 +/plugin/;
5241 +
5242 +/ {
5243 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
5244 +
5245 + fragment@0 {
5246 + target = <&i2s_pins>;
5247 + __overlay__ {
5248 + brcm,pins = <28 29 30 31>;
5249 + brcm,function = <6>; /* alt2 */
5250 + };
5251 + };
5252 +};
5253 --- /dev/null
5254 +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
5255 @@ -0,0 +1,43 @@
5256 +// Definitions for IQaudIO DAC
5257 +/dts-v1/;
5258 +/plugin/;
5259 +
5260 +/ {
5261 + compatible = "brcm,bcm2708";
5262 +
5263 + fragment@0 {
5264 + target = <&i2s>;
5265 + __overlay__ {
5266 + status = "okay";
5267 + };
5268 + };
5269 +
5270 + fragment@1 {
5271 + target = <&i2c1>;
5272 + __overlay__ {
5273 + #address-cells = <1>;
5274 + #size-cells = <0>;
5275 + status = "okay";
5276 +
5277 + pcm5122@4c {
5278 + #sound-dai-cells = <0>;
5279 + compatible = "ti,pcm5122";
5280 + reg = <0x4c>;
5281 + status = "okay";
5282 + };
5283 + };
5284 + };
5285 +
5286 + fragment@2 {
5287 + target = <&sound>;
5288 + frag2: __overlay__ {
5289 + compatible = "iqaudio,iqaudio-dac";
5290 + i2s-controller = <&i2s>;
5291 + status = "okay";
5292 + };
5293 + };
5294 +
5295 + __overrides__ {
5296 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
5297 + };
5298 +};
5299 --- /dev/null
5300 +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
5301 @@ -0,0 +1,46 @@
5302 +// Definitions for IQaudIO DAC+
5303 +/dts-v1/;
5304 +/plugin/;
5305 +
5306 +/ {
5307 + compatible = "brcm,bcm2708";
5308 +
5309 + fragment@0 {
5310 + target = <&i2s>;
5311 + __overlay__ {
5312 + status = "okay";
5313 + };
5314 + };
5315 +
5316 + fragment@1 {
5317 + target = <&i2c1>;
5318 + __overlay__ {
5319 + #address-cells = <1>;
5320 + #size-cells = <0>;
5321 + status = "okay";
5322 +
5323 + pcm5122@4c {
5324 + #sound-dai-cells = <0>;
5325 + compatible = "ti,pcm5122";
5326 + reg = <0x4c>;
5327 + status = "okay";
5328 + };
5329 + };
5330 + };
5331 +
5332 + fragment@2 {
5333 + target = <&sound>;
5334 + iqaudio_dac: __overlay__ {
5335 + compatible = "iqaudio,iqaudio-dac";
5336 + i2s-controller = <&i2s>;
5337 + mute-gpios = <&gpio 22 0>;
5338 + status = "okay";
5339 + };
5340 + };
5341 +
5342 + __overrides__ {
5343 + 24db_digital_gain = <&iqaudio_dac>,"iqaudio,24db_digital_gain?";
5344 + auto_mute_amp = <&iqaudio_dac>,"iqaudio-dac,auto-mute-amp?";
5345 + unmute_amp = <&iqaudio_dac>,"iqaudio-dac,unmute-amp?";
5346 + };
5347 +};
5348 --- /dev/null
5349 +++ b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
5350 @@ -0,0 +1,47 @@
5351 +// Definitions for IQAudIO Digi WM8804 audio board
5352 +/dts-v1/;
5353 +/plugin/;
5354 +
5355 +/ {
5356 + compatible = "brcm,bcm2708";
5357 +
5358 + fragment@0 {
5359 + target = <&i2s>;
5360 + __overlay__ {
5361 + status = "okay";
5362 + };
5363 + };
5364 +
5365 + fragment@1 {
5366 + target = <&i2c1>;
5367 + __overlay__ {
5368 + #address-cells = <1>;
5369 + #size-cells = <0>;
5370 + status = "okay";
5371 +
5372 + wm8804@3b {
5373 + #sound-dai-cells = <0>;
5374 + compatible = "wlf,wm8804";
5375 + reg = <0x3b>;
5376 + status = "okay";
5377 + // DVDD-supply = <&reg_3v3>;
5378 + // PVDD-supply = <&reg_3v3>;
5379 + };
5380 + };
5381 + };
5382 +
5383 + fragment@2 {
5384 + target = <&sound>;
5385 + wm8804_digi: __overlay__ {
5386 + compatible = "iqaudio,wm8804-digi";
5387 + i2s-controller = <&i2s>;
5388 + status = "okay";
5389 + };
5390 + };
5391 +
5392 + __overrides__ {
5393 + card_name = <&wm8804_digi>,"wm8804-digi,card-name";
5394 + dai_name = <&wm8804_digi>,"wm8804-digi,dai-name";
5395 + dai_stream_name = <&wm8804_digi>,"wm8804-digi,dai-stream-name";
5396 + };
5397 +};
5398 --- /dev/null
5399 +++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
5400 @@ -0,0 +1,43 @@
5401 +// Definitions for JustBoom DAC
5402 +/dts-v1/;
5403 +/plugin/;
5404 +
5405 +/ {
5406 + compatible = "brcm,bcm2708";
5407 +
5408 + fragment@0 {
5409 + target = <&i2s>;
5410 + __overlay__ {
5411 + status = "okay";
5412 + };
5413 + };
5414 +
5415 + fragment@1 {
5416 + target = <&i2c1>;
5417 + __overlay__ {
5418 + #address-cells = <1>;
5419 + #size-cells = <0>;
5420 + status = "okay";
5421 +
5422 + pcm5122@4d {
5423 + #sound-dai-cells = <0>;
5424 + compatible = "ti,pcm5122";
5425 + reg = <0x4d>;
5426 + status = "okay";
5427 + };
5428 + };
5429 + };
5430 +
5431 + fragment@2 {
5432 + target = <&sound>;
5433 + frag2: __overlay__ {
5434 + compatible = "justboom,justboom-dac";
5435 + i2s-controller = <&i2s>;
5436 + status = "okay";
5437 + };
5438 + };
5439 +
5440 + __overrides__ {
5441 + 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
5442 + };
5443 +};
5444 --- /dev/null
5445 +++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
5446 @@ -0,0 +1,39 @@
5447 +// Definitions for JustBoom Digi
5448 +/dts-v1/;
5449 +/plugin/;
5450 +
5451 +/ {
5452 + compatible = "brcm,bcm2708";
5453 +
5454 + fragment@0 {
5455 + target = <&i2s>;
5456 + __overlay__ {
5457 + status = "okay";
5458 + };
5459 + };
5460 +
5461 + fragment@1 {
5462 + target = <&i2c1>;
5463 + __overlay__ {
5464 + #address-cells = <1>;
5465 + #size-cells = <0>;
5466 + status = "okay";
5467 +
5468 + wm8804@3b {
5469 + #sound-dai-cells = <0>;
5470 + compatible = "wlf,wm8804";
5471 + reg = <0x3b>;
5472 + status = "okay";
5473 + };
5474 + };
5475 + };
5476 +
5477 + fragment@2 {
5478 + target = <&sound>;
5479 + __overlay__ {
5480 + compatible = "justboom,justboom-digi";
5481 + i2s-controller = <&i2s>;
5482 + status = "okay";
5483 + };
5484 + };
5485 +};
5486 --- /dev/null
5487 +++ b/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
5488 @@ -0,0 +1,57 @@
5489 +// Definitions for lirc-rpi module
5490 +/dts-v1/;
5491 +/plugin/;
5492 +
5493 +/ {
5494 + compatible = "brcm,bcm2708";
5495 +
5496 + fragment@0 {
5497 + target-path = "/";
5498 + __overlay__ {
5499 + lirc_rpi: lirc_rpi {
5500 + compatible = "rpi,lirc-rpi";
5501 + pinctrl-names = "default";
5502 + pinctrl-0 = <&lirc_pins>;
5503 + status = "okay";
5504 +
5505 + // Override autodetection of IR receiver circuit
5506 + // (0 = active high, 1 = active low, -1 = no override )
5507 + rpi,sense = <0xffffffff>;
5508 +
5509 + // Software carrier
5510 + // (0 = off, 1 = on)
5511 + rpi,softcarrier = <1>;
5512 +
5513 + // Invert output
5514 + // (0 = off, 1 = on)
5515 + rpi,invert = <0>;
5516 +
5517 + // Enable debugging messages
5518 + // (0 = off, 1 = on)
5519 + rpi,debug = <0>;
5520 + };
5521 + };
5522 + };
5523 +
5524 + fragment@1 {
5525 + target = <&gpio>;
5526 + __overlay__ {
5527 + lirc_pins: lirc_pins {
5528 + brcm,pins = <17 18>;
5529 + brcm,function = <1 0>; // out in
5530 + brcm,pull = <0 1>; // off down
5531 + };
5532 + };
5533 + };
5534 +
5535 + __overrides__ {
5536 + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
5537 + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
5538 + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
5539 +
5540 + sense = <&lirc_rpi>,"rpi,sense:0";
5541 + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
5542 + invert = <&lirc_rpi>,"rpi,invert:0";
5543 + debug = <&lirc_rpi>,"rpi,debug:0";
5544 + };
5545 +};
5546 --- /dev/null
5547 +++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
5548 @@ -0,0 +1,54 @@
5549 +// Definitions for MCP23017 Gpio Extender from Microchip Semiconductor
5550 +
5551 +/dts-v1/;
5552 +/plugin/;
5553 +
5554 +/ {
5555 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
5556 +
5557 + fragment@0 {
5558 + target = <&i2c1>;
5559 + __overlay__ {
5560 + status = "okay";
5561 + };
5562 + };
5563 +
5564 + fragment@1 {
5565 + target = <&gpio>;
5566 + __overlay__ {
5567 + mcp23017_pins: mcp23017_pins {
5568 + brcm,pins = <4>;
5569 + brcm,function = <0>;
5570 + };
5571 + };
5572 + };
5573 +
5574 + fragment@2 {
5575 + target = <&i2c1>;
5576 + __overlay__ {
5577 + #address-cells = <1>;
5578 + #size-cells = <0>;
5579 +
5580 + mcp23017: mcp@20 {
5581 + compatible = "microchip,mcp23017";
5582 + reg = <0x20>;
5583 + gpio-controller;
5584 + #gpio-cells = <2>;
5585 + #interrupt-cells=<2>;
5586 + interrupt-parent = <&gpio>;
5587 + interrupts = <4 2>;
5588 + interrupt-controller;
5589 + microchip,irq-mirror;
5590 +
5591 + status = "okay";
5592 + };
5593 + };
5594 + };
5595 +
5596 + __overrides__ {
5597 + gpiopin = <&mcp23017_pins>,"brcm,pins:0",
5598 + <&mcp23017>,"interrupts:0";
5599 + addr = <&mcp23017>,"reg:0";
5600 + };
5601 +};
5602 +
5603 --- /dev/null
5604 +++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
5605 @@ -0,0 +1,732 @@
5606 +// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor
5607 +
5608 +// dtparams:
5609 +// s08-spi<n>-<m>-present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI<n>, CS#<m>.
5610 +// s17-spi<n>-<m>-present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI<n>, CS#<m>.
5611 +// s08-spi<n>-<m>-int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI<n>, CS#<m>, specifies the GPIO pin to which INT output is connected.
5612 +// s17-spi<n>-<m>-int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI<n>, CS#<m>, specifies the GPIO pin to which either INTA or INTB output is connected.
5613 +//
5614 +// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
5615 +// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#.
5616 +//
5617 +// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25:
5618 +// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25
5619 +//
5620 +// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7:
5621 +// dtoverlay=spi1-2cs
5622 +// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131
5623 +
5624 +/dts-v1/;
5625 +/plugin/;
5626 +
5627 +/ {
5628 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
5629 +
5630 + // disable spi-dev on spi0.0
5631 + fragment@0 {
5632 + target = <&spidev0>;
5633 + __dormant__ {
5634 + status = "disabled";
5635 + };
5636 + };
5637 +
5638 + // disable spi-dev on spi0.1
5639 + fragment@1 {
5640 + target = <&spidev1>;
5641 + __dormant__ {
5642 + status = "disabled";
5643 + };
5644 + };
5645 +
5646 + // disable spi-dev on spi1.0
5647 + fragment@2 {
5648 + target-path = "spi1/spidev@0";
5649 + __dormant__ {
5650 + status = "disabled";
5651 + };
5652 + };
5653 +
5654 + // disable spi-dev on spi1.1
5655 + fragment@3 {
5656 + target-path = "spi1/spidev@1";
5657 + __dormant__ {
5658 + status = "disabled";
5659 + };
5660 + };
5661 +
5662 + // disable spi-dev on spi1.2
5663 + fragment@4 {
5664 + target-path = "spi1/spidev@2";
5665 + __dormant__ {
5666 + status = "disabled";
5667 + };
5668 + };
5669 +
5670 + // disable spi-dev on spi2.0
5671 + fragment@5 {
5672 + target-path = "spi2/spidev@0";
5673 + __dormant__ {
5674 + status = "disabled";
5675 + };
5676 + };
5677 +
5678 + // disable spi-dev on spi2.1
5679 + fragment@6 {
5680 + target-path = "spi2/spidev@1";
5681 + __dormant__ {
5682 + status = "disabled";
5683 + };
5684 + };
5685 +
5686 + // disable spi-dev on spi2.2
5687 + fragment@7 {
5688 + target-path = "spi2/spidev@2";
5689 + __dormant__ {
5690 + status = "disabled";
5691 + };
5692 + };
5693 +
5694 + // enable one or more mcp23s08s on spi0.0
5695 + fragment@8 {
5696 + target = <&spi0>;
5697 + __dormant__ {
5698 + status = "okay";
5699 + #address-cells = <1>;
5700 + #size-cells = <0>;
5701 + mcp23s08_00: mcp23s08@0 {
5702 + compatible = "microchip,mcp23s08";
5703 + gpio-controller;
5704 + #gpio-cells = <2>;
5705 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */
5706 + reg = <0>;
5707 + spi-max-frequency = <500000>;
5708 + status = "okay";
5709 + #interrupt-cells=<2>;
5710 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */
5711 + };
5712 + };
5713 + };
5714 +
5715 + // enable one or more mcp23s08s on spi0.1
5716 + fragment@9 {
5717 + target = <&spi0>;
5718 + __dormant__ {
5719 + status = "okay";
5720 + #address-cells = <1>;
5721 + #size-cells = <0>;
5722 + mcp23s08_01: mcp23s08@1 {
5723 + compatible = "microchip,mcp23s08";
5724 + gpio-controller;
5725 + #gpio-cells = <2>;
5726 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */
5727 + reg = <1>;
5728 + spi-max-frequency = <500000>;
5729 + status = "okay";
5730 + #interrupt-cells=<2>;
5731 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */
5732 + };
5733 + };
5734 + };
5735 +
5736 + // enable one or more mcp23s08s on spi1.0
5737 + fragment@10 {
5738 + target = <&spi1>;
5739 + __dormant__ {
5740 + status = "okay";
5741 + #address-cells = <1>;
5742 + #size-cells = <0>;
5743 + mcp23s08_10: mcp23s08@0 {
5744 + compatible = "microchip,mcp23s08";
5745 + gpio-controller;
5746 + #gpio-cells = <2>;
5747 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */
5748 + reg = <0>;
5749 + spi-max-frequency = <500000>;
5750 + status = "okay";
5751 + #interrupt-cells=<2>;
5752 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */
5753 + };
5754 + };
5755 + };
5756 +
5757 + // enable one or more mcp23s08s on spi1.1
5758 + fragment@11 {
5759 + target = <&spi1>;
5760 + __dormant__ {
5761 + status = "okay";
5762 + #address-cells = <1>;
5763 + #size-cells = <0>;
5764 + mcp23s08_11: mcp23s08@1 {
5765 + compatible = "microchip,mcp23s08";
5766 + gpio-controller;
5767 + #gpio-cells = <2>;
5768 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */
5769 + reg = <1>;
5770 + spi-max-frequency = <500000>;
5771 + status = "okay";
5772 + #interrupt-cells=<2>;
5773 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */
5774 + };
5775 + };
5776 + };
5777 +
5778 + // enable one or more mcp23s08s on spi1.2
5779 + fragment@12 {
5780 + target = <&spi1>;
5781 + __dormant__ {
5782 + status = "okay";
5783 + #address-cells = <1>;
5784 + #size-cells = <0>;
5785 + mcp23s08_12: mcp23s08@2 {
5786 + compatible = "microchip,mcp23s08";
5787 + gpio-controller;
5788 + #gpio-cells = <2>;
5789 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */
5790 + reg = <2>;
5791 + spi-max-frequency = <500000>;
5792 + status = "okay";
5793 + #interrupt-cells=<2>;
5794 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */
5795 + };
5796 + };
5797 + };
5798 +
5799 + // enable one or more mcp23s08s on spi2.0
5800 + fragment@13 {
5801 + target = <&spi2>;
5802 + __dormant__ {
5803 + status = "okay";
5804 + #address-cells = <1>;
5805 + #size-cells = <0>;
5806 + mcp23s08_20: mcp23s08@0 {
5807 + compatible = "microchip,mcp23s08";
5808 + gpio-controller;
5809 + #gpio-cells = <2>;
5810 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */
5811 + reg = <0>;
5812 + spi-max-frequency = <500000>;
5813 + status = "okay";
5814 + #interrupt-cells=<2>;
5815 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */
5816 + };
5817 + };
5818 + };
5819 +
5820 + // enable one or more mcp23s08s on spi2.1
5821 + fragment@14 {
5822 + target = <&spi2>;
5823 + __dormant__ {
5824 + status = "okay";
5825 + #address-cells = <1>;
5826 + #size-cells = <0>;
5827 + mcp23s08_21: mcp23s08@1 {
5828 + compatible = "microchip,mcp23s08";
5829 + gpio-controller;
5830 + #gpio-cells = <2>;
5831 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */
5832 + reg = <1>;
5833 + spi-max-frequency = <500000>;
5834 + status = "okay";
5835 + #interrupt-cells=<2>;
5836 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */
5837 + };
5838 + };
5839 + };
5840 +
5841 + // enable one or more mcp23s08s on spi2.2
5842 + fragment@15 {
5843 + target = <&spi2>;
5844 + __dormant__ {
5845 + status = "okay";
5846 + #address-cells = <1>;
5847 + #size-cells = <0>;
5848 + mcp23s08_22: mcp23s08@2 {
5849 + compatible = "microchip,mcp23s08";
5850 + gpio-controller;
5851 + #gpio-cells = <2>;
5852 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */
5853 + reg = <2>;
5854 + spi-max-frequency = <500000>;
5855 + status = "okay";
5856 + #interrupt-cells=<2>;
5857 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */
5858 + };
5859 + };
5860 + };
5861 +
5862 + // enable one or more mcp23s17s on spi0.0
5863 + fragment@16 {
5864 + target = <&spi0>;
5865 + __dormant__ {
5866 + status = "okay";
5867 + #address-cells = <1>;
5868 + #size-cells = <0>;
5869 + mcp23s17_00: mcp23s17@0 {
5870 + compatible = "microchip,mcp23s17";
5871 + gpio-controller;
5872 + #gpio-cells = <2>;
5873 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */
5874 + reg = <0>;
5875 + spi-max-frequency = <500000>;
5876 + status = "okay";
5877 + #interrupt-cells=<2>;
5878 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */
5879 + };
5880 + };
5881 + };
5882 +
5883 + // enable one or more mcp23s17s on spi0.1
5884 + fragment@17 {
5885 + target = <&spi0>;
5886 + __dormant__ {
5887 + status = "okay";
5888 + #address-cells = <1>;
5889 + #size-cells = <0>;
5890 + mcp23s17_01: mcp23s17@1 {
5891 + compatible = "microchip,mcp23s17";
5892 + gpio-controller;
5893 + #gpio-cells = <2>;
5894 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */
5895 + reg = <1>;
5896 + spi-max-frequency = <500000>;
5897 + status = "okay";
5898 + #interrupt-cells=<2>;
5899 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */
5900 + };
5901 + };
5902 + };
5903 +
5904 + // enable one or more mcp23s17s on spi1.0
5905 + fragment@18 {
5906 + target = <&spi1>;
5907 + __dormant__ {
5908 + status = "okay";
5909 + #address-cells = <1>;
5910 + #size-cells = <0>;
5911 + mcp23s17_10: mcp23s17@0 {
5912 + compatible = "microchip,mcp23s17";
5913 + gpio-controller;
5914 + #gpio-cells = <2>;
5915 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */
5916 + reg = <0>;
5917 + spi-max-frequency = <500000>;
5918 + status = "okay";
5919 + #interrupt-cells=<2>;
5920 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */
5921 + };
5922 + };
5923 + };
5924 +
5925 + // enable one or more mcp23s17s on spi1.1
5926 + fragment@19 {
5927 + target = <&spi1>;
5928 + __dormant__ {
5929 + status = "okay";
5930 + #address-cells = <1>;
5931 + #size-cells = <0>;
5932 + mcp23s17_11: mcp23s17@1 {
5933 + compatible = "microchip,mcp23s17";
5934 + gpio-controller;
5935 + #gpio-cells = <2>;
5936 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */
5937 + reg = <1>;
5938 + spi-max-frequency = <500000>;
5939 + status = "okay";
5940 + #interrupt-cells=<2>;
5941 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */
5942 + };
5943 + };
5944 + };
5945 +
5946 + // enable one or more mcp23s17s on spi1.2
5947 + fragment@20 {
5948 + target = <&spi1>;
5949 + __dormant__ {
5950 + status = "okay";
5951 + #address-cells = <1>;
5952 + #size-cells = <0>;
5953 + mcp23s17_12: mcp23s17@2 {
5954 + compatible = "microchip,mcp23s17";
5955 + gpio-controller;
5956 + #gpio-cells = <2>;
5957 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */
5958 + reg = <2>;
5959 + spi-max-frequency = <500000>;
5960 + status = "okay";
5961 + #interrupt-cells=<2>;
5962 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */
5963 + };
5964 + };
5965 + };
5966 +
5967 + // enable one or more mcp23s17s on spi2.0
5968 + fragment@21 {
5969 + target = <&spi2>;
5970 + __dormant__ {
5971 + status = "okay";
5972 + #address-cells = <1>;
5973 + #size-cells = <0>;
5974 + mcp23s17_20: mcp23s17@0 {
5975 + compatible = "microchip,mcp23s17";
5976 + gpio-controller;
5977 + #gpio-cells = <2>;
5978 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */
5979 + reg = <0>;
5980 + spi-max-frequency = <500000>;
5981 + status = "okay";
5982 + #interrupt-cells=<2>;
5983 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */
5984 + };
5985 + };
5986 + };
5987 +
5988 + // enable one or more mcp23s17s on spi2.1
5989 + fragment@22 {
5990 + target = <&spi2>;
5991 + __dormant__ {
5992 + status = "okay";
5993 + #address-cells = <1>;
5994 + #size-cells = <0>;
5995 + mcp23s17_21: mcp23s17@1 {
5996 + compatible = "microchip,mcp23s17";
5997 + gpio-controller;
5998 + #gpio-cells = <2>;
5999 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */
6000 + reg = <1>;
6001 + spi-max-frequency = <500000>;
6002 + status = "okay";
6003 + #interrupt-cells=<2>;
6004 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */
6005 + };
6006 + };
6007 + };
6008 +
6009 + // enable one or more mcp23s17s on spi2.2
6010 + fragment@23 {
6011 + target = <&spi2>;
6012 + __dormant__ {
6013 + status = "okay";
6014 + #address-cells = <1>;
6015 + #size-cells = <0>;
6016 + mcp23s17_22: mcp23s17@2 {
6017 + compatible = "microchip,mcp23s17";
6018 + gpio-controller;
6019 + #gpio-cells = <2>;
6020 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */
6021 + reg = <2>;
6022 + spi-max-frequency = <500000>;
6023 + status = "okay";
6024 + #interrupt-cells=<2>;
6025 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */
6026 + };
6027 + };
6028 + };
6029 +
6030 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down
6031 + fragment@24 {
6032 + target = <&gpio>;
6033 + __dormant__ {
6034 + spi0_0_int_pins: spi0_0_int_pins {
6035 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */
6036 + brcm,function = <0>;
6037 + brcm,pull = <0>;
6038 + };
6039 + };
6040 + };
6041 +
6042 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down
6043 + fragment@25 {
6044 + target = <&gpio>;
6045 + __dormant__ {
6046 + spi0_1_int_pins: spi0_1_int_pins {
6047 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */
6048 + brcm,function = <0>;
6049 + brcm,pull = <0>;
6050 + };
6051 + };
6052 + };
6053 +
6054 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down
6055 + fragment@26 {
6056 + target = <&gpio>;
6057 + __dormant__ {
6058 + spi1_0_int_pins: spi1_0_int_pins {
6059 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */
6060 + brcm,function = <0>;
6061 + brcm,pull = <0>;
6062 + };
6063 + };
6064 + };
6065 +
6066 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down
6067 + fragment@27 {
6068 + target = <&gpio>;
6069 + __dormant__ {
6070 + spi1_1_int_pins: spi1_1_int_pins {
6071 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */
6072 + brcm,function = <0>;
6073 + brcm,pull = <0>;
6074 + };
6075 + };
6076 + };
6077 +
6078 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down
6079 + fragment@28 {
6080 + target = <&gpio>;
6081 + __dormant__ {
6082 + spi1_2_int_pins: spi1_2_int_pins {
6083 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */
6084 + brcm,function = <0>;
6085 + brcm,pull = <0>;
6086 + };
6087 + };
6088 + };
6089 +
6090 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down
6091 + fragment@29 {
6092 + target = <&gpio>;
6093 + __dormant__ {
6094 + spi2_0_int_pins: spi2_0_int_pins {
6095 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */
6096 + brcm,function = <0>;
6097 + brcm,pull = <0>;
6098 + };
6099 + };
6100 + };
6101 +
6102 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down
6103 + fragment@30 {
6104 + target = <&gpio>;
6105 + __dormant__ {
6106 + spi2_1_int_pins: spi2_1_int_pins {
6107 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */
6108 + brcm,function = <0>;
6109 + brcm,pull = <0>;
6110 + };
6111 + };
6112 + };
6113 +
6114 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down
6115 + fragment@31 {
6116 + target = <&gpio>;
6117 + __dormant__ {
6118 + spi2_2_int_pins: spi2_2_int_pins {
6119 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */
6120 + brcm,function = <0>;
6121 + brcm,pull = <0>;
6122 + };
6123 + };
6124 + };
6125 +
6126 + // Enable interrupts for a mcp23s08 on spi0.0.
6127 + // Use default active low interrupt signalling.
6128 + fragment@32 {
6129 + target = <&mcp23s08_00>;
6130 + __dormant__ {
6131 + interrupt-parent = <&gpio>;
6132 + interrupt-controller;
6133 + };
6134 + };
6135 +
6136 + // Enable interrupts for a mcp23s08 on spi0.1.
6137 + // Use default active low interrupt signalling.
6138 + fragment@33 {
6139 + target = <&mcp23s08_01>;
6140 + __dormant__ {
6141 + interrupt-parent = <&gpio>;
6142 + interrupt-controller;
6143 + };
6144 + };
6145 +
6146 + // Enable interrupts for a mcp23s08 on spi1.0.
6147 + // Use default active low interrupt signalling.
6148 + fragment@34 {
6149 + target = <&mcp23s08_10>;
6150 + __dormant__ {
6151 + interrupt-parent = <&gpio>;
6152 + interrupt-controller;
6153 + };
6154 + };
6155 +
6156 + // Enable interrupts for a mcp23s08 on spi1.1.
6157 + // Use default active low interrupt signalling.
6158 + fragment@35 {
6159 + target = <&mcp23s08_11>;
6160 + __dormant__ {
6161 + interrupt-parent = <&gpio>;
6162 + interrupt-controller;
6163 + };
6164 + };
6165 +
6166 + // Enable interrupts for a mcp23s08 on spi1.2.
6167 + // Use default active low interrupt signalling.
6168 + fragment@36 {
6169 + target = <&mcp23s08_12>;
6170 + __dormant__ {
6171 + interrupt-parent = <&gpio>;
6172 + interrupt-controller;
6173 + };
6174 + };
6175 +
6176 + // Enable interrupts for a mcp23s08 on spi2.0.
6177 + // Use default active low interrupt signalling.
6178 + fragment@37 {
6179 + target = <&mcp23s08_20>;
6180 + __dormant__ {
6181 + interrupt-parent = <&gpio>;
6182 + interrupt-controller;
6183 + };
6184 + };
6185 +
6186 + // Enable interrupts for a mcp23s08 on spi2.1.
6187 + // Use default active low interrupt signalling.
6188 + fragment@38 {
6189 + target = <&mcp23s08_21>;
6190 + __dormant__ {
6191 + interrupt-parent = <&gpio>;
6192 + interrupt-controller;
6193 + };
6194 + };
6195 +
6196 + // Enable interrupts for a mcp23s08 on spi2.2.
6197 + // Use default active low interrupt signalling.
6198 + fragment@39 {
6199 + target = <&mcp23s08_22>;
6200 + __dormant__ {
6201 + interrupt-parent = <&gpio>;
6202 + interrupt-controller;
6203 + };
6204 + };
6205 +
6206 + // Enable interrupts for a mcp23s17 on spi0.0.
6207 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6208 + // Use default active low interrupt signalling.
6209 + fragment@40 {
6210 + target = <&mcp23s17_00>;
6211 + __dormant__ {
6212 + interrupt-parent = <&gpio>;
6213 + interrupt-controller;
6214 + microchip,irq-mirror;
6215 + };
6216 + };
6217 +
6218 + // Enable interrupts for a mcp23s17 on spi0.1.
6219 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6220 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6221 + fragment@41 {
6222 + target = <&mcp23s17_01>;
6223 + __dormant__ {
6224 + interrupt-parent = <&gpio>;
6225 + interrupt-controller;
6226 + microchip,irq-mirror;
6227 + };
6228 + };
6229 +
6230 + // Enable interrupts for a mcp23s17 on spi1.0.
6231 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6232 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6233 + fragment@42 {
6234 + target = <&mcp23s17_10>;
6235 + __dormant__ {
6236 + interrupt-parent = <&gpio>;
6237 + interrupt-controller;
6238 + microchip,irq-mirror;
6239 + };
6240 + };
6241 +
6242 + // Enable interrupts for a mcp23s17 on spi1.1.
6243 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6244 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6245 + fragment@43 {
6246 + target = <&mcp23s17_11>;
6247 + __dormant__ {
6248 + interrupt-parent = <&gpio>;
6249 + interrupt-controller;
6250 + microchip,irq-mirror;
6251 + };
6252 + };
6253 +
6254 + // Enable interrupts for a mcp23s17 on spi1.2.
6255 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6256 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6257 + fragment@44 {
6258 + target = <&mcp23s17_12>;
6259 + __dormant__ {
6260 + interrupt-parent = <&gpio>;
6261 + interrupt-controller;
6262 + microchip,irq-mirror;
6263 + };
6264 + };
6265 +
6266 + // Enable interrupts for a mcp23s17 on spi2.0.
6267 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6268 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6269 + fragment@45 {
6270 + target = <&mcp23s17_20>;
6271 + __dormant__ {
6272 + interrupt-parent = <&gpio>;
6273 + interrupt-controller;
6274 + microchip,irq-mirror;
6275 + };
6276 + };
6277 +
6278 + // Enable interrupts for a mcp23s17 on spi2.1.
6279 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6280 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6281 + fragment@46 {
6282 + target = <&mcp23s17_21>;
6283 + __dormant__ {
6284 + interrupt-parent = <&gpio>;
6285 + interrupt-controller;
6286 + microchip,irq-mirror;
6287 + };
6288 + };
6289 +
6290 + // Enable interrupts for a mcp23s17 on spi2.2.
6291 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
6292 + // Configure INTA/B outputs of mcp23s08/17 as active low.
6293 + fragment@47 {
6294 + target = <&mcp23s17_22>;
6295 + __dormant__ {
6296 + interrupt-parent = <&gpio>;
6297 + interrupt-controller;
6298 + microchip,irq-mirror;
6299 + };
6300 + };
6301 +
6302 + __overrides__ {
6303 + s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0";
6304 + s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0";
6305 + s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0";
6306 + s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0";
6307 + s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0";
6308 + s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0";
6309 + s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0";
6310 + s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0";
6311 + s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0";
6312 + s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0";
6313 + s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0";
6314 + s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0";
6315 + s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0";
6316 + s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0";
6317 + s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0";
6318 + s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0";
6319 + s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0";
6320 + s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0";
6321 + s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0";
6322 + s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0";
6323 + s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0";
6324 + s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0";
6325 + s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0";
6326 + s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0";
6327 + s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0";
6328 + s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0";
6329 + s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0";
6330 + s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0";
6331 + s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0";
6332 + s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0";
6333 + s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0";
6334 + s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0";
6335 + };
6336 +};
6337 +
6338 --- /dev/null
6339 +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
6340 @@ -0,0 +1,73 @@
6341 +/*
6342 + * Device tree overlay for mcp251x/can0 on spi0.0
6343 + */
6344 +
6345 +/dts-v1/;
6346 +/plugin/;
6347 +
6348 +/ {
6349 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
6350 + /* disable spi-dev for spi0.0 */
6351 + fragment@0 {
6352 + target = <&spi0>;
6353 + __overlay__ {
6354 + status = "okay";
6355 + };
6356 + };
6357 +
6358 + fragment@1 {
6359 + target = <&spidev0>;
6360 + __overlay__ {
6361 + status = "disabled";
6362 + };
6363 + };
6364 +
6365 + /* the interrupt pin of the can-controller */
6366 + fragment@2 {
6367 + target = <&gpio>;
6368 + __overlay__ {
6369 + can0_pins: can0_pins {
6370 + brcm,pins = <25>;
6371 + brcm,function = <0>; /* input */
6372 + };
6373 + };
6374 + };
6375 +
6376 + /* the clock/oscillator of the can-controller */
6377 + fragment@3 {
6378 + target-path = "/clocks";
6379 + __overlay__ {
6380 + /* external oscillator of mcp2515 on SPI0.0 */
6381 + can0_osc: can0_osc {
6382 + compatible = "fixed-clock";
6383 + #clock-cells = <0>;
6384 + clock-frequency = <16000000>;
6385 + };
6386 + };
6387 + };
6388 +
6389 + /* the spi config of the can-controller itself binding everything together */
6390 + fragment@4 {
6391 + target = <&spi0>;
6392 + __overlay__ {
6393 + /* needed to avoid dtc warning */
6394 + #address-cells = <1>;
6395 + #size-cells = <0>;
6396 + can0: mcp2515@0 {
6397 + reg = <0>;
6398 + compatible = "microchip,mcp2515";
6399 + pinctrl-names = "default";
6400 + pinctrl-0 = <&can0_pins>;
6401 + spi-max-frequency = <10000000>;
6402 + interrupt-parent = <&gpio>;
6403 + interrupts = <25 0x2>;
6404 + clocks = <&can0_osc>;
6405 + };
6406 + };
6407 + };
6408 + __overrides__ {
6409 + oscillator = <&can0_osc>,"clock-frequency:0";
6410 + spimaxfrequency = <&can0>,"spi-max-frequency:0";
6411 + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
6412 + };
6413 +};
6414 --- /dev/null
6415 +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
6416 @@ -0,0 +1,73 @@
6417 +/*
6418 + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
6419 + */
6420 +
6421 +/dts-v1/;
6422 +/plugin/;
6423 +
6424 +/ {
6425 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
6426 + /* disable spi-dev for spi0.1 */
6427 + fragment@0 {
6428 + target = <&spi0>;
6429 + __overlay__ {
6430 + status = "okay";
6431 + };
6432 + };
6433 +
6434 + fragment@1 {
6435 + target = <&spidev1>;
6436 + __overlay__ {
6437 + status = "disabled";
6438 + };
6439 + };
6440 +
6441 + /* the interrupt pin of the can-controller */
6442 + fragment@2 {
6443 + target = <&gpio>;
6444 + __overlay__ {
6445 + can1_pins: can1_pins {
6446 + brcm,pins = <25>;
6447 + brcm,function = <0>; /* input */
6448 + };
6449 + };
6450 + };
6451 +
6452 + /* the clock/oscillator of the can-controller */
6453 + fragment@3 {
6454 + target-path = "/clocks";
6455 + __overlay__ {
6456 + /* external oscillator of mcp2515 on spi0.1 */
6457 + can1_osc: can1_osc {
6458 + compatible = "fixed-clock";
6459 + #clock-cells = <0>;
6460 + clock-frequency = <16000000>;
6461 + };
6462 + };
6463 + };
6464 +
6465 + /* the spi config of the can-controller itself binding everything together */
6466 + fragment@4 {
6467 + target = <&spi0>;
6468 + __overlay__ {
6469 + /* needed to avoid dtc warning */
6470 + #address-cells = <1>;
6471 + #size-cells = <0>;
6472 + can1: mcp2515@1 {
6473 + reg = <1>;
6474 + compatible = "microchip,mcp2515";
6475 + pinctrl-names = "default";
6476 + pinctrl-0 = <&can1_pins>;
6477 + spi-max-frequency = <10000000>;
6478 + interrupt-parent = <&gpio>;
6479 + interrupts = <25 0x2>;
6480 + clocks = <&can1_osc>;
6481 + };
6482 + };
6483 + };
6484 + __overrides__ {
6485 + oscillator = <&can1_osc>,"clock-frequency:0";
6486 + spimaxfrequency = <&can1>,"spi-max-frequency:0";
6487 + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
6488 + };
6489 +};
6490 --- /dev/null
6491 +++ b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
6492 @@ -0,0 +1,36 @@
6493 +/dts-v1/;
6494 +/plugin/;
6495 +
6496 +#include <dt-bindings/clock/bcm2835.h>
6497 +
6498 +/*
6499 + * Fake a higher clock rate to get a larger divisor, and thereby a lower
6500 + * baudrate. The real clock is 48MHz, which we scale so that requesting
6501 + * 38.4kHz results in an actual 31.25kHz.
6502 + *
6503 + * 48000000*38400/31250 = 58982400
6504 + */
6505 +
6506 +/{
6507 + compatible = "brcm,bcm2835";
6508 +
6509 + fragment@0 {
6510 + target-path = "/clocks";
6511 + __overlay__ {
6512 + midi_clk: midi_clk {
6513 + compatible = "fixed-clock";
6514 + #clock-cells = <0>;
6515 + clock-output-names = "uart0_pclk";
6516 + clock-frequency = <58982400>;
6517 + };
6518 + };
6519 + };
6520 +
6521 + fragment@1 {
6522 + target = <&uart0>;
6523 + __overlay__ {
6524 + clocks = <&midi_clk>,
6525 + <&clocks BCM2835_CLOCK_VPU>;
6526 + };
6527 + };
6528 +};
6529 --- /dev/null
6530 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
6531 @@ -0,0 +1,38 @@
6532 +/dts-v1/;
6533 +/plugin/;
6534 +
6535 +/{
6536 + compatible = "brcm,bcm2708";
6537 +
6538 + fragment@0 {
6539 + target = <&mmc>;
6540 + frag0: __overlay__ {
6541 + pinctrl-names = "default";
6542 + pinctrl-0 = <&mmc_pins>;
6543 + bus-width = <4>;
6544 + brcm,overclock-50 = <0>;
6545 + status = "okay";
6546 + };
6547 + };
6548 +
6549 + fragment@1 {
6550 + target = <&gpio>;
6551 + __overlay__ {
6552 + mmc_pins: mmc_pins {
6553 + brcm,pins = <48 49 50 51 52 53>;
6554 + brcm,function = <7>; /* alt3 */
6555 + };
6556 + };
6557 + };
6558 +
6559 + fragment@2 {
6560 + target = <&sdhost>;
6561 + __overlay__ {
6562 + status = "disabled";
6563 + };
6564 + };
6565 +
6566 + __overrides__ {
6567 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
6568 + };
6569 +};
6570 --- /dev/null
6571 +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
6572 @@ -0,0 +1,117 @@
6573 +/*
6574 + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
6575 + *
6576 + */
6577 +
6578 +/dts-v1/;
6579 +/plugin/;
6580 +
6581 +/ {
6582 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
6583 +
6584 + fragment@0 {
6585 + target = <&spi0>;
6586 + __overlay__ {
6587 + status = "okay";
6588 + };
6589 + };
6590 +
6591 + fragment@1 {
6592 + target = <&spidev0>;
6593 + __overlay__ {
6594 + status = "disabled";
6595 + };
6596 + };
6597 +
6598 + fragment@2 {
6599 + target = <&spidev1>;
6600 + __overlay__ {
6601 + status = "disabled";
6602 + };
6603 + };
6604 +
6605 + fragment@3 {
6606 + target = <&gpio>;
6607 + __overlay__ {
6608 + mz61581_pins: mz61581_pins {
6609 + brcm,pins = <4 15 18 25>;
6610 + brcm,function = <0 1 1 1>; /* in out out out */
6611 + };
6612 + };
6613 + };
6614 +
6615 + fragment@4 {
6616 + target = <&spi0>;
6617 + __overlay__ {
6618 + /* needed to avoid dtc warning */
6619 + #address-cells = <1>;
6620 + #size-cells = <0>;
6621 +
6622 + mz61581: mz61581@0{
6623 + compatible = "samsung,s6d02a1";
6624 + reg = <0>;
6625 + pinctrl-names = "default";
6626 + pinctrl-0 = <&mz61581_pins>;
6627 +
6628 + spi-max-frequency = <128000000>;
6629 + spi-cpol;
6630 + spi-cpha;
6631 +
6632 + width = <320>;
6633 + height = <480>;
6634 + rotate = <270>;
6635 + bgr;
6636 + fps = <30>;
6637 + buswidth = <8>;
6638 + txbuflen = <32768>;
6639 +
6640 + reset-gpios = <&gpio 15 0>;
6641 + dc-gpios = <&gpio 25 0>;
6642 + led-gpios = <&gpio 18 0>;
6643 +
6644 + init = <0x10000b0 00
6645 + 0x1000011
6646 + 0x20000ff
6647 + 0x10000b3 0x02 0x00 0x00 0x00
6648 + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
6649 + 0x10000c1 0x08 0x16 0x08 0x08
6650 + 0x10000c4 0x11 0x07 0x03 0x03
6651 + 0x10000c6 0x00
6652 + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
6653 + 0x1000035 0x00
6654 + 0x1000036 0xa0
6655 + 0x100003a 0x55
6656 + 0x1000044 0x00 0x01
6657 + 0x10000d0 0x07 0x07 0x1d 0x03
6658 + 0x10000d1 0x03 0x30 0x10
6659 + 0x10000d2 0x03 0x14 0x04
6660 + 0x1000029
6661 + 0x100002c>;
6662 +
6663 + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
6664 + debug = <3>;
6665 + };
6666 +
6667 + mz61581_ts: mz61581_ts@1 {
6668 + compatible = "ti,ads7846";
6669 + reg = <1>;
6670 +
6671 + spi-max-frequency = <2000000>;
6672 + interrupts = <4 2>; /* high-to-low edge triggered */
6673 + interrupt-parent = <&gpio>;
6674 + pendown-gpio = <&gpio 4 0>;
6675 +
6676 + ti,x-plate-ohms = /bits/ 16 <60>;
6677 + ti,pressure-max = /bits/ 16 <255>;
6678 + };
6679 + };
6680 + };
6681 + __overrides__ {
6682 + speed = <&mz61581>, "spi-max-frequency:0";
6683 + rotate = <&mz61581>, "rotate:0";
6684 + fps = <&mz61581>, "fps:0";
6685 + txbuflen = <&mz61581>, "txbuflen:0";
6686 + debug = <&mz61581>, "debug:0";
6687 + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
6688 + };
6689 +};
6690 --- /dev/null
6691 +++ b/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts
6692 @@ -0,0 +1,27 @@
6693 +/dts-v1/;
6694 +/plugin/;
6695 +
6696 +/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
6697 + from the VPU. There is a special driver for this with a separate DT node,
6698 + which has the unfortunate consequence of breaking the act_led_gpio and
6699 + act_led_activelow dtparams.
6700 +
6701 + This overlay changes the GPIO controller back to the standard one and
6702 + restores the dtparams.
6703 +*/
6704 +
6705 +/{
6706 + compatible = "brcm,bcm2708";
6707 +
6708 + fragment@0 {
6709 + target = <&act_led>;
6710 + frag0: __overlay__ {
6711 + gpios = <&gpio 0 0>;
6712 + };
6713 + };
6714 +
6715 + __overrides__ {
6716 + gpio = <&frag0>,"gpios:4";
6717 + activelow = <&frag0>,"gpios:8";
6718 + };
6719 +};
6720 --- /dev/null
6721 +++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
6722 @@ -0,0 +1,46 @@
6723 +/dts-v1/;
6724 +/plugin/;
6725 +
6726 +/* Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15.
6727 + To disable the systemd service that initialises the modem so it doesn't use
6728 + the UART:
6729 +
6730 + sudo systemctl disable hciuart
6731 +*/
6732 +
6733 +/{
6734 + compatible = "brcm,bcm2708";
6735 +
6736 + fragment@0 {
6737 + target = <&uart1>;
6738 + __overlay__ {
6739 + status = "disabled";
6740 + };
6741 + };
6742 +
6743 + fragment@1 {
6744 + target = <&uart0>;
6745 + __overlay__ {
6746 + pinctrl-names = "default";
6747 + pinctrl-0 = <&uart0_pins>;
6748 + status = "okay";
6749 + };
6750 + };
6751 +
6752 + fragment@2 {
6753 + target = <&uart0_pins>;
6754 + __overlay__ {
6755 + brcm,pins;
6756 + brcm,function;
6757 + brcm,pull;
6758 + };
6759 + };
6760 +
6761 + fragment@3 {
6762 + target-path = "/aliases";
6763 + __overlay__ {
6764 + serial0 = "/soc/serial@7e201000";
6765 + serial1 = "/soc/serial@7e215040";
6766 + };
6767 + };
6768 +};
6769 --- /dev/null
6770 +++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
6771 @@ -0,0 +1,64 @@
6772 +/dts-v1/;
6773 +/plugin/;
6774 +
6775 +/* Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
6776 + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
6777 + usable baudrate.
6778 +
6779 + It is also necessary to edit /lib/systemd/system/hciuart.service and
6780 + replace ttyAMA0 with ttyS0, unless you have a system with udev rules
6781 + that create /dev/serial0 and /dev/serial1, in which case use /dev/serial1
6782 + instead because it will always be correct.
6783 +
6784 + If cmdline.txt uses the alias serial0 to refer to the user-accessable port
6785 + then the firmware will replace with the appropriate port whether or not
6786 + this overlay is used.
6787 +*/
6788 +
6789 +/{
6790 + compatible = "brcm,bcm2708";
6791 +
6792 + fragment@0 {
6793 + target = <&uart0>;
6794 + __overlay__ {
6795 + pinctrl-names = "default";
6796 + pinctrl-0 = <&uart0_pins>;
6797 + status = "okay";
6798 + };
6799 + };
6800 +
6801 + fragment@1 {
6802 + target = <&uart1>;
6803 + __overlay__ {
6804 + pinctrl-names = "default";
6805 + pinctrl-0 = <&uart1_pins &bt_pins>;
6806 + status = "okay";
6807 + };
6808 + };
6809 +
6810 + fragment@2 {
6811 + target = <&uart0_pins>;
6812 + __overlay__ {
6813 + brcm,pins;
6814 + brcm,function;
6815 + brcm,pull;
6816 + };
6817 + };
6818 +
6819 + fragment@3 {
6820 + target = <&uart1_pins>;
6821 + __overlay__ {
6822 + brcm,pins = <32 33>;
6823 + brcm,function = <2>; /* alt5=UART1 */
6824 + brcm,pull = <0 2>;
6825 + };
6826 + };
6827 +
6828 + fragment@4 {
6829 + target-path = "/aliases";
6830 + __overlay__ {
6831 + serial0 = "/soc/serial@7e201000";
6832 + serial1 = "/soc/serial@7e215040";
6833 + };
6834 + };
6835 +};
6836 --- /dev/null
6837 +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
6838 @@ -0,0 +1,102 @@
6839 +/*
6840 + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
6841 + *
6842 + */
6843 +
6844 +/dts-v1/;
6845 +/plugin/;
6846 +
6847 +/ {
6848 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
6849 +
6850 + fragment@0 {
6851 + target = <&spi0>;
6852 + __overlay__ {
6853 + status = "okay";
6854 + };
6855 + };
6856 +
6857 + fragment@1 {
6858 + target = <&spidev0>;
6859 + __overlay__ {
6860 + status = "disabled";
6861 + };
6862 + };
6863 +
6864 + fragment@2 {
6865 + target = <&spidev1>;
6866 + __overlay__ {
6867 + status = "disabled";
6868 + };
6869 + };
6870 +
6871 + fragment@3 {
6872 + target = <&gpio>;
6873 + __overlay__ {
6874 + piscreen_pins: piscreen_pins {
6875 + brcm,pins = <17 25 24 22>;
6876 + brcm,function = <0 1 1 1>; /* in out out out */
6877 + };
6878 + };
6879 + };
6880 +
6881 + fragment@4 {
6882 + target = <&spi0>;
6883 + __overlay__ {
6884 + /* needed to avoid dtc warning */
6885 + #address-cells = <1>;
6886 + #size-cells = <0>;
6887 +
6888 + piscreen: piscreen@0{
6889 + compatible = "ilitek,ili9486";
6890 + reg = <0>;
6891 + pinctrl-names = "default";
6892 + pinctrl-0 = <&piscreen_pins>;
6893 +
6894 + spi-max-frequency = <24000000>;
6895 + rotate = <270>;
6896 + bgr;
6897 + fps = <30>;
6898 + buswidth = <8>;
6899 + regwidth = <16>;
6900 + reset-gpios = <&gpio 25 0>;
6901 + dc-gpios = <&gpio 24 0>;
6902 + led-gpios = <&gpio 22 1>;
6903 + debug = <0>;
6904 +
6905 + init = <0x10000b0 0x00
6906 + 0x1000011
6907 + 0x20000ff
6908 + 0x100003a 0x55
6909 + 0x1000036 0x28
6910 + 0x10000c2 0x44
6911 + 0x10000c5 0x00 0x00 0x00 0x00
6912 + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
6913 + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
6914 + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
6915 + 0x1000011
6916 + 0x1000029>;
6917 + };
6918 +
6919 + piscreen_ts: piscreen-ts@1 {
6920 + compatible = "ti,ads7846";
6921 + reg = <1>;
6922 +
6923 + spi-max-frequency = <2000000>;
6924 + interrupts = <17 2>; /* high-to-low edge triggered */
6925 + interrupt-parent = <&gpio>;
6926 + pendown-gpio = <&gpio 17 0>;
6927 + ti,swap-xy;
6928 + ti,x-plate-ohms = /bits/ 16 <100>;
6929 + ti,pressure-max = /bits/ 16 <255>;
6930 + };
6931 + };
6932 + };
6933 + __overrides__ {
6934 + speed = <&piscreen>,"spi-max-frequency:0";
6935 + rotate = <&piscreen>,"rotate:0";
6936 + fps = <&piscreen>,"fps:0";
6937 + debug = <&piscreen>,"debug:0";
6938 + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
6939 + };
6940 +};
6941 --- /dev/null
6942 +++ b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
6943 @@ -0,0 +1,106 @@
6944 + /*
6945 + * Device Tree overlay for PiScreen2 3.5" TFT with resistive touch by Ozzmaker.com
6946 + *
6947 + */
6948 +
6949 +/dts-v1/;
6950 +/plugin/;
6951 +
6952 +/ {
6953 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
6954 +
6955 + fragment@0 {
6956 + target = <&spi0>;
6957 + __overlay__ {
6958 + status = "okay";
6959 + };
6960 + };
6961 +
6962 + fragment@1 {
6963 + target = <&spidev0>;
6964 + __overlay__ {
6965 + status = "disabled";
6966 + };
6967 + };
6968 +
6969 + fragment@2 {
6970 + target = <&spidev1>;
6971 + __overlay__ {
6972 + status = "disabled";
6973 + };
6974 + };
6975 +
6976 + fragment@3 {
6977 + target = <&gpio>;
6978 + __overlay__ {
6979 + piscreen2_pins: piscreen2_pins {
6980 + brcm,pins = <17 25 24 22>;
6981 + brcm,function = <0 1 1 1>; /* in out out out */
6982 + };
6983 + };
6984 + };
6985 +
6986 + fragment@4 {
6987 + target = <&spi0>;
6988 + __overlay__ {
6989 + /* needed to avoid dtc warning */
6990 + #address-cells = <1>;
6991 + #size-cells = <0>;
6992 +
6993 + piscreen2: piscreen2@0{
6994 + compatible = "ilitek,ili9486";
6995 + reg = <0>;
6996 + pinctrl-names = "default";
6997 + pinctrl-0 = <&piscreen2_pins>;
6998 + bgr;
6999 + spi-max-frequency = <64000000>;
7000 + rotate = <90>;
7001 + fps = <30>;
7002 + buswidth = <8>;
7003 + regwidth = <16>;
7004 + txbuflen = <32768>;
7005 + reset-gpios = <&gpio 25 0>;
7006 + dc-gpios = <&gpio 24 0>;
7007 + led-gpios = <&gpio 22 1>;
7008 + debug = <0>;
7009 +
7010 + init = <0x10000b0 0x00
7011 + 0x1000011
7012 + 0x20000ff
7013 + 0x100003a 0x55
7014 + 0x1000036 0x28
7015 + 0x10000c0 0x11 0x09
7016 + 0x10000c1 0x41
7017 + 0x10000c5 0x00 0x00 0x00 0x00
7018 + 0x10000b6 0x00 0x02
7019 + 0x10000f7 0xa9 0x51 0x2c 0x2
7020 + 0x10000be 0x00 0x04
7021 + 0x10000e9 0x00
7022 + 0x1000011
7023 + 0x1000029>;
7024 +
7025 + };
7026 +
7027 + piscreen2_ts: piscreen2-ts@1 {
7028 + compatible = "ti,ads7846";
7029 + reg = <1>;
7030 +
7031 + spi-max-frequency = <2000000>;
7032 + interrupts = <17 2>; /* high-to-low edge triggered */
7033 + interrupt-parent = <&gpio>;
7034 + pendown-gpio = <&gpio 17 0>;
7035 + ti,swap-xy;
7036 + ti,x-plate-ohms = /bits/ 16 <100>;
7037 + ti,pressure-max = /bits/ 16 <255>;
7038 + };
7039 + };
7040 + };
7041 + __overrides__ {
7042 + speed = <&piscreen2>,"spi-max-frequency:0";
7043 + rotate = <&piscreen2>,"rotate:0";
7044 + fps = <&piscreen2>,"fps:0";
7045 + debug = <&piscreen2>,"debug:0";
7046 + xohms = <&piscreen2_ts>,"ti,x-plate-ohms;0";
7047 + };
7048 +};
7049 +
7050 --- /dev/null
7051 +++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
7052 @@ -0,0 +1,114 @@
7053 +/*
7054 + * pisound Linux kernel module.
7055 + * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound
7056 + *
7057 + * This program is free software; you can redistribute it and/or
7058 + * modify it under the terms of the GNU General Public License
7059 + * as published by the Free Software Foundation; version 2 of the
7060 + * License.
7061 + *
7062 + * This program is distributed in the hope that it will be useful,
7063 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
7064 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7065 + * GNU General Public License for more details.
7066 + *
7067 + * You should have received a copy of the GNU General Public License
7068 + * along with this program; if not, write to the Free Software
7069 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
7070 + */
7071 +
7072 +/dts-v1/;
7073 +/plugin/;
7074 +
7075 +#include <dt-bindings/gpio/gpio.h>
7076 +
7077 +/ {
7078 + compatible = "brcm,bcm2708";
7079 +
7080 + fragment@0 {
7081 + target = <&sound>;
7082 + __overlay__ {
7083 + compatible = "blokaslabs,pisound";
7084 + i2s-controller = <&i2s>;
7085 + status = "okay";
7086 +
7087 + pinctrl-0 = <&pisound_button_pins>;
7088 +
7089 + osr-gpios =
7090 + <&gpio 13 GPIO_ACTIVE_HIGH>,
7091 + <&gpio 26 GPIO_ACTIVE_HIGH>,
7092 + <&gpio 16 GPIO_ACTIVE_HIGH>;
7093 +
7094 + reset-gpios =
7095 + <&gpio 12 GPIO_ACTIVE_HIGH>,
7096 + <&gpio 24 GPIO_ACTIVE_HIGH>;
7097 +
7098 + data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
7099 +
7100 + button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
7101 + };
7102 + };
7103 +
7104 + fragment@1 {
7105 + target = <&gpio>;
7106 + __overlay__ {
7107 + pinctrl-names = "default";
7108 + pinctrl-0 = <&pisound_button_pins>;
7109 +
7110 + pisound_button_pins: pisound_button_pins {
7111 + brcm,pins = <17>;
7112 + brcm,function = <0>; // Input
7113 + brcm,pull = <2>; // Pull-Up
7114 + };
7115 + };
7116 + };
7117 +
7118 + fragment@2 {
7119 + target = <&i2s>;
7120 + __overlay__ {
7121 + status = "okay";
7122 + };
7123 + };
7124 +
7125 + fragment@3 {
7126 + target-path = "/";
7127 + __overlay__ {
7128 + pcm5102a-codec {
7129 + #sound-dai-cells = <0>;
7130 + compatible = "ti,pcm5102a";
7131 + status = "okay";
7132 + };
7133 + };
7134 + };
7135 +
7136 + fragment@4 {
7137 + target = <&spi0>;
7138 + __overlay__ {
7139 + status = "okay";
7140 +
7141 + spidev@0{
7142 + status = "disabled";
7143 + };
7144 +
7145 + spidev@1{
7146 + status = "okay";
7147 + };
7148 + };
7149 + };
7150 +
7151 + fragment@5 {
7152 + target = <&spi0>;
7153 + __overlay__ {
7154 + #address-cells = <1>;
7155 + #size-cells = <0>;
7156 +
7157 + pisound_spi: pisound_spi@0{
7158 + compatible = "blokaslabs,pisound-spi";
7159 + reg = <0>;
7160 + pinctrl-names = "default";
7161 + pinctrl-0 = <&spi0_pins>;
7162 + spi-max-frequency = <1000000>;
7163 + };
7164 + };
7165 + };
7166 +};
7167 --- /dev/null
7168 +++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
7169 @@ -0,0 +1,69 @@
7170 +/*
7171 + * Device Tree overlay for pitft by Adafruit
7172 + *
7173 + */
7174 +
7175 +/dts-v1/;
7176 +/plugin/;
7177 +
7178 +/ {
7179 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7180 +
7181 + fragment@0 {
7182 + target = <&spi0>;
7183 + __overlay__ {
7184 + status = "okay";
7185 +
7186 + spidev@0{
7187 + status = "disabled";
7188 + };
7189 +
7190 + spidev@1{
7191 + status = "disabled";
7192 + };
7193 + };
7194 + };
7195 +
7196 + fragment@1 {
7197 + target = <&gpio>;
7198 + __overlay__ {
7199 + pitft_pins: pitft_pins {
7200 + brcm,pins = <25>;
7201 + brcm,function = <1>; /* out */
7202 + brcm,pull = <0>; /* none */
7203 + };
7204 + };
7205 + };
7206 +
7207 + fragment@2 {
7208 + target = <&spi0>;
7209 + __overlay__ {
7210 + /* needed to avoid dtc warning */
7211 + #address-cells = <1>;
7212 + #size-cells = <0>;
7213 +
7214 + pitft: pitft@0{
7215 + compatible = "ilitek,ili9340";
7216 + reg = <0>;
7217 + pinctrl-names = "default";
7218 + pinctrl-0 = <&pitft_pins>;
7219 +
7220 + spi-max-frequency = <32000000>;
7221 + rotate = <90>;
7222 + fps = <25>;
7223 + bgr;
7224 + buswidth = <8>;
7225 + dc-gpios = <&gpio 25 0>;
7226 + debug = <0>;
7227 + };
7228 +
7229 + };
7230 + };
7231 +
7232 + __overrides__ {
7233 + speed = <&pitft>,"spi-max-frequency:0";
7234 + rotate = <&pitft>,"rotate:0";
7235 + fps = <&pitft>,"fps:0";
7236 + debug = <&pitft>,"debug:0";
7237 + };
7238 +};
7239 --- /dev/null
7240 +++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
7241 @@ -0,0 +1,91 @@
7242 +/*
7243 + * Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
7244 + *
7245 + */
7246 +
7247 +/dts-v1/;
7248 +/plugin/;
7249 +
7250 +/ {
7251 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7252 +
7253 + fragment@0 {
7254 + target = <&spi0>;
7255 + __overlay__ {
7256 + status = "okay";
7257 + };
7258 + };
7259 +
7260 + fragment@1 {
7261 + target = <&spidev0>;
7262 + __overlay__ {
7263 + status = "disabled";
7264 + };
7265 + };
7266 +
7267 + fragment@2 {
7268 + target = <&gpio>;
7269 + __overlay__ {
7270 + pitft_pins: pitft_pins {
7271 + brcm,pins = <24 25>;
7272 + brcm,function = <0 1>; /* in out */
7273 + brcm,pull = <2 0>; /* pullup none */
7274 + };
7275 + };
7276 + };
7277 +
7278 + fragment@3 {
7279 + target = <&spi0>;
7280 + __overlay__ {
7281 + /* needed to avoid dtc warning */
7282 + #address-cells = <1>;
7283 + #size-cells = <0>;
7284 +
7285 + pitft: pitft@0{
7286 + compatible = "ilitek,ili9340";
7287 + reg = <0>;
7288 + pinctrl-names = "default";
7289 + pinctrl-0 = <&pitft_pins>;
7290 +
7291 + spi-max-frequency = <32000000>;
7292 + rotate = <90>;
7293 + fps = <25>;
7294 + bgr;
7295 + buswidth = <8>;
7296 + dc-gpios = <&gpio 25 0>;
7297 + debug = <0>;
7298 + };
7299 + };
7300 + };
7301 +
7302 + fragment@4 {
7303 + target = <&i2c1>;
7304 + __overlay__ {
7305 + /* needed to avoid dtc warning */
7306 + #address-cells = <1>;
7307 + #size-cells = <0>;
7308 +
7309 + ft6236: ft6236@38 {
7310 + compatible = "focaltech,ft6236";
7311 + reg = <0x38>;
7312 +
7313 + interrupt-parent = <&gpio>;
7314 + interrupts = <24 2>;
7315 + touchscreen-size-x = <240>;
7316 + touchscreen-size-y = <320>;
7317 + };
7318 + };
7319 + };
7320 +
7321 + __overrides__ {
7322 + speed = <&pitft>,"spi-max-frequency:0";
7323 + rotate = <&pitft>,"rotate:0";
7324 + fps = <&pitft>,"fps:0";
7325 + debug = <&pitft>,"debug:0";
7326 + touch-sizex = <&ft6236>,"touchscreen-size-x?";
7327 + touch-sizey = <&ft6236>,"touchscreen-size-y?";
7328 + touch-invx = <&ft6236>,"touchscreen-inverted-x?";
7329 + touch-invy = <&ft6236>,"touchscreen-inverted-y?";
7330 + touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
7331 + };
7332 +};
7333 --- /dev/null
7334 +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
7335 @@ -0,0 +1,121 @@
7336 +/*
7337 + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
7338 + *
7339 + */
7340 +
7341 +/dts-v1/;
7342 +/plugin/;
7343 +
7344 +/ {
7345 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7346 +
7347 + fragment@0 {
7348 + target = <&spi0>;
7349 + __overlay__ {
7350 + status = "okay";
7351 + };
7352 + };
7353 +
7354 + fragment@1 {
7355 + target = <&spidev0>;
7356 + __overlay__ {
7357 + status = "disabled";
7358 + };
7359 + };
7360 +
7361 + fragment@2 {
7362 + target = <&spidev1>;
7363 + __overlay__ {
7364 + status = "disabled";
7365 + };
7366 + };
7367 +
7368 + fragment@3 {
7369 + target = <&gpio>;
7370 + __overlay__ {
7371 + pitft_pins: pitft_pins {
7372 + brcm,pins = <24 25>;
7373 + brcm,function = <0 1>; /* in out */
7374 + brcm,pull = <2 0>; /* pullup none */
7375 + };
7376 + };
7377 + };
7378 +
7379 + fragment@4 {
7380 + target = <&spi0>;
7381 + __overlay__ {
7382 + /* needed to avoid dtc warning */
7383 + #address-cells = <1>;
7384 + #size-cells = <0>;
7385 +
7386 + pitft: pitft@0{
7387 + compatible = "ilitek,ili9340";
7388 + reg = <0>;
7389 + pinctrl-names = "default";
7390 + pinctrl-0 = <&pitft_pins>;
7391 +
7392 + spi-max-frequency = <32000000>;
7393 + rotate = <90>;
7394 + fps = <25>;
7395 + bgr;
7396 + buswidth = <8>;
7397 + dc-gpios = <&gpio 25 0>;
7398 + debug = <0>;
7399 + };
7400 +
7401 + pitft_ts@1 {
7402 + #address-cells = <1>;
7403 + #size-cells = <0>;
7404 + compatible = "st,stmpe610";
7405 + reg = <1>;
7406 +
7407 + spi-max-frequency = <500000>;
7408 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
7409 + interrupts = <24 2>; /* high-to-low edge triggered */
7410 + interrupt-parent = <&gpio>;
7411 + interrupt-controller;
7412 +
7413 + stmpe_touchscreen {
7414 + compatible = "st,stmpe-ts";
7415 + st,sample-time = <4>;
7416 + st,mod-12b = <1>;
7417 + st,ref-sel = <0>;
7418 + st,adc-freq = <2>;
7419 + st,ave-ctrl = <3>;
7420 + st,touch-det-delay = <4>;
7421 + st,settling = <2>;
7422 + st,fraction-z = <7>;
7423 + st,i-drive = <0>;
7424 + };
7425 +
7426 + stmpe_gpio: stmpe_gpio {
7427 + #gpio-cells = <2>;
7428 + compatible = "st,stmpe-gpio";
7429 + /*
7430 + * only GPIO2 is wired/available
7431 + * and it is wired to the backlight
7432 + */
7433 + st,norequest-mask = <0x7b>;
7434 + };
7435 + };
7436 + };
7437 + };
7438 +
7439 + fragment@5 {
7440 + target-path = "/soc";
7441 + __overlay__ {
7442 + backlight {
7443 + compatible = "gpio-backlight";
7444 + gpios = <&stmpe_gpio 2 0>;
7445 + default-on;
7446 + };
7447 + };
7448 + };
7449 +
7450 + __overrides__ {
7451 + speed = <&pitft>,"spi-max-frequency:0";
7452 + rotate = <&pitft>,"rotate:0";
7453 + fps = <&pitft>,"fps:0";
7454 + debug = <&pitft>,"debug:0";
7455 + };
7456 +};
7457 --- /dev/null
7458 +++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
7459 @@ -0,0 +1,121 @@
7460 +/*
7461 + * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen
7462 + *
7463 + */
7464 +
7465 +/dts-v1/;
7466 +/plugin/;
7467 +
7468 +/ {
7469 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7470 +
7471 + fragment@0 {
7472 + target = <&spi0>;
7473 + __overlay__ {
7474 + status = "okay";
7475 + };
7476 + };
7477 +
7478 + fragment@1 {
7479 + target = <&spidev0>;
7480 + __overlay__ {
7481 + status = "disabled";
7482 + };
7483 + };
7484 +
7485 + fragment@2 {
7486 + target = <&spidev1>;
7487 + __overlay__ {
7488 + status = "disabled";
7489 + };
7490 + };
7491 +
7492 + fragment@3 {
7493 + target = <&gpio>;
7494 + __overlay__ {
7495 + pitft_pins: pitft_pins {
7496 + brcm,pins = <24 25>;
7497 + brcm,function = <0 1>; /* in out */
7498 + brcm,pull = <2 0>; /* pullup none */
7499 + };
7500 + };
7501 + };
7502 +
7503 + fragment@4 {
7504 + target = <&spi0>;
7505 + __overlay__ {
7506 + /* needed to avoid dtc warning */
7507 + #address-cells = <1>;
7508 + #size-cells = <0>;
7509 +
7510 + pitft: pitft@0{
7511 + compatible = "himax,hx8357d";
7512 + reg = <0>;
7513 + pinctrl-names = "default";
7514 + pinctrl-0 = <&pitft_pins>;
7515 +
7516 + spi-max-frequency = <32000000>;
7517 + rotate = <90>;
7518 + fps = <25>;
7519 + bgr;
7520 + buswidth = <8>;
7521 + dc-gpios = <&gpio 25 0>;
7522 + debug = <0>;
7523 + };
7524 +
7525 + pitft_ts@1 {
7526 + #address-cells = <1>;
7527 + #size-cells = <0>;
7528 + compatible = "st,stmpe610";
7529 + reg = <1>;
7530 +
7531 + spi-max-frequency = <500000>;
7532 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
7533 + interrupts = <24 2>; /* high-to-low edge triggered */
7534 + interrupt-parent = <&gpio>;
7535 + interrupt-controller;
7536 +
7537 + stmpe_touchscreen {
7538 + compatible = "st,stmpe-ts";
7539 + st,sample-time = <4>;
7540 + st,mod-12b = <1>;
7541 + st,ref-sel = <0>;
7542 + st,adc-freq = <2>;
7543 + st,ave-ctrl = <3>;
7544 + st,touch-det-delay = <4>;
7545 + st,settling = <2>;
7546 + st,fraction-z = <7>;
7547 + st,i-drive = <0>;
7548 + };
7549 +
7550 + stmpe_gpio: stmpe_gpio {
7551 + #gpio-cells = <2>;
7552 + compatible = "st,stmpe-gpio";
7553 + /*
7554 + * only GPIO2 is wired/available
7555 + * and it is wired to the backlight
7556 + */
7557 + st,norequest-mask = <0x7b>;
7558 + };
7559 + };
7560 + };
7561 + };
7562 +
7563 + fragment@5 {
7564 + target-path = "/soc";
7565 + __overlay__ {
7566 + backlight {
7567 + compatible = "gpio-backlight";
7568 + gpios = <&stmpe_gpio 2 0>;
7569 + default-on;
7570 + };
7571 + };
7572 + };
7573 +
7574 + __overrides__ {
7575 + speed = <&pitft>,"spi-max-frequency:0";
7576 + rotate = <&pitft>,"rotate:0";
7577 + fps = <&pitft>,"fps:0";
7578 + debug = <&pitft>,"debug:0";
7579 + };
7580 +};
7581 --- /dev/null
7582 +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
7583 @@ -0,0 +1,35 @@
7584 +/dts-v1/;
7585 +/plugin/;
7586 +
7587 +/ {
7588 + compatible = "brcm,bcm2708";
7589 + fragment@0 {
7590 + target-path = "/";
7591 + __overlay__ {
7592 + pps: pps {
7593 + compatible = "pps-gpio";
7594 + pinctrl-names = "default";
7595 + pinctrl-0 = <&pps_pins>;
7596 + gpios = <&gpio 18 0>;
7597 + status = "okay";
7598 + };
7599 + };
7600 + };
7601 +
7602 + fragment@1 {
7603 + target = <&gpio>;
7604 + __overlay__ {
7605 + pps_pins: pps_pins {
7606 + brcm,pins = <18>;
7607 + brcm,function = <0>; // in
7608 + brcm,pull = <0>; // off
7609 + };
7610 + };
7611 + };
7612 +
7613 + __overrides__ {
7614 + gpiopin = <&pps>,"gpios:4",
7615 + <&pps_pins>,"brcm,pins:0";
7616 + assert_falling_edge = <&pps>,"assert-falling-edge?";
7617 + };
7618 +};
7619 --- /dev/null
7620 +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
7621 @@ -0,0 +1,47 @@
7622 +/dts-v1/;
7623 +/plugin/;
7624 +
7625 +/*
7626 +This is the 2-channel overlay - only use it if you need both channels.
7627 +
7628 +Legal pin,function combinations for each channel:
7629 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
7630 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
7631 +
7632 +N.B.:
7633 + 1) Pin 18 is the only one available on all platforms, and
7634 + it is the one used by the I2S audio interface.
7635 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
7636 + 2) The onboard analogue audio output uses both PWM channels.
7637 + 3) So be careful mixing audio and PWM.
7638 +*/
7639 +
7640 +/ {
7641 + fragment@0 {
7642 + target = <&gpio>;
7643 + __overlay__ {
7644 + pwm_pins: pwm_pins {
7645 + brcm,pins = <18 19>;
7646 + brcm,function = <2 2>; /* Alt5 */
7647 + };
7648 + };
7649 + };
7650 +
7651 + fragment@1 {
7652 + target = <&pwm>;
7653 + frag1: __overlay__ {
7654 + pinctrl-names = "default";
7655 + pinctrl-0 = <&pwm_pins>;
7656 + assigned-clock-rates = <100000000>;
7657 + status = "okay";
7658 + };
7659 + };
7660 +
7661 + __overrides__ {
7662 + pin = <&pwm_pins>,"brcm,pins:0";
7663 + pin2 = <&pwm_pins>,"brcm,pins:4";
7664 + func = <&pwm_pins>,"brcm,function:0";
7665 + func2 = <&pwm_pins>,"brcm,function:4";
7666 + clock = <&frag1>,"assigned-clock-rates:0";
7667 + };
7668 +};
7669 --- /dev/null
7670 +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
7671 @@ -0,0 +1,43 @@
7672 +/dts-v1/;
7673 +/plugin/;
7674 +
7675 +/*
7676 +Legal pin,function combinations for each channel:
7677 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
7678 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
7679 +
7680 +N.B.:
7681 + 1) Pin 18 is the only one available on all platforms, and
7682 + it is the one used by the I2S audio interface.
7683 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
7684 + 2) The onboard analogue audio output uses both PWM channels.
7685 + 3) So be careful mixing audio and PWM.
7686 +*/
7687 +
7688 +/ {
7689 + fragment@0 {
7690 + target = <&gpio>;
7691 + __overlay__ {
7692 + pwm_pins: pwm_pins {
7693 + brcm,pins = <18>;
7694 + brcm,function = <2>; /* Alt5 */
7695 + };
7696 + };
7697 + };
7698 +
7699 + fragment@1 {
7700 + target = <&pwm>;
7701 + frag1: __overlay__ {
7702 + pinctrl-names = "default";
7703 + pinctrl-0 = <&pwm_pins>;
7704 + assigned-clock-rates = <100000000>;
7705 + status = "okay";
7706 + };
7707 + };
7708 +
7709 + __overrides__ {
7710 + pin = <&pwm_pins>,"brcm,pins:0";
7711 + func = <&pwm_pins>,"brcm,function:0";
7712 + clock = <&frag1>,"assigned-clock-rates:0";
7713 + };
7714 +};
7715 --- /dev/null
7716 +++ b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
7717 @@ -0,0 +1,52 @@
7718 +// Overlay for the Qualcomm Atheros QCA7000 on I2SE's PLC Stamp micro EVK
7719 +// Visit: https://www.i2se.com/product/plc-stamp-micro-evk for details
7720 +
7721 +/dts-v1/;
7722 +/plugin/;
7723 +
7724 +/ {
7725 + compatible = "brcm,bcm2708";
7726 +
7727 + fragment@0 {
7728 + target = <&spi0>;
7729 + __overlay__ {
7730 + /* needed to avoid dtc warning */
7731 + #address-cells = <1>;
7732 + #size-cells = <0>;
7733 +
7734 + status = "okay";
7735 +
7736 + spidev@0 {
7737 + status = "disabled";
7738 + };
7739 +
7740 + eth1: qca7000@0 {
7741 + compatible = "qca,qca7000";
7742 + reg = <0>; /* CE0 */
7743 + pinctrl-names = "default";
7744 + pinctrl-0 = <&eth1_pins>;
7745 + interrupt-parent = <&gpio>;
7746 + interrupts = <23 0x1>; /* rising edge */
7747 + spi-max-frequency = <12000000>;
7748 + status = "okay";
7749 + };
7750 + };
7751 + };
7752 +
7753 + fragment@1 {
7754 + target = <&gpio>;
7755 + __overlay__ {
7756 + eth1_pins: eth1_pins {
7757 + brcm,pins = <23>;
7758 + brcm,function = <0>; /* in */
7759 + brcm,pull = <0>; /* none */
7760 + };
7761 + };
7762 + };
7763 +
7764 + __overrides__ {
7765 + int_pin = <&eth1>, "interrupts:0",
7766 + <&eth1_pins>, "brcm,pins:0";
7767 + speed = <&eth1>, "spi-max-frequency:0";
7768 + };
7769 +};
7770 --- /dev/null
7771 +++ b/arch/arm/boot/dts/overlays/raspidac3-overlay.dts
7772 @@ -0,0 +1,45 @@
7773 +// Definitions for RaspiDACv3
7774 +/dts-v1/;
7775 +/plugin/;
7776 +
7777 +/ {
7778 + compatible = "brcm,bcm2708";
7779 +
7780 + fragment@0 {
7781 + target = <&i2s>;
7782 + __overlay__ {
7783 + status = "okay";
7784 + };
7785 + };
7786 +
7787 + fragment@1 {
7788 + target = <&i2c1>;
7789 + __overlay__ {
7790 + #address-cells = <1>;
7791 + #size-cells = <0>;
7792 + status = "okay";
7793 +
7794 + pcm5122@4c {
7795 + #sound-dai-cells = <0>;
7796 + compatible = "ti,pcm5122";
7797 + reg = <0x4c>;
7798 + status = "okay";
7799 + };
7800 +
7801 + tpa6130a2: tpa6130a2@60 {
7802 + compatible = "ti,tpa6130a2";
7803 + reg = <0x60>;
7804 + status = "okay";
7805 + };
7806 + };
7807 + };
7808 +
7809 + fragment@2 {
7810 + target = <&sound>;
7811 + __overlay__ {
7812 + compatible = "jg,raspidacv3";
7813 + i2s-controller = <&i2s>;
7814 + status = "okay";
7815 + };
7816 + };
7817 +};
7818 --- /dev/null
7819 +++ b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
7820 @@ -0,0 +1,21 @@
7821 +/*
7822 + * Devicetree overlay for mailbox-driven Raspberry Pi DSI Display
7823 + * backlight controller
7824 + */
7825 +/dts-v1/;
7826 +/plugin/;
7827 +
7828 +/ {
7829 + compatible = "brcm,bcm2708";
7830 +
7831 + fragment@0 {
7832 + target-path = "/";
7833 + __overlay__ {
7834 + rpi_backlight: rpi_backlight {
7835 + compatible = "raspberrypi,rpi-backlight";
7836 + firmware = <&firmware>;
7837 + status = "okay";
7838 + };
7839 + };
7840 + };
7841 +};
7842 --- /dev/null
7843 +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
7844 @@ -0,0 +1,34 @@
7845 +// Definitions for RPi DAC
7846 +/dts-v1/;
7847 +/plugin/;
7848 +
7849 +/ {
7850 + compatible = "brcm,bcm2708";
7851 +
7852 + fragment@0 {
7853 + target = <&i2s>;
7854 + __overlay__ {
7855 + status = "okay";
7856 + };
7857 + };
7858 +
7859 + fragment@1 {
7860 + target-path = "/";
7861 + __overlay__ {
7862 + pcm1794a-codec {
7863 + #sound-dai-cells = <0>;
7864 + compatible = "ti,pcm1794a";
7865 + status = "okay";
7866 + };
7867 + };
7868 + };
7869 +
7870 + fragment@2 {
7871 + target = <&sound>;
7872 + __overlay__ {
7873 + compatible = "rpi,rpi-dac";
7874 + i2s-controller = <&i2s>;
7875 + status = "okay";
7876 + };
7877 + };
7878 +};
7879 --- /dev/null
7880 +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
7881 @@ -0,0 +1,89 @@
7882 +/*
7883 + * Device Tree overlay for rpi-display by Watterott
7884 + *
7885 + */
7886 +
7887 +/dts-v1/;
7888 +/plugin/;
7889 +
7890 +/ {
7891 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7892 +
7893 + fragment@0 {
7894 + target = <&spi0>;
7895 + __overlay__ {
7896 + status = "okay";
7897 + };
7898 + };
7899 +
7900 + fragment@1 {
7901 + target = <&spidev0>;
7902 + __overlay__ {
7903 + status = "disabled";
7904 + };
7905 + };
7906 +
7907 + fragment@2 {
7908 + target = <&spidev1>;
7909 + __overlay__ {
7910 + status = "disabled";
7911 + };
7912 + };
7913 +
7914 + fragment@3 {
7915 + target = <&gpio>;
7916 + __overlay__ {
7917 + rpi_display_pins: rpi_display_pins {
7918 + brcm,pins = <18 23 24 25>;
7919 + brcm,function = <1 1 1 0>; /* out out out in */
7920 + brcm,pull = <0 0 0 2>; /* - - - up */
7921 + };
7922 + };
7923 + };
7924 +
7925 + fragment@4 {
7926 + target = <&spi0>;
7927 + __overlay__ {
7928 + /* needed to avoid dtc warning */
7929 + #address-cells = <1>;
7930 + #size-cells = <0>;
7931 +
7932 + rpidisplay: rpi-display@0{
7933 + compatible = "ilitek,ili9341";
7934 + reg = <0>;
7935 + pinctrl-names = "default";
7936 + pinctrl-0 = <&rpi_display_pins>;
7937 +
7938 + spi-max-frequency = <32000000>;
7939 + rotate = <270>;
7940 + bgr;
7941 + fps = <30>;
7942 + buswidth = <8>;
7943 + reset-gpios = <&gpio 23 0>;
7944 + dc-gpios = <&gpio 24 0>;
7945 + led-gpios = <&gpio 18 1>;
7946 + debug = <0>;
7947 + };
7948 +
7949 + rpidisplay_ts: rpi-display-ts@1 {
7950 + compatible = "ti,ads7846";
7951 + reg = <1>;
7952 +
7953 + spi-max-frequency = <2000000>;
7954 + interrupts = <25 2>; /* high-to-low edge triggered */
7955 + interrupt-parent = <&gpio>;
7956 + pendown-gpio = <&gpio 25 0>;
7957 + ti,x-plate-ohms = /bits/ 16 <60>;
7958 + ti,pressure-max = /bits/ 16 <255>;
7959 + };
7960 + };
7961 + };
7962 + __overrides__ {
7963 + speed = <&rpidisplay>,"spi-max-frequency:0";
7964 + rotate = <&rpidisplay>,"rotate:0";
7965 + fps = <&rpidisplay>,"fps:0";
7966 + debug = <&rpidisplay>,"debug:0";
7967 + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
7968 + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
7969 + };
7970 +};
7971 --- /dev/null
7972 +++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
7973 @@ -0,0 +1,17 @@
7974 +/dts-v1/;
7975 +/plugin/;
7976 +
7977 +/ {
7978 + compatible = "brcm,bcm2708";
7979 +
7980 + fragment@0 {
7981 + target-path = "/";
7982 + __overlay__ {
7983 + rpi_ft5406: rpi_ft5406 {
7984 + compatible = "rpi,rpi-ft5406";
7985 + firmware = <&firmware>;
7986 + status = "okay";
7987 + };
7988 + };
7989 + };
7990 +};
7991 --- /dev/null
7992 +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
7993 @@ -0,0 +1,39 @@
7994 +// Definitions for Rpi-Proto
7995 +/dts-v1/;
7996 +/plugin/;
7997 +
7998 +/ {
7999 + compatible = "brcm,bcm2708";
8000 +
8001 + fragment@0 {
8002 + target = <&i2s>;
8003 + __overlay__ {
8004 + status = "okay";
8005 + };
8006 + };
8007 +
8008 + fragment@1 {
8009 + target = <&i2c1>;
8010 + __overlay__ {
8011 + #address-cells = <1>;
8012 + #size-cells = <0>;
8013 + status = "okay";
8014 +
8015 + wm8731@1a {
8016 + #sound-dai-cells = <0>;
8017 + compatible = "wlf,wm8731";
8018 + reg = <0x1a>;
8019 + status = "okay";
8020 + };
8021 + };
8022 + };
8023 +
8024 + fragment@2 {
8025 + target = <&sound>;
8026 + __overlay__ {
8027 + compatible = "rpi,rpi-proto";
8028 + i2s-controller = <&i2s>;
8029 + status = "okay";
8030 + };
8031 + };
8032 +};
8033 --- /dev/null
8034 +++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
8035 @@ -0,0 +1,47 @@
8036 +// rpi-sense HAT
8037 +/dts-v1/;
8038 +/plugin/;
8039 +
8040 +/ {
8041 + compatible = "brcm,bcm2708", "brcm,bcm2709";
8042 +
8043 + fragment@0 {
8044 + target = <&i2c1>;
8045 + __overlay__ {
8046 + #address-cells = <1>;
8047 + #size-cells = <0>;
8048 + status = "okay";
8049 +
8050 + rpi-sense@46 {
8051 + compatible = "rpi,rpi-sense";
8052 + reg = <0x46>;
8053 + keys-int-gpios = <&gpio 23 1>;
8054 + status = "okay";
8055 + };
8056 +
8057 + lsm9ds1-magn@1c {
8058 + compatible = "st,lsm9ds1-magn";
8059 + reg = <0x1c>;
8060 + status = "okay";
8061 + };
8062 +
8063 + lsm9ds1-accel6a {
8064 + compatible = "st,lsm9ds1-accel";
8065 + reg = <0x6a>;
8066 + status = "okay";
8067 + };
8068 +
8069 + lps25h-press@5c {
8070 + compatible = "st,lps25h-press";
8071 + reg = <0x5c>;
8072 + status = "okay";
8073 + };
8074 +
8075 + hts221-humid@5f {
8076 + compatible = "st,hts221-humid";
8077 + reg = <0x5f>;
8078 + status = "okay";
8079 + };
8080 + };
8081 + };
8082 +};
8083 --- /dev/null
8084 +++ b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
8085 @@ -0,0 +1,81 @@
8086 +// Definitions for RRA DigiDAC1 Audio card
8087 +/dts-v1/;
8088 +/plugin/;
8089 +
8090 +/ {
8091 + compatible = "brcm,bcm2708";
8092 +
8093 + fragment@0 {
8094 + target-path = "/";
8095 + __overlay__ {
8096 + aliases {
8097 + ldo0 = &ldo0;
8098 + ldo1 = &ldo1;
8099 + };
8100 + };
8101 + };
8102 +
8103 + fragment@1 {
8104 + target-path = "/soc";
8105 + __overlay__ {
8106 +
8107 + ldo1: ldo1 {
8108 + compatible = "regulator-fixed";
8109 + regulator-name = "DC_5V";
8110 + regulator-min-microvolt = <5000000>;
8111 + regulator-max-microvolt = <5000000>;
8112 + regulator-always-on;
8113 + };
8114 +
8115 + ldo0: ldo0 {
8116 + compatible = "regulator-fixed";
8117 + regulator-name = "DC_3V3";
8118 + regulator-min-microvolt = <3300000>;
8119 + regulator-max-microvolt = <3300000>;
8120 + regulator-always-on;
8121 + };
8122 + };
8123 + };
8124 +
8125 + fragment@2 {
8126 + target = <&i2s>;
8127 + __overlay__ {
8128 + status = "okay";
8129 + };
8130 + };
8131 +
8132 + fragment@3 {
8133 + target = <&i2c1>;
8134 + __overlay__ {
8135 + #address-cells = <1>;
8136 + #size-cells = <0>;
8137 + status = "okay";
8138 +
8139 + wm8804@3b {
8140 + #sound-dai-cells = <0>;
8141 + compatible = "wlf,wm8804";
8142 + reg = <0x3b>;
8143 + status = "okay";
8144 + PVDD-supply = <&ldo0>;
8145 + DVDD-supply = <&ldo0>;
8146 + };
8147 +
8148 + wm8742: wm8741@1a {
8149 + compatible = "wlf,wm8741";
8150 + reg = <0x1a>;
8151 + status = "okay";
8152 + AVDD-supply = <&ldo1>;
8153 + DVDD-supply = <&ldo0>;
8154 + };
8155 + };
8156 + };
8157 +
8158 + fragment@4 {
8159 + target = <&sound>;
8160 + __overlay__ {
8161 + compatible = "rra,digidac1-soundcard";
8162 + i2s-controller = <&i2s>;
8163 + status = "okay";
8164 + };
8165 + };
8166 +};
8167 --- /dev/null
8168 +++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
8169 @@ -0,0 +1,37 @@
8170 +/dts-v1/;
8171 +/plugin/;
8172 +
8173 +/ {
8174 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8175 +
8176 + fragment@0 {
8177 + target = <&i2c_arm>;
8178 + __overlay__ {
8179 + #address-cells = <1>;
8180 + #size-cells = <0>;
8181 + status = "okay";
8182 +
8183 + sc16is750: sc16is750@48 {
8184 + compatible = "nxp,sc16is750";
8185 + reg = <0x48>; /* address */
8186 + clocks = <&sc16is750_clk>;
8187 + interrupt-parent = <&gpio>;
8188 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
8189 + #gpio-cells = <2>;
8190 +
8191 + sc16is750_clk: sc16is750_clk {
8192 + compatible = "fixed-clock";
8193 + #clock-cells = <0>;
8194 + clock-frequency = <14745600>;
8195 + };
8196 + };
8197 + };
8198 + };
8199 +
8200 +
8201 + __overrides__ {
8202 + int_pin = <&sc16is750>,"interrupts:0";
8203 + addr = <&sc16is750>,"reg:0";
8204 + };
8205 +
8206 +};
8207 --- /dev/null
8208 +++ b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
8209 @@ -0,0 +1,61 @@
8210 +/dts-v1/;
8211 +/plugin/;
8212 +
8213 +/ {
8214 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8215 +
8216 + fragment@0 {
8217 + target = <&gpio>;
8218 + __overlay__ {
8219 + spi1_pins: spi1_pins {
8220 + brcm,pins = <19 20 21>;
8221 + brcm,function = <3>; /* alt4 */
8222 + };
8223 +
8224 + spi1_cs_pins: spi1_cs_pins {
8225 + brcm,pins = <18>;
8226 + brcm,function = <1>; /* output */
8227 + };
8228 + };
8229 + };
8230 +
8231 + fragment@1 {
8232 + target = <&spi1>;
8233 + frag1: __overlay__ {
8234 + #address-cells = <1>;
8235 + #size-cells = <0>;
8236 + pinctrl-names = "default";
8237 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
8238 + cs-gpios = <&gpio 18 1>;
8239 + status = "okay";
8240 +
8241 + sc16is752: sc16is752@0 {
8242 + compatible = "nxp,sc16is752";
8243 + reg = <0>; /* CE0 */
8244 + clocks = <&sc16is752_clk>;
8245 + interrupt-parent = <&gpio>;
8246 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
8247 + #gpio-controller;
8248 + #gpio-cells = <2>;
8249 + spi-max-frequency = <4000000>;
8250 +
8251 + sc16is752_clk: sc16is752_clk {
8252 + compatible = "fixed-clock";
8253 + #clock-cells = <0>;
8254 + clock-frequency = <14745600>;
8255 + };
8256 + };
8257 + };
8258 + };
8259 +
8260 + fragment@2 {
8261 + target = <&aux>;
8262 + __overlay__ {
8263 + status = "okay";
8264 + };
8265 + };
8266 +
8267 + __overrides__ {
8268 + int_pin = <&sc16is752>,"interrupts:0";
8269 + };
8270 +};
8271 --- /dev/null
8272 +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
8273 @@ -0,0 +1,32 @@
8274 +/dts-v1/;
8275 +/plugin/;
8276 +
8277 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
8278 +
8279 +/{
8280 + compatible = "brcm,bcm2708";
8281 +
8282 + fragment@0 {
8283 + target = <&sdhost>;
8284 + frag0: __overlay__ {
8285 + brcm,overclock-50 = <0>;
8286 + brcm,pio-limit = <1>;
8287 + brcm,debug-flags = <0>;
8288 + status = "okay";
8289 + };
8290 + };
8291 +
8292 + fragment@1 {
8293 + target = <&mmc>;
8294 + __overlay__ {
8295 + status = "disabled";
8296 + };
8297 + };
8298 +
8299 + __overrides__ {
8300 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
8301 + force_pio = <&frag0>,"brcm,force-pio?";
8302 + pio_limit = <&frag0>,"brcm,pio-limit:0";
8303 + debug = <&frag0>,"brcm,debug?";
8304 + };
8305 +};
8306 --- /dev/null
8307 +++ b/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
8308 @@ -0,0 +1,36 @@
8309 +/* Enable 1-bit SDIO from MMC interface via GPIOs 22-25. Includes sdhost overlay. */
8310 +
8311 +/include/ "sdhost-overlay.dts"
8312 +
8313 +/{
8314 + compatible = "brcm,bcm2708";
8315 +
8316 + fragment@3 {
8317 + target = <&mmc>;
8318 + sdio_mmc: __overlay__ {
8319 + compatible = "brcm,bcm2835-mmc";
8320 + pinctrl-names = "default";
8321 + pinctrl-0 = <&sdio_pins>;
8322 + non-removable;
8323 + bus-width = <1>;
8324 + brcm,overclock-50 = <0>;
8325 + status = "okay";
8326 + };
8327 + };
8328 +
8329 + fragment@4 {
8330 + target = <&gpio>;
8331 + __overlay__ {
8332 + sdio_pins: sdio_pins {
8333 + brcm,pins = <22 23 24 25>;
8334 + brcm,function = <7 7 7 7>; /* ALT3 = SD1 */
8335 + brcm,pull = <0 2 2 2>;
8336 + };
8337 + };
8338 + };
8339 +
8340 + __overrides__ {
8341 + poll_once = <&sdio_mmc>,"non-removable?";
8342 + sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
8343 + };
8344 +};
8345 --- /dev/null
8346 +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
8347 @@ -0,0 +1,36 @@
8348 +/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
8349 +
8350 +/include/ "sdhost-overlay.dts"
8351 +
8352 +/{
8353 + compatible = "brcm,bcm2708";
8354 +
8355 + fragment@3 {
8356 + target = <&mmc>;
8357 + sdio_mmc: __overlay__ {
8358 + pinctrl-names = "default";
8359 + pinctrl-0 = <&sdio_pins>;
8360 + non-removable;
8361 + bus-width = <4>;
8362 + brcm,overclock-50 = <0>;
8363 + status = "okay";
8364 + };
8365 + };
8366 +
8367 + fragment@4 {
8368 + target = <&gpio>;
8369 + __overlay__ {
8370 + sdio_pins: sdio_pins {
8371 + brcm,pins = <22 23 24 25 26 27>;
8372 + brcm,function = <7 7 7 7 7 7>; /* ALT3 = SD1 */
8373 + brcm,pull = <0 2 2 2 2 2>;
8374 + };
8375 + };
8376 + };
8377 +
8378 + __overrides__ {
8379 + poll_once = <&sdio_mmc>,"non-removable?";
8380 + bus_width = <&sdio_mmc>,"bus-width:0";
8381 + sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
8382 + };
8383 +};
8384 --- /dev/null
8385 +++ b/arch/arm/boot/dts/overlays/sdtweak-overlay.dts
8386 @@ -0,0 +1,23 @@
8387 +/dts-v1/;
8388 +/plugin/;
8389 +
8390 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
8391 +
8392 +/{
8393 + compatible = "brcm,bcm2708";
8394 +
8395 + fragment@0 {
8396 + target = <&sdhost>;
8397 + frag0: __overlay__ {
8398 + brcm,overclock-50 = <0>;
8399 + brcm,pio-limit = <1>;
8400 + };
8401 + };
8402 +
8403 + __overrides__ {
8404 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
8405 + force_pio = <&frag0>,"brcm,force-pio?";
8406 + pio_limit = <&frag0>,"brcm,pio-limit:0";
8407 + debug = <&frag0>,"brcm,debug?";
8408 + };
8409 +};
8410 --- /dev/null
8411 +++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
8412 @@ -0,0 +1,18 @@
8413 +// Description: Overlay to enable character device interface for SMI.
8414 +// Author: Luke Wren <luke@raspberrypi.org>
8415 +
8416 +/dts-v1/;
8417 +/plugin/;
8418 +
8419 +/{
8420 + fragment@0 {
8421 + target = <&soc>;
8422 + __overlay__ {
8423 + smi_dev {
8424 + compatible = "brcm,bcm2835-smi-dev";
8425 + smi_handle = <&smi>;
8426 + status = "okay";
8427 + };
8428 + };
8429 + };
8430 +};
8431 --- /dev/null
8432 +++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
8433 @@ -0,0 +1,69 @@
8434 +// Description: Overlay to enable NAND flash through
8435 +// the secondary memory interface
8436 +// Author: Luke Wren
8437 +
8438 +/dts-v1/;
8439 +/plugin/;
8440 +
8441 +/{
8442 + compatible = "brcm,bcm2708";
8443 +
8444 + fragment@0 {
8445 + target = <&smi>;
8446 + __overlay__ {
8447 + pinctrl-names = "default";
8448 + pinctrl-0 = <&smi_pins>;
8449 + status = "okay";
8450 + };
8451 + };
8452 +
8453 + fragment@1 {
8454 + target = <&soc>;
8455 + __overlay__ {
8456 + #address-cells = <1>;
8457 + #size-cells = <1>;
8458 +
8459 + nand: flash@0 {
8460 + compatible = "brcm,bcm2835-smi-nand";
8461 + smi_handle = <&smi>;
8462 + #address-cells = <1>;
8463 + #size-cells = <1>;
8464 + status = "okay";
8465 +
8466 + partition@0 {
8467 + label = "stage2";
8468 + // 128k
8469 + reg = <0 0x20000>;
8470 + read-only;
8471 + };
8472 + partition@1 {
8473 + label = "firmware";
8474 + // 16M
8475 + reg = <0x20000 0x1000000>;
8476 + read-only;
8477 + };
8478 + partition@2 {
8479 + label = "root";
8480 + // 2G (will need to use 64 bit for >=4G)
8481 + reg = <0x1020000 0x80000000>;
8482 + };
8483 + };
8484 + };
8485 + };
8486 +
8487 + fragment@2 {
8488 + target = <&gpio>;
8489 + __overlay__ {
8490 + smi_pins: smi_pins {
8491 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
8492 + 12 13 14 15>;
8493 + /* Alt 1: SMI */
8494 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5
8495 + 5 5 5 5 5>;
8496 + /* /CS, /WE and /OE are pulled high, as they are
8497 + generally active low signals */
8498 + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
8499 + };
8500 + };
8501 + };
8502 +};
8503 --- /dev/null
8504 +++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
8505 @@ -0,0 +1,37 @@
8506 +// Description: Overlay to enable the secondary memory interface peripheral
8507 +// Author: Luke Wren
8508 +
8509 +/dts-v1/;
8510 +/plugin/;
8511 +
8512 +/{
8513 + compatible = "brcm,bcm2708";
8514 +
8515 + fragment@0 {
8516 + target = <&smi>;
8517 + __overlay__ {
8518 + pinctrl-names = "default";
8519 + pinctrl-0 = <&smi_pins>;
8520 + status = "okay";
8521 + };
8522 + };
8523 +
8524 + fragment@1 {
8525 + target = <&gpio>;
8526 + __overlay__ {
8527 + smi_pins: smi_pins {
8528 + /* Don't configure the top two address bits, as
8529 + these are already used as ID_SD and ID_SC */
8530 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15
8531 + 16 17 18 19 20 21 22 23 24 25>;
8532 + /* Alt 0: SMI */
8533 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
8534 + 5 5 5 5 5 5 5 5 5>;
8535 + /* /CS, /WE and /OE are pulled high, as they are
8536 + generally active low signals */
8537 + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
8538 + 0 0 0 0 0 0 0>;
8539 + };
8540 + };
8541 + };
8542 +};
8543 --- /dev/null
8544 +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
8545 @@ -0,0 +1,31 @@
8546 +/*
8547 + * Device tree overlay to move spi0 to gpio 35 to 39 on CM
8548 + */
8549 +
8550 +/dts-v1/;
8551 +/plugin/;
8552 +
8553 +/ {
8554 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
8555 +
8556 + fragment@0 {
8557 + target = <&spi0>;
8558 + __overlay__ {
8559 + cs-gpios = <&gpio 36 1>, <&gpio 35 1>;
8560 + };
8561 + };
8562 +
8563 + fragment@1 {
8564 + target = <&spi0_cs_pins>;
8565 + __overlay__ {
8566 + brcm,pins = <36 35>;
8567 + };
8568 + };
8569 +
8570 + fragment@2 {
8571 + target = <&spi0_pins>;
8572 + __overlay__ {
8573 + brcm,pins = <37 38 39>;
8574 + };
8575 + };
8576 +};
8577 --- /dev/null
8578 +++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
8579 @@ -0,0 +1,33 @@
8580 +/dts-v1/;
8581 +/plugin/;
8582 +
8583 +/ {
8584 + compatible = "brcm,bcm2708";
8585 +
8586 + fragment@0 {
8587 + target = <&spidev0>;
8588 + __dormant__ {
8589 + status = "disabled";
8590 + };
8591 + };
8592 +
8593 + fragment@1 {
8594 + target = <&spi0>;
8595 + __dormant__ {
8596 + #address-cells = <1>;
8597 + #size-cells = <0>;
8598 + status = "okay";
8599 +
8600 + rtc-pcf2123@0 {
8601 + compatible = "nxp,rtc-pcf2123";
8602 + spi-max-frequency = <5000000>;
8603 + spi-cs-high = <1>;
8604 + reg = <0>;
8605 + };
8606 + };
8607 + };
8608 +
8609 + __overrides__ {
8610 + pcf2123 = <0>, "=0=1";
8611 + };
8612 +};
8613 --- /dev/null
8614 +++ b/arch/arm/boot/dts/overlays/spi0-hw-cs-overlay.dts
8615 @@ -0,0 +1,26 @@
8616 +/*
8617 + * Device tree overlay to re-enable hardware CS for SPI0
8618 + */
8619 +
8620 +/dts-v1/;
8621 +/plugin/;
8622 +
8623 +/ {
8624 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
8625 +
8626 + fragment@0 {
8627 + target = <&spi0>;
8628 + __overlay__ {
8629 + cs-gpios = <0>, <0>;
8630 + status = "okay";
8631 + };
8632 + };
8633 +
8634 + fragment@1 {
8635 + target = <&spi0_cs_pins>;
8636 + __overlay__ {
8637 + brcm,pins = <8 7>;
8638 + brcm,function = <4>; /* alt0 */
8639 + };
8640 + };
8641 +};
8642 --- /dev/null
8643 +++ b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
8644 @@ -0,0 +1,57 @@
8645 +/dts-v1/;
8646 +/plugin/;
8647 +
8648 +
8649 +/ {
8650 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8651 +
8652 + fragment@0 {
8653 + target = <&gpio>;
8654 + __overlay__ {
8655 + spi1_pins: spi1_pins {
8656 + brcm,pins = <19 20 21>;
8657 + brcm,function = <3>; /* alt4 */
8658 + };
8659 +
8660 + spi1_cs_pins: spi1_cs_pins {
8661 + brcm,pins = <18>;
8662 + brcm,function = <1>; /* output */
8663 + };
8664 + };
8665 + };
8666 +
8667 + fragment@1 {
8668 + target = <&spi1>;
8669 + frag1: __overlay__ {
8670 + /* needed to avoid dtc warning */
8671 + #address-cells = <1>;
8672 + #size-cells = <0>;
8673 + pinctrl-names = "default";
8674 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
8675 + cs-gpios = <&gpio 18 1>;
8676 + status = "okay";
8677 +
8678 + spidev1_0: spidev@0 {
8679 + compatible = "spidev";
8680 + reg = <0>; /* CE0 */
8681 + #address-cells = <1>;
8682 + #size-cells = <0>;
8683 + spi-max-frequency = <500000>;
8684 + status = "okay";
8685 + };
8686 + };
8687 + };
8688 +
8689 + fragment@2 {
8690 + target = <&aux>;
8691 + __overlay__ {
8692 + status = "okay";
8693 + };
8694 + };
8695 +
8696 + __overrides__ {
8697 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
8698 + <&frag1>,"cs-gpios:4";
8699 + cs0_spidev = <&spidev1_0>,"status";
8700 + };
8701 +};
8702 --- /dev/null
8703 +++ b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
8704 @@ -0,0 +1,69 @@
8705 +/dts-v1/;
8706 +/plugin/;
8707 +
8708 +
8709 +/ {
8710 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8711 +
8712 + fragment@0 {
8713 + target = <&gpio>;
8714 + __overlay__ {
8715 + spi1_pins: spi1_pins {
8716 + brcm,pins = <19 20 21>;
8717 + brcm,function = <3>; /* alt4 */
8718 + };
8719 +
8720 + spi1_cs_pins: spi1_cs_pins {
8721 + brcm,pins = <18 17>;
8722 + brcm,function = <1>; /* output */
8723 + };
8724 + };
8725 + };
8726 +
8727 + fragment@1 {
8728 + target = <&spi1>;
8729 + frag1: __overlay__ {
8730 + /* needed to avoid dtc warning */
8731 + #address-cells = <1>;
8732 + #size-cells = <0>;
8733 + pinctrl-names = "default";
8734 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
8735 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>;
8736 + status = "okay";
8737 +
8738 + spidev1_0: spidev@0 {
8739 + compatible = "spidev";
8740 + reg = <0>; /* CE0 */
8741 + #address-cells = <1>;
8742 + #size-cells = <0>;
8743 + spi-max-frequency = <500000>;
8744 + status = "okay";
8745 + };
8746 +
8747 + spidev1_1: spidev@1 {
8748 + compatible = "spidev";
8749 + reg = <1>; /* CE1 */
8750 + #address-cells = <1>;
8751 + #size-cells = <0>;
8752 + spi-max-frequency = <500000>;
8753 + status = "okay";
8754 + };
8755 + };
8756 + };
8757 +
8758 + fragment@2 {
8759 + target = <&aux>;
8760 + __overlay__ {
8761 + status = "okay";
8762 + };
8763 + };
8764 +
8765 + __overrides__ {
8766 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
8767 + <&frag1>,"cs-gpios:4";
8768 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
8769 + <&frag1>,"cs-gpios:16";
8770 + cs0_spidev = <&spidev1_0>,"status";
8771 + cs1_spidev = <&spidev1_1>,"status";
8772 + };
8773 +};
8774 --- /dev/null
8775 +++ b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
8776 @@ -0,0 +1,81 @@
8777 +/dts-v1/;
8778 +/plugin/;
8779 +
8780 +
8781 +/ {
8782 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8783 +
8784 + fragment@0 {
8785 + target = <&gpio>;
8786 + __overlay__ {
8787 + spi1_pins: spi1_pins {
8788 + brcm,pins = <19 20 21>;
8789 + brcm,function = <3>; /* alt4 */
8790 + };
8791 +
8792 + spi1_cs_pins: spi1_cs_pins {
8793 + brcm,pins = <18 17 16>;
8794 + brcm,function = <1>; /* output */
8795 + };
8796 + };
8797 + };
8798 +
8799 + fragment@1 {
8800 + target = <&spi1>;
8801 + frag1: __overlay__ {
8802 + /* needed to avoid dtc warning */
8803 + #address-cells = <1>;
8804 + #size-cells = <0>;
8805 + pinctrl-names = "default";
8806 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
8807 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>, <&gpio 16 1>;
8808 + status = "okay";
8809 +
8810 + spidev1_0: spidev@0 {
8811 + compatible = "spidev";
8812 + reg = <0>; /* CE0 */
8813 + #address-cells = <1>;
8814 + #size-cells = <0>;
8815 + spi-max-frequency = <500000>;
8816 + status = "okay";
8817 + };
8818 +
8819 + spidev1_1: spidev@1 {
8820 + compatible = "spidev";
8821 + reg = <1>; /* CE1 */
8822 + #address-cells = <1>;
8823 + #size-cells = <0>;
8824 + spi-max-frequency = <500000>;
8825 + status = "okay";
8826 + };
8827 +
8828 + spidev1_2: spidev@2 {
8829 + compatible = "spidev";
8830 + reg = <2>; /* CE2 */
8831 + #address-cells = <1>;
8832 + #size-cells = <0>;
8833 + spi-max-frequency = <500000>;
8834 + status = "okay";
8835 + };
8836 + };
8837 + };
8838 +
8839 + fragment@2 {
8840 + target = <&aux>;
8841 + __overlay__ {
8842 + status = "okay";
8843 + };
8844 + };
8845 +
8846 + __overrides__ {
8847 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
8848 + <&frag1>,"cs-gpios:4";
8849 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
8850 + <&frag1>,"cs-gpios:16";
8851 + cs2_pin = <&spi1_cs_pins>,"brcm,pins:8",
8852 + <&frag1>,"cs-gpios:28";
8853 + cs0_spidev = <&spidev1_0>,"status";
8854 + cs1_spidev = <&spidev1_1>,"status";
8855 + cs2_spidev = <&spidev1_2>,"status";
8856 + };
8857 +};
8858 --- /dev/null
8859 +++ b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
8860 @@ -0,0 +1,57 @@
8861 +/dts-v1/;
8862 +/plugin/;
8863 +
8864 +
8865 +/ {
8866 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8867 +
8868 + fragment@0 {
8869 + target = <&gpio>;
8870 + __overlay__ {
8871 + spi2_pins: spi2_pins {
8872 + brcm,pins = <40 41 42>;
8873 + brcm,function = <3>; /* alt4 */
8874 + };
8875 +
8876 + spi2_cs_pins: spi2_cs_pins {
8877 + brcm,pins = <43>;
8878 + brcm,function = <1>; /* output */
8879 + };
8880 + };
8881 + };
8882 +
8883 + fragment@1 {
8884 + target = <&spi2>;
8885 + frag1: __overlay__ {
8886 + /* needed to avoid dtc warning */
8887 + #address-cells = <1>;
8888 + #size-cells = <0>;
8889 + pinctrl-names = "default";
8890 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
8891 + cs-gpios = <&gpio 43 1>;
8892 + status = "okay";
8893 +
8894 + spidev2_0: spidev@0 {
8895 + compatible = "spidev";
8896 + reg = <0>; /* CE0 */
8897 + #address-cells = <1>;
8898 + #size-cells = <0>;
8899 + spi-max-frequency = <500000>;
8900 + status = "okay";
8901 + };
8902 + };
8903 + };
8904 +
8905 + fragment@2 {
8906 + target = <&aux>;
8907 + __overlay__ {
8908 + status = "okay";
8909 + };
8910 + };
8911 +
8912 + __overrides__ {
8913 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
8914 + <&frag1>,"cs-gpios:4";
8915 + cs0_spidev = <&spidev2_0>,"status";
8916 + };
8917 +};
8918 --- /dev/null
8919 +++ b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
8920 @@ -0,0 +1,69 @@
8921 +/dts-v1/;
8922 +/plugin/;
8923 +
8924 +
8925 +/ {
8926 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8927 +
8928 + fragment@0 {
8929 + target = <&gpio>;
8930 + __overlay__ {
8931 + spi2_pins: spi2_pins {
8932 + brcm,pins = <40 41 42>;
8933 + brcm,function = <3>; /* alt4 */
8934 + };
8935 +
8936 + spi2_cs_pins: spi2_cs_pins {
8937 + brcm,pins = <43 44>;
8938 + brcm,function = <1>; /* output */
8939 + };
8940 + };
8941 + };
8942 +
8943 + fragment@1 {
8944 + target = <&spi2>;
8945 + frag1: __overlay__ {
8946 + /* needed to avoid dtc warning */
8947 + #address-cells = <1>;
8948 + #size-cells = <0>;
8949 + pinctrl-names = "default";
8950 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
8951 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>;
8952 + status = "okay";
8953 +
8954 + spidev2_0: spidev@0 {
8955 + compatible = "spidev";
8956 + reg = <0>; /* CE0 */
8957 + #address-cells = <1>;
8958 + #size-cells = <0>;
8959 + spi-max-frequency = <500000>;
8960 + status = "okay";
8961 + };
8962 +
8963 + spidev2_1: spidev@1 {
8964 + compatible = "spidev";
8965 + reg = <1>; /* CE1 */
8966 + #address-cells = <1>;
8967 + #size-cells = <0>;
8968 + spi-max-frequency = <500000>;
8969 + status = "okay";
8970 + };
8971 + };
8972 + };
8973 +
8974 + fragment@2 {
8975 + target = <&aux>;
8976 + __overlay__ {
8977 + status = "okay";
8978 + };
8979 + };
8980 +
8981 + __overrides__ {
8982 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
8983 + <&frag1>,"cs-gpios:4";
8984 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
8985 + <&frag1>,"cs-gpios:16";
8986 + cs0_spidev = <&spidev2_0>,"status";
8987 + cs1_spidev = <&spidev2_1>,"status";
8988 + };
8989 +};
8990 --- /dev/null
8991 +++ b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
8992 @@ -0,0 +1,81 @@
8993 +/dts-v1/;
8994 +/plugin/;
8995 +
8996 +
8997 +/ {
8998 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8999 +
9000 + fragment@0 {
9001 + target = <&gpio>;
9002 + __overlay__ {
9003 + spi2_pins: spi2_pins {
9004 + brcm,pins = <40 41 42>;
9005 + brcm,function = <3>; /* alt4 */
9006 + };
9007 +
9008 + spi2_cs_pins: spi2_cs_pins {
9009 + brcm,pins = <43 44 45>;
9010 + brcm,function = <1>; /* output */
9011 + };
9012 + };
9013 + };
9014 +
9015 + fragment@1 {
9016 + target = <&spi2>;
9017 + frag1: __overlay__ {
9018 + /* needed to avoid dtc warning */
9019 + #address-cells = <1>;
9020 + #size-cells = <0>;
9021 + pinctrl-names = "default";
9022 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
9023 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
9024 + status = "okay";
9025 +
9026 + spidev2_0: spidev@0 {
9027 + compatible = "spidev";
9028 + reg = <0>; /* CE0 */
9029 + #address-cells = <1>;
9030 + #size-cells = <0>;
9031 + spi-max-frequency = <500000>;
9032 + status = "okay";
9033 + };
9034 +
9035 + spidev2_1: spidev@1 {
9036 + compatible = "spidev";
9037 + reg = <1>; /* CE1 */
9038 + #address-cells = <1>;
9039 + #size-cells = <0>;
9040 + spi-max-frequency = <500000>;
9041 + status = "okay";
9042 + };
9043 +
9044 + spidev2_2: spidev@2 {
9045 + compatible = "spidev";
9046 + reg = <2>; /* CE2 */
9047 + #address-cells = <1>;
9048 + #size-cells = <0>;
9049 + spi-max-frequency = <500000>;
9050 + status = "okay";
9051 + };
9052 + };
9053 + };
9054 +
9055 + fragment@2 {
9056 + target = <&aux>;
9057 + __overlay__ {
9058 + status = "okay";
9059 + };
9060 + };
9061 +
9062 + __overrides__ {
9063 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
9064 + <&frag1>,"cs-gpios:4";
9065 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
9066 + <&frag1>,"cs-gpios:16";
9067 + cs2_pin = <&spi2_cs_pins>,"brcm,pins:8",
9068 + <&frag1>,"cs-gpios:28";
9069 + cs0_spidev = <&spidev2_0>,"status";
9070 + cs1_spidev = <&spidev2_1>,"status";
9071 + cs2_spidev = <&spidev2_2>,"status";
9072 + };
9073 +};
9074 --- /dev/null
9075 +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
9076 @@ -0,0 +1,224 @@
9077 +/*
9078 + * tinylcd35-overlay.dts
9079 + *
9080 + * -------------------------------------------------
9081 + * www.tinlylcd.com
9082 + * -------------------------------------------------
9083 + * Device---Driver-----BUS GPIO's
9084 + * display tinylcd35 spi0.0 25 24 18
9085 + * touch ads7846 spi0.1 5
9086 + * rtc ds1307 i2c1-0068
9087 + * rtc pcf8563 i2c1-0051
9088 + * keypad gpio-keys --------- 17 22 27 23 28
9089 + *
9090 + *
9091 + * TinyLCD.com 3.5 inch TFT
9092 + *
9093 + * Version 001
9094 + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
9095 + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support.
9096 + *
9097 + */
9098 +
9099 +/dts-v1/;
9100 +/plugin/;
9101 +
9102 +/ {
9103 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9104 +
9105 + fragment@0 {
9106 + target = <&spi0>;
9107 + __overlay__ {
9108 + status = "okay";
9109 + };
9110 + };
9111 +
9112 + fragment@1 {
9113 + target = <&spidev0>;
9114 + __overlay__ {
9115 + status = "disabled";
9116 + };
9117 + };
9118 +
9119 + fragment@2 {
9120 + target = <&spidev1>;
9121 + __overlay__ {
9122 + status = "disabled";
9123 + };
9124 + };
9125 +
9126 + fragment@3 {
9127 + target = <&gpio>;
9128 + __overlay__ {
9129 + tinylcd35_pins: tinylcd35_pins {
9130 + brcm,pins = <25 24 18>;
9131 + brcm,function = <1>; /* out */
9132 + };
9133 + tinylcd35_ts_pins: tinylcd35_ts_pins {
9134 + brcm,pins = <5>;
9135 + brcm,function = <0>; /* in */
9136 + };
9137 + keypad_pins: keypad_pins {
9138 + brcm,pins = <4 17 22 23 27>;
9139 + brcm,function = <0>; /* in */
9140 + brcm,pull = <1>; /* down */
9141 + };
9142 + };
9143 + };
9144 +
9145 + fragment@4 {
9146 + target = <&spi0>;
9147 + __overlay__ {
9148 + /* needed to avoid dtc warning */
9149 + #address-cells = <1>;
9150 + #size-cells = <0>;
9151 +
9152 + tinylcd35: tinylcd35@0{
9153 + compatible = "neosec,tinylcd";
9154 + reg = <0>;
9155 + pinctrl-names = "default";
9156 + pinctrl-0 = <&tinylcd35_pins>,
9157 + <&tinylcd35_ts_pins>;
9158 +
9159 + spi-max-frequency = <48000000>;
9160 + rotate = <270>;
9161 + fps = <20>;
9162 + bgr;
9163 + buswidth = <8>;
9164 + reset-gpios = <&gpio 25 0>;
9165 + dc-gpios = <&gpio 24 0>;
9166 + led-gpios = <&gpio 18 1>;
9167 + debug = <0>;
9168 +
9169 + init = <0x10000B0 0x80
9170 + 0x10000C0 0x0A 0x0A
9171 + 0x10000C1 0x01 0x01
9172 + 0x10000C2 0x33
9173 + 0x10000C5 0x00 0x42 0x80
9174 + 0x10000B1 0xD0 0x11
9175 + 0x10000B4 0x02
9176 + 0x10000B6 0x00 0x22 0x3B
9177 + 0x10000B7 0x07
9178 + 0x1000036 0x58
9179 + 0x10000F0 0x36 0xA5 0xD3
9180 + 0x10000E5 0x80
9181 + 0x10000E5 0x01
9182 + 0x10000B3 0x00
9183 + 0x10000E5 0x00
9184 + 0x10000F0 0x36 0xA5 0x53
9185 + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
9186 + 0x100003A 0x55
9187 + 0x1000011
9188 + 0x2000001
9189 + 0x1000029>;
9190 + };
9191 +
9192 + tinylcd35_ts: tinylcd35_ts@1 {
9193 + compatible = "ti,ads7846";
9194 + reg = <1>;
9195 + status = "disabled";
9196 +
9197 + spi-max-frequency = <2000000>;
9198 + interrupts = <5 2>; /* high-to-low edge triggered */
9199 + interrupt-parent = <&gpio>;
9200 + pendown-gpio = <&gpio 5 0>;
9201 + ti,x-plate-ohms = /bits/ 16 <100>;
9202 + ti,pressure-max = /bits/ 16 <255>;
9203 + };
9204 + };
9205 + };
9206 +
9207 + /* RTC */
9208 +
9209 + fragment@5 {
9210 + target = <&i2c1>;
9211 + __dormant__ {
9212 + #address-cells = <1>;
9213 + #size-cells = <0>;
9214 +
9215 + status = "okay";
9216 +
9217 + pcf8563: pcf8563@51 {
9218 + compatible = "nxp,pcf8563";
9219 + reg = <0x51>;
9220 + status = "okay";
9221 + };
9222 + };
9223 + };
9224 +
9225 + fragment@6 {
9226 + target = <&i2c1>;
9227 + __dormant__ {
9228 + #address-cells = <1>;
9229 + #size-cells = <0>;
9230 +
9231 + status = "okay";
9232 +
9233 + ds1307: ds1307@68 {
9234 + compatible = "maxim,ds1307";
9235 + reg = <0x68>;
9236 + status = "okay";
9237 + };
9238 + };
9239 + };
9240 +
9241 + /*
9242 + * Values for input event code is found under the
9243 + * 'Keys and buttons' heading in include/uapi/linux/input.h
9244 + */
9245 + fragment@7 {
9246 + target-path = "/soc";
9247 + __overlay__ {
9248 + keypad: keypad {
9249 + compatible = "gpio-keys";
9250 + #address-cells = <1>;
9251 + #size-cells = <0>;
9252 + pinctrl-names = "default";
9253 + pinctrl-0 = <&keypad_pins>;
9254 + status = "disabled";
9255 + autorepeat;
9256 +
9257 + button@17 {
9258 + label = "GPIO KEY_UP";
9259 + linux,code = <103>;
9260 + gpios = <&gpio 17 0>;
9261 + };
9262 + button@22 {
9263 + label = "GPIO KEY_DOWN";
9264 + linux,code = <108>;
9265 + gpios = <&gpio 22 0>;
9266 + };
9267 + button@27 {
9268 + label = "GPIO KEY_LEFT";
9269 + linux,code = <105>;
9270 + gpios = <&gpio 27 0>;
9271 + };
9272 + button@23 {
9273 + label = "GPIO KEY_RIGHT";
9274 + linux,code = <106>;
9275 + gpios = <&gpio 23 0>;
9276 + };
9277 + button@4 {
9278 + label = "GPIO KEY_ENTER";
9279 + linux,code = <28>;
9280 + gpios = <&gpio 4 0>;
9281 + };
9282 + };
9283 + };
9284 + };
9285 +
9286 + __overrides__ {
9287 + speed = <&tinylcd35>,"spi-max-frequency:0";
9288 + rotate = <&tinylcd35>,"rotate:0";
9289 + fps = <&tinylcd35>,"fps:0";
9290 + debug = <&tinylcd35>,"debug:0";
9291 + touch = <&tinylcd35_ts>,"status";
9292 + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
9293 + <&tinylcd35_ts>,"interrupts:0",
9294 + <&tinylcd35_ts>,"pendown-gpio:4";
9295 + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
9296 + rtc-pcf = <0>,"=5";
9297 + rtc-ds = <0>,"=6";
9298 + keypad = <&keypad>,"status";
9299 + };
9300 +};
9301 --- /dev/null
9302 +++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
9303 @@ -0,0 +1,38 @@
9304 +/dts-v1/;
9305 +/plugin/;
9306 +
9307 +/{
9308 + compatible = "brcm,bcm2708";
9309 +
9310 + fragment@0 {
9311 + target = <&uart1>;
9312 + __overlay__ {
9313 + pinctrl-names = "default";
9314 + pinctrl-0 = <&uart1_pins>;
9315 + status = "okay";
9316 + };
9317 + };
9318 +
9319 + fragment@1 {
9320 + target = <&gpio>;
9321 + __overlay__ {
9322 + uart1_pins: uart1_pins {
9323 + brcm,pins = <14 15>;
9324 + brcm,function = <2>; /* alt5 */
9325 + brcm,pull = <0 2>;
9326 + };
9327 + };
9328 + };
9329 +
9330 + fragment@2 {
9331 + target-path = "/chosen";
9332 + __overlay__ {
9333 + bootargs = "8250.nr_uarts=1";
9334 + };
9335 + };
9336 +
9337 + __overrides__ {
9338 + txd1_pin = <&uart1_pins>,"brcm,pins:0";
9339 + rxd1_pin = <&uart1_pins>,"brcm,pins:4";
9340 + };
9341 +};
9342 --- /dev/null
9343 +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
9344 @@ -0,0 +1,89 @@
9345 +/*
9346 + * vc4-fkms-v3d-overlay.dts
9347 + */
9348 +
9349 +/dts-v1/;
9350 +/plugin/;
9351 +
9352 +/ {
9353 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9354 +
9355 + fragment@0 {
9356 + target-path = "/chosen";
9357 + __overlay__ {
9358 + bootargs = "cma=256M@256M";
9359 + };
9360 + };
9361 +
9362 + fragment@1 {
9363 + target-path = "/chosen";
9364 + __dormant__ {
9365 + bootargs = "cma=192M@256M";
9366 + };
9367 + };
9368 +
9369 + fragment@2 {
9370 + target-path = "/chosen";
9371 + __dormant__ {
9372 + bootargs = "cma=128M@128M";
9373 + };
9374 + };
9375 +
9376 + fragment@3 {
9377 + target-path = "/chosen";
9378 + __dormant__ {
9379 + bootargs = "cma=96M@128M";
9380 + };
9381 + };
9382 +
9383 + fragment@4 {
9384 + target-path = "/chosen";
9385 + __dormant__ {
9386 + bootargs = "cma=64M@64M";
9387 + };
9388 + };
9389 +
9390 + fragment@5 {
9391 + target = <&fb>;
9392 + __overlay__ {
9393 + status = "disabled";
9394 + };
9395 + };
9396 +
9397 + fragment@6 {
9398 + target = <&firmwarekms>;
9399 + __overlay__ {
9400 + status = "okay";
9401 + };
9402 + };
9403 +
9404 + fragment@7 {
9405 + target = <&v3d>;
9406 + __overlay__ {
9407 + interrupts = <1 10>;
9408 + status = "okay";
9409 + };
9410 + };
9411 +
9412 + fragment@8 {
9413 + target = <&gpu>;
9414 + __overlay__ {
9415 + status = "okay";
9416 + };
9417 + };
9418 +
9419 + fragment@9 {
9420 + target-path = "/soc/dma";
9421 + __overlay__ {
9422 + brcm,dma-channel-mask = <0x7f35>;
9423 + };
9424 + };
9425 +
9426 + __overrides__ {
9427 + cma-256 = <0>,"+0-1-2-3-4";
9428 + cma-192 = <0>,"-0+1-2-3-4";
9429 + cma-128 = <0>,"-0-1+2-3-4";
9430 + cma-96 = <0>,"-0-1-2+3-4";
9431 + cma-64 = <0>,"-0-1-2-3+4";
9432 + };
9433 +};
9434 --- /dev/null
9435 +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
9436 @@ -0,0 +1,136 @@
9437 +/*
9438 + * vc4-kms-v3d-overlay.dts
9439 + */
9440 +
9441 +/dts-v1/;
9442 +/plugin/;
9443 +
9444 +/ {
9445 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9446 +
9447 + fragment@0 {
9448 + target-path = "/chosen";
9449 + __overlay__ {
9450 + bootargs = "cma=256M@256M";
9451 + };
9452 + };
9453 +
9454 + fragment@1 {
9455 + target-path = "/chosen";
9456 + __dormant__ {
9457 + bootargs = "cma=192M@256M";
9458 + };
9459 + };
9460 +
9461 + fragment@2 {
9462 + target-path = "/chosen";
9463 + __dormant__ {
9464 + bootargs = "cma=128M@128M";
9465 + };
9466 + };
9467 +
9468 + fragment@3 {
9469 + target-path = "/chosen";
9470 + __dormant__ {
9471 + bootargs = "cma=96M@128M";
9472 + };
9473 + };
9474 +
9475 + fragment@4 {
9476 + target-path = "/chosen";
9477 + __dormant__ {
9478 + bootargs = "cma=64M@64M";
9479 + };
9480 + };
9481 +
9482 + fragment@5 {
9483 + target = <&i2c2>;
9484 + __overlay__ {
9485 + status = "okay";
9486 + };
9487 + };
9488 +
9489 + fragment@6 {
9490 + target = <&cprman>;
9491 + __overlay__ {
9492 + status = "okay";
9493 + };
9494 + };
9495 +
9496 + fragment@7 {
9497 + target = <&fb>;
9498 + __overlay__ {
9499 + status = "disabled";
9500 + };
9501 + };
9502 +
9503 + fragment@8 {
9504 + target = <&pixelvalve0>;
9505 + __overlay__ {
9506 + interrupts = <2 13>; /* pwa0 */
9507 + status = "okay";
9508 + };
9509 + };
9510 +
9511 + fragment@9 {
9512 + target = <&pixelvalve1>;
9513 + __overlay__ {
9514 + interrupts = <2 14>; /* pwa1 */
9515 + status = "okay";
9516 + };
9517 + };
9518 +
9519 + fragment@10 {
9520 + target = <&pixelvalve2>;
9521 + __overlay__ {
9522 + interrupts = <2 10>; /* pixelvalve */
9523 + status = "okay";
9524 + };
9525 + };
9526 +
9527 + fragment@11 {
9528 + target = <&hvs>;
9529 + __overlay__ {
9530 + interrupts = <2 1>;
9531 + status = "okay";
9532 + };
9533 + };
9534 +
9535 + fragment@12 {
9536 + target = <&hdmi>;
9537 + __overlay__ {
9538 + interrupts = <2 8>, <2 9>;
9539 + status = "okay";
9540 + };
9541 + };
9542 +
9543 + fragment@13 {
9544 + target = <&v3d>;
9545 + __overlay__ {
9546 + interrupts = <1 10>;
9547 + status = "okay";
9548 + };
9549 + };
9550 +
9551 + fragment@14 {
9552 + target = <&gpu>;
9553 + __overlay__ {
9554 + status = "okay";
9555 + };
9556 + };
9557 +
9558 + fragment@15 {
9559 + target-path = "/soc/dma";
9560 + __overlay__ {
9561 + brcm,dma-channel-mask = <0x7f35>;
9562 + };
9563 + };
9564 +
9565 + __overrides__ {
9566 + cma-256 = <0>,"+0-1-2-3-4";
9567 + cma-192 = <0>,"-0+1-2-3-4";
9568 + cma-128 = <0>,"-0-1+2-3-4";
9569 + cma-96 = <0>,"-0-1-2+3-4";
9570 + cma-64 = <0>,"-0-1-2-3+4";
9571 + };
9572 +};
9573 --- /dev/null
9574 +++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
9575 @@ -0,0 +1,30 @@
9576 +/dts-v1/;
9577 +/plugin/;
9578 +
9579 +/{
9580 + compatible = "brcm,bcm2708";
9581 +
9582 + // There is no VGA driver module, but we need a platform device
9583 + // node (that doesn't already use pinctrl) to hang the pinctrl
9584 + // reference on - leds will do
9585 +
9586 + fragment@0 {
9587 + target = <&leds>;
9588 + __overlay__ {
9589 + pinctrl-names = "default";
9590 + pinctrl-0 = <&vga666_pins>;
9591 + };
9592 + };
9593 +
9594 + fragment@1 {
9595 + target = <&gpio>;
9596 + __overlay__ {
9597 + vga666_pins: vga666_pins {
9598 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12
9599 + 13 14 15 16 17 18 19 20 21>;
9600 + brcm,function = <6>; /* alt2 */
9601 + brcm,pull = <0>; /* no pull */
9602 + };
9603 + };
9604 + };
9605 +};
9606 --- /dev/null
9607 +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
9608 @@ -0,0 +1,39 @@
9609 +// Definitions for w1-gpio module (without external pullup)
9610 +/dts-v1/;
9611 +/plugin/;
9612 +
9613 +/ {
9614 + compatible = "brcm,bcm2708";
9615 +
9616 + fragment@0 {
9617 + target-path = "/";
9618 + __overlay__ {
9619 +
9620 + w1: onewire@0 {
9621 + compatible = "w1-gpio";
9622 + pinctrl-names = "default";
9623 + pinctrl-0 = <&w1_pins>;
9624 + gpios = <&gpio 4 0>;
9625 + rpi,parasitic-power = <0>;
9626 + status = "okay";
9627 + };
9628 + };
9629 + };
9630 +
9631 + fragment@1 {
9632 + target = <&gpio>;
9633 + __overlay__ {
9634 + w1_pins: w1_pins {
9635 + brcm,pins = <4>;
9636 + brcm,function = <0>; // in (initially)
9637 + brcm,pull = <0>; // off
9638 + };
9639 + };
9640 + };
9641 +
9642 + __overrides__ {
9643 + gpiopin = <&w1>,"gpios:4",
9644 + <&w1_pins>,"brcm,pins:0";
9645 + pullup = <&w1>,"rpi,parasitic-power:0";
9646 + };
9647 +};
9648 --- /dev/null
9649 +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
9650 @@ -0,0 +1,41 @@
9651 +// Definitions for w1-gpio module (with external pullup)
9652 +/dts-v1/;
9653 +/plugin/;
9654 +
9655 +/ {
9656 + compatible = "brcm,bcm2708";
9657 +
9658 + fragment@0 {
9659 + target-path = "/";
9660 + __overlay__ {
9661 +
9662 + w1: onewire@0 {
9663 + compatible = "w1-gpio";
9664 + pinctrl-names = "default";
9665 + pinctrl-0 = <&w1_pins>;
9666 + gpios = <&gpio 4 0>, <&gpio 5 1>;
9667 + rpi,parasitic-power = <0>;
9668 + status = "okay";
9669 + };
9670 + };
9671 + };
9672 +
9673 + fragment@1 {
9674 + target = <&gpio>;
9675 + __overlay__ {
9676 + w1_pins: w1_pins {
9677 + brcm,pins = <4 5>;
9678 + brcm,function = <0 1>; // in out
9679 + brcm,pull = <0 0>; // off off
9680 + };
9681 + };
9682 + };
9683 +
9684 + __overrides__ {
9685 + gpiopin = <&w1>,"gpios:4",
9686 + <&w1_pins>,"brcm,pins:0";
9687 + extpullup = <&w1>,"gpios:16",
9688 + <&w1_pins>,"brcm,pins:4";
9689 + pullup = <&w1>,"rpi,parasitic-power:0";
9690 + };
9691 +};
9692 --- /dev/null
9693 +++ b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
9694 @@ -0,0 +1,44 @@
9695 +/*
9696 + * Device Tree overlay for Witty Pi extension board by UUGear
9697 + *
9698 + */
9699 +
9700 +/dts-v1/;
9701 +/plugin/;
9702 +
9703 +/ {
9704 +
9705 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9706 +
9707 + fragment@0 {
9708 + target = <&leds>;
9709 + __overlay__ {
9710 + compatible = "gpio-leds";
9711 + wittypi_led: wittypi_led {
9712 + label = "wittypi_led";
9713 + linux,default-trigger = "default-on";
9714 + gpios = <&gpio 17 0>;
9715 + };
9716 + };
9717 + };
9718 +
9719 + fragment@1 {
9720 + target = <&i2c1>;
9721 + __overlay__ {
9722 + #address-cells = <1>;
9723 + #size-cells = <0>;
9724 +
9725 + rtc: ds1337@68 {
9726 + compatible = "dallas,ds1337";
9727 + reg = <0x68>;
9728 + wakeup-source;
9729 + };
9730 + };
9731 + };
9732 +
9733 + __overrides__ {
9734 + led_gpio = <&wittypi_led>,"gpios:4";
9735 + led_trigger = <&wittypi_led>,"linux,default-trigger";
9736 + };
9737 +
9738 +};
9739 --- a/scripts/Makefile.dtbinst
9740 +++ b/scripts/Makefile.dtbinst
9741 @@ -27,6 +27,7 @@ ifeq ("$(dtbinst-root)", "$(obj)")
9742 endif
9743
9744 dtbinst-files := $(dtb-y)
9745 +dtboinst-files := $(dtbo-y)
9746 dtbinst-dirs := $(dts-dirs)
9747
9748 # Helper targets for Installing DTBs into the boot directory
9749 @@ -35,15 +36,18 @@ quiet_cmd_dtb_install = INSTALL $<
9750
9751 install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj))
9752
9753 -$(dtbinst-files) $(dtbinst-dirs): | __dtbs_install_prep
9754 +$(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs): | __dtbs_install_prep
9755
9756 $(dtbinst-files): %.dtb: $(obj)/%.dtb
9757 $(call cmd,dtb_install,$(install-dir))
9758
9759 +$(dtboinst-files): %.dtbo: $(obj)/%.dtbo
9760 + $(call cmd,dtb_install,$(install-dir))
9761 +
9762 $(dtbinst-dirs):
9763 $(Q)$(MAKE) $(dtbinst)=$(obj)/$@
9764
9765 -PHONY += $(dtbinst-files) $(dtbinst-dirs)
9766 -__dtbs_install: $(dtbinst-files) $(dtbinst-dirs)
9767 +PHONY += $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs)
9768 +__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs)
9769
9770 .PHONY: $(PHONY)
9771 --- a/scripts/Makefile.lib
9772 +++ b/scripts/Makefile.lib
9773 @@ -312,6 +312,17 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
9774 $(obj)/%.dtb: $(src)/%.dts FORCE
9775 $(call if_changed_dep,dtc)
9776
9777 +quiet_cmd_dtco = DTCO $@
9778 +cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \
9779 + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
9780 + $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \
9781 + -i $(dir $<) $(DTC_FLAGS) \
9782 + -d $(depfile).dtc.tmp $(dtc-tmp) ; \
9783 + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
9784 +
9785 +$(obj)/%.dtbo: $(src)/%-overlay.dts FORCE
9786 + $(call if_changed_dep,dtco)
9787 +
9788 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
9789
9790 # Bzip2