brcm2708: add kernel 4.14 support
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.14 / 950-0054-BCM2708-Add-core-Device-Tree-support.patch
1 From 89e5d6fae1a69dc41d9f1ba54dd20b2d994e3632 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 054/454] 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 BCM270X: Drop position requirement for CMA in VC4 overlay.
187
188 No longer necessary since 2aefcd576195a739a7a256099571c9c4a401005f,
189 and will probably let peeople that want to choose a larger CMA
190 allocation (particularly on pi0/1).
191
192 Signed-off-by: Eric Anholt <eric@anholt.net>
193
194 BCM270X_DT: RPi Device Tree tidy
195
196 Use the upstream sdhost node, add thermal-zones, and factor out some
197 common elements.
198
199 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
200 ---
201 arch/arm/Makefile | 2 +
202 arch/arm/boot/.gitignore | 1 +
203 arch/arm/boot/dts/Makefile | 20 +
204 arch/arm/boot/dts/bcm2708-rpi-0-w.dts | 165 ++
205 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 122 ++
206 arch/arm/boot/dts/bcm2708-rpi-b.dts | 112 ++
207 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 95 +
208 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 17 +
209 arch/arm/boot/dts/bcm2708-rpi.dtsi | 162 ++
210 arch/arm/boot/dts/bcm2708.dtsi | 20 +
211 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 122 ++
212 arch/arm/boot/dts/bcm2709.dtsi | 22 +
213 arch/arm/boot/dts/bcm270x.dtsi | 181 ++
214 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 194 ++
215 arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 129 ++
216 arch/arm/boot/dts/bcm2710.dtsi | 32 +
217 arch/arm/boot/dts/overlays/Makefile | 128 ++
218 arch/arm/boot/dts/overlays/README | 1678 +++++++++++++++++
219 .../dts/overlays/adau1977-adc-overlay.dts | 40 +
220 .../dts/overlays/adau7002-simple-overlay.dts | 52 +
221 .../arm/boot/dts/overlays/ads1015-overlay.dts | 98 +
222 .../arm/boot/dts/overlays/ads1115-overlay.dts | 103 +
223 .../arm/boot/dts/overlays/ads7846-overlay.dts | 89 +
224 .../overlays/akkordion-iqdacplus-overlay.dts | 49 +
225 .../allo-boss-dac-pcm512x-audio-overlay.dts | 59 +
226 .../dts/overlays/allo-digione-overlay.dts | 44 +
227 .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 +
228 ...o-piano-dac-plus-pcm512x-audio-overlay.dts | 55 +
229 .../boot/dts/overlays/at86rf233-overlay.dts | 57 +
230 .../overlays/audioinjector-addons-overlay.dts | 55 +
231 .../audioinjector-wm8731-audio-overlay.dts | 39 +
232 .../boot/dts/overlays/audremap-overlay.dts | 19 +
233 .../overlays/bmp085_i2c-sensor-overlay.dts | 23 +
234 arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 +
235 .../dts/overlays/dionaudio-loco-overlay.dts | 39 +
236 .../overlays/dionaudio-loco-v2-overlay.dts | 49 +
237 arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 +
238 arch/arm/boot/dts/overlays/dpi24-overlay.dts | 31 +
239 .../arm/boot/dts/overlays/dwc-otg-overlay.dts | 20 +
240 arch/arm/boot/dts/overlays/dwc2-overlay.dts | 28 +
241 .../boot/dts/overlays/enc28j60-overlay.dts | 53 +
242 .../dts/overlays/enc28j60-spi2-overlay.dts | 47 +
243 .../boot/dts/overlays/fe-pi-audio-overlay.dts | 70 +
244 arch/arm/boot/dts/overlays/goodix-overlay.dts | 46 +
245 .../googlevoicehat-soundcard-overlay.dts | 49 +
246 .../arm/boot/dts/overlays/gpio-ir-overlay.dts | 44 +
247 .../boot/dts/overlays/gpio-ir-tx-overlay.dts | 34 +
248 .../dts/overlays/gpio-poweroff-overlay.dts | 34 +
249 .../dts/overlays/gpio-shutdown-overlay.dts | 80 +
250 .../dts/overlays/hifiberry-amp-overlay.dts | 39 +
251 .../dts/overlays/hifiberry-dac-overlay.dts | 34 +
252 .../overlays/hifiberry-dacplus-overlay.dts | 59 +
253 .../dts/overlays/hifiberry-digi-overlay.dts | 41 +
254 .../overlays/hifiberry-digi-pro-overlay.dts | 43 +
255 arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 +
256 arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 ++
257 .../boot/dts/overlays/i2c-bcm2708-overlay.dts | 13 +
258 .../boot/dts/overlays/i2c-gpio-overlay.dts | 43 +
259 .../arm/boot/dts/overlays/i2c-mux-overlay.dts | 139 ++
260 .../dts/overlays/i2c-pwm-pca9685a-overlay.dts | 26 +
261 .../dts/overlays/i2c-rtc-gpio-overlay.dts | 183 ++
262 .../arm/boot/dts/overlays/i2c-rtc-overlay.dts | 181 ++
263 .../boot/dts/overlays/i2c-sensor-overlay.dts | 206 ++
264 .../dts/overlays/i2c0-bcm2708-overlay.dts | 61 +
265 .../dts/overlays/i2c1-bcm2708-overlay.dts | 34 +
266 .../dts/overlays/i2s-gpio28-31-overlay.dts | 18 +
267 .../boot/dts/overlays/iqaudio-dac-overlay.dts | 46 +
268 .../dts/overlays/iqaudio-dacplus-overlay.dts | 49 +
269 .../iqaudio-digi-wm8804-audio-overlay.dts | 47 +
270 .../dts/overlays/justboom-dac-overlay.dts | 46 +
271 .../dts/overlays/justboom-digi-overlay.dts | 41 +
272 .../boot/dts/overlays/lirc-rpi-overlay.dts | 57 +
273 .../boot/dts/overlays/mcp23017-overlay.dts | 54 +
274 .../boot/dts/overlays/mcp23s17-overlay.dts | 732 +++++++
275 .../dts/overlays/mcp2515-can0-overlay.dts | 73 +
276 .../dts/overlays/mcp2515-can1-overlay.dts | 73 +
277 .../arm/boot/dts/overlays/mcp3008-overlay.dts | 205 ++
278 .../boot/dts/overlays/midi-uart0-overlay.dts | 36 +
279 .../boot/dts/overlays/midi-uart1-overlay.dts | 43 +
280 arch/arm/boot/dts/overlays/mmc-overlay.dts | 39 +
281 .../arm/boot/dts/overlays/mpu6050-overlay.dts | 28 +
282 .../arm/boot/dts/overlays/mz61581-overlay.dts | 117 ++
283 .../arm/boot/dts/overlays/papirus-overlay.dts | 89 +
284 .../boot/dts/overlays/pi3-act-led-overlay.dts | 27 +
285 .../dts/overlays/pi3-disable-bt-overlay.dts | 46 +
286 .../dts/overlays/pi3-disable-wifi-overlay.dts | 13 +
287 .../dts/overlays/pi3-miniuart-bt-overlay.dts | 74 +
288 .../boot/dts/overlays/piscreen-overlay.dts | 102 +
289 .../boot/dts/overlays/piscreen2r-overlay.dts | 106 ++
290 .../arm/boot/dts/overlays/pisound-overlay.dts | 120 ++
291 .../arm/boot/dts/overlays/pitft22-overlay.dts | 69 +
292 .../overlays/pitft28-capacitive-overlay.dts | 91 +
293 .../overlays/pitft28-resistive-overlay.dts | 121 ++
294 .../overlays/pitft35-resistive-overlay.dts | 121 ++
295 .../boot/dts/overlays/pps-gpio-overlay.dts | 35 +
296 .../boot/dts/overlays/pwm-2chan-overlay.dts | 47 +
297 .../boot/dts/overlays/pwm-ir-tx-overlay.dts | 40 +
298 arch/arm/boot/dts/overlays/pwm-overlay.dts | 43 +
299 .../arm/boot/dts/overlays/qca7000-overlay.dts | 52 +
300 .../boot/dts/overlays/raspidac3-overlay.dts | 49 +
301 .../dts/overlays/rotary-encoder-overlay.dts | 43 +
302 .../dts/overlays/rpi-backlight-overlay.dts | 21 +
303 .../overlays/rpi-cirrus-wm5102-overlay.dts | 146 ++
304 .../arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 +
305 .../boot/dts/overlays/rpi-display-overlay.dts | 89 +
306 .../boot/dts/overlays/rpi-ft5406-overlay.dts | 30 +
307 .../boot/dts/overlays/rpi-proto-overlay.dts | 39 +
308 .../boot/dts/overlays/rpi-sense-overlay.dts | 47 +
309 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts | 31 +
310 .../rra-digidac1-wm8741-audio-overlay.dts | 49 +
311 .../dts/overlays/sc16is750-i2c-overlay.dts | 37 +
312 .../dts/overlays/sc16is752-spi1-overlay.dts | 61 +
313 arch/arm/boot/dts/overlays/sdhost-overlay.dts | 31 +
314 .../boot/dts/overlays/sdio-1bit-overlay.dts | 37 +
315 arch/arm/boot/dts/overlays/sdio-overlay.dts | 37 +
316 .../arm/boot/dts/overlays/sdtweak-overlay.dts | 23 +
317 .../arm/boot/dts/overlays/smi-dev-overlay.dts | 18 +
318 .../boot/dts/overlays/smi-nand-overlay.dts | 69 +
319 arch/arm/boot/dts/overlays/smi-overlay.dts | 37 +
320 .../dts/overlays/spi-gpio35-39-overlay.dts | 31 +
321 .../arm/boot/dts/overlays/spi-rtc-overlay.dts | 33 +
322 .../arm/boot/dts/overlays/spi0-cs-overlay.dts | 29 +
323 .../boot/dts/overlays/spi0-hw-cs-overlay.dts | 26 +
324 .../boot/dts/overlays/spi1-1cs-overlay.dts | 57 +
325 .../boot/dts/overlays/spi1-2cs-overlay.dts | 69 +
326 .../boot/dts/overlays/spi1-3cs-overlay.dts | 81 +
327 .../boot/dts/overlays/spi2-1cs-overlay.dts | 57 +
328 .../boot/dts/overlays/spi2-2cs-overlay.dts | 69 +
329 .../boot/dts/overlays/spi2-3cs-overlay.dts | 81 +
330 .../boot/dts/overlays/tinylcd35-overlay.dts | 224 +++
331 arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 +
332 .../dts/overlays/vc4-fkms-v3d-overlay.dts | 89 +
333 .../boot/dts/overlays/vc4-kms-v3d-overlay.dts | 151 ++
334 arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 +
335 .../arm/boot/dts/overlays/w1-gpio-overlay.dts | 41 +
336 .../dts/overlays/w1-gpio-pullup-overlay.dts | 43 +
337 .../arm/boot/dts/overlays/wittypi-overlay.dts | 44 +
338 scripts/Makefile.dtbinst | 8 +-
339 scripts/Makefile.lib | 11 +
340 139 files changed, 11113 insertions(+), 2 deletions(-)
341 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-0-w.dts
342 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
343 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
344 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts
345 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
346 create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi
347 create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
348 create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
349 create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
350 create mode 100644 arch/arm/boot/dts/bcm270x.dtsi
351 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts
352 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts
353 create mode 100644 arch/arm/boot/dts/bcm2710.dtsi
354 create mode 100644 arch/arm/boot/dts/overlays/Makefile
355 create mode 100644 arch/arm/boot/dts/overlays/README
356 create mode 100644 arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
357 create mode 100644 arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
358 create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts
359 create mode 100644 arch/arm/boot/dts/overlays/ads1115-overlay.dts
360 create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
361 create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
362 create mode 100644 arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
363 create mode 100644 arch/arm/boot/dts/overlays/allo-digione-overlay.dts
364 create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
365 create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
366 create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts
367 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
368 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
369 create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts
370 create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
371 create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
372 create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
373 create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
374 create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts
375 create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts
376 create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
377 create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts
378 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
379 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
380 create mode 100644 arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
381 create mode 100644 arch/arm/boot/dts/overlays/goodix-overlay.dts
382 create mode 100644 arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
383 create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
384 create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
385 create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
386 create mode 100644 arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
387 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
388 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
389 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
390 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
391 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
392 create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
393 create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
394 create mode 100644 arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
395 create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
396 create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
397 create mode 100644 arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
398 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
399 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
400 create mode 100644 arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
401 create mode 100644 arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
402 create mode 100644 arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
403 create mode 100644 arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
404 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
405 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
406 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
407 create mode 100644 arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
408 create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
409 create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
410 create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts
411 create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
412 create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
413 create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
414 create mode 100755 arch/arm/boot/dts/overlays/mcp3008-overlay.dts
415 create mode 100644 arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
416 create mode 100644 arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
417 create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
418 create mode 100644 arch/arm/boot/dts/overlays/mpu6050-overlay.dts
419 create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
420 create mode 100644 arch/arm/boot/dts/overlays/papirus-overlay.dts
421 create mode 100644 arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts
422 create mode 100644 arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
423 create mode 100644 arch/arm/boot/dts/overlays/pi3-disable-wifi-overlay.dts
424 create mode 100644 arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
425 create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
426 create mode 100644 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
427 create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts
428 create mode 100644 arch/arm/boot/dts/overlays/pitft22-overlay.dts
429 create mode 100644 arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
430 create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
431 create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
432 create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
433 create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
434 create mode 100644 arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
435 create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts
436 create mode 100644 arch/arm/boot/dts/overlays/qca7000-overlay.dts
437 create mode 100644 arch/arm/boot/dts/overlays/raspidac3-overlay.dts
438 create mode 100644 arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
439 create mode 100644 arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
440 create mode 100644 arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
441 create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
442 create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
443 create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
444 create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
445 create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
446 create mode 100644 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
447 create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
448 create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
449 create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
450 create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
451 create mode 100644 arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
452 create mode 100644 arch/arm/boot/dts/overlays/sdio-overlay.dts
453 create mode 100644 arch/arm/boot/dts/overlays/sdtweak-overlay.dts
454 create mode 100644 arch/arm/boot/dts/overlays/smi-dev-overlay.dts
455 create mode 100644 arch/arm/boot/dts/overlays/smi-nand-overlay.dts
456 create mode 100644 arch/arm/boot/dts/overlays/smi-overlay.dts
457 create mode 100644 arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
458 create mode 100644 arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
459 create mode 100644 arch/arm/boot/dts/overlays/spi0-cs-overlay.dts
460 create mode 100644 arch/arm/boot/dts/overlays/spi0-hw-cs-overlay.dts
461 create mode 100644 arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
462 create mode 100644 arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
463 create mode 100644 arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
464 create mode 100644 arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
465 create mode 100644 arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
466 create mode 100644 arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
467 create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
468 create mode 100644 arch/arm/boot/dts/overlays/uart1-overlay.dts
469 create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
470 create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
471 create mode 100644 arch/arm/boot/dts/overlays/vga666-overlay.dts
472 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
473 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
474 create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts
475
476 --- a/arch/arm/Makefile
477 +++ b/arch/arm/Makefile
478 @@ -341,6 +341,8 @@ $(INSTALL_TARGETS):
479
480 %.dtb: | scripts
481 $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
482 +%.dtbo: | scripts
483 + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
484
485 PHONY += dtbs dtbs_install
486
487 --- a/arch/arm/boot/.gitignore
488 +++ b/arch/arm/boot/.gitignore
489 @@ -3,3 +3,4 @@ zImage
490 xipImage
491 bootpImage
492 uImage
493 +*.dtb*
494 --- a/arch/arm/boot/dts/Makefile
495 +++ b/arch/arm/boot/dts/Makefile
496 @@ -1,6 +1,15 @@
497 # SPDX-License-Identifier: GPL-2.0
498 ifeq ($(CONFIG_OF),y)
499
500 +dtb-$(CONFIG_ARCH_BCM2835) += \
501 + bcm2708-rpi-b.dtb \
502 + bcm2708-rpi-b-plus.dtb \
503 + bcm2708-rpi-cm.dtb \
504 + bcm2708-rpi-0-w.dtb \
505 + bcm2709-rpi-2-b.dtb \
506 + bcm2710-rpi-3-b.dtb \
507 + bcm2710-rpi-cm3.dtb
508 +
509 dtb-$(CONFIG_ARCH_ALPINE) += \
510 alpine-db.dtb
511 dtb-$(CONFIG_MACH_ARTPEC6) += \
512 @@ -1069,10 +1078,21 @@ dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dt
513 dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \
514 aspeed-bmc-opp-romulus.dtb \
515 aspeed-ast2500-evb.dtb
516 +
517 +targets += dtbs dtbs_install
518 +targets += $(dtb-y)
519 +
520 endif
521
522 dtstree := $(srctree)/$(src)
523 dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
524
525 always := $(dtb-y)
526 +subdir-y := overlays
527 clean-files := *.dtb
528 +
529 +# Enable fixups to support overlays on BCM2835 platforms
530 +ifeq ($(CONFIG_ARCH_BCM2835),y)
531 + DTC_FLAGS ?= -@ -H epapr
532 + dts-dirs += overlays
533 +endif
534 --- /dev/null
535 +++ b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
536 @@ -0,0 +1,165 @@
537 +/dts-v1/;
538 +
539 +#include "bcm2708.dtsi"
540 +
541 +/ {
542 + model = "Raspberry Pi Zero W";
543 +
544 + chosen {
545 + bootargs = "8250.nr_uarts=1";
546 + };
547 +
548 + aliases {
549 + serial0 = &uart1;
550 + serial1 = &uart0;
551 + };
552 +};
553 +
554 +&gpio {
555 + spi0_pins: spi0_pins {
556 + brcm,pins = <9 10 11>;
557 + brcm,function = <4>; /* alt0 */
558 + };
559 +
560 + spi0_cs_pins: spi0_cs_pins {
561 + brcm,pins = <8 7>;
562 + brcm,function = <1>; /* output */
563 + };
564 +
565 + i2c0_pins: i2c0 {
566 + brcm,pins = <0 1>;
567 + brcm,function = <4>;
568 + };
569 +
570 + i2c1_pins: i2c1 {
571 + brcm,pins = <2 3>;
572 + brcm,function = <4>;
573 + };
574 +
575 + i2s_pins: i2s {
576 + brcm,pins = <18 19 20 21>;
577 + brcm,function = <4>; /* alt0 */
578 + };
579 +
580 + sdio_pins: sdio_pins {
581 + brcm,pins = <34 35 36 37 38 39>;
582 + brcm,function = <7>; /* ALT3 = SD1 */
583 + brcm,pull = <0 2 2 2 2 2>;
584 + };
585 +
586 + bt_pins: bt_pins {
587 + brcm,pins = <43>;
588 + brcm,function = <4>; /* alt0:GPCLK2 */
589 + brcm,pull = <0>; /* none */
590 + };
591 +
592 + uart0_pins: uart0_pins {
593 + brcm,pins = <30 31 32 33>;
594 + brcm,function = <7>; /* alt3=UART0 */
595 + brcm,pull = <2 0 0 2>; /* up none none up */
596 + };
597 +
598 + uart1_pins: uart1_pins {
599 + brcm,pins;
600 + brcm,function;
601 + brcm,pull;
602 + };
603 +
604 + audio_pins: audio_pins {
605 + brcm,pins = <>;
606 + brcm,function = <>;
607 + };
608 +};
609 +
610 +&mmc {
611 + pinctrl-names = "default";
612 + pinctrl-0 = <&sdio_pins>;
613 + non-removable;
614 + bus-width = <4>;
615 + status = "okay";
616 +};
617 +
618 +&uart0 {
619 + pinctrl-names = "default";
620 + pinctrl-0 = <&uart0_pins &bt_pins>;
621 + status = "okay";
622 +};
623 +
624 +&uart1 {
625 + pinctrl-names = "default";
626 + pinctrl-0 = <&uart1_pins>;
627 + status = "okay";
628 +};
629 +
630 +&spi0 {
631 + pinctrl-names = "default";
632 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
633 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
634 +
635 + spidev0: spidev@0{
636 + compatible = "spidev";
637 + reg = <0>; /* CE0 */
638 + #address-cells = <1>;
639 + #size-cells = <0>;
640 + spi-max-frequency = <125000000>;
641 + };
642 +
643 + spidev1: spidev@1{
644 + compatible = "spidev";
645 + reg = <1>; /* CE1 */
646 + #address-cells = <1>;
647 + #size-cells = <0>;
648 + spi-max-frequency = <125000000>;
649 + };
650 +};
651 +
652 +&i2c0 {
653 + pinctrl-names = "default";
654 + pinctrl-0 = <&i2c0_pins>;
655 + clock-frequency = <100000>;
656 +};
657 +
658 +&i2c1 {
659 + pinctrl-names = "default";
660 + pinctrl-0 = <&i2c1_pins>;
661 + clock-frequency = <100000>;
662 +};
663 +
664 +&i2c2 {
665 + clock-frequency = <100000>;
666 +};
667 +
668 +&i2s {
669 + #sound-dai-cells = <0>;
670 + pinctrl-names = "default";
671 + pinctrl-0 = <&i2s_pins>;
672 +};
673 +
674 +&random {
675 + status = "okay";
676 +};
677 +
678 +&leds {
679 + act_led: act {
680 + label = "led0";
681 + linux,default-trigger = "mmc0";
682 + gpios = <&gpio 47 0>;
683 + };
684 +};
685 +
686 +&hdmi {
687 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
688 +};
689 +
690 +&audio {
691 + pinctrl-names = "default";
692 + pinctrl-0 = <&audio_pins>;
693 +};
694 +
695 +/ {
696 + __overrides__ {
697 + act_led_gpio = <&act_led>,"gpios:4";
698 + act_led_activelow = <&act_led>,"gpios:8";
699 + act_led_trigger = <&act_led>,"linux,default-trigger";
700 + };
701 +};
702 --- /dev/null
703 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
704 @@ -0,0 +1,122 @@
705 +/dts-v1/;
706 +
707 +#include "bcm2708.dtsi"
708 +#include "bcm283x-rpi-smsc9514.dtsi"
709 +
710 +/ {
711 + model = "Raspberry Pi Model B+";
712 +};
713 +
714 +&gpio {
715 + spi0_pins: spi0_pins {
716 + brcm,pins = <9 10 11>;
717 + brcm,function = <4>; /* alt0 */
718 + };
719 +
720 + spi0_cs_pins: spi0_cs_pins {
721 + brcm,pins = <8 7>;
722 + brcm,function = <1>; /* output */
723 + };
724 +
725 + i2c0_pins: i2c0 {
726 + brcm,pins = <0 1>;
727 + brcm,function = <4>;
728 + };
729 +
730 + i2c1_pins: i2c1 {
731 + brcm,pins = <2 3>;
732 + brcm,function = <4>;
733 + };
734 +
735 + i2s_pins: i2s {
736 + brcm,pins = <18 19 20 21>;
737 + brcm,function = <4>; /* alt0 */
738 + };
739 +
740 + audio_pins: audio_pins {
741 + brcm,pins = <40 45>;
742 + brcm,function = <4>;
743 + };
744 +};
745 +
746 +&uart0 {
747 + status = "okay";
748 +};
749 +
750 +&spi0 {
751 + pinctrl-names = "default";
752 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
753 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
754 +
755 + spidev0: spidev@0{
756 + compatible = "spidev";
757 + reg = <0>; /* CE0 */
758 + #address-cells = <1>;
759 + #size-cells = <0>;
760 + spi-max-frequency = <125000000>;
761 + };
762 +
763 + spidev1: spidev@1{
764 + compatible = "spidev";
765 + reg = <1>; /* CE1 */
766 + #address-cells = <1>;
767 + #size-cells = <0>;
768 + spi-max-frequency = <125000000>;
769 + };
770 +};
771 +
772 +&i2c0 {
773 + pinctrl-names = "default";
774 + pinctrl-0 = <&i2c0_pins>;
775 + clock-frequency = <100000>;
776 +};
777 +
778 +&i2c1 {
779 + pinctrl-names = "default";
780 + pinctrl-0 = <&i2c1_pins>;
781 + clock-frequency = <100000>;
782 +};
783 +
784 +&i2c2 {
785 + clock-frequency = <100000>;
786 +};
787 +
788 +&i2s {
789 + pinctrl-names = "default";
790 + pinctrl-0 = <&i2s_pins>;
791 +};
792 +
793 +&leds {
794 + act_led: act {
795 + label = "led0";
796 + linux,default-trigger = "mmc0";
797 + gpios = <&gpio 47 0>;
798 + };
799 +
800 + pwr_led: pwr {
801 + label = "led1";
802 + linux,default-trigger = "input";
803 + gpios = <&gpio 35 0>;
804 + };
805 +};
806 +
807 +&hdmi {
808 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
809 +};
810 +
811 +&audio {
812 + pinctrl-names = "default";
813 + pinctrl-0 = <&audio_pins>;
814 +};
815 +
816 +/ {
817 + __overrides__ {
818 + act_led_gpio = <&act_led>,"gpios:4";
819 + act_led_activelow = <&act_led>,"gpios:8";
820 + act_led_trigger = <&act_led>,"linux,default-trigger";
821 +
822 + pwr_led_gpio = <&pwr_led>,"gpios:4";
823 + pwr_led_activelow = <&pwr_led>,"gpios:8";
824 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
825 + };
826 +};
827 --- /dev/null
828 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
829 @@ -0,0 +1,112 @@
830 +/dts-v1/;
831 +
832 +#include "bcm2708.dtsi"
833 +#include "bcm283x-rpi-smsc9512.dtsi"
834 +
835 +/ {
836 + model = "Raspberry Pi Model B";
837 +};
838 +
839 +&gpio {
840 + spi0_pins: spi0_pins {
841 + brcm,pins = <9 10 11>;
842 + brcm,function = <4>; /* alt0 */
843 + };
844 +
845 + spi0_cs_pins: spi0_cs_pins {
846 + brcm,pins = <8 7>;
847 + brcm,function = <1>; /* output */
848 + };
849 +
850 + i2c0_pins: i2c0 {
851 + brcm,pins = <0 1>;
852 + brcm,function = <4>;
853 + };
854 +
855 + i2c1_pins: i2c1 {
856 + brcm,pins = <2 3>;
857 + brcm,function = <4>;
858 + };
859 +
860 + i2s_pins: i2s {
861 + brcm,pins = <28 29 30 31>;
862 + brcm,function = <6>; /* alt2 */
863 + };
864 +
865 + audio_pins: audio_pins {
866 + brcm,pins = <40 45>;
867 + brcm,function = <4>;
868 + };
869 +};
870 +
871 +&uart0 {
872 + status = "okay";
873 +};
874 +
875 +&spi0 {
876 + pinctrl-names = "default";
877 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
878 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
879 +
880 + spidev0: spidev@0{
881 + compatible = "spidev";
882 + reg = <0>; /* CE0 */
883 + #address-cells = <1>;
884 + #size-cells = <0>;
885 + spi-max-frequency = <125000000>;
886 + };
887 +
888 + spidev1: spidev@1{
889 + compatible = "spidev";
890 + reg = <1>; /* CE1 */
891 + #address-cells = <1>;
892 + #size-cells = <0>;
893 + spi-max-frequency = <125000000>;
894 + };
895 +};
896 +
897 +&i2c0 {
898 + pinctrl-names = "default";
899 + pinctrl-0 = <&i2c0_pins>;
900 + clock-frequency = <100000>;
901 +};
902 +
903 +&i2c1 {
904 + pinctrl-names = "default";
905 + pinctrl-0 = <&i2c1_pins>;
906 + clock-frequency = <100000>;
907 +};
908 +
909 +&i2c2 {
910 + clock-frequency = <100000>;
911 +};
912 +
913 +&i2s {
914 + pinctrl-names = "default";
915 + pinctrl-0 = <&i2s_pins>;
916 +};
917 +
918 +&leds {
919 + act_led: act {
920 + label = "led0";
921 + linux,default-trigger = "mmc0";
922 + gpios = <&gpio 16 1>;
923 + };
924 +};
925 +
926 +&hdmi {
927 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
928 +};
929 +
930 +&audio {
931 + pinctrl-names = "default";
932 + pinctrl-0 = <&audio_pins>;
933 +};
934 +
935 +/ {
936 + __overrides__ {
937 + act_led_gpio = <&act_led>,"gpios:4";
938 + act_led_activelow = <&act_led>,"gpios:8";
939 + act_led_trigger = <&act_led>,"linux,default-trigger";
940 + };
941 +};
942 --- /dev/null
943 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
944 @@ -0,0 +1,95 @@
945 +/dts-v1/;
946 +
947 +#include "bcm2708-rpi-cm.dtsi"
948 +
949 +/ {
950 + model = "Raspberry Pi Compute Module";
951 +};
952 +
953 +&uart0 {
954 + status = "okay";
955 +};
956 +
957 +&gpio {
958 + spi0_pins: spi0_pins {
959 + brcm,pins = <9 10 11>;
960 + brcm,function = <4>; /* alt0 */
961 + };
962 +
963 + spi0_cs_pins: spi0_cs_pins {
964 + brcm,pins = <8 7>;
965 + brcm,function = <1>; /* output */
966 + };
967 +
968 + i2c0_pins: i2c0 {
969 + brcm,pins = <0 1>;
970 + brcm,function = <4>;
971 + };
972 +
973 + i2c1_pins: i2c1 {
974 + brcm,pins = <2 3>;
975 + brcm,function = <4>;
976 + };
977 +
978 + i2s_pins: i2s {
979 + brcm,pins = <18 19 20 21>;
980 + brcm,function = <4>; /* alt0 */
981 + };
982 +
983 + audio_pins: audio_pins {
984 + brcm,pins;
985 + brcm,function;
986 + };
987 +};
988 +
989 +&spi0 {
990 + pinctrl-names = "default";
991 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
992 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
993 +
994 + spidev0: spidev@0{
995 + compatible = "spidev";
996 + reg = <0>; /* CE0 */
997 + #address-cells = <1>;
998 + #size-cells = <0>;
999 + spi-max-frequency = <125000000>;
1000 + };
1001 +
1002 + spidev1: spidev@1{
1003 + compatible = "spidev";
1004 + reg = <1>; /* CE1 */
1005 + #address-cells = <1>;
1006 + #size-cells = <0>;
1007 + spi-max-frequency = <125000000>;
1008 + };
1009 +};
1010 +
1011 +&i2c0 {
1012 + pinctrl-names = "default";
1013 + pinctrl-0 = <&i2c0_pins>;
1014 + clock-frequency = <100000>;
1015 +};
1016 +
1017 +&i2c1 {
1018 + pinctrl-names = "default";
1019 + pinctrl-0 = <&i2c1_pins>;
1020 + clock-frequency = <100000>;
1021 +};
1022 +
1023 +&i2c2 {
1024 + clock-frequency = <100000>;
1025 +};
1026 +
1027 +&i2s {
1028 + pinctrl-names = "default";
1029 + pinctrl-0 = <&i2s_pins>;
1030 +};
1031 +
1032 +&audio {
1033 + pinctrl-names = "default";
1034 + pinctrl-0 = <&audio_pins>;
1035 +};
1036 +
1037 +&hdmi {
1038 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
1039 +};
1040 --- /dev/null
1041 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
1042 @@ -0,0 +1,17 @@
1043 +#include "bcm2708.dtsi"
1044 +
1045 +&leds {
1046 + act_led: act {
1047 + label = "led0";
1048 + linux,default-trigger = "mmc0";
1049 + gpios = <&gpio 47 0>;
1050 + };
1051 +};
1052 +
1053 +/ {
1054 + __overrides__ {
1055 + act_led_gpio = <&act_led>,"gpios:4";
1056 + act_led_activelow = <&act_led>,"gpios:8";
1057 + act_led_trigger = <&act_led>,"linux,default-trigger";
1058 + };
1059 +};
1060 --- /dev/null
1061 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
1062 @@ -0,0 +1,162 @@
1063 +/* Downstream version of bcm2835-rpi.dtsi */
1064 +
1065 +#include <dt-bindings/power/raspberrypi-power.h>
1066 +
1067 +/ {
1068 + memory {
1069 + device_type = "memory";
1070 + reg = <0x0 0x0>;
1071 + };
1072 +
1073 + aliases {
1074 + audio = &audio;
1075 + aux = &aux;
1076 + sound = &sound;
1077 + soc = &soc;
1078 + dma = &dma;
1079 + intc = &intc;
1080 + watchdog = &watchdog;
1081 + random = &random;
1082 + mailbox = &mailbox;
1083 + gpio = &gpio;
1084 + uart0 = &uart0;
1085 + sdhost = &sdhost;
1086 + mmc0 = &sdhost;
1087 + i2s = &i2s;
1088 + spi0 = &spi0;
1089 + i2c0 = &i2c0;
1090 + uart1 = &uart1;
1091 + spi1 = &spi1;
1092 + spi2 = &spi2;
1093 + mmc = &mmc;
1094 + mmc1 = &mmc;
1095 + i2c1 = &i2c1;
1096 + i2c2 = &i2c2;
1097 + usb = &usb;
1098 + leds = &leds;
1099 + fb = &fb;
1100 + vchiq = &vchiq;
1101 + thermal = &thermal;
1102 + axiperf = &axiperf;
1103 + };
1104 +
1105 + leds: leds {
1106 + compatible = "gpio-leds";
1107 + };
1108 +
1109 + soc {
1110 + gpiomem {
1111 + compatible = "brcm,bcm2835-gpiomem";
1112 + reg = <0x7e200000 0x1000>;
1113 + };
1114 +
1115 + firmware: firmware {
1116 + compatible = "raspberrypi,bcm2835-firmware";
1117 + mboxes = <&mailbox>;
1118 + };
1119 +
1120 + power: power {
1121 + compatible = "raspberrypi,bcm2835-power";
1122 + firmware = <&firmware>;
1123 + #power-domain-cells = <1>;
1124 + };
1125 +
1126 + fb: fb {
1127 + compatible = "brcm,bcm2708-fb";
1128 + firmware = <&firmware>;
1129 + status = "disabled";
1130 + };
1131 +
1132 + vchiq: vchiq {
1133 + compatible = "brcm,bcm2835-vchiq";
1134 + reg = <0x7e00b840 0xf>;
1135 + interrupts = <0 2>;
1136 + cache-line-size = <32>;
1137 + firmware = <&firmware>;
1138 + };
1139 +
1140 + vcsm: vcsm {
1141 + compatible = "raspberrypi,bcm2835-vcsm";
1142 + firmware = <&firmware>;
1143 + status = "okay";
1144 + };
1145 +
1146 + thermal: thermal@7e212000 {
1147 + #thermal-sensor-cells = <0>;
1148 + status = "okay";
1149 + };
1150 +
1151 + /* Onboard audio */
1152 + audio: audio {
1153 + compatible = "brcm,bcm2835-audio";
1154 + brcm,pwm-channels = <8>;
1155 + status = "disabled";
1156 + };
1157 +
1158 + /* External sound card */
1159 + sound: sound {
1160 + status = "disabled";
1161 + };
1162 + };
1163 +
1164 + __overrides__ {
1165 + cache_line_size = <&vchiq>, "cache-line-size:0";
1166 +
1167 + uart0 = <&uart0>,"status";
1168 + uart1 = <&uart1>,"status";
1169 + i2s = <&i2s>,"status";
1170 + spi = <&spi0>,"status";
1171 + i2c0 = <&i2c0>,"status";
1172 + i2c1 = <&i2c1>,"status";
1173 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
1174 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
1175 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1176 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
1177 +
1178 + audio = <&audio>,"status";
1179 + watchdog = <&watchdog>,"status";
1180 + random = <&random>,"status";
1181 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
1182 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
1183 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
1184 + sd_debug = <&sdhost>,"brcm,debug";
1185 + axiperf = <&axiperf>,"status";
1186 + };
1187 +};
1188 +
1189 +&dma {
1190 + brcm,dma-channel-mask = <0x7f34>;
1191 +};
1192 +
1193 +&hdmi {
1194 + power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
1195 +};
1196 +
1197 +&usb {
1198 + power-domains = <&power RPI_POWER_DOMAIN_USB>;
1199 +};
1200 +
1201 +&clocks {
1202 + firmware = <&firmware>;
1203 +};
1204 +
1205 +sdhost_pins: &sdhost_gpio48 {
1206 + /* Add alias */
1207 +};
1208 +
1209 +&sdhost {
1210 + pinctrl-names = "default";
1211 + pinctrl-0 = <&sdhost_gpio48>;
1212 + bus-width = <4>;
1213 + brcm,overclock-50 = <0>;
1214 + brcm,pio-limit = <1>;
1215 + status = "okay";
1216 +};
1217 +
1218 +&fb {
1219 + status = "okay";
1220 +};
1221 +
1222 +&cpu_thermal {
1223 + /delete-node/ trips;
1224 +};
1225 --- /dev/null
1226 +++ b/arch/arm/boot/dts/bcm2708.dtsi
1227 @@ -0,0 +1,20 @@
1228 +#include "bcm2835.dtsi"
1229 +#include "bcm270x.dtsi"
1230 +#include "bcm2708-rpi.dtsi"
1231 +
1232 +/ {
1233 + soc {
1234 + timer@7e003000 {
1235 + compatible = "brcm,bcm2835-system-timer";
1236 + reg = <0x7e003000 0x1000>;
1237 + interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
1238 + clock-frequency = <1000000>;
1239 + };
1240 + };
1241 +
1242 + /delete-node/ cpus;
1243 +
1244 + __overrides__ {
1245 + arm_freq;
1246 + };
1247 +};
1248 --- /dev/null
1249 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
1250 @@ -0,0 +1,122 @@
1251 +/dts-v1/;
1252 +
1253 +#include "bcm2709.dtsi"
1254 +#include "bcm283x-rpi-smsc9514.dtsi"
1255 +
1256 +/ {
1257 + model = "Raspberry Pi 2 Model B";
1258 +};
1259 +
1260 +&gpio {
1261 + spi0_pins: spi0_pins {
1262 + brcm,pins = <9 10 11>;
1263 + brcm,function = <4>; /* alt0 */
1264 + };
1265 +
1266 + spi0_cs_pins: spi0_cs_pins {
1267 + brcm,pins = <8 7>;
1268 + brcm,function = <1>; /* output */
1269 + };
1270 +
1271 + i2c0_pins: i2c0 {
1272 + brcm,pins = <0 1>;
1273 + brcm,function = <4>;
1274 + };
1275 +
1276 + i2c1_pins: i2c1 {
1277 + brcm,pins = <2 3>;
1278 + brcm,function = <4>;
1279 + };
1280 +
1281 + i2s_pins: i2s {
1282 + brcm,pins = <18 19 20 21>;
1283 + brcm,function = <4>; /* alt0 */
1284 + };
1285 +
1286 + audio_pins: audio_pins {
1287 + brcm,pins = <40 45>;
1288 + brcm,function = <4>;
1289 + };
1290 +};
1291 +
1292 +&uart0 {
1293 + status = "okay";
1294 +};
1295 +
1296 +&spi0 {
1297 + pinctrl-names = "default";
1298 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1299 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1300 +
1301 + spidev0: spidev@0{
1302 + compatible = "spidev";
1303 + reg = <0>; /* CE0 */
1304 + #address-cells = <1>;
1305 + #size-cells = <0>;
1306 + spi-max-frequency = <125000000>;
1307 + };
1308 +
1309 + spidev1: spidev@1{
1310 + compatible = "spidev";
1311 + reg = <1>; /* CE1 */
1312 + #address-cells = <1>;
1313 + #size-cells = <0>;
1314 + spi-max-frequency = <125000000>;
1315 + };
1316 +};
1317 +
1318 +&i2c0 {
1319 + pinctrl-names = "default";
1320 + pinctrl-0 = <&i2c0_pins>;
1321 + clock-frequency = <100000>;
1322 +};
1323 +
1324 +&i2c1 {
1325 + pinctrl-names = "default";
1326 + pinctrl-0 = <&i2c1_pins>;
1327 + clock-frequency = <100000>;
1328 +};
1329 +
1330 +&i2c2 {
1331 + clock-frequency = <100000>;
1332 +};
1333 +
1334 +&i2s {
1335 + pinctrl-names = "default";
1336 + pinctrl-0 = <&i2s_pins>;
1337 +};
1338 +
1339 +&leds {
1340 + act_led: act {
1341 + label = "led0";
1342 + linux,default-trigger = "mmc0";
1343 + gpios = <&gpio 47 0>;
1344 + };
1345 +
1346 + pwr_led: pwr {
1347 + label = "led1";
1348 + linux,default-trigger = "input";
1349 + gpios = <&gpio 35 0>;
1350 + };
1351 +};
1352 +
1353 +&hdmi {
1354 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1355 +};
1356 +
1357 +&audio {
1358 + pinctrl-names = "default";
1359 + pinctrl-0 = <&audio_pins>;
1360 +};
1361 +
1362 +/ {
1363 + __overrides__ {
1364 + act_led_gpio = <&act_led>,"gpios:4";
1365 + act_led_activelow = <&act_led>,"gpios:8";
1366 + act_led_trigger = <&act_led>,"linux,default-trigger";
1367 +
1368 + pwr_led_gpio = <&pwr_led>,"gpios:4";
1369 + pwr_led_activelow = <&pwr_led>,"gpios:8";
1370 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
1371 + };
1372 +};
1373 --- /dev/null
1374 +++ b/arch/arm/boot/dts/bcm2709.dtsi
1375 @@ -0,0 +1,22 @@
1376 +#include "bcm2836.dtsi"
1377 +#include "bcm270x.dtsi"
1378 +#include "bcm2708-rpi.dtsi"
1379 +
1380 +/ {
1381 + soc {
1382 + ranges = <0x7e000000 0x3f000000 0x01000000>,
1383 + <0x40000000 0x40000000 0x00040000>;
1384 +
1385 + syscon@40000000 {
1386 + compatible = "brcm,bcm2836-arm-local", "syscon";
1387 + reg = <0x40000000 0x100>;
1388 + };
1389 + };
1390 +
1391 + __overrides__ {
1392 + arm_freq = <&v7_cpu0>, "clock-frequency:0",
1393 + <&v7_cpu1>, "clock-frequency:0",
1394 + <&v7_cpu2>, "clock-frequency:0",
1395 + <&v7_cpu3>, "clock-frequency:0";
1396 + };
1397 +};
1398 --- /dev/null
1399 +++ b/arch/arm/boot/dts/bcm270x.dtsi
1400 @@ -0,0 +1,181 @@
1401 +/* Downstream bcm283x.dtsi diff */
1402 +#include "dt-bindings/power/raspberrypi-power.h"
1403 +
1404 +/ {
1405 + chosen {
1406 + bootargs = "";
1407 + };
1408 +
1409 + soc: soc {
1410 +
1411 + /delete-node/ timer@7e003000;
1412 +
1413 + watchdog: watchdog@7e100000 {
1414 + /* Add alias */
1415 + };
1416 +
1417 + cprman: cprman@7e101000 {
1418 + /* Add alias */
1419 + };
1420 +
1421 + random: rng@7e104000 {
1422 + /* Add alias */
1423 + };
1424 +
1425 + gpio@7e200000 { /* gpio */
1426 + interrupts = <2 17>, <2 18>;
1427 + };
1428 +
1429 + serial@7e201000 { /* uart0 */
1430 + /* Enable CTS bug workaround */
1431 + cts-event-workaround;
1432 + };
1433 +
1434 + i2s@7e203000 { /* i2s */
1435 + #sound-dai-cells = <0>;
1436 + reg = <0x7e203000 0x24>;
1437 + clocks = <&clocks BCM2835_CLOCK_PCM>;
1438 + };
1439 +
1440 + spi0: spi@7e204000 {
1441 + /* Add alias */
1442 + dmas = <&dma 6>, <&dma 7>;
1443 + dma-names = "tx", "rx";
1444 + };
1445 +
1446 + pixelvalve0: pixelvalve@7e206000 {
1447 + /* Add alias */
1448 + status = "disabled";
1449 + };
1450 +
1451 + pixelvalve1: pixelvalve@7e207000 {
1452 + /* Add alias */
1453 + status = "disabled";
1454 + };
1455 +
1456 + dpi: dpi@7e208000 {
1457 + compatible = "brcm,bcm2835-dpi";
1458 + reg = <0x7e208000 0x8c>;
1459 + clocks = <&clocks BCM2835_CLOCK_VPU>,
1460 + <&clocks BCM2835_CLOCK_DPI>;
1461 + clock-names = "core", "pixel";
1462 + #address-cells = <1>;
1463 + #size-cells = <0>;
1464 + status = "disabled";
1465 + };
1466 +
1467 + /delete-node/ sdhci@7e300000;
1468 +
1469 + mmc: mmc@7e300000 {
1470 + compatible = "brcm,bcm2835-mmc";
1471 + reg = <0x7e300000 0x100>;
1472 + interrupts = <2 30>;
1473 + clocks = <&clocks BCM2835_CLOCK_EMMC>;
1474 + dmas = <&dma 11>;
1475 + dma-names = "rx-tx";
1476 + brcm,overclock-50 = <0>;
1477 + status = "disabled";
1478 + };
1479 +
1480 + hvs: hvs@7e400000 {
1481 + /* Add alias */
1482 + status = "disabled";
1483 + };
1484 +
1485 + firmwarekms: firmwarekms@7e600000 {
1486 + compatible = "raspberrypi,rpi-firmware-kms";
1487 + /* SMI interrupt reg */
1488 + reg = <0x7e600000 0x100>;
1489 + interrupts = <2 16>;
1490 + brcm,firmware = <&firmware>;
1491 + status = "disabled";
1492 + };
1493 +
1494 + smi: smi@7e600000 {
1495 + compatible = "brcm,bcm2835-smi";
1496 + reg = <0x7e600000 0x100>;
1497 + interrupts = <2 16>;
1498 + clocks = <&clocks BCM2835_CLOCK_SMI>;
1499 + assigned-clocks = <&cprman BCM2835_CLOCK_SMI>;
1500 + assigned-clock-rates = <125000000>;
1501 + dmas = <&dma 4>;
1502 + dma-names = "rx-tx";
1503 + status = "disabled";
1504 + };
1505 +
1506 + pixelvalve2: pixelvalve@7e807000 {
1507 + /* Add alias */
1508 + status = "disabled";
1509 + };
1510 +
1511 + hdmi@7e902000 { /* hdmi */
1512 + status = "disabled";
1513 + };
1514 +
1515 + usb@7e980000 { /* usb */
1516 + compatible = "brcm,bcm2708-usb";
1517 + reg = <0x7e980000 0x10000>,
1518 + <0x7e006000 0x1000>;
1519 + interrupts = <2 0>,
1520 + <1 9>;
1521 + };
1522 +
1523 + v3d@7ec00000 { /* vd3 */
1524 + compatible = "brcm,vc4-v3d";
1525 + power-domains = <&power RPI_POWER_DOMAIN_V3D>;
1526 + status = "disabled";
1527 + };
1528 +
1529 + gpu: gpu {
1530 + /* Add alias */
1531 + status = "disabled";
1532 + };
1533 +
1534 + axiperf: axiperf {
1535 + compatible = "brcm,bcm2835-axiperf";
1536 + reg = <0x7e009800 0x100>,
1537 + <0x7ee08000 0x100>;
1538 + firmware = <&firmware>;
1539 + status = "disabled";
1540 + };
1541 + };
1542 +
1543 + vdd_5v0_reg: fixedregulator_5v0 {
1544 + compatible = "regulator-fixed";
1545 + regulator-name = "5v0";
1546 + regulator-min-microvolt = <5000000>;
1547 + regulator-max-microvolt = <5000000>;
1548 + regulator-always-on;
1549 + };
1550 +
1551 + vdd_3v3_reg: fixedregulator_3v3 {
1552 + compatible = "regulator-fixed";
1553 + regulator-name = "3v3";
1554 + regulator-min-microvolt = <3300000>;
1555 + regulator-max-microvolt = <3300000>;
1556 + regulator-always-on;
1557 + };
1558 +};
1559 +
1560 +/* Configure and use the auxilliary interrupt controller */
1561 +
1562 +&aux {
1563 + interrupts = <1 29>;
1564 + interrupt-controller;
1565 + #interrupt-cells = <1>;
1566 +};
1567 +
1568 +&uart1 {
1569 + interrupt-parent = <&aux>;
1570 + interrupts = <0>;
1571 +};
1572 +
1573 +&spi1 {
1574 + interrupt-parent = <&aux>;
1575 + interrupts = <1>;
1576 +};
1577 +
1578 +&spi2 {
1579 + interrupt-parent = <&aux>;
1580 + interrupts = <2>;
1581 +};
1582 --- /dev/null
1583 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
1584 @@ -0,0 +1,194 @@
1585 +/dts-v1/;
1586 +
1587 +#ifdef RPI364
1588 +/memreserve/ 0x00000000 0x00001000;
1589 +#endif
1590 +
1591 +#include "bcm2710.dtsi"
1592 +#include "bcm283x-rpi-smsc9514.dtsi"
1593 +
1594 +/ {
1595 + model = "Raspberry Pi 3 Model B";
1596 +
1597 + chosen {
1598 + bootargs = "8250.nr_uarts=1";
1599 + };
1600 +
1601 + aliases {
1602 + serial0 = &uart1;
1603 + serial1 = &uart0;
1604 + };
1605 +};
1606 +
1607 +&gpio {
1608 + spi0_pins: spi0_pins {
1609 + brcm,pins = <9 10 11>;
1610 + brcm,function = <4>; /* alt0 */
1611 + };
1612 +
1613 + spi0_cs_pins: spi0_cs_pins {
1614 + brcm,pins = <8 7>;
1615 + brcm,function = <1>; /* output */
1616 + };
1617 +
1618 + i2c0_pins: i2c0 {
1619 + brcm,pins = <0 1>;
1620 + brcm,function = <4>;
1621 + };
1622 +
1623 + i2c1_pins: i2c1 {
1624 + brcm,pins = <2 3>;
1625 + brcm,function = <4>;
1626 + };
1627 +
1628 + i2s_pins: i2s {
1629 + brcm,pins = <18 19 20 21>;
1630 + brcm,function = <4>; /* alt0 */
1631 + };
1632 +
1633 + sdio_pins: sdio_pins {
1634 + brcm,pins = <34 35 36 37 38 39>;
1635 + brcm,function = <7>; // alt3 = SD1
1636 + brcm,pull = <0 2 2 2 2 2>;
1637 + };
1638 +
1639 + bt_pins: bt_pins {
1640 + brcm,pins = <43>;
1641 + brcm,function = <4>; /* alt0:GPCLK2 */
1642 + brcm,pull = <0>;
1643 + };
1644 +
1645 + uart0_pins: uart0_pins {
1646 + brcm,pins = <32 33>;
1647 + brcm,function = <7>; /* alt3=UART0 */
1648 + brcm,pull = <0 2>;
1649 + };
1650 +
1651 + uart1_pins: uart1_pins {
1652 + brcm,pins;
1653 + brcm,function;
1654 + brcm,pull;
1655 + };
1656 +
1657 + audio_pins: audio_pins {
1658 + brcm,pins = <40 41>;
1659 + brcm,function = <4>;
1660 + };
1661 +};
1662 +
1663 +&mmc {
1664 + pinctrl-names = "default";
1665 + pinctrl-0 = <&sdio_pins>;
1666 + non-removable;
1667 + bus-width = <4>;
1668 + status = "okay";
1669 + brcm,overclock-50 = <0>;
1670 +};
1671 +
1672 +&soc {
1673 + virtgpio: virtgpio {
1674 + compatible = "brcm,bcm2835-virtgpio";
1675 + gpio-controller;
1676 + #gpio-cells = <2>;
1677 + firmware = <&firmware>;
1678 + status = "okay";
1679 + };
1680 +
1681 + expgpio: expgpio {
1682 + compatible = "brcm,bcm2835-expgpio";
1683 + gpio-controller;
1684 + #gpio-cells = <2>;
1685 + firmware = <&firmware>;
1686 + status = "okay";
1687 + };
1688 +};
1689 +
1690 +&uart0 {
1691 + pinctrl-names = "default";
1692 + pinctrl-0 = <&uart0_pins &bt_pins>;
1693 + status = "okay";
1694 +};
1695 +
1696 +&uart1 {
1697 + pinctrl-names = "default";
1698 + pinctrl-0 = <&uart1_pins>;
1699 + status = "okay";
1700 +};
1701 +
1702 +&spi0 {
1703 + pinctrl-names = "default";
1704 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1705 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1706 +
1707 + spidev0: spidev@0{
1708 + compatible = "spidev";
1709 + reg = <0>; /* CE0 */
1710 + #address-cells = <1>;
1711 + #size-cells = <0>;
1712 + spi-max-frequency = <125000000>;
1713 + };
1714 +
1715 + spidev1: spidev@1{
1716 + compatible = "spidev";
1717 + reg = <1>; /* CE1 */
1718 + #address-cells = <1>;
1719 + #size-cells = <0>;
1720 + spi-max-frequency = <125000000>;
1721 + };
1722 +};
1723 +
1724 +&i2c0 {
1725 + pinctrl-names = "default";
1726 + pinctrl-0 = <&i2c0_pins>;
1727 + clock-frequency = <100000>;
1728 +};
1729 +
1730 +&i2c1 {
1731 + pinctrl-names = "default";
1732 + pinctrl-0 = <&i2c1_pins>;
1733 + clock-frequency = <100000>;
1734 +};
1735 +
1736 +&i2c2 {
1737 + clock-frequency = <100000>;
1738 +};
1739 +
1740 +&i2s {
1741 + pinctrl-names = "default";
1742 + pinctrl-0 = <&i2s_pins>;
1743 +};
1744 +
1745 +&leds {
1746 + act_led: act {
1747 + label = "led0";
1748 + linux,default-trigger = "mmc0";
1749 + gpios = <&virtgpio 0 0>;
1750 + };
1751 +
1752 + pwr_led: pwr {
1753 + label = "led1";
1754 + linux,default-trigger = "input";
1755 + gpios = <&expgpio 7 0>;
1756 + };
1757 +};
1758 +
1759 +&hdmi {
1760 + hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
1761 +};
1762 +
1763 +&audio {
1764 + pinctrl-names = "default";
1765 + pinctrl-0 = <&audio_pins>;
1766 +};
1767 +
1768 +/ {
1769 + __overrides__ {
1770 + act_led_gpio = <&act_led>,"gpios:4";
1771 + act_led_activelow = <&act_led>,"gpios:8";
1772 + act_led_trigger = <&act_led>,"linux,default-trigger";
1773 +
1774 + pwr_led_gpio = <&pwr_led>,"gpios:4";
1775 + pwr_led_activelow = <&pwr_led>,"gpios:8";
1776 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
1777 + };
1778 +};
1779 --- /dev/null
1780 +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
1781 @@ -0,0 +1,129 @@
1782 +/dts-v1/;
1783 +
1784 +#include "bcm2710.dtsi"
1785 +
1786 +/ {
1787 + model = "Raspberry Pi Compute Module 3";
1788 +};
1789 +
1790 +&uart0 {
1791 + status = "okay";
1792 +};
1793 +
1794 +&gpio {
1795 + spi0_pins: spi0_pins {
1796 + brcm,pins = <9 10 11>;
1797 + brcm,function = <4>; /* alt0 */
1798 + };
1799 +
1800 + spi0_cs_pins: spi0_cs_pins {
1801 + brcm,pins = <8 7>;
1802 + brcm,function = <1>; /* output */
1803 + };
1804 +
1805 + i2c0_pins: i2c0 {
1806 + brcm,pins = <0 1>;
1807 + brcm,function = <4>;
1808 + };
1809 +
1810 + i2c1_pins: i2c1 {
1811 + brcm,pins = <2 3>;
1812 + brcm,function = <4>;
1813 + };
1814 +
1815 + i2s_pins: i2s {
1816 + brcm,pins = <18 19 20 21>;
1817 + brcm,function = <4>; /* alt0 */
1818 + };
1819 +
1820 + audio_pins: audio_pins {
1821 + brcm,pins;
1822 + brcm,function;
1823 + };
1824 +};
1825 +
1826 +&soc {
1827 + virtgpio: virtgpio {
1828 + compatible = "brcm,bcm2835-virtgpio";
1829 + gpio-controller;
1830 + #gpio-cells = <2>;
1831 + firmware = <&firmware>;
1832 + status = "okay";
1833 + };
1834 +
1835 + expgpio: expgpio {
1836 + compatible = "brcm,bcm2835-expgpio";
1837 + gpio-controller;
1838 + #gpio-cells = <2>;
1839 + firmware = <&firmware>;
1840 + status = "okay";
1841 + };
1842 +};
1843 +
1844 +&spi0 {
1845 + pinctrl-names = "default";
1846 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1847 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1848 +
1849 + spidev0: spidev@0{
1850 + compatible = "spidev";
1851 + reg = <0>; /* CE0 */
1852 + #address-cells = <1>;
1853 + #size-cells = <0>;
1854 + spi-max-frequency = <125000000>;
1855 + };
1856 +
1857 + spidev1: spidev@1{
1858 + compatible = "spidev";
1859 + reg = <1>; /* CE1 */
1860 + #address-cells = <1>;
1861 + #size-cells = <0>;
1862 + spi-max-frequency = <125000000>;
1863 + };
1864 +};
1865 +
1866 +&i2c0 {
1867 + pinctrl-names = "default";
1868 + pinctrl-0 = <&i2c0_pins>;
1869 + clock-frequency = <100000>;
1870 +};
1871 +
1872 +&i2c1 {
1873 + pinctrl-names = "default";
1874 + pinctrl-0 = <&i2c1_pins>;
1875 + clock-frequency = <100000>;
1876 +};
1877 +
1878 +&i2c2 {
1879 + clock-frequency = <100000>;
1880 +};
1881 +
1882 +&i2s {
1883 + pinctrl-names = "default";
1884 + pinctrl-0 = <&i2s_pins>;
1885 +};
1886 +
1887 +&leds {
1888 + act_led: act {
1889 + label = "led0";
1890 + linux,default-trigger = "mmc0";
1891 + gpios = <&virtgpio 0 0>;
1892 + };
1893 +};
1894 +
1895 +&hdmi {
1896 + hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
1897 +};
1898 +
1899 +&audio {
1900 + pinctrl-names = "default";
1901 + pinctrl-0 = <&audio_pins>;
1902 +};
1903 +
1904 +/ {
1905 + __overrides__ {
1906 + act_led_gpio = <&act_led>,"gpios:4";
1907 + act_led_activelow = <&act_led>,"gpios:8";
1908 + act_led_trigger = <&act_led>,"linux,default-trigger";
1909 + };
1910 +};
1911 --- /dev/null
1912 +++ b/arch/arm/boot/dts/bcm2710.dtsi
1913 @@ -0,0 +1,32 @@
1914 +#include "bcm2837.dtsi"
1915 +#include "bcm270x.dtsi"
1916 +#include "bcm2708-rpi.dtsi"
1917 +
1918 +/ {
1919 + compatible = "brcm,bcm2837", "brcm,bcm2836";
1920 +
1921 + soc {
1922 +
1923 + arm-pmu {
1924 +#ifdef RPI364
1925 + compatible = "arm,armv8-pmuv3", "arm,cortex-a7-pmu";
1926 +#else
1927 + compatible = "arm,cortex-a7-pmu";
1928 +#endif
1929 + interrupt-parent = <&local_intc>;
1930 + interrupts = <9>;
1931 + };
1932 +
1933 + syscon@40000000 {
1934 + compatible = "brcm,bcm2836-arm-local", "syscon";
1935 + reg = <0x40000000 0x100>;
1936 + };
1937 + };
1938 +
1939 + __overrides__ {
1940 + arm_freq = <&cpu0>, "clock-frequency:0",
1941 + <&cpu1>, "clock-frequency:0",
1942 + <&cpu2>, "clock-frequency:0",
1943 + <&cpu3>, "clock-frequency:0";
1944 + };
1945 +};
1946 --- /dev/null
1947 +++ b/arch/arm/boot/dts/overlays/Makefile
1948 @@ -0,0 +1,128 @@
1949 +# Overlays for the Raspberry Pi platform
1950 +
1951 +dtbo-$(CONFIG_ARCH_BCM2835) += \
1952 + adau1977-adc.dtbo \
1953 + adau7002-simple.dtbo \
1954 + ads1015.dtbo \
1955 + ads1115.dtbo \
1956 + ads7846.dtbo \
1957 + akkordion-iqdacplus.dtbo \
1958 + allo-boss-dac-pcm512x-audio.dtbo \
1959 + allo-digione.dtbo \
1960 + allo-piano-dac-pcm512x-audio.dtbo \
1961 + allo-piano-dac-plus-pcm512x-audio.dtbo \
1962 + at86rf233.dtbo \
1963 + audioinjector-addons.dtbo \
1964 + audioinjector-wm8731-audio.dtbo \
1965 + audremap.dtbo \
1966 + bmp085_i2c-sensor.dtbo \
1967 + dht11.dtbo \
1968 + dionaudio-loco.dtbo \
1969 + dionaudio-loco-v2.dtbo \
1970 + dpi18.dtbo \
1971 + dpi24.dtbo \
1972 + dwc-otg.dtbo \
1973 + dwc2.dtbo \
1974 + enc28j60.dtbo \
1975 + enc28j60-spi2.dtbo \
1976 + fe-pi-audio.dtbo \
1977 + goodix.dtbo \
1978 + googlevoicehat-soundcard.dtbo \
1979 + gpio-ir.dtbo \
1980 + gpio-ir-tx.dtbo \
1981 + gpio-poweroff.dtbo \
1982 + gpio-shutdown.dtbo \
1983 + hifiberry-amp.dtbo \
1984 + hifiberry-dac.dtbo \
1985 + hifiberry-dacplus.dtbo \
1986 + hifiberry-digi.dtbo \
1987 + hifiberry-digi-pro.dtbo \
1988 + hy28a.dtbo \
1989 + hy28b.dtbo \
1990 + i2c-bcm2708.dtbo \
1991 + i2c-gpio.dtbo \
1992 + i2c-mux.dtbo \
1993 + i2c-pwm-pca9685a.dtbo \
1994 + i2c-rtc.dtbo \
1995 + i2c-rtc-gpio.dtbo \
1996 + i2c-sensor.dtbo \
1997 + i2c0-bcm2708.dtbo \
1998 + i2c1-bcm2708.dtbo \
1999 + i2s-gpio28-31.dtbo \
2000 + iqaudio-dac.dtbo \
2001 + iqaudio-dacplus.dtbo \
2002 + iqaudio-digi-wm8804-audio.dtbo \
2003 + justboom-dac.dtbo \
2004 + justboom-digi.dtbo \
2005 + lirc-rpi.dtbo \
2006 + mcp23017.dtbo \
2007 + mcp23s17.dtbo \
2008 + mcp2515-can0.dtbo \
2009 + mcp2515-can1.dtbo \
2010 + mcp3008.dtbo \
2011 + midi-uart0.dtbo \
2012 + midi-uart1.dtbo \
2013 + mmc.dtbo \
2014 + mpu6050.dtbo \
2015 + mz61581.dtbo \
2016 + papirus.dtbo \
2017 + pi3-act-led.dtbo \
2018 + pi3-disable-bt.dtbo \
2019 + pi3-disable-wifi.dtbo \
2020 + pi3-miniuart-bt.dtbo \
2021 + piscreen.dtbo \
2022 + piscreen2r.dtbo \
2023 + pisound.dtbo \
2024 + pitft22.dtbo \
2025 + pitft28-capacitive.dtbo \
2026 + pitft28-resistive.dtbo \
2027 + pitft35-resistive.dtbo \
2028 + pps-gpio.dtbo \
2029 + pwm.dtbo \
2030 + pwm-2chan.dtbo \
2031 + pwm-ir-tx.dtbo \
2032 + qca7000.dtbo \
2033 + raspidac3.dtbo \
2034 + rotary-encoder.dtbo \
2035 + rpi-backlight.dtbo \
2036 + rpi-cirrus-wm5102.dtbo \
2037 + rpi-dac.dtbo \
2038 + rpi-display.dtbo \
2039 + rpi-ft5406.dtbo \
2040 + rpi-proto.dtbo \
2041 + rpi-sense.dtbo \
2042 + rpi-tv.dtbo \
2043 + rra-digidac1-wm8741-audio.dtbo \
2044 + sc16is750-i2c.dtbo \
2045 + sc16is752-spi1.dtbo \
2046 + sdhost.dtbo \
2047 + sdio.dtbo \
2048 + sdio-1bit.dtbo \
2049 + sdtweak.dtbo \
2050 + smi.dtbo \
2051 + smi-dev.dtbo \
2052 + smi-nand.dtbo \
2053 + spi-gpio35-39.dtbo \
2054 + spi-rtc.dtbo \
2055 + spi0-cs.dtbo \
2056 + spi0-hw-cs.dtbo \
2057 + spi1-1cs.dtbo \
2058 + spi1-2cs.dtbo \
2059 + spi1-3cs.dtbo \
2060 + spi2-1cs.dtbo \
2061 + spi2-2cs.dtbo \
2062 + spi2-3cs.dtbo \
2063 + tinylcd35.dtbo \
2064 + uart1.dtbo \
2065 + vc4-fkms-v3d.dtbo \
2066 + vc4-kms-v3d.dtbo \
2067 + vga666.dtbo \
2068 + w1-gpio.dtbo \
2069 + w1-gpio-pullup.dtbo \
2070 + wittypi.dtbo
2071 +
2072 +targets += dtbs dtbs_install
2073 +targets += $(dtbo-y)
2074 +
2075 +always := $(dtbo-y)
2076 +clean-files := *.dtbo
2077 --- /dev/null
2078 +++ b/arch/arm/boot/dts/overlays/README
2079 @@ -0,0 +1,1678 @@
2080 +Introduction
2081 +============
2082 +
2083 +This directory contains Device Tree overlays. Device Tree makes it possible
2084 +to support many hardware configurations with a single kernel and without the
2085 +need to explicitly load or blacklist kernel modules. Note that this isn't a
2086 +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
2087 +are still configured by the board support code, but the intention is to
2088 +eventually reach that goal.
2089 +
2090 +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
2091 +default, the Raspberry Pi kernel boots with device tree enabled. You can
2092 +completely disable DT usage (for now) by adding:
2093 +
2094 + device_tree=
2095 +
2096 +to your config.txt, which should cause your Pi to revert to the old way of
2097 +doing things after a reboot.
2098 +
2099 +In /boot you will find a .dtb for each base platform. This describes the
2100 +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
2101 +siblings) selects the .dtb file appropriate for the platform by name, and reads
2102 +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
2103 +are disabled, but they can be enabled using Device Tree parameters:
2104 +
2105 + dtparam=i2c=on,i2s=on,spi=on
2106 +
2107 +However, this shouldn't be necessary in many use cases because loading an
2108 +overlay that requires one of those interfaces will cause it to be enabled
2109 +automatically, and it is advisable to only enable interfaces if they are
2110 +needed.
2111 +
2112 +Configuring additional, optional hardware is done using Device Tree overlays
2113 +(see below).
2114 +
2115 +GPIO numbering uses the hardware pin numbering scheme (aka BCM scheme) and
2116 +not the physical pin numbers.
2117 +
2118 +raspi-config
2119 +============
2120 +
2121 +The Advanced Options section of the raspi-config utility can enable and disable
2122 +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
2123 +is possible to both enable an interface and blacklist the driver, if for some
2124 +reason you should want to defer the loading.
2125 +
2126 +Modules
2127 +=======
2128 +
2129 +As well as describing the hardware, Device Tree also gives enough information
2130 +to allow suitable driver modules to be located and loaded, with the corollary
2131 +that unneeded modules are not loaded. As a result it should be possible to
2132 +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
2133 +have its contents deleted (or commented out).
2134 +
2135 +Using Overlays
2136 +==============
2137 +
2138 +Overlays are loaded using the "dtoverlay" directive. As an example, consider
2139 +the popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
2140 +pre-DT world this would be loaded from /etc/modules, with an explicit
2141 +"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
2142 +this becomes a line in config.txt:
2143 +
2144 + dtoverlay=lirc-rpi
2145 +
2146 +This causes the file /boot/overlays/lirc-rpi.dtbo to be loaded. By
2147 +default it will use GPIOs 17 (out) and 18 (in), but this can be modified using
2148 +DT parameters:
2149 +
2150 + dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13
2151 +
2152 +Parameters always have default values, although in some cases (e.g. "w1-gpio")
2153 +it is necessary to provided multiple overlays in order to get the desired
2154 +behaviour. See the list of overlays below for a description of the parameters
2155 +and their defaults.
2156 +
2157 +The Overlay and Parameter Reference
2158 +===================================
2159 +
2160 +N.B. When editing this file, please preserve the indentation levels to make it
2161 +simple to parse programmatically. NO HARD TABS.
2162 +
2163 +
2164 +Name: <The base DTB>
2165 +Info: Configures the base Raspberry Pi hardware
2166 +Load: <loaded automatically>
2167 +Params:
2168 + audio Set to "on" to enable the onboard ALSA audio
2169 + interface (default "off")
2170 +
2171 + i2c_arm Set to "on" to enable the ARM's i2c interface
2172 + (default "off")
2173 +
2174 + i2c_vc Set to "on" to enable the i2c interface
2175 + usually reserved for the VideoCore processor
2176 + (default "off")
2177 +
2178 + i2c An alias for i2c_arm
2179 +
2180 + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
2181 + (default "100000")
2182 +
2183 + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
2184 + (default "100000")
2185 +
2186 + i2c_baudrate An alias for i2c_arm_baudrate
2187 +
2188 + i2s Set to "on" to enable the i2s interface
2189 + (default "off")
2190 +
2191 + spi Set to "on" to enable the spi interfaces
2192 + (default "off")
2193 +
2194 + random Set to "on" to enable the hardware random
2195 + number generator (default "on")
2196 +
2197 + sd_overclock Clock (in MHz) to use when the MMC framework
2198 + requests 50MHz
2199 +
2200 + sd_force_pio Disable DMA support for SD driver (default off)
2201 +
2202 + sd_pio_limit Number of blocks above which to use DMA for
2203 + SD card (default 1)
2204 +
2205 + sd_debug Enable debug output from SD driver (default off)
2206 +
2207 + uart0 Set to "off" to disable uart0 (default "on")
2208 +
2209 + uart1 Set to "on" or "off" to enable or disable uart1
2210 + (default varies)
2211 +
2212 + watchdog Set to "on" to enable the hardware watchdog
2213 + (default "off")
2214 +
2215 + act_led_trigger Choose which activity the LED tracks.
2216 + Use "heartbeat" for a nice load indicator.
2217 + (default "mmc")
2218 +
2219 + act_led_activelow Set to "on" to invert the sense of the LED
2220 + (default "off")
2221 + N.B. For Pi3 see pi3-act-led overlay.
2222 +
2223 + act_led_gpio Set which GPIO to use for the activity LED
2224 + (in case you want to connect it to an external
2225 + device)
2226 + (default "16" on a non-Plus board, "47" on a
2227 + Plus or Pi 2)
2228 + N.B. For Pi3 see pi3-act-led overlay.
2229 +
2230 + pwr_led_trigger
2231 + pwr_led_activelow
2232 + pwr_led_gpio
2233 + As for act_led_*, but using the PWR LED.
2234 + Not available on Model A/B boards.
2235 +
2236 + N.B. It is recommended to only enable those interfaces that are needed.
2237 + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
2238 + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
2239 + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
2240 + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
2241 + but deprecated because the ARM/VC assignments differ between board
2242 + revisions. The same board-specific mapping applies to i2c_baudrate,
2243 + and the other i2c baudrate parameters.
2244 +
2245 +
2246 +Name: adau1977-adc
2247 +Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
2248 + and I2S for data.
2249 +Load: dtoverlay=adau1977-adc
2250 +Params: <None>
2251 +
2252 +
2253 +Name: adau7002-simple
2254 +Info: Overlay for the activation of ADAU7002 stereo PDM to I2S converter.
2255 +Load: dtoverlay=adau7002-simple,<param>=<val>
2256 +Params: card-name Override the default, "adau7002", card name.
2257 +
2258 +
2259 +Name: ads1015
2260 +Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C
2261 +Load: dtoverlay=ads1015,<param>=<val>
2262 +Params: addr I2C bus address of device. Set based on how the
2263 + addr pin is wired. (default=0x48 assumes addr
2264 + is pulled to GND)
2265 + cha_enable Enable virtual channel a. (default=true)
2266 + cha_cfg Set the configuration for virtual channel a.
2267 + (default=4 configures this channel for the
2268 + voltage at A0 with respect to GND)
2269 + cha_datarate Set the datarate (samples/sec) for this channel.
2270 + (default=4 sets 1600 sps)
2271 + cha_gain Set the gain of the Programmable Gain
2272 + Amplifier for this channel. (default=2 sets the
2273 + full scale of the channel to 2.048 Volts)
2274 +
2275 + Channel (ch) parameters can be set for each enabled channel.
2276 + A maximum of 4 channels can be enabled (letters a thru d).
2277 + For more information refer to the device datasheet at:
2278 + http://www.ti.com/lit/ds/symlink/ads1015.pdf
2279 +
2280 +
2281 +Name: ads1115
2282 +Info: Texas Instruments ADS1115 ADC
2283 +Load: dtoverlay=ads1115,<param>[=<val>]
2284 +Params: addr I2C bus address of device. Set based on how the
2285 + addr pin is wired. (default=0x48 assumes addr
2286 + is pulled to GND)
2287 + cha_enable Enable virtual channel a.
2288 + cha_cfg Set the configuration for virtual channel a.
2289 + (default=4 configures this channel for the
2290 + voltage at A0 with respect to GND)
2291 + cha_datarate Set the datarate (samples/sec) for this channel.
2292 + (default=7 sets 860 sps)
2293 + cha_gain Set the gain of the Programmable Gain
2294 + Amplifier for this channel. (Default 1 sets the
2295 + full scale of the channel to 4.096 Volts)
2296 +
2297 + Channel parameters can be set for each enabled channel.
2298 + A maximum of 4 channels can be enabled (letters a thru d).
2299 + For more information refer to the device datasheet at:
2300 + http://www.ti.com/lit/ds/symlink/ads1115.pdf
2301 +
2302 +
2303 +Name: ads7846
2304 +Info: ADS7846 Touch controller
2305 +Load: dtoverlay=ads7846,<param>=<val>
2306 +Params: cs SPI bus Chip Select (default 1)
2307 + speed SPI bus speed (default 2MHz, max 3.25MHz)
2308 + penirq GPIO used for PENIRQ. REQUIRED
2309 + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
2310 + swapxy Swap x and y axis
2311 + xmin Minimum value on the X axis (default 0)
2312 + ymin Minimum value on the Y axis (default 0)
2313 + xmax Maximum value on the X axis (default 4095)
2314 + ymax Maximum value on the Y axis (default 4095)
2315 + pmin Minimum reported pressure value (default 0)
2316 + pmax Maximum reported pressure value (default 65535)
2317 + xohms Touchpanel sensitivity (X-plate resistance)
2318 + (default 400)
2319 +
2320 + penirq is required and usually xohms (60-100) has to be set as well.
2321 + Apart from that, pmax (255) and swapxy are also common.
2322 + The rest of the calibration can be done with xinput-calibrator.
2323 + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
2324 + Device Tree binding document:
2325 + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
2326 +
2327 +
2328 +Name: akkordion-iqdacplus
2329 +Info: Configures the Digital Dreamtime Akkordion Music Player (based on the
2330 + OEM IQAudIO DAC+ or DAC Zero module).
2331 +Load: dtoverlay=akkordion-iqdacplus,<param>=<val>
2332 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2333 + Digital volume control. Enable with
2334 + dtoverlay=akkordion-iqdacplus,24db_digital_gain
2335 + (The default behaviour is that the Digital
2336 + volume control is limited to a maximum of
2337 + 0dB. ie. it can attenuate but not provide
2338 + gain. For most users, this will be desired
2339 + as it will prevent clipping. By appending
2340 + the 24db_digital_gain parameter, the Digital
2341 + volume control will allow up to 24dB of
2342 + gain. If this parameter is enabled, it is the
2343 + responsibility of the user to ensure that
2344 + the Digital volume control is set to a value
2345 + that does not result in clipping/distortion!)
2346 +
2347 +
2348 +Name: allo-boss-dac-pcm512x-audio
2349 +Info: Configures the Allo Boss DAC audio cards.
2350 +Load: dtoverlay=allo-boss-dac-pcm512x-audio,<param>
2351 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2352 + Digital volume control. Enable with
2353 + "dtoverlay=allo-boss-dac-pcm512x-audio,
2354 + 24db_digital_gain"
2355 + (The default behaviour is that the Digital
2356 + volume control is limited to a maximum of
2357 + 0dB. ie. it can attenuate but not provide
2358 + gain. For most users, this will be desired
2359 + as it will prevent clipping. By appending
2360 + the 24db_digital_gain parameter, the Digital
2361 + volume control will allow up to 24dB of
2362 + gain. If this parameter is enabled, it is the
2363 + responsibility of the user to ensure that
2364 + the Digital volume control is set to a value
2365 + that does not result in clipping/distortion!)
2366 + slave Force Boss DAC into slave mode, using Pi a
2367 + master for bit clock and frame clock. Enable
2368 + with "dtoverlay=allo-boss-dac-pcm512x-audio,
2369 + slave"
2370 +
2371 +
2372 +Name: allo-digione
2373 +Info: Configures the Allo Digione audio card
2374 +Load: dtoverlay=allo-digione
2375 +Params: <None>
2376 +
2377 +
2378 +Name: allo-piano-dac-pcm512x-audio
2379 +Info: Configures the Allo Piano DAC (2.0/2.1) audio cards.
2380 + (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo.
2381 + The subwoofer outputs on the Piano 2.1 are not currently supported!)
2382 +Load: dtoverlay=allo-piano-dac-pcm512x-audio,<param>
2383 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2384 + Digital volume control.
2385 + (The default behaviour is that the Digital
2386 + volume control is limited to a maximum of
2387 + 0dB. ie. it can attenuate but not provide
2388 + gain. For most users, this will be desired
2389 + as it will prevent clipping. By appending
2390 + the 24db_digital_gain parameter, the Digital
2391 + volume control will allow up to 24dB of
2392 + gain. If this parameter is enabled, it is the
2393 + responsibility of the user to ensure that
2394 + the Digital volume control is set to a value
2395 + that does not result in clipping/distortion!)
2396 +
2397 +
2398 +Name: allo-piano-dac-plus-pcm512x-audio
2399 +Info: Configures the Allo Piano DAC (2.1) audio cards.
2400 +Load: dtoverlay=allo-piano-dac-plus-pcm512x-audio,<param>
2401 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2402 + Digital volume control.
2403 + (The default behaviour is that the Digital
2404 + volume control is limited to a maximum of
2405 + 0dB. ie. it can attenuate but not provide
2406 + gain. For most users, this will be desired
2407 + as it will prevent clipping. By appending
2408 + the 24db_digital_gain parameter, the Digital
2409 + volume control will allow up to 24dB of
2410 + gain. If this parameter is enabled, it is the
2411 + responsibility of the user to ensure that
2412 + the Digital volume control is set to a value
2413 + that does not result in clipping/distortion!)
2414 + glb_mclk This option is only with Kali board. If enabled,
2415 + MCLK for Kali is used and PLL is disabled for
2416 + better voice quality. (default Off)
2417 +
2418 +
2419 +Name: at86rf233
2420 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
2421 + connected to spi0.0
2422 +Load: dtoverlay=at86rf233,<param>=<val>
2423 +Params: interrupt GPIO used for INT (default 23)
2424 + reset GPIO used for Reset (default 24)
2425 + sleep GPIO used for Sleep (default 25)
2426 + speed SPI bus speed in Hz (default 3000000)
2427 + trim Fine tuning of the internal capacitance
2428 + arrays (0=+0pF, 15=+4.5pF, default 15)
2429 +
2430 +
2431 +Name: audioinjector-addons
2432 +Info: Configures the audioinjector.net audio add on soundcards
2433 +Load: dtoverlay=audioinjector-addons
2434 +Params: <None>
2435 +
2436 +
2437 +Name: audioinjector-wm8731-audio
2438 +Info: Configures the audioinjector.net audio add on soundcard
2439 +Load: dtoverlay=audioinjector-wm8731-audio
2440 +Params: <None>
2441 +
2442 +
2443 +Name: audremap
2444 +Info: Switches PWM sound output to pins 12 (Right) & 13 (Left)
2445 +Load: dtoverlay=audremap,<param>=<val>
2446 +Params: swap_lr Reverse the channel allocation, which will also
2447 + swap the audio jack outputs (default off)
2448 + enable_jack Don't switch off the audio jack output
2449 + (default off)
2450 +
2451 +
2452 +Name: bmp085_i2c-sensor
2453 +Info: This overlay is now deprecated - see i2c-sensor
2454 +Load: dtoverlay=bmp085_i2c-sensor
2455 +Params: <None>
2456 +
2457 +
2458 +Name: dht11
2459 +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
2460 + Also sometimes found with the part number(s) AM230x.
2461 +Load: dtoverlay=dht11,<param>=<val>
2462 +Params: gpiopin GPIO connected to the sensor's DATA output.
2463 + (default 4)
2464 +
2465 +
2466 +Name: dionaudio-loco
2467 +Info: Configures the Dion Audio LOCO DAC-AMP
2468 +Load: dtoverlay=dionaudio-loco
2469 +Params: <None>
2470 +
2471 +
2472 +Name: dionaudio-loco-v2
2473 +Info: Configures the Dion Audio LOCO-V2 DAC-AMP
2474 +Load: dtoverlay=dionaudio-loco-v2,<param>=<val>
2475 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2476 + Digital volume control. Enable with
2477 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
2478 + (The default behaviour is that the Digital
2479 + volume control is limited to a maximum of
2480 + 0dB. ie. it can attenuate but not provide
2481 + gain. For most users, this will be desired
2482 + as it will prevent clipping. By appending
2483 + the 24dB_digital_gain parameter, the Digital
2484 + volume control will allow up to 24dB of
2485 + gain. If this parameter is enabled, it is the
2486 + responsibility of the user to ensure that
2487 + the Digital volume control is set to a value
2488 + that does not result in clipping/distortion!)
2489 +
2490 +
2491 +Name: dpi18
2492 +Info: Overlay for a generic 18-bit DPI display
2493 + This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output
2494 + 2-3 seconds after the kernel has started.
2495 +Load: dtoverlay=dpi18
2496 +Params: <None>
2497 +
2498 +
2499 +Name: dpi24
2500 +Info: Overlay for a generic 24-bit DPI display
2501 + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output
2502 + 2-3 seconds after the kernel has started.
2503 +Load: dtoverlay=dpi24
2504 +Params: <None>
2505 +
2506 +
2507 +Name: dwc-otg
2508 +Info: Selects the dwc_otg USB controller driver which has fiq support. This
2509 + is the default on all except the Pi Zero which defaults to dwc2.
2510 +Load: dtoverlay=dwc-otg
2511 +Params: <None>
2512 +
2513 +
2514 +Name: dwc2
2515 +Info: Selects the dwc2 USB controller driver
2516 +Load: dtoverlay=dwc2,<param>=<val>
2517 +Params: dr_mode Dual role mode: "host", "peripheral" or "otg"
2518 +
2519 + g-rx-fifo-size Size of rx fifo size in gadget mode
2520 +
2521 + g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget
2522 + mode
2523 +
2524 +
2525 +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
2526 +
2527 +
2528 +Name: enc28j60
2529 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0
2530 +Load: dtoverlay=enc28j60,<param>=<val>
2531 +Params: int_pin GPIO used for INT (default 25)
2532 +
2533 + speed SPI bus speed (default 12000000)
2534 +
2535 +
2536 +Name: enc28j60-spi2
2537 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2
2538 +Load: dtoverlay=enc28j60-spi2,<param>=<val>
2539 +Params: int_pin GPIO used for INT (default 39)
2540 +
2541 + speed SPI bus speed (default 12000000)
2542 +
2543 +
2544 +Name: fe-pi-audio
2545 +Info: Configures the Fe-Pi Audio Sound Card
2546 +Load: dtoverlay=fe-pi-audio
2547 +Params: <None>
2548 +
2549 +
2550 +Name: goodix
2551 +Info: Enables I2C connected Goodix gt9271 multiple touch controller using
2552 + GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset.
2553 +Load: dtoverlay=goodix,<param>=<val>
2554 +Params: interrupt GPIO used for interrupt (default 4)
2555 + reset GPIO used for reset (default 17)
2556 +
2557 +
2558 +Name: googlevoicehat-soundcard
2559 +Info: Configures the Google voiceHAT soundcard
2560 +Load: dtoverlay=googlevoicehat-soundcard
2561 +Params: <None>
2562 +
2563 +
2564 +Name: gpio-ir
2565 +Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core-
2566 + based gpio_ir_recv driver maps received keys directly to a
2567 + /dev/input/event* device, all decoding is done by the kernel - LIRC is
2568 + not required! The key mapping and other decoding parameters can be
2569 + configured by "ir-keytable" tool.
2570 +Load: dtoverlay=gpio-ir,<param>=<val>
2571 +Params: gpio_pin Input pin number. Default is 18.
2572 +
2573 + gpio_pull Desired pull-up/down state (off, down, up)
2574 + Default is "down".
2575 +
2576 + rc-map-name Default rc keymap (can also be changed by
2577 + ir-keytable), defaults to "rc-rc6-mce"
2578 +
2579 +
2580 +Name: gpio-ir-tx
2581 +Info: Use GPIO pin as bit-banged infrared transmitter output.
2582 + This is an alternative to "pwm-ir-tx". gpio-ir-tx doesn't require
2583 + a PWM so it can be used together with onboard analog audio.
2584 +Load: dtoverlay=gpio-ir-tx,<param>=<val>
2585 +Params: gpio_pin Output GPIO (default 18)
2586 +
2587 + invert "1" = invert the output (make it active-low).
2588 + Default is "0" (active-high).
2589 +
2590 +
2591 +Name: gpio-poweroff
2592 +Info: Drives a GPIO high or low on poweroff (including halt). Enabling this
2593 + overlay will prevent the ability to boot by driving GPIO3 low.
2594 +Load: dtoverlay=gpio-poweroff,<param>=<val>
2595 +Params: gpiopin GPIO for signalling (default 26)
2596 +
2597 + active_low Set if the power control device requires a
2598 + high->low transition to trigger a power-down.
2599 + Note that this will require the support of a
2600 + custom dt-blob.bin to prevent a power-down
2601 + during the boot process, and that a reboot
2602 + will also cause the pin to go low.
2603 +
2604 +
2605 +Name: gpio-shutdown
2606 +Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin
2607 + is configured as an input key that generates KEY_POWER events.
2608 + This event is handled by systemd-logind by initiating a
2609 + shutdown. Systemd versions older than 225 need an udev rule
2610 + enable listening to the input device:
2611 +
2612 + ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", \
2613 + SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", \
2614 + ATTRS{keys}=="116", TAG+="power-switch"
2615 +
2616 + This overlay only handles shutdown. After shutdown, the system
2617 + can be powered up again by driving GPIO3 low. The default
2618 + configuration uses GPIO3 with a pullup, so if you connect a
2619 + button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
2620 + you get a shutdown and power-up button.
2621 +Load: dtoverlay=gpio-shutdown,<param>=<val>
2622 +Params: gpio_pin GPIO pin to trigger on (default 3)
2623 +
2624 + active_low When this is 1 (active low), a falling
2625 + edge generates a key down event and a
2626 + rising edge generates a key up event.
2627 + When this is 0 (active high), this is
2628 + reversed. The default is 1 (active low).
2629 +
2630 + gpio_pull Desired pull-up/down state (off, down, up)
2631 + Default is "up".
2632 +
2633 + Note that the default pin (GPIO3) has an
2634 + external pullup.
2635 +
2636 +
2637 +Name: hifiberry-amp
2638 +Info: Configures the HifiBerry Amp and Amp+ audio cards
2639 +Load: dtoverlay=hifiberry-amp
2640 +Params: <None>
2641 +
2642 +
2643 +Name: hifiberry-dac
2644 +Info: Configures the HifiBerry DAC audio card
2645 +Load: dtoverlay=hifiberry-dac
2646 +Params: <None>
2647 +
2648 +
2649 +Name: hifiberry-dacplus
2650 +Info: Configures the HifiBerry DAC+ audio card
2651 +Load: dtoverlay=hifiberry-dacplus,<param>=<val>
2652 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2653 + Digital volume control. Enable with
2654 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
2655 + (The default behaviour is that the Digital
2656 + volume control is limited to a maximum of
2657 + 0dB. ie. it can attenuate but not provide
2658 + gain. For most users, this will be desired
2659 + as it will prevent clipping. By appending
2660 + the 24dB_digital_gain parameter, the Digital
2661 + volume control will allow up to 24dB of
2662 + gain. If this parameter is enabled, it is the
2663 + responsibility of the user to ensure that
2664 + the Digital volume control is set to a value
2665 + that does not result in clipping/distortion!)
2666 + slave Force DAC+ Pro into slave mode, using Pi as
2667 + master for bit clock and frame clock.
2668 +
2669 +
2670 +Name: hifiberry-digi
2671 +Info: Configures the HifiBerry Digi and Digi+ audio card
2672 +Load: dtoverlay=hifiberry-digi
2673 +Params: <None>
2674 +
2675 +
2676 +Name: hifiberry-digi-pro
2677 +Info: Configures the HifiBerry Digi+ Pro audio card
2678 +Load: dtoverlay=hifiberry-digi-pro
2679 +Params: <None>
2680 +
2681 +
2682 +Name: hy28a
2683 +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
2684 + Default values match Texy's display shield
2685 +Load: dtoverlay=hy28a,<param>=<val>
2686 +Params: speed Display SPI bus speed
2687 +
2688 + rotate Display rotation {0,90,180,270}
2689 +
2690 + fps Delay between frame updates
2691 +
2692 + debug Debug output level {0-7}
2693 +
2694 + xohms Touchpanel sensitivity (X-plate resistance)
2695 +
2696 + resetgpio GPIO used to reset controller
2697 +
2698 + ledgpio GPIO used to control backlight
2699 +
2700 +
2701 +Name: hy28b
2702 +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
2703 + Default values match Texy's display shield
2704 +Load: dtoverlay=hy28b,<param>=<val>
2705 +Params: speed Display SPI bus speed
2706 +
2707 + rotate Display rotation {0,90,180,270}
2708 +
2709 + fps Delay between frame updates
2710 +
2711 + debug Debug output level {0-7}
2712 +
2713 + xohms Touchpanel sensitivity (X-plate resistance)
2714 +
2715 + resetgpio GPIO used to reset controller
2716 +
2717 + ledgpio GPIO used to control backlight
2718 +
2719 +
2720 +Name: i2c-bcm2708
2721 +Info: Fall back to the i2c_bcm2708 driver for the i2c_arm bus.
2722 +Load: dtoverlay=i2c-bcm2708
2723 +Params: <None>
2724 +
2725 +
2726 +Name: i2c-gpio
2727 +Info: Adds support for software i2c controller on gpio pins
2728 +Load: dtoverlay=i2c-gpio,<param>=<val>
2729 +Params: i2c_gpio_sda GPIO used for I2C data (default "23")
2730 +
2731 + i2c_gpio_scl GPIO used for I2C clock (default "24")
2732 +
2733 + i2c_gpio_delay_us Clock delay in microseconds
2734 + (default "2" = ~100kHz)
2735 +
2736 +
2737 +Name: i2c-mux
2738 +Info: Adds support for a number of I2C bus multiplexers on i2c_arm
2739 +Load: dtoverlay=i2c-mux,<param>=<val>
2740 +Params: pca9542 Select the NXP PCA9542 device
2741 +
2742 + pca9545 Select the NXP PCA9545 device
2743 +
2744 + pca9548 Select the NXP PCA9548 device
2745 +
2746 + addr Change I2C address of the device (default 0x70)
2747 +
2748 +
2749 +[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
2750 +
2751 +
2752 +Name: i2c-pwm-pca9685a
2753 +Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
2754 +Load: dtoverlay=i2c-pwm-pca9685a,<param>=<val>
2755 +Params: addr I2C address of PCA9685A (default 0x40)
2756 +
2757 +
2758 +Name: i2c-rtc
2759 +Info: Adds support for a number of I2C Real Time Clock devices
2760 +Load: dtoverlay=i2c-rtc,<param>=<val>
2761 +Params: abx80x Select one of the ABx80x family:
2762 + AB0801, AB0803, AB0804, AB0805,
2763 + AB1801, AB1803, AB1804, AB1805
2764 +
2765 + ds1307 Select the DS1307 device
2766 +
2767 + ds1339 Select the DS1339 device
2768 +
2769 + ds3231 Select the DS3231 device
2770 +
2771 + m41t62 Select the M41T62 device
2772 +
2773 + mcp7940x Select the MCP7940x device
2774 +
2775 + mcp7941x Select the MCP7941x device
2776 +
2777 + pcf2127 Select the PCF2127 device
2778 +
2779 + pcf8523 Select the PCF8523 device
2780 +
2781 + pcf8563 Select the PCF8563 device
2782 +
2783 + trickle-diode-type Diode type for trickle charge - "standard" or
2784 + "schottky" (ABx80x only)
2785 +
2786 + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
2787 + ABx80x)
2788 +
2789 + wakeup-source Specify that the RTC can be used as a wakeup
2790 + source
2791 +
2792 +
2793 +Name: i2c-rtc-gpio
2794 +Info: Adds support for a number of I2C Real Time Clock devices
2795 + using the software i2c controller
2796 +Load: dtoverlay=i2c-rtc-gpio,<param>=<val>
2797 +Params: abx80x Select one of the ABx80x family:
2798 + AB0801, AB0803, AB0804, AB0805,
2799 + AB1801, AB1803, AB1804, AB1805
2800 +
2801 + ds1307 Select the DS1307 device
2802 +
2803 + ds1339 Select the DS1339 device
2804 +
2805 + ds3231 Select the DS3231 device
2806 +
2807 + mcp7940x Select the MCP7940x device
2808 +
2809 + mcp7941x Select the MCP7941x device
2810 +
2811 + pcf2127 Select the PCF2127 device
2812 +
2813 + pcf8523 Select the PCF8523 device
2814 +
2815 + pcf8563 Select the PCF8563 device
2816 +
2817 + trickle-diode-type Diode type for trickle charge - "standard" or
2818 + "schottky" (ABx80x only)
2819 +
2820 + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
2821 + ABx80x)
2822 +
2823 + wakeup-source Specify that the RTC can be used as a wakeup
2824 + source
2825 +
2826 + i2c_gpio_sda GPIO used for I2C data (default "23")
2827 +
2828 + i2c_gpio_scl GPIO used for I2C clock (default "24")
2829 +
2830 + i2c_gpio_delay_us Clock delay in microseconds
2831 + (default "2" = ~100kHz)
2832 +
2833 +
2834 +Name: i2c-sensor
2835 +Info: Adds support for a number of I2C barometric pressure and temperature
2836 + sensors on i2c_arm
2837 +Load: dtoverlay=i2c-sensor,<param>=<val>
2838 +Params: addr Set the address for the BME280, BMP280, TMP102,
2839 + HDC100X, LM75 or SHT3x
2840 +
2841 + bme280 Select the Bosch Sensortronic BME280
2842 + Valid addresses 0x76-0x77, default 0x76
2843 +
2844 + bmp085 Select the Bosch Sensortronic BMP085
2845 +
2846 + bmp180 Select the Bosch Sensortronic BMP180
2847 +
2848 + bmp280 Select the Bosch Sensortronic BMP280
2849 + Valid addresses 0x76-0x77, default 0x76
2850 +
2851 + hdc100x Select the Texas Instruments HDC100x temp sensor
2852 + Valid addresses 0x40-0x43, default 0x40
2853 +
2854 + htu21 Select the HTU21 temperature and humidity sensor
2855 +
2856 + lm75 Select the Maxim LM75 temperature sensor
2857 + Valid addresses 0x48-0x4f, default 0x4f
2858 +
2859 + lm75addr Deprecated - use addr parameter instead
2860 +
2861 + si7020 Select the Silicon Labs Si7013/20/21 humidity/
2862 + temperature sensor
2863 +
2864 + tmp102 Select the Texas Instruments TMP102 temp sensor
2865 + Valid addresses 0x48-0x4b, default 0x48
2866 +
2867 + tsl4531 Select the AMS TSL4531 digital ambient light
2868 + sensor
2869 +
2870 + veml6070 Select the Vishay VEML6070 ultraviolet light
2871 + sensor
2872 +
2873 + sht3x Select the Sensiron SHT3x temperature and
2874 + humidity sensor. Valid addresses 0x44-0x45,
2875 + default 0x44
2876 +
2877 +
2878 +Name: i2c0-bcm2708
2879 +Info: Enable the i2c_bcm2708 driver for the i2c0 bus. Not all pin combinations
2880 + are usable on all platforms.
2881 +Load: dtoverlay=i2c0-bcm2708,<param>=<val>
2882 +Params: sda0_pin GPIO pin for SDA0 (deprecated - use pins_*)
2883 + scl0_pin GPIO pin for SCL0 (deprecated - use pins_*)
2884 + pins_0_1 Use pins 0 and 1 (default)
2885 + pins_28_29 Use pins 28 and 29
2886 + pins_44_45 Use pins 44 and 45
2887 + pins_46_47 Use pins 46 and 47
2888 +
2889 +
2890 +Name: i2c1-bcm2708
2891 +Info: Enable the i2c_bcm2708 driver for the i2c1 bus
2892 +Load: dtoverlay=i2c1-bcm2708,<param>=<val>
2893 +Params: sda1_pin GPIO pin for SDA1 (2 or 44 - default 2)
2894 + scl1_pin GPIO pin for SCL1 (3 or 45 - default 3)
2895 + pin_func Alternative pin function (4 (alt0), 6 (alt2) -
2896 + default 4)
2897 +
2898 +
2899 +Name: i2s-gpio28-31
2900 +Info: move I2S function block to GPIO 28 to 31
2901 +Load: dtoverlay=i2s-gpio28-31
2902 +Params: <None>
2903 +
2904 +
2905 +Name: iqaudio-dac
2906 +Info: Configures the IQaudio DAC audio card
2907 +Load: dtoverlay=iqaudio-dac,<param>
2908 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2909 + Digital volume control. Enable with
2910 + "dtoverlay=iqaudio-dac,24db_digital_gain"
2911 + (The default behaviour is that the Digital
2912 + volume control is limited to a maximum of
2913 + 0dB. ie. it can attenuate but not provide
2914 + gain. For most users, this will be desired
2915 + as it will prevent clipping. By appending
2916 + the 24db_digital_gain parameter, the Digital
2917 + volume control will allow up to 24dB of
2918 + gain. If this parameter is enabled, it is the
2919 + responsibility of the user to ensure that
2920 + the Digital volume control is set to a value
2921 + that does not result in clipping/distortion!)
2922 +
2923 +
2924 +Name: iqaudio-dacplus
2925 +Info: Configures the IQaudio DAC+ audio card
2926 +Load: dtoverlay=iqaudio-dacplus,<param>=<val>
2927 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2928 + Digital volume control. Enable with
2929 + "dtoverlay=iqaudio-dacplus,24db_digital_gain"
2930 + (The default behaviour is that the Digital
2931 + volume control is limited to a maximum of
2932 + 0dB. ie. it can attenuate but not provide
2933 + gain. For most users, this will be desired
2934 + as it will prevent clipping. By appending
2935 + the 24db_digital_gain parameter, the Digital
2936 + volume control will allow up to 24dB of
2937 + gain. If this parameter is enabled, it is the
2938 + responsibility of the user to ensure that
2939 + the Digital volume control is set to a value
2940 + that does not result in clipping/distortion!)
2941 + auto_mute_amp If specified, unmute/mute the IQaudIO amp when
2942 + starting/stopping audio playback.
2943 + unmute_amp If specified, unmute the IQaudIO amp once when
2944 + the DAC driver module loads.
2945 +
2946 +
2947 +Name: iqaudio-digi-wm8804-audio
2948 +Info: Configures the IQAudIO Digi WM8804 audio card
2949 +Load: dtoverlay=iqaudio-digi-wm8804-audio,<param>=<val>
2950 +Params: card_name Override the default, "IQAudIODigi", card name.
2951 + dai_name Override the default, "IQAudIO Digi", dai name.
2952 + dai_stream_name Override the default, "IQAudIO Digi HiFi",
2953 + dai stream name.
2954 +
2955 +
2956 +Name: justboom-dac
2957 +Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
2958 + cards
2959 +Load: dtoverlay=justboom-dac,<param>=<val>
2960 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
2961 + Digital volume control. Enable with
2962 + "dtoverlay=justboom-dac,24db_digital_gain"
2963 + (The default behaviour is that the Digital
2964 + volume control is limited to a maximum of
2965 + 0dB. ie. it can attenuate but not provide
2966 + gain. For most users, this will be desired
2967 + as it will prevent clipping. By appending
2968 + the 24dB_digital_gain parameter, the Digital
2969 + volume control will allow up to 24dB of
2970 + gain. If this parameter is enabled, it is the
2971 + responsibility of the user to ensure that
2972 + the Digital volume control is set to a value
2973 + that does not result in clipping/distortion!)
2974 +
2975 +
2976 +Name: justboom-digi
2977 +Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
2978 +Load: dtoverlay=justboom-digi
2979 +Params: <None>
2980 +
2981 +
2982 +Name: lirc-rpi
2983 +Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi)
2984 + Consult the module documentation for more details.
2985 +Load: dtoverlay=lirc-rpi,<param>=<val>
2986 +Params: gpio_out_pin GPIO for output (default "17")
2987 +
2988 + gpio_in_pin GPIO for input (default "18")
2989 +
2990 + gpio_in_pull Pull up/down/off on the input pin
2991 + (default "down")
2992 +
2993 + sense Override the IR receive auto-detection logic:
2994 + "0" = force active-high
2995 + "1" = force active-low
2996 + "-1" = use auto-detection
2997 + (default "-1")
2998 +
2999 + softcarrier Turn the software carrier "on" or "off"
3000 + (default "on")
3001 +
3002 + invert "on" = invert the output pin (default "off")
3003 +
3004 + debug "on" = enable additional debug messages
3005 + (default "off")
3006 +
3007 +
3008 +Name: mcp23017
3009 +Info: Configures the MCP23017 I2C GPIO expander
3010 +Load: dtoverlay=mcp23017,<param>=<val>
3011 +Params: gpiopin Gpio pin connected to the INTA output of the
3012 + MCP23017 (default: 4)
3013 +
3014 + addr I2C address of the MCP23017 (default: 0x20)
3015 +
3016 +
3017 +Name: mcp23s17
3018 +Info: Configures the MCP23S08/17 SPI GPIO expanders.
3019 + If devices are present on SPI1 or SPI2, those interfaces must be enabled
3020 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
3021 + If interrupts are enabled for a device on a given CS# on a SPI bus, that
3022 + device must be the only one present on that SPI bus/CS#.
3023 +Load: dtoverlay=mcp23s17,<param>=<val>
3024 +Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
3025 + devices present on SPI<n>, CS#<m>
3026 +
3027 + s17-spi<n>-<m>-present 8-bit integer, bitmap indicating MCP23S17
3028 + devices present on SPI<n>, CS#<m>
3029 +
3030 + s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
3031 + MCP23S08 device on SPI<n>, CS#<m>, specifies
3032 + the GPIO pin to which INT output of MCP23S08
3033 + is connected.
3034 +
3035 + s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
3036 + single MCP23S17 device on SPI<n>, CS#<m>,
3037 + specifies the GPIO pin to which either INTA
3038 + or INTB output of MCP23S17 is connected.
3039 +
3040 +
3041 +Name: mcp2515-can0
3042 +Info: Configures the MCP2515 CAN controller on spi0.0
3043 +Load: dtoverlay=mcp2515-can0,<param>=<val>
3044 +Params: oscillator Clock frequency for the CAN controller (Hz)
3045 +
3046 + spimaxfrequency Maximum SPI frequence (Hz)
3047 +
3048 + interrupt GPIO for interrupt signal
3049 +
3050 +
3051 +Name: mcp2515-can1
3052 +Info: Configures the MCP2515 CAN controller on spi0.1
3053 +Load: dtoverlay=mcp2515-can1,<param>=<val>
3054 +Params: oscillator Clock frequency for the CAN controller (Hz)
3055 +
3056 + spimaxfrequency Maximum SPI frequence (Hz)
3057 +
3058 + interrupt GPIO for interrupt signal
3059 +
3060 +
3061 +Name: mcp3008
3062 +Info: Configures MCP3008 A/D converters
3063 + For devices on spi1 or spi2, the interfaces should be enabled
3064 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
3065 +Load: dtoverlay=mcp3008,<param>[=<val>]
3066 +Params: spi<n>-<m>-present boolean, configure device at spi<n>, cs<m>
3067 + spi<n>-<m>-speed integer, set the spi bus speed for this device
3068 +
3069 +
3070 +Name: midi-uart0
3071 +Info: Configures UART0 (ttyAMA0) so that a requested 38.4kbaud actually gets
3072 + 31.25kbaud, the frequency required for MIDI
3073 +Load: dtoverlay=midi-uart0
3074 +Params: <None>
3075 +
3076 +
3077 +Name: midi-uart1
3078 +Info: Configures UART1 (ttyS0) so that a requested 38.4kbaud actually gets
3079 + 31.25kbaud, the frequency required for MIDI
3080 +Load: dtoverlay=midi-uart1
3081 +Params: <None>
3082 +
3083 +
3084 +Name: mmc
3085 +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
3086 +Load: dtoverlay=mmc,<param>=<val>
3087 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
3088 + requests 50MHz
3089 +
3090 +
3091 +Name: mpu6050
3092 +Info: Overlay for i2c connected mpu6050 imu
3093 +Load: dtoverlay=mpu6050,<param>=<val>
3094 +Params: interrupt GPIO pin for interrupt (default 4)
3095 +
3096 +
3097 +Name: mz61581
3098 +Info: MZ61581 display by Tontec
3099 +Load: dtoverlay=mz61581,<param>=<val>
3100 +Params: speed Display SPI bus speed
3101 +
3102 + rotate Display rotation {0,90,180,270}
3103 +
3104 + fps Delay between frame updates
3105 +
3106 + txbuflen Transmit buffer length (default 32768)
3107 +
3108 + debug Debug output level {0-7}
3109 +
3110 + xohms Touchpanel sensitivity (X-plate resistance)
3111 +
3112 +
3113 +Name: papirus
3114 +Info: PaPiRus ePaper Screen by Pi Supply (both HAT and pHAT)
3115 +Load: dtoverlay=papirus,<param>=<val>
3116 +Params: panel Display panel (required):
3117 + 1.44": e1144cs021
3118 + 2.0": e2200cs021
3119 + 2.7": e2271cs021
3120 +
3121 + speed Display SPI bus speed
3122 +
3123 +
3124 +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
3125 +
3126 +
3127 +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
3128 +
3129 +
3130 +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
3131 +
3132 +
3133 +Name: pi3-act-led
3134 +Info: Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
3135 + from the VPU. There is a special driver for this with a separate DT
3136 + node, which has the unfortunate consequence of breaking the
3137 + act_led_gpio and act_led_activelow dtparams.
3138 + This overlay changes the GPIO controller back to the standard one and
3139 + restores the dtparams.
3140 +Load: dtoverlay=pi3-act-led,<param>=<val>
3141 +Params: activelow Set to "on" to invert the sense of the LED
3142 + (default "off")
3143 +
3144 + gpio Set which GPIO to use for the activity LED
3145 + (in case you want to connect it to an external
3146 + device)
3147 + REQUIRED
3148 +
3149 +
3150 +Name: pi3-disable-bt
3151 +Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
3152 + N.B. To disable the systemd service that initialises the modem so it
3153 + doesn't use the UART, use 'sudo systemctl disable hciuart'.
3154 +Load: dtoverlay=pi3-disable-bt
3155 +Params: <None>
3156 +
3157 +
3158 +Name: pi3-disable-wifi
3159 +Info: Disable Pi3 onboard WiFi
3160 +Load: dtoverlay=pi3-disable-wifi
3161 +Params: <None>
3162 +
3163 +
3164 +Name: pi3-miniuart-bt
3165 +Info: Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
3166 + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
3167 + usable baudrate.
3168 + N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
3169 + and replace ttyAMA0 with ttyS0, unless you have a system with udev rules
3170 + that create /dev/serial0 and /dev/serial1, in which case use
3171 + /dev/serial1 instead because it will always be correct. Furthermore,
3172 + you must also set core_freq=250 in config.txt or the miniuart will not
3173 + work.
3174 +Load: dtoverlay=pi3-miniuart-bt
3175 +Params: <None>
3176 +
3177 +
3178 +Name: piscreen
3179 +Info: PiScreen display by OzzMaker.com
3180 +Load: dtoverlay=piscreen,<param>=<val>
3181 +Params: speed Display SPI bus speed
3182 +
3183 + rotate Display rotation {0,90,180,270}
3184 +
3185 + fps Delay between frame updates
3186 +
3187 + debug Debug output level {0-7}
3188 +
3189 + xohms Touchpanel sensitivity (X-plate resistance)
3190 +
3191 +
3192 +Name: piscreen2r
3193 +Info: PiScreen 2 with resistive TP display by OzzMaker.com
3194 +Load: dtoverlay=piscreen2r,<param>=<val>
3195 +Params: speed Display SPI bus speed
3196 +
3197 + rotate Display rotation {0,90,180,270}
3198 +
3199 + fps Delay between frame updates
3200 +
3201 + debug Debug output level {0-7}
3202 +
3203 + xohms Touchpanel sensitivity (X-plate resistance)
3204 +
3205 +
3206 +Name: pisound
3207 +Info: Configures the Blokas Labs pisound card
3208 +Load: dtoverlay=pisound
3209 +Params: <None>
3210 +
3211 +
3212 +Name: pitft22
3213 +Info: Adafruit PiTFT 2.2" screen
3214 +Load: dtoverlay=pitft22,<param>=<val>
3215 +Params: speed Display SPI bus speed
3216 +
3217 + rotate Display rotation {0,90,180,270}
3218 +
3219 + fps Delay between frame updates
3220 +
3221 + debug Debug output level {0-7}
3222 +
3223 +
3224 +Name: pitft28-capacitive
3225 +Info: Adafruit PiTFT 2.8" capacitive touch screen
3226 +Load: dtoverlay=pitft28-capacitive,<param>=<val>
3227 +Params: speed Display SPI bus speed
3228 +
3229 + rotate Display rotation {0,90,180,270}
3230 +
3231 + fps Delay between frame updates
3232 +
3233 + debug Debug output level {0-7}
3234 +
3235 + touch-sizex Touchscreen size x (default 240)
3236 +
3237 + touch-sizey Touchscreen size y (default 320)
3238 +
3239 + touch-invx Touchscreen inverted x axis
3240 +
3241 + touch-invy Touchscreen inverted y axis
3242 +
3243 + touch-swapxy Touchscreen swapped x y axis
3244 +
3245 +
3246 +Name: pitft28-resistive
3247 +Info: Adafruit PiTFT 2.8" resistive touch screen
3248 +Load: dtoverlay=pitft28-resistive,<param>=<val>
3249 +Params: speed Display SPI bus speed
3250 +
3251 + rotate Display rotation {0,90,180,270}
3252 +
3253 + fps Delay between frame updates
3254 +
3255 + debug Debug output level {0-7}
3256 +
3257 +
3258 +Name: pitft35-resistive
3259 +Info: Adafruit PiTFT 3.5" resistive touch screen
3260 +Load: dtoverlay=pitft35-resistive,<param>=<val>
3261 +Params: speed Display SPI bus speed
3262 +
3263 + rotate Display rotation {0,90,180,270}
3264 +
3265 + fps Delay between frame updates
3266 +
3267 + debug Debug output level {0-7}
3268 +
3269 +
3270 +Name: pps-gpio
3271 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
3272 +Load: dtoverlay=pps-gpio,<param>=<val>
3273 +Params: gpiopin Input GPIO (default "18")
3274 + assert_falling_edge When present, assert is indicated by a falling
3275 + edge, rather than by a rising edge
3276 +
3277 +
3278 +Name: pwm
3279 +Info: Configures a single PWM channel
3280 + Legal pin,function combinations for each channel:
3281 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
3282 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
3283 + N.B.:
3284 + 1) Pin 18 is the only one available on all platforms, and
3285 + it is the one used by the I2S audio interface.
3286 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
3287 + 2) The onboard analogue audio output uses both PWM channels.
3288 + 3) So be careful mixing audio and PWM.
3289 + 4) Currently the clock must have been enabled and configured
3290 + by other means.
3291 +Load: dtoverlay=pwm,<param>=<val>
3292 +Params: pin Output pin (default 18) - see table
3293 + func Pin function (default 2 = Alt5) - see above
3294 + clock PWM clock frequency (informational)
3295 +
3296 +
3297 +Name: pwm-2chan
3298 +Info: Configures both PWM channels
3299 + Legal pin,function combinations for each channel:
3300 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
3301 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
3302 + N.B.:
3303 + 1) Pin 18 is the only one available on all platforms, and
3304 + it is the one used by the I2S audio interface.
3305 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
3306 + 2) The onboard analogue audio output uses both PWM channels.
3307 + 3) So be careful mixing audio and PWM.
3308 + 4) Currently the clock must have been enabled and configured
3309 + by other means.
3310 +Load: dtoverlay=pwm-2chan,<param>=<val>
3311 +Params: pin Output pin (default 18) - see table
3312 + pin2 Output pin for other channel (default 19)
3313 + func Pin function (default 2 = Alt5) - see above
3314 + func2 Function for pin2 (default 2 = Alt5)
3315 + clock PWM clock frequency (informational)
3316 +
3317 +
3318 +Name: pwm-ir-tx
3319 +Info: Use GPIO pin as pwm-assisted infrared transmitter output.
3320 + This is an alternative to "gpio-ir-tx". pwm-ir-tx makes use
3321 + of PWM0 to reduce the CPU load during transmission compared to
3322 + gpio-ir-tx which uses bit-banging.
3323 + Legal pin,function combinations are:
3324 + 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
3325 +Load: dtoverlay=pwm-ir-tx,<param>=<val>
3326 +Params: gpio_pin Output GPIO (default 18)
3327 +
3328 + func Pin function (default 2 = Alt5)
3329 +
3330 +
3331 +Name: qca7000
3332 +Info: I2SE's Evaluation Board for PLC Stamp micro
3333 +Load: dtoverlay=qca7000,<param>=<val>
3334 +Params: int_pin GPIO pin for interrupt signal (default 23)
3335 +
3336 + speed SPI bus speed (default 12 MHz)
3337 +
3338 +
3339 +Name: raspidac3
3340 +Info: Configures the RaspiDAV Rev.3x audio card
3341 +Load: dtoverlay=raspidac3
3342 +Params: <None>
3343 +
3344 +
3345 +Name: rotary-encoder
3346 +Info: Overlay for GPIO connected rotary encoder.
3347 +Load: dtoverlay=rotary-encoder,<param>=<val>
3348 +Params: rotary0_pin_a GPIO connected to rotary encoder channel A
3349 + (default 4).
3350 + rotary0_pin_b GPIO connected to rotary encoder channel B
3351 + (default 17).
3352 +
3353 +
3354 +Name: rpi-backlight
3355 +Info: Raspberry Pi official display backlight driver
3356 +Load: dtoverlay=rpi-backlight
3357 +Params: <None>
3358 +
3359 +
3360 +Name: rpi-cirrus-wm5102
3361 +Info: Configures the Cirrus Logic Audio Card
3362 +Load: dtoverlay=rpi-cirrus-wm5102
3363 +Params: <None>
3364 +
3365 +
3366 +Name: rpi-dac
3367 +Info: Configures the RPi DAC audio card
3368 +Load: dtoverlay=rpi-dac
3369 +Params: <None>
3370 +
3371 +
3372 +Name: rpi-display
3373 +Info: RPi-Display - 2.8" Touch Display by Watterott
3374 +Load: dtoverlay=rpi-display,<param>=<val>
3375 +Params: speed Display SPI bus speed
3376 + rotate Display rotation {0,90,180,270}
3377 + fps Delay between frame updates
3378 + debug Debug output level {0-7}
3379 + xohms Touchpanel sensitivity (X-plate resistance)
3380 + swapxy Swap x and y axis
3381 +
3382 +
3383 +Name: rpi-ft5406
3384 +Info: Official Raspberry Pi display touchscreen
3385 +Load: dtoverlay=rpi-ft5406,<param>=<val>
3386 +Params: touchscreen-size-x Touchscreen X resolution (default 800)
3387 + touchscreen-size-y Touchscreen Y resolution (default 600);
3388 + touchscreen-inverted-x Invert touchscreen X coordinates (default 0);
3389 + touchscreen-inverted-y Invert touchscreen Y coordinates (default 0);
3390 + touchscreen-swapped-x-y Swap X and Y cordinates (default 0);
3391 +
3392 +
3393 +Name: rpi-proto
3394 +Info: Configures the RPi Proto audio card
3395 +Load: dtoverlay=rpi-proto
3396 +Params: <None>
3397 +
3398 +
3399 +Name: rpi-sense
3400 +Info: Raspberry Pi Sense HAT
3401 +Load: dtoverlay=rpi-sense
3402 +Params: <None>
3403 +
3404 +
3405 +Name: rpi-tv
3406 +Info: Raspberry Pi TV HAT
3407 +Load: dtoverlay=rpi-tv
3408 +Params: <None>
3409 +
3410 +
3411 +Name: rra-digidac1-wm8741-audio
3412 +Info: Configures the Red Rocks Audio DigiDAC1 soundcard
3413 +Load: dtoverlay=rra-digidac1-wm8741-audio
3414 +Params: <None>
3415 +
3416 +
3417 +Name: sc16is750-i2c
3418 +Info: Overlay for the NXP SC16IS750 UART with I2C Interface
3419 + Enables the chip on I2C1 at 0x48. To select another address,
3420 + please refer to table 10 in reference manual.
3421 +
3422 +Load: dtoverlay=sc16is750-i2c,<param>=<val>
3423 +Params: int_pin GPIO used for IRQ (default 24)
3424 + addr Address (default 0x48)
3425 +
3426 +
3427 +Name: sc16is752-spi1
3428 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
3429 + Enables the chip on SPI1.
3430 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3431 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3432 +
3433 +Load: dtoverlay=sc16is752-spi1,<param>=<val>
3434 +Params: int_pin GPIO used for IRQ (default 24)
3435 +
3436 +
3437 +Name: sdhost
3438 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock.
3439 + N.B. This overlay is designed for situations where the mmc driver is
3440 + the default, so it disables the other (mmc) interface - this will kill
3441 + WiFi on a Pi3. If this isn't what you want, either use the sdtweak
3442 + overlay or the new sd_* dtparams of the base DTBs.
3443 +Load: dtoverlay=sdhost,<param>=<val>
3444 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
3445 + requests 50MHz
3446 +
3447 + force_pio Disable DMA support (default off)
3448 +
3449 + pio_limit Number of blocks above which to use DMA
3450 + (default 1)
3451 +
3452 + debug Enable debug output (default off)
3453 +
3454 +
3455 +Name: sdio
3456 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
3457 + and enables SDIO via GPIOs 22-27.
3458 +Load: dtoverlay=sdio,<param>=<val>
3459 +Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC
3460 + framework requests 50MHz
3461 +
3462 + poll_once Disable SDIO-device polling every second
3463 + (default on: polling once at boot-time)
3464 +
3465 + bus_width Set the SDIO host bus width (default 4 bits)
3466 +
3467 +
3468 +Name: sdio-1bit
3469 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
3470 + and enables 1-bit SDIO via GPIOs 22-25.
3471 +Load: dtoverlay=sdio-1bit,<param>=<val>
3472 +Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC
3473 + framework requests 50MHz
3474 +
3475 + poll_once Disable SDIO-device polling every second
3476 + (default on: polling once at boot-time)
3477 +
3478 +
3479 +Name: sdtweak
3480 +Info: Tunes the bcm2835-sdhost SD/MMC driver
3481 + N.B. This functionality is now available via the sd_* dtparams in the
3482 + base DTB.
3483 +Load: dtoverlay=sdtweak,<param>=<val>
3484 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
3485 + requests 50MHz
3486 +
3487 + force_pio Disable DMA support (default off)
3488 +
3489 + pio_limit Number of blocks above which to use DMA
3490 + (default 1)
3491 +
3492 + debug Enable debug output (default off)
3493 +
3494 +
3495 +Name: smi
3496 +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
3497 +Load: dtoverlay=smi
3498 +Params: <None>
3499 +
3500 +
3501 +Name: smi-dev
3502 +Info: Enables the userspace interface for the SMI driver
3503 +Load: dtoverlay=smi-dev
3504 +Params: <None>
3505 +
3506 +
3507 +Name: smi-nand
3508 +Info: Enables access to NAND flash via the SMI interface
3509 +Load: dtoverlay=smi-nand
3510 +Params: <None>
3511 +
3512 +
3513 +Name: spi-gpio35-39
3514 +Info: Move SPI function block to GPIO 35 to 39
3515 +Load: dtoverlay=spi-gpio35-39
3516 +Params: <None>
3517 +
3518 +
3519 +Name: spi-rtc
3520 +Info: Adds support for a number of SPI Real Time Clock devices
3521 +Load: dtoverlay=spi-rtc,<param>=<val>
3522 +Params: pcf2123 Select the PCF2123 device
3523 +
3524 +
3525 +Name: spi0-cs
3526 +Info: Allows the (software) CS pins for SPI0 to be changed
3527 +Load: dtoverlay=spi0-cs,<param>=<val>
3528 +Params: cs0_pin GPIO pin for CS0 (default 8)
3529 + cs1_pin GPIO pin for CS1 (default 7)
3530 +
3531 +
3532 +Name: spi0-hw-cs
3533 +Info: Re-enables hardware CS/CE (chip selects) for SPI0
3534 +Load: dtoverlay=spi0-hw-cs
3535 +Params: <None>
3536 +
3537 +
3538 +Name: spi1-1cs
3539 +Info: Enables spi1 with a single chip select (CS) line and associated spidev
3540 + dev node. The gpio pin number for the CS line and spidev device node
3541 + creation are configurable.
3542 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3543 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3544 +Load: dtoverlay=spi1-1cs,<param>=<val>
3545 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3546 + cs0_spidev Set to 'disabled' to stop the creation of a
3547 + userspace device node /dev/spidev1.0 (default
3548 + is 'okay' or enabled).
3549 +
3550 +
3551 +Name: spi1-2cs
3552 +Info: Enables spi1 with two chip select (CS) lines and associated spidev
3553 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3554 + creation are configurable.
3555 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3556 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3557 +Load: dtoverlay=spi1-2cs,<param>=<val>
3558 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3559 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
3560 + cs0_spidev Set to 'disabled' to stop the creation of a
3561 + userspace device node /dev/spidev1.0 (default
3562 + is 'okay' or enabled).
3563 + cs1_spidev Set to 'disabled' to stop the creation of a
3564 + userspace device node /dev/spidev1.1 (default
3565 + is 'okay' or enabled).
3566 +
3567 +
3568 +Name: spi1-3cs
3569 +Info: Enables spi1 with three chip select (CS) lines and associated spidev
3570 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3571 + creation are configurable.
3572 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
3573 + A+, B+, Zero and PI2 B; as well as the Compute Module.
3574 +Load: dtoverlay=spi1-3cs,<param>=<val>
3575 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
3576 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
3577 + cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
3578 + cs0_spidev Set to 'disabled' to stop the creation of a
3579 + userspace device node /dev/spidev1.0 (default
3580 + is 'okay' or enabled).
3581 + cs1_spidev Set to 'disabled' to stop the creation of a
3582 + userspace device node /dev/spidev1.1 (default
3583 + is 'okay' or enabled).
3584 + cs2_spidev Set to 'disabled' to stop the creation of a
3585 + userspace device node /dev/spidev1.2 (default
3586 + is 'okay' or enabled).
3587 +
3588 +
3589 +Name: spi2-1cs
3590 +Info: Enables spi2 with a single chip select (CS) line and associated spidev
3591 + dev node. The gpio pin number for the CS line and spidev device node
3592 + creation are configurable.
3593 + N.B.: spi2 is only accessible with the Compute Module.
3594 +Load: dtoverlay=spi2-1cs,<param>=<val>
3595 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3596 + cs0_spidev Set to 'disabled' to stop the creation of a
3597 + userspace device node /dev/spidev2.0 (default
3598 + is 'okay' or enabled).
3599 +
3600 +
3601 +Name: spi2-2cs
3602 +Info: Enables spi2 with two chip select (CS) lines and associated spidev
3603 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3604 + creation are configurable.
3605 + N.B.: spi2 is only accessible with the Compute Module.
3606 +Load: dtoverlay=spi2-2cs,<param>=<val>
3607 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3608 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
3609 + cs0_spidev Set to 'disabled' to stop the creation of a
3610 + userspace device node /dev/spidev2.0 (default
3611 + is 'okay' or enabled).
3612 + cs1_spidev Set to 'disabled' to stop the creation of a
3613 + userspace device node /dev/spidev2.1 (default
3614 + is 'okay' or enabled).
3615 +
3616 +
3617 +Name: spi2-3cs
3618 +Info: Enables spi2 with three chip select (CS) lines and associated spidev
3619 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
3620 + creation are configurable.
3621 + N.B.: spi2 is only accessible with the Compute Module.
3622 +Load: dtoverlay=spi2-3cs,<param>=<val>
3623 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
3624 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
3625 + cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2).
3626 + cs0_spidev Set to 'disabled' to stop the creation of a
3627 + userspace device node /dev/spidev2.0 (default
3628 + is 'okay' or enabled).
3629 + cs1_spidev Set to 'disabled' to stop the creation of a
3630 + userspace device node /dev/spidev2.1 (default
3631 + is 'okay' or enabled).
3632 + cs2_spidev Set to 'disabled' to stop the creation of a
3633 + userspace device node /dev/spidev2.2 (default
3634 + is 'okay' or enabled).
3635 +
3636 +
3637 +Name: tinylcd35
3638 +Info: 3.5" Color TFT Display by www.tinylcd.com
3639 + Options: Touch, RTC, keypad
3640 +Load: dtoverlay=tinylcd35,<param>=<val>
3641 +Params: speed Display SPI bus speed
3642 +
3643 + rotate Display rotation {0,90,180,270}
3644 +
3645 + fps Delay between frame updates
3646 +
3647 + debug Debug output level {0-7}
3648 +
3649 + touch Enable touch panel
3650 +
3651 + touchgpio Touch controller IRQ GPIO
3652 +
3653 + xohms Touchpanel: Resistance of X-plate in ohms
3654 +
3655 + rtc-pcf PCF8563 Real Time Clock
3656 +
3657 + rtc-ds DS1307 Real Time Clock
3658 +
3659 + keypad Enable keypad
3660 +
3661 + Examples:
3662 + Display with touchpanel, PCF8563 RTC and keypad:
3663 + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
3664 + Old touch display:
3665 + dtoverlay=tinylcd35,touch,touchgpio=3
3666 +
3667 +
3668 +Name: uart1
3669 +Info: Enable uart1 in place of uart0
3670 +Load: dtoverlay=uart1,<param>=<val>
3671 +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
3672 +
3673 + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
3674 +
3675 +
3676 +Name: vc4-fkms-v3d
3677 +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
3678 + display stack.
3679 +Load: dtoverlay=vc4-fkms-v3d,<param>
3680 +Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
3681 + cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
3682 + cma-128 CMA is 128MB, 128MB-aligned
3683 + cma-96 CMA is 96MB, 128MB-aligned
3684 + cma-64 CMA is 64MB, 64MB-aligned
3685 +
3686 +
3687 +Name: vc4-kms-v3d
3688 +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
3689 + booting to GUI while this overlay is in use will cause interesting
3690 + lockups.
3691 +Load: dtoverlay=vc4-kms-v3d,<param>
3692 +Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
3693 + cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
3694 + cma-128 CMA is 128MB, 128MB-aligned
3695 + cma-96 CMA is 96MB, 128MB-aligned
3696 + cma-64 CMA is 64MB, 64MB-aligned
3697 +
3698 +
3699 +Name: vga666
3700 +Info: Overlay for the Fen Logic VGA666 board
3701 + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds
3702 + after the kernel has started.
3703 +Load: dtoverlay=vga666
3704 +Params: <None>
3705 +
3706 +
3707 +Name: w1-gpio
3708 +Info: Configures the w1-gpio Onewire interface module.
3709 + Use this overlay if you *don't* need a GPIO to drive an external pullup.
3710 +Load: dtoverlay=w1-gpio,<param>=<val>
3711 +Params: gpiopin GPIO for I/O (default "4")
3712 +
3713 + pullup Non-zero, "on", or "y" to enable the parasitic
3714 + power (2-wire, power-on-data) feature
3715 +
3716 +
3717 +Name: w1-gpio-pullup
3718 +Info: Configures the w1-gpio Onewire interface module.
3719 + Use this overlay if you *do* need a GPIO to drive an external pullup.
3720 +Load: dtoverlay=w1-gpio-pullup,<param>=<val>
3721 +Params: gpiopin GPIO for I/O (default "4")
3722 +
3723 + pullup Non-zero, "on", or "y" to enable the parasitic
3724 + power (2-wire, power-on-data) feature
3725 +
3726 + extpullup GPIO for external pullup (default "5")
3727 +
3728 +
3729 +Name: wittypi
3730 +Info: Configures the wittypi RTC module.
3731 +Load: dtoverlay=wittypi,<param>=<val>
3732 +Params: led_gpio GPIO for LED (default "17")
3733 + led_trigger Choose which activity the LED tracks (default
3734 + "default-on")
3735 +
3736 +
3737 +Troubleshooting
3738 +===============
3739 +
3740 +If you are experiencing problems that you think are DT-related, enable DT
3741 +diagnostic output by adding this to /boot/config.txt:
3742 +
3743 + dtdebug=on
3744 +
3745 +and rebooting. Then run:
3746 +
3747 + sudo vcdbg log msg
3748 +
3749 +and look for relevant messages.
3750 +
3751 +Further reading
3752 +===============
3753 +
3754 +This is only meant to be a quick introduction to the subject of Device Tree on
3755 +Raspberry Pi. There is a more complete explanation here:
3756 +
3757 +http://www.raspberrypi.org/documentation/configuration/device-tree.md
3758 --- /dev/null
3759 +++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
3760 @@ -0,0 +1,40 @@
3761 +// Definitions for ADAU1977 ADC
3762 +/dts-v1/;
3763 +/plugin/;
3764 +
3765 +/ {
3766 + compatible = "brcm,bcm2708";
3767 +
3768 + fragment@0 {
3769 + target = <&i2c>;
3770 +
3771 + __overlay__ {
3772 + #address-cells = <1>;
3773 + #size-cells = <0>;
3774 + status = "okay";
3775 +
3776 + adau1977: codec@11 {
3777 + compatible = "adi,adau1977";
3778 + reg = <0x11>;
3779 + reset-gpios = <&gpio 5 0>;
3780 + AVDD-supply = <&vdd_3v3_reg>;
3781 + };
3782 + };
3783 + };
3784 +
3785 + fragment@1 {
3786 + target = <&i2s>;
3787 + __overlay__ {
3788 + status = "okay";
3789 + };
3790 + };
3791 +
3792 + fragment@2 {
3793 + target = <&sound>;
3794 + __overlay__ {
3795 + compatible = "adi,adau1977-adc";
3796 + i2s-controller = <&i2s>;
3797 + status = "okay";
3798 + };
3799 + };
3800 +};
3801 --- /dev/null
3802 +++ b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
3803 @@ -0,0 +1,52 @@
3804 +/dts-v1/;
3805 +/plugin/;
3806 +
3807 +/ {
3808 + compatible = "brcm,bcm2708";
3809 +
3810 + fragment@0 {
3811 + target = <&i2s>;
3812 + __overlay__ {
3813 + status = "okay";
3814 + };
3815 + };
3816 +
3817 + fragment@1 {
3818 + target-path = "/";
3819 + __overlay__ {
3820 + adau7002_codec: adau7002-codec {
3821 + #sound-dai-cells = <0>;
3822 + compatible = "adi,adau7002";
3823 +/* IOVDD-supply = <&supply>;*/
3824 + status = "okay";
3825 + };
3826 + };
3827 + };
3828 +
3829 + fragment@2 {
3830 + target = <&sound>;
3831 + sound_overlay: __overlay__ {
3832 + compatible = "simple-audio-card";
3833 + simple-audio-card,format = "i2s";
3834 + simple-audio-card,name = "adau7002";
3835 + simple-audio-card,bitclock-slave = <&dailink0_slave>;
3836 + simple-audio-card,frame-slave = <&dailink0_slave>;
3837 + simple-audio-card,widgets =
3838 + "Microphone", "Microphone Jack";
3839 + simple-audio-card,routing =
3840 + "PDM_DAT", "Microphone Jack";
3841 + status = "okay";
3842 + simple-audio-card,cpu {
3843 + sound-dai = <&i2s>;
3844 + };
3845 + dailink0_slave: simple-audio-card,codec {
3846 + sound-dai = <&adau7002_codec>;
3847 + };
3848 + };
3849 + };
3850 +
3851 +
3852 + __overrides__ {
3853 + card-name = <&sound_overlay>,"simple-audio-card,name";
3854 + };
3855 +};
3856 --- /dev/null
3857 +++ b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
3858 @@ -0,0 +1,98 @@
3859 +/*
3860 + * 2016 - Erik Sejr
3861 + */
3862 +/dts-v1/;
3863 +/plugin/;
3864 +
3865 +/ {
3866 + compatible = "brcm,bcm2708";
3867 + /* ----------- ADS1015 ------------ */
3868 + fragment@0 {
3869 + target = <&i2c_arm>;
3870 + __overlay__ {
3871 + #address-cells = <1>;
3872 + #size-cells = <0>;
3873 + status = "okay";
3874 + ads1015: ads1015 {
3875 + compatible = "ti,ads1015";
3876 + status = "okay";
3877 + #address-cells = <1>;
3878 + #size-cells = <0>;
3879 + reg = <0x48>;
3880 + };
3881 + };
3882 + };
3883 +
3884 + fragment@1 {
3885 + target-path = "i2c_arm/ads1015";
3886 + __overlay__ {
3887 + #address-cells = <1>;
3888 + #size-cells = <0>;
3889 + channel_a: channel_a {
3890 + reg = <4>;
3891 + ti,gain = <2>;
3892 + ti,datarate = <4>;
3893 + };
3894 + };
3895 + };
3896 +
3897 + fragment@2 {
3898 + target-path = "i2c_arm/ads1015";
3899 + __dormant__ {
3900 + #address-cells = <1>;
3901 + #size-cells = <0>;
3902 + channel_b: channel_b {
3903 + reg = <5>;
3904 + ti,gain = <2>;
3905 + ti,datarate = <4>;
3906 + };
3907 + };
3908 + };
3909 +
3910 + fragment@3 {
3911 + target-path = "i2c_arm/ads1015";
3912 + __dormant__ {
3913 + #address-cells = <1>;
3914 + #size-cells = <0>;
3915 + channel_c: channel_c {
3916 + reg = <6>;
3917 + ti,gain = <2>;
3918 + ti,datarate = <4>;
3919 + };
3920 + };
3921 + };
3922 +
3923 + fragment@4 {
3924 + target-path = "i2c_arm/ads1015";
3925 + __dormant__ {
3926 + #address-cells = <1>;
3927 + #size-cells = <0>;
3928 + channel_d: channel_d {
3929 + reg = <7>;
3930 + ti,gain = <2>;
3931 + ti,datarate = <4>;
3932 + };
3933 + };
3934 + };
3935 +
3936 + __overrides__ {
3937 + addr = <&ads1015>,"reg:0";
3938 + cha_enable = <0>,"=1";
3939 + cha_cfg = <&channel_a>,"reg:0";
3940 + cha_gain = <&channel_a>,"ti,gain:0";
3941 + cha_datarate = <&channel_a>,"ti,datarate:0";
3942 + chb_enable = <0>,"=2";
3943 + chb_cfg = <&channel_b>,"reg:0";
3944 + chb_gain = <&channel_b>,"ti,gain:0";
3945 + chb_datarate = <&channel_b>,"ti,datarate:0";
3946 + chc_enable = <0>,"=3";
3947 + chc_cfg = <&channel_c>,"reg:0";
3948 + chc_gain = <&channel_c>,"ti,gain:0";
3949 + chc_datarate = <&channel_c>,"ti,datarate:0";
3950 + chd_enable = <0>,"=4";
3951 + chd_cfg = <&channel_d>,"reg:0";
3952 + chd_gain = <&channel_d>,"ti,gain:0";
3953 + chd_datarate = <&channel_d>,"ti,datarate:0";
3954 + };
3955 +
3956 +};
3957 --- /dev/null
3958 +++ b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
3959 @@ -0,0 +1,103 @@
3960 +/*
3961 + * TI ADS1115 multi-channel ADC overlay
3962 + */
3963 +
3964 +/dts-v1/;
3965 +/plugin/;
3966 +
3967 +/ {
3968 + compatible = "brcm,bcm2708";
3969 +
3970 + fragment@0 {
3971 + target = <&i2c_arm>;
3972 + __overlay__ {
3973 + #address-cells = <1>;
3974 + #size-cells = <0>;
3975 + status = "okay";
3976 +
3977 + ads1115: ads1115 {
3978 + compatible = "ti,ads1115";
3979 + status = "okay";
3980 + #address-cells = <1>;
3981 + #size-cells = <0>;
3982 + reg = <0x48>;
3983 + };
3984 + };
3985 + };
3986 +
3987 + fragment@1 {
3988 + target-path = "i2c_arm/ads1115";
3989 + __dormant__ {
3990 + #address-cells = <1>;
3991 + #size-cells = <0>;
3992 +
3993 + channel_a: channel_a {
3994 + reg = <4>;
3995 + ti,gain = <1>;
3996 + ti,datarate = <7>;
3997 + };
3998 + };
3999 + };
4000 +
4001 + fragment@2 {
4002 + target-path = "i2c_arm/ads1115";
4003 + __dormant__ {
4004 + #address-cells = <1>;
4005 + #size-cells = <0>;
4006 +
4007 + channel_b: channel_b {
4008 + reg = <5>;
4009 + ti,gain = <1>;
4010 + ti,datarate = <7>;
4011 + };
4012 + };
4013 + };
4014 +
4015 + fragment@3 {
4016 + target-path = "i2c_arm/ads1115";
4017 + __dormant__ {
4018 + #address-cells = <1>;
4019 + #size-cells = <0>;
4020 +
4021 + channel_c: channel_c {
4022 + reg = <6>;
4023 + ti,gain = <1>;
4024 + ti,datarate = <7>;
4025 + };
4026 + };
4027 + };
4028 +
4029 + fragment@4 {
4030 + target-path = "i2c_arm/ads1115";
4031 + __dormant__ {
4032 + #address-cells = <1>;
4033 + #size-cells = <0>;
4034 +
4035 + channel_d: channel_d {
4036 + reg = <7>;
4037 + ti,gain = <1>;
4038 + ti,datarate = <7>;
4039 + };
4040 + };
4041 + };
4042 +
4043 + __overrides__ {
4044 + addr = <&ads1115>,"reg:0";
4045 + cha_enable = <0>,"=1";
4046 + cha_cfg = <&channel_a>,"reg:0";
4047 + cha_gain = <&channel_a>,"ti,gain:0";
4048 + cha_datarate = <&channel_a>,"ti,datarate:0";
4049 + chb_enable = <0>,"=2";
4050 + chb_cfg = <&channel_b>,"reg:0";
4051 + chb_gain = <&channel_b>,"ti,gain:0";
4052 + chb_datarate = <&channel_b>,"ti,datarate:0";
4053 + chc_enable = <0>,"=3";
4054 + chc_cfg = <&channel_c>,"reg:0";
4055 + chc_gain = <&channel_c>,"ti,gain:0";
4056 + chc_datarate = <&channel_c>,"ti,datarate:0";
4057 + chd_enable = <0>,"=4";
4058 + chd_cfg = <&channel_d>,"reg:0";
4059 + chd_gain = <&channel_d>,"ti,gain:0";
4060 + chd_datarate = <&channel_d>,"ti,datarate:0";
4061 + };
4062 +};
4063 --- /dev/null
4064 +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
4065 @@ -0,0 +1,89 @@
4066 +/*
4067 + * Generic Device Tree overlay for the ADS7846 touch controller
4068 + *
4069 + */
4070 +
4071 +/dts-v1/;
4072 +/plugin/;
4073 +
4074 +/ {
4075 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
4076 +
4077 + fragment@0 {
4078 + target = <&spi0>;
4079 + __overlay__ {
4080 + status = "okay";
4081 + };
4082 + };
4083 +
4084 + fragment@1 {
4085 + target = <&spidev0>;
4086 + __overlay__ {
4087 + status = "disabled";
4088 + };
4089 + };
4090 +
4091 + fragment@2 {
4092 + target = <&spidev1>;
4093 + __overlay__ {
4094 + status = "disabled";
4095 + };
4096 + };
4097 +
4098 + fragment@3 {
4099 + target = <&gpio>;
4100 + __overlay__ {
4101 + ads7846_pins: ads7846_pins {
4102 + brcm,pins = <255>; /* illegal default value */
4103 + brcm,function = <0>; /* in */
4104 + brcm,pull = <0>; /* none */
4105 + };
4106 + };
4107 + };
4108 +
4109 + fragment@4 {
4110 + target = <&spi0>;
4111 + __overlay__ {
4112 + /* needed to avoid dtc warning */
4113 + #address-cells = <1>;
4114 + #size-cells = <0>;
4115 +
4116 + ads7846: ads7846@1 {
4117 + compatible = "ti,ads7846";
4118 + reg = <1>;
4119 + pinctrl-names = "default";
4120 + pinctrl-0 = <&ads7846_pins>;
4121 +
4122 + spi-max-frequency = <2000000>;
4123 + interrupts = <255 2>; /* high-to-low edge triggered */
4124 + interrupt-parent = <&gpio>;
4125 + pendown-gpio = <&gpio 255 0>;
4126 +
4127 + /* driver defaults */
4128 + ti,x-min = /bits/ 16 <0>;
4129 + ti,y-min = /bits/ 16 <0>;
4130 + ti,x-max = /bits/ 16 <0x0FFF>;
4131 + ti,y-max = /bits/ 16 <0x0FFF>;
4132 + ti,pressure-min = /bits/ 16 <0>;
4133 + ti,pressure-max = /bits/ 16 <0xFFFF>;
4134 + ti,x-plate-ohms = /bits/ 16 <400>;
4135 + };
4136 + };
4137 + };
4138 + __overrides__ {
4139 + cs = <&ads7846>,"reg:0";
4140 + speed = <&ads7846>,"spi-max-frequency:0";
4141 + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
4142 + <&ads7846>,"interrupts:0",
4143 + <&ads7846>,"pendown-gpio:4";
4144 + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
4145 + swapxy = <&ads7846>,"ti,swap-xy?";
4146 + xmin = <&ads7846>,"ti,x-min;0";
4147 + ymin = <&ads7846>,"ti,y-min;0";
4148 + xmax = <&ads7846>,"ti,x-max;0";
4149 + ymax = <&ads7846>,"ti,y-max;0";
4150 + pmin = <&ads7846>,"ti,pressure-min;0";
4151 + pmax = <&ads7846>,"ti,pressure-max;0";
4152 + xohms = <&ads7846>,"ti,x-plate-ohms;0";
4153 + };
4154 +};
4155 --- /dev/null
4156 +++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
4157 @@ -0,0 +1,49 @@
4158 +// Definitions for Digital Dreamtime Akkordion using IQaudIO DAC+ or DACZero
4159 +/dts-v1/;
4160 +/plugin/;
4161 +
4162 +/ {
4163 + compatible = "brcm,bcm2708";
4164 +
4165 + fragment@0 {
4166 + target = <&i2s>;
4167 + __overlay__ {
4168 + status = "okay";
4169 + };
4170 + };
4171 +
4172 + fragment@1 {
4173 + target = <&i2c1>;
4174 + __overlay__ {
4175 + #address-cells = <1>;
4176 + #size-cells = <0>;
4177 + status = "okay";
4178 +
4179 + pcm5122@4c {
4180 + #sound-dai-cells = <0>;
4181 + compatible = "ti,pcm5122";
4182 + reg = <0x4c>;
4183 + AVDD-supply = <&vdd_3v3_reg>;
4184 + DVDD-supply = <&vdd_3v3_reg>;
4185 + CPVDD-supply = <&vdd_3v3_reg>;
4186 + status = "okay";
4187 + };
4188 + };
4189 + };
4190 +
4191 + fragment@2 {
4192 + target = <&sound>;
4193 + frag2: __overlay__ {
4194 + compatible = "iqaudio,iqaudio-dac";
4195 + card_name = "Akkordion";
4196 + dai_name = "IQaudIO DAC";
4197 + dai_stream_name = "IQaudIO DAC HiFi";
4198 + i2s-controller = <&i2s>;
4199 + status = "okay";
4200 + };
4201 + };
4202 +
4203 + __overrides__ {
4204 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
4205 + };
4206 +};
4207 --- /dev/null
4208 +++ b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
4209 @@ -0,0 +1,59 @@
4210 +/*
4211 + * Definitions for Allo Boss DAC board
4212 + */
4213 +
4214 +/dts-v1/;
4215 +/plugin/;
4216 +
4217 +/ {
4218 + compatible = "brcm,bcm2708";
4219 +
4220 + fragment@0 {
4221 + target-path = "/clocks";
4222 + __overlay__ {
4223 + boss_osc: boss_osc {
4224 + compatible = "allo,dac-clk";
4225 + #clock-cells = <0>;
4226 + };
4227 + };
4228 + };
4229 +
4230 + fragment@1 {
4231 + target = <&i2s>;
4232 + __overlay__ {
4233 + status = "okay";
4234 + };
4235 + };
4236 +
4237 + fragment@2 {
4238 + target = <&i2c1>;
4239 + __overlay__ {
4240 + #address-cells = <1>;
4241 + #size-cells = <0>;
4242 + status = "okay";
4243 +
4244 + pcm5122@4d {
4245 + #sound-dai-cells = <0>;
4246 + compatible = "ti,pcm5122";
4247 + clocks = <&boss_osc>;
4248 + reg = <0x4d>;
4249 + status = "okay";
4250 + };
4251 + };
4252 + };
4253 +
4254 + fragment@3 {
4255 + target = <&sound>;
4256 + boss_dac: __overlay__ {
4257 + compatible = "allo,boss-dac";
4258 + i2s-controller = <&i2s>;
4259 + mute-gpios = <&gpio 6 1>;
4260 + status = "okay";
4261 + };
4262 + };
4263 +
4264 + __overrides__ {
4265 + 24db_digital_gain = <&boss_dac>,"allo,24db_digital_gain?";
4266 + slave = <&boss_dac>,"allo,slave?";
4267 + };
4268 +};
4269 --- /dev/null
4270 +++ b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
4271 @@ -0,0 +1,44 @@
4272 +// Definitions for Allo DigiOne
4273 +/dts-v1/;
4274 +/plugin/;
4275 +
4276 +/ {
4277 + compatible = "brcm,bcm2708";
4278 +
4279 + fragment@0 {
4280 + target = <&i2s>;
4281 + __overlay__ {
4282 + status = "okay";
4283 + };
4284 + };
4285 +
4286 + fragment@1 {
4287 + target = <&i2c1>;
4288 + __overlay__ {
4289 + #address-cells = <1>;
4290 + #size-cells = <0>;
4291 + status = "okay";
4292 +
4293 + wm8804@3b {
4294 + #sound-dai-cells = <0>;
4295 + compatible = "wlf,wm8804";
4296 + reg = <0x3b>;
4297 + PVDD-supply = <&vdd_3v3_reg>;
4298 + DVDD-supply = <&vdd_3v3_reg>;
4299 + status = "okay";
4300 + wlf,reset-gpio = <&gpio 17 0>;
4301 + };
4302 + };
4303 + };
4304 +
4305 + fragment@2 {
4306 + target = <&sound>;
4307 + __overlay__ {
4308 + compatible = "allo,allo-digione";
4309 + i2s-controller = <&i2s>;
4310 + status = "okay";
4311 + clock44-gpio = <&gpio 5 0>;
4312 + clock48-gpio = <&gpio 6 0>;
4313 + };
4314 + };
4315 +};
4316 --- /dev/null
4317 +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
4318 @@ -0,0 +1,54 @@
4319 +/*
4320 + * Definitions for Allo Piano DAC (2.0/2.1) boards
4321 + *
4322 + * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo
4323 + * (left/right) and the other provides a subwoofer output, using DSP on the
4324 + * chip for digital high/low pass crossover.
4325 + * The initial support for this hardware, that doesn't require any codec driver
4326 + * modifications, uses only one DAC chip for stereo (left/right) output, the
4327 + * chip with 0x4c slave address. The other chip at 0x4d is currently ignored!
4328 + */
4329 +
4330 +/dts-v1/;
4331 +/plugin/;
4332 +
4333 +/ {
4334 + compatible = "brcm,bcm2708";
4335 +
4336 + fragment@0 {
4337 + target = <&i2s>;
4338 + __overlay__ {
4339 + status = "okay";
4340 + };
4341 + };
4342 +
4343 + fragment@1 {
4344 + target = <&i2c1>;
4345 + __overlay__ {
4346 + #address-cells = <1>;
4347 + #size-cells = <0>;
4348 + status = "okay";
4349 +
4350 + pcm5142@4c {
4351 + #sound-dai-cells = <0>;
4352 + compatible = "ti,pcm5142";
4353 + reg = <0x4c>;
4354 + status = "okay";
4355 + };
4356 + };
4357 + };
4358 +
4359 + fragment@2 {
4360 + target = <&sound>;
4361 + piano_dac: __overlay__ {
4362 + compatible = "allo,piano-dac";
4363 + i2s-controller = <&i2s>;
4364 + status = "okay";
4365 + };
4366 + };
4367 +
4368 + __overrides__ {
4369 + 24db_digital_gain =
4370 + <&piano_dac>,"allo,24db_digital_gain?";
4371 + };
4372 +};
4373 --- /dev/null
4374 +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
4375 @@ -0,0 +1,55 @@
4376 +// Definitions for Piano DAC
4377 +/dts-v1/;
4378 +/plugin/;
4379 +
4380 +/ {
4381 + compatible = "brcm,bcm2708";
4382 +
4383 + fragment@0 {
4384 + target = <&i2s>;
4385 + __overlay__ {
4386 + status = "okay";
4387 + };
4388 + };
4389 +
4390 + fragment@1 {
4391 + target = <&i2c1>;
4392 + __overlay__ {
4393 + #address-cells = <1>;
4394 + #size-cells = <0>;
4395 + status = "okay";
4396 +
4397 + allo_pcm5122_4c: pcm5122@4c {
4398 + #sound-dai-cells = <0>;
4399 + compatible = "ti,pcm5122";
4400 + reg = <0x4c>;
4401 + status = "okay";
4402 + };
4403 + allo_pcm5122_4d: pcm5122@4d {
4404 + #sound-dai-cells = <0>;
4405 + compatible = "ti,pcm5122";
4406 + reg = <0x4d>;
4407 + status = "okay";
4408 + };
4409 + };
4410 + };
4411 +
4412 + fragment@2 {
4413 + target = <&sound>;
4414 + piano_dac: __overlay__ {
4415 + compatible = "allo,piano-dac-plus";
4416 + audio-codec = <&allo_pcm5122_4c &allo_pcm5122_4d>;
4417 + i2s-controller = <&i2s>;
4418 + mute1-gpios = <&gpio 6 1>;
4419 + mute2-gpios = <&gpio 25 1>;
4420 + status = "okay";
4421 + };
4422 + };
4423 +
4424 + __overrides__ {
4425 + 24db_digital_gain =
4426 + <&piano_dac>,"allo,24db_digital_gain?";
4427 + glb_mclk =
4428 + <&piano_dac>,"allo,glb_mclk?";
4429 + };
4430 +};
4431 --- /dev/null
4432 +++ b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
4433 @@ -0,0 +1,57 @@
4434 +/dts-v1/;
4435 +/plugin/;
4436 +
4437 +/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */
4438 +
4439 +/ {
4440 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
4441 +
4442 + fragment@0 {
4443 + target = <&spi0>;
4444 + __overlay__ {
4445 + #address-cells = <1>;
4446 + #size-cells = <0>;
4447 +
4448 + status = "okay";
4449 +
4450 + lowpan0: at86rf233@0 {
4451 + compatible = "atmel,at86rf233";
4452 + reg = <0>;
4453 + interrupt-parent = <&gpio>;
4454 + interrupts = <23 4>; /* active high */
4455 + reset-gpio = <&gpio 24 1>;
4456 + sleep-gpio = <&gpio 25 1>;
4457 + spi-max-frequency = <3000000>;
4458 + xtal-trim = /bits/ 8 <0xf>;
4459 + };
4460 + };
4461 + };
4462 +
4463 + fragment@1 {
4464 + target = <&spidev0>;
4465 + __overlay__ {
4466 + status = "disabled";
4467 + };
4468 + };
4469 +
4470 + fragment@2 {
4471 + target = <&gpio>;
4472 + __overlay__ {
4473 + lowpan0_pins: lowpan0_pins {
4474 + brcm,pins = <23 24 25>;
4475 + brcm,function = <0 1 1>; /* in out out */
4476 + };
4477 + };
4478 + };
4479 +
4480 + __overrides__ {
4481 + interrupt = <&lowpan0>, "interrupts:0",
4482 + <&lowpan0_pins>, "brcm,pins:0";
4483 + reset = <&lowpan0>, "reset-gpio:4",
4484 + <&lowpan0_pins>, "brcm,pins:4";
4485 + sleep = <&lowpan0>, "sleep-gpio:4",
4486 + <&lowpan0_pins>, "brcm,pins:8";
4487 + speed = <&lowpan0>, "spi-max-frequency:0";
4488 + trim = <&lowpan0>, "xtal-trim.0";
4489 + };
4490 +};
4491 --- /dev/null
4492 +++ b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
4493 @@ -0,0 +1,55 @@
4494 +// Definitions for audioinjector.net audio add on soundcard
4495 +/dts-v1/;
4496 +/plugin/;
4497 +
4498 +/ {
4499 + compatible = "brcm,bcm2708";
4500 +
4501 + fragment@0 {
4502 + target = <&i2s>;
4503 + __overlay__ {
4504 + status = "okay";
4505 + };
4506 + };
4507 +
4508 + fragment@1 {
4509 + target = <&i2c1>;
4510 + __overlay__ {
4511 + #address-cells = <1>;
4512 + #size-cells = <0>;
4513 + status = "okay";
4514 +
4515 + cs42448: cs42448@48 {
4516 + #sound-dai-cells = <0>;
4517 + compatible = "cirrus,cs42448";
4518 + reg = <0x48>;
4519 + clocks = <&cs42448_mclk>;
4520 + clock-names = "mclk";
4521 + VA-supply = <&vdd_5v0_reg>;
4522 + VD-supply = <&vdd_3v3_reg>;
4523 + VLS-supply = <&vdd_3v3_reg>;
4524 + VLC-supply = <&vdd_3v3_reg>;
4525 + status = "okay";
4526 + };
4527 +
4528 + cs42448_mclk: codec-mclk {
4529 + compatible = "fixed-clock";
4530 + #clock-cells = <0>;
4531 + clock-frequency = <49152000>;
4532 + };
4533 + };
4534 + };
4535 +
4536 + fragment@2 {
4537 + target = <&sound>;
4538 + __overlay__ {
4539 + compatible = "ai,audioinjector-octo-soundcard";
4540 + mult-gpios = <&gpio 27 0>, <&gpio 22 0>, <&gpio 23 0>,
4541 + <&gpio 24 0>;
4542 + reset-gpios = <&gpio 5 0>;
4543 + i2s-controller = <&i2s>;
4544 + codec = <&cs42448>;
4545 + status = "okay";
4546 + };
4547 + };
4548 +};
4549 --- /dev/null
4550 +++ b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
4551 @@ -0,0 +1,39 @@
4552 +// Definitions for audioinjector.net audio add on soundcard
4553 +/dts-v1/;
4554 +/plugin/;
4555 +
4556 +/ {
4557 + compatible = "brcm,bcm2708";
4558 +
4559 + fragment@0 {
4560 + target = <&i2s>;
4561 + __overlay__ {
4562 + status = "okay";
4563 + };
4564 + };
4565 +
4566 + fragment@1 {
4567 + target = <&i2c1>;
4568 + __overlay__ {
4569 + #address-cells = <1>;
4570 + #size-cells = <0>;
4571 + status = "okay";
4572 +
4573 + wm8731@1a {
4574 + #sound-dai-cells = <0>;
4575 + compatible = "wlf,wm8731";
4576 + reg = <0x1a>;
4577 + status = "okay";
4578 + };
4579 + };
4580 + };
4581 +
4582 + fragment@2 {
4583 + target = <&sound>;
4584 + __overlay__ {
4585 + compatible = "ai,audioinjector-pi-soundcard";
4586 + i2s-controller = <&i2s>;
4587 + status = "okay";
4588 + };
4589 + };
4590 +};
4591 --- /dev/null
4592 +++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
4593 @@ -0,0 +1,19 @@
4594 +/dts-v1/;
4595 +/plugin/;
4596 +
4597 +/ {
4598 + compatible = "brcm,bcm2708";
4599 +
4600 + fragment@0 {
4601 + target = <&audio_pins>;
4602 + frag0: __overlay__ {
4603 + brcm,pins = < 12 13 >;
4604 + brcm,function = < 4 >; /* alt0 alt0 */
4605 + };
4606 + };
4607 +
4608 + __overrides__ {
4609 + swap_lr = <&frag0>, "swap_lr?";
4610 + enable_jack = <&frag0>, "enable_jack?";
4611 + };
4612 +};
4613 --- /dev/null
4614 +++ b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
4615 @@ -0,0 +1,23 @@
4616 +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec
4617 +/dts-v1/;
4618 +/plugin/;
4619 +
4620 +/ {
4621 + compatible = "brcm,bcm2708";
4622 +
4623 + fragment@0 {
4624 + target = <&i2c_arm>;
4625 + __overlay__ {
4626 + #address-cells = <1>;
4627 + #size-cells = <0>;
4628 + status = "okay";
4629 +
4630 + bmp085@77 {
4631 + compatible = "bosch,bmp085";
4632 + reg = <0x77>;
4633 + default-oversampling = <3>;
4634 + status = "okay";
4635 + };
4636 + };
4637 + };
4638 +};
4639 --- /dev/null
4640 +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
4641 @@ -0,0 +1,39 @@
4642 +/*
4643 + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
4644 + */
4645 +/dts-v1/;
4646 +/plugin/;
4647 +
4648 +/ {
4649 + compatible = "brcm,bcm2708";
4650 +
4651 + fragment@0 {
4652 + target-path = "/";
4653 + __overlay__ {
4654 +
4655 + dht11: dht11@0 {
4656 + compatible = "dht11";
4657 + pinctrl-names = "default";
4658 + pinctrl-0 = <&dht11_pins>;
4659 + gpios = <&gpio 4 0>;
4660 + status = "okay";
4661 + };
4662 + };
4663 + };
4664 +
4665 + fragment@1 {
4666 + target = <&gpio>;
4667 + __overlay__ {
4668 + dht11_pins: dht11_pins {
4669 + brcm,pins = <4>;
4670 + brcm,function = <0>; // in
4671 + brcm,pull = <0>; // off
4672 + };
4673 + };
4674 + };
4675 +
4676 + __overrides__ {
4677 + gpiopin = <&dht11_pins>,"brcm,pins:0",
4678 + <&dht11>,"gpios:4";
4679 + };
4680 +};
4681 --- /dev/null
4682 +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
4683 @@ -0,0 +1,39 @@
4684 +// Definitions for Dion Audio LOCO DAC-AMP
4685 +
4686 +/*
4687 + * PCM5242 DAC (in hardware mode) and TPA3118 AMP.
4688 + */
4689 +
4690 +/dts-v1/;
4691 +/plugin/;
4692 +
4693 +/ {
4694 + compatible = "brcm,bcm2708";
4695 +
4696 + fragment@0 {
4697 + target = <&i2s>;
4698 + __overlay__ {
4699 + status = "okay";
4700 + };
4701 + };
4702 +
4703 + fragment@1 {
4704 + target-path = "/";
4705 + __overlay__ {
4706 + pcm5102a-codec {
4707 + #sound-dai-cells = <0>;
4708 + compatible = "ti,pcm5102a";
4709 + status = "okay";
4710 + };
4711 + };
4712 + };
4713 +
4714 + fragment@2 {
4715 + target = <&sound>;
4716 + __overlay__ {
4717 + compatible = "dionaudio,loco-pcm5242-tpa3118";
4718 + i2s-controller = <&i2s>;
4719 + status = "okay";
4720 + };
4721 + };
4722 +};
4723 --- /dev/null
4724 +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
4725 @@ -0,0 +1,49 @@
4726 +/*
4727 + * Definitions for Dion Audio LOCO-V2 DAC-AMP
4728 + * eg. dtoverlay=dionaudio-loco-v2
4729 + *
4730 + * PCM5242 DAC (in software mode) and TPA3255 AMP.
4731 + */
4732 +
4733 +/dts-v1/;
4734 +/plugin/;
4735 +
4736 +/ {
4737 + compatible = "brcm,bcm2708";
4738 +
4739 + fragment@0 {
4740 + target = <&sound>;
4741 + frag0: __overlay__ {
4742 + compatible = "dionaudio,dionaudio-loco-v2";
4743 + i2s-controller = <&i2s>;
4744 + status = "okay";
4745 + };
4746 + };
4747 +
4748 + fragment@1 {
4749 + target = <&i2s>;
4750 + __overlay__ {
4751 + status = "okay";
4752 + };
4753 + };
4754 +
4755 + fragment@2 {
4756 + target = <&i2c1>;
4757 + __overlay__ {
4758 + #address-cells = <1>;
4759 + #size-cells = <0>;
4760 + status = "okay";
4761 +
4762 + pcm5122@4c {
4763 + #sound-dai-cells = <0>;
4764 + compatible = "ti,pcm5122";
4765 + reg = <0x4d>;
4766 + status = "okay";
4767 + };
4768 + };
4769 + };
4770 +
4771 + __overrides__ {
4772 + 24db_digital_gain = <&frag0>,"dionaudio,24db_digital_gain?";
4773 + };
4774 +};
4775 --- /dev/null
4776 +++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
4777 @@ -0,0 +1,31 @@
4778 +/dts-v1/;
4779 +/plugin/;
4780 +
4781 +/{
4782 + compatible = "brcm,bcm2708";
4783 +
4784 + // There is no DPI driver module, but we need a platform device
4785 + // node (that doesn't already use pinctrl) to hang the pinctrl
4786 + // reference on - leds will do
4787 +
4788 + fragment@0 {
4789 + target = <&leds>;
4790 + __overlay__ {
4791 + pinctrl-names = "default";
4792 + pinctrl-0 = <&dpi18_pins>;
4793 + };
4794 + };
4795 +
4796 + fragment@1 {
4797 + target = <&gpio>;
4798 + __overlay__ {
4799 + dpi18_pins: dpi18_pins {
4800 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
4801 + 12 13 14 15 16 17 18 19 20
4802 + 21>;
4803 + brcm,function = <6>; /* alt2 */
4804 + brcm,pull = <0>; /* no pull */
4805 + };
4806 + };
4807 + };
4808 +};
4809 --- /dev/null
4810 +++ b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
4811 @@ -0,0 +1,31 @@
4812 +/dts-v1/;
4813 +/plugin/;
4814 +
4815 +/{
4816 + compatible = "brcm,bcm2708";
4817 +
4818 + // There is no DPI driver module, but we need a platform device
4819 + // node (that doesn't already use pinctrl) to hang the pinctrl
4820 + // reference on - leds will do
4821 +
4822 + fragment@0 {
4823 + target = <&leds>;
4824 + __overlay__ {
4825 + pinctrl-names = "default";
4826 + pinctrl-0 = <&dpi24_pins>;
4827 + };
4828 + };
4829 +
4830 + fragment@1 {
4831 + target = <&gpio>;
4832 + __overlay__ {
4833 + dpi24_pins: dpi24_pins {
4834 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
4835 + 12 13 14 15 16 17 18 19 20
4836 + 21 22 23 24 25 26 27>;
4837 + brcm,function = <6>; /* alt2 */
4838 + brcm,pull = <0>; /* no pull */
4839 + };
4840 + };
4841 + };
4842 +};
4843 --- /dev/null
4844 +++ b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
4845 @@ -0,0 +1,20 @@
4846 +/dts-v1/;
4847 +/plugin/;
4848 +
4849 +/{
4850 + compatible = "brcm,bcm2708";
4851 +
4852 + fragment@0 {
4853 + target = <&usb>;
4854 + #address-cells = <1>;
4855 + #size-cells = <1>;
4856 + __overlay__ {
4857 + compatible = "brcm,bcm2708-usb";
4858 + reg = <0x7e980000 0x10000>,
4859 + <0x7e006000 0x1000>;
4860 + interrupts = <2 0>,
4861 + <1 9>;
4862 + status = "okay";
4863 + };
4864 + };
4865 +};
4866 --- /dev/null
4867 +++ b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
4868 @@ -0,0 +1,28 @@
4869 +/dts-v1/;
4870 +/plugin/;
4871 +
4872 +/{
4873 + compatible = "brcm,bcm2708";
4874 +
4875 + fragment@0 {
4876 + target = <&usb>;
4877 + #address-cells = <1>;
4878 + #size-cells = <1>;
4879 + dwc2_usb: __overlay__ {
4880 + compatible = "brcm,bcm2835-usb";
4881 + reg = <0x7e980000 0x10000>;
4882 + interrupts = <1 9>;
4883 + dr_mode = "otg";
4884 + g-np-tx-fifo-size = <32>;
4885 + g-rx-fifo-size = <256>;
4886 + g-tx-fifo-size = <512 512 512 512 512 768>;
4887 + status = "okay";
4888 + };
4889 + };
4890 +
4891 + __overrides__ {
4892 + dr_mode = <&dwc2_usb>, "dr_mode";
4893 + g-np-tx-fifo-size = <&dwc2_usb>,"g-np-tx-fifo-size:0";
4894 + g-rx-fifo-size = <&dwc2_usb>,"g-rx-fifo-size:0";
4895 + };
4896 +};
4897 --- /dev/null
4898 +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
4899 @@ -0,0 +1,53 @@
4900 +// Overlay for the Microchip ENC28J60 Ethernet Controller
4901 +/dts-v1/;
4902 +/plugin/;
4903 +
4904 +/ {
4905 + compatible = "brcm,bcm2708";
4906 +
4907 + fragment@0 {
4908 + target = <&spi0>;
4909 + __overlay__ {
4910 + /* needed to avoid dtc warning */
4911 + #address-cells = <1>;
4912 + #size-cells = <0>;
4913 +
4914 + status = "okay";
4915 +
4916 + eth1: enc28j60@0{
4917 + compatible = "microchip,enc28j60";
4918 + reg = <0>; /* CE0 */
4919 + pinctrl-names = "default";
4920 + pinctrl-0 = <&eth1_pins>;
4921 + interrupt-parent = <&gpio>;
4922 + interrupts = <25 0x2>; /* falling edge */
4923 + spi-max-frequency = <12000000>;
4924 + status = "okay";
4925 + };
4926 + };
4927 + };
4928 +
4929 + fragment@1 {
4930 + target = <&spidev0>;
4931 + __overlay__ {
4932 + status = "disabled";
4933 + };
4934 + };
4935 +
4936 + fragment@2 {
4937 + target = <&gpio>;
4938 + __overlay__ {
4939 + eth1_pins: eth1_pins {
4940 + brcm,pins = <25>;
4941 + brcm,function = <0>; /* in */
4942 + brcm,pull = <0>; /* none */
4943 + };
4944 + };
4945 + };
4946 +
4947 + __overrides__ {
4948 + int_pin = <&eth1>, "interrupts:0",
4949 + <&eth1_pins>, "brcm,pins:0";
4950 + speed = <&eth1>, "spi-max-frequency:0";
4951 + };
4952 +};
4953 --- /dev/null
4954 +++ b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
4955 @@ -0,0 +1,47 @@
4956 +// Overlay for the Microchip ENC28J60 Ethernet Controller - SPI2 Compute Module
4957 +// Interrupt pin: 39
4958 +/dts-v1/;
4959 +/plugin/;
4960 +
4961 +/ {
4962 + compatible = "brcm,bcm2708";
4963 +
4964 + fragment@0 {
4965 + target = <&spi2>;
4966 + __overlay__ {
4967 + /* needed to avoid dtc warning */
4968 + #address-cells = <1>;
4969 + #size-cells = <0>;
4970 +
4971 + status = "okay";
4972 +
4973 + eth1: enc28j60@0{
4974 + compatible = "microchip,enc28j60";
4975 + reg = <0>; /* CE0 */
4976 + pinctrl-names = "default";
4977 + pinctrl-0 = <&eth1_pins>;
4978 + interrupt-parent = <&gpio>;
4979 + interrupts = <39 0x2>; /* falling edge */
4980 + spi-max-frequency = <12000000>;
4981 + status = "okay";
4982 + };
4983 + };
4984 + };
4985 +
4986 + fragment@1 {
4987 + target = <&gpio>;
4988 + __overlay__ {
4989 + eth1_pins: eth1_pins {
4990 + brcm,pins = <39>;
4991 + brcm,function = <0>; /* in */
4992 + brcm,pull = <0>; /* none */
4993 + };
4994 + };
4995 + };
4996 +
4997 + __overrides__ {
4998 + int_pin = <&eth1>, "interrupts:0",
4999 + <&eth1_pins>, "brcm,pins:0";
5000 + speed = <&eth1>, "spi-max-frequency:0";
5001 + };
5002 +};
5003 --- /dev/null
5004 +++ b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
5005 @@ -0,0 +1,70 @@
5006 +// Definitions for Fe-Pi Audio
5007 +/dts-v1/;
5008 +/plugin/;
5009 +
5010 +/ {
5011 + compatible = "brcm,bcm2708";
5012 +
5013 + fragment@0 {
5014 + target = <&clocks>;
5015 + __overlay__ {
5016 + sgtl5000_mclk: sgtl5000_mclk {
5017 + compatible = "fixed-clock";
5018 + #clock-cells = <0>;
5019 + clock-frequency = <12288000>;
5020 + clock-output-names = "sgtl5000-mclk";
5021 + };
5022 + };
5023 + };
5024 +
5025 + fragment@1 {
5026 + target = <&soc>;
5027 + __overlay__ {
5028 + reg_1v8: reg_1v8@0 {
5029 + compatible = "regulator-fixed";
5030 + regulator-name = "1V8";
5031 + regulator-min-microvolt = <1800000>;
5032 + regulator-max-microvolt = <1800000>;
5033 + regulator-always-on;
5034 + };
5035 + };
5036 + };
5037 +
5038 + fragment@2 {
5039 + target = <&i2c1>;
5040 + __overlay__ {
5041 + #address-cells = <1>;
5042 + #size-cells = <0>;
5043 + status = "okay";
5044 +
5045 + sgtl5000@0a {
5046 + #sound-dai-cells = <0>;
5047 + compatible = "fepi,sgtl5000";
5048 + reg = <0x0a>;
5049 + clocks = <&sgtl5000_mclk>;
5050 + micbias-resistor-k-ohms = <2>;
5051 + micbias-voltage-m-volts = <3000>;
5052 + VDDA-supply = <&vdd_3v3_reg>;
5053 + VDDIO-supply = <&vdd_3v3_reg>;
5054 + VDDD-supply = <&reg_1v8>;
5055 + status = "okay";
5056 + };
5057 + };
5058 + };
5059 +
5060 + fragment@3 {
5061 + target = <&i2s>;
5062 + __overlay__ {
5063 + status = "okay";
5064 + };
5065 + };
5066 +
5067 + fragment@4 {
5068 + target = <&sound>;
5069 + __overlay__ {
5070 + compatible = "fe-pi,fe-pi-audio";
5071 + i2s-controller = <&i2s>;
5072 + status = "okay";
5073 + };
5074 + };
5075 +};
5076 --- /dev/null
5077 +++ b/arch/arm/boot/dts/overlays/goodix-overlay.dts
5078 @@ -0,0 +1,46 @@
5079 +// Device tree overlay for I2C connected Goodix gt9271 multiple touch controller
5080 +/dts-v1/;
5081 +/plugin/;
5082 +
5083 +/ {
5084 + compatible = "brcm,bcm2708";
5085 +
5086 + fragment@0 {
5087 + target = <&gpio>;
5088 + __overlay__ {
5089 + goodix_pins: goodix_pins {
5090 + brcm,pins = <4 17>; // interrupt and reset
5091 + brcm,function = <0 0>; // in
5092 + brcm,pull = <2 2>; // pull-up
5093 + };
5094 + };
5095 + };
5096 +
5097 + fragment@1 {
5098 + target = <&i2c1>;
5099 + __overlay__ {
5100 + #address-cells = <1>;
5101 + #size-cells = <0>;
5102 + status = "okay";
5103 +
5104 + gt9271: gt9271@14 {
5105 + compatible = "goodix,gt9271";
5106 + reg = <0x14>;
5107 + pinctrl-names = "default";
5108 + pinctrl-0 = <&goodix_pins>;
5109 + interrupt-parent = <&gpio>;
5110 + interrupts = <4 2>; // high-to-low edge triggered
5111 + irq-gpios = <&gpio 4 0>; // Pin7 on GPIO header
5112 + reset-gpios = <&gpio 17 0>; // Pin11 on GPIO header
5113 + };
5114 + };
5115 + };
5116 +
5117 + __overrides__ {
5118 + interrupt = <&goodix_pins>,"brcm,pins:0",
5119 + <&gt9271>,"interrupts:0",
5120 + <&gt9271>,"irq-gpios:4";
5121 + reset = <&goodix_pins>,"brcm,pins:4",
5122 + <&gt9271>,"reset-gpios:4";
5123 + };
5124 +};
5125 --- /dev/null
5126 +++ b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
5127 @@ -0,0 +1,49 @@
5128 +// Definitions for Google voiceHAT v1 soundcard overlay
5129 +/dts-v1/;
5130 +/plugin/;
5131 +
5132 +/ {
5133 + compatible = "brcm,bcm2708";
5134 +
5135 + fragment@0 {
5136 + target = <&i2s>;
5137 + __overlay__ {
5138 + status = "okay";
5139 + };
5140 + };
5141 +
5142 + fragment@1 {
5143 + target = <&gpio>;
5144 + __overlay__ {
5145 + googlevoicehat_pins: googlevoicehat_pins {
5146 + brcm,pins = <16>;
5147 + brcm,function = <1>; /* out */
5148 + brcm,pull = <0>; /* up */
5149 + };
5150 + };
5151 + };
5152 +
5153 +
5154 + fragment@2 {
5155 + target-path = "/";
5156 + __overlay__ {
5157 + voicehat-codec {
5158 + #sound-dai-cells = <0>;
5159 + compatible = "google,voicehat";
5160 + pinctrl-names = "default";
5161 + pinctrl-0 = <&googlevoicehat_pins>;
5162 + sdmode-gpios= <&gpio 16 0>;
5163 + status = "okay";
5164 + };
5165 + };
5166 + };
5167 +
5168 + fragment@3 {
5169 + target = <&sound>;
5170 + __overlay__ {
5171 + compatible = "googlevoicehat,googlevoicehat-soundcard";
5172 + i2s-controller = <&i2s>;
5173 + status = "okay";
5174 + };
5175 + };
5176 +};
5177 --- /dev/null
5178 +++ b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
5179 @@ -0,0 +1,44 @@
5180 +// Definitions for ir-gpio module
5181 +/dts-v1/;
5182 +/plugin/;
5183 +
5184 +/ {
5185 + compatible = "brcm,bcm2708";
5186 +
5187 + fragment@0 {
5188 + target-path = "/";
5189 + __overlay__ {
5190 + gpio_ir: ir-receiver {
5191 + compatible = "gpio-ir-receiver";
5192 +
5193 + // pin number, high or low
5194 + gpios = <&gpio 18 1>;
5195 +
5196 + // parameter for keymap name
5197 + linux,rc-map-name = "rc-rc6-mce";
5198 +
5199 + status = "okay";
5200 + };
5201 + };
5202 + };
5203 +
5204 + fragment@1 {
5205 + target = <&gpio>;
5206 + __overlay__ {
5207 + gpio_ir_pins: gpio_ir_pins {
5208 + brcm,pins = <18>; // pin 18
5209 + brcm,function = <0>; // in
5210 + brcm,pull = <1>; // down
5211 + };
5212 + };
5213 + };
5214 +
5215 + __overrides__ {
5216 + // parameters
5217 + gpio_pin = <&gpio_ir>,"gpios:4",
5218 + <&gpio_ir_pins>,"brcm,pins:0"; // pin number
5219 + gpio_pull = <&gpio_ir_pins>,"brcm,pull:0"; // pull-up/down state
5220 +
5221 + rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
5222 + };
5223 +};
5224 --- /dev/null
5225 +++ b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
5226 @@ -0,0 +1,34 @@
5227 +/dts-v1/;
5228 +/plugin/;
5229 +
5230 +/ {
5231 + compatible = "brcm,bcm2708";
5232 +
5233 + fragment@0 {
5234 + target = <&gpio>;
5235 + __overlay__ {
5236 + gpio_ir_tx_pins: gpio_ir_tx_pins {
5237 + brcm,pins = <18>;
5238 + brcm,function = <1>; // out
5239 + };
5240 + };
5241 + };
5242 +
5243 + fragment@1 {
5244 + target-path = "/";
5245 + __overlay__ {
5246 + gpio_ir_tx: gpio-ir-transmitter {
5247 + compatible = "gpio-ir-tx";
5248 + pinctrl-names = "default";
5249 + pinctrl-0 = <&gpio_ir_tx_pins>;
5250 + gpios = <&gpio 18 0>;
5251 + };
5252 + };
5253 + };
5254 +
5255 + __overrides__ {
5256 + gpio_pin = <&gpio_ir_tx>, "gpios:4",
5257 + <&gpio_ir_tx_pins>, "brcm,pins:0"; // pin number
5258 + invert = <&gpio_ir_tx>, "gpios:8"; // 1 = active low
5259 + };
5260 +};
5261 --- /dev/null
5262 +++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
5263 @@ -0,0 +1,34 @@
5264 +// Definitions for gpio-poweroff module
5265 +/dts-v1/;
5266 +/plugin/;
5267 +
5268 +/ {
5269 + compatible = "brcm,bcm2708";
5270 +
5271 + fragment@0 {
5272 + target-path = "/";
5273 + __overlay__ {
5274 + power_ctrl: power_ctrl {
5275 + compatible = "gpio-poweroff";
5276 + gpios = <&gpio 26 0>;
5277 + force;
5278 + };
5279 + };
5280 + };
5281 +
5282 + fragment@1 {
5283 + target = <&gpio>;
5284 + __overlay__ {
5285 + power_ctrl_pins: power_ctrl_pins {
5286 + brcm,pins = <26>;
5287 + brcm,function = <1>; // out
5288 + };
5289 + };
5290 + };
5291 +
5292 + __overrides__ {
5293 + gpiopin = <&power_ctrl>,"gpios:4",
5294 + <&power_ctrl_pins>,"brcm,pins:0";
5295 + active_low = <&power_ctrl>,"gpios:8";
5296 + };
5297 +};
5298 --- /dev/null
5299 +++ b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
5300 @@ -0,0 +1,80 @@
5301 +// Definitions for gpio-poweroff module
5302 +/dts-v1/;
5303 +/plugin/;
5304 +
5305 +// This overlay sets up an input device that generates KEY_POWER events
5306 +// when a given GPIO pin changes. It defaults to using GPIO3, which can
5307 +// also be used to wake up (start) the Rpi again after shutdown. Since
5308 +// wakeup is active-low, this defaults to active-low with a pullup
5309 +// enabled, but all of this can be changed using overlay parameters (but
5310 +// note that GPIO3 has an external pullup on at least some boards).
5311 +
5312 +/ {
5313 + compatible = "brcm,bcm2708";
5314 +
5315 + fragment@0 {
5316 + // Configure the gpio pin controller
5317 + target = <&gpio>;
5318 + __overlay__ {
5319 + // Define a pinctrl state, that sets up the gpio
5320 + // as an input with a pullup enabled. This does
5321 + // not take effect by itself, only when referenced
5322 + // by a "pinctrl client", as is done below. See:
5323 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
5324 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
5325 + pin_state: shutdown_button_pins {
5326 + brcm,pins = <3>; // gpio number
5327 + brcm,function = <0>; // 0 = input, 1 = output
5328 + brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
5329 + };
5330 + };
5331 + };
5332 + fragment@1 {
5333 + // Add a new device to the /soc devicetree node
5334 + target-path = "/soc";
5335 + __overlay__ {
5336 + shutdown_button {
5337 + // Let the gpio-keys driver handle this device. See:
5338 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.txt
5339 + compatible = "gpio-keys";
5340 +
5341 + // Declare a single pinctrl state (referencing the one declared above) and name it
5342 + // default, so it is activated automatically.
5343 + pinctrl-names = "default";
5344 + pinctrl-0 = <&pin_state>;
5345 +
5346 + // Enable this device
5347 + status = "okay";
5348 +
5349 + // Define a single key, called "shutdown" that monitors the gpio and sends KEY_POWER
5350 + // (keycode 116, see
5351 + // https://github.com/torvalds/linux/blob/v4.12/include/uapi/linux/input-event-codes.h#L190)
5352 + button: shutdown {
5353 + label = "shutdown";
5354 + linux,code = <116>; // KEY_POWER
5355 + gpios = <&gpio 3 1>;
5356 + };
5357 + };
5358 + };
5359 + };
5360 +
5361 + // This defines parameters that can be specified when loading
5362 + // the overlay. Each foo = line specifies one parameter, named
5363 + // foo. The rest of the specification gives properties where the
5364 + // parameter value is inserted into (changing the values above
5365 + // or adding new ones).
5366 + __overrides__ {
5367 + // Allow overriding the GPIO number.
5368 + gpio_pin = <&button>,"gpios:4",
5369 + <&pin_state>,"brcm,pins:0";
5370 +
5371 + // Allow changing the internal pullup/down state. 0 = none, 1 = pulldown, 2 = pullup
5372 + // Note that GPIO3 and GPIO2 are the I2c pins and have an external pullup (at least
5373 + // on some boards).
5374 + gpio_pull = <&pin_state>,"brcm,pull:0";
5375 +
5376 + // Allow setting the active_low flag. 0 = active high, 1 = active low
5377 + active_low = <&button>,"gpios:8";
5378 + };
5379 +
5380 +};
5381 --- /dev/null
5382 +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
5383 @@ -0,0 +1,39 @@
5384 +// Definitions for HiFiBerry Amp/Amp+
5385 +/dts-v1/;
5386 +/plugin/;
5387 +
5388 +/ {
5389 + compatible = "brcm,bcm2708";
5390 +
5391 + fragment@0 {
5392 + target = <&i2s>;
5393 + __overlay__ {
5394 + status = "okay";
5395 + };
5396 + };
5397 +
5398 + fragment@1 {
5399 + target = <&i2c1>;
5400 + __overlay__ {
5401 + #address-cells = <1>;
5402 + #size-cells = <0>;
5403 + status = "okay";
5404 +
5405 + tas5713@1b {
5406 + #sound-dai-cells = <0>;
5407 + compatible = "ti,tas5713";
5408 + reg = <0x1b>;
5409 + status = "okay";
5410 + };
5411 + };
5412 + };
5413 +
5414 + fragment@2 {
5415 + target = <&sound>;
5416 + __overlay__ {
5417 + compatible = "hifiberry,hifiberry-amp";
5418 + i2s-controller = <&i2s>;
5419 + status = "okay";
5420 + };
5421 + };
5422 +};
5423 --- /dev/null
5424 +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
5425 @@ -0,0 +1,34 @@
5426 +// Definitions for HiFiBerry DAC
5427 +/dts-v1/;
5428 +/plugin/;
5429 +
5430 +/ {
5431 + compatible = "brcm,bcm2708";
5432 +
5433 + fragment@0 {
5434 + target = <&i2s>;
5435 + __overlay__ {
5436 + status = "okay";
5437 + };
5438 + };
5439 +
5440 + fragment@1 {
5441 + target-path = "/";
5442 + __overlay__ {
5443 + pcm5102a-codec {
5444 + #sound-dai-cells = <0>;
5445 + compatible = "ti,pcm5102a";
5446 + status = "okay";
5447 + };
5448 + };
5449 + };
5450 +
5451 + fragment@2 {
5452 + target = <&sound>;
5453 + __overlay__ {
5454 + compatible = "hifiberry,hifiberry-dac";
5455 + i2s-controller = <&i2s>;
5456 + status = "okay";
5457 + };
5458 + };
5459 +};
5460 --- /dev/null
5461 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
5462 @@ -0,0 +1,59 @@
5463 +// Definitions for HiFiBerry DAC+
5464 +/dts-v1/;
5465 +/plugin/;
5466 +
5467 +/ {
5468 + compatible = "brcm,bcm2708";
5469 +
5470 + fragment@0 {
5471 + target-path = "/clocks";
5472 + __overlay__ {
5473 + dacpro_osc: dacpro_osc {
5474 + compatible = "hifiberry,dacpro-clk";
5475 + #clock-cells = <0>;
5476 + };
5477 + };
5478 + };
5479 +
5480 + fragment@1 {
5481 + target = <&i2s>;
5482 + __overlay__ {
5483 + status = "okay";
5484 + };
5485 + };
5486 +
5487 + fragment@2 {
5488 + target = <&i2c1>;
5489 + __overlay__ {
5490 + #address-cells = <1>;
5491 + #size-cells = <0>;
5492 + status = "okay";
5493 +
5494 + pcm5122@4d {
5495 + #sound-dai-cells = <0>;
5496 + compatible = "ti,pcm5122";
5497 + reg = <0x4d>;
5498 + clocks = <&dacpro_osc>;
5499 + AVDD-supply = <&vdd_3v3_reg>;
5500 + DVDD-supply = <&vdd_3v3_reg>;
5501 + CPVDD-supply = <&vdd_3v3_reg>;
5502 + status = "okay";
5503 + };
5504 + };
5505 + };
5506 +
5507 + fragment@3 {
5508 + target = <&sound>;
5509 + hifiberry_dacplus: __overlay__ {
5510 + compatible = "hifiberry,hifiberry-dacplus";
5511 + i2s-controller = <&i2s>;
5512 + status = "okay";
5513 + };
5514 + };
5515 +
5516 + __overrides__ {
5517 + 24db_digital_gain =
5518 + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
5519 + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
5520 + };
5521 +};
5522 --- /dev/null
5523 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
5524 @@ -0,0 +1,41 @@
5525 +// Definitions for HiFiBerry Digi
5526 +/dts-v1/;
5527 +/plugin/;
5528 +
5529 +/ {
5530 + compatible = "brcm,bcm2708";
5531 +
5532 + fragment@0 {
5533 + target = <&i2s>;
5534 + __overlay__ {
5535 + status = "okay";
5536 + };
5537 + };
5538 +
5539 + fragment@1 {
5540 + target = <&i2c1>;
5541 + __overlay__ {
5542 + #address-cells = <1>;
5543 + #size-cells = <0>;
5544 + status = "okay";
5545 +
5546 + wm8804@3b {
5547 + #sound-dai-cells = <0>;
5548 + compatible = "wlf,wm8804";
5549 + reg = <0x3b>;
5550 + PVDD-supply = <&vdd_3v3_reg>;
5551 + DVDD-supply = <&vdd_3v3_reg>;
5552 + status = "okay";
5553 + };
5554 + };
5555 + };
5556 +
5557 + fragment@2 {
5558 + target = <&sound>;
5559 + __overlay__ {
5560 + compatible = "hifiberry,hifiberry-digi";
5561 + i2s-controller = <&i2s>;
5562 + status = "okay";
5563 + };
5564 + };
5565 +};
5566 --- /dev/null
5567 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
5568 @@ -0,0 +1,43 @@
5569 +// Definitions for HiFiBerry Digi Pro
5570 +/dts-v1/;
5571 +/plugin/;
5572 +
5573 +/ {
5574 + compatible = "brcm,bcm2708";
5575 +
5576 + fragment@0 {
5577 + target = <&i2s>;
5578 + __overlay__ {
5579 + status = "okay";
5580 + };
5581 + };
5582 +
5583 + fragment@1 {
5584 + target = <&i2c1>;
5585 + __overlay__ {
5586 + #address-cells = <1>;
5587 + #size-cells = <0>;
5588 + status = "okay";
5589 +
5590 + wm8804@3b {
5591 + #sound-dai-cells = <0>;
5592 + compatible = "wlf,wm8804";
5593 + reg = <0x3b>;
5594 + PVDD-supply = <&vdd_3v3_reg>;
5595 + DVDD-supply = <&vdd_3v3_reg>;
5596 + status = "okay";
5597 + };
5598 + };
5599 + };
5600 +
5601 + fragment@2 {
5602 + target = <&sound>;
5603 + __overlay__ {
5604 + compatible = "hifiberry,hifiberry-digi";
5605 + i2s-controller = <&i2s>;
5606 + status = "okay";
5607 + clock44-gpio = <&gpio 5 0>;
5608 + clock48-gpio = <&gpio 6 0>;
5609 + };
5610 + };
5611 +};
5612 --- /dev/null
5613 +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
5614 @@ -0,0 +1,93 @@
5615 +/*
5616 + * Device Tree overlay for HY28A display
5617 + *
5618 + */
5619 +
5620 +/dts-v1/;
5621 +/plugin/;
5622 +
5623 +/ {
5624 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
5625 +
5626 + fragment@0 {
5627 + target = <&spi0>;
5628 + __overlay__ {
5629 + status = "okay";
5630 + };
5631 + };
5632 +
5633 + fragment@1 {
5634 + target = <&spidev0>;
5635 + __overlay__ {
5636 + status = "disabled";
5637 + };
5638 + };
5639 +
5640 + fragment@2 {
5641 + target = <&spidev1>;
5642 + __overlay__ {
5643 + status = "disabled";
5644 + };
5645 + };
5646 +
5647 + fragment@3 {
5648 + target = <&gpio>;
5649 + __overlay__ {
5650 + hy28a_pins: hy28a_pins {
5651 + brcm,pins = <17 25 18>;
5652 + brcm,function = <0 1 1>; /* in out out */
5653 + };
5654 + };
5655 + };
5656 +
5657 + fragment@4 {
5658 + target = <&spi0>;
5659 + __overlay__ {
5660 + /* needed to avoid dtc warning */
5661 + #address-cells = <1>;
5662 + #size-cells = <0>;
5663 +
5664 + hy28a: hy28a@0{
5665 + compatible = "ilitek,ili9320";
5666 + reg = <0>;
5667 + pinctrl-names = "default";
5668 + pinctrl-0 = <&hy28a_pins>;
5669 +
5670 + spi-max-frequency = <32000000>;
5671 + spi-cpol;
5672 + spi-cpha;
5673 + rotate = <270>;
5674 + bgr;
5675 + fps = <50>;
5676 + buswidth = <8>;
5677 + startbyte = <0x70>;
5678 + reset-gpios = <&gpio 25 0>;
5679 + led-gpios = <&gpio 18 1>;
5680 + debug = <0>;
5681 + };
5682 +
5683 + hy28a_ts: hy28a-ts@1 {
5684 + compatible = "ti,ads7846";
5685 + reg = <1>;
5686 +
5687 + spi-max-frequency = <2000000>;
5688 + interrupts = <17 2>; /* high-to-low edge triggered */
5689 + interrupt-parent = <&gpio>;
5690 + pendown-gpio = <&gpio 17 0>;
5691 + ti,x-plate-ohms = /bits/ 16 <100>;
5692 + ti,pressure-max = /bits/ 16 <255>;
5693 + };
5694 + };
5695 + };
5696 + __overrides__ {
5697 + speed = <&hy28a>,"spi-max-frequency:0";
5698 + rotate = <&hy28a>,"rotate:0";
5699 + fps = <&hy28a>,"fps:0";
5700 + debug = <&hy28a>,"debug:0";
5701 + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
5702 + resetgpio = <&hy28a>,"reset-gpios:4",
5703 + <&hy28a_pins>, "brcm,pins:1";
5704 + ledgpio = <&hy28a>,"led-gpios:4",
5705 + <&hy28a_pins>, "brcm,pins:2";
5706 + };
5707 +};
5708 --- /dev/null
5709 +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
5710 @@ -0,0 +1,148 @@
5711 +/*
5712 + * Device Tree overlay for HY28b display shield by Texy
5713 + *
5714 + */
5715 +
5716 +/dts-v1/;
5717 +/plugin/;
5718 +
5719 +/ {
5720 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
5721 +
5722 + fragment@0 {
5723 + target = <&spi0>;
5724 + __overlay__ {
5725 + status = "okay";
5726 + };
5727 + };
5728 +
5729 + fragment@1 {
5730 + target = <&spidev0>;
5731 + __overlay__ {
5732 + status = "disabled";
5733 + };
5734 + };
5735 +
5736 + fragment@2 {
5737 + target = <&spidev1>;
5738 + __overlay__ {
5739 + status = "disabled";
5740 + };
5741 + };
5742 +
5743 + fragment@3 {
5744 + target = <&gpio>;
5745 + __overlay__ {
5746 + hy28b_pins: hy28b_pins {
5747 + brcm,pins = <17 25 18>;
5748 + brcm,function = <0 1 1>; /* in out out */
5749 + };
5750 + };
5751 + };
5752 +
5753 + fragment@4 {
5754 + target = <&spi0>;
5755 + __overlay__ {
5756 + /* needed to avoid dtc warning */
5757 + #address-cells = <1>;
5758 + #size-cells = <0>;
5759 +
5760 + hy28b: hy28b@0{
5761 + compatible = "ilitek,ili9325";
5762 + reg = <0>;
5763 + pinctrl-names = "default";
5764 + pinctrl-0 = <&hy28b_pins>;
5765 +
5766 + spi-max-frequency = <48000000>;
5767 + spi-cpol;
5768 + spi-cpha;
5769 + rotate = <270>;
5770 + bgr;
5771 + fps = <50>;
5772 + buswidth = <8>;
5773 + startbyte = <0x70>;
5774 + reset-gpios = <&gpio 25 0>;
5775 + led-gpios = <&gpio 18 1>;
5776 +
5777 + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
5778 +
5779 + init = <0x10000e7 0x0010
5780 + 0x1000000 0x0001
5781 + 0x1000001 0x0100
5782 + 0x1000002 0x0700
5783 + 0x1000003 0x1030
5784 + 0x1000004 0x0000
5785 + 0x1000008 0x0207
5786 + 0x1000009 0x0000
5787 + 0x100000a 0x0000
5788 + 0x100000c 0x0001
5789 + 0x100000d 0x0000
5790 + 0x100000f 0x0000
5791 + 0x1000010 0x0000
5792 + 0x1000011 0x0007
5793 + 0x1000012 0x0000
5794 + 0x1000013 0x0000
5795 + 0x2000032
5796 + 0x1000010 0x1590
5797 + 0x1000011 0x0227
5798 + 0x2000032
5799 + 0x1000012 0x009c
5800 + 0x2000032
5801 + 0x1000013 0x1900
5802 + 0x1000029 0x0023
5803 + 0x100002b 0x000e
5804 + 0x2000032
5805 + 0x1000020 0x0000
5806 + 0x1000021 0x0000
5807 + 0x2000032
5808 + 0x1000050 0x0000
5809 + 0x1000051 0x00ef
5810 + 0x1000052 0x0000
5811 + 0x1000053 0x013f
5812 + 0x1000060 0xa700
5813 + 0x1000061 0x0001
5814 + 0x100006a 0x0000
5815 + 0x1000080 0x0000
5816 + 0x1000081 0x0000
5817 + 0x1000082 0x0000
5818 + 0x1000083 0x0000
5819 + 0x1000084 0x0000
5820 + 0x1000085 0x0000
5821 + 0x1000090 0x0010
5822 + 0x1000092 0x0000
5823 + 0x1000093 0x0003
5824 + 0x1000095 0x0110
5825 + 0x1000097 0x0000
5826 + 0x1000098 0x0000
5827 + 0x1000007 0x0133
5828 + 0x1000020 0x0000
5829 + 0x1000021 0x0000
5830 + 0x2000064>;
5831 + debug = <0>;
5832 + };
5833 +
5834 + hy28b_ts: hy28b-ts@1 {
5835 + compatible = "ti,ads7846";
5836 + reg = <1>;
5837 +
5838 + spi-max-frequency = <2000000>;
5839 + interrupts = <17 2>; /* high-to-low edge triggered */
5840 + interrupt-parent = <&gpio>;
5841 + pendown-gpio = <&gpio 17 0>;
5842 + ti,x-plate-ohms = /bits/ 16 <100>;
5843 + ti,pressure-max = /bits/ 16 <255>;
5844 + };
5845 + };
5846 + };
5847 + __overrides__ {
5848 + speed = <&hy28b>,"spi-max-frequency:0";
5849 + rotate = <&hy28b>,"rotate:0";
5850 + fps = <&hy28b>,"fps:0";
5851 + debug = <&hy28b>,"debug:0";
5852 + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
5853 + resetgpio = <&hy28b>,"reset-gpios:4",
5854 + <&hy28b_pins>, "brcm,pins:1";
5855 + ledgpio = <&hy28b>,"led-gpios:4",
5856 + <&hy28b_pins>, "brcm,pins:2";
5857 + };
5858 +};
5859 --- /dev/null
5860 +++ b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
5861 @@ -0,0 +1,13 @@
5862 +/dts-v1/;
5863 +/plugin/;
5864 +
5865 +/{
5866 + compatible = "brcm,bcm2708";
5867 +
5868 + fragment@0 {
5869 + target = <&i2c_arm>;
5870 + __overlay__ {
5871 + compatible = "brcm,bcm2708-i2c";
5872 + };
5873 + };
5874 +};
5875 --- /dev/null
5876 +++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
5877 @@ -0,0 +1,43 @@
5878 +// Overlay for i2c_gpio bitbanging host bus.
5879 +/dts-v1/;
5880 +/plugin/;
5881 +
5882 +/ {
5883 + compatible = "brcm,bcm2708";
5884 +
5885 + fragment@0 {
5886 + target-path = "/";
5887 + __overlay__ {
5888 + i2c_gpio: i2c@0 {
5889 + compatible = "i2c-gpio";
5890 + gpios = <&gpio 23 0 /* sda */
5891 + &gpio 24 0 /* scl */
5892 + >;
5893 + i2c-gpio,delay-us = <2>; /* ~100 kHz */
5894 + #address-cells = <1>;
5895 + #size-cells = <0>;
5896 + };
5897 + };
5898 + };
5899 +
5900 + fragment@1 {
5901 + target-path = "/aliases";
5902 + __overlay__ {
5903 + i2c_gpio = "/i2c@0";
5904 + };
5905 + };
5906 +
5907 + fragment@2 {
5908 + target-path = "/__symbols__";
5909 + __overlay__ {
5910 + i2c_gpio = "/i2c@0";
5911 + };
5912 + };
5913 +
5914 + __overrides__ {
5915 + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
5916 + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
5917 + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
5918 + };
5919 +};
5920 +
5921 --- /dev/null
5922 +++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
5923 @@ -0,0 +1,139 @@
5924 +// Umbrella I2C Mux overlay
5925 +
5926 +/dts-v1/;
5927 +/plugin/;
5928 +
5929 +/{
5930 + compatible = "brcm,bcm2708";
5931 +
5932 + fragment@0 {
5933 + target = <&i2c_arm>;
5934 + __dormant__ {
5935 + #address-cells = <1>;
5936 + #size-cells = <0>;
5937 + status = "okay";
5938 +
5939 + pca9542: mux@70 {
5940 + compatible = "nxp,pca9542";
5941 + reg = <0x70>;
5942 + #address-cells = <1>;
5943 + #size-cells = <0>;
5944 +
5945 + i2c@0 {
5946 + #address-cells = <1>;
5947 + #size-cells = <0>;
5948 + reg = <0>;
5949 + };
5950 + i2c@1 {
5951 + #address-cells = <1>;
5952 + #size-cells = <0>;
5953 + reg = <1>;
5954 + };
5955 + };
5956 + };
5957 + };
5958 +
5959 + fragment@1 {
5960 + target = <&i2c_arm>;
5961 + __dormant__ {
5962 + #address-cells = <1>;
5963 + #size-cells = <0>;
5964 + status = "okay";
5965 +
5966 + pca9545: mux@70 {
5967 + compatible = "nxp,pca9545";
5968 + reg = <0x70>;
5969 + #address-cells = <1>;
5970 + #size-cells = <0>;
5971 +
5972 + i2c@0 {
5973 + #address-cells = <1>;
5974 + #size-cells = <0>;
5975 + reg = <0>;
5976 + };
5977 + i2c@1 {
5978 + #address-cells = <1>;
5979 + #size-cells = <0>;
5980 + reg = <1>;
5981 + };
5982 + i2c@2 {
5983 + #address-cells = <1>;
5984 + #size-cells = <0>;
5985 + reg = <2>;
5986 + };
5987 + i2c@3 {
5988 + #address-cells = <1>;
5989 + #size-cells = <0>;
5990 + reg = <3>;
5991 + };
5992 + };
5993 + };
5994 + };
5995 +
5996 + fragment@2 {
5997 + target = <&i2c_arm>;
5998 + __dormant__ {
5999 + #address-cells = <1>;
6000 + #size-cells = <0>;
6001 + status = "okay";
6002 +
6003 + pca9548: mux@70 {
6004 + compatible = "nxp,pca9548";
6005 + reg = <0x70>;
6006 + #address-cells = <1>;
6007 + #size-cells = <0>;
6008 +
6009 + i2c@0 {
6010 + #address-cells = <1>;
6011 + #size-cells = <0>;
6012 + reg = <0>;
6013 + };
6014 + i2c@1 {
6015 + #address-cells = <1>;
6016 + #size-cells = <0>;
6017 + reg = <1>;
6018 + };
6019 + i2c@2 {
6020 + #address-cells = <1>;
6021 + #size-cells = <0>;
6022 + reg = <2>;
6023 + };
6024 + i2c@3 {
6025 + #address-cells = <1>;
6026 + #size-cells = <0>;
6027 + reg = <3>;
6028 + };
6029 + i2c@4 {
6030 + #address-cells = <1>;
6031 + #size-cells = <0>;
6032 + reg = <4>;
6033 + };
6034 + i2c@5 {
6035 + #address-cells = <1>;
6036 + #size-cells = <0>;
6037 + reg = <5>;
6038 + };
6039 + i2c@6 {
6040 + #address-cells = <1>;
6041 + #size-cells = <0>;
6042 + reg = <6>;
6043 + };
6044 + i2c@7 {
6045 + #address-cells = <1>;
6046 + #size-cells = <0>;
6047 + reg = <7>;
6048 + };
6049 + };
6050 + };
6051 + };
6052 +
6053 + __overrides__ {
6054 + pca9542 = <0>, "+0";
6055 + pca9545 = <0>, "+1";
6056 + pca9548 = <0>, "+2";
6057 +
6058 + addr = <&pca9542>,"reg:0",
6059 + <&pca9545>,"reg:0",
6060 + <&pca9548>,"reg:0";
6061 + };
6062 +};
6063 --- /dev/null
6064 +++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
6065 @@ -0,0 +1,26 @@
6066 +// Definitions for NXP PCA9685A I2C PWM controller on ARM I2C bus.
6067 +/dts-v1/;
6068 +/plugin/;
6069 +
6070 +/{
6071 + compatible = "brcm,bcm2708";
6072 +
6073 + fragment@0 {
6074 + target = <&i2c_arm>;
6075 + __overlay__ {
6076 + #address-cells = <1>;
6077 + #size-cells = <0>;
6078 + status = "okay";
6079 +
6080 + pca: pca@40 {
6081 + compatible = "nxp,pca9685";
6082 + #pwm-cells = <2>;
6083 + reg = <0x40>;
6084 + status = "okay";
6085 + };
6086 + };
6087 + };
6088 + __overrides__ {
6089 + addr = <&pca>,"reg:0";
6090 + };
6091 +};
6092 --- /dev/null
6093 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
6094 @@ -0,0 +1,183 @@
6095 +// Definitions for several I2C based Real Time Clocks
6096 +// Available through i2c-gpio
6097 +/dts-v1/;
6098 +/plugin/;
6099 +
6100 +/ {
6101 + compatible = "brcm,bcm2708";
6102 +
6103 + fragment@0 {
6104 + target-path = "/";
6105 + __overlay__ {
6106 + i2c_gpio: i2c-gpio-rtc@0 {
6107 + compatible = "i2c-gpio";
6108 + gpios = <&gpio 23 0 /* sda */
6109 + &gpio 24 0 /* scl */
6110 + >;
6111 + i2c-gpio,delay-us = <2>; /* ~100 kHz */
6112 + #address-cells = <1>;
6113 + #size-cells = <0>;
6114 + };
6115 + };
6116 + };
6117 +
6118 + fragment@1 {
6119 + target = <&i2c_gpio>;
6120 + __dormant__ {
6121 + #address-cells = <1>;
6122 + #size-cells = <0>;
6123 + status = "okay";
6124 +
6125 + abx80x: abx80x@69 {
6126 + compatible = "abracon,abx80x";
6127 + reg = <0x69>;
6128 + abracon,tc-diode = "standard";
6129 + abracon,tc-resistor = <0>;
6130 + status = "okay";
6131 + };
6132 + };
6133 + };
6134 +
6135 + fragment@2 {
6136 + target = <&i2c_gpio>;
6137 + __dormant__ {
6138 + #address-cells = <1>;
6139 + #size-cells = <0>;
6140 + status = "okay";
6141 +
6142 + ds1307: ds1307@68 {
6143 + compatible = "maxim,ds1307";
6144 + reg = <0x68>;
6145 + status = "okay";
6146 + };
6147 + };
6148 + };
6149 +
6150 + fragment@3 {
6151 + target = <&i2c_gpio>;
6152 + __dormant__ {
6153 + #address-cells = <1>;
6154 + #size-cells = <0>;
6155 + status = "okay";
6156 +
6157 + ds1339: ds1339@68 {
6158 + compatible = "dallas,ds1339";
6159 + trickle-resistor-ohms = <0>;
6160 + reg = <0x68>;
6161 + status = "okay";
6162 + };
6163 + };
6164 + };
6165 +
6166 + fragment@4 {
6167 + target = <&i2c_gpio>;
6168 + __dormant__ {
6169 + #address-cells = <1>;
6170 + #size-cells = <0>;
6171 + status = "okay";
6172 +
6173 + ds3231: ds3231@68 {
6174 + compatible = "maxim,ds3231";
6175 + reg = <0x68>;
6176 + status = "okay";
6177 + };
6178 + };
6179 + };
6180 +
6181 + fragment@5 {
6182 + target = <&i2c_gpio>;
6183 + __dormant__ {
6184 + #address-cells = <1>;
6185 + #size-cells = <0>;
6186 + status = "okay";
6187 +
6188 + mcp7940x: mcp7940x@6f {
6189 + compatible = "microchip,mcp7940x";
6190 + reg = <0x6f>;
6191 + status = "okay";
6192 + };
6193 + };
6194 + };
6195 +
6196 + fragment@6 {
6197 + target = <&i2c_gpio>;
6198 + __dormant__ {
6199 + #address-cells = <1>;
6200 + #size-cells = <0>;
6201 + status = "okay";
6202 +
6203 + mcp7941x: mcp7941x@6f {
6204 + compatible = "microchip,mcp7941x";
6205 + reg = <0x6f>;
6206 + status = "okay";
6207 + };
6208 + };
6209 + };
6210 +
6211 + fragment@7 {
6212 + target = <&i2c_gpio>;
6213 + __dormant__ {
6214 + #address-cells = <1>;
6215 + #size-cells = <0>;
6216 + status = "okay";
6217 +
6218 + pcf2127: pcf2127@51 {
6219 + compatible = "nxp,pcf2127";
6220 + reg = <0x51>;
6221 + status = "okay";
6222 + };
6223 + };
6224 + };
6225 +
6226 + fragment@8 {
6227 + target = <&i2c_gpio>;
6228 + __dormant__ {
6229 + #address-cells = <1>;
6230 + #size-cells = <0>;
6231 + status = "okay";
6232 +
6233 + pcf8523: pcf8523@68 {
6234 + compatible = "nxp,pcf8523";
6235 + reg = <0x68>;
6236 + status = "okay";
6237 + };
6238 + };
6239 + };
6240 +
6241 + fragment@9 {
6242 + target = <&i2c_gpio>;
6243 + __dormant__ {
6244 + #address-cells = <1>;
6245 + #size-cells = <0>;
6246 + status = "okay";
6247 +
6248 + pcf8563: pcf8563@51 {
6249 + compatible = "nxp,pcf8563";
6250 + reg = <0x51>;
6251 + status = "okay";
6252 + };
6253 + };
6254 + };
6255 +
6256 + __overrides__ {
6257 + abx80x = <0>,"+1";
6258 + ds1307 = <0>,"+2";
6259 + ds1339 = <0>,"+3";
6260 + ds3231 = <0>,"+4";
6261 + mcp7940x = <0>,"+5";
6262 + mcp7941x = <0>,"+6";
6263 + pcf2127 = <0>,"+7";
6264 + pcf8523 = <0>,"+8";
6265 + pcf8563 = <0>,"+9";
6266 + trickle-diode-type = <&abx80x>,"abracon,tc-diode";
6267 + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
6268 + <&abx80x>,"abracon,tc-resistor";
6269 + wakeup-source = <&ds1339>,"wakeup-source?",
6270 + <&ds3231>,"wakeup-source?",
6271 + <&mcp7940x>,"wakeup-source?",
6272 + <&mcp7941x>,"wakeup-source?";
6273 + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
6274 + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
6275 + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
6276 + };
6277 +};
6278 --- /dev/null
6279 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
6280 @@ -0,0 +1,181 @@
6281 +// Definitions for several I2C based Real Time Clocks
6282 +/dts-v1/;
6283 +/plugin/;
6284 +
6285 +/ {
6286 + compatible = "brcm,bcm2708";
6287 +
6288 + fragment@0 {
6289 + target = <&i2c_arm>;
6290 + __dormant__ {
6291 + #address-cells = <1>;
6292 + #size-cells = <0>;
6293 + status = "okay";
6294 +
6295 + abx80x: abx80x@69 {
6296 + compatible = "abracon,abx80x";
6297 + reg = <0x69>;
6298 + abracon,tc-diode = "standard";
6299 + abracon,tc-resistor = <0>;
6300 + status = "okay";
6301 + };
6302 + };
6303 + };
6304 +
6305 + fragment@1 {
6306 + target = <&i2c_arm>;
6307 + __dormant__ {
6308 + #address-cells = <1>;
6309 + #size-cells = <0>;
6310 + status = "okay";
6311 +
6312 + ds1307: ds1307@68 {
6313 + compatible = "maxim,ds1307";
6314 + reg = <0x68>;
6315 + status = "okay";
6316 + };
6317 + };
6318 + };
6319 +
6320 + fragment@2 {
6321 + target = <&i2c_arm>;
6322 + __dormant__ {
6323 + #address-cells = <1>;
6324 + #size-cells = <0>;
6325 + status = "okay";
6326 +
6327 + ds1339: ds1339@68 {
6328 + compatible = "dallas,ds1339";
6329 + trickle-resistor-ohms = <0>;
6330 + reg = <0x68>;
6331 + status = "okay";
6332 + };
6333 + };
6334 + };
6335 +
6336 + fragment@3 {
6337 + target = <&i2c_arm>;
6338 + __dormant__ {
6339 + #address-cells = <1>;
6340 + #size-cells = <0>;
6341 + status = "okay";
6342 +
6343 + ds3231: ds3231@68 {
6344 + compatible = "maxim,ds3231";
6345 + reg = <0x68>;
6346 + status = "okay";
6347 + };
6348 + };
6349 + };
6350 +
6351 + fragment@4 {
6352 + target = <&i2c_arm>;
6353 + __dormant__ {
6354 + #address-cells = <1>;
6355 + #size-cells = <0>;
6356 + status = "okay";
6357 +
6358 + mcp7940x: mcp7940x@6f {
6359 + compatible = "microchip,mcp7940x";
6360 + reg = <0x6f>;
6361 + status = "okay";
6362 + };
6363 + };
6364 + };
6365 +
6366 + fragment@5 {
6367 + target = <&i2c_arm>;
6368 + __dormant__ {
6369 + #address-cells = <1>;
6370 + #size-cells = <0>;
6371 + status = "okay";
6372 +
6373 + mcp7941x: mcp7941x@6f {
6374 + compatible = "microchip,mcp7941x";
6375 + reg = <0x6f>;
6376 + status = "okay";
6377 + };
6378 + };
6379 + };
6380 +
6381 + fragment@6 {
6382 + target = <&i2c_arm>;
6383 + __dormant__ {
6384 + #address-cells = <1>;
6385 + #size-cells = <0>;
6386 + status = "okay";
6387 +
6388 + pcf2127: pcf2127@51 {
6389 + compatible = "nxp,pcf2127";
6390 + reg = <0x51>;
6391 + status = "okay";
6392 + };
6393 + };
6394 + };
6395 +
6396 + fragment@7 {
6397 + target = <&i2c_arm>;
6398 + __dormant__ {
6399 + #address-cells = <1>;
6400 + #size-cells = <0>;
6401 + status = "okay";
6402 +
6403 + pcf8523: pcf8523@68 {
6404 + compatible = "nxp,pcf8523";
6405 + reg = <0x68>;
6406 + status = "okay";
6407 + };
6408 + };
6409 + };
6410 +
6411 + fragment@8 {
6412 + target = <&i2c_arm>;
6413 + __dormant__ {
6414 + #address-cells = <1>;
6415 + #size-cells = <0>;
6416 + status = "okay";
6417 +
6418 + pcf8563: pcf8563@51 {
6419 + compatible = "nxp,pcf8563";
6420 + reg = <0x51>;
6421 + status = "okay";
6422 + };
6423 + };
6424 + };
6425 +
6426 + fragment@9 {
6427 + target = <&i2c_arm>;
6428 + __dormant__ {
6429 + #address-cells = <1>;
6430 + #size-cells = <0>;
6431 + status = "okay";
6432 +
6433 + m41t62: m41t62@68 {
6434 + compatible = "st,m41t62";
6435 + reg = <0x68>;
6436 + status = "okay";
6437 + };
6438 + };
6439 + };
6440 +
6441 + __overrides__ {
6442 + abx80x = <0>,"+0";
6443 + ds1307 = <0>,"+1";
6444 + ds1339 = <0>,"+2";
6445 + ds3231 = <0>,"+3";
6446 + mcp7940x = <0>,"+4";
6447 + mcp7941x = <0>,"+5";
6448 + pcf2127 = <0>,"+6";
6449 + pcf8523 = <0>,"+7";
6450 + pcf8563 = <0>,"+8";
6451 + m41t62 = <0>,"+9";
6452 + trickle-diode-type = <&abx80x>,"abracon,tc-diode";
6453 + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
6454 + <&abx80x>,"abracon,tc-resistor";
6455 + wakeup-source = <&ds1339>,"wakeup-source?",
6456 + <&ds3231>,"wakeup-source?",
6457 + <&mcp7940x>,"wakeup-source?",
6458 + <&mcp7941x>,"wakeup-source?",
6459 + <&m41t62>,"wakeup-source?";
6460 + };
6461 +};
6462 --- /dev/null
6463 +++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
6464 @@ -0,0 +1,206 @@
6465 +// Definitions for I2C based sensors using the Industrial IO or HWMON interface.
6466 +/dts-v1/;
6467 +/plugin/;
6468 +
6469 +/ {
6470 + compatible = "brcm,bcm2708";
6471 +
6472 + fragment@0 {
6473 + target = <&i2c_arm>;
6474 + __dormant__ {
6475 + #address-cells = <1>;
6476 + #size-cells = <0>;
6477 + status = "okay";
6478 +
6479 + bme280: bme280@76 {
6480 + compatible = "bosch,bme280";
6481 + reg = <0x76>;
6482 + status = "okay";
6483 + };
6484 + };
6485 + };
6486 +
6487 + fragment@1 {
6488 + target = <&i2c_arm>;
6489 + __dormant__ {
6490 + #address-cells = <1>;
6491 + #size-cells = <0>;
6492 + status = "okay";
6493 +
6494 + bmp085: bmp085@77 {
6495 + compatible = "bosch,bmp085";
6496 + reg = <0x77>;
6497 + default-oversampling = <3>;
6498 + status = "okay";
6499 + };
6500 + };
6501 + };
6502 +
6503 + fragment@2 {
6504 + target = <&i2c_arm>;
6505 + __dormant__ {
6506 + #address-cells = <1>;
6507 + #size-cells = <0>;
6508 + status = "okay";
6509 +
6510 + bmp180: bmp180@77 {
6511 + compatible = "bosch,bmp180";
6512 + reg = <0x77>;
6513 + status = "okay";
6514 + };
6515 + };
6516 + };
6517 +
6518 + fragment@3 {
6519 + target = <&i2c_arm>;
6520 + __dormant__ {
6521 + #address-cells = <1>;
6522 + #size-cells = <0>;
6523 + status = "okay";
6524 +
6525 + bmp280: bmp280@76 {
6526 + compatible = "bosch,bmp280";
6527 + reg = <0x76>;
6528 + status = "okay";
6529 + };
6530 + };
6531 + };
6532 +
6533 + fragment@4 {
6534 + target = <&i2c_arm>;
6535 + __dormant__ {
6536 + #address-cells = <1>;
6537 + #size-cells = <0>;
6538 + status = "okay";
6539 +
6540 + htu21: htu21@40 {
6541 + compatible = "htu21";
6542 + reg = <0x40>;
6543 + status = "okay";
6544 + };
6545 + };
6546 + };
6547 +
6548 + fragment@5 {
6549 + target = <&i2c_arm>;
6550 + __dormant__ {
6551 + #address-cells = <1>;
6552 + #size-cells = <0>;
6553 + status = "okay";
6554 +
6555 + lm75: lm75@4f {
6556 + compatible = "lm75";
6557 + reg = <0x4f>;
6558 + status = "okay";
6559 + };
6560 + };
6561 + };
6562 +
6563 + fragment@6 {
6564 + target = <&i2c_arm>;
6565 + __dormant__ {
6566 + #address-cells = <1>;
6567 + #size-cells = <0>;
6568 + status = "okay";
6569 +
6570 + si7020: si7020@40 {
6571 + compatible = "si7020";
6572 + reg = <0x40>;
6573 + status = "okay";
6574 + };
6575 + };
6576 + };
6577 +
6578 + fragment@7 {
6579 + target = <&i2c_arm>;
6580 + __dormant__ {
6581 + #address-cells = <1>;
6582 + #size-cells = <0>;
6583 + status = "okay";
6584 +
6585 + tmp102: tmp102@48 {
6586 + compatible = "ti,tmp102";
6587 + reg = <0x48>;
6588 + status = "okay";
6589 + };
6590 + };
6591 + };
6592 +
6593 + fragment@8 {
6594 + target = <&i2c_arm>;
6595 + __dormant__ {
6596 + #address-cells = <1>;
6597 + #size-cells = <0>;
6598 + status = "okay";
6599 +
6600 + hdc100x: hdc100x@40 {
6601 + compatible = "hdc100x";
6602 + reg = <0x40>;
6603 + status = "okay";
6604 + };
6605 + };
6606 + };
6607 +
6608 + fragment@9 {
6609 + target = <&i2c_arm>;
6610 + __dormant__ {
6611 + #address-cells = <1>;
6612 + #size-cells = <0>;
6613 + status = "okay";
6614 +
6615 + tsl4531: tsl4531@29 {
6616 + compatible = "tsl4531";
6617 + reg = <0x29>;
6618 + status = "okay";
6619 + };
6620 + };
6621 + };
6622 +
6623 + fragment@10 {
6624 + target = <&i2c_arm>;
6625 + __dormant__ {
6626 + #address-cells = <1>;
6627 + #size-cells = <0>;
6628 + status = "okay";
6629 +
6630 + veml6070: veml6070@38 {
6631 + compatible = "veml6070";
6632 + reg = <0x38>;
6633 + status = "okay";
6634 + };
6635 + };
6636 + };
6637 +
6638 + fragment@11 {
6639 + target = <&i2c_arm>;
6640 + __dormant__ {
6641 + #address-cells = <1>;
6642 + #size-cells = <0>;
6643 + status = "okay";
6644 +
6645 + sht3x: sht3x@44 {
6646 + compatible = "sht3x";
6647 + reg = <0x44>;
6648 + status = "okay";
6649 + };
6650 + };
6651 + };
6652 +
6653 + __overrides__ {
6654 + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0",
6655 + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0";
6656 + bme280 = <0>,"+0";
6657 + bmp085 = <0>,"+1";
6658 + bmp180 = <0>,"+2";
6659 + bmp280 = <0>,"+3";
6660 + htu21 = <0>,"+4";
6661 + lm75 = <0>,"+5";
6662 + lm75addr = <&lm75>,"reg:0";
6663 + si7020 = <0>,"+6";
6664 + tmp102 = <0>,"+7";
6665 + hdc100x = <0>,"+8";
6666 + tsl4531 = <0>,"+9";
6667 + veml6070 = <0>,"+10";
6668 + sht3x = <0>,"+11";
6669 + };
6670 +};
6671 --- /dev/null
6672 +++ b/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
6673 @@ -0,0 +1,61 @@
6674 +/*
6675 + * Device tree overlay for i2c_bcm2708, i2c0 bus
6676 + *
6677 + * Compile:
6678 + * dtc -@ -I dts -O dtb -o i2c0-bcm2708-overlay.dtb i2c0-bcm2708-overlay.dts
6679 + */
6680 +
6681 +/dts-v1/;
6682 +/plugin/;
6683 +
6684 +/{
6685 + compatible = "brcm,bcm2708";
6686 +
6687 + fragment@0 {
6688 + target = <&i2c0>;
6689 + __overlay__ {
6690 + status = "okay";
6691 + };
6692 + };
6693 +
6694 + fragment@1 {
6695 + target = <&i2c0_pins>;
6696 + frag1: __overlay__ {
6697 + brcm,pins = <0 1>;
6698 + brcm,function = <4>; /* alt0 */
6699 + };
6700 + };
6701 +
6702 + fragment@2 {
6703 + target = <&i2c0_pins>;
6704 + __dormant__ {
6705 + brcm,pins = <28 29>;
6706 + brcm,function = <4>; /* alt0 */
6707 + };
6708 + };
6709 +
6710 + fragment@3 {
6711 + target = <&i2c0_pins>;
6712 + __dormant__ {
6713 + brcm,pins = <44 45>;
6714 + brcm,function = <5>; /* alt1 */
6715 + };
6716 + };
6717 +
6718 + fragment@4 {
6719 + target = <&i2c0_pins>;
6720 + __dormant__ {
6721 + brcm,pins = <46 47>;
6722 + brcm,function = <4>; /* alt0 */
6723 + };
6724 + };
6725 +
6726 + __overrides__ {
6727 + sda0_pin = <&frag1>,"brcm,pins:0";
6728 + scl0_pin = <&frag1>,"brcm,pins:4";
6729 + pins_0_1 = <0>,"+1-2-3-4";
6730 + pins_28_29 = <0>,"-1+2-3-4";
6731 + pins_44_45 = <0>,"-1-2+3-4";
6732 + pins_46_47 = <0>,"-1-2-3+4";
6733 + };
6734 +};
6735 --- /dev/null
6736 +++ b/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
6737 @@ -0,0 +1,34 @@
6738 +/*
6739 + * Device tree overlay for i2c_bcm2708, i2c1 bus
6740 + *
6741 + * Compile:
6742 + * dtc -@ -I dts -O dtb -o i2c1-bcm2708-overlay.dtb i2c1-bcm2708-overlay.dts
6743 + */
6744 +
6745 +/dts-v1/;
6746 +/plugin/;
6747 +
6748 +/{
6749 + compatible = "brcm,bcm2708";
6750 +
6751 + fragment@0 {
6752 + target = <&i2c1>;
6753 + __overlay__ {
6754 + pinctrl-0 = <&i2c1_pins>;
6755 + status = "okay";
6756 + };
6757 + };
6758 +
6759 + fragment@1 {
6760 + target = <&i2c1_pins>;
6761 + pins: __overlay__ {
6762 + brcm,pins = <2 3>;
6763 + brcm,function = <4>; /* alt 0 */
6764 + };
6765 + };
6766 + __overrides__ {
6767 + sda1_pin = <&pins>,"brcm,pins:0";
6768 + scl1_pin = <&pins>,"brcm,pins:4";
6769 + pin_func = <&pins>,"brcm,function:0";
6770 + };
6771 +};
6772 --- /dev/null
6773 +++ b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
6774 @@ -0,0 +1,18 @@
6775 +/*
6776 + * Device tree overlay to move i2s to gpio 28 to 31 on CM
6777 + */
6778 +
6779 +/dts-v1/;
6780 +/plugin/;
6781 +
6782 +/ {
6783 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
6784 +
6785 + fragment@0 {
6786 + target = <&i2s_pins>;
6787 + __overlay__ {
6788 + brcm,pins = <28 29 30 31>;
6789 + brcm,function = <6>; /* alt2 */
6790 + };
6791 + };
6792 +};
6793 --- /dev/null
6794 +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
6795 @@ -0,0 +1,46 @@
6796 +// Definitions for IQaudIO DAC
6797 +/dts-v1/;
6798 +/plugin/;
6799 +
6800 +/ {
6801 + compatible = "brcm,bcm2708";
6802 +
6803 + fragment@0 {
6804 + target = <&i2s>;
6805 + __overlay__ {
6806 + status = "okay";
6807 + };
6808 + };
6809 +
6810 + fragment@1 {
6811 + target = <&i2c1>;
6812 + __overlay__ {
6813 + #address-cells = <1>;
6814 + #size-cells = <0>;
6815 + status = "okay";
6816 +
6817 + pcm5122@4c {
6818 + #sound-dai-cells = <0>;
6819 + compatible = "ti,pcm5122";
6820 + reg = <0x4c>;
6821 + AVDD-supply = <&vdd_3v3_reg>;
6822 + DVDD-supply = <&vdd_3v3_reg>;
6823 + CPVDD-supply = <&vdd_3v3_reg>;
6824 + status = "okay";
6825 + };
6826 + };
6827 + };
6828 +
6829 + fragment@2 {
6830 + target = <&sound>;
6831 + frag2: __overlay__ {
6832 + compatible = "iqaudio,iqaudio-dac";
6833 + i2s-controller = <&i2s>;
6834 + status = "okay";
6835 + };
6836 + };
6837 +
6838 + __overrides__ {
6839 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
6840 + };
6841 +};
6842 --- /dev/null
6843 +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
6844 @@ -0,0 +1,49 @@
6845 +// Definitions for IQaudIO DAC+
6846 +/dts-v1/;
6847 +/plugin/;
6848 +
6849 +/ {
6850 + compatible = "brcm,bcm2708";
6851 +
6852 + fragment@0 {
6853 + target = <&i2s>;
6854 + __overlay__ {
6855 + status = "okay";
6856 + };
6857 + };
6858 +
6859 + fragment@1 {
6860 + target = <&i2c1>;
6861 + __overlay__ {
6862 + #address-cells = <1>;
6863 + #size-cells = <0>;
6864 + status = "okay";
6865 +
6866 + pcm5122@4c {
6867 + #sound-dai-cells = <0>;
6868 + compatible = "ti,pcm5122";
6869 + reg = <0x4c>;
6870 + AVDD-supply = <&vdd_3v3_reg>;
6871 + DVDD-supply = <&vdd_3v3_reg>;
6872 + CPVDD-supply = <&vdd_3v3_reg>;
6873 + status = "okay";
6874 + };
6875 + };
6876 + };
6877 +
6878 + fragment@2 {
6879 + target = <&sound>;
6880 + iqaudio_dac: __overlay__ {
6881 + compatible = "iqaudio,iqaudio-dac";
6882 + i2s-controller = <&i2s>;
6883 + mute-gpios = <&gpio 22 0>;
6884 + status = "okay";
6885 + };
6886 + };
6887 +
6888 + __overrides__ {
6889 + 24db_digital_gain = <&iqaudio_dac>,"iqaudio,24db_digital_gain?";
6890 + auto_mute_amp = <&iqaudio_dac>,"iqaudio-dac,auto-mute-amp?";
6891 + unmute_amp = <&iqaudio_dac>,"iqaudio-dac,unmute-amp?";
6892 + };
6893 +};
6894 --- /dev/null
6895 +++ b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
6896 @@ -0,0 +1,47 @@
6897 +// Definitions for IQAudIO Digi WM8804 audio board
6898 +/dts-v1/;
6899 +/plugin/;
6900 +
6901 +/ {
6902 + compatible = "brcm,bcm2708";
6903 +
6904 + fragment@0 {
6905 + target = <&i2s>;
6906 + __overlay__ {
6907 + status = "okay";
6908 + };
6909 + };
6910 +
6911 + fragment@1 {
6912 + target = <&i2c1>;
6913 + __overlay__ {
6914 + #address-cells = <1>;
6915 + #size-cells = <0>;
6916 + status = "okay";
6917 +
6918 + wm8804@3b {
6919 + #sound-dai-cells = <0>;
6920 + compatible = "wlf,wm8804";
6921 + reg = <0x3b>;
6922 + status = "okay";
6923 + DVDD-supply = <&vdd_3v3_reg>;
6924 + PVDD-supply = <&vdd_3v3_reg>;
6925 + };
6926 + };
6927 + };
6928 +
6929 + fragment@2 {
6930 + target = <&sound>;
6931 + wm8804_digi: __overlay__ {
6932 + compatible = "iqaudio,wm8804-digi";
6933 + i2s-controller = <&i2s>;
6934 + status = "okay";
6935 + };
6936 + };
6937 +
6938 + __overrides__ {
6939 + card_name = <&wm8804_digi>,"wm8804-digi,card-name";
6940 + dai_name = <&wm8804_digi>,"wm8804-digi,dai-name";
6941 + dai_stream_name = <&wm8804_digi>,"wm8804-digi,dai-stream-name";
6942 + };
6943 +};
6944 --- /dev/null
6945 +++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
6946 @@ -0,0 +1,46 @@
6947 +// Definitions for JustBoom DAC
6948 +/dts-v1/;
6949 +/plugin/;
6950 +
6951 +/ {
6952 + compatible = "brcm,bcm2708";
6953 +
6954 + fragment@0 {
6955 + target = <&i2s>;
6956 + __overlay__ {
6957 + status = "okay";
6958 + };
6959 + };
6960 +
6961 + fragment@1 {
6962 + target = <&i2c1>;
6963 + __overlay__ {
6964 + #address-cells = <1>;
6965 + #size-cells = <0>;
6966 + status = "okay";
6967 +
6968 + pcm5122@4d {
6969 + #sound-dai-cells = <0>;
6970 + compatible = "ti,pcm5122";
6971 + reg = <0x4d>;
6972 + AVDD-supply = <&vdd_3v3_reg>;
6973 + DVDD-supply = <&vdd_3v3_reg>;
6974 + CPVDD-supply = <&vdd_3v3_reg>;
6975 + status = "okay";
6976 + };
6977 + };
6978 + };
6979 +
6980 + fragment@2 {
6981 + target = <&sound>;
6982 + frag2: __overlay__ {
6983 + compatible = "justboom,justboom-dac";
6984 + i2s-controller = <&i2s>;
6985 + status = "okay";
6986 + };
6987 + };
6988 +
6989 + __overrides__ {
6990 + 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
6991 + };
6992 +};
6993 --- /dev/null
6994 +++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
6995 @@ -0,0 +1,41 @@
6996 +// Definitions for JustBoom Digi
6997 +/dts-v1/;
6998 +/plugin/;
6999 +
7000 +/ {
7001 + compatible = "brcm,bcm2708";
7002 +
7003 + fragment@0 {
7004 + target = <&i2s>;
7005 + __overlay__ {
7006 + status = "okay";
7007 + };
7008 + };
7009 +
7010 + fragment@1 {
7011 + target = <&i2c1>;
7012 + __overlay__ {
7013 + #address-cells = <1>;
7014 + #size-cells = <0>;
7015 + status = "okay";
7016 +
7017 + wm8804@3b {
7018 + #sound-dai-cells = <0>;
7019 + compatible = "wlf,wm8804";
7020 + reg = <0x3b>;
7021 + PVDD-supply = <&vdd_3v3_reg>;
7022 + DVDD-supply = <&vdd_3v3_reg>;
7023 + status = "okay";
7024 + };
7025 + };
7026 + };
7027 +
7028 + fragment@2 {
7029 + target = <&sound>;
7030 + __overlay__ {
7031 + compatible = "justboom,justboom-digi";
7032 + i2s-controller = <&i2s>;
7033 + status = "okay";
7034 + };
7035 + };
7036 +};
7037 --- /dev/null
7038 +++ b/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
7039 @@ -0,0 +1,57 @@
7040 +// Definitions for lirc-rpi module
7041 +/dts-v1/;
7042 +/plugin/;
7043 +
7044 +/ {
7045 + compatible = "brcm,bcm2708";
7046 +
7047 + fragment@0 {
7048 + target-path = "/";
7049 + __overlay__ {
7050 + lirc_rpi: lirc_rpi {
7051 + compatible = "rpi,lirc-rpi";
7052 + pinctrl-names = "default";
7053 + pinctrl-0 = <&lirc_pins>;
7054 + status = "okay";
7055 +
7056 + // Override autodetection of IR receiver circuit
7057 + // (0 = active high, 1 = active low, -1 = no override )
7058 + rpi,sense = <0xffffffff>;
7059 +
7060 + // Software carrier
7061 + // (0 = off, 1 = on)
7062 + rpi,softcarrier = <1>;
7063 +
7064 + // Invert output
7065 + // (0 = off, 1 = on)
7066 + rpi,invert = <0>;
7067 +
7068 + // Enable debugging messages
7069 + // (0 = off, 1 = on)
7070 + rpi,debug = <0>;
7071 + };
7072 + };
7073 + };
7074 +
7075 + fragment@1 {
7076 + target = <&gpio>;
7077 + __overlay__ {
7078 + lirc_pins: lirc_pins {
7079 + brcm,pins = <17 18>;
7080 + brcm,function = <1 0>; // out in
7081 + brcm,pull = <0 1>; // off down
7082 + };
7083 + };
7084 + };
7085 +
7086 + __overrides__ {
7087 + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
7088 + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
7089 + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
7090 +
7091 + sense = <&lirc_rpi>,"rpi,sense:0";
7092 + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
7093 + invert = <&lirc_rpi>,"rpi,invert:0";
7094 + debug = <&lirc_rpi>,"rpi,debug:0";
7095 + };
7096 +};
7097 --- /dev/null
7098 +++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
7099 @@ -0,0 +1,54 @@
7100 +// Definitions for MCP23017 Gpio Extender from Microchip Semiconductor
7101 +
7102 +/dts-v1/;
7103 +/plugin/;
7104 +
7105 +/ {
7106 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7107 +
7108 + fragment@0 {
7109 + target = <&i2c1>;
7110 + __overlay__ {
7111 + status = "okay";
7112 + };
7113 + };
7114 +
7115 + fragment@1 {
7116 + target = <&gpio>;
7117 + __overlay__ {
7118 + mcp23017_pins: mcp23017_pins {
7119 + brcm,pins = <4>;
7120 + brcm,function = <0>;
7121 + };
7122 + };
7123 + };
7124 +
7125 + fragment@2 {
7126 + target = <&i2c1>;
7127 + __overlay__ {
7128 + #address-cells = <1>;
7129 + #size-cells = <0>;
7130 +
7131 + mcp23017: mcp@20 {
7132 + compatible = "microchip,mcp23017";
7133 + reg = <0x20>;
7134 + gpio-controller;
7135 + #gpio-cells = <2>;
7136 + #interrupt-cells=<2>;
7137 + interrupt-parent = <&gpio>;
7138 + interrupts = <4 2>;
7139 + interrupt-controller;
7140 + microchip,irq-mirror;
7141 +
7142 + status = "okay";
7143 + };
7144 + };
7145 + };
7146 +
7147 + __overrides__ {
7148 + gpiopin = <&mcp23017_pins>,"brcm,pins:0",
7149 + <&mcp23017>,"interrupts:0";
7150 + addr = <&mcp23017>,"reg:0";
7151 + };
7152 +};
7153 +
7154 --- /dev/null
7155 +++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
7156 @@ -0,0 +1,732 @@
7157 +// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor
7158 +
7159 +// dtparams:
7160 +// s08-spi<n>-<m>-present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI<n>, CS#<m>.
7161 +// s17-spi<n>-<m>-present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI<n>, CS#<m>.
7162 +// 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.
7163 +// 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.
7164 +//
7165 +// 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.
7166 +// 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#.
7167 +//
7168 +// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25:
7169 +// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25
7170 +//
7171 +// 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:
7172 +// dtoverlay=spi1-2cs
7173 +// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131
7174 +
7175 +/dts-v1/;
7176 +/plugin/;
7177 +
7178 +/ {
7179 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
7180 +
7181 + // disable spi-dev on spi0.0
7182 + fragment@0 {
7183 + target = <&spidev0>;
7184 + __dormant__ {
7185 + status = "disabled";
7186 + };
7187 + };
7188 +
7189 + // disable spi-dev on spi0.1
7190 + fragment@1 {
7191 + target = <&spidev1>;
7192 + __dormant__ {
7193 + status = "disabled";
7194 + };
7195 + };
7196 +
7197 + // disable spi-dev on spi1.0
7198 + fragment@2 {
7199 + target-path = "spi1/spidev@0";
7200 + __dormant__ {
7201 + status = "disabled";
7202 + };
7203 + };
7204 +
7205 + // disable spi-dev on spi1.1
7206 + fragment@3 {
7207 + target-path = "spi1/spidev@1";
7208 + __dormant__ {
7209 + status = "disabled";
7210 + };
7211 + };
7212 +
7213 + // disable spi-dev on spi1.2
7214 + fragment@4 {
7215 + target-path = "spi1/spidev@2";
7216 + __dormant__ {
7217 + status = "disabled";
7218 + };
7219 + };
7220 +
7221 + // disable spi-dev on spi2.0
7222 + fragment@5 {
7223 + target-path = "spi2/spidev@0";
7224 + __dormant__ {
7225 + status = "disabled";
7226 + };
7227 + };
7228 +
7229 + // disable spi-dev on spi2.1
7230 + fragment@6 {
7231 + target-path = "spi2/spidev@1";
7232 + __dormant__ {
7233 + status = "disabled";
7234 + };
7235 + };
7236 +
7237 + // disable spi-dev on spi2.2
7238 + fragment@7 {
7239 + target-path = "spi2/spidev@2";
7240 + __dormant__ {
7241 + status = "disabled";
7242 + };
7243 + };
7244 +
7245 + // enable one or more mcp23s08s on spi0.0
7246 + fragment@8 {
7247 + target = <&spi0>;
7248 + __dormant__ {
7249 + status = "okay";
7250 + #address-cells = <1>;
7251 + #size-cells = <0>;
7252 + mcp23s08_00: mcp23s08@0 {
7253 + compatible = "microchip,mcp23s08";
7254 + gpio-controller;
7255 + #gpio-cells = <2>;
7256 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */
7257 + reg = <0>;
7258 + spi-max-frequency = <500000>;
7259 + status = "okay";
7260 + #interrupt-cells=<2>;
7261 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */
7262 + };
7263 + };
7264 + };
7265 +
7266 + // enable one or more mcp23s08s on spi0.1
7267 + fragment@9 {
7268 + target = <&spi0>;
7269 + __dormant__ {
7270 + status = "okay";
7271 + #address-cells = <1>;
7272 + #size-cells = <0>;
7273 + mcp23s08_01: mcp23s08@1 {
7274 + compatible = "microchip,mcp23s08";
7275 + gpio-controller;
7276 + #gpio-cells = <2>;
7277 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */
7278 + reg = <1>;
7279 + spi-max-frequency = <500000>;
7280 + status = "okay";
7281 + #interrupt-cells=<2>;
7282 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */
7283 + };
7284 + };
7285 + };
7286 +
7287 + // enable one or more mcp23s08s on spi1.0
7288 + fragment@10 {
7289 + target = <&spi1>;
7290 + __dormant__ {
7291 + status = "okay";
7292 + #address-cells = <1>;
7293 + #size-cells = <0>;
7294 + mcp23s08_10: mcp23s08@0 {
7295 + compatible = "microchip,mcp23s08";
7296 + gpio-controller;
7297 + #gpio-cells = <2>;
7298 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */
7299 + reg = <0>;
7300 + spi-max-frequency = <500000>;
7301 + status = "okay";
7302 + #interrupt-cells=<2>;
7303 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */
7304 + };
7305 + };
7306 + };
7307 +
7308 + // enable one or more mcp23s08s on spi1.1
7309 + fragment@11 {
7310 + target = <&spi1>;
7311 + __dormant__ {
7312 + status = "okay";
7313 + #address-cells = <1>;
7314 + #size-cells = <0>;
7315 + mcp23s08_11: mcp23s08@1 {
7316 + compatible = "microchip,mcp23s08";
7317 + gpio-controller;
7318 + #gpio-cells = <2>;
7319 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */
7320 + reg = <1>;
7321 + spi-max-frequency = <500000>;
7322 + status = "okay";
7323 + #interrupt-cells=<2>;
7324 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */
7325 + };
7326 + };
7327 + };
7328 +
7329 + // enable one or more mcp23s08s on spi1.2
7330 + fragment@12 {
7331 + target = <&spi1>;
7332 + __dormant__ {
7333 + status = "okay";
7334 + #address-cells = <1>;
7335 + #size-cells = <0>;
7336 + mcp23s08_12: mcp23s08@2 {
7337 + compatible = "microchip,mcp23s08";
7338 + gpio-controller;
7339 + #gpio-cells = <2>;
7340 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */
7341 + reg = <2>;
7342 + spi-max-frequency = <500000>;
7343 + status = "okay";
7344 + #interrupt-cells=<2>;
7345 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */
7346 + };
7347 + };
7348 + };
7349 +
7350 + // enable one or more mcp23s08s on spi2.0
7351 + fragment@13 {
7352 + target = <&spi2>;
7353 + __dormant__ {
7354 + status = "okay";
7355 + #address-cells = <1>;
7356 + #size-cells = <0>;
7357 + mcp23s08_20: mcp23s08@0 {
7358 + compatible = "microchip,mcp23s08";
7359 + gpio-controller;
7360 + #gpio-cells = <2>;
7361 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */
7362 + reg = <0>;
7363 + spi-max-frequency = <500000>;
7364 + status = "okay";
7365 + #interrupt-cells=<2>;
7366 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */
7367 + };
7368 + };
7369 + };
7370 +
7371 + // enable one or more mcp23s08s on spi2.1
7372 + fragment@14 {
7373 + target = <&spi2>;
7374 + __dormant__ {
7375 + status = "okay";
7376 + #address-cells = <1>;
7377 + #size-cells = <0>;
7378 + mcp23s08_21: mcp23s08@1 {
7379 + compatible = "microchip,mcp23s08";
7380 + gpio-controller;
7381 + #gpio-cells = <2>;
7382 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */
7383 + reg = <1>;
7384 + spi-max-frequency = <500000>;
7385 + status = "okay";
7386 + #interrupt-cells=<2>;
7387 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */
7388 + };
7389 + };
7390 + };
7391 +
7392 + // enable one or more mcp23s08s on spi2.2
7393 + fragment@15 {
7394 + target = <&spi2>;
7395 + __dormant__ {
7396 + status = "okay";
7397 + #address-cells = <1>;
7398 + #size-cells = <0>;
7399 + mcp23s08_22: mcp23s08@2 {
7400 + compatible = "microchip,mcp23s08";
7401 + gpio-controller;
7402 + #gpio-cells = <2>;
7403 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */
7404 + reg = <2>;
7405 + spi-max-frequency = <500000>;
7406 + status = "okay";
7407 + #interrupt-cells=<2>;
7408 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */
7409 + };
7410 + };
7411 + };
7412 +
7413 + // enable one or more mcp23s17s on spi0.0
7414 + fragment@16 {
7415 + target = <&spi0>;
7416 + __dormant__ {
7417 + status = "okay";
7418 + #address-cells = <1>;
7419 + #size-cells = <0>;
7420 + mcp23s17_00: mcp23s17@0 {
7421 + compatible = "microchip,mcp23s17";
7422 + gpio-controller;
7423 + #gpio-cells = <2>;
7424 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */
7425 + reg = <0>;
7426 + spi-max-frequency = <500000>;
7427 + status = "okay";
7428 + #interrupt-cells=<2>;
7429 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */
7430 + };
7431 + };
7432 + };
7433 +
7434 + // enable one or more mcp23s17s on spi0.1
7435 + fragment@17 {
7436 + target = <&spi0>;
7437 + __dormant__ {
7438 + status = "okay";
7439 + #address-cells = <1>;
7440 + #size-cells = <0>;
7441 + mcp23s17_01: mcp23s17@1 {
7442 + compatible = "microchip,mcp23s17";
7443 + gpio-controller;
7444 + #gpio-cells = <2>;
7445 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */
7446 + reg = <1>;
7447 + spi-max-frequency = <500000>;
7448 + status = "okay";
7449 + #interrupt-cells=<2>;
7450 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */
7451 + };
7452 + };
7453 + };
7454 +
7455 + // enable one or more mcp23s17s on spi1.0
7456 + fragment@18 {
7457 + target = <&spi1>;
7458 + __dormant__ {
7459 + status = "okay";
7460 + #address-cells = <1>;
7461 + #size-cells = <0>;
7462 + mcp23s17_10: mcp23s17@0 {
7463 + compatible = "microchip,mcp23s17";
7464 + gpio-controller;
7465 + #gpio-cells = <2>;
7466 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */
7467 + reg = <0>;
7468 + spi-max-frequency = <500000>;
7469 + status = "okay";
7470 + #interrupt-cells=<2>;
7471 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */
7472 + };
7473 + };
7474 + };
7475 +
7476 + // enable one or more mcp23s17s on spi1.1
7477 + fragment@19 {
7478 + target = <&spi1>;
7479 + __dormant__ {
7480 + status = "okay";
7481 + #address-cells = <1>;
7482 + #size-cells = <0>;
7483 + mcp23s17_11: mcp23s17@1 {
7484 + compatible = "microchip,mcp23s17";
7485 + gpio-controller;
7486 + #gpio-cells = <2>;
7487 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */
7488 + reg = <1>;
7489 + spi-max-frequency = <500000>;
7490 + status = "okay";
7491 + #interrupt-cells=<2>;
7492 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */
7493 + };
7494 + };
7495 + };
7496 +
7497 + // enable one or more mcp23s17s on spi1.2
7498 + fragment@20 {
7499 + target = <&spi1>;
7500 + __dormant__ {
7501 + status = "okay";
7502 + #address-cells = <1>;
7503 + #size-cells = <0>;
7504 + mcp23s17_12: mcp23s17@2 {
7505 + compatible = "microchip,mcp23s17";
7506 + gpio-controller;
7507 + #gpio-cells = <2>;
7508 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */
7509 + reg = <2>;
7510 + spi-max-frequency = <500000>;
7511 + status = "okay";
7512 + #interrupt-cells=<2>;
7513 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */
7514 + };
7515 + };
7516 + };
7517 +
7518 + // enable one or more mcp23s17s on spi2.0
7519 + fragment@21 {
7520 + target = <&spi2>;
7521 + __dormant__ {
7522 + status = "okay";
7523 + #address-cells = <1>;
7524 + #size-cells = <0>;
7525 + mcp23s17_20: mcp23s17@0 {
7526 + compatible = "microchip,mcp23s17";
7527 + gpio-controller;
7528 + #gpio-cells = <2>;
7529 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */
7530 + reg = <0>;
7531 + spi-max-frequency = <500000>;
7532 + status = "okay";
7533 + #interrupt-cells=<2>;
7534 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */
7535 + };
7536 + };
7537 + };
7538 +
7539 + // enable one or more mcp23s17s on spi2.1
7540 + fragment@22 {
7541 + target = <&spi2>;
7542 + __dormant__ {
7543 + status = "okay";
7544 + #address-cells = <1>;
7545 + #size-cells = <0>;
7546 + mcp23s17_21: mcp23s17@1 {
7547 + compatible = "microchip,mcp23s17";
7548 + gpio-controller;
7549 + #gpio-cells = <2>;
7550 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */
7551 + reg = <1>;
7552 + spi-max-frequency = <500000>;
7553 + status = "okay";
7554 + #interrupt-cells=<2>;
7555 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */
7556 + };
7557 + };
7558 + };
7559 +
7560 + // enable one or more mcp23s17s on spi2.2
7561 + fragment@23 {
7562 + target = <&spi2>;
7563 + __dormant__ {
7564 + status = "okay";
7565 + #address-cells = <1>;
7566 + #size-cells = <0>;
7567 + mcp23s17_22: mcp23s17@2 {
7568 + compatible = "microchip,mcp23s17";
7569 + gpio-controller;
7570 + #gpio-cells = <2>;
7571 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */
7572 + reg = <2>;
7573 + spi-max-frequency = <500000>;
7574 + status = "okay";
7575 + #interrupt-cells=<2>;
7576 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */
7577 + };
7578 + };
7579 + };
7580 +
7581 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down
7582 + fragment@24 {
7583 + target = <&gpio>;
7584 + __dormant__ {
7585 + spi0_0_int_pins: spi0_0_int_pins {
7586 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */
7587 + brcm,function = <0>;
7588 + brcm,pull = <0>;
7589 + };
7590 + };
7591 + };
7592 +
7593 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down
7594 + fragment@25 {
7595 + target = <&gpio>;
7596 + __dormant__ {
7597 + spi0_1_int_pins: spi0_1_int_pins {
7598 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */
7599 + brcm,function = <0>;
7600 + brcm,pull = <0>;
7601 + };
7602 + };
7603 + };
7604 +
7605 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down
7606 + fragment@26 {
7607 + target = <&gpio>;
7608 + __dormant__ {
7609 + spi1_0_int_pins: spi1_0_int_pins {
7610 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */
7611 + brcm,function = <0>;
7612 + brcm,pull = <0>;
7613 + };
7614 + };
7615 + };
7616 +
7617 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down
7618 + fragment@27 {
7619 + target = <&gpio>;
7620 + __dormant__ {
7621 + spi1_1_int_pins: spi1_1_int_pins {
7622 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */
7623 + brcm,function = <0>;
7624 + brcm,pull = <0>;
7625 + };
7626 + };
7627 + };
7628 +
7629 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down
7630 + fragment@28 {
7631 + target = <&gpio>;
7632 + __dormant__ {
7633 + spi1_2_int_pins: spi1_2_int_pins {
7634 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */
7635 + brcm,function = <0>;
7636 + brcm,pull = <0>;
7637 + };
7638 + };
7639 + };
7640 +
7641 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down
7642 + fragment@29 {
7643 + target = <&gpio>;
7644 + __dormant__ {
7645 + spi2_0_int_pins: spi2_0_int_pins {
7646 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */
7647 + brcm,function = <0>;
7648 + brcm,pull = <0>;
7649 + };
7650 + };
7651 + };
7652 +
7653 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down
7654 + fragment@30 {
7655 + target = <&gpio>;
7656 + __dormant__ {
7657 + spi2_1_int_pins: spi2_1_int_pins {
7658 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */
7659 + brcm,function = <0>;
7660 + brcm,pull = <0>;
7661 + };
7662 + };
7663 + };
7664 +
7665 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down
7666 + fragment@31 {
7667 + target = <&gpio>;
7668 + __dormant__ {
7669 + spi2_2_int_pins: spi2_2_int_pins {
7670 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */
7671 + brcm,function = <0>;
7672 + brcm,pull = <0>;
7673 + };
7674 + };
7675 + };
7676 +
7677 + // Enable interrupts for a mcp23s08 on spi0.0.
7678 + // Use default active low interrupt signalling.
7679 + fragment@32 {
7680 + target = <&mcp23s08_00>;
7681 + __dormant__ {
7682 + interrupt-parent = <&gpio>;
7683 + interrupt-controller;
7684 + };
7685 + };
7686 +
7687 + // Enable interrupts for a mcp23s08 on spi0.1.
7688 + // Use default active low interrupt signalling.
7689 + fragment@33 {
7690 + target = <&mcp23s08_01>;
7691 + __dormant__ {
7692 + interrupt-parent = <&gpio>;
7693 + interrupt-controller;
7694 + };
7695 + };
7696 +
7697 + // Enable interrupts for a mcp23s08 on spi1.0.
7698 + // Use default active low interrupt signalling.
7699 + fragment@34 {
7700 + target = <&mcp23s08_10>;
7701 + __dormant__ {
7702 + interrupt-parent = <&gpio>;
7703 + interrupt-controller;
7704 + };
7705 + };
7706 +
7707 + // Enable interrupts for a mcp23s08 on spi1.1.
7708 + // Use default active low interrupt signalling.
7709 + fragment@35 {
7710 + target = <&mcp23s08_11>;
7711 + __dormant__ {
7712 + interrupt-parent = <&gpio>;
7713 + interrupt-controller;
7714 + };
7715 + };
7716 +
7717 + // Enable interrupts for a mcp23s08 on spi1.2.
7718 + // Use default active low interrupt signalling.
7719 + fragment@36 {
7720 + target = <&mcp23s08_12>;
7721 + __dormant__ {
7722 + interrupt-parent = <&gpio>;
7723 + interrupt-controller;
7724 + };
7725 + };
7726 +
7727 + // Enable interrupts for a mcp23s08 on spi2.0.
7728 + // Use default active low interrupt signalling.
7729 + fragment@37 {
7730 + target = <&mcp23s08_20>;
7731 + __dormant__ {
7732 + interrupt-parent = <&gpio>;
7733 + interrupt-controller;
7734 + };
7735 + };
7736 +
7737 + // Enable interrupts for a mcp23s08 on spi2.1.
7738 + // Use default active low interrupt signalling.
7739 + fragment@38 {
7740 + target = <&mcp23s08_21>;
7741 + __dormant__ {
7742 + interrupt-parent = <&gpio>;
7743 + interrupt-controller;
7744 + };
7745 + };
7746 +
7747 + // Enable interrupts for a mcp23s08 on spi2.2.
7748 + // Use default active low interrupt signalling.
7749 + fragment@39 {
7750 + target = <&mcp23s08_22>;
7751 + __dormant__ {
7752 + interrupt-parent = <&gpio>;
7753 + interrupt-controller;
7754 + };
7755 + };
7756 +
7757 + // Enable interrupts for a mcp23s17 on spi0.0.
7758 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7759 + // Use default active low interrupt signalling.
7760 + fragment@40 {
7761 + target = <&mcp23s17_00>;
7762 + __dormant__ {
7763 + interrupt-parent = <&gpio>;
7764 + interrupt-controller;
7765 + microchip,irq-mirror;
7766 + };
7767 + };
7768 +
7769 + // Enable interrupts for a mcp23s17 on spi0.1.
7770 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7771 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7772 + fragment@41 {
7773 + target = <&mcp23s17_01>;
7774 + __dormant__ {
7775 + interrupt-parent = <&gpio>;
7776 + interrupt-controller;
7777 + microchip,irq-mirror;
7778 + };
7779 + };
7780 +
7781 + // Enable interrupts for a mcp23s17 on spi1.0.
7782 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7783 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7784 + fragment@42 {
7785 + target = <&mcp23s17_10>;
7786 + __dormant__ {
7787 + interrupt-parent = <&gpio>;
7788 + interrupt-controller;
7789 + microchip,irq-mirror;
7790 + };
7791 + };
7792 +
7793 + // Enable interrupts for a mcp23s17 on spi1.1.
7794 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7795 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7796 + fragment@43 {
7797 + target = <&mcp23s17_11>;
7798 + __dormant__ {
7799 + interrupt-parent = <&gpio>;
7800 + interrupt-controller;
7801 + microchip,irq-mirror;
7802 + };
7803 + };
7804 +
7805 + // Enable interrupts for a mcp23s17 on spi1.2.
7806 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7807 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7808 + fragment@44 {
7809 + target = <&mcp23s17_12>;
7810 + __dormant__ {
7811 + interrupt-parent = <&gpio>;
7812 + interrupt-controller;
7813 + microchip,irq-mirror;
7814 + };
7815 + };
7816 +
7817 + // Enable interrupts for a mcp23s17 on spi2.0.
7818 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7819 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7820 + fragment@45 {
7821 + target = <&mcp23s17_20>;
7822 + __dormant__ {
7823 + interrupt-parent = <&gpio>;
7824 + interrupt-controller;
7825 + microchip,irq-mirror;
7826 + };
7827 + };
7828 +
7829 + // Enable interrupts for a mcp23s17 on spi2.1.
7830 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7831 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7832 + fragment@46 {
7833 + target = <&mcp23s17_21>;
7834 + __dormant__ {
7835 + interrupt-parent = <&gpio>;
7836 + interrupt-controller;
7837 + microchip,irq-mirror;
7838 + };
7839 + };
7840 +
7841 + // Enable interrupts for a mcp23s17 on spi2.2.
7842 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
7843 + // Configure INTA/B outputs of mcp23s08/17 as active low.
7844 + fragment@47 {
7845 + target = <&mcp23s17_22>;
7846 + __dormant__ {
7847 + interrupt-parent = <&gpio>;
7848 + interrupt-controller;
7849 + microchip,irq-mirror;
7850 + };
7851 + };
7852 +
7853 + __overrides__ {
7854 + s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0";
7855 + s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0";
7856 + s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0";
7857 + s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0";
7858 + s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0";
7859 + s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0";
7860 + s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0";
7861 + s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0";
7862 + s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0";
7863 + s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0";
7864 + s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0";
7865 + s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0";
7866 + s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0";
7867 + s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0";
7868 + s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0";
7869 + s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0";
7870 + s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0";
7871 + s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0";
7872 + s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0";
7873 + s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0";
7874 + s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0";
7875 + s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0";
7876 + s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0";
7877 + s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0";
7878 + s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0";
7879 + s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0";
7880 + s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0";
7881 + s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0";
7882 + s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0";
7883 + s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0";
7884 + s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0";
7885 + s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0";
7886 + };
7887 +};
7888 +
7889 --- /dev/null
7890 +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
7891 @@ -0,0 +1,73 @@
7892 +/*
7893 + * Device tree overlay for mcp251x/can0 on spi0.0
7894 + */
7895 +
7896 +/dts-v1/;
7897 +/plugin/;
7898 +
7899 +/ {
7900 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
7901 + /* disable spi-dev for spi0.0 */
7902 + fragment@0 {
7903 + target = <&spi0>;
7904 + __overlay__ {
7905 + status = "okay";
7906 + };
7907 + };
7908 +
7909 + fragment@1 {
7910 + target = <&spidev0>;
7911 + __overlay__ {
7912 + status = "disabled";
7913 + };
7914 + };
7915 +
7916 + /* the interrupt pin of the can-controller */
7917 + fragment@2 {
7918 + target = <&gpio>;
7919 + __overlay__ {
7920 + can0_pins: can0_pins {
7921 + brcm,pins = <25>;
7922 + brcm,function = <0>; /* input */
7923 + };
7924 + };
7925 + };
7926 +
7927 + /* the clock/oscillator of the can-controller */
7928 + fragment@3 {
7929 + target-path = "/clocks";
7930 + __overlay__ {
7931 + /* external oscillator of mcp2515 on SPI0.0 */
7932 + can0_osc: can0_osc {
7933 + compatible = "fixed-clock";
7934 + #clock-cells = <0>;
7935 + clock-frequency = <16000000>;
7936 + };
7937 + };
7938 + };
7939 +
7940 + /* the spi config of the can-controller itself binding everything together */
7941 + fragment@4 {
7942 + target = <&spi0>;
7943 + __overlay__ {
7944 + /* needed to avoid dtc warning */
7945 + #address-cells = <1>;
7946 + #size-cells = <0>;
7947 + can0: mcp2515@0 {
7948 + reg = <0>;
7949 + compatible = "microchip,mcp2515";
7950 + pinctrl-names = "default";
7951 + pinctrl-0 = <&can0_pins>;
7952 + spi-max-frequency = <10000000>;
7953 + interrupt-parent = <&gpio>;
7954 + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
7955 + clocks = <&can0_osc>;
7956 + };
7957 + };
7958 + };
7959 + __overrides__ {
7960 + oscillator = <&can0_osc>,"clock-frequency:0";
7961 + spimaxfrequency = <&can0>,"spi-max-frequency:0";
7962 + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
7963 + };
7964 +};
7965 --- /dev/null
7966 +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
7967 @@ -0,0 +1,73 @@
7968 +/*
7969 + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
7970 + */
7971 +
7972 +/dts-v1/;
7973 +/plugin/;
7974 +
7975 +/ {
7976 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
7977 + /* disable spi-dev for spi0.1 */
7978 + fragment@0 {
7979 + target = <&spi0>;
7980 + __overlay__ {
7981 + status = "okay";
7982 + };
7983 + };
7984 +
7985 + fragment@1 {
7986 + target = <&spidev1>;
7987 + __overlay__ {
7988 + status = "disabled";
7989 + };
7990 + };
7991 +
7992 + /* the interrupt pin of the can-controller */
7993 + fragment@2 {
7994 + target = <&gpio>;
7995 + __overlay__ {
7996 + can1_pins: can1_pins {
7997 + brcm,pins = <25>;
7998 + brcm,function = <0>; /* input */
7999 + };
8000 + };
8001 + };
8002 +
8003 + /* the clock/oscillator of the can-controller */
8004 + fragment@3 {
8005 + target-path = "/clocks";
8006 + __overlay__ {
8007 + /* external oscillator of mcp2515 on spi0.1 */
8008 + can1_osc: can1_osc {
8009 + compatible = "fixed-clock";
8010 + #clock-cells = <0>;
8011 + clock-frequency = <16000000>;
8012 + };
8013 + };
8014 + };
8015 +
8016 + /* the spi config of the can-controller itself binding everything together */
8017 + fragment@4 {
8018 + target = <&spi0>;
8019 + __overlay__ {
8020 + /* needed to avoid dtc warning */
8021 + #address-cells = <1>;
8022 + #size-cells = <0>;
8023 + can1: mcp2515@1 {
8024 + reg = <1>;
8025 + compatible = "microchip,mcp2515";
8026 + pinctrl-names = "default";
8027 + pinctrl-0 = <&can1_pins>;
8028 + spi-max-frequency = <10000000>;
8029 + interrupt-parent = <&gpio>;
8030 + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
8031 + clocks = <&can1_osc>;
8032 + };
8033 + };
8034 + };
8035 + __overrides__ {
8036 + oscillator = <&can1_osc>,"clock-frequency:0";
8037 + spimaxfrequency = <&can1>,"spi-max-frequency:0";
8038 + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
8039 + };
8040 +};
8041 --- /dev/null
8042 +++ b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
8043 @@ -0,0 +1,205 @@
8044 +/*
8045 + * Device tree overlay for Microchip mcp3008 10-Bit A/D Converters
8046 + */
8047 +
8048 +/dts-v1/;
8049 +/plugin/;
8050 +
8051 +/ {
8052 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8053 +
8054 + fragment@0 {
8055 + target = <&spidev0>;
8056 + __dormant__ {
8057 + status = "disabled";
8058 + };
8059 + };
8060 +
8061 + fragment@1 {
8062 + target = <&spidev1>;
8063 + __dormant__ {
8064 + status = "disabled";
8065 + };
8066 + };
8067 +
8068 + fragment@2 {
8069 + target-path = "spi1/spidev@0";
8070 + __dormant__ {
8071 + status = "disabled";
8072 + };
8073 + };
8074 +
8075 + fragment@3 {
8076 + target-path = "spi1/spidev@1";
8077 + __dormant__ {
8078 + status = "disabled";
8079 + };
8080 + };
8081 +
8082 + fragment@4 {
8083 + target-path = "spi1/spidev@2";
8084 + __dormant__ {
8085 + status = "disabled";
8086 + };
8087 + };
8088 +
8089 + fragment@5 {
8090 + target-path = "spi2/spidev@0";
8091 + __dormant__ {
8092 + status = "disabled";
8093 + };
8094 + };
8095 +
8096 + fragment@6 {
8097 + target-path = "spi2/spidev@1";
8098 + __dormant__ {
8099 + status = "disabled";
8100 + };
8101 + };
8102 +
8103 + fragment@7 {
8104 + target-path = "spi2/spidev@2";
8105 + __dormant__ {
8106 + status = "disabled";
8107 + };
8108 + };
8109 +
8110 + fragment@8 {
8111 + target = <&spi0>;
8112 + __dormant__ {
8113 + status = "okay";
8114 + #address-cells = <1>;
8115 + #size-cells = <0>;
8116 +
8117 + mcp3008_00: mcp3008@0 {
8118 + compatible = "mcp3008";
8119 + reg = <0>;
8120 + spi-max-frequency = <1600000>;
8121 + };
8122 + };
8123 + };
8124 +
8125 + fragment@9 {
8126 + target = <&spi0>;
8127 + __dormant__ {
8128 + status = "okay";
8129 + #address-cells = <1>;
8130 + #size-cells = <0>;
8131 +
8132 + mcp3008_01: mcp3008@1 {
8133 + compatible = "mcp3008";
8134 + reg = <1>;
8135 + spi-max-frequency = <1600000>;
8136 + };
8137 + };
8138 + };
8139 +
8140 + fragment@10 {
8141 + target = <&spi1>;
8142 + __dormant__ {
8143 + status = "okay";
8144 + #address-cells = <1>;
8145 + #size-cells = <0>;
8146 +
8147 + mcp3008_10: mcp3008@0 {
8148 + compatible = "mcp3008";
8149 + reg = <0>;
8150 + spi-max-frequency = <1600000>;
8151 + };
8152 + };
8153 + };
8154 +
8155 + fragment@11 {
8156 + target = <&spi1>;
8157 + __dormant__ {
8158 + status = "okay";
8159 + #address-cells = <1>;
8160 + #size-cells = <0>;
8161 +
8162 + mcp3008_11: mcp3008@1 {
8163 + compatible = "mcp3008";
8164 + reg = <1>;
8165 + spi-max-frequency = <1600000>;
8166 + };
8167 + };
8168 + };
8169 +
8170 + fragment@12 {
8171 + target = <&spi1>;
8172 + __dormant__ {
8173 + status = "okay";
8174 + #address-cells = <1>;
8175 + #size-cells = <0>;
8176 +
8177 + mcp3008_12: mcp3008@2 {
8178 + compatible = "mcp3008";
8179 + reg = <2>;
8180 + spi-max-frequency = <1600000>;
8181 + };
8182 + };
8183 + };
8184 +
8185 + fragment@13 {
8186 + target = <&spi2>;
8187 + __dormant__ {
8188 + status = "okay";
8189 + #address-cells = <1>;
8190 + #size-cells = <0>;
8191 +
8192 + mcp3008_20: mcp3008@0 {
8193 + compatible = "mcp3008";
8194 + reg = <0>;
8195 + spi-max-frequency = <1600000>;
8196 + };
8197 + };
8198 + };
8199 +
8200 + fragment@14 {
8201 + target = <&spi2>;
8202 + __dormant__ {
8203 + status = "okay";
8204 + #address-cells = <1>;
8205 + #size-cells = <0>;
8206 +
8207 + mcp3008_21: mcp3008@1 {
8208 + compatible = "mcp3008";
8209 + reg = <1>;
8210 + spi-max-frequency = <1600000>;
8211 + };
8212 + };
8213 + };
8214 +
8215 + fragment@15 {
8216 + target = <&spi2>;
8217 + __dormant__ {
8218 + status = "okay";
8219 + #address-cells = <1>;
8220 + #size-cells = <0>;
8221 +
8222 + mcp3008_22: mcp3008@2 {
8223 + compatible = "mcp3008";
8224 + reg = <2>;
8225 + spi-max-frequency = <1600000>;
8226 + };
8227 + };
8228 + };
8229 +
8230 + __overrides__ {
8231 + spi0-0-present = <0>, "+0+8";
8232 + spi0-1-present = <0>, "+1+9";
8233 + spi1-0-present = <0>, "+2+10";
8234 + spi1-1-present = <0>, "+3+11";
8235 + spi1-2-present = <0>, "+4+12";
8236 + spi2-0-present = <0>, "+5+13";
8237 + spi2-1-present = <0>, "+6+14";
8238 + spi2-2-present = <0>, "+7+15";
8239 + spi0-0-speed = <&mcp3008_00>, "spi-max-frequency:0";
8240 + spi0-1-speed = <&mcp3008_01>, "spi-max-frequency:0";
8241 + spi1-0-speed = <&mcp3008_10>, "spi-max-frequency:0";
8242 + spi1-1-speed = <&mcp3008_11>, "spi-max-frequency:0";
8243 + spi1-2-speed = <&mcp3008_12>, "spi-max-frequency:0";
8244 + spi2-0-speed = <&mcp3008_20>, "spi-max-frequency:0";
8245 + spi2-1-speed = <&mcp3008_21>, "spi-max-frequency:0";
8246 + spi2-2-speed = <&mcp3008_22>, "spi-max-frequency:0";
8247 + };
8248 +};
8249 --- /dev/null
8250 +++ b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
8251 @@ -0,0 +1,36 @@
8252 +/dts-v1/;
8253 +/plugin/;
8254 +
8255 +#include <dt-bindings/clock/bcm2835.h>
8256 +
8257 +/*
8258 + * Fake a higher clock rate to get a larger divisor, and thereby a lower
8259 + * baudrate. The real clock is 48MHz, which we scale so that requesting
8260 + * 38.4kHz results in an actual 31.25kHz.
8261 + *
8262 + * 48000000*38400/31250 = 58982400
8263 + */
8264 +
8265 +/{
8266 + compatible = "brcm,bcm2835";
8267 +
8268 + fragment@0 {
8269 + target-path = "/clocks";
8270 + __overlay__ {
8271 + midi_clk: midi_clk {
8272 + compatible = "fixed-clock";
8273 + #clock-cells = <0>;
8274 + clock-output-names = "uart0_pclk";
8275 + clock-frequency = <58982400>;
8276 + };
8277 + };
8278 + };
8279 +
8280 + fragment@1 {
8281 + target = <&uart0>;
8282 + __overlay__ {
8283 + clocks = <&midi_clk>,
8284 + <&clocks BCM2835_CLOCK_VPU>;
8285 + };
8286 + };
8287 +};
8288 --- /dev/null
8289 +++ b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
8290 @@ -0,0 +1,43 @@
8291 +/dts-v1/;
8292 +/plugin/;
8293 +
8294 +#include <dt-bindings/clock/bcm2835-aux.h>
8295 +
8296 +/*
8297 + * Fake a higher clock rate to get a larger divisor, and thereby a lower
8298 + * baudrate. The real clock is 48MHz, which we scale so that requesting
8299 + * 38.4kHz results in an actual 31.25kHz.
8300 + *
8301 + * 48000000*38400/31250 = 58982400
8302 + */
8303 +
8304 +/{
8305 + compatible = "brcm,bcm2835";
8306 +
8307 + fragment@0 {
8308 + target-path = "/clocks";
8309 + __overlay__ {
8310 + midi_clk: clock@5 {
8311 + compatible = "fixed-factor-clock";
8312 + #clock-cells = <0>;
8313 + clocks = <&aux BCM2835_AUX_CLOCK_UART>;
8314 + clock-mult = <38400>;
8315 + clock-div = <31250>;
8316 + };
8317 + };
8318 + };
8319 +
8320 + fragment@1 {
8321 + target = <&uart1>;
8322 + __overlay__ {
8323 + clocks = <&midi_clk>;
8324 + };
8325 + };
8326 +
8327 + fragment@2 {
8328 + target = <&aux>;
8329 + __overlay__ {
8330 + clock-output-names = "aux_uart", "aux_spi1", "aux_spi2";
8331 + };
8332 + };
8333 +};
8334 --- /dev/null
8335 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
8336 @@ -0,0 +1,39 @@
8337 +/dts-v1/;
8338 +/plugin/;
8339 +
8340 +/{
8341 + compatible = "brcm,bcm2708";
8342 +
8343 + fragment@0 {
8344 + target = <&mmc>;
8345 + frag0: __overlay__ {
8346 + pinctrl-names = "default";
8347 + pinctrl-0 = <&mmc_pins>;
8348 + bus-width = <4>;
8349 + brcm,overclock-50 = <0>;
8350 + status = "okay";
8351 + };
8352 + };
8353 +
8354 + fragment@1 {
8355 + target = <&gpio>;
8356 + __overlay__ {
8357 + mmc_pins: mmc_pins {
8358 + brcm,pins = <48 49 50 51 52 53>;
8359 + brcm,function = <7>; /* alt3 */
8360 + brcm,pull = <0 2 2 2 2 2>;
8361 + };
8362 + };
8363 + };
8364 +
8365 + fragment@2 {
8366 + target = <&sdhost>;
8367 + __overlay__ {
8368 + status = "disabled";
8369 + };
8370 + };
8371 +
8372 + __overrides__ {
8373 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
8374 + };
8375 +};
8376 --- /dev/null
8377 +++ b/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
8378 @@ -0,0 +1,28 @@
8379 +// Definitions for MPU6050
8380 +/dts-v1/;
8381 +/plugin/;
8382 +
8383 +/ {
8384 + compatible = "brcm,bcm2708";
8385 +
8386 + fragment@0 {
8387 + target = <&i2c1>;
8388 + __overlay__ {
8389 + #address-cells = <1>;
8390 + #size-cells = <0>;
8391 + status = "okay";
8392 + clock-frequency = <400000>;
8393 +
8394 + mpu6050: mpu6050@68 {
8395 + compatible = "invensense,mpu6050";
8396 + reg = <0x68>;
8397 + interrupt-parent = <&gpio>;
8398 + interrupts = <4 1>;
8399 + };
8400 + };
8401 + };
8402 +
8403 + __overrides__ {
8404 + interrupt = <&mpu6050>,"interrupts:0";
8405 + };
8406 +};
8407 --- /dev/null
8408 +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
8409 @@ -0,0 +1,117 @@
8410 +/*
8411 + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
8412 + *
8413 + */
8414 +
8415 +/dts-v1/;
8416 +/plugin/;
8417 +
8418 +/ {
8419 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8420 +
8421 + fragment@0 {
8422 + target = <&spi0>;
8423 + __overlay__ {
8424 + status = "okay";
8425 + };
8426 + };
8427 +
8428 + fragment@1 {
8429 + target = <&spidev0>;
8430 + __overlay__ {
8431 + status = "disabled";
8432 + };
8433 + };
8434 +
8435 + fragment@2 {
8436 + target = <&spidev1>;
8437 + __overlay__ {
8438 + status = "disabled";
8439 + };
8440 + };
8441 +
8442 + fragment@3 {
8443 + target = <&gpio>;
8444 + __overlay__ {
8445 + mz61581_pins: mz61581_pins {
8446 + brcm,pins = <4 15 18 25>;
8447 + brcm,function = <0 1 1 1>; /* in out out out */
8448 + };
8449 + };
8450 + };
8451 +
8452 + fragment@4 {
8453 + target = <&spi0>;
8454 + __overlay__ {
8455 + /* needed to avoid dtc warning */
8456 + #address-cells = <1>;
8457 + #size-cells = <0>;
8458 +
8459 + mz61581: mz61581@0{
8460 + compatible = "samsung,s6d02a1";
8461 + reg = <0>;
8462 + pinctrl-names = "default";
8463 + pinctrl-0 = <&mz61581_pins>;
8464 +
8465 + spi-max-frequency = <128000000>;
8466 + spi-cpol;
8467 + spi-cpha;
8468 +
8469 + width = <320>;
8470 + height = <480>;
8471 + rotate = <270>;
8472 + bgr;
8473 + fps = <30>;
8474 + buswidth = <8>;
8475 + txbuflen = <32768>;
8476 +
8477 + reset-gpios = <&gpio 15 0>;
8478 + dc-gpios = <&gpio 25 0>;
8479 + led-gpios = <&gpio 18 0>;
8480 +
8481 + init = <0x10000b0 00
8482 + 0x1000011
8483 + 0x20000ff
8484 + 0x10000b3 0x02 0x00 0x00 0x00
8485 + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
8486 + 0x10000c1 0x08 0x16 0x08 0x08
8487 + 0x10000c4 0x11 0x07 0x03 0x03
8488 + 0x10000c6 0x00
8489 + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
8490 + 0x1000035 0x00
8491 + 0x1000036 0xa0
8492 + 0x100003a 0x55
8493 + 0x1000044 0x00 0x01
8494 + 0x10000d0 0x07 0x07 0x1d 0x03
8495 + 0x10000d1 0x03 0x30 0x10
8496 + 0x10000d2 0x03 0x14 0x04
8497 + 0x1000029
8498 + 0x100002c>;
8499 +
8500 + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
8501 + debug = <3>;
8502 + };
8503 +
8504 + mz61581_ts: mz61581_ts@1 {
8505 + compatible = "ti,ads7846";
8506 + reg = <1>;
8507 +
8508 + spi-max-frequency = <2000000>;
8509 + interrupts = <4 2>; /* high-to-low edge triggered */
8510 + interrupt-parent = <&gpio>;
8511 + pendown-gpio = <&gpio 4 0>;
8512 +
8513 + ti,x-plate-ohms = /bits/ 16 <60>;
8514 + ti,pressure-max = /bits/ 16 <255>;
8515 + };
8516 + };
8517 + };
8518 + __overrides__ {
8519 + speed = <&mz61581>, "spi-max-frequency:0";
8520 + rotate = <&mz61581>, "rotate:0";
8521 + fps = <&mz61581>, "fps:0";
8522 + txbuflen = <&mz61581>, "txbuflen:0";
8523 + debug = <&mz61581>, "debug:0";
8524 + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
8525 + };
8526 +};
8527 --- /dev/null
8528 +++ b/arch/arm/boot/dts/overlays/papirus-overlay.dts
8529 @@ -0,0 +1,89 @@
8530 +/* PaPiRus ePaper Screen by Pi Supply */
8531 +
8532 +/dts-v1/;
8533 +/plugin/;
8534 +
8535 +/ {
8536 + compatible = "brcm,bcm2708";
8537 +
8538 + fragment@0 {
8539 + target = <&i2c_arm>;
8540 + __overlay__ {
8541 + #address-cells = <1>;
8542 + #size-cells = <0>;
8543 + status = "okay";
8544 +
8545 + display_temp: lm75@48 {
8546 + compatible = "lm75b";
8547 + reg = <0x48>;
8548 + status = "okay";
8549 + #thermal-sensor-cells = <0>;
8550 + };
8551 + };
8552 + };
8553 +
8554 + fragment@1 {
8555 + target-path = "/";
8556 + __overlay__ {
8557 + thermal-zones {
8558 + display {
8559 + polling-delay-passive = <0>;
8560 + polling-delay = <0>;
8561 + thermal-sensors = <&display_temp>;
8562 + };
8563 + };
8564 + };
8565 + };
8566 +
8567 + fragment@2 {
8568 + target = <&spi0>;
8569 + __overlay__ {
8570 + status = "okay";
8571 +
8572 + spidev@0{
8573 + status = "disabled";
8574 + };
8575 + };
8576 + };
8577 +
8578 + fragment@3 {
8579 + target = <&gpio>;
8580 + __overlay__ {
8581 + repaper_pins: repaper_pins {
8582 + brcm,pins = <14 15 23 24 25>;
8583 + brcm,function = <1 1 1 1 0>; /* out out out out in */
8584 + };
8585 + };
8586 + };
8587 +
8588 + fragment@4 {
8589 + target = <&spi0>;
8590 + __overlay__ {
8591 + /* needed to avoid dtc warning */
8592 + #address-cells = <1>;
8593 + #size-cells = <0>;
8594 +
8595 + repaper: repaper@0{
8596 + compatible = "not_set";
8597 + reg = <0>;
8598 + pinctrl-names = "default";
8599 + pinctrl-0 = <&repaper_pins>;
8600 +
8601 + spi-max-frequency = <8000000>;
8602 +
8603 + panel-on-gpios = <&gpio 23 0>;
8604 + border-gpios = <&gpio 14 0>;
8605 + discharge-gpios = <&gpio 15 0>;
8606 + reset-gpios = <&gpio 24 0>;
8607 + busy-gpios = <&gpio 25 0>;
8608 +
8609 + repaper-thermal-zone = "display";
8610 + };
8611 + };
8612 + };
8613 +
8614 + __overrides__ {
8615 + panel = <&repaper>, "compatible";
8616 + speed = <&repaper>, "spi-max-frequency:0";
8617 + };
8618 +};
8619 --- /dev/null
8620 +++ b/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts
8621 @@ -0,0 +1,27 @@
8622 +/dts-v1/;
8623 +/plugin/;
8624 +
8625 +/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
8626 + from the VPU. There is a special driver for this with a separate DT node,
8627 + which has the unfortunate consequence of breaking the act_led_gpio and
8628 + act_led_activelow dtparams.
8629 +
8630 + This overlay changes the GPIO controller back to the standard one and
8631 + restores the dtparams.
8632 +*/
8633 +
8634 +/{
8635 + compatible = "brcm,bcm2708";
8636 +
8637 + fragment@0 {
8638 + target = <&act_led>;
8639 + frag0: __overlay__ {
8640 + gpios = <&gpio 0 0>;
8641 + };
8642 + };
8643 +
8644 + __overrides__ {
8645 + gpio = <&frag0>,"gpios:4";
8646 + activelow = <&frag0>,"gpios:8";
8647 + };
8648 +};
8649 --- /dev/null
8650 +++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
8651 @@ -0,0 +1,46 @@
8652 +/dts-v1/;
8653 +/plugin/;
8654 +
8655 +/* Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15.
8656 + To disable the systemd service that initialises the modem so it doesn't use
8657 + the UART:
8658 +
8659 + sudo systemctl disable hciuart
8660 +*/
8661 +
8662 +/{
8663 + compatible = "brcm,bcm2708";
8664 +
8665 + fragment@0 {
8666 + target = <&uart1>;
8667 + __overlay__ {
8668 + status = "disabled";
8669 + };
8670 + };
8671 +
8672 + fragment@1 {
8673 + target = <&uart0>;
8674 + __overlay__ {
8675 + pinctrl-names = "default";
8676 + pinctrl-0 = <&uart0_pins>;
8677 + status = "okay";
8678 + };
8679 + };
8680 +
8681 + fragment@2 {
8682 + target = <&uart0_pins>;
8683 + __overlay__ {
8684 + brcm,pins;
8685 + brcm,function;
8686 + brcm,pull;
8687 + };
8688 + };
8689 +
8690 + fragment@3 {
8691 + target-path = "/aliases";
8692 + __overlay__ {
8693 + serial0 = "/soc/serial@7e201000";
8694 + serial1 = "/soc/serial@7e215040";
8695 + };
8696 + };
8697 +};
8698 --- /dev/null
8699 +++ b/arch/arm/boot/dts/overlays/pi3-disable-wifi-overlay.dts
8700 @@ -0,0 +1,13 @@
8701 +/dts-v1/;
8702 +/plugin/;
8703 +
8704 +/{
8705 + compatible = "brcm,bcm2708";
8706 +
8707 + fragment@0 {
8708 + target = <&mmc>;
8709 + __overlay__ {
8710 + status = "disabled";
8711 + };
8712 + };
8713 +};
8714 --- /dev/null
8715 +++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
8716 @@ -0,0 +1,74 @@
8717 +/dts-v1/;
8718 +/plugin/;
8719 +
8720 +/* Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
8721 + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
8722 + usable baudrate.
8723 +
8724 + It is also necessary to edit /lib/systemd/system/hciuart.service and
8725 + replace ttyAMA0 with ttyS0, unless you have a system with udev rules
8726 + that create /dev/serial0 and /dev/serial1, in which case use /dev/serial1
8727 + instead because it will always be correct.
8728 +
8729 + If cmdline.txt uses the alias serial0 to refer to the user-accessable port
8730 + then the firmware will replace with the appropriate port whether or not
8731 + this overlay is used.
8732 +*/
8733 +
8734 +/{
8735 + compatible = "brcm,bcm2708";
8736 +
8737 + fragment@0 {
8738 + target = <&uart0>;
8739 + __overlay__ {
8740 + pinctrl-names = "default";
8741 + pinctrl-0 = <&uart0_pins>;
8742 + status = "okay";
8743 + };
8744 + };
8745 +
8746 + fragment@1 {
8747 + target = <&uart1>;
8748 + __overlay__ {
8749 + pinctrl-names = "default";
8750 + pinctrl-0 = <&uart1_pins &bt_pins &fake_bt_cts>;
8751 + status = "okay";
8752 + };
8753 + };
8754 +
8755 + fragment@2 {
8756 + target = <&uart0_pins>;
8757 + __overlay__ {
8758 + brcm,pins;
8759 + brcm,function;
8760 + brcm,pull;
8761 + };
8762 + };
8763 +
8764 + fragment@3 {
8765 + target = <&uart1_pins>;
8766 + __overlay__ {
8767 + brcm,pins = <32 33>;
8768 + brcm,function = <2>; /* alt5=UART1 */
8769 + brcm,pull = <0 2>;
8770 + };
8771 + };
8772 +
8773 + fragment@4 {
8774 + target = <&gpio>;
8775 + __overlay__ {
8776 + fake_bt_cts: fake_bt_cts {
8777 + brcm,pins = <31>;
8778 + brcm,function = <1>; /* output */
8779 + };
8780 + };
8781 + };
8782 +
8783 + fragment@5 {
8784 + target-path = "/aliases";
8785 + __overlay__ {
8786 + serial0 = "/soc/serial@7e201000";
8787 + serial1 = "/soc/serial@7e215040";
8788 + };
8789 + };
8790 +};
8791 --- /dev/null
8792 +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
8793 @@ -0,0 +1,102 @@
8794 +/*
8795 + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
8796 + *
8797 + */
8798 +
8799 +/dts-v1/;
8800 +/plugin/;
8801 +
8802 +/ {
8803 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8804 +
8805 + fragment@0 {
8806 + target = <&spi0>;
8807 + __overlay__ {
8808 + status = "okay";
8809 + };
8810 + };
8811 +
8812 + fragment@1 {
8813 + target = <&spidev0>;
8814 + __overlay__ {
8815 + status = "disabled";
8816 + };
8817 + };
8818 +
8819 + fragment@2 {
8820 + target = <&spidev1>;
8821 + __overlay__ {
8822 + status = "disabled";
8823 + };
8824 + };
8825 +
8826 + fragment@3 {
8827 + target = <&gpio>;
8828 + __overlay__ {
8829 + piscreen_pins: piscreen_pins {
8830 + brcm,pins = <17 25 24 22>;
8831 + brcm,function = <0 1 1 1>; /* in out out out */
8832 + };
8833 + };
8834 + };
8835 +
8836 + fragment@4 {
8837 + target = <&spi0>;
8838 + __overlay__ {
8839 + /* needed to avoid dtc warning */
8840 + #address-cells = <1>;
8841 + #size-cells = <0>;
8842 +
8843 + piscreen: piscreen@0{
8844 + compatible = "ilitek,ili9486";
8845 + reg = <0>;
8846 + pinctrl-names = "default";
8847 + pinctrl-0 = <&piscreen_pins>;
8848 +
8849 + spi-max-frequency = <24000000>;
8850 + rotate = <270>;
8851 + bgr;
8852 + fps = <30>;
8853 + buswidth = <8>;
8854 + regwidth = <16>;
8855 + reset-gpios = <&gpio 25 0>;
8856 + dc-gpios = <&gpio 24 0>;
8857 + led-gpios = <&gpio 22 1>;
8858 + debug = <0>;
8859 +
8860 + init = <0x10000b0 0x00
8861 + 0x1000011
8862 + 0x20000ff
8863 + 0x100003a 0x55
8864 + 0x1000036 0x28
8865 + 0x10000c2 0x44
8866 + 0x10000c5 0x00 0x00 0x00 0x00
8867 + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
8868 + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
8869 + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
8870 + 0x1000011
8871 + 0x1000029>;
8872 + };
8873 +
8874 + piscreen_ts: piscreen-ts@1 {
8875 + compatible = "ti,ads7846";
8876 + reg = <1>;
8877 +
8878 + spi-max-frequency = <2000000>;
8879 + interrupts = <17 2>; /* high-to-low edge triggered */
8880 + interrupt-parent = <&gpio>;
8881 + pendown-gpio = <&gpio 17 0>;
8882 + ti,swap-xy;
8883 + ti,x-plate-ohms = /bits/ 16 <100>;
8884 + ti,pressure-max = /bits/ 16 <255>;
8885 + };
8886 + };
8887 + };
8888 + __overrides__ {
8889 + speed = <&piscreen>,"spi-max-frequency:0";
8890 + rotate = <&piscreen>,"rotate:0";
8891 + fps = <&piscreen>,"fps:0";
8892 + debug = <&piscreen>,"debug:0";
8893 + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
8894 + };
8895 +};
8896 --- /dev/null
8897 +++ b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
8898 @@ -0,0 +1,106 @@
8899 + /*
8900 + * Device Tree overlay for PiScreen2 3.5" TFT with resistive touch by Ozzmaker.com
8901 + *
8902 + */
8903 +
8904 +/dts-v1/;
8905 +/plugin/;
8906 +
8907 +/ {
8908 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
8909 +
8910 + fragment@0 {
8911 + target = <&spi0>;
8912 + __overlay__ {
8913 + status = "okay";
8914 + };
8915 + };
8916 +
8917 + fragment@1 {
8918 + target = <&spidev0>;
8919 + __overlay__ {
8920 + status = "disabled";
8921 + };
8922 + };
8923 +
8924 + fragment@2 {
8925 + target = <&spidev1>;
8926 + __overlay__ {
8927 + status = "disabled";
8928 + };
8929 + };
8930 +
8931 + fragment@3 {
8932 + target = <&gpio>;
8933 + __overlay__ {
8934 + piscreen2_pins: piscreen2_pins {
8935 + brcm,pins = <17 25 24 22>;
8936 + brcm,function = <0 1 1 1>; /* in out out out */
8937 + };
8938 + };
8939 + };
8940 +
8941 + fragment@4 {
8942 + target = <&spi0>;
8943 + __overlay__ {
8944 + /* needed to avoid dtc warning */
8945 + #address-cells = <1>;
8946 + #size-cells = <0>;
8947 +
8948 + piscreen2: piscreen2@0{
8949 + compatible = "ilitek,ili9486";
8950 + reg = <0>;
8951 + pinctrl-names = "default";
8952 + pinctrl-0 = <&piscreen2_pins>;
8953 + bgr;
8954 + spi-max-frequency = <64000000>;
8955 + rotate = <90>;
8956 + fps = <30>;
8957 + buswidth = <8>;
8958 + regwidth = <16>;
8959 + txbuflen = <32768>;
8960 + reset-gpios = <&gpio 25 0>;
8961 + dc-gpios = <&gpio 24 0>;
8962 + led-gpios = <&gpio 22 1>;
8963 + debug = <0>;
8964 +
8965 + init = <0x10000b0 0x00
8966 + 0x1000011
8967 + 0x20000ff
8968 + 0x100003a 0x55
8969 + 0x1000036 0x28
8970 + 0x10000c0 0x11 0x09
8971 + 0x10000c1 0x41
8972 + 0x10000c5 0x00 0x00 0x00 0x00
8973 + 0x10000b6 0x00 0x02
8974 + 0x10000f7 0xa9 0x51 0x2c 0x2
8975 + 0x10000be 0x00 0x04
8976 + 0x10000e9 0x00
8977 + 0x1000011
8978 + 0x1000029>;
8979 +
8980 + };
8981 +
8982 + piscreen2_ts: piscreen2-ts@1 {
8983 + compatible = "ti,ads7846";
8984 + reg = <1>;
8985 +
8986 + spi-max-frequency = <2000000>;
8987 + interrupts = <17 2>; /* high-to-low edge triggered */
8988 + interrupt-parent = <&gpio>;
8989 + pendown-gpio = <&gpio 17 0>;
8990 + ti,swap-xy;
8991 + ti,x-plate-ohms = /bits/ 16 <100>;
8992 + ti,pressure-max = /bits/ 16 <255>;
8993 + };
8994 + };
8995 + };
8996 + __overrides__ {
8997 + speed = <&piscreen2>,"spi-max-frequency:0";
8998 + rotate = <&piscreen2>,"rotate:0";
8999 + fps = <&piscreen2>,"fps:0";
9000 + debug = <&piscreen2>,"debug:0";
9001 + xohms = <&piscreen2_ts>,"ti,x-plate-ohms;0";
9002 + };
9003 +};
9004 +
9005 --- /dev/null
9006 +++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
9007 @@ -0,0 +1,120 @@
9008 +/*
9009 + * pisound Linux kernel module.
9010 + * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound
9011 + *
9012 + * This program is free software; you can redistribute it and/or
9013 + * modify it under the terms of the GNU General Public License
9014 + * as published by the Free Software Foundation; version 2 of the
9015 + * License.
9016 + *
9017 + * This program is distributed in the hope that it will be useful,
9018 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
9019 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9020 + * GNU General Public License for more details.
9021 + *
9022 + * You should have received a copy of the GNU General Public License
9023 + * along with this program; if not, write to the Free Software
9024 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
9025 + */
9026 +
9027 +/dts-v1/;
9028 +/plugin/;
9029 +
9030 +#include <dt-bindings/gpio/gpio.h>
9031 +
9032 +/ {
9033 + compatible = "brcm,bcm2708";
9034 +
9035 + fragment@0 {
9036 + target = <&spi0>;
9037 + __overlay__ {
9038 + status = "okay";
9039 + };
9040 + };
9041 +
9042 + fragment@1 {
9043 + target = <&spidev0>;
9044 + __overlay__ {
9045 + status = "disabled";
9046 + };
9047 + };
9048 +
9049 + fragment@2 {
9050 + target = <&spidev1>;
9051 + __overlay__ {
9052 + status = "okay";
9053 + };
9054 + };
9055 +
9056 + fragment@3 {
9057 + target = <&spi0>;
9058 + __overlay__ {
9059 + #address-cells = <1>;
9060 + #size-cells = <0>;
9061 +
9062 + pisound_spi: pisound_spi@0{
9063 + compatible = "blokaslabs,pisound-spi";
9064 + reg = <0>;
9065 + pinctrl-names = "default";
9066 + pinctrl-0 = <&spi0_pins>;
9067 + spi-max-frequency = <1000000>;
9068 + };
9069 + };
9070 + };
9071 +
9072 + fragment@4 {
9073 + target-path = "/";
9074 + __overlay__ {
9075 + pcm5102a-codec {
9076 + #sound-dai-cells = <0>;
9077 + compatible = "ti,pcm5102a";
9078 + status = "okay";
9079 + };
9080 + };
9081 + };
9082 +
9083 + fragment@5 {
9084 + target = <&sound>;
9085 + __overlay__ {
9086 + compatible = "blokaslabs,pisound";
9087 + i2s-controller = <&i2s>;
9088 + status = "okay";
9089 +
9090 + pinctrl-0 = <&pisound_button_pins>;
9091 +
9092 + osr-gpios =
9093 + <&gpio 13 GPIO_ACTIVE_HIGH>,
9094 + <&gpio 26 GPIO_ACTIVE_HIGH>,
9095 + <&gpio 16 GPIO_ACTIVE_HIGH>;
9096 +
9097 + reset-gpios =
9098 + <&gpio 12 GPIO_ACTIVE_HIGH>,
9099 + <&gpio 24 GPIO_ACTIVE_HIGH>;
9100 +
9101 + data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
9102 +
9103 + button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
9104 + };
9105 + };
9106 +
9107 + fragment@6 {
9108 + target = <&gpio>;
9109 + __overlay__ {
9110 + pinctrl-names = "default";
9111 + pinctrl-0 = <&pisound_button_pins>;
9112 +
9113 + pisound_button_pins: pisound_button_pins {
9114 + brcm,pins = <17>;
9115 + brcm,function = <0>; // Input
9116 + brcm,pull = <2>; // Pull-Up
9117 + };
9118 + };
9119 + };
9120 +
9121 + fragment@7 {
9122 + target = <&i2s>;
9123 + __overlay__ {
9124 + status = "okay";
9125 + };
9126 + };
9127 +};
9128 --- /dev/null
9129 +++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
9130 @@ -0,0 +1,69 @@
9131 +/*
9132 + * Device Tree overlay for pitft by Adafruit
9133 + *
9134 + */
9135 +
9136 +/dts-v1/;
9137 +/plugin/;
9138 +
9139 +/ {
9140 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9141 +
9142 + fragment@0 {
9143 + target = <&spi0>;
9144 + __overlay__ {
9145 + status = "okay";
9146 +
9147 + spidev@0{
9148 + status = "disabled";
9149 + };
9150 +
9151 + spidev@1{
9152 + status = "disabled";
9153 + };
9154 + };
9155 + };
9156 +
9157 + fragment@1 {
9158 + target = <&gpio>;
9159 + __overlay__ {
9160 + pitft_pins: pitft_pins {
9161 + brcm,pins = <25>;
9162 + brcm,function = <1>; /* out */
9163 + brcm,pull = <0>; /* none */
9164 + };
9165 + };
9166 + };
9167 +
9168 + fragment@2 {
9169 + target = <&spi0>;
9170 + __overlay__ {
9171 + /* needed to avoid dtc warning */
9172 + #address-cells = <1>;
9173 + #size-cells = <0>;
9174 +
9175 + pitft: pitft@0{
9176 + compatible = "ilitek,ili9340";
9177 + reg = <0>;
9178 + pinctrl-names = "default";
9179 + pinctrl-0 = <&pitft_pins>;
9180 +
9181 + spi-max-frequency = <32000000>;
9182 + rotate = <90>;
9183 + fps = <25>;
9184 + bgr;
9185 + buswidth = <8>;
9186 + dc-gpios = <&gpio 25 0>;
9187 + debug = <0>;
9188 + };
9189 +
9190 + };
9191 + };
9192 +
9193 + __overrides__ {
9194 + speed = <&pitft>,"spi-max-frequency:0";
9195 + rotate = <&pitft>,"rotate:0";
9196 + fps = <&pitft>,"fps:0";
9197 + debug = <&pitft>,"debug:0";
9198 + };
9199 +};
9200 --- /dev/null
9201 +++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
9202 @@ -0,0 +1,91 @@
9203 +/*
9204 + * Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
9205 + *
9206 + */
9207 +
9208 +/dts-v1/;
9209 +/plugin/;
9210 +
9211 +/ {
9212 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9213 +
9214 + fragment@0 {
9215 + target = <&spi0>;
9216 + __overlay__ {
9217 + status = "okay";
9218 + };
9219 + };
9220 +
9221 + fragment@1 {
9222 + target = <&spidev0>;
9223 + __overlay__ {
9224 + status = "disabled";
9225 + };
9226 + };
9227 +
9228 + fragment@2 {
9229 + target = <&gpio>;
9230 + __overlay__ {
9231 + pitft_pins: pitft_pins {
9232 + brcm,pins = <24 25>;
9233 + brcm,function = <0 1>; /* in out */
9234 + brcm,pull = <2 0>; /* pullup none */
9235 + };
9236 + };
9237 + };
9238 +
9239 + fragment@3 {
9240 + target = <&spi0>;
9241 + __overlay__ {
9242 + /* needed to avoid dtc warning */
9243 + #address-cells = <1>;
9244 + #size-cells = <0>;
9245 +
9246 + pitft: pitft@0{
9247 + compatible = "ilitek,ili9340";
9248 + reg = <0>;
9249 + pinctrl-names = "default";
9250 + pinctrl-0 = <&pitft_pins>;
9251 +
9252 + spi-max-frequency = <32000000>;
9253 + rotate = <90>;
9254 + fps = <25>;
9255 + bgr;
9256 + buswidth = <8>;
9257 + dc-gpios = <&gpio 25 0>;
9258 + debug = <0>;
9259 + };
9260 + };
9261 + };
9262 +
9263 + fragment@4 {
9264 + target = <&i2c1>;
9265 + __overlay__ {
9266 + /* needed to avoid dtc warning */
9267 + #address-cells = <1>;
9268 + #size-cells = <0>;
9269 +
9270 + ft6236: ft6236@38 {
9271 + compatible = "focaltech,ft6236";
9272 + reg = <0x38>;
9273 +
9274 + interrupt-parent = <&gpio>;
9275 + interrupts = <24 2>;
9276 + touchscreen-size-x = <240>;
9277 + touchscreen-size-y = <320>;
9278 + };
9279 + };
9280 + };
9281 +
9282 + __overrides__ {
9283 + speed = <&pitft>,"spi-max-frequency:0";
9284 + rotate = <&pitft>,"rotate:0";
9285 + fps = <&pitft>,"fps:0";
9286 + debug = <&pitft>,"debug:0";
9287 + touch-sizex = <&ft6236>,"touchscreen-size-x?";
9288 + touch-sizey = <&ft6236>,"touchscreen-size-y?";
9289 + touch-invx = <&ft6236>,"touchscreen-inverted-x?";
9290 + touch-invy = <&ft6236>,"touchscreen-inverted-y?";
9291 + touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
9292 + };
9293 +};
9294 --- /dev/null
9295 +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
9296 @@ -0,0 +1,121 @@
9297 +/*
9298 + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
9299 + *
9300 + */
9301 +
9302 +/dts-v1/;
9303 +/plugin/;
9304 +
9305 +/ {
9306 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9307 +
9308 + fragment@0 {
9309 + target = <&spi0>;
9310 + __overlay__ {
9311 + status = "okay";
9312 + };
9313 + };
9314 +
9315 + fragment@1 {
9316 + target = <&spidev0>;
9317 + __overlay__ {
9318 + status = "disabled";
9319 + };
9320 + };
9321 +
9322 + fragment@2 {
9323 + target = <&spidev1>;
9324 + __overlay__ {
9325 + status = "disabled";
9326 + };
9327 + };
9328 +
9329 + fragment@3 {
9330 + target = <&gpio>;
9331 + __overlay__ {
9332 + pitft_pins: pitft_pins {
9333 + brcm,pins = <24 25>;
9334 + brcm,function = <0 1>; /* in out */
9335 + brcm,pull = <2 0>; /* pullup none */
9336 + };
9337 + };
9338 + };
9339 +
9340 + fragment@4 {
9341 + target = <&spi0>;
9342 + __overlay__ {
9343 + /* needed to avoid dtc warning */
9344 + #address-cells = <1>;
9345 + #size-cells = <0>;
9346 +
9347 + pitft: pitft@0{
9348 + compatible = "ilitek,ili9340";
9349 + reg = <0>;
9350 + pinctrl-names = "default";
9351 + pinctrl-0 = <&pitft_pins>;
9352 +
9353 + spi-max-frequency = <32000000>;
9354 + rotate = <90>;
9355 + fps = <25>;
9356 + bgr;
9357 + buswidth = <8>;
9358 + dc-gpios = <&gpio 25 0>;
9359 + debug = <0>;
9360 + };
9361 +
9362 + pitft_ts@1 {
9363 + #address-cells = <1>;
9364 + #size-cells = <0>;
9365 + compatible = "st,stmpe610";
9366 + reg = <1>;
9367 +
9368 + spi-max-frequency = <500000>;
9369 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
9370 + interrupts = <24 2>; /* high-to-low edge triggered */
9371 + interrupt-parent = <&gpio>;
9372 + interrupt-controller;
9373 +
9374 + stmpe_touchscreen {
9375 + compatible = "st,stmpe-ts";
9376 + st,sample-time = <4>;
9377 + st,mod-12b = <1>;
9378 + st,ref-sel = <0>;
9379 + st,adc-freq = <2>;
9380 + st,ave-ctrl = <3>;
9381 + st,touch-det-delay = <4>;
9382 + st,settling = <2>;
9383 + st,fraction-z = <7>;
9384 + st,i-drive = <0>;
9385 + };
9386 +
9387 + stmpe_gpio: stmpe_gpio {
9388 + #gpio-cells = <2>;
9389 + compatible = "st,stmpe-gpio";
9390 + /*
9391 + * only GPIO2 is wired/available
9392 + * and it is wired to the backlight
9393 + */
9394 + st,norequest-mask = <0x7b>;
9395 + };
9396 + };
9397 + };
9398 + };
9399 +
9400 + fragment@5 {
9401 + target-path = "/soc";
9402 + __overlay__ {
9403 + backlight {
9404 + compatible = "gpio-backlight";
9405 + gpios = <&stmpe_gpio 2 0>;
9406 + default-on;
9407 + };
9408 + };
9409 + };
9410 +
9411 + __overrides__ {
9412 + speed = <&pitft>,"spi-max-frequency:0";
9413 + rotate = <&pitft>,"rotate:0";
9414 + fps = <&pitft>,"fps:0";
9415 + debug = <&pitft>,"debug:0";
9416 + };
9417 +};
9418 --- /dev/null
9419 +++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
9420 @@ -0,0 +1,121 @@
9421 +/*
9422 + * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen
9423 + *
9424 + */
9425 +
9426 +/dts-v1/;
9427 +/plugin/;
9428 +
9429 +/ {
9430 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9431 +
9432 + fragment@0 {
9433 + target = <&spi0>;
9434 + __overlay__ {
9435 + status = "okay";
9436 + };
9437 + };
9438 +
9439 + fragment@1 {
9440 + target = <&spidev0>;
9441 + __overlay__ {
9442 + status = "disabled";
9443 + };
9444 + };
9445 +
9446 + fragment@2 {
9447 + target = <&spidev1>;
9448 + __overlay__ {
9449 + status = "disabled";
9450 + };
9451 + };
9452 +
9453 + fragment@3 {
9454 + target = <&gpio>;
9455 + __overlay__ {
9456 + pitft_pins: pitft_pins {
9457 + brcm,pins = <24 25>;
9458 + brcm,function = <0 1>; /* in out */
9459 + brcm,pull = <2 0>; /* pullup none */
9460 + };
9461 + };
9462 + };
9463 +
9464 + fragment@4 {
9465 + target = <&spi0>;
9466 + __overlay__ {
9467 + /* needed to avoid dtc warning */
9468 + #address-cells = <1>;
9469 + #size-cells = <0>;
9470 +
9471 + pitft: pitft@0{
9472 + compatible = "himax,hx8357d";
9473 + reg = <0>;
9474 + pinctrl-names = "default";
9475 + pinctrl-0 = <&pitft_pins>;
9476 +
9477 + spi-max-frequency = <32000000>;
9478 + rotate = <90>;
9479 + fps = <25>;
9480 + bgr;
9481 + buswidth = <8>;
9482 + dc-gpios = <&gpio 25 0>;
9483 + debug = <0>;
9484 + };
9485 +
9486 + pitft_ts@1 {
9487 + #address-cells = <1>;
9488 + #size-cells = <0>;
9489 + compatible = "st,stmpe610";
9490 + reg = <1>;
9491 +
9492 + spi-max-frequency = <500000>;
9493 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
9494 + interrupts = <24 2>; /* high-to-low edge triggered */
9495 + interrupt-parent = <&gpio>;
9496 + interrupt-controller;
9497 +
9498 + stmpe_touchscreen {
9499 + compatible = "st,stmpe-ts";
9500 + st,sample-time = <4>;
9501 + st,mod-12b = <1>;
9502 + st,ref-sel = <0>;
9503 + st,adc-freq = <2>;
9504 + st,ave-ctrl = <3>;
9505 + st,touch-det-delay = <4>;
9506 + st,settling = <2>;
9507 + st,fraction-z = <7>;
9508 + st,i-drive = <0>;
9509 + };
9510 +
9511 + stmpe_gpio: stmpe_gpio {
9512 + #gpio-cells = <2>;
9513 + compatible = "st,stmpe-gpio";
9514 + /*
9515 + * only GPIO2 is wired/available
9516 + * and it is wired to the backlight
9517 + */
9518 + st,norequest-mask = <0x7b>;
9519 + };
9520 + };
9521 + };
9522 + };
9523 +
9524 + fragment@5 {
9525 + target-path = "/soc";
9526 + __overlay__ {
9527 + backlight {
9528 + compatible = "gpio-backlight";
9529 + gpios = <&stmpe_gpio 2 0>;
9530 + default-on;
9531 + };
9532 + };
9533 + };
9534 +
9535 + __overrides__ {
9536 + speed = <&pitft>,"spi-max-frequency:0";
9537 + rotate = <&pitft>,"rotate:0";
9538 + fps = <&pitft>,"fps:0";
9539 + debug = <&pitft>,"debug:0";
9540 + };
9541 +};
9542 --- /dev/null
9543 +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
9544 @@ -0,0 +1,35 @@
9545 +/dts-v1/;
9546 +/plugin/;
9547 +
9548 +/ {
9549 + compatible = "brcm,bcm2708";
9550 + fragment@0 {
9551 + target-path = "/";
9552 + __overlay__ {
9553 + pps: pps {
9554 + compatible = "pps-gpio";
9555 + pinctrl-names = "default";
9556 + pinctrl-0 = <&pps_pins>;
9557 + gpios = <&gpio 18 0>;
9558 + status = "okay";
9559 + };
9560 + };
9561 + };
9562 +
9563 + fragment@1 {
9564 + target = <&gpio>;
9565 + __overlay__ {
9566 + pps_pins: pps_pins {
9567 + brcm,pins = <18>;
9568 + brcm,function = <0>; // in
9569 + brcm,pull = <0>; // off
9570 + };
9571 + };
9572 + };
9573 +
9574 + __overrides__ {
9575 + gpiopin = <&pps>,"gpios:4",
9576 + <&pps_pins>,"brcm,pins:0";
9577 + assert_falling_edge = <&pps>,"assert-falling-edge?";
9578 + };
9579 +};
9580 --- /dev/null
9581 +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
9582 @@ -0,0 +1,47 @@
9583 +/dts-v1/;
9584 +/plugin/;
9585 +
9586 +/*
9587 +This is the 2-channel overlay - only use it if you need both channels.
9588 +
9589 +Legal pin,function combinations for each channel:
9590 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
9591 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
9592 +
9593 +N.B.:
9594 + 1) Pin 18 is the only one available on all platforms, and
9595 + it is the one used by the I2S audio interface.
9596 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
9597 + 2) The onboard analogue audio output uses both PWM channels.
9598 + 3) So be careful mixing audio and PWM.
9599 +*/
9600 +
9601 +/ {
9602 + fragment@0 {
9603 + target = <&gpio>;
9604 + __overlay__ {
9605 + pwm_pins: pwm_pins {
9606 + brcm,pins = <18 19>;
9607 + brcm,function = <2 2>; /* Alt5 */
9608 + };
9609 + };
9610 + };
9611 +
9612 + fragment@1 {
9613 + target = <&pwm>;
9614 + frag1: __overlay__ {
9615 + pinctrl-names = "default";
9616 + pinctrl-0 = <&pwm_pins>;
9617 + assigned-clock-rates = <100000000>;
9618 + status = "okay";
9619 + };
9620 + };
9621 +
9622 + __overrides__ {
9623 + pin = <&pwm_pins>,"brcm,pins:0";
9624 + pin2 = <&pwm_pins>,"brcm,pins:4";
9625 + func = <&pwm_pins>,"brcm,function:0";
9626 + func2 = <&pwm_pins>,"brcm,function:4";
9627 + clock = <&frag1>,"assigned-clock-rates:0";
9628 + };
9629 +};
9630 --- /dev/null
9631 +++ b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
9632 @@ -0,0 +1,40 @@
9633 +/dts-v1/;
9634 +/plugin/;
9635 +
9636 +/ {
9637 + compatible = "brcm,bcm2708";
9638 +
9639 + fragment@0 {
9640 + target = <&gpio>;
9641 + __overlay__ {
9642 + pwm0_pins: pwm0_pins {
9643 + brcm,pins = <18>;
9644 + brcm,function = <2>; /* Alt5 */
9645 + };
9646 + };
9647 + };
9648 +
9649 + fragment@1 {
9650 + target = <&pwm>;
9651 + __overlay__ {
9652 + pinctrl-names = "default";
9653 + pinctrl-0 = <&pwm0_pins>;
9654 + status = "okay";
9655 + };
9656 + };
9657 +
9658 + fragment@2 {
9659 + target-path = "/";
9660 + __overlay__ {
9661 + pwm-ir-transmitter {
9662 + compatible = "pwm-ir-tx";
9663 + pwms = <&pwm 0 100>;
9664 + };
9665 + };
9666 + };
9667 +
9668 + __overrides__ {
9669 + gpio_pin = <&pwm0_pins>, "brcm,pins:0";
9670 + func = <&pwm0_pins>,"brcm,function:0";
9671 + };
9672 +};
9673 --- /dev/null
9674 +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
9675 @@ -0,0 +1,43 @@
9676 +/dts-v1/;
9677 +/plugin/;
9678 +
9679 +/*
9680 +Legal pin,function combinations for each channel:
9681 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
9682 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
9683 +
9684 +N.B.:
9685 + 1) Pin 18 is the only one available on all platforms, and
9686 + it is the one used by the I2S audio interface.
9687 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
9688 + 2) The onboard analogue audio output uses both PWM channels.
9689 + 3) So be careful mixing audio and PWM.
9690 +*/
9691 +
9692 +/ {
9693 + fragment@0 {
9694 + target = <&gpio>;
9695 + __overlay__ {
9696 + pwm_pins: pwm_pins {
9697 + brcm,pins = <18>;
9698 + brcm,function = <2>; /* Alt5 */
9699 + };
9700 + };
9701 + };
9702 +
9703 + fragment@1 {
9704 + target = <&pwm>;
9705 + frag1: __overlay__ {
9706 + pinctrl-names = "default";
9707 + pinctrl-0 = <&pwm_pins>;
9708 + assigned-clock-rates = <100000000>;
9709 + status = "okay";
9710 + };
9711 + };
9712 +
9713 + __overrides__ {
9714 + pin = <&pwm_pins>,"brcm,pins:0";
9715 + func = <&pwm_pins>,"brcm,function:0";
9716 + clock = <&frag1>,"assigned-clock-rates:0";
9717 + };
9718 +};
9719 --- /dev/null
9720 +++ b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
9721 @@ -0,0 +1,52 @@
9722 +// Overlay for the Qualcomm Atheros QCA7000 on I2SE's PLC Stamp micro EVK
9723 +// Visit: https://www.i2se.com/product/plc-stamp-micro-evk for details
9724 +
9725 +/dts-v1/;
9726 +/plugin/;
9727 +
9728 +/ {
9729 + compatible = "brcm,bcm2708";
9730 +
9731 + fragment@0 {
9732 + target = <&spi0>;
9733 + __overlay__ {
9734 + /* needed to avoid dtc warning */
9735 + #address-cells = <1>;
9736 + #size-cells = <0>;
9737 +
9738 + status = "okay";
9739 +
9740 + spidev@0 {
9741 + status = "disabled";
9742 + };
9743 +
9744 + eth1: qca7000@0 {
9745 + compatible = "qca,qca7000";
9746 + reg = <0>; /* CE0 */
9747 + pinctrl-names = "default";
9748 + pinctrl-0 = <&eth1_pins>;
9749 + interrupt-parent = <&gpio>;
9750 + interrupts = <23 0x1>; /* rising edge */
9751 + spi-max-frequency = <12000000>;
9752 + status = "okay";
9753 + };
9754 + };
9755 + };
9756 +
9757 + fragment@1 {
9758 + target = <&gpio>;
9759 + __overlay__ {
9760 + eth1_pins: eth1_pins {
9761 + brcm,pins = <23>;
9762 + brcm,function = <0>; /* in */
9763 + brcm,pull = <0>; /* none */
9764 + };
9765 + };
9766 + };
9767 +
9768 + __overrides__ {
9769 + int_pin = <&eth1>, "interrupts:0",
9770 + <&eth1_pins>, "brcm,pins:0";
9771 + speed = <&eth1>, "spi-max-frequency:0";
9772 + };
9773 +};
9774 --- /dev/null
9775 +++ b/arch/arm/boot/dts/overlays/raspidac3-overlay.dts
9776 @@ -0,0 +1,49 @@
9777 +// Definitions for RaspiDACv3
9778 +/dts-v1/;
9779 +/plugin/;
9780 +
9781 +/ {
9782 + compatible = "brcm,bcm2708";
9783 +
9784 + fragment@0 {
9785 + target = <&i2s>;
9786 + __overlay__ {
9787 + status = "okay";
9788 + };
9789 + };
9790 +
9791 + fragment@1 {
9792 + target = <&i2c1>;
9793 + __overlay__ {
9794 + #address-cells = <1>;
9795 + #size-cells = <0>;
9796 + status = "okay";
9797 +
9798 + pcm5122@4c {
9799 + #sound-dai-cells = <0>;
9800 + compatible = "ti,pcm5122";
9801 + reg = <0x4c>;
9802 + AVDD-supply = <&vdd_3v3_reg>;
9803 + DVDD-supply = <&vdd_3v3_reg>;
9804 + CPVDD-supply = <&vdd_3v3_reg>;
9805 + status = "okay";
9806 + };
9807 +
9808 + tpa6130a2: tpa6130a2@60 {
9809 + compatible = "ti,tpa6130a2";
9810 + reg = <0x60>;
9811 + Vdd-supply = <&vdd_3v3_reg>;
9812 + status = "okay";
9813 + };
9814 + };
9815 + };
9816 +
9817 + fragment@2 {
9818 + target = <&sound>;
9819 + __overlay__ {
9820 + compatible = "jg,raspidacv3";
9821 + i2s-controller = <&i2s>;
9822 + status = "okay";
9823 + };
9824 + };
9825 +};
9826 --- /dev/null
9827 +++ b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
9828 @@ -0,0 +1,43 @@
9829 +// Device tree overlay for GPIO connected rotary encoder.
9830 +/dts-v1/;
9831 +/plugin/;
9832 +
9833 +/ {
9834 + compatible = "brcm,bcm2708";
9835 +
9836 + fragment@0 {
9837 + target = <&gpio>;
9838 + __overlay__ {
9839 + rotary0_pins: rotary0_pins {
9840 + brcm,pins = <4 17>; /* gpio 4 17 */
9841 + brcm,function = <0 0>; /* input */
9842 + brcm,pull = <2 2>; /* pull-up */
9843 + };
9844 +
9845 + };
9846 + };
9847 +
9848 + fragment@1 {
9849 + target-path = "/";
9850 + __overlay__ {
9851 + rotary0: rotary@0 {
9852 + compatible = "rotary-encoder";
9853 + status = "okay";
9854 + pinctrl-names = "default";
9855 + pinctrl-0 = <&rotary0_pins>;
9856 + gpios = <&gpio 4 0>, <&gpio 17 0>;
9857 + linux,axis = <0>; /* REL_X */
9858 + rotary-encoder,encoding = "gray";
9859 + rotary-encoder,relative-axis;
9860 + };
9861 + };
9862 +
9863 + };
9864 +
9865 + __overrides__ {
9866 + rotary0_pin_a = <&rotary0>,"gpios:4",
9867 + <&rotary0_pins>,"brcm,pins:0";
9868 + rotary0_pin_b = <&rotary0>,"gpios:16",
9869 + <&rotary0_pins>,"brcm,pins:4";
9870 + };
9871 +};
9872 --- /dev/null
9873 +++ b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
9874 @@ -0,0 +1,21 @@
9875 +/*
9876 + * Devicetree overlay for mailbox-driven Raspberry Pi DSI Display
9877 + * backlight controller
9878 + */
9879 +/dts-v1/;
9880 +/plugin/;
9881 +
9882 +/ {
9883 + compatible = "brcm,bcm2708";
9884 +
9885 + fragment@0 {
9886 + target-path = "/";
9887 + __overlay__ {
9888 + rpi_backlight: rpi_backlight {
9889 + compatible = "raspberrypi,rpi-backlight";
9890 + firmware = <&firmware>;
9891 + status = "okay";
9892 + };
9893 + };
9894 + };
9895 +};
9896 --- /dev/null
9897 +++ b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
9898 @@ -0,0 +1,146 @@
9899 +// Definitions for the Cirrus Logic Audio Card
9900 +/dts-v1/;
9901 +/plugin/;
9902 +#include <dt-bindings/pinctrl/bcm2835.h>
9903 +#include <dt-bindings/gpio/gpio.h>
9904 +#include <dt-bindings/mfd/arizona.h>
9905 +
9906 +/ {
9907 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
9908 +
9909 + fragment@0 {
9910 + target = <&i2s>;
9911 + __overlay__ {
9912 + status = "okay";
9913 + };
9914 + };
9915 +
9916 + fragment@1 {
9917 + target = <&gpio>;
9918 + __overlay__ {
9919 + wlf_pins: wlf_pins {
9920 + brcm,pins = <17 22 27 8>;
9921 + brcm,function = <
9922 + BCM2835_FSEL_GPIO_OUT
9923 + BCM2835_FSEL_GPIO_OUT
9924 + BCM2835_FSEL_GPIO_IN
9925 + BCM2835_FSEL_GPIO_OUT
9926 + >;
9927 + };
9928 + };
9929 + };
9930 +
9931 + fragment@2 {
9932 + target-path = "/";
9933 + __overlay__ {
9934 + rpi_cirrus_reg_1v8: rpi_cirrus_reg_1v8 {
9935 + compatible = "regulator-fixed";
9936 + regulator-name = "RPi-Cirrus 1v8";
9937 + regulator-min-microvolt = <1800000>;
9938 + regulator-max-microvolt = <1800000>;
9939 + regulator-always-on;
9940 + };
9941 + };
9942 + };
9943 +
9944 + fragment@3 {
9945 + target = <&spi0>;
9946 + __overlay__ {
9947 + #address-cells = <1>;
9948 + #size-cells = <0>;
9949 + status = "okay";
9950 +
9951 + spidev@0{
9952 + status = "disabled";
9953 + };
9954 +
9955 + spidev@1{
9956 + status = "disabled";
9957 + };
9958 +
9959 + wm5102@1{
9960 + compatible = "wlf,wm5102";
9961 + reg = <1>;
9962 +
9963 + spi-max-frequency = <500000>;
9964 +
9965 + interrupt-parent = <&gpio>;
9966 + interrupts = <27 8>;
9967 + interrupt-controller;
9968 + #interrupt-cells = <2>;
9969 +
9970 + gpio-controller;
9971 + #gpio-cells = <2>;
9972 +
9973 + LDOVDD-supply = <&rpi_cirrus_reg_1v8>;
9974 + AVDD-supply = <&rpi_cirrus_reg_1v8>;
9975 + DBVDD1-supply = <&rpi_cirrus_reg_1v8>;
9976 + DBVDD2-supply = <&vdd_3v3_reg>;
9977 + DBVDD3-supply = <&vdd_3v3_reg>;
9978 + CPVDD-supply = <&rpi_cirrus_reg_1v8>;
9979 + SPKVDDL-supply = <&vdd_5v0_reg>;
9980 + SPKVDDR-supply = <&vdd_5v0_reg>;
9981 + DCVDD-supply = <&arizona_ldo1>;
9982 +
9983 + wlf,reset = <&gpio 17 GPIO_ACTIVE_HIGH>;
9984 + wlf,ldoena = <&gpio 22 GPIO_ACTIVE_HIGH>;
9985 + wlf,gpio-defaults = <
9986 + ARIZONA_GP_DEFAULT
9987 + ARIZONA_GP_DEFAULT
9988 + ARIZONA_GP_DEFAULT
9989 + ARIZONA_GP_DEFAULT
9990 + ARIZONA_GP_DEFAULT
9991 + >;
9992 + wlf,micd-configs = <0 1 0>;
9993 + wlf,dmic-ref = <
9994 + ARIZONA_DMIC_MICVDD
9995 + ARIZONA_DMIC_MICBIAS2
9996 + ARIZONA_DMIC_MICVDD
9997 + ARIZONA_DMIC_MICVDD
9998 + >;
9999 + wlf,inmode = <
10000 + ARIZONA_INMODE_DIFF
10001 + ARIZONA_INMODE_DMIC
10002 + ARIZONA_INMODE_SE
10003 + ARIZONA_INMODE_DIFF
10004 + >;
10005 + status = "okay";
10006 +
10007 + arizona_ldo1: ldo1 {
10008 + regulator-name = "LDO1";
10009 + // default constraints as in
10010 + // arizona-ldo1.c
10011 + regulator-min-microvolt = <1200000>;
10012 + regulator-max-microvolt = <1800000>;
10013 + };
10014 + };
10015 + };
10016 + };
10017 +
10018 + fragment@4 {
10019 + target = <&i2c1>;
10020 + __overlay__ {
10021 + status = "okay";
10022 + #address-cells = <1>;
10023 + #size-cells = <0>;
10024 +
10025 + wm8804@3b {
10026 + compatible = "wlf,wm8804";
10027 + reg = <0x3b>;
10028 + status = "okay";
10029 + PVDD-supply = <&vdd_3v3_reg>;
10030 + DVDD-supply = <&vdd_3v3_reg>;
10031 + wlf,reset-gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
10032 + };
10033 + };
10034 + };
10035 +
10036 + fragment@5 {
10037 + target = <&sound>;
10038 + __overlay__ {
10039 + compatible = "wlf,rpi-cirrus";
10040 + i2s-controller = <&i2s>;
10041 + status = "okay";
10042 + };
10043 + };
10044 +};
10045 --- /dev/null
10046 +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
10047 @@ -0,0 +1,34 @@
10048 +// Definitions for RPi DAC
10049 +/dts-v1/;
10050 +/plugin/;
10051 +
10052 +/ {
10053 + compatible = "brcm,bcm2708";
10054 +
10055 + fragment@0 {
10056 + target = <&i2s>;
10057 + __overlay__ {
10058 + status = "okay";
10059 + };
10060 + };
10061 +
10062 + fragment@1 {
10063 + target-path = "/";
10064 + __overlay__ {
10065 + pcm1794a-codec {
10066 + #sound-dai-cells = <0>;
10067 + compatible = "ti,pcm1794a";
10068 + status = "okay";
10069 + };
10070 + };
10071 + };
10072 +
10073 + fragment@2 {
10074 + target = <&sound>;
10075 + __overlay__ {
10076 + compatible = "rpi,rpi-dac";
10077 + i2s-controller = <&i2s>;
10078 + status = "okay";
10079 + };
10080 + };
10081 +};
10082 --- /dev/null
10083 +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
10084 @@ -0,0 +1,89 @@
10085 +/*
10086 + * Device Tree overlay for rpi-display by Watterott
10087 + *
10088 + */
10089 +
10090 +/dts-v1/;
10091 +/plugin/;
10092 +
10093 +/ {
10094 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10095 +
10096 + fragment@0 {
10097 + target = <&spi0>;
10098 + __overlay__ {
10099 + status = "okay";
10100 + };
10101 + };
10102 +
10103 + fragment@1 {
10104 + target = <&spidev0>;
10105 + __overlay__ {
10106 + status = "disabled";
10107 + };
10108 + };
10109 +
10110 + fragment@2 {
10111 + target = <&spidev1>;
10112 + __overlay__ {
10113 + status = "disabled";
10114 + };
10115 + };
10116 +
10117 + fragment@3 {
10118 + target = <&gpio>;
10119 + __overlay__ {
10120 + rpi_display_pins: rpi_display_pins {
10121 + brcm,pins = <18 23 24 25>;
10122 + brcm,function = <1 1 1 0>; /* out out out in */
10123 + brcm,pull = <0 0 0 2>; /* - - - up */
10124 + };
10125 + };
10126 + };
10127 +
10128 + fragment@4 {
10129 + target = <&spi0>;
10130 + __overlay__ {
10131 + /* needed to avoid dtc warning */
10132 + #address-cells = <1>;
10133 + #size-cells = <0>;
10134 +
10135 + rpidisplay: rpi-display@0{
10136 + compatible = "ilitek,ili9341";
10137 + reg = <0>;
10138 + pinctrl-names = "default";
10139 + pinctrl-0 = <&rpi_display_pins>;
10140 +
10141 + spi-max-frequency = <32000000>;
10142 + rotate = <270>;
10143 + bgr;
10144 + fps = <30>;
10145 + buswidth = <8>;
10146 + reset-gpios = <&gpio 23 0>;
10147 + dc-gpios = <&gpio 24 0>;
10148 + led-gpios = <&gpio 18 1>;
10149 + debug = <0>;
10150 + };
10151 +
10152 + rpidisplay_ts: rpi-display-ts@1 {
10153 + compatible = "ti,ads7846";
10154 + reg = <1>;
10155 +
10156 + spi-max-frequency = <2000000>;
10157 + interrupts = <25 2>; /* high-to-low edge triggered */
10158 + interrupt-parent = <&gpio>;
10159 + pendown-gpio = <&gpio 25 0>;
10160 + ti,x-plate-ohms = /bits/ 16 <60>;
10161 + ti,pressure-max = /bits/ 16 <255>;
10162 + };
10163 + };
10164 + };
10165 + __overrides__ {
10166 + speed = <&rpidisplay>,"spi-max-frequency:0";
10167 + rotate = <&rpidisplay>,"rotate:0";
10168 + fps = <&rpidisplay>,"fps:0";
10169 + debug = <&rpidisplay>,"debug:0";
10170 + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
10171 + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
10172 + };
10173 +};
10174 --- /dev/null
10175 +++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
10176 @@ -0,0 +1,30 @@
10177 +/dts-v1/;
10178 +/plugin/;
10179 +
10180 +/ {
10181 + compatible = "brcm,bcm2708";
10182 +
10183 + fragment@0 {
10184 + target-path = "/";
10185 + __overlay__ {
10186 + rpi_ft5406: rpi_ft5406 {
10187 + compatible = "rpi,rpi-ft5406";
10188 + firmware = <&firmware>;
10189 + status = "okay";
10190 + touchscreen-size-x = <800>;
10191 + touchscreen-size-y = <600>;
10192 + touchscreen-inverted-x = <0>;
10193 + touchscreen-inverted-y = <0>;
10194 + touchscreen-swapped-x-y = <0>;
10195 + };
10196 + };
10197 + };
10198 +
10199 + __overrides__ {
10200 + touchscreen-size-x = <&rpi_ft5406>,"touchscreen-size-x:0";
10201 + touchscreen-size-y = <&rpi_ft5406>,"touchscreen-size-y:0";
10202 + touchscreen-inverted-x = <&rpi_ft5406>,"touchscreen-inverted-x:0";
10203 + touchscreen-inverted-y = <&rpi_ft5406>,"touchscreen-inverted-y:0";
10204 + touchscreen-swapped-x-y = <&rpi_ft5406>,"touchscreen-swapped-x-y:0";
10205 + };
10206 +};
10207 --- /dev/null
10208 +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
10209 @@ -0,0 +1,39 @@
10210 +// Definitions for Rpi-Proto
10211 +/dts-v1/;
10212 +/plugin/;
10213 +
10214 +/ {
10215 + compatible = "brcm,bcm2708";
10216 +
10217 + fragment@0 {
10218 + target = <&i2s>;
10219 + __overlay__ {
10220 + status = "okay";
10221 + };
10222 + };
10223 +
10224 + fragment@1 {
10225 + target = <&i2c1>;
10226 + __overlay__ {
10227 + #address-cells = <1>;
10228 + #size-cells = <0>;
10229 + status = "okay";
10230 +
10231 + wm8731@1a {
10232 + #sound-dai-cells = <0>;
10233 + compatible = "wlf,wm8731";
10234 + reg = <0x1a>;
10235 + status = "okay";
10236 + };
10237 + };
10238 + };
10239 +
10240 + fragment@2 {
10241 + target = <&sound>;
10242 + __overlay__ {
10243 + compatible = "rpi,rpi-proto";
10244 + i2s-controller = <&i2s>;
10245 + status = "okay";
10246 + };
10247 + };
10248 +};
10249 --- /dev/null
10250 +++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
10251 @@ -0,0 +1,47 @@
10252 +// rpi-sense HAT
10253 +/dts-v1/;
10254 +/plugin/;
10255 +
10256 +/ {
10257 + compatible = "brcm,bcm2708", "brcm,bcm2709";
10258 +
10259 + fragment@0 {
10260 + target = <&i2c1>;
10261 + __overlay__ {
10262 + #address-cells = <1>;
10263 + #size-cells = <0>;
10264 + status = "okay";
10265 +
10266 + rpi-sense@46 {
10267 + compatible = "rpi,rpi-sense";
10268 + reg = <0x46>;
10269 + keys-int-gpios = <&gpio 23 1>;
10270 + status = "okay";
10271 + };
10272 +
10273 + lsm9ds1-magn@1c {
10274 + compatible = "st,lsm9ds1-magn";
10275 + reg = <0x1c>;
10276 + status = "okay";
10277 + };
10278 +
10279 + lsm9ds1-accel6a {
10280 + compatible = "st,lsm9ds1-accel";
10281 + reg = <0x6a>;
10282 + status = "okay";
10283 + };
10284 +
10285 + lps25h-press@5c {
10286 + compatible = "st,lps25h-press";
10287 + reg = <0x5c>;
10288 + status = "okay";
10289 + };
10290 +
10291 + hts221-humid@5f {
10292 + compatible = "st,hts221-humid";
10293 + reg = <0x5f>;
10294 + status = "okay";
10295 + };
10296 + };
10297 + };
10298 +};
10299 --- /dev/null
10300 +++ b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
10301 @@ -0,0 +1,31 @@
10302 +// rpi-tv HAT
10303 +
10304 +/dts-v1/;
10305 +/plugin/;
10306 +
10307 +/ {
10308 + compatible = "brcm,bcm2708", "brcm,bcm2709";
10309 +
10310 + fragment@0 {
10311 + target = <&spi0>;
10312 + __overlay__ {
10313 + /* needed to avoid dtc warning */
10314 + #address-cells = <1>;
10315 + #size-cells = <0>;
10316 +
10317 + status = "okay";
10318 +
10319 + spidev@0 {
10320 + status = "disabled";
10321 + };
10322 +
10323 + cxd2880@0 {
10324 + compatible = "sony,cxd2880";
10325 + reg = <0>; /* CE0 */
10326 + spi-max-frequency = <50000000>;
10327 + status = "okay";
10328 + };
10329 + };
10330 + };
10331 +
10332 +};
10333 --- /dev/null
10334 +++ b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
10335 @@ -0,0 +1,49 @@
10336 +// Definitions for RRA DigiDAC1 Audio card
10337 +/dts-v1/;
10338 +/plugin/;
10339 +
10340 +/ {
10341 + compatible = "brcm,bcm2708";
10342 +
10343 + fragment@0 {
10344 + target = <&i2s>;
10345 + __overlay__ {
10346 + status = "okay";
10347 + };
10348 + };
10349 +
10350 + fragment@1 {
10351 + target = <&i2c1>;
10352 + __overlay__ {
10353 + #address-cells = <1>;
10354 + #size-cells = <0>;
10355 + status = "okay";
10356 +
10357 + wm8804@3b {
10358 + #sound-dai-cells = <0>;
10359 + compatible = "wlf,wm8804";
10360 + reg = <0x3b>;
10361 + status = "okay";
10362 + PVDD-supply = <&vdd_3v3_reg>;
10363 + DVDD-supply = <&vdd_3v3_reg>;
10364 + };
10365 +
10366 + wm8742: wm8741@1a {
10367 + compatible = "wlf,wm8741";
10368 + reg = <0x1a>;
10369 + status = "okay";
10370 + AVDD-supply = <&vdd_5v0_reg>;
10371 + DVDD-supply = <&vdd_3v3_reg>;
10372 + };
10373 + };
10374 + };
10375 +
10376 + fragment@2 {
10377 + target = <&sound>;
10378 + __overlay__ {
10379 + compatible = "rra,digidac1-soundcard";
10380 + i2s-controller = <&i2s>;
10381 + status = "okay";
10382 + };
10383 + };
10384 +};
10385 --- /dev/null
10386 +++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
10387 @@ -0,0 +1,37 @@
10388 +/dts-v1/;
10389 +/plugin/;
10390 +
10391 +/ {
10392 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10393 +
10394 + fragment@0 {
10395 + target = <&i2c_arm>;
10396 + __overlay__ {
10397 + #address-cells = <1>;
10398 + #size-cells = <0>;
10399 + status = "okay";
10400 +
10401 + sc16is750: sc16is750@48 {
10402 + compatible = "nxp,sc16is750";
10403 + reg = <0x48>; /* address */
10404 + clocks = <&sc16is750_clk>;
10405 + interrupt-parent = <&gpio>;
10406 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
10407 + #gpio-cells = <2>;
10408 +
10409 + sc16is750_clk: sc16is750_clk {
10410 + compatible = "fixed-clock";
10411 + #clock-cells = <0>;
10412 + clock-frequency = <14745600>;
10413 + };
10414 + };
10415 + };
10416 + };
10417 +
10418 +
10419 + __overrides__ {
10420 + int_pin = <&sc16is750>,"interrupts:0";
10421 + addr = <&sc16is750>,"reg:0";
10422 + };
10423 +
10424 +};
10425 --- /dev/null
10426 +++ b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
10427 @@ -0,0 +1,61 @@
10428 +/dts-v1/;
10429 +/plugin/;
10430 +
10431 +/ {
10432 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10433 +
10434 + fragment@0 {
10435 + target = <&gpio>;
10436 + __overlay__ {
10437 + spi1_pins: spi1_pins {
10438 + brcm,pins = <19 20 21>;
10439 + brcm,function = <3>; /* alt4 */
10440 + };
10441 +
10442 + spi1_cs_pins: spi1_cs_pins {
10443 + brcm,pins = <18>;
10444 + brcm,function = <1>; /* output */
10445 + };
10446 + };
10447 + };
10448 +
10449 + fragment@1 {
10450 + target = <&spi1>;
10451 + frag1: __overlay__ {
10452 + #address-cells = <1>;
10453 + #size-cells = <0>;
10454 + pinctrl-names = "default";
10455 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
10456 + cs-gpios = <&gpio 18 1>;
10457 + status = "okay";
10458 +
10459 + sc16is752: sc16is752@0 {
10460 + compatible = "nxp,sc16is752";
10461 + reg = <0>; /* CE0 */
10462 + clocks = <&sc16is752_clk>;
10463 + interrupt-parent = <&gpio>;
10464 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
10465 + #gpio-controller;
10466 + #gpio-cells = <2>;
10467 + spi-max-frequency = <4000000>;
10468 +
10469 + sc16is752_clk: sc16is752_clk {
10470 + compatible = "fixed-clock";
10471 + #clock-cells = <0>;
10472 + clock-frequency = <14745600>;
10473 + };
10474 + };
10475 + };
10476 + };
10477 +
10478 + fragment@2 {
10479 + target = <&aux>;
10480 + __overlay__ {
10481 + status = "okay";
10482 + };
10483 + };
10484 +
10485 + __overrides__ {
10486 + int_pin = <&sc16is752>,"interrupts:0";
10487 + };
10488 +};
10489 --- /dev/null
10490 +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
10491 @@ -0,0 +1,31 @@
10492 +/dts-v1/;
10493 +/plugin/;
10494 +
10495 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
10496 +
10497 +/{
10498 + compatible = "brcm,bcm2708";
10499 +
10500 + fragment@0 {
10501 + target = <&sdhost>;
10502 + frag0: __overlay__ {
10503 + brcm,overclock-50 = <0>;
10504 + brcm,pio-limit = <1>;
10505 + status = "okay";
10506 + };
10507 + };
10508 +
10509 + fragment@1 {
10510 + target = <&mmc>;
10511 + __overlay__ {
10512 + status = "disabled";
10513 + };
10514 + };
10515 +
10516 + __overrides__ {
10517 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
10518 + force_pio = <&frag0>,"brcm,force-pio?";
10519 + pio_limit = <&frag0>,"brcm,pio-limit:0";
10520 + debug = <&frag0>,"brcm,debug?";
10521 + };
10522 +};
10523 --- /dev/null
10524 +++ b/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
10525 @@ -0,0 +1,37 @@
10526 +/dts-v1/;
10527 +/plugin/;
10528 +
10529 +/* Enable 1-bit SDIO from MMC interface via GPIOs 22-25. Includes sdhost overlay. */
10530 +
10531 +/{
10532 + compatible = "brcm,bcm2708";
10533 +
10534 + fragment@0 {
10535 + target = <&mmc>;
10536 + sdio_mmc: __overlay__ {
10537 + compatible = "brcm,bcm2835-mmc";
10538 + pinctrl-names = "default";
10539 + pinctrl-0 = <&sdio_pins>;
10540 + non-removable;
10541 + bus-width = <1>;
10542 + brcm,overclock-50 = <0>;
10543 + status = "okay";
10544 + };
10545 + };
10546 +
10547 + fragment@1 {
10548 + target = <&gpio>;
10549 + __overlay__ {
10550 + sdio_pins: sdio_pins {
10551 + brcm,pins = <22 23 24 25>;
10552 + brcm,function = <7>; /* ALT3 = SD1 */
10553 + brcm,pull = <0 2 2 2>;
10554 + };
10555 + };
10556 + };
10557 +
10558 + __overrides__ {
10559 + poll_once = <&sdio_mmc>,"non-removable?";
10560 + sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
10561 + };
10562 +};
10563 --- /dev/null
10564 +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
10565 @@ -0,0 +1,37 @@
10566 +/dts-v1/;
10567 +/plugin/;
10568 +
10569 +/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
10570 +
10571 +/{
10572 + compatible = "brcm,bcm2708";
10573 +
10574 + fragment@0 {
10575 + target = <&mmc>;
10576 + sdio_mmc: __overlay__ {
10577 + pinctrl-names = "default";
10578 + pinctrl-0 = <&sdio_pins>;
10579 + non-removable;
10580 + bus-width = <4>;
10581 + brcm,overclock-50 = <0>;
10582 + status = "okay";
10583 + };
10584 + };
10585 +
10586 + fragment@1 {
10587 + target = <&gpio>;
10588 + __overlay__ {
10589 + sdio_pins: sdio_pins {
10590 + brcm,pins = <22 23 24 25 26 27>;
10591 + brcm,function = <7>; /* ALT3 = SD1 */
10592 + brcm,pull = <0 2 2 2 2 2>;
10593 + };
10594 + };
10595 + };
10596 +
10597 + __overrides__ {
10598 + poll_once = <&sdio_mmc>,"non-removable?";
10599 + bus_width = <&sdio_mmc>,"bus-width:0";
10600 + sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
10601 + };
10602 +};
10603 --- /dev/null
10604 +++ b/arch/arm/boot/dts/overlays/sdtweak-overlay.dts
10605 @@ -0,0 +1,23 @@
10606 +/dts-v1/;
10607 +/plugin/;
10608 +
10609 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
10610 +
10611 +/{
10612 + compatible = "brcm,bcm2708";
10613 +
10614 + fragment@0 {
10615 + target = <&sdhost>;
10616 + frag0: __overlay__ {
10617 + brcm,overclock-50 = <0>;
10618 + brcm,pio-limit = <1>;
10619 + };
10620 + };
10621 +
10622 + __overrides__ {
10623 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
10624 + force_pio = <&frag0>,"brcm,force-pio?";
10625 + pio_limit = <&frag0>,"brcm,pio-limit:0";
10626 + debug = <&frag0>,"brcm,debug?";
10627 + };
10628 +};
10629 --- /dev/null
10630 +++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
10631 @@ -0,0 +1,18 @@
10632 +// Description: Overlay to enable character device interface for SMI.
10633 +// Author: Luke Wren <luke@raspberrypi.org>
10634 +
10635 +/dts-v1/;
10636 +/plugin/;
10637 +
10638 +/{
10639 + fragment@0 {
10640 + target = <&soc>;
10641 + __overlay__ {
10642 + smi_dev {
10643 + compatible = "brcm,bcm2835-smi-dev";
10644 + smi_handle = <&smi>;
10645 + status = "okay";
10646 + };
10647 + };
10648 + };
10649 +};
10650 --- /dev/null
10651 +++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
10652 @@ -0,0 +1,69 @@
10653 +// Description: Overlay to enable NAND flash through
10654 +// the secondary memory interface
10655 +// Author: Luke Wren
10656 +
10657 +/dts-v1/;
10658 +/plugin/;
10659 +
10660 +/{
10661 + compatible = "brcm,bcm2708";
10662 +
10663 + fragment@0 {
10664 + target = <&smi>;
10665 + __overlay__ {
10666 + pinctrl-names = "default";
10667 + pinctrl-0 = <&smi_pins>;
10668 + status = "okay";
10669 + };
10670 + };
10671 +
10672 + fragment@1 {
10673 + target = <&soc>;
10674 + __overlay__ {
10675 + #address-cells = <1>;
10676 + #size-cells = <1>;
10677 +
10678 + nand: flash@0 {
10679 + compatible = "brcm,bcm2835-smi-nand";
10680 + smi_handle = <&smi>;
10681 + #address-cells = <1>;
10682 + #size-cells = <1>;
10683 + status = "okay";
10684 +
10685 + partition@0 {
10686 + label = "stage2";
10687 + // 128k
10688 + reg = <0 0x20000>;
10689 + read-only;
10690 + };
10691 + partition@1 {
10692 + label = "firmware";
10693 + // 16M
10694 + reg = <0x20000 0x1000000>;
10695 + read-only;
10696 + };
10697 + partition@2 {
10698 + label = "root";
10699 + // 2G (will need to use 64 bit for >=4G)
10700 + reg = <0x1020000 0x80000000>;
10701 + };
10702 + };
10703 + };
10704 + };
10705 +
10706 + fragment@2 {
10707 + target = <&gpio>;
10708 + __overlay__ {
10709 + smi_pins: smi_pins {
10710 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
10711 + 12 13 14 15>;
10712 + /* Alt 1: SMI */
10713 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5
10714 + 5 5 5 5 5>;
10715 + /* /CS, /WE and /OE are pulled high, as they are
10716 + generally active low signals */
10717 + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
10718 + };
10719 + };
10720 + };
10721 +};
10722 --- /dev/null
10723 +++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
10724 @@ -0,0 +1,37 @@
10725 +// Description: Overlay to enable the secondary memory interface peripheral
10726 +// Author: Luke Wren
10727 +
10728 +/dts-v1/;
10729 +/plugin/;
10730 +
10731 +/{
10732 + compatible = "brcm,bcm2708";
10733 +
10734 + fragment@0 {
10735 + target = <&smi>;
10736 + __overlay__ {
10737 + pinctrl-names = "default";
10738 + pinctrl-0 = <&smi_pins>;
10739 + status = "okay";
10740 + };
10741 + };
10742 +
10743 + fragment@1 {
10744 + target = <&gpio>;
10745 + __overlay__ {
10746 + smi_pins: smi_pins {
10747 + /* Don't configure the top two address bits, as
10748 + these are already used as ID_SD and ID_SC */
10749 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15
10750 + 16 17 18 19 20 21 22 23 24 25>;
10751 + /* Alt 0: SMI */
10752 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
10753 + 5 5 5 5 5 5 5 5 5>;
10754 + /* /CS, /WE and /OE are pulled high, as they are
10755 + generally active low signals */
10756 + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
10757 + 0 0 0 0 0 0 0>;
10758 + };
10759 + };
10760 + };
10761 +};
10762 --- /dev/null
10763 +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
10764 @@ -0,0 +1,31 @@
10765 +/*
10766 + * Device tree overlay to move spi0 to gpio 35 to 39 on CM
10767 + */
10768 +
10769 +/dts-v1/;
10770 +/plugin/;
10771 +
10772 +/ {
10773 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
10774 +
10775 + fragment@0 {
10776 + target = <&spi0>;
10777 + __overlay__ {
10778 + cs-gpios = <&gpio 36 1>, <&gpio 35 1>;
10779 + };
10780 + };
10781 +
10782 + fragment@1 {
10783 + target = <&spi0_cs_pins>;
10784 + __overlay__ {
10785 + brcm,pins = <36 35>;
10786 + };
10787 + };
10788 +
10789 + fragment@2 {
10790 + target = <&spi0_pins>;
10791 + __overlay__ {
10792 + brcm,pins = <37 38 39>;
10793 + };
10794 + };
10795 +};
10796 --- /dev/null
10797 +++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
10798 @@ -0,0 +1,33 @@
10799 +/dts-v1/;
10800 +/plugin/;
10801 +
10802 +/ {
10803 + compatible = "brcm,bcm2708";
10804 +
10805 + fragment@0 {
10806 + target = <&spidev0>;
10807 + __dormant__ {
10808 + status = "disabled";
10809 + };
10810 + };
10811 +
10812 + fragment@1 {
10813 + target = <&spi0>;
10814 + __dormant__ {
10815 + #address-cells = <1>;
10816 + #size-cells = <0>;
10817 + status = "okay";
10818 +
10819 + rtc-pcf2123@0 {
10820 + compatible = "nxp,rtc-pcf2123";
10821 + spi-max-frequency = <5000000>;
10822 + spi-cs-high = <1>;
10823 + reg = <0>;
10824 + };
10825 + };
10826 + };
10827 +
10828 + __overrides__ {
10829 + pcf2123 = <0>, "=0=1";
10830 + };
10831 +};
10832 --- /dev/null
10833 +++ b/arch/arm/boot/dts/overlays/spi0-cs-overlay.dts
10834 @@ -0,0 +1,29 @@
10835 +/dts-v1/;
10836 +/plugin/;
10837 +
10838 +
10839 +/ {
10840 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10841 +
10842 + fragment@0 {
10843 + target = <&spi0_cs_pins>;
10844 + frag0: __overlay__ {
10845 + brcm,pins = <8 7>;
10846 + };
10847 + };
10848 +
10849 + fragment@1 {
10850 + target = <&spi0>;
10851 + frag1: __overlay__ {
10852 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
10853 + status = "okay";
10854 + };
10855 + };
10856 +
10857 + __overrides__ {
10858 + cs0_pin = <&frag0>,"brcm,pins:0",
10859 + <&frag1>,"cs-gpios:4";
10860 + cs1_pin = <&frag0>,"brcm,pins:4",
10861 + <&frag1>,"cs-gpios:16";
10862 + };
10863 +};
10864 --- /dev/null
10865 +++ b/arch/arm/boot/dts/overlays/spi0-hw-cs-overlay.dts
10866 @@ -0,0 +1,26 @@
10867 +/*
10868 + * Device tree overlay to re-enable hardware CS for SPI0
10869 + */
10870 +
10871 +/dts-v1/;
10872 +/plugin/;
10873 +
10874 +/ {
10875 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
10876 +
10877 + fragment@0 {
10878 + target = <&spi0>;
10879 + __overlay__ {
10880 + cs-gpios = <0>, <0>;
10881 + status = "okay";
10882 + };
10883 + };
10884 +
10885 + fragment@1 {
10886 + target = <&spi0_cs_pins>;
10887 + __overlay__ {
10888 + brcm,pins = <8 7>;
10889 + brcm,function = <4>; /* alt0 */
10890 + };
10891 + };
10892 +};
10893 --- /dev/null
10894 +++ b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
10895 @@ -0,0 +1,57 @@
10896 +/dts-v1/;
10897 +/plugin/;
10898 +
10899 +
10900 +/ {
10901 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10902 +
10903 + fragment@0 {
10904 + target = <&gpio>;
10905 + __overlay__ {
10906 + spi1_pins: spi1_pins {
10907 + brcm,pins = <19 20 21>;
10908 + brcm,function = <3>; /* alt4 */
10909 + };
10910 +
10911 + spi1_cs_pins: spi1_cs_pins {
10912 + brcm,pins = <18>;
10913 + brcm,function = <1>; /* output */
10914 + };
10915 + };
10916 + };
10917 +
10918 + fragment@1 {
10919 + target = <&spi1>;
10920 + frag1: __overlay__ {
10921 + /* needed to avoid dtc warning */
10922 + #address-cells = <1>;
10923 + #size-cells = <0>;
10924 + pinctrl-names = "default";
10925 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
10926 + cs-gpios = <&gpio 18 1>;
10927 + status = "okay";
10928 +
10929 + spidev1_0: spidev@0 {
10930 + compatible = "spidev";
10931 + reg = <0>; /* CE0 */
10932 + #address-cells = <1>;
10933 + #size-cells = <0>;
10934 + spi-max-frequency = <125000000>;
10935 + status = "okay";
10936 + };
10937 + };
10938 + };
10939 +
10940 + fragment@2 {
10941 + target = <&aux>;
10942 + __overlay__ {
10943 + status = "okay";
10944 + };
10945 + };
10946 +
10947 + __overrides__ {
10948 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
10949 + <&frag1>,"cs-gpios:4";
10950 + cs0_spidev = <&spidev1_0>,"status";
10951 + };
10952 +};
10953 --- /dev/null
10954 +++ b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
10955 @@ -0,0 +1,69 @@
10956 +/dts-v1/;
10957 +/plugin/;
10958 +
10959 +
10960 +/ {
10961 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
10962 +
10963 + fragment@0 {
10964 + target = <&gpio>;
10965 + __overlay__ {
10966 + spi1_pins: spi1_pins {
10967 + brcm,pins = <19 20 21>;
10968 + brcm,function = <3>; /* alt4 */
10969 + };
10970 +
10971 + spi1_cs_pins: spi1_cs_pins {
10972 + brcm,pins = <18 17>;
10973 + brcm,function = <1>; /* output */
10974 + };
10975 + };
10976 + };
10977 +
10978 + fragment@1 {
10979 + target = <&spi1>;
10980 + frag1: __overlay__ {
10981 + /* needed to avoid dtc warning */
10982 + #address-cells = <1>;
10983 + #size-cells = <0>;
10984 + pinctrl-names = "default";
10985 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
10986 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>;
10987 + status = "okay";
10988 +
10989 + spidev1_0: spidev@0 {
10990 + compatible = "spidev";
10991 + reg = <0>; /* CE0 */
10992 + #address-cells = <1>;
10993 + #size-cells = <0>;
10994 + spi-max-frequency = <125000000>;
10995 + status = "okay";
10996 + };
10997 +
10998 + spidev1_1: spidev@1 {
10999 + compatible = "spidev";
11000 + reg = <1>; /* CE1 */
11001 + #address-cells = <1>;
11002 + #size-cells = <0>;
11003 + spi-max-frequency = <125000000>;
11004 + status = "okay";
11005 + };
11006 + };
11007 + };
11008 +
11009 + fragment@2 {
11010 + target = <&aux>;
11011 + __overlay__ {
11012 + status = "okay";
11013 + };
11014 + };
11015 +
11016 + __overrides__ {
11017 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
11018 + <&frag1>,"cs-gpios:4";
11019 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
11020 + <&frag1>,"cs-gpios:16";
11021 + cs0_spidev = <&spidev1_0>,"status";
11022 + cs1_spidev = <&spidev1_1>,"status";
11023 + };
11024 +};
11025 --- /dev/null
11026 +++ b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
11027 @@ -0,0 +1,81 @@
11028 +/dts-v1/;
11029 +/plugin/;
11030 +
11031 +
11032 +/ {
11033 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11034 +
11035 + fragment@0 {
11036 + target = <&gpio>;
11037 + __overlay__ {
11038 + spi1_pins: spi1_pins {
11039 + brcm,pins = <19 20 21>;
11040 + brcm,function = <3>; /* alt4 */
11041 + };
11042 +
11043 + spi1_cs_pins: spi1_cs_pins {
11044 + brcm,pins = <18 17 16>;
11045 + brcm,function = <1>; /* output */
11046 + };
11047 + };
11048 + };
11049 +
11050 + fragment@1 {
11051 + target = <&spi1>;
11052 + frag1: __overlay__ {
11053 + /* needed to avoid dtc warning */
11054 + #address-cells = <1>;
11055 + #size-cells = <0>;
11056 + pinctrl-names = "default";
11057 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
11058 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>, <&gpio 16 1>;
11059 + status = "okay";
11060 +
11061 + spidev1_0: spidev@0 {
11062 + compatible = "spidev";
11063 + reg = <0>; /* CE0 */
11064 + #address-cells = <1>;
11065 + #size-cells = <0>;
11066 + spi-max-frequency = <125000000>;
11067 + status = "okay";
11068 + };
11069 +
11070 + spidev1_1: spidev@1 {
11071 + compatible = "spidev";
11072 + reg = <1>; /* CE1 */
11073 + #address-cells = <1>;
11074 + #size-cells = <0>;
11075 + spi-max-frequency = <125000000>;
11076 + status = "okay";
11077 + };
11078 +
11079 + spidev1_2: spidev@2 {
11080 + compatible = "spidev";
11081 + reg = <2>; /* CE2 */
11082 + #address-cells = <1>;
11083 + #size-cells = <0>;
11084 + spi-max-frequency = <125000000>;
11085 + status = "okay";
11086 + };
11087 + };
11088 + };
11089 +
11090 + fragment@2 {
11091 + target = <&aux>;
11092 + __overlay__ {
11093 + status = "okay";
11094 + };
11095 + };
11096 +
11097 + __overrides__ {
11098 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
11099 + <&frag1>,"cs-gpios:4";
11100 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
11101 + <&frag1>,"cs-gpios:16";
11102 + cs2_pin = <&spi1_cs_pins>,"brcm,pins:8",
11103 + <&frag1>,"cs-gpios:28";
11104 + cs0_spidev = <&spidev1_0>,"status";
11105 + cs1_spidev = <&spidev1_1>,"status";
11106 + cs2_spidev = <&spidev1_2>,"status";
11107 + };
11108 +};
11109 --- /dev/null
11110 +++ b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
11111 @@ -0,0 +1,57 @@
11112 +/dts-v1/;
11113 +/plugin/;
11114 +
11115 +
11116 +/ {
11117 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11118 +
11119 + fragment@0 {
11120 + target = <&gpio>;
11121 + __overlay__ {
11122 + spi2_pins: spi2_pins {
11123 + brcm,pins = <40 41 42>;
11124 + brcm,function = <3>; /* alt4 */
11125 + };
11126 +
11127 + spi2_cs_pins: spi2_cs_pins {
11128 + brcm,pins = <43>;
11129 + brcm,function = <1>; /* output */
11130 + };
11131 + };
11132 + };
11133 +
11134 + fragment@1 {
11135 + target = <&spi2>;
11136 + frag1: __overlay__ {
11137 + /* needed to avoid dtc warning */
11138 + #address-cells = <1>;
11139 + #size-cells = <0>;
11140 + pinctrl-names = "default";
11141 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
11142 + cs-gpios = <&gpio 43 1>;
11143 + status = "okay";
11144 +
11145 + spidev2_0: spidev@0 {
11146 + compatible = "spidev";
11147 + reg = <0>; /* CE0 */
11148 + #address-cells = <1>;
11149 + #size-cells = <0>;
11150 + spi-max-frequency = <125000000>;
11151 + status = "okay";
11152 + };
11153 + };
11154 + };
11155 +
11156 + fragment@2 {
11157 + target = <&aux>;
11158 + __overlay__ {
11159 + status = "okay";
11160 + };
11161 + };
11162 +
11163 + __overrides__ {
11164 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
11165 + <&frag1>,"cs-gpios:4";
11166 + cs0_spidev = <&spidev2_0>,"status";
11167 + };
11168 +};
11169 --- /dev/null
11170 +++ b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
11171 @@ -0,0 +1,69 @@
11172 +/dts-v1/;
11173 +/plugin/;
11174 +
11175 +
11176 +/ {
11177 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11178 +
11179 + fragment@0 {
11180 + target = <&gpio>;
11181 + __overlay__ {
11182 + spi2_pins: spi2_pins {
11183 + brcm,pins = <40 41 42>;
11184 + brcm,function = <3>; /* alt4 */
11185 + };
11186 +
11187 + spi2_cs_pins: spi2_cs_pins {
11188 + brcm,pins = <43 44>;
11189 + brcm,function = <1>; /* output */
11190 + };
11191 + };
11192 + };
11193 +
11194 + fragment@1 {
11195 + target = <&spi2>;
11196 + frag1: __overlay__ {
11197 + /* needed to avoid dtc warning */
11198 + #address-cells = <1>;
11199 + #size-cells = <0>;
11200 + pinctrl-names = "default";
11201 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
11202 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>;
11203 + status = "okay";
11204 +
11205 + spidev2_0: spidev@0 {
11206 + compatible = "spidev";
11207 + reg = <0>; /* CE0 */
11208 + #address-cells = <1>;
11209 + #size-cells = <0>;
11210 + spi-max-frequency = <125000000>;
11211 + status = "okay";
11212 + };
11213 +
11214 + spidev2_1: spidev@1 {
11215 + compatible = "spidev";
11216 + reg = <1>; /* CE1 */
11217 + #address-cells = <1>;
11218 + #size-cells = <0>;
11219 + spi-max-frequency = <125000000>;
11220 + status = "okay";
11221 + };
11222 + };
11223 + };
11224 +
11225 + fragment@2 {
11226 + target = <&aux>;
11227 + __overlay__ {
11228 + status = "okay";
11229 + };
11230 + };
11231 +
11232 + __overrides__ {
11233 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
11234 + <&frag1>,"cs-gpios:4";
11235 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
11236 + <&frag1>,"cs-gpios:16";
11237 + cs0_spidev = <&spidev2_0>,"status";
11238 + cs1_spidev = <&spidev2_1>,"status";
11239 + };
11240 +};
11241 --- /dev/null
11242 +++ b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
11243 @@ -0,0 +1,81 @@
11244 +/dts-v1/;
11245 +/plugin/;
11246 +
11247 +
11248 +/ {
11249 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11250 +
11251 + fragment@0 {
11252 + target = <&gpio>;
11253 + __overlay__ {
11254 + spi2_pins: spi2_pins {
11255 + brcm,pins = <40 41 42>;
11256 + brcm,function = <3>; /* alt4 */
11257 + };
11258 +
11259 + spi2_cs_pins: spi2_cs_pins {
11260 + brcm,pins = <43 44 45>;
11261 + brcm,function = <1>; /* output */
11262 + };
11263 + };
11264 + };
11265 +
11266 + fragment@1 {
11267 + target = <&spi2>;
11268 + frag1: __overlay__ {
11269 + /* needed to avoid dtc warning */
11270 + #address-cells = <1>;
11271 + #size-cells = <0>;
11272 + pinctrl-names = "default";
11273 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
11274 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
11275 + status = "okay";
11276 +
11277 + spidev2_0: spidev@0 {
11278 + compatible = "spidev";
11279 + reg = <0>; /* CE0 */
11280 + #address-cells = <1>;
11281 + #size-cells = <0>;
11282 + spi-max-frequency = <125000000>;
11283 + status = "okay";
11284 + };
11285 +
11286 + spidev2_1: spidev@1 {
11287 + compatible = "spidev";
11288 + reg = <1>; /* CE1 */
11289 + #address-cells = <1>;
11290 + #size-cells = <0>;
11291 + spi-max-frequency = <125000000>;
11292 + status = "okay";
11293 + };
11294 +
11295 + spidev2_2: spidev@2 {
11296 + compatible = "spidev";
11297 + reg = <2>; /* CE2 */
11298 + #address-cells = <1>;
11299 + #size-cells = <0>;
11300 + spi-max-frequency = <125000000>;
11301 + status = "okay";
11302 + };
11303 + };
11304 + };
11305 +
11306 + fragment@2 {
11307 + target = <&aux>;
11308 + __overlay__ {
11309 + status = "okay";
11310 + };
11311 + };
11312 +
11313 + __overrides__ {
11314 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
11315 + <&frag1>,"cs-gpios:4";
11316 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
11317 + <&frag1>,"cs-gpios:16";
11318 + cs2_pin = <&spi2_cs_pins>,"brcm,pins:8",
11319 + <&frag1>,"cs-gpios:28";
11320 + cs0_spidev = <&spidev2_0>,"status";
11321 + cs1_spidev = <&spidev2_1>,"status";
11322 + cs2_spidev = <&spidev2_2>,"status";
11323 + };
11324 +};
11325 --- /dev/null
11326 +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
11327 @@ -0,0 +1,224 @@
11328 +/*
11329 + * tinylcd35-overlay.dts
11330 + *
11331 + * -------------------------------------------------
11332 + * www.tinlylcd.com
11333 + * -------------------------------------------------
11334 + * Device---Driver-----BUS GPIO's
11335 + * display tinylcd35 spi0.0 25 24 18
11336 + * touch ads7846 spi0.1 5
11337 + * rtc ds1307 i2c1-0068
11338 + * rtc pcf8563 i2c1-0051
11339 + * keypad gpio-keys --------- 17 22 27 23 28
11340 + *
11341 + *
11342 + * TinyLCD.com 3.5 inch TFT
11343 + *
11344 + * Version 001
11345 + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
11346 + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support.
11347 + *
11348 + */
11349 +
11350 +/dts-v1/;
11351 +/plugin/;
11352 +
11353 +/ {
11354 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11355 +
11356 + fragment@0 {
11357 + target = <&spi0>;
11358 + __overlay__ {
11359 + status = "okay";
11360 + };
11361 + };
11362 +
11363 + fragment@1 {
11364 + target = <&spidev0>;
11365 + __overlay__ {
11366 + status = "disabled";
11367 + };
11368 + };
11369 +
11370 + fragment@2 {
11371 + target = <&spidev1>;
11372 + __overlay__ {
11373 + status = "disabled";
11374 + };
11375 + };
11376 +
11377 + fragment@3 {
11378 + target = <&gpio>;
11379 + __overlay__ {
11380 + tinylcd35_pins: tinylcd35_pins {
11381 + brcm,pins = <25 24 18>;
11382 + brcm,function = <1>; /* out */
11383 + };
11384 + tinylcd35_ts_pins: tinylcd35_ts_pins {
11385 + brcm,pins = <5>;
11386 + brcm,function = <0>; /* in */
11387 + };
11388 + keypad_pins: keypad_pins {
11389 + brcm,pins = <4 17 22 23 27>;
11390 + brcm,function = <0>; /* in */
11391 + brcm,pull = <1>; /* down */
11392 + };
11393 + };
11394 + };
11395 +
11396 + fragment@4 {
11397 + target = <&spi0>;
11398 + __overlay__ {
11399 + /* needed to avoid dtc warning */
11400 + #address-cells = <1>;
11401 + #size-cells = <0>;
11402 +
11403 + tinylcd35: tinylcd35@0{
11404 + compatible = "neosec,tinylcd";
11405 + reg = <0>;
11406 + pinctrl-names = "default";
11407 + pinctrl-0 = <&tinylcd35_pins>,
11408 + <&tinylcd35_ts_pins>;
11409 +
11410 + spi-max-frequency = <48000000>;
11411 + rotate = <270>;
11412 + fps = <20>;
11413 + bgr;
11414 + buswidth = <8>;
11415 + reset-gpios = <&gpio 25 0>;
11416 + dc-gpios = <&gpio 24 0>;
11417 + led-gpios = <&gpio 18 1>;
11418 + debug = <0>;
11419 +
11420 + init = <0x10000B0 0x80
11421 + 0x10000C0 0x0A 0x0A
11422 + 0x10000C1 0x01 0x01
11423 + 0x10000C2 0x33
11424 + 0x10000C5 0x00 0x42 0x80
11425 + 0x10000B1 0xD0 0x11
11426 + 0x10000B4 0x02
11427 + 0x10000B6 0x00 0x22 0x3B
11428 + 0x10000B7 0x07
11429 + 0x1000036 0x58
11430 + 0x10000F0 0x36 0xA5 0xD3
11431 + 0x10000E5 0x80
11432 + 0x10000E5 0x01
11433 + 0x10000B3 0x00
11434 + 0x10000E5 0x00
11435 + 0x10000F0 0x36 0xA5 0x53
11436 + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
11437 + 0x100003A 0x55
11438 + 0x1000011
11439 + 0x2000001
11440 + 0x1000029>;
11441 + };
11442 +
11443 + tinylcd35_ts: tinylcd35_ts@1 {
11444 + compatible = "ti,ads7846";
11445 + reg = <1>;
11446 + status = "disabled";
11447 +
11448 + spi-max-frequency = <2000000>;
11449 + interrupts = <5 2>; /* high-to-low edge triggered */
11450 + interrupt-parent = <&gpio>;
11451 + pendown-gpio = <&gpio 5 0>;
11452 + ti,x-plate-ohms = /bits/ 16 <100>;
11453 + ti,pressure-max = /bits/ 16 <255>;
11454 + };
11455 + };
11456 + };
11457 +
11458 + /* RTC */
11459 +
11460 + fragment@5 {
11461 + target = <&i2c1>;
11462 + __dormant__ {
11463 + #address-cells = <1>;
11464 + #size-cells = <0>;
11465 +
11466 + status = "okay";
11467 +
11468 + pcf8563: pcf8563@51 {
11469 + compatible = "nxp,pcf8563";
11470 + reg = <0x51>;
11471 + status = "okay";
11472 + };
11473 + };
11474 + };
11475 +
11476 + fragment@6 {
11477 + target = <&i2c1>;
11478 + __dormant__ {
11479 + #address-cells = <1>;
11480 + #size-cells = <0>;
11481 +
11482 + status = "okay";
11483 +
11484 + ds1307: ds1307@68 {
11485 + compatible = "maxim,ds1307";
11486 + reg = <0x68>;
11487 + status = "okay";
11488 + };
11489 + };
11490 + };
11491 +
11492 + /*
11493 + * Values for input event code is found under the
11494 + * 'Keys and buttons' heading in include/uapi/linux/input.h
11495 + */
11496 + fragment@7 {
11497 + target-path = "/soc";
11498 + __overlay__ {
11499 + keypad: keypad {
11500 + compatible = "gpio-keys";
11501 + #address-cells = <1>;
11502 + #size-cells = <0>;
11503 + pinctrl-names = "default";
11504 + pinctrl-0 = <&keypad_pins>;
11505 + status = "disabled";
11506 + autorepeat;
11507 +
11508 + button@17 {
11509 + label = "GPIO KEY_UP";
11510 + linux,code = <103>;
11511 + gpios = <&gpio 17 0>;
11512 + };
11513 + button@22 {
11514 + label = "GPIO KEY_DOWN";
11515 + linux,code = <108>;
11516 + gpios = <&gpio 22 0>;
11517 + };
11518 + button@27 {
11519 + label = "GPIO KEY_LEFT";
11520 + linux,code = <105>;
11521 + gpios = <&gpio 27 0>;
11522 + };
11523 + button@23 {
11524 + label = "GPIO KEY_RIGHT";
11525 + linux,code = <106>;
11526 + gpios = <&gpio 23 0>;
11527 + };
11528 + button@4 {
11529 + label = "GPIO KEY_ENTER";
11530 + linux,code = <28>;
11531 + gpios = <&gpio 4 0>;
11532 + };
11533 + };
11534 + };
11535 + };
11536 +
11537 + __overrides__ {
11538 + speed = <&tinylcd35>,"spi-max-frequency:0";
11539 + rotate = <&tinylcd35>,"rotate:0";
11540 + fps = <&tinylcd35>,"fps:0";
11541 + debug = <&tinylcd35>,"debug:0";
11542 + touch = <&tinylcd35_ts>,"status";
11543 + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
11544 + <&tinylcd35_ts>,"interrupts:0",
11545 + <&tinylcd35_ts>,"pendown-gpio:4";
11546 + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
11547 + rtc-pcf = <0>,"=5";
11548 + rtc-ds = <0>,"=6";
11549 + keypad = <&keypad>,"status";
11550 + };
11551 +};
11552 --- /dev/null
11553 +++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
11554 @@ -0,0 +1,38 @@
11555 +/dts-v1/;
11556 +/plugin/;
11557 +
11558 +/{
11559 + compatible = "brcm,bcm2708";
11560 +
11561 + fragment@0 {
11562 + target = <&uart1>;
11563 + __overlay__ {
11564 + pinctrl-names = "default";
11565 + pinctrl-0 = <&uart1_pins>;
11566 + status = "okay";
11567 + };
11568 + };
11569 +
11570 + fragment@1 {
11571 + target = <&gpio>;
11572 + __overlay__ {
11573 + uart1_pins: uart1_pins {
11574 + brcm,pins = <14 15>;
11575 + brcm,function = <2>; /* alt5 */
11576 + brcm,pull = <0 2>;
11577 + };
11578 + };
11579 + };
11580 +
11581 + fragment@2 {
11582 + target-path = "/chosen";
11583 + __overlay__ {
11584 + bootargs = "8250.nr_uarts=1";
11585 + };
11586 + };
11587 +
11588 + __overrides__ {
11589 + txd1_pin = <&uart1_pins>,"brcm,pins:0";
11590 + rxd1_pin = <&uart1_pins>,"brcm,pins:4";
11591 + };
11592 +};
11593 --- /dev/null
11594 +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
11595 @@ -0,0 +1,89 @@
11596 +/*
11597 + * vc4-fkms-v3d-overlay.dts
11598 + */
11599 +
11600 +/dts-v1/;
11601 +/plugin/;
11602 +
11603 +/ {
11604 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11605 +
11606 + fragment@0 {
11607 + target-path = "/chosen";
11608 + __overlay__ {
11609 + bootargs = "cma=256M";
11610 + };
11611 + };
11612 +
11613 + fragment@1 {
11614 + target-path = "/chosen";
11615 + __dormant__ {
11616 + bootargs = "cma=192M";
11617 + };
11618 + };
11619 +
11620 + fragment@2 {
11621 + target-path = "/chosen";
11622 + __dormant__ {
11623 + bootargs = "cma=128M";
11624 + };
11625 + };
11626 +
11627 + fragment@3 {
11628 + target-path = "/chosen";
11629 + __dormant__ {
11630 + bootargs = "cma=96M";
11631 + };
11632 + };
11633 +
11634 + fragment@4 {
11635 + target-path = "/chosen";
11636 + __dormant__ {
11637 + bootargs = "cma=64M";
11638 + };
11639 + };
11640 +
11641 + fragment@5 {
11642 + target = <&fb>;
11643 + __overlay__ {
11644 + status = "disabled";
11645 + };
11646 + };
11647 +
11648 + fragment@6 {
11649 + target = <&firmwarekms>;
11650 + __overlay__ {
11651 + status = "okay";
11652 + };
11653 + };
11654 +
11655 + fragment@7 {
11656 + target = <&v3d>;
11657 + __overlay__ {
11658 + interrupts = <1 10>;
11659 + status = "okay";
11660 + };
11661 + };
11662 +
11663 + fragment@8 {
11664 + target = <&gpu>;
11665 + __overlay__ {
11666 + status = "okay";
11667 + };
11668 + };
11669 +
11670 + fragment@9 {
11671 + target-path = "/soc/dma";
11672 + __overlay__ {
11673 + brcm,dma-channel-mask = <0x7f35>;
11674 + };
11675 + };
11676 +
11677 + __overrides__ {
11678 + cma-256 = <0>,"+0-1-2-3-4";
11679 + cma-192 = <0>,"-0+1-2-3-4";
11680 + cma-128 = <0>,"-0-1+2-3-4";
11681 + cma-96 = <0>,"-0-1-2+3-4";
11682 + cma-64 = <0>,"-0-1-2-3+4";
11683 + };
11684 +};
11685 --- /dev/null
11686 +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
11687 @@ -0,0 +1,151 @@
11688 +/*
11689 + * vc4-kms-v3d-overlay.dts
11690 + */
11691 +
11692 +/dts-v1/;
11693 +/plugin/;
11694 +
11695 +#include <dt-bindings/clock/bcm2835.h>
11696 +
11697 +/ {
11698 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11699 +
11700 + fragment@0 {
11701 + target-path = "/chosen";
11702 + __overlay__ {
11703 + bootargs = "cma=256M";
11704 + };
11705 + };
11706 +
11707 + fragment@1 {
11708 + target-path = "/chosen";
11709 + __dormant__ {
11710 + bootargs = "cma=192M";
11711 + };
11712 + };
11713 +
11714 + fragment@2 {
11715 + target-path = "/chosen";
11716 + __dormant__ {
11717 + bootargs = "cma=128M";
11718 + };
11719 + };
11720 +
11721 + fragment@3 {
11722 + target-path = "/chosen";
11723 + __dormant__ {
11724 + bootargs = "cma=96M";
11725 + };
11726 + };
11727 +
11728 + fragment@4 {
11729 + target-path = "/chosen";
11730 + __dormant__ {
11731 + bootargs = "cma=64M";
11732 + };
11733 + };
11734 +
11735 + fragment@5 {
11736 + target = <&i2c2>;
11737 + __overlay__ {
11738 + status = "okay";
11739 + };
11740 + };
11741 +
11742 + fragment@6 {
11743 + target = <&cprman>;
11744 + __overlay__ {
11745 + status = "okay";
11746 + };
11747 + };
11748 +
11749 + fragment@7 {
11750 + target = <&fb>;
11751 + __overlay__ {
11752 + status = "disabled";
11753 + };
11754 + };
11755 +
11756 + fragment@8 {
11757 + target = <&pixelvalve0>;
11758 + __overlay__ {
11759 + interrupts = <2 13>; /* pwa0 */
11760 + status = "okay";
11761 + };
11762 + };
11763 +
11764 + fragment@9 {
11765 + target = <&pixelvalve1>;
11766 + __overlay__ {
11767 + interrupts = <2 14>; /* pwa1 */
11768 + status = "okay";
11769 + };
11770 + };
11771 +
11772 + fragment@10 {
11773 + target = <&pixelvalve2>;
11774 + __overlay__ {
11775 + interrupts = <2 10>; /* pixelvalve */
11776 + status = "okay";
11777 + };
11778 + };
11779 +
11780 + fragment@11 {
11781 + target = <&hvs>;
11782 + __overlay__ {
11783 + interrupts = <2 1>;
11784 + status = "okay";
11785 + };
11786 + };
11787 +
11788 + fragment@12 {
11789 + target = <&hdmi>;
11790 + __overlay__ {
11791 + interrupts = <2 8>, <2 9>;
11792 + status = "okay";
11793 + };
11794 + };
11795 +
11796 + fragment@13 {
11797 + target = <&v3d>;
11798 + __overlay__ {
11799 + interrupts = <1 10>;
11800 + status = "okay";
11801 + };
11802 + };
11803 +
11804 + fragment@14 {
11805 + target = <&gpu>;
11806 + __overlay__ {
11807 + status = "okay";
11808 + };
11809 + };
11810 +
11811 + fragment@15 {
11812 + target-path = "/soc/dma";
11813 + __overlay__ {
11814 + brcm,dma-channel-mask = <0x7f35>;
11815 + };
11816 + };
11817 +
11818 +
11819 + fragment@16 {
11820 + target = <&clocks>;
11821 + __overlay__ {
11822 + claim-clocks = <
11823 + BCM2835_PLLD_DSI0
11824 + BCM2835_PLLD_DSI1
11825 + BCM2835_PLLH_AUX
11826 + BCM2835_PLLH_PIX
11827 + >;
11828 + };
11829 + };
11830 +
11831 + __overrides__ {
11832 + cma-256 = <0>,"+0-1-2-3-4";
11833 + cma-192 = <0>,"-0+1-2-3-4";
11834 + cma-128 = <0>,"-0-1+2-3-4";
11835 + cma-96 = <0>,"-0-1-2+3-4";
11836 + cma-64 = <0>,"-0-1-2-3+4";
11837 + };
11838 +};
11839 --- /dev/null
11840 +++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
11841 @@ -0,0 +1,30 @@
11842 +/dts-v1/;
11843 +/plugin/;
11844 +
11845 +/{
11846 + compatible = "brcm,bcm2708";
11847 +
11848 + // There is no VGA driver module, but we need a platform device
11849 + // node (that doesn't already use pinctrl) to hang the pinctrl
11850 + // reference on - leds will do
11851 +
11852 + fragment@0 {
11853 + target = <&leds>;
11854 + __overlay__ {
11855 + pinctrl-names = "default";
11856 + pinctrl-0 = <&vga666_pins>;
11857 + };
11858 + };
11859 +
11860 + fragment@1 {
11861 + target = <&gpio>;
11862 + __overlay__ {
11863 + vga666_pins: vga666_pins {
11864 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12
11865 + 13 14 15 16 17 18 19 20 21>;
11866 + brcm,function = <6>; /* alt2 */
11867 + brcm,pull = <0>; /* no pull */
11868 + };
11869 + };
11870 + };
11871 +};
11872 --- /dev/null
11873 +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
11874 @@ -0,0 +1,41 @@
11875 +// Definitions for w1-gpio module (without external pullup)
11876 +/dts-v1/;
11877 +/plugin/;
11878 +
11879 +/ {
11880 + compatible = "brcm,bcm2708";
11881 +
11882 + fragment@0 {
11883 + target-path = "/";
11884 + __overlay__ {
11885 +
11886 + w1: onewire@0 {
11887 + compatible = "w1-gpio";
11888 + pinctrl-names = "default";
11889 + pinctrl-0 = <&w1_pins>;
11890 + gpios = <&gpio 4 0>;
11891 + rpi,parasitic-power = <0>;
11892 + status = "okay";
11893 + };
11894 + };
11895 + };
11896 +
11897 + fragment@1 {
11898 + target = <&gpio>;
11899 + __overlay__ {
11900 + w1_pins: w1_pins@0 {
11901 + brcm,pins = <4>;
11902 + brcm,function = <0>; // in (initially)
11903 + brcm,pull = <0>; // off
11904 + };
11905 + };
11906 + };
11907 +
11908 + __overrides__ {
11909 + gpiopin = <&w1>,"gpios:4",
11910 + <&w1>,"reg:0",
11911 + <&w1_pins>,"brcm,pins:0",
11912 + <&w1_pins>,"reg:0";
11913 + pullup = <&w1>,"rpi,parasitic-power:0";
11914 + };
11915 +};
11916 --- /dev/null
11917 +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
11918 @@ -0,0 +1,43 @@
11919 +// Definitions for w1-gpio module (with external pullup)
11920 +/dts-v1/;
11921 +/plugin/;
11922 +
11923 +/ {
11924 + compatible = "brcm,bcm2708";
11925 +
11926 + fragment@0 {
11927 + target-path = "/";
11928 + __overlay__ {
11929 +
11930 + w1: onewire@0 {
11931 + compatible = "w1-gpio";
11932 + pinctrl-names = "default";
11933 + pinctrl-0 = <&w1_pins>;
11934 + gpios = <&gpio 4 0>, <&gpio 5 1>;
11935 + rpi,parasitic-power = <0>;
11936 + status = "okay";
11937 + };
11938 + };
11939 + };
11940 +
11941 + fragment@1 {
11942 + target = <&gpio>;
11943 + __overlay__ {
11944 + w1_pins: w1_pins@0 {
11945 + brcm,pins = <4 5>;
11946 + brcm,function = <0 1>; // in out
11947 + brcm,pull = <0 0>; // off off
11948 + };
11949 + };
11950 + };
11951 +
11952 + __overrides__ {
11953 + gpiopin = <&w1>,"gpios:4",
11954 + <&w1>,"reg:0",
11955 + <&w1_pins>,"brcm,pins:0",
11956 + <&w1_pins>,"reg:0";
11957 + extpullup = <&w1>,"gpios:16",
11958 + <&w1_pins>,"brcm,pins:4";
11959 + pullup = <&w1>,"rpi,parasitic-power:0";
11960 + };
11961 +};
11962 --- /dev/null
11963 +++ b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
11964 @@ -0,0 +1,44 @@
11965 +/*
11966 + * Device Tree overlay for Witty Pi extension board by UUGear
11967 + *
11968 + */
11969 +
11970 +/dts-v1/;
11971 +/plugin/;
11972 +
11973 +/ {
11974 +
11975 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
11976 +
11977 + fragment@0 {
11978 + target = <&leds>;
11979 + __overlay__ {
11980 + compatible = "gpio-leds";
11981 + wittypi_led: wittypi_led {
11982 + label = "wittypi_led";
11983 + linux,default-trigger = "default-on";
11984 + gpios = <&gpio 17 0>;
11985 + };
11986 + };
11987 + };
11988 +
11989 + fragment@1 {
11990 + target = <&i2c1>;
11991 + __overlay__ {
11992 + #address-cells = <1>;
11993 + #size-cells = <0>;
11994 +
11995 + rtc: ds1337@68 {
11996 + compatible = "dallas,ds1337";
11997 + reg = <0x68>;
11998 + wakeup-source;
11999 + };
12000 + };
12001 + };
12002 +
12003 + __overrides__ {
12004 + led_gpio = <&wittypi_led>,"gpios:4";
12005 + led_trigger = <&wittypi_led>,"linux,default-trigger";
12006 + };
12007 +
12008 +};
12009 --- a/scripts/Makefile.dtbinst
12010 +++ b/scripts/Makefile.dtbinst
12011 @@ -22,6 +22,7 @@ include scripts/Kbuild.include
12012 include $(src)/Makefile
12013
12014 dtbinst-files := $(dtb-y)
12015 +dtboinst-files := $(dtbo-y)
12016 dtbinst-dirs := $(dts-dirs)
12017
12018 # Helper targets for Installing DTBs into the boot directory
12019 @@ -33,10 +34,13 @@ install-dir = $(patsubst $(dtbinst_root)
12020 $(dtbinst-files): %.dtb: $(obj)/%.dtb
12021 $(call cmd,dtb_install,$(install-dir))
12022
12023 +$(dtboinst-files): %.dtbo: $(obj)/%.dtbo
12024 + $(call cmd,dtb_install,$(install-dir))
12025 +
12026 $(dtbinst-dirs):
12027 $(Q)$(MAKE) $(dtbinst)=$(obj)/$@
12028
12029 -PHONY += $(dtbinst-files) $(dtbinst-dirs)
12030 -__dtbs_install: $(dtbinst-files) $(dtbinst-dirs)
12031 +PHONY += $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs)
12032 +__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs)
12033
12034 .PHONY: $(PHONY)
12035 --- a/scripts/Makefile.lib
12036 +++ b/scripts/Makefile.lib
12037 @@ -316,6 +316,17 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
12038 $(obj)/%.dtb: $(src)/%.dts FORCE
12039 $(call if_changed_dep,dtc)
12040
12041 +quiet_cmd_dtco = DTCO $@
12042 +cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \
12043 + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
12044 + $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \
12045 + -i $(dir $<) $(DTC_FLAGS) \
12046 + -d $(depfile).dtc.tmp $(dtc-tmp) ; \
12047 + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
12048 +
12049 +$(obj)/%.dtbo: $(src)/%-overlay.dts FORCE
12050 + $(call if_changed_dep,dtco)
12051 +
12052 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
12053
12054 # Bzip2