1 From 81589b5e28022d0a4738981f9e5ffb9fadcfaa5b Mon Sep 17 00:00:00 2001
2 From: notro <notro@tronnes.org>
3 Date: Wed, 9 Jul 2014 14:46:08 +0200
4 Subject: [PATCH] BCM2708: Add core Device Tree support
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
9 Add the bare minimum needed to boot BCM2708 from a Device Tree.
11 Signed-off-by: Noralf Tronnes <notro@tronnes.org>
13 BCM2708: DT: change 'axi' nodename to 'soc'
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.
19 Signed-off-by: Noralf Tronnes notro@tronnes.org
21 BCM2708_DT: Correct length of the peripheral space
23 Use dts-dirs feature for overlays.
25 The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
27 Using this fixes the install_dtbs target, which previously did not install the overlays.
29 BCM270X_DT: configure I2S DMA channels
31 Signed-off-by: Matthias Reichl <hias@horus.com>
33 BCM270X_DT: switch to bcm2835-i2s
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.
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.
43 Signed-off-by: Matthias Reichl <hias@horus.com>
45 SDIO-overlay: add poll_once-boolean parameter
47 Add paramter to toggle sdio-device-polling
48 done every second or once at boot-time.
50 Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
52 BCM270X_DT: Make mmc overlay compatible with current firmware
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.
61 mmc-overlay.dts (that switches back to the original mmc sdcard
62 driver) is the only overlay violating that rule, and this patch
65 bcm270x_dt: Use the sdhost MMC controller by default
67 The "mmc" overlay reverts to using the other controller.
69 squash: Add cprman to dt
71 BCM270X_DT: Use clk_core for I2C interfaces
73 BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
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
79 Mainline dts files are based on these files:
82 bcm2835.dtsi bcm2836.dtsi
85 Current downstream are based on these:
87 bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi
90 This patch introduces this dependency:
92 bcm2708.dtsi bcm2709.dtsi
95 bcm2835.dtsi bcm2836.dtsi
104 bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
105 bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.
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.
125 Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
127 BCM270X_DT: Use raspberrypi-power to turn on USB power
129 Use the raspberrypi-power driver to turn on USB power.
131 Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
133 BCM270X_DT: Add a .dtbo target, use for overlays
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
140 The RPi firmware uses the DDTK trailer atom to choose which type of
141 overlay to use for each kernel.
143 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
145 BCM270X_DT: Don't generate "linux,phandle" props
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.
152 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
154 BCM270X_DT: Add overlay for enc28j60 on SPI2
156 Works on SPI2 for compute module
158 BCM270X_DT: Add midi-uart0 overlay
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.
164 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
166 BCM270X_DT: Add i2c-sensor overlay
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.
172 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
174 BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (#1752)
176 We now create overlays as .dtbo files.
178 build: support for .dtbo files for dtb overlays
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
183 Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
184 Signed-off-by: Khem Raj <raj.khem@gmail.com>
186 BCM270X: Drop position requirement for CMA in VC4 overlay.
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).
192 Signed-off-by: Eric Anholt <eric@anholt.net>
194 BCM270X_DT: RPi Device Tree tidy
196 Use the upstream sdhost node, add thermal-zones, and factor out some
199 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
201 kbuild: Silence unhelpful DTC warnings
203 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
205 BCM270X_DT: DT build rules no longer arch-specific
207 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
210 arch/arm/boot/dts/Makefile | 27 +-
211 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 124 +
212 arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts | 127 +
213 arch/arm/boot/dts/bcm2708-rpi-b.dts | 114 +
214 arch/arm/boot/dts/bcm2708-rpi-bt.dtsi | 26 +
215 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 97 +
216 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 18 +
217 arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 163 +
218 arch/arm/boot/dts/bcm2708-rpi-zero.dts | 117 +
219 arch/arm/boot/dts/bcm2708-rpi.dtsi | 36 +
220 arch/arm/boot/dts/bcm2708.dtsi | 12 +
221 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 124 +
222 arch/arm/boot/dts/bcm2709-rpi.dtsi | 5 +
223 arch/arm/boot/dts/bcm2709.dtsi | 22 +
224 arch/arm/boot/dts/bcm270x-rpi.dtsi | 154 +
225 arch/arm/boot/dts/bcm270x.dtsi | 197 ++
226 arch/arm/boot/dts/bcm2710-rpi-2-b.dts | 124 +
227 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 196 ++
228 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 198 ++
229 arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 133 +
230 arch/arm/boot/dts/bcm2710.dtsi | 29 +
231 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 306 +-
232 arch/arm/boot/dts/bcm2711-rpi-cm4.dts | 609 ++++
233 arch/arm/boot/dts/bcm2711-rpi.dtsi | 201 ++
234 arch/arm/boot/dts/bcm2711.dtsi | 34 +-
235 arch/arm/boot/dts/bcm271x-rpi-bt.dtsi | 26 +
236 arch/arm/boot/dts/bcm2835-common.dtsi | 4 +-
237 arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 5 +
238 arch/arm/boot/dts/bcm2835-rpi-a.dts | 7 +
239 arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 5 +
240 arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 7 +
241 arch/arm/boot/dts/bcm2835-rpi-b.dts | 7 +
242 arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts | 5 +
243 arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 5 +
244 arch/arm/boot/dts/bcm2835-rpi-zero.dts | 5 +
245 arch/arm/boot/dts/bcm2835-rpi.dtsi | 15 +-
246 arch/arm/boot/dts/bcm2835.dtsi | 2 +-
247 arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 5 +
248 arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts | 5 +
249 arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 5 +
250 arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 5 +
251 arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 5 +
252 arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi | 4 +
253 arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi | 4 +
254 arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi | 4 +
255 .../boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi | 4 +
256 .../boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi | 4 +
257 .../boot/dts/bcm283x-rpi-usb-peripheral.dtsi | 7 -
258 arch/arm/boot/dts/bcm283x.dtsi | 26 +-
259 arch/arm/boot/dts/overlays/Makefile | 216 ++
260 arch/arm/boot/dts/overlays/README | 3040 +++++++++++++++++
261 .../arm/boot/dts/overlays/act-led-overlay.dts | 27 +
262 .../boot/dts/overlays/adafruit18-overlay.dts | 55 +
263 .../dts/overlays/adau1977-adc-overlay.dts | 40 +
264 .../dts/overlays/adau7002-simple-overlay.dts | 52 +
265 .../arm/boot/dts/overlays/ads1015-overlay.dts | 98 +
266 .../arm/boot/dts/overlays/ads1115-overlay.dts | 103 +
267 .../arm/boot/dts/overlays/ads7846-overlay.dts | 89 +
268 .../boot/dts/overlays/adv7282m-overlay.dts | 65 +
269 .../boot/dts/overlays/adv728x-m-overlay.dts | 37 +
270 .../overlays/akkordion-iqdacplus-overlay.dts | 49 +
271 .../allo-boss-dac-pcm512x-audio-overlay.dts | 59 +
272 .../dts/overlays/allo-digione-overlay.dts | 44 +
273 .../allo-katana-dac-audio-overlay.dts | 57 +
274 .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 +
275 ...o-piano-dac-plus-pcm512x-audio-overlay.dts | 55 +
276 arch/arm/boot/dts/overlays/anyspi-overlay.dts | 205 ++
277 .../boot/dts/overlays/apds9960-overlay.dts | 57 +
278 .../boot/dts/overlays/applepi-dac-overlay.dts | 57 +
279 .../boot/dts/overlays/at86rf233-overlay.dts | 57 +
280 .../overlays/audioinjector-addons-overlay.dts | 60 +
281 ...dioinjector-isolated-soundcard-overlay.dts | 55 +
282 .../overlays/audioinjector-ultra-overlay.dts | 71 +
283 .../audioinjector-wm8731-audio-overlay.dts | 39 +
284 .../dts/overlays/audiosense-pi-overlay.dts | 82 +
285 .../boot/dts/overlays/audremap-overlay.dts | 35 +
286 .../boot/dts/overlays/balena-fin-overlay.dts | 125 +
287 arch/arm/boot/dts/overlays/cma-overlay.dts | 36 +
288 arch/arm/boot/dts/overlays/dht11-overlay.dts | 41 +
289 .../dts/overlays/dionaudio-loco-overlay.dts | 39 +
290 .../overlays/dionaudio-loco-v2-overlay.dts | 49 +
291 .../boot/dts/overlays/disable-bt-overlay.dts | 64 +
292 .../dts/overlays/disable-wifi-overlay.dts | 20 +
293 arch/arm/boot/dts/overlays/dpi18-overlay.dts | 39 +
294 arch/arm/boot/dts/overlays/dpi24-overlay.dts | 39 +
295 arch/arm/boot/dts/overlays/draws-overlay.dts | 208 ++
296 .../arm/boot/dts/overlays/dwc-otg-overlay.dts | 14 +
297 arch/arm/boot/dts/overlays/dwc2-overlay.dts | 26 +
298 .../boot/dts/overlays/enc28j60-overlay.dts | 53 +
299 .../dts/overlays/enc28j60-spi2-overlay.dts | 47 +
300 .../arm/boot/dts/overlays/exc3000-overlay.dts | 48 +
301 .../boot/dts/overlays/fe-pi-audio-overlay.dts | 70 +
302 .../boot/dts/overlays/fsm-demo-overlay.dts | 104 +
303 .../boot/dts/overlays/ghost-amp-overlay.dts | 119 +
304 arch/arm/boot/dts/overlays/goodix-overlay.dts | 46 +
305 .../googlevoicehat-soundcard-overlay.dts | 49 +
306 .../boot/dts/overlays/gpio-fan-overlay.dts | 79 +
307 .../arm/boot/dts/overlays/gpio-ir-overlay.dts | 49 +
308 .../boot/dts/overlays/gpio-ir-tx-overlay.dts | 36 +
309 .../boot/dts/overlays/gpio-key-overlay.dts | 48 +
310 .../overlays/gpio-no-bank0-irq-overlay.dts | 14 +
311 .../boot/dts/overlays/gpio-no-irq-overlay.dts | 14 +
312 .../dts/overlays/gpio-poweroff-overlay.dts | 37 +
313 .../dts/overlays/gpio-shutdown-overlay.dts | 84 +
314 .../boot/dts/overlays/hd44780-lcd-overlay.dts | 46 +
315 .../hdmi-backlight-hwhack-gpio-overlay.dts | 47 +
316 .../dts/overlays/hifiberry-amp-overlay.dts | 39 +
317 .../dts/overlays/hifiberry-dac-overlay.dts | 34 +
318 .../overlays/hifiberry-dacplus-overlay.dts | 65 +
319 .../overlays/hifiberry-dacplusadc-overlay.dts | 72 +
320 .../hifiberry-dacplusadcpro-overlay.dts | 65 +
321 .../overlays/hifiberry-dacplusdsp-overlay.dts | 34 +
322 .../overlays/hifiberry-dacplushd-overlay.dts | 106 +
323 .../dts/overlays/hifiberry-digi-overlay.dts | 41 +
324 .../overlays/hifiberry-digi-pro-overlay.dts | 43 +
325 .../boot/dts/overlays/highperi-overlay.dts | 63 +
326 arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 +
327 .../boot/dts/overlays/hy28b-2017-overlay.dts | 152 +
328 arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 +
329 .../boot/dts/overlays/i-sabre-q2m-overlay.dts | 39 +
330 .../boot/dts/overlays/i2c-bcm2708-overlay.dts | 13 +
331 .../boot/dts/overlays/i2c-gpio-overlay.dts | 47 +
332 .../arm/boot/dts/overlays/i2c-mux-overlay.dts | 139 +
333 .../dts/overlays/i2c-pwm-pca9685a-overlay.dts | 26 +
334 .../dts/overlays/i2c-rtc-gpio-overlay.dts | 266 ++
335 .../arm/boot/dts/overlays/i2c-rtc-overlay.dts | 278 ++
336 .../boot/dts/overlays/i2c-sensor-overlay.dts | 271 ++
337 arch/arm/boot/dts/overlays/i2c0-overlay.dts | 74 +
338 arch/arm/boot/dts/overlays/i2c1-overlay.dts | 44 +
339 arch/arm/boot/dts/overlays/i2c3-overlay.dts | 36 +
340 arch/arm/boot/dts/overlays/i2c4-overlay.dts | 36 +
341 arch/arm/boot/dts/overlays/i2c5-overlay.dts | 36 +
342 arch/arm/boot/dts/overlays/i2c6-overlay.dts | 36 +
343 .../dts/overlays/i2s-gpio28-31-overlay.dts | 18 +
344 .../boot/dts/overlays/ilitek251x-overlay.dts | 45 +
345 arch/arm/boot/dts/overlays/imx219-overlay.dts | 119 +
346 arch/arm/boot/dts/overlays/imx290-overlay.dts | 32 +
347 .../boot/dts/overlays/imx290_327-overlay.dtsi | 145 +
348 arch/arm/boot/dts/overlays/imx477-overlay.dts | 119 +
349 .../dts/overlays/iqaudio-codec-overlay.dts | 42 +
350 .../boot/dts/overlays/iqaudio-dac-overlay.dts | 46 +
351 .../dts/overlays/iqaudio-dacplus-overlay.dts | 49 +
352 .../iqaudio-digi-wm8804-audio-overlay.dts | 47 +
353 .../arm/boot/dts/overlays/irs1125-overlay.dts | 85 +
354 .../dts/overlays/jedec-spi-nor-overlay.dts | 309 ++
355 .../dts/overlays/justboom-both-overlay.dts | 65 +
356 .../dts/overlays/justboom-dac-overlay.dts | 46 +
357 .../dts/overlays/justboom-digi-overlay.dts | 41 +
358 .../arm/boot/dts/overlays/ltc294x-overlay.dts | 86 +
359 .../boot/dts/overlays/max98357a-overlay.dts | 84 +
360 .../boot/dts/overlays/maxtherm-overlay.dts | 166 +
361 .../boot/dts/overlays/mbed-dac-overlay.dts | 64 +
362 .../boot/dts/overlays/mcp23017-overlay.dts | 69 +
363 .../boot/dts/overlays/mcp23s17-overlay.dts | 732 ++++
364 .../dts/overlays/mcp2515-can0-overlay.dts | 73 +
365 .../dts/overlays/mcp2515-can1-overlay.dts | 73 +
366 .../arm/boot/dts/overlays/mcp3008-overlay.dts | 205 ++
367 .../arm/boot/dts/overlays/mcp3202-overlay.dts | 205 ++
368 .../arm/boot/dts/overlays/mcp342x-overlay.dts | 164 +
369 .../dts/overlays/media-center-overlay.dts | 134 +
370 .../boot/dts/overlays/merus-amp-overlay.dts | 60 +
371 .../boot/dts/overlays/midi-uart0-overlay.dts | 36 +
372 .../boot/dts/overlays/midi-uart1-overlay.dts | 43 +
373 .../boot/dts/overlays/miniuart-bt-overlay.dts | 93 +
374 arch/arm/boot/dts/overlays/mmc-overlay.dts | 46 +
375 .../arm/boot/dts/overlays/mpu6050-overlay.dts | 28 +
376 .../arm/boot/dts/overlays/mz61581-overlay.dts | 117 +
377 arch/arm/boot/dts/overlays/ov5647-overlay.dts | 92 +
378 arch/arm/boot/dts/overlays/ov7251-overlay.dts | 111 +
379 arch/arm/boot/dts/overlays/ov9281-overlay.dts | 111 +
380 arch/arm/boot/dts/overlays/overlay_map.dts | 141 +
381 .../arm/boot/dts/overlays/papirus-overlay.dts | 89 +
382 .../arm/boot/dts/overlays/pca953x-overlay.dts | 240 ++
383 arch/arm/boot/dts/overlays/pibell-overlay.dts | 81 +
384 .../dts/overlays/pifacedigital-overlay.dts | 144 +
385 arch/arm/boot/dts/overlays/piglow-overlay.dts | 97 +
386 .../boot/dts/overlays/piscreen-overlay.dts | 102 +
387 .../boot/dts/overlays/piscreen2r-overlay.dts | 106 +
388 .../arm/boot/dts/overlays/pisound-overlay.dts | 120 +
389 .../arm/boot/dts/overlays/pitft22-overlay.dts | 69 +
390 .../overlays/pitft28-capacitive-overlay.dts | 91 +
391 .../overlays/pitft28-resistive-overlay.dts | 119 +
392 .../overlays/pitft35-resistive-overlay.dts | 119 +
393 .../boot/dts/overlays/pps-gpio-overlay.dts | 38 +
394 .../boot/dts/overlays/pwm-2chan-overlay.dts | 49 +
395 .../boot/dts/overlays/pwm-ir-tx-overlay.dts | 40 +
396 arch/arm/boot/dts/overlays/pwm-overlay.dts | 45 +
397 .../arm/boot/dts/overlays/qca7000-overlay.dts | 55 +
398 .../dts/overlays/rotary-encoder-overlay.dts | 59 +
399 .../dts/overlays/rpi-backlight-overlay.dts | 21 +
400 .../overlays/rpi-cirrus-wm5102-overlay.dts | 172 +
401 .../arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 +
402 .../boot/dts/overlays/rpi-display-overlay.dts | 91 +
403 .../boot/dts/overlays/rpi-ft5406-overlay.dts | 25 +
404 .../arm/boot/dts/overlays/rpi-poe-overlay.dts | 95 +
405 .../boot/dts/overlays/rpi-proto-overlay.dts | 39 +
406 .../boot/dts/overlays/rpi-sense-overlay.dts | 47 +
407 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts | 34 +
408 .../boot/dts/overlays/rpivid-v4l2-overlay.dts | 61 +
409 .../rra-digidac1-wm8741-audio-overlay.dts | 49 +
410 .../boot/dts/overlays/sainsmart18-overlay.dts | 52 +
411 .../dts/overlays/sc16is750-i2c-overlay.dts | 43 +
412 .../dts/overlays/sc16is752-i2c-overlay.dts | 43 +
413 .../dts/overlays/sc16is752-spi0-overlay.dts | 49 +
414 .../dts/overlays/sc16is752-spi1-overlay.dts | 67 +
415 arch/arm/boot/dts/overlays/sdhost-overlay.dts | 38 +
416 arch/arm/boot/dts/overlays/sdio-overlay.dts | 77 +
417 .../arm/boot/dts/overlays/sdtweak-overlay.dts | 25 +
418 .../boot/dts/overlays/sh1106-spi-overlay.dts | 84 +
419 .../arm/boot/dts/overlays/smi-dev-overlay.dts | 20 +
420 .../boot/dts/overlays/smi-nand-overlay.dts | 66 +
421 arch/arm/boot/dts/overlays/smi-overlay.dts | 37 +
422 .../dts/overlays/spi-gpio35-39-overlay.dts | 31 +
423 .../dts/overlays/spi-gpio40-45-overlay.dts | 36 +
424 .../arm/boot/dts/overlays/spi-rtc-overlay.dts | 33 +
425 .../boot/dts/overlays/spi0-1cs-overlay.dts | 42 +
426 .../boot/dts/overlays/spi0-2cs-overlay.dts | 37 +
427 .../boot/dts/overlays/spi1-1cs-overlay.dts | 57 +
428 .../boot/dts/overlays/spi1-2cs-overlay.dts | 69 +
429 .../boot/dts/overlays/spi1-3cs-overlay.dts | 81 +
430 .../boot/dts/overlays/spi2-1cs-overlay.dts | 57 +
431 .../boot/dts/overlays/spi2-2cs-overlay.dts | 69 +
432 .../boot/dts/overlays/spi2-3cs-overlay.dts | 81 +
433 .../boot/dts/overlays/spi3-1cs-overlay.dts | 44 +
434 .../boot/dts/overlays/spi3-2cs-overlay.dts | 56 +
435 .../boot/dts/overlays/spi4-1cs-overlay.dts | 44 +
436 .../boot/dts/overlays/spi4-2cs-overlay.dts | 56 +
437 .../boot/dts/overlays/spi5-1cs-overlay.dts | 44 +
438 .../boot/dts/overlays/spi5-2cs-overlay.dts | 56 +
439 .../boot/dts/overlays/spi6-1cs-overlay.dts | 44 +
440 .../boot/dts/overlays/spi6-2cs-overlay.dts | 56 +
441 .../arm/boot/dts/overlays/ssd1306-overlay.dts | 36 +
442 .../boot/dts/overlays/ssd1306-spi-overlay.dts | 84 +
443 .../boot/dts/overlays/ssd1351-spi-overlay.dts | 83 +
444 .../dts/overlays/superaudioboard-overlay.dts | 73 +
445 arch/arm/boot/dts/overlays/sx150x-overlay.dts | 1706 +++++++++
446 .../dts/overlays/tc358743-audio-overlay.dts | 52 +
447 .../boot/dts/overlays/tc358743-overlay.dts | 107 +
448 .../boot/dts/overlays/tinylcd35-overlay.dts | 222 ++
449 .../boot/dts/overlays/tpm-slb9670-overlay.dts | 44 +
450 arch/arm/boot/dts/overlays/uart0-overlay.dts | 32 +
451 arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 +
452 arch/arm/boot/dts/overlays/uart2-overlay.dts | 27 +
453 arch/arm/boot/dts/overlays/uart3-overlay.dts | 27 +
454 arch/arm/boot/dts/overlays/uart4-overlay.dts | 27 +
455 arch/arm/boot/dts/overlays/uart5-overlay.dts | 27 +
456 arch/arm/boot/dts/overlays/udrc-overlay.dts | 128 +
457 .../boot/dts/overlays/upstream-overlay.dts | 113 +
458 .../dts/overlays/upstream-pi4-overlay.dts | 161 +
459 .../dts/overlays/vc4-fkms-v3d-overlay.dts | 40 +
460 .../overlays/vc4-kms-kippah-7inch-overlay.dts | 43 +
461 .../boot/dts/overlays/vc4-kms-v3d-overlay.dts | 122 +
462 .../dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 186 +
463 arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 +
464 .../arm/boot/dts/overlays/w1-gpio-overlay.dts | 40 +
465 .../dts/overlays/w1-gpio-pullup-overlay.dts | 42 +
466 arch/arm/boot/dts/overlays/w5500-overlay.dts | 63 +
467 .../arm/boot/dts/overlays/wittypi-overlay.dts | 44 +
468 arch/arm64/boot/dts/Makefile | 2 +
469 arch/arm64/boot/dts/broadcom/Makefile | 16 +-
470 .../boot/dts/broadcom/bcm2710-rpi-2-b.dts | 3 +
471 .../dts/broadcom/bcm2710-rpi-3-b-plus.dts | 3 +
472 .../boot/dts/broadcom/bcm2710-rpi-3-b.dts | 3 +
473 .../boot/dts/broadcom/bcm2710-rpi-cm3.dts | 3 +
474 .../boot/dts/broadcom/bcm2711-rpi-4-b.dts | 5 +-
475 .../dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi | 1 +
476 .../dts/broadcom/bcm283x-rpi-lan7515.dtsi | 1 +
477 arch/arm64/boot/dts/overlays | 1 +
478 scripts/Makefile.dtbinst | 6 +-
479 scripts/Makefile.lib | 13 +
480 271 files changed, 23898 insertions(+), 31 deletions(-)
481 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
482 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
483 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
484 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
485 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts
486 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
487 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
488 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-zero.dts
489 create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi
490 create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
491 create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
492 create mode 100644 arch/arm/boot/dts/bcm2709-rpi.dtsi
493 create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
494 create mode 100644 arch/arm/boot/dts/bcm270x-rpi.dtsi
495 create mode 100644 arch/arm/boot/dts/bcm270x.dtsi
496 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-2-b.dts
497 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
498 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts
499 create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts
500 create mode 100644 arch/arm/boot/dts/bcm2710.dtsi
501 create mode 100644 arch/arm/boot/dts/bcm2711-rpi-cm4.dts
502 create mode 100644 arch/arm/boot/dts/bcm2711-rpi.dtsi
503 create mode 100644 arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
504 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
505 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
506 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
507 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
508 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
509 delete mode 100644 arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
510 create mode 100644 arch/arm/boot/dts/overlays/Makefile
511 create mode 100644 arch/arm/boot/dts/overlays/README
512 create mode 100644 arch/arm/boot/dts/overlays/act-led-overlay.dts
513 create mode 100644 arch/arm/boot/dts/overlays/adafruit18-overlay.dts
514 create mode 100644 arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
515 create mode 100644 arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
516 create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts
517 create mode 100644 arch/arm/boot/dts/overlays/ads1115-overlay.dts
518 create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
519 create mode 100644 arch/arm/boot/dts/overlays/adv7282m-overlay.dts
520 create mode 100644 arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
521 create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
522 create mode 100644 arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
523 create mode 100644 arch/arm/boot/dts/overlays/allo-digione-overlay.dts
524 create mode 100644 arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
525 create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
526 create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
527 create mode 100755 arch/arm/boot/dts/overlays/anyspi-overlay.dts
528 create mode 100644 arch/arm/boot/dts/overlays/apds9960-overlay.dts
529 create mode 100644 arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
530 create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts
531 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
532 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
533 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
534 create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
535 create mode 100644 arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
536 create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts
537 create mode 100644 arch/arm/boot/dts/overlays/balena-fin-overlay.dts
538 create mode 100644 arch/arm/boot/dts/overlays/cma-overlay.dts
539 create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
540 create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
541 create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
542 create mode 100644 arch/arm/boot/dts/overlays/disable-bt-overlay.dts
543 create mode 100644 arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
544 create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts
545 create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts
546 create mode 100644 arch/arm/boot/dts/overlays/draws-overlay.dts
547 create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
548 create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts
549 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
550 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
551 create mode 100644 arch/arm/boot/dts/overlays/exc3000-overlay.dts
552 create mode 100644 arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
553 create mode 100644 arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
554 create mode 100644 arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
555 create mode 100644 arch/arm/boot/dts/overlays/goodix-overlay.dts
556 create mode 100644 arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
557 create mode 100644 arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
558 create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
559 create mode 100644 arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
560 create mode 100644 arch/arm/boot/dts/overlays/gpio-key-overlay.dts
561 create mode 100755 arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
562 create mode 100644 arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
563 create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
564 create mode 100644 arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
565 create mode 100644 arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
566 create mode 100644 arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
567 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
568 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
569 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
570 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
571 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
572 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
573 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
574 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
575 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
576 create mode 100644 arch/arm/boot/dts/overlays/highperi-overlay.dts
577 create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
578 create mode 100644 arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
579 create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
580 create mode 100644 arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
581 create mode 100644 arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
582 create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
583 create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
584 create mode 100644 arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
585 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
586 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
587 create mode 100644 arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
588 create mode 100644 arch/arm/boot/dts/overlays/i2c0-overlay.dts
589 create mode 100644 arch/arm/boot/dts/overlays/i2c1-overlay.dts
590 create mode 100644 arch/arm/boot/dts/overlays/i2c3-overlay.dts
591 create mode 100644 arch/arm/boot/dts/overlays/i2c4-overlay.dts
592 create mode 100644 arch/arm/boot/dts/overlays/i2c5-overlay.dts
593 create mode 100644 arch/arm/boot/dts/overlays/i2c6-overlay.dts
594 create mode 100644 arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
595 create mode 100644 arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
596 create mode 100644 arch/arm/boot/dts/overlays/imx219-overlay.dts
597 create mode 100644 arch/arm/boot/dts/overlays/imx290-overlay.dts
598 create mode 100644 arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
599 create mode 100644 arch/arm/boot/dts/overlays/imx477-overlay.dts
600 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
601 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
602 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
603 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
604 create mode 100644 arch/arm/boot/dts/overlays/irs1125-overlay.dts
605 create mode 100644 arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
606 create mode 100644 arch/arm/boot/dts/overlays/justboom-both-overlay.dts
607 create mode 100644 arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
608 create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
609 create mode 100644 arch/arm/boot/dts/overlays/ltc294x-overlay.dts
610 create mode 100644 arch/arm/boot/dts/overlays/max98357a-overlay.dts
611 create mode 100644 arch/arm/boot/dts/overlays/maxtherm-overlay.dts
612 create mode 100644 arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
613 create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts
614 create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
615 create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
616 create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
617 create mode 100755 arch/arm/boot/dts/overlays/mcp3008-overlay.dts
618 create mode 100755 arch/arm/boot/dts/overlays/mcp3202-overlay.dts
619 create mode 100644 arch/arm/boot/dts/overlays/mcp342x-overlay.dts
620 create mode 100644 arch/arm/boot/dts/overlays/media-center-overlay.dts
621 create mode 100644 arch/arm/boot/dts/overlays/merus-amp-overlay.dts
622 create mode 100644 arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
623 create mode 100644 arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
624 create mode 100644 arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
625 create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
626 create mode 100644 arch/arm/boot/dts/overlays/mpu6050-overlay.dts
627 create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
628 create mode 100644 arch/arm/boot/dts/overlays/ov5647-overlay.dts
629 create mode 100644 arch/arm/boot/dts/overlays/ov7251-overlay.dts
630 create mode 100644 arch/arm/boot/dts/overlays/ov9281-overlay.dts
631 create mode 100644 arch/arm/boot/dts/overlays/overlay_map.dts
632 create mode 100644 arch/arm/boot/dts/overlays/papirus-overlay.dts
633 create mode 100644 arch/arm/boot/dts/overlays/pca953x-overlay.dts
634 create mode 100644 arch/arm/boot/dts/overlays/pibell-overlay.dts
635 create mode 100644 arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
636 create mode 100644 arch/arm/boot/dts/overlays/piglow-overlay.dts
637 create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
638 create mode 100644 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
639 create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts
640 create mode 100644 arch/arm/boot/dts/overlays/pitft22-overlay.dts
641 create mode 100644 arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
642 create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
643 create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
644 create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
645 create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
646 create mode 100644 arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
647 create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts
648 create mode 100644 arch/arm/boot/dts/overlays/qca7000-overlay.dts
649 create mode 100644 arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
650 create mode 100644 arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
651 create mode 100644 arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
652 create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
653 create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
654 create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
655 create mode 100644 arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
656 create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
657 create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
658 create mode 100644 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
659 create mode 100644 arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
660 create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
661 create mode 100644 arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
662 create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
663 create mode 100644 arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
664 create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
665 create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
666 create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
667 create mode 100644 arch/arm/boot/dts/overlays/sdio-overlay.dts
668 create mode 100644 arch/arm/boot/dts/overlays/sdtweak-overlay.dts
669 create mode 100644 arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
670 create mode 100644 arch/arm/boot/dts/overlays/smi-dev-overlay.dts
671 create mode 100644 arch/arm/boot/dts/overlays/smi-nand-overlay.dts
672 create mode 100644 arch/arm/boot/dts/overlays/smi-overlay.dts
673 create mode 100644 arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
674 create mode 100644 arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
675 create mode 100644 arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
676 create mode 100644 arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
677 create mode 100644 arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
678 create mode 100644 arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
679 create mode 100644 arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
680 create mode 100644 arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
681 create mode 100644 arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
682 create mode 100644 arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
683 create mode 100644 arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
684 create mode 100644 arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
685 create mode 100644 arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
686 create mode 100644 arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
687 create mode 100644 arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
688 create mode 100644 arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
689 create mode 100644 arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
690 create mode 100644 arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
691 create mode 100644 arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
692 create mode 100644 arch/arm/boot/dts/overlays/ssd1306-overlay.dts
693 create mode 100644 arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
694 create mode 100644 arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
695 create mode 100755 arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
696 create mode 100644 arch/arm/boot/dts/overlays/sx150x-overlay.dts
697 create mode 100644 arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
698 create mode 100644 arch/arm/boot/dts/overlays/tc358743-overlay.dts
699 create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
700 create mode 100644 arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
701 create mode 100755 arch/arm/boot/dts/overlays/uart0-overlay.dts
702 create mode 100644 arch/arm/boot/dts/overlays/uart1-overlay.dts
703 create mode 100644 arch/arm/boot/dts/overlays/uart2-overlay.dts
704 create mode 100644 arch/arm/boot/dts/overlays/uart3-overlay.dts
705 create mode 100644 arch/arm/boot/dts/overlays/uart4-overlay.dts
706 create mode 100644 arch/arm/boot/dts/overlays/uart5-overlay.dts
707 create mode 100644 arch/arm/boot/dts/overlays/udrc-overlay.dts
708 create mode 100644 arch/arm/boot/dts/overlays/upstream-overlay.dts
709 create mode 100644 arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
710 create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
711 create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
712 create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
713 create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
714 create mode 100644 arch/arm/boot/dts/overlays/vga666-overlay.dts
715 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
716 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
717 create mode 100644 arch/arm/boot/dts/overlays/w5500-overlay.dts
718 create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts
719 create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
720 create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
721 create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
722 create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
723 create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
724 create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
725 create mode 120000 arch/arm64/boot/dts/overlays
727 diff --git a/.gitignore b/.gitignore
728 index 67d2f3503128..8b0b16eeca88 100644
739 diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
740 index ce66ffd5a1bb..87241fe26e10 100644
741 --- a/arch/arm/boot/dts/Makefile
742 +++ b/arch/arm/boot/dts/Makefile
744 # SPDX-License-Identifier: GPL-2.0
746 +dtb-$(CONFIG_ARCH_BCM2835) += \
747 + bcm2708-rpi-b.dtb \
748 + bcm2708-rpi-b-rev1.dtb \
749 + bcm2708-rpi-b-plus.dtb \
750 + bcm2708-rpi-cm.dtb \
751 + bcm2708-rpi-zero.dtb \
752 + bcm2708-rpi-zero-w.dtb \
753 + bcm2709-rpi-2-b.dtb \
754 + bcm2710-rpi-2-b.dtb \
755 + bcm2710-rpi-3-b.dtb \
756 + bcm2711-rpi-4-b.dtb \
757 + bcm2710-rpi-3-b-plus.dtb \
758 + bcm2710-rpi-cm3.dtb \
759 + bcm2711-rpi-cm4.dtb
761 dtb-$(CONFIG_ARCH_ALPINE) += \
763 dtb-$(CONFIG_MACH_ARTPEC6) += \
764 @@ -92,7 +108,6 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
765 bcm2837-rpi-3-b.dtb \
766 bcm2837-rpi-3-b-plus.dtb \
767 bcm2837-rpi-cm3-io3.dtb \
768 - bcm2711-rpi-4-b.dtb \
769 bcm2835-rpi-zero.dtb \
770 bcm2835-rpi-zero-w.dtb
771 dtb-$(CONFIG_ARCH_BCM_5301X) += \
772 @@ -1408,3 +1423,13 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
773 aspeed-bmc-opp-zaius.dtb \
774 aspeed-bmc-portwell-neptune.dtb \
775 aspeed-bmc-quanta-q71l.dtb
777 +targets += dtbs dtbs_install
780 +subdir-y := overlays
782 +# Enable fixups to support overlays on BCM2835 platforms
783 +ifeq ($(CONFIG_ARCH_BCM2835),y)
786 diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
788 index 000000000000..98581eec4bdc
790 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
794 +#include "bcm2708.dtsi"
795 +#include "bcm2708-rpi.dtsi"
796 +#include "bcm283x-rpi-smsc9514.dtsi"
797 +#include "bcm283x-rpi-csi1-2lane.dtsi"
798 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
801 + compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
802 + model = "Raspberry Pi Model B+";
806 + spi0_pins: spi0_pins {
807 + brcm,pins = <9 10 11>;
808 + brcm,function = <4>; /* alt0 */
811 + spi0_cs_pins: spi0_cs_pins {
813 + brcm,function = <1>; /* output */
818 + brcm,function = <4>;
823 + brcm,function = <4>;
827 + brcm,pins = <18 19 20 21>;
828 + brcm,function = <4>; /* alt0 */
831 + audio_pins: audio_pins {
832 + brcm,pins = <40 45>;
833 + brcm,function = <4>;
842 + pinctrl-names = "default";
843 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
844 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
847 + compatible = "spidev";
848 + reg = <0>; /* CE0 */
849 + #address-cells = <1>;
851 + spi-max-frequency = <125000000>;
855 + compatible = "spidev";
856 + reg = <1>; /* CE1 */
857 + #address-cells = <1>;
859 + spi-max-frequency = <125000000>;
864 + clock-frequency = <100000>;
868 + pinctrl-names = "default";
869 + pinctrl-0 = <&i2c1_pins>;
870 + clock-frequency = <100000>;
874 + clock-frequency = <100000>;
878 + pinctrl-names = "default";
879 + pinctrl-0 = <&i2s_pins>;
885 + linux,default-trigger = "mmc0";
886 + gpios = <&gpio 47 0>;
891 + linux,default-trigger = "input";
892 + gpios = <&gpio 35 0>;
897 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
901 + pinctrl-names = "default";
902 + pinctrl-0 = <&audio_pins>;
907 + act_led_gpio = <&act_led>,"gpios:4";
908 + act_led_activelow = <&act_led>,"gpios:8";
909 + act_led_trigger = <&act_led>,"linux,default-trigger";
911 + pwr_led_gpio = <&pwr_led>,"gpios:4";
912 + pwr_led_activelow = <&pwr_led>,"gpios:8";
913 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
916 diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
918 index 000000000000..7b554b465b27
920 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
924 +#include "bcm2708.dtsi"
925 +#include "bcm2708-rpi.dtsi"
926 +#include "bcm283x-rpi-smsc9512.dtsi"
927 +#include "bcm283x-rpi-csi1-2lane.dtsi"
930 + compatible = "raspberrypi,model-b", "brcm,bcm2835";
931 + model = "Raspberry Pi Model B";
935 + spi0_pins: spi0_pins {
936 + brcm,pins = <9 10 11>;
937 + brcm,function = <4>; /* alt0 */
940 + spi0_cs_pins: spi0_cs_pins {
942 + brcm,function = <1>; /* output */
947 + brcm,function = <4>;
952 + brcm,function = <4>;
956 + brcm,pins = <28 29 30 31>;
957 + brcm,function = <6>; /* alt2 */
960 + audio_pins: audio_pins {
961 + brcm,pins = <40 45>;
962 + brcm,function = <4>;
971 + pinctrl-names = "default";
972 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
973 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
976 + compatible = "spidev";
977 + reg = <0>; /* CE0 */
978 + #address-cells = <1>;
980 + spi-max-frequency = <125000000>;
984 + compatible = "spidev";
985 + reg = <1>; /* CE1 */
986 + #address-cells = <1>;
988 + spi-max-frequency = <125000000>;
992 +/delete-node/ &i2c0mux;
995 + pinctrl-names = "default";
996 + pinctrl-0 = <&i2c0_pins>;
997 + clock-frequency = <100000>;
1000 +i2c_csi_dsi: &i2c1 {
1001 + pinctrl-names = "default";
1002 + pinctrl-0 = <&i2c1_pins>;
1003 + clock-frequency = <100000>;
1012 + i2c0 = <&i2c0>, "status";
1017 + clock-frequency = <100000>;
1021 + pinctrl-names = "default";
1022 + pinctrl-0 = <&i2s_pins>;
1028 + linux,default-trigger = "mmc0";
1029 + gpios = <&gpio 16 1>;
1034 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
1038 + pinctrl-names = "default";
1039 + pinctrl-0 = <&audio_pins>;
1044 + act_led_gpio = <&act_led>,"gpios:4";
1045 + act_led_activelow = <&act_led>,"gpios:8";
1046 + act_led_trigger = <&act_led>,"linux,default-trigger";
1049 diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
1050 new file mode 100644
1051 index 000000000000..305f1dbde60f
1053 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
1057 +#include "bcm2708.dtsi"
1058 +#include "bcm2708-rpi.dtsi"
1059 +#include "bcm283x-rpi-smsc9512.dtsi"
1060 +#include "bcm283x-rpi-csi1-2lane.dtsi"
1061 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
1064 + compatible = "raspberrypi,model-b", "brcm,bcm2835";
1065 + model = "Raspberry Pi Model B";
1069 + spi0_pins: spi0_pins {
1070 + brcm,pins = <9 10 11>;
1071 + brcm,function = <4>; /* alt0 */
1074 + spi0_cs_pins: spi0_cs_pins {
1075 + brcm,pins = <8 7>;
1076 + brcm,function = <1>; /* output */
1080 + brcm,pins = <0 1>;
1081 + brcm,function = <4>;
1085 + brcm,pins = <2 3>;
1086 + brcm,function = <4>;
1090 + brcm,pins = <28 29 30 31>;
1091 + brcm,function = <6>; /* alt2 */
1094 + audio_pins: audio_pins {
1095 + brcm,pins = <40 45>;
1096 + brcm,function = <4>;
1105 + pinctrl-names = "default";
1106 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1107 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1109 + spidev0: spidev@0{
1110 + compatible = "spidev";
1111 + reg = <0>; /* CE0 */
1112 + #address-cells = <1>;
1113 + #size-cells = <0>;
1114 + spi-max-frequency = <125000000>;
1117 + spidev1: spidev@1{
1118 + compatible = "spidev";
1119 + reg = <1>; /* CE1 */
1120 + #address-cells = <1>;
1121 + #size-cells = <0>;
1122 + spi-max-frequency = <125000000>;
1127 + clock-frequency = <100000>;
1131 + pinctrl-names = "default";
1132 + pinctrl-0 = <&i2c1_pins>;
1133 + clock-frequency = <100000>;
1137 + clock-frequency = <100000>;
1141 + pinctrl-names = "default";
1142 + pinctrl-0 = <&i2s_pins>;
1148 + linux,default-trigger = "mmc0";
1149 + gpios = <&gpio 16 1>;
1154 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
1158 + pinctrl-names = "default";
1159 + pinctrl-0 = <&audio_pins>;
1164 + act_led_gpio = <&act_led>,"gpios:4";
1165 + act_led_activelow = <&act_led>,"gpios:8";
1166 + act_led_trigger = <&act_led>,"linux,default-trigger";
1169 diff --git a/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi b/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
1170 new file mode 100644
1171 index 000000000000..a18f80af97d3
1173 +++ b/arch/arm/boot/dts/bcm2708-rpi-bt.dtsi
1175 +// SPDX-License-Identifier: GPL-2.0
1179 + compatible = "brcm,bcm43438-bt";
1180 + max-speed = <3000000>;
1181 + shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
1182 + status = "disabled";
1187 + minibt: bluetooth {
1188 + compatible = "brcm,bcm43438-bt";
1189 + max-speed = <460800>;
1190 + shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
1191 + status = "disabled";
1197 + krnbt = <&bt>,"status";
1198 + krnbt_baudrate = <&bt>,"max-speed:0";
1201 diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
1202 new file mode 100644
1203 index 000000000000..93062c4ffad2
1205 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
1209 +#include "bcm2708-rpi-cm.dtsi"
1210 +#include "bcm283x-rpi-csi0-2lane.dtsi"
1211 +#include "bcm283x-rpi-csi1-4lane.dtsi"
1212 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
1215 + compatible = "raspberrypi,compute-module", "brcm,bcm2835";
1216 + model = "Raspberry Pi Compute Module";
1224 + spi0_pins: spi0_pins {
1225 + brcm,pins = <9 10 11>;
1226 + brcm,function = <4>; /* alt0 */
1229 + spi0_cs_pins: spi0_cs_pins {
1230 + brcm,pins = <8 7>;
1231 + brcm,function = <1>; /* output */
1235 + brcm,pins = <0 1>;
1236 + brcm,function = <4>;
1240 + brcm,pins = <2 3>;
1241 + brcm,function = <4>;
1245 + brcm,pins = <18 19 20 21>;
1246 + brcm,function = <4>; /* alt0 */
1249 + audio_pins: audio_pins {
1256 + pinctrl-names = "default";
1257 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1258 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1260 + spidev0: spidev@0{
1261 + compatible = "spidev";
1262 + reg = <0>; /* CE0 */
1263 + #address-cells = <1>;
1264 + #size-cells = <0>;
1265 + spi-max-frequency = <125000000>;
1268 + spidev1: spidev@1{
1269 + compatible = "spidev";
1270 + reg = <1>; /* CE1 */
1271 + #address-cells = <1>;
1272 + #size-cells = <0>;
1273 + spi-max-frequency = <125000000>;
1278 + clock-frequency = <100000>;
1282 + pinctrl-names = "default";
1283 + pinctrl-0 = <&i2c1_pins>;
1284 + clock-frequency = <100000>;
1288 + clock-frequency = <100000>;
1292 + pinctrl-names = "default";
1293 + pinctrl-0 = <&i2s_pins>;
1297 + pinctrl-names = "default";
1298 + pinctrl-0 = <&audio_pins>;
1302 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
1304 diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
1305 new file mode 100644
1306 index 000000000000..dce160f420fd
1308 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
1310 +#include "bcm2708.dtsi"
1311 +#include "bcm2708-rpi.dtsi"
1316 + linux,default-trigger = "mmc0";
1317 + gpios = <&gpio 47 0>;
1323 + act_led_gpio = <&act_led>,"gpios:4";
1324 + act_led_activelow = <&act_led>,"gpios:8";
1325 + act_led_trigger = <&act_led>,"linux,default-trigger";
1328 diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
1329 new file mode 100644
1330 index 000000000000..f1bbed9fbf73
1332 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
1336 +#include "bcm2708.dtsi"
1337 +#include "bcm2708-rpi.dtsi"
1338 +#include "bcm283x-rpi-csi1-2lane.dtsi"
1339 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
1340 +#include "bcm2708-rpi-bt.dtsi"
1343 + compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
1344 + model = "Raspberry Pi Zero W";
1347 + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
1358 + spi0_pins: spi0_pins {
1359 + brcm,pins = <9 10 11>;
1360 + brcm,function = <4>; /* alt0 */
1363 + spi0_cs_pins: spi0_cs_pins {
1364 + brcm,pins = <8 7>;
1365 + brcm,function = <1>; /* output */
1369 + brcm,pins = <0 1>;
1370 + brcm,function = <4>;
1374 + brcm,pins = <2 3>;
1375 + brcm,function = <4>;
1379 + brcm,pins = <18 19 20 21>;
1380 + brcm,function = <4>; /* alt0 */
1383 + sdio_pins: sdio_pins {
1384 + brcm,pins = <34 35 36 37 38 39>;
1385 + brcm,function = <7>; /* ALT3 = SD1 */
1386 + brcm,pull = <0 2 2 2 2 2>;
1389 + bt_pins: bt_pins {
1391 + brcm,function = <4>; /* alt0:GPCLK2 */
1392 + brcm,pull = <0>; /* none */
1395 + uart0_pins: uart0_pins {
1396 + brcm,pins = <30 31 32 33>;
1397 + brcm,function = <7>; /* alt3=UART0 */
1398 + brcm,pull = <2 0 0 2>; /* up none none up */
1401 + uart1_pins: uart1_pins {
1407 + audio_pins: audio_pins {
1409 + brcm,function = <>;
1414 + pinctrl-names = "default";
1415 + pinctrl-0 = <&sdio_pins>;
1421 + pinctrl-names = "default";
1422 + pinctrl-0 = <&uart0_pins &bt_pins>;
1427 + pinctrl-names = "default";
1428 + pinctrl-0 = <&uart1_pins>;
1433 + pinctrl-names = "default";
1434 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1435 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1437 + spidev0: spidev@0{
1438 + compatible = "spidev";
1439 + reg = <0>; /* CE0 */
1440 + #address-cells = <1>;
1441 + #size-cells = <0>;
1442 + spi-max-frequency = <125000000>;
1445 + spidev1: spidev@1{
1446 + compatible = "spidev";
1447 + reg = <1>; /* CE1 */
1448 + #address-cells = <1>;
1449 + #size-cells = <0>;
1450 + spi-max-frequency = <125000000>;
1455 + clock-frequency = <100000>;
1459 + pinctrl-names = "default";
1460 + pinctrl-0 = <&i2c1_pins>;
1461 + clock-frequency = <100000>;
1465 + clock-frequency = <100000>;
1469 + pinctrl-names = "default";
1470 + pinctrl-0 = <&i2s_pins>;
1476 + linux,default-trigger = "actpwr";
1477 + gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
1482 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1486 + pinctrl-names = "default";
1487 + pinctrl-0 = <&audio_pins>;
1492 + act_led_gpio = <&act_led>,"gpios:4";
1493 + act_led_activelow = <&act_led>,"gpios:8";
1494 + act_led_trigger = <&act_led>,"linux,default-trigger";
1497 diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero.dts b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
1498 new file mode 100644
1499 index 000000000000..e7578788b839
1501 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
1505 +#include "bcm2708.dtsi"
1506 +#include "bcm2708-rpi.dtsi"
1507 +#include "bcm283x-rpi-csi1-2lane.dtsi"
1508 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
1511 + compatible = "raspberrypi,model-zero", "brcm,bcm2835";
1512 + model = "Raspberry Pi Zero";
1515 + bootargs = "coherent_pool=1M snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
1520 + spi0_pins: spi0_pins {
1521 + brcm,pins = <9 10 11>;
1522 + brcm,function = <4>; /* alt0 */
1525 + spi0_cs_pins: spi0_cs_pins {
1526 + brcm,pins = <8 7>;
1527 + brcm,function = <1>; /* output */
1531 + brcm,pins = <0 1>;
1532 + brcm,function = <4>;
1536 + brcm,pins = <2 3>;
1537 + brcm,function = <4>;
1541 + brcm,pins = <18 19 20 21>;
1542 + brcm,function = <4>; /* alt0 */
1545 + audio_pins: audio_pins {
1547 + brcm,function = <>;
1556 + pinctrl-names = "default";
1557 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1558 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1560 + spidev0: spidev@0{
1561 + compatible = "spidev";
1562 + reg = <0>; /* CE0 */
1563 + #address-cells = <1>;
1564 + #size-cells = <0>;
1565 + spi-max-frequency = <125000000>;
1568 + spidev1: spidev@1{
1569 + compatible = "spidev";
1570 + reg = <1>; /* CE1 */
1571 + #address-cells = <1>;
1572 + #size-cells = <0>;
1573 + spi-max-frequency = <125000000>;
1578 + clock-frequency = <100000>;
1582 + pinctrl-names = "default";
1583 + pinctrl-0 = <&i2c1_pins>;
1584 + clock-frequency = <100000>;
1588 + clock-frequency = <100000>;
1592 + pinctrl-names = "default";
1593 + pinctrl-0 = <&i2s_pins>;
1599 + linux,default-trigger = "actpwr";
1600 + gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
1605 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1609 + pinctrl-names = "default";
1610 + pinctrl-0 = <&audio_pins>;
1615 + act_led_gpio = <&act_led>,"gpios:4";
1616 + act_led_activelow = <&act_led>,"gpios:8";
1617 + act_led_trigger = <&act_led>,"linux,default-trigger";
1620 diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi
1621 new file mode 100644
1622 index 000000000000..e2458b15d64a
1624 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
1626 +/* Downstream modifications common to bcm2835, bcm2836, bcm2837 */
1628 +#include "bcm2835-rpi.dtsi"
1629 +#include "bcm270x-rpi.dtsi"
1633 + device_type = "memory";
1642 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
1643 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
1644 + sd_poll_once = <&sdhost>,"non-removable?";
1649 + pinctrl-names = "default";
1650 + pinctrl-0 = <&sdhost_gpio48>;
1655 + power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
1656 + status = "disabled";
1660 + status = "disabled";
1662 diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
1663 new file mode 100644
1664 index 000000000000..36ec4989403f
1666 +++ b/arch/arm/boot/dts/bcm2708.dtsi
1668 +#include "bcm2835.dtsi"
1669 +#include "bcm270x.dtsi"
1678 + status = "disabled";
1680 diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
1681 new file mode 100644
1682 index 000000000000..6b2e3c291d72
1684 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
1688 +#include "bcm2709.dtsi"
1689 +#include "bcm2709-rpi.dtsi"
1690 +#include "bcm283x-rpi-smsc9514.dtsi"
1691 +#include "bcm283x-rpi-csi1-2lane.dtsi"
1692 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
1695 + compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
1696 + model = "Raspberry Pi 2 Model B";
1700 + spi0_pins: spi0_pins {
1701 + brcm,pins = <9 10 11>;
1702 + brcm,function = <4>; /* alt0 */
1705 + spi0_cs_pins: spi0_cs_pins {
1706 + brcm,pins = <8 7>;
1707 + brcm,function = <1>; /* output */
1711 + brcm,pins = <0 1>;
1712 + brcm,function = <4>;
1716 + brcm,pins = <2 3>;
1717 + brcm,function = <4>;
1721 + brcm,pins = <18 19 20 21>;
1722 + brcm,function = <4>; /* alt0 */
1725 + audio_pins: audio_pins {
1726 + brcm,pins = <40 45>;
1727 + brcm,function = <4>;
1736 + pinctrl-names = "default";
1737 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
1738 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
1740 + spidev0: spidev@0{
1741 + compatible = "spidev";
1742 + reg = <0>; /* CE0 */
1743 + #address-cells = <1>;
1744 + #size-cells = <0>;
1745 + spi-max-frequency = <125000000>;
1748 + spidev1: spidev@1{
1749 + compatible = "spidev";
1750 + reg = <1>; /* CE1 */
1751 + #address-cells = <1>;
1752 + #size-cells = <0>;
1753 + spi-max-frequency = <125000000>;
1758 + clock-frequency = <100000>;
1762 + pinctrl-names = "default";
1763 + pinctrl-0 = <&i2c1_pins>;
1764 + clock-frequency = <100000>;
1768 + clock-frequency = <100000>;
1772 + pinctrl-names = "default";
1773 + pinctrl-0 = <&i2s_pins>;
1779 + linux,default-trigger = "mmc0";
1780 + gpios = <&gpio 47 0>;
1785 + linux,default-trigger = "input";
1786 + gpios = <&gpio 35 0>;
1791 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
1795 + pinctrl-names = "default";
1796 + pinctrl-0 = <&audio_pins>;
1801 + act_led_gpio = <&act_led>,"gpios:4";
1802 + act_led_activelow = <&act_led>,"gpios:8";
1803 + act_led_trigger = <&act_led>,"linux,default-trigger";
1805 + pwr_led_gpio = <&pwr_led>,"gpios:4";
1806 + pwr_led_activelow = <&pwr_led>,"gpios:8";
1807 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
1810 diff --git a/arch/arm/boot/dts/bcm2709-rpi.dtsi b/arch/arm/boot/dts/bcm2709-rpi.dtsi
1811 new file mode 100644
1812 index 000000000000..babfa41cd9f7
1814 +++ b/arch/arm/boot/dts/bcm2709-rpi.dtsi
1816 +#include "bcm2708-rpi.dtsi"
1819 + compatible = "brcm,bcm2836-vchiq", "brcm,bcm2835-vchiq";
1821 diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi
1822 new file mode 100644
1823 index 000000000000..68eafc1b281a
1825 +++ b/arch/arm/boot/dts/bcm2709.dtsi
1827 +#include "bcm2836.dtsi"
1828 +#include "bcm270x.dtsi"
1832 + ranges = <0x7e000000 0x3f000000 0x01000000>,
1833 + <0x40000000 0x40000000 0x00040000>;
1835 + /delete-node/ timer@7e003000;
1839 + arm_freq = <&v7_cpu0>, "clock-frequency:0",
1840 + <&v7_cpu1>, "clock-frequency:0",
1841 + <&v7_cpu2>, "clock-frequency:0",
1842 + <&v7_cpu3>, "clock-frequency:0";
1847 + status = "disabled";
1849 diff --git a/arch/arm/boot/dts/bcm270x-rpi.dtsi b/arch/arm/boot/dts/bcm270x-rpi.dtsi
1850 new file mode 100644
1851 index 000000000000..68a7e1c09db1
1853 +++ b/arch/arm/boot/dts/bcm270x-rpi.dtsi
1855 +/* Downstream modifications to bcm2835-rpi.dtsi */
1865 + watchdog = &watchdog;
1867 + mailbox = &mailbox;
1878 + i2c10 = &i2c_csi_dsi;
1885 + thermal = &thermal;
1886 + axiperf = &axiperf;
1889 + /* Define these notional regulators for use by overlays */
1890 + vdd_3v3_reg: fixedregulator_3v3 {
1891 + compatible = "regulator-fixed";
1892 + regulator-always-on;
1893 + regulator-max-microvolt = <3300000>;
1894 + regulator-min-microvolt = <3300000>;
1895 + regulator-name = "3v3";
1898 + vdd_5v0_reg: fixedregulator_5v0 {
1899 + compatible = "regulator-fixed";
1900 + regulator-always-on;
1901 + regulator-max-microvolt = <5000000>;
1902 + regulator-min-microvolt = <5000000>;
1903 + regulator-name = "5v0";
1907 + compatible = "gpio-leds";
1912 + compatible = "brcm,bcm2835-gpiomem";
1913 + reg = <0x7e200000 0x1000>;
1917 + compatible = "brcm,bcm2708-fb";
1918 + firmware = <&firmware>;
1923 + compatible = "raspberrypi,bcm2835-vcsm";
1924 + firmware = <&firmware>;
1928 + /* External sound card */
1930 + status = "disabled";
1937 + uart0 = <&uart0>,"status";
1938 + uart1 = <&uart1>,"status";
1939 + i2s = <&i2s>,"status";
1940 + spi = <&spi0>,"status";
1941 + i2c0 = <&i2c0if>,"status",<&i2c0mux>,"status";
1942 + i2c1 = <&i2c1>,"status";
1943 + i2c0_baudrate = <&i2c0if>,"clock-frequency:0";
1944 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1946 + audio = <&audio>,"status";
1947 + watchdog = <&watchdog>,"status";
1948 + random = <&random>,"status";
1949 + sd_overclock = <&sdhost>,"brcm,overclock-50:0";
1950 + sd_force_pio = <&sdhost>,"brcm,force-pio?";
1951 + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
1952 + sd_debug = <&sdhost>,"brcm,debug";
1953 + sdio_overclock = <&mmc>,"brcm,overclock-50:0",
1954 + <&mmcnr>,"brcm,overclock-50:0";
1955 + axiperf = <&axiperf>,"status";
1968 + status = "disabled";
1972 + status = "disabled";
1976 + status = "disabled";
1980 + status = "disabled";
1984 + firmware = <&firmware>;
1988 + pinctrl-names = "default";
1989 + pinctrl-0 = <&emmc_gpio48>;
1994 + /delete-node/ trips;
1998 + status = "disabled";
2002 + /* Onboard audio */
2003 + audio: bcm2835_audio {
2004 + compatible = "brcm,bcm2835-audio";
2005 + brcm,pwm-channels = <8>;
2006 + status = "disabled";
2009 diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi
2010 new file mode 100644
2011 index 000000000000..446d4ff64842
2013 +++ b/arch/arm/boot/dts/bcm270x.dtsi
2015 +/* Downstream bcm283x.dtsi diff */
2016 +#include <dt-bindings/power/raspberrypi-power.h>
2020 + bootargs = "coherent_pool=1M snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
2021 + /delete-property/ stdout-path;
2026 + watchdog: watchdog@7e100000 {
2030 + random: rng@7e104000 {
2034 + spi0: spi@7e204000 {
2039 + pixelvalve0: pixelvalve@7e206000 {
2041 + status = "disabled";
2044 + pixelvalve1: pixelvalve@7e207000 {
2046 + status = "disabled";
2050 + /delete-node/ sdhci@7e300000;
2052 + sdhci: mmc: mmc@7e300000 {
2053 + compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
2054 + reg = <0x7e300000 0x100>;
2055 + interrupts = <2 30>;
2056 + clocks = <&clocks BCM2835_CLOCK_EMMC>;
2058 + dma-names = "rx-tx";
2059 + brcm,overclock-50 = <0>;
2060 + status = "disabled";
2063 + /* A clone of mmc but with non-removable set */
2064 + mmcnr: mmcnr@7e300000 {
2065 + compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
2066 + reg = <0x7e300000 0x100>;
2067 + interrupts = <2 30>;
2068 + clocks = <&clocks BCM2835_CLOCK_EMMC>;
2070 + dma-names = "rx-tx";
2071 + brcm,overclock-50 = <0>;
2073 + status = "disabled";
2076 + hvs: hvs@7e400000 {
2078 + status = "disabled";
2081 + firmwarekms: firmwarekms@7e600000 {
2082 + compatible = "raspberrypi,rpi-firmware-kms";
2083 + /* SMI interrupt reg */
2084 + reg = <0x7e600000 0x100>;
2085 + interrupts = <2 16>;
2086 + brcm,firmware = <&firmware>;
2087 + status = "disabled";
2090 + smi: smi@7e600000 {
2091 + compatible = "brcm,bcm2835-smi";
2092 + reg = <0x7e600000 0x100>;
2093 + interrupts = <2 16>;
2094 + clocks = <&clocks BCM2835_CLOCK_SMI>;
2095 + assigned-clocks = <&clocks BCM2835_CLOCK_SMI>;
2096 + assigned-clock-rates = <125000000>;
2098 + dma-names = "rx-tx";
2099 + status = "disabled";
2102 + csi0: csi@7e800000 {
2103 + compatible = "brcm,bcm2835-unicam";
2104 + reg = <0x7e800000 0x800>,
2106 + interrupts = <2 6>;
2107 + clocks = <&clocks BCM2835_CLOCK_CAM0>,
2108 + <&firmware_clocks 4>;
2109 + clock-names = "lp", "vpu";
2110 + power-domains = <&power RPI_POWER_DOMAIN_UNICAM0>;
2111 + #address-cells = <1>;
2112 + #size-cells = <0>;
2113 + #clock-cells = <1>;
2114 + status = "disabled";
2117 + csi1: csi@7e801000 {
2118 + compatible = "brcm,bcm2835-unicam";
2119 + reg = <0x7e801000 0x800>,
2121 + interrupts = <2 7>;
2122 + clocks = <&clocks BCM2835_CLOCK_CAM1>,
2123 + <&firmware_clocks 4>;
2124 + clock-names = "lp", "vpu";
2125 + power-domains = <&power RPI_POWER_DOMAIN_UNICAM1>;
2126 + #address-cells = <1>;
2127 + #size-cells = <0>;
2128 + #clock-cells = <1>;
2129 + status = "disabled";
2133 + pixelvalve2: pixelvalve@7e807000 {
2135 + status = "disabled";
2139 + hdmi@7e902000 { /* hdmi */
2140 + status = "disabled";
2143 + usb@7e980000 { /* usb */
2144 + compatible = "brcm,bcm2708-usb";
2145 + reg = <0x7e980000 0x10000>,
2146 + <0x7e006000 0x1000>;
2147 + interrupt-names = "usb",
2149 + interrupts = <1 9>,
2154 + v3d@7ec00000 { /* vd3 */
2155 + compatible = "brcm,vc4-v3d";
2156 + power-domains = <&power RPI_POWER_DOMAIN_V3D>;
2157 + status = "disabled";
2161 + axiperf: axiperf {
2162 + compatible = "brcm,bcm2835-axiperf";
2163 + reg = <0x7e009800 0x100>,
2164 + <0x7ee08000 0x100>;
2165 + firmware = <&firmware>;
2166 + status = "disabled";
2179 + interrupts = <2 17>, <2 18>;
2181 + dpi_18bit_gpio0: dpi_18bit_gpio0 {
2182 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
2183 + 12 13 14 15 16 17 18 19
2185 + brcm,function = <BCM2835_FSEL_ALT2>;
2190 + /* Enable CTS bug workaround */
2191 + cts-event-workaround;
2195 + #sound-dai-cells = <0>;
2196 + dmas = <&dma 2>, <&dma 3>;
2197 + dma-names = "tx", "rx";
2201 + dmas = <&dma (13|(1<<29))>;
2202 + dma-names = "rx-tx";
2204 + brcm,overclock-50 = <0>;
2205 + brcm,pio-limit = <1>;
2209 + dmas = <&dma 6>, <&dma 7>;
2210 + dma-names = "tx", "rx";
2212 diff --git a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
2213 new file mode 100644
2214 index 000000000000..49cfda63606e
2216 +++ b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
2220 +#include "bcm2710.dtsi"
2221 +#include "bcm2709-rpi.dtsi"
2222 +#include "bcm283x-rpi-smsc9514.dtsi"
2223 +#include "bcm283x-rpi-csi1-2lane.dtsi"
2224 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
2227 + compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
2228 + model = "Raspberry Pi 2 Model B rev 1.2";
2232 + spi0_pins: spi0_pins {
2233 + brcm,pins = <9 10 11>;
2234 + brcm,function = <4>; /* alt0 */
2237 + spi0_cs_pins: spi0_cs_pins {
2238 + brcm,pins = <8 7>;
2239 + brcm,function = <1>; /* output */
2243 + brcm,pins = <0 1>;
2244 + brcm,function = <4>;
2248 + brcm,pins = <2 3>;
2249 + brcm,function = <4>;
2253 + brcm,pins = <18 19 20 21>;
2254 + brcm,function = <4>; /* alt0 */
2257 + audio_pins: audio_pins {
2258 + brcm,pins = <40 45>;
2259 + brcm,function = <4>;
2268 + pinctrl-names = "default";
2269 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
2270 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
2272 + spidev0: spidev@0{
2273 + compatible = "spidev";
2274 + reg = <0>; /* CE0 */
2275 + #address-cells = <1>;
2276 + #size-cells = <0>;
2277 + spi-max-frequency = <125000000>;
2280 + spidev1: spidev@1{
2281 + compatible = "spidev";
2282 + reg = <1>; /* CE1 */
2283 + #address-cells = <1>;
2284 + #size-cells = <0>;
2285 + spi-max-frequency = <125000000>;
2290 + clock-frequency = <100000>;
2294 + pinctrl-names = "default";
2295 + pinctrl-0 = <&i2c1_pins>;
2296 + clock-frequency = <100000>;
2300 + clock-frequency = <100000>;
2304 + pinctrl-names = "default";
2305 + pinctrl-0 = <&i2s_pins>;
2311 + linux,default-trigger = "mmc0";
2312 + gpios = <&gpio 47 0>;
2317 + linux,default-trigger = "input";
2318 + gpios = <&gpio 35 0>;
2323 + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
2327 + pinctrl-names = "default";
2328 + pinctrl-0 = <&audio_pins>;
2333 + act_led_gpio = <&act_led>,"gpios:4";
2334 + act_led_activelow = <&act_led>,"gpios:8";
2335 + act_led_trigger = <&act_led>,"linux,default-trigger";
2337 + pwr_led_gpio = <&pwr_led>,"gpios:4";
2338 + pwr_led_activelow = <&pwr_led>,"gpios:8";
2339 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
2342 diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
2343 new file mode 100644
2344 index 000000000000..4e4e47100831
2346 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
2350 +#include "bcm2710.dtsi"
2351 +#include "bcm2709-rpi.dtsi"
2352 +#include "bcm283x-rpi-lan7515.dtsi"
2353 +#include "bcm283x-rpi-csi1-2lane.dtsi"
2354 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
2355 +#include "bcm271x-rpi-bt.dtsi"
2358 + compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
2359 + model = "Raspberry Pi 3 Model B+";
2362 + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
2373 + spi0_pins: spi0_pins {
2374 + brcm,pins = <9 10 11>;
2375 + brcm,function = <4>; /* alt0 */
2378 + spi0_cs_pins: spi0_cs_pins {
2379 + brcm,pins = <8 7>;
2380 + brcm,function = <1>; /* output */
2384 + brcm,pins = <0 1>;
2385 + brcm,function = <4>;
2389 + brcm,pins = <2 3>;
2390 + brcm,function = <4>;
2394 + brcm,pins = <18 19 20 21>;
2395 + brcm,function = <4>; /* alt0 */
2398 + sdio_pins: sdio_pins {
2399 + brcm,pins = <34 35 36 37 38 39>;
2400 + brcm,function = <7>; // alt3 = SD1
2401 + brcm,pull = <0 2 2 2 2 2>;
2404 + bt_pins: bt_pins {
2406 + brcm,function = <4>; /* alt0:GPCLK2 */
2410 + uart0_pins: uart0_pins {
2411 + brcm,pins = <32 33>;
2412 + brcm,function = <7>; /* alt3=UART0 */
2413 + brcm,pull = <0 2>;
2416 + uart1_pins: uart1_pins {
2422 + audio_pins: audio_pins {
2423 + brcm,pins = <40 41>;
2424 + brcm,function = <4>;
2429 + pinctrl-names = "default";
2430 + pinctrl-0 = <&sdio_pins>;
2436 + expgpio: expgpio {
2437 + compatible = "raspberrypi,firmware-gpio";
2439 + #gpio-cells = <2>;
2445 + pinctrl-names = "default";
2446 + pinctrl-0 = <&uart0_pins &bt_pins>;
2451 + pinctrl-names = "default";
2452 + pinctrl-0 = <&uart1_pins>;
2457 + pinctrl-names = "default";
2458 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
2459 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
2461 + spidev0: spidev@0{
2462 + compatible = "spidev";
2463 + reg = <0>; /* CE0 */
2464 + #address-cells = <1>;
2465 + #size-cells = <0>;
2466 + spi-max-frequency = <125000000>;
2469 + spidev1: spidev@1{
2470 + compatible = "spidev";
2471 + reg = <1>; /* CE1 */
2472 + #address-cells = <1>;
2473 + #size-cells = <0>;
2474 + spi-max-frequency = <125000000>;
2479 + clock-frequency = <100000>;
2483 + pinctrl-names = "default";
2484 + pinctrl-0 = <&i2c1_pins>;
2485 + clock-frequency = <100000>;
2489 + clock-frequency = <100000>;
2493 + pinctrl-names = "default";
2494 + pinctrl-0 = <&i2s_pins>;
2500 + linux,default-trigger = "mmc0";
2501 + gpios = <&gpio 29 0>;
2506 + linux,default-trigger = "default-on";
2507 + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
2512 + hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
2516 + pinctrl-names = "default";
2517 + pinctrl-0 = <&audio_pins>;
2521 + microchip,eee-enabled;
2522 + microchip,tx-lpi-timer = <600>; /* non-aggressive*/
2523 + microchip,downshift-after = <2>;
2528 + act_led_gpio = <&act_led>,"gpios:4";
2529 + act_led_activelow = <&act_led>,"gpios:8";
2530 + act_led_trigger = <&act_led>,"linux,default-trigger";
2532 + pwr_led_gpio = <&pwr_led>,"gpios:4";
2533 + pwr_led_activelow = <&pwr_led>,"gpios:8";
2534 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
2536 + eee = <ð_phy>,"microchip,eee-enabled?";
2537 + tx_lpi_timer = <ð_phy>,"microchip,tx-lpi-timer:0";
2538 + eth_led0 = <ð_phy>,"microchip,led-modes:0";
2539 + eth_led1 = <ð_phy>,"microchip,led-modes:4";
2540 + eth_downshift_after = <ð_phy>,"microchip,downshift-after:0";
2541 + eth_max_speed = <ð_phy>,"max-speed:0";
2544 diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
2545 new file mode 100644
2546 index 000000000000..8989c00b03e5
2548 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
2552 +#include "bcm2710.dtsi"
2553 +#include "bcm2709-rpi.dtsi"
2554 +#include "bcm283x-rpi-smsc9514.dtsi"
2555 +#include "bcm283x-rpi-csi1-2lane.dtsi"
2556 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
2557 +#include "bcm271x-rpi-bt.dtsi"
2560 + compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
2561 + model = "Raspberry Pi 3 Model B";
2564 + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
2575 + spi0_pins: spi0_pins {
2576 + brcm,pins = <9 10 11>;
2577 + brcm,function = <4>; /* alt0 */
2580 + spi0_cs_pins: spi0_cs_pins {
2581 + brcm,pins = <8 7>;
2582 + brcm,function = <1>; /* output */
2586 + brcm,pins = <0 1>;
2587 + brcm,function = <4>;
2591 + brcm,pins = <2 3>;
2592 + brcm,function = <4>;
2596 + brcm,pins = <18 19 20 21>;
2597 + brcm,function = <4>; /* alt0 */
2600 + sdio_pins: sdio_pins {
2601 + brcm,pins = <34 35 36 37 38 39>;
2602 + brcm,function = <7>; // alt3 = SD1
2603 + brcm,pull = <0 2 2 2 2 2>;
2606 + bt_pins: bt_pins {
2608 + brcm,function = <4>; /* alt0:GPCLK2 */
2612 + uart0_pins: uart0_pins {
2613 + brcm,pins = <32 33>;
2614 + brcm,function = <7>; /* alt3=UART0 */
2615 + brcm,pull = <0 2>;
2618 + uart1_pins: uart1_pins {
2624 + audio_pins: audio_pins {
2625 + brcm,pins = <40 41>;
2626 + brcm,function = <4>;
2631 + pinctrl-names = "default";
2632 + pinctrl-0 = <&sdio_pins>;
2638 + virtgpio: virtgpio {
2639 + compatible = "brcm,bcm2835-virtgpio";
2641 + #gpio-cells = <2>;
2642 + firmware = <&firmware>;
2649 + expgpio: expgpio {
2650 + compatible = "raspberrypi,firmware-gpio";
2652 + #gpio-cells = <2>;
2658 + pinctrl-names = "default";
2659 + pinctrl-0 = <&uart0_pins &bt_pins>;
2664 + pinctrl-names = "default";
2665 + pinctrl-0 = <&uart1_pins>;
2670 + max-speed = <921600>;
2674 + pinctrl-names = "default";
2675 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
2676 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
2678 + spidev0: spidev@0{
2679 + compatible = "spidev";
2680 + reg = <0>; /* CE0 */
2681 + #address-cells = <1>;
2682 + #size-cells = <0>;
2683 + spi-max-frequency = <125000000>;
2686 + spidev1: spidev@1{
2687 + compatible = "spidev";
2688 + reg = <1>; /* CE1 */
2689 + #address-cells = <1>;
2690 + #size-cells = <0>;
2691 + spi-max-frequency = <125000000>;
2696 + clock-frequency = <100000>;
2700 + pinctrl-names = "default";
2701 + pinctrl-0 = <&i2c1_pins>;
2702 + clock-frequency = <100000>;
2706 + clock-frequency = <100000>;
2710 + pinctrl-names = "default";
2711 + pinctrl-0 = <&i2s_pins>;
2717 + linux,default-trigger = "mmc0";
2718 + gpios = <&virtgpio 0 0>;
2723 + linux,default-trigger = "input";
2724 + gpios = <&expgpio 7 0>;
2729 + hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
2733 + pinctrl-names = "default";
2734 + pinctrl-0 = <&audio_pins>;
2739 + act_led_gpio = <&act_led>,"gpios:4";
2740 + act_led_activelow = <&act_led>,"gpios:8";
2741 + act_led_trigger = <&act_led>,"linux,default-trigger";
2743 + pwr_led_gpio = <&pwr_led>,"gpios:4";
2744 + pwr_led_activelow = <&pwr_led>,"gpios:8";
2745 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
2748 diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
2749 new file mode 100644
2750 index 000000000000..f972979281f5
2752 +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
2756 +#include "bcm2710.dtsi"
2757 +#include "bcm2709-rpi.dtsi"
2758 +#include "bcm283x-rpi-csi0-2lane.dtsi"
2759 +#include "bcm283x-rpi-csi1-4lane.dtsi"
2760 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
2762 + compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
2763 + model = "Raspberry Pi Compute Module 3";
2771 + spi0_pins: spi0_pins {
2772 + brcm,pins = <9 10 11>;
2773 + brcm,function = <4>; /* alt0 */
2776 + spi0_cs_pins: spi0_cs_pins {
2777 + brcm,pins = <8 7>;
2778 + brcm,function = <1>; /* output */
2782 + brcm,pins = <0 1>;
2783 + brcm,function = <4>;
2787 + brcm,pins = <2 3>;
2788 + brcm,function = <4>;
2792 + brcm,pins = <18 19 20 21>;
2793 + brcm,function = <4>; /* alt0 */
2796 + audio_pins: audio_pins {
2803 + virtgpio: virtgpio {
2804 + compatible = "brcm,bcm2835-virtgpio";
2806 + #gpio-cells = <2>;
2807 + firmware = <&firmware>;
2814 + expgpio: expgpio {
2815 + compatible = "raspberrypi,firmware-gpio";
2817 + #gpio-cells = <2>;
2823 + pinctrl-names = "default";
2824 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
2825 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
2827 + spidev0: spidev@0{
2828 + compatible = "spidev";
2829 + reg = <0>; /* CE0 */
2830 + #address-cells = <1>;
2831 + #size-cells = <0>;
2832 + spi-max-frequency = <125000000>;
2835 + spidev1: spidev@1{
2836 + compatible = "spidev";
2837 + reg = <1>; /* CE1 */
2838 + #address-cells = <1>;
2839 + #size-cells = <0>;
2840 + spi-max-frequency = <125000000>;
2845 + clock-frequency = <100000>;
2849 + pinctrl-names = "default";
2850 + pinctrl-0 = <&i2c1_pins>;
2851 + clock-frequency = <100000>;
2855 + clock-frequency = <100000>;
2859 + pinctrl-names = "default";
2860 + pinctrl-0 = <&i2s_pins>;
2866 + linux,default-trigger = "mmc0";
2867 + gpios = <&virtgpio 0 0>;
2872 + hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
2876 + pinctrl-names = "default";
2877 + pinctrl-0 = <&audio_pins>;
2882 + act_led_gpio = <&act_led>,"gpios:4";
2883 + act_led_activelow = <&act_led>,"gpios:8";
2884 + act_led_trigger = <&act_led>,"linux,default-trigger";
2887 diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi
2888 new file mode 100644
2889 index 000000000000..4e47480dd933
2891 +++ b/arch/arm/boot/dts/bcm2710.dtsi
2893 +#include "bcm2837.dtsi"
2894 +#include "bcm270x.dtsi"
2897 + compatible = "brcm,bcm2837", "brcm,bcm2836";
2901 + compatible = "arm,armv8-pmuv3", "arm,cortex-a7-pmu";
2903 + compatible = "arm,cortex-a7-pmu";
2908 + /delete-node/ timer@7e003000;
2912 + arm_freq = <&cpu0>, "clock-frequency:0",
2913 + <&cpu1>, "clock-frequency:0",
2914 + <&cpu2>, "clock-frequency:0",
2915 + <&cpu3>, "clock-frequency:0";
2920 + status = "disabled";
2922 diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
2923 index 5395e8c2484e..3e67c2b634be 100644
2924 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
2925 +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
2928 #include "bcm2711.dtsi"
2929 #include "bcm2835-rpi.dtsi"
2930 -#include "bcm283x-rpi-usb-peripheral.dtsi"
2932 #include <dt-bindings/reset/raspberrypi,firmware-reset.h>
2934 @@ -95,7 +94,7 @@ expgpio: gpio {
2943 @@ -301,3 +300,306 @@ &vc4 {
2945 status = "disabled";
2948 +// =============================================
2949 +// Downstream rpi- changes
2953 +#include "bcm270x.dtsi"
2954 +#include "bcm271x-rpi-bt.dtsi"
2958 + /delete-node/ pixelvalve@7e807000;
2959 + /delete-node/ hdmi@7e902000;
2963 +#include "bcm2711-rpi.dtsi"
2964 +#include "bcm283x-rpi-csi1-2lane.dtsi"
2965 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
2969 + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
2978 + /delete-property/ i2c2;
2983 + /delete-property/ intc;
2986 + /delete-node/ wifi-pwrseq;
2990 + pinctrl-names = "default";
2991 + pinctrl-0 = <&sdio_pins>;
2997 + pinctrl-0 = <&uart0_pins &bt_pins>;
3002 + pinctrl-0 = <&uart1_pins>;
3006 + pinctrl-names = "default";
3007 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
3008 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
3010 + spidev0: spidev@0{
3011 + compatible = "spidev";
3012 + reg = <0>; /* CE0 */
3013 + #address-cells = <1>;
3014 + #size-cells = <0>;
3015 + spi-max-frequency = <125000000>;
3018 + spidev1: spidev@1{
3019 + compatible = "spidev";
3020 + reg = <1>; /* CE1 */
3021 + #address-cells = <1>;
3022 + #size-cells = <0>;
3023 + spi-max-frequency = <125000000>;
3028 + spi0_pins: spi0_pins {
3029 + brcm,pins = <9 10 11>;
3030 + brcm,function = <BCM2835_FSEL_ALT0>;
3033 + spi0_cs_pins: spi0_cs_pins {
3034 + brcm,pins = <8 7>;
3035 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3038 + spi3_pins: spi3_pins {
3039 + brcm,pins = <1 2 3>;
3040 + brcm,function = <BCM2835_FSEL_ALT3>;
3043 + spi3_cs_pins: spi3_cs_pins {
3044 + brcm,pins = <0 24>;
3045 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3048 + spi4_pins: spi4_pins {
3049 + brcm,pins = <5 6 7>;
3050 + brcm,function = <BCM2835_FSEL_ALT3>;
3053 + spi4_cs_pins: spi4_cs_pins {
3054 + brcm,pins = <4 25>;
3055 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3058 + spi5_pins: spi5_pins {
3059 + brcm,pins = <13 14 15>;
3060 + brcm,function = <BCM2835_FSEL_ALT3>;
3063 + spi5_cs_pins: spi5_cs_pins {
3064 + brcm,pins = <12 26>;
3065 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3068 + spi6_pins: spi6_pins {
3069 + brcm,pins = <19 20 21>;
3070 + brcm,function = <BCM2835_FSEL_ALT3>;
3073 + spi6_cs_pins: spi6_cs_pins {
3074 + brcm,pins = <18 27>;
3075 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3079 + brcm,pins = <0 1>;
3080 + brcm,function = <BCM2835_FSEL_ALT0>;
3081 + brcm,pull = <BCM2835_PUD_UP>;
3085 + brcm,pins = <2 3>;
3086 + brcm,function = <BCM2835_FSEL_ALT0>;
3087 + brcm,pull = <BCM2835_PUD_UP>;
3091 + brcm,pins = <4 5>;
3092 + brcm,function = <BCM2835_FSEL_ALT5>;
3093 + brcm,pull = <BCM2835_PUD_UP>;
3097 + brcm,pins = <8 9>;
3098 + brcm,function = <BCM2835_FSEL_ALT5>;
3099 + brcm,pull = <BCM2835_PUD_UP>;
3103 + brcm,pins = <12 13>;
3104 + brcm,function = <BCM2835_FSEL_ALT5>;
3105 + brcm,pull = <BCM2835_PUD_UP>;
3109 + brcm,pins = <22 23>;
3110 + brcm,function = <BCM2835_FSEL_ALT5>;
3111 + brcm,pull = <BCM2835_PUD_UP>;
3115 + brcm,pins = <18 19 20 21>;
3116 + brcm,function = <BCM2835_FSEL_ALT0>;
3119 + sdio_pins: sdio_pins {
3120 + brcm,pins = <34 35 36 37 38 39>;
3121 + brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
3122 + brcm,pull = <0 2 2 2 2 2>;
3125 + bt_pins: bt_pins {
3126 + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
3127 + // to fool pinctrl
3128 + brcm,function = <0>;
3132 + uart0_pins: uart0_pins {
3133 + brcm,pins = <32 33>;
3134 + brcm,function = <BCM2835_FSEL_ALT3>;
3135 + brcm,pull = <0 2>;
3138 + uart1_pins: uart1_pins {
3144 + uart2_pins: uart2_pins {
3145 + brcm,pins = <0 1>;
3146 + brcm,function = <BCM2835_FSEL_ALT4>;
3147 + brcm,pull = <0 2>;
3150 + uart3_pins: uart3_pins {
3151 + brcm,pins = <4 5>;
3152 + brcm,function = <BCM2835_FSEL_ALT4>;
3153 + brcm,pull = <0 2>;
3156 + uart4_pins: uart4_pins {
3157 + brcm,pins = <8 9>;
3158 + brcm,function = <BCM2835_FSEL_ALT4>;
3159 + brcm,pull = <0 2>;
3162 + uart5_pins: uart5_pins {
3163 + brcm,pins = <12 13>;
3164 + brcm,function = <BCM2835_FSEL_ALT4>;
3165 + brcm,pull = <0 2>;
3170 + clock-frequency = <100000>;
3174 + pinctrl-names = "default";
3175 + pinctrl-0 = <&i2c1_pins>;
3176 + clock-frequency = <100000>;
3180 + pinctrl-names = "default";
3181 + pinctrl-0 = <&i2s_pins>;
3186 + /delete-property/ i2c2_baudrate;
3187 + /delete-property/ i2c2_iknowwhatimdoing;
3191 +// =============================================
3192 +// Board specific stuff here
3195 + status = "disabled";
3199 + led-modes = <0x00 0x08>; /* link/activity link */
3203 + audio_pins: audio_pins {
3204 + brcm,pins = <40 41>;
3205 + brcm,function = <4>;
3212 + linux,default-trigger = "mmc0";
3213 + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
3218 + linux,default-trigger = "default-on";
3219 + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
3224 + status = "disabled";
3228 + pinctrl-names = "default";
3229 + pinctrl-0 = <&audio_pins>;
3234 + act_led_gpio = <&act_led>,"gpios:4";
3235 + act_led_activelow = <&act_led>,"gpios:8";
3236 + act_led_trigger = <&act_led>,"linux,default-trigger";
3238 + pwr_led_gpio = <&pwr_led>,"gpios:4";
3239 + pwr_led_activelow = <&pwr_led>,"gpios:8";
3240 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
3242 + eth_led0 = <&phy1>,"led-modes:0";
3243 + eth_led1 = <&phy1>,"led-modes:4";
3245 + sd_poll_once = <&emmc2>, "non-removable?";
3246 + spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
3247 + <&spi0>, "dmas:8=", <&dma40>;
3250 diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
3251 new file mode 100644
3252 index 000000000000..0ca3a0126220
3254 +++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
3256 +// SPDX-License-Identifier: GPL-2.0
3258 +#include "bcm2711.dtsi"
3259 +#include "bcm2835-rpi.dtsi"
3262 + compatible = "raspberrypi,4-compute-module", "brcm,bcm2711";
3263 + model = "Raspberry Pi Compute Module 4";
3266 + /* 8250 auxiliary UART instead of pl011 */
3267 + stdout-path = "serial1:115200n8";
3270 + /* Will be filled by the bootloader */
3272 + device_type = "memory";
3277 + emmc2bus = &emmc2bus;
3278 + ethernet0 = &genet;
3284 + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
3289 + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
3290 + default-state = "keep";
3291 + linux,default-trigger = "default-on";
3295 + wifi_pwrseq: wifi-pwrseq {
3296 + compatible = "mmc-pwrseq-simple";
3297 + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
3300 + sd_io_1v8_reg: sd_io_1v8_reg {
3301 + compatible = "regulator-gpio";
3302 + regulator-name = "vdd-sd-io";
3303 + regulator-min-microvolt = <1800000>;
3304 + regulator-max-microvolt = <3300000>;
3305 + regulator-boot-on;
3306 + regulator-always-on;
3307 + regulator-settling-time-us = <5000>;
3308 + gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
3309 + states = <1800000 0x1
3314 + sd_vcc_reg: sd_vcc_reg {
3315 + compatible = "regulator-fixed";
3316 + regulator-name = "vcc-sd";
3317 + regulator-min-microvolt = <3300000>;
3318 + regulator-max-microvolt = <3300000>;
3319 + regulator-boot-on;
3320 + enable-active-high;
3321 + gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
3335 + compatible = "raspberrypi,firmware-gpio";
3337 + #gpio-cells = <2>;
3338 + gpio-line-names = "BT_ON",
3350 + gpios = <3 GPIO_ACTIVE_HIGH>;
3356 + gpios = <7 GPIO_ACTIVE_HIGH>;
3364 + * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
3365 + * the official GPU firmware DT blob.
3368 + * "FOO" = GPIO line named "FOO" on the schematic
3369 + * "FOO_N" = GPIO line named "FOO" on schematic, active low
3371 + gpio-line-names = "ID_SDA",
3402 + /* Used by BT module */
3407 + /* Used by Wifi */
3414 + /* Shared with SPI flash */
3417 + "STATUS_LED_G_CLK",
3436 + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
3437 + clock-names = "hdmi", "bvb", "audio", "cec";
3442 + clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
3443 + clock-names = "hdmi", "bvb", "audio", "cec";
3448 + clocks = <&firmware_clocks 4>;
3472 + status = "disabled";
3476 + pinctrl-names = "default";
3477 + pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
3481 +/* SDHCI is used to control the SDIO for wireless */
3483 + #address-cells = <1>;
3484 + #size-cells = <0>;
3485 + pinctrl-names = "default";
3486 + pinctrl-0 = <&emmc_gpio34>;
3489 + mmc-pwrseq = <&wifi_pwrseq>;
3494 + compatible = "brcm,bcm4329-fmac";
3498 +/* EMMC2 is used to drive the EMMC card */
3501 + vqmmc-supply = <&sd_io_1v8_reg>;
3502 + vmmc-supply = <&sd_vcc_reg>;
3508 + phy-handle = <&phy1>;
3509 + phy-mode = "rgmii-rxid";
3514 + phy1: ethernet-phy@1 {
3515 + /* No PHY interrupt */
3520 +/* uart0 communicates with the BT module */
3522 + pinctrl-names = "default";
3523 + pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
3528 + compatible = "brcm,bcm43438-bt";
3529 + max-speed = <2000000>;
3530 + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
3534 +/* uart1 is mapped to the pin header */
3536 + pinctrl-names = "default";
3537 + pinctrl-0 = <&uart1_gpio14>;
3542 + interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
3545 +// =============================================
3546 +// Downstream rpi- changes
3550 +#include "bcm270x.dtsi"
3551 +#include "bcm271x-rpi-bt.dtsi"
3555 + /delete-node/ pixelvalve@7e807000;
3556 + /delete-node/ hdmi@7e902000;
3560 +#include "bcm2711-rpi.dtsi"
3561 +#include "bcm283x-rpi-csi0-2lane.dtsi"
3562 +#include "bcm283x-rpi-csi1-4lane.dtsi"
3563 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
3567 + bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
3576 + /delete-property/ i2c2;
3581 + /delete-property/ intc;
3584 + /delete-node/ wifi-pwrseq;
3588 + pinctrl-names = "default";
3589 + pinctrl-0 = <&sdio_pins>;
3595 + pinctrl-0 = <&uart0_pins &bt_pins>;
3600 + pinctrl-0 = <&uart1_pins>;
3604 + pinctrl-names = "default";
3605 + pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
3606 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
3608 + spidev0: spidev@0{
3609 + compatible = "spidev";
3610 + reg = <0>; /* CE0 */
3611 + #address-cells = <1>;
3612 + #size-cells = <0>;
3613 + spi-max-frequency = <125000000>;
3616 + spidev1: spidev@1{
3617 + compatible = "spidev";
3618 + reg = <1>; /* CE1 */
3619 + #address-cells = <1>;
3620 + #size-cells = <0>;
3621 + spi-max-frequency = <125000000>;
3626 + spi0_pins: spi0_pins {
3627 + brcm,pins = <9 10 11>;
3628 + brcm,function = <BCM2835_FSEL_ALT0>;
3631 + spi0_cs_pins: spi0_cs_pins {
3632 + brcm,pins = <8 7>;
3633 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3636 + spi3_pins: spi3_pins {
3637 + brcm,pins = <1 2 3>;
3638 + brcm,function = <BCM2835_FSEL_ALT3>;
3641 + spi3_cs_pins: spi3_cs_pins {
3642 + brcm,pins = <0 24>;
3643 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3646 + spi4_pins: spi4_pins {
3647 + brcm,pins = <5 6 7>;
3648 + brcm,function = <BCM2835_FSEL_ALT3>;
3651 + spi4_cs_pins: spi4_cs_pins {
3652 + brcm,pins = <4 25>;
3653 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3656 + spi5_pins: spi5_pins {
3657 + brcm,pins = <13 14 15>;
3658 + brcm,function = <BCM2835_FSEL_ALT3>;
3661 + spi5_cs_pins: spi5_cs_pins {
3662 + brcm,pins = <12 26>;
3663 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3666 + spi6_pins: spi6_pins {
3667 + brcm,pins = <19 20 21>;
3668 + brcm,function = <BCM2835_FSEL_ALT3>;
3671 + spi6_cs_pins: spi6_cs_pins {
3672 + brcm,pins = <18 27>;
3673 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
3677 + brcm,pins = <0 1>;
3678 + brcm,function = <BCM2835_FSEL_ALT0>;
3679 + brcm,pull = <BCM2835_PUD_UP>;
3683 + brcm,pins = <2 3>;
3684 + brcm,function = <BCM2835_FSEL_ALT0>;
3685 + brcm,pull = <BCM2835_PUD_UP>;
3689 + brcm,pins = <4 5>;
3690 + brcm,function = <BCM2835_FSEL_ALT5>;
3691 + brcm,pull = <BCM2835_PUD_UP>;
3695 + brcm,pins = <8 9>;
3696 + brcm,function = <BCM2835_FSEL_ALT5>;
3697 + brcm,pull = <BCM2835_PUD_UP>;
3701 + brcm,pins = <12 13>;
3702 + brcm,function = <BCM2835_FSEL_ALT5>;
3703 + brcm,pull = <BCM2835_PUD_UP>;
3707 + brcm,pins = <22 23>;
3708 + brcm,function = <BCM2835_FSEL_ALT5>;
3709 + brcm,pull = <BCM2835_PUD_UP>;
3713 + brcm,pins = <18 19 20 21>;
3714 + brcm,function = <BCM2835_FSEL_ALT0>;
3717 + sdio_pins: sdio_pins {
3718 + brcm,pins = <34 35 36 37 38 39>;
3719 + brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
3720 + brcm,pull = <0 2 2 2 2 2>;
3723 + bt_pins: bt_pins {
3724 + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
3725 + // to fool pinctrl
3726 + brcm,function = <0>;
3730 + uart0_pins: uart0_pins {
3731 + brcm,pins = <32 33>;
3732 + brcm,function = <BCM2835_FSEL_ALT3>;
3733 + brcm,pull = <0 2>;
3736 + uart1_pins: uart1_pins {
3742 + uart2_pins: uart2_pins {
3743 + brcm,pins = <0 1>;
3744 + brcm,function = <BCM2835_FSEL_ALT4>;
3745 + brcm,pull = <0 2>;
3748 + uart3_pins: uart3_pins {
3749 + brcm,pins = <4 5>;
3750 + brcm,function = <BCM2835_FSEL_ALT4>;
3751 + brcm,pull = <0 2>;
3754 + uart4_pins: uart4_pins {
3755 + brcm,pins = <8 9>;
3756 + brcm,function = <BCM2835_FSEL_ALT4>;
3757 + brcm,pull = <0 2>;
3760 + uart5_pins: uart5_pins {
3761 + brcm,pins = <12 13>;
3762 + brcm,function = <BCM2835_FSEL_ALT4>;
3763 + brcm,pull = <0 2>;
3768 + clock-frequency = <100000>;
3772 + pinctrl-names = "default";
3773 + pinctrl-0 = <&i2c1_pins>;
3774 + clock-frequency = <100000>;
3778 + pinctrl-names = "default";
3779 + pinctrl-0 = <&i2s_pins>;
3784 + /delete-property/ i2c2_baudrate;
3785 + /delete-property/ i2c2_iknowwhatimdoing;
3789 +// =============================================
3790 +// Board specific stuff here
3797 + status = "disabled";
3801 + led-modes = <0x00 0x08>; /* link/activity link */
3805 + audio_pins: audio_pins {
3806 + brcm,pins = <40 41>;
3807 + brcm,function = <4>;
3814 + linux,default-trigger = "mmc0";
3815 + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
3820 + linux,default-trigger = "default-on";
3821 + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
3826 + status = "disabled";
3830 + pinctrl-names = "default";
3831 + pinctrl-0 = <&audio_pins>;
3836 + act_led_gpio = <&act_led>,"gpios:4";
3837 + act_led_activelow = <&act_led>,"gpios:8";
3838 + act_led_trigger = <&act_led>,"linux,default-trigger";
3840 + pwr_led_gpio = <&pwr_led>,"gpios:4";
3841 + pwr_led_activelow = <&pwr_led>,"gpios:8";
3842 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
3844 + eth_led0 = <&phy1>,"led-modes:0";
3845 + eth_led1 = <&phy1>,"led-modes:4";
3847 + ant1 = <&ant1>,"output-high?=on",
3848 + <&ant1>, "output-low?=off",
3849 + <&ant2>, "output-high?=off",
3850 + <&ant2>, "output-low?=on";
3851 + ant2 = <&ant1>,"output-high?=off",
3852 + <&ant1>, "output-low?=on",
3853 + <&ant2>, "output-high?=on",
3854 + <&ant2>, "output-low?=off";
3855 + noant = <&ant1>,"output-high?=off",
3856 + <&ant1>, "output-low?=on",
3857 + <&ant2>, "output-high?=off",
3858 + <&ant2>, "output-low?=on";
3860 + sd_poll_once = <&emmc2>, "non-removable?";
3861 + spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
3862 + <&spi0>, "dmas:8=", <&dma40>;
3865 diff --git a/arch/arm/boot/dts/bcm2711-rpi.dtsi b/arch/arm/boot/dts/bcm2711-rpi.dtsi
3866 new file mode 100644
3867 index 000000000000..4f903a787d65
3869 +++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi
3871 +// SPDX-License-Identifier: GPL-2.0
3872 +#include "bcm270x-rpi.dtsi"
3880 + compatible = "simple-bus";
3881 + #address-cells = <1>;
3882 + #size-cells = <2>;
3883 + ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
3884 + <0x40000000 0x0 0xff800000 0x0 0x00800000>;
3885 + dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
3887 + v3d: v3d@7ec04000 {
3888 + compatible = "brcm,2711-v3d";
3890 + <0x7ec00000 0x0 0x4000>,
3891 + <0x7ec04000 0x0 0x4000>;
3892 + reg-names = "hub", "core0";
3894 + power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
3895 + resets = <&pm BCM2835_RESET_V3D>;
3896 + clocks = <&firmware_clocks 5>;
3897 + clocks-names = "v3d";
3898 + interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
3899 + status = "disabled";
3909 + /* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
3910 + alloc-ranges = <0x0 0x00000000 0x30000000>;
3914 + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
3915 + <0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
3916 + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
3917 + <0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
3918 + dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
3920 + dma40: dma@7e007b00 {
3921 + compatible = "brcm,bcm2711-dma";
3922 + reg = <0x0 0x7e007b00 0x0 0x400>;
3924 + <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
3925 + <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
3926 + <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
3927 + <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
3928 + interrupt-names = "dma11",
3933 + brcm,dma-channel-mask = <0x7800>;
3936 + xhci: xhci@7e9c0000 {
3937 + compatible = "generic-xhci";
3938 + status = "disabled";
3939 + reg = <0x0 0x7e9c0000 0x0 0x100000>;
3940 + interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
3941 + power-domains = <&power RPI_POWER_DOMAIN_USB>;
3944 + hevc-decoder@7eb00000 {
3945 + compatible = "raspberrypi,rpivid-hevc-decoder";
3946 + reg = <0x0 0x7eb00000 0x0 0x10000>;
3950 + rpivid-local-intc@7eb10000 {
3951 + compatible = "raspberrypi,rpivid-local-intc";
3952 + reg = <0x0 0x7eb10000 0x0 0x1000>;
3954 + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
3957 + h264-decoder@7eb20000 {
3958 + compatible = "raspberrypi,rpivid-h264-decoder";
3959 + reg = <0x0 0x7eb20000 0x0 0x10000>;
3963 + vp9-decoder@7eb30000 {
3964 + compatible = "raspberrypi,rpivid-vp9-decoder";
3965 + reg = <0x0 0x7eb30000 0x0 0x10000>;
3971 + /* The VPU firmware uses DMA channel 11 for VCHIQ */
3972 + brcm,dma-channel-mask = <0x7000>;
3976 + compatible = "brcm,bcm2711-vchiq";
3980 + compatible = "raspberrypi,rpi-firmware-kms-2711";
3981 + interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
3985 + interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
3989 + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
3993 + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
3997 + interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
4001 + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
4005 + compatible = "brcm,bcm2711-rng200";
4010 + /* Enable the FIQ support */
4011 + reg = <0x7e980000 0x10000>,
4012 + <0x7e00b200 0x200>;
4013 + interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
4014 + <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
4015 + status = "disabled";
4019 + interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
4020 + <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
4028 + status = "disabled";
4032 + status = "disabled";
4036 + status = "disabled";
4040 + status = "disabled";
4044 + status = "disabled";
4048 + status = "disabled";
4052 + dmas = <&dma (10|(1<<27))>;
4053 + status = "disabled";
4057 + status = "disabled";
4061 + dmas = <&dma (17|(1<<27))>;
4062 + status = "disabled";
4066 + status = "disabled";
4070 + status = "disabled";
4072 diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
4073 index 3d040f6e2a20..6e0339266027 100644
4074 --- a/arch/arm/boot/dts/bcm2711.dtsi
4075 +++ b/arch/arm/boot/dts/bcm2711.dtsi
4076 @@ -318,7 +318,8 @@ hdmi0: hdmi@7ef00700 {
4080 - <0x7ef20000 0x100>;
4081 + <0x7ef20000 0x100>,
4082 + <0x7ef00100 0x30>;
4086 @@ -327,12 +328,18 @@ hdmi0: hdmi@7ef00700 {
4093 + clocks = <&firmware_clocks 13>,
4094 + <&firmware_clocks 14>,
4097 clock-names = "hdmi", "bvb", "audio", "cec";
4101 dma-names = "audio-rx";
4102 + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
4103 status = "disabled";
4106 @@ -354,7 +361,8 @@ hdmi1: hdmi@7ef05700 {
4110 - <0x7ef20000 0x100>;
4111 + <0x7ef20000 0x100>,
4112 + <0x7ef00100 0x30>;
4116 @@ -363,12 +371,18 @@ hdmi1: hdmi@7ef05700 {
4124 clock-names = "hdmi", "bvb", "audio", "cec";
4125 + clocks = <&firmware_clocks 13>,
4126 + <&firmware_clocks 14>,
4131 dma-names = "audio-rx";
4132 + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
4133 status = "disabled";
4136 @@ -468,14 +482,14 @@ cpu3: cpu@3 {
4138 compatible = "simple-bus";
4139 #address-cells = <2>;
4140 - #size-cells = <1>;
4141 + #size-cells = <2>;
4143 - ranges = <0x0 0x7c000000 0x0 0xfc000000 0x03800000>,
4144 - <0x6 0x00000000 0x6 0x00000000 0x40000000>;
4145 + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
4146 + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>;
4148 pcie0: pcie@7d500000 {
4149 compatible = "brcm,bcm2711-pcie";
4150 - reg = <0x0 0x7d500000 0x9310>;
4151 + reg = <0x0 0x7d500000 0x0 0x9310>;
4152 device_type = "pci";
4153 #address-cells = <3>;
4154 #interrupt-cells = <1>;
4155 @@ -503,7 +517,7 @@ pcie0: pcie@7d500000 {
4157 genet: ethernet@7d580000 {
4158 compatible = "brcm,bcm2711-genet-v5";
4159 - reg = <0x0 0x7d580000 0x10000>;
4160 + reg = <0x0 0x7d580000 0x0 0x10000>;
4161 #address-cells = <0x1>;
4162 #size-cells = <0x1>;
4163 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
4164 @@ -1010,7 +1024,7 @@ &cma {
4165 alloc-ranges = <0x0 0x00000000 0x40000000>;
4170 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
4171 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
4173 diff --git a/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi b/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
4174 new file mode 100644
4175 index 000000000000..6b9b79f74cf3
4177 +++ b/arch/arm/boot/dts/bcm271x-rpi-bt.dtsi
4179 +// SPDX-License-Identifier: GPL-2.0
4183 + compatible = "brcm,bcm43438-bt";
4184 + max-speed = <3000000>;
4185 + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
4186 + status = "disabled";
4191 + minibt: bluetooth {
4192 + compatible = "brcm,bcm43438-bt";
4193 + max-speed = <460800>;
4194 + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
4195 + status = "disabled";
4201 + krnbt = <&bt>,"status";
4202 + krnbt_baudrate = <&bt>,"max-speed:0";
4205 diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi
4206 index 4119271c979d..bd77ba3a3562 100644
4207 --- a/arch/arm/boot/dts/bcm2835-common.dtsi
4208 +++ b/arch/arm/boot/dts/bcm2835-common.dtsi
4209 @@ -116,12 +116,14 @@ hdmi: hdmi@7e902000 {
4210 compatible = "brcm,bcm2835-hdmi";
4211 reg = <0x7e902000 0x600>,
4213 + reg-names = "hdmi",
4215 interrupts = <2 8>, <2 9>;
4217 clocks = <&clocks BCM2835_PLLH_PIX>,
4218 <&clocks BCM2835_CLOCK_HSM>;
4219 clock-names = "pixel", "hdmi";
4221 + dmas = <&dma (17|(1<<27))>;
4222 dma-names = "audio-rx";
4223 status = "disabled";
4225 diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
4226 index 40b9405f1a8e..d2384d8e8555 100644
4227 --- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
4228 +++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
4229 @@ -126,3 +126,8 @@ &uart0 {
4230 pinctrl-0 = <&uart0_gpio14>;
4234 +/* i2c on camera/display connector is gpio 28&29 */
4236 + pinctrl-1 = <&i2c0_gpio28>;
4238 diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
4239 index 11edb581dbaf..4ceca674b752 100644
4240 --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
4241 +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
4242 @@ -121,3 +121,10 @@ &uart0 {
4243 pinctrl-0 = <&uart0_gpio14>;
4247 +/* i2c0 on camera/display connector is gpio 0&1. Not exposed on header.
4248 + * To avoid having to remap everything, map both ports to gpios 0&1
4251 + pinctrl-1 = <&i2c0_gpio0>;
4253 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
4254 index 1b435c64bd9c..8f2d10d82fa1 100644
4255 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
4256 +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
4257 @@ -128,3 +128,8 @@ &uart0 {
4258 pinctrl-0 = <&uart0_gpio14>;
4262 +/* i2c on camera/display connector is gpio 28&29 */
4264 + pinctrl-1 = <&i2c0_gpio28>;
4266 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
4267 index a23c25c00eea..547c88a3ae9f 100644
4268 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
4269 +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
4270 @@ -121,3 +121,10 @@ &uart0 {
4271 pinctrl-0 = <&uart0_gpio14>;
4275 +/* i2c0 on camera/display connector is gpio 0&1. Not exposed on header.
4276 + * To avoid having to remap everything, map both ports to gpios 0&1
4279 + pinctrl-1 = <&i2c0_gpio0>;
4281 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
4282 index 1b63d6b19750..073fc99ef8a2 100644
4283 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
4284 +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
4285 @@ -116,3 +116,10 @@ &uart0 {
4286 pinctrl-0 = <&uart0_gpio14>;
4290 +/* camera/display connector use BSC1 on GPIOS 2&3.
4291 + * To avoid having to remap everything, map both ports to gpios 0&1
4294 + pinctrl-1 = <&i2c0_gpio0>;
4296 diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts b/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
4297 index a75c882e6575..95564c93a645 100644
4298 --- a/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
4299 +++ b/arch/arm/boot/dts/bcm2835-rpi-cm1-io1.dts
4300 @@ -95,3 +95,8 @@ &uart0 {
4301 pinctrl-0 = <&uart0_gpio14>;
4305 +/* WHAT TO DO HERE? */
4307 + pinctrl-1 = <&i2c0_gpio28>;
4309 diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
4310 index 33b2b77aa47d..3ea5c7e6be54 100644
4311 --- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
4312 +++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
4313 @@ -149,3 +149,8 @@ &uart1 {
4314 pinctrl-0 = <&uart1_gpio14>;
4318 +/* i2c on camera/display connector is gpio 28&29 */
4320 + pinctrl-1 = <&i2c0_gpio28>;
4322 diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
4323 index 6f9b3a908f28..a0eabab12c99 100644
4324 --- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
4325 +++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
4326 @@ -117,3 +117,8 @@ &uart0 {
4327 pinctrl-0 = <&uart0_gpio14>;
4331 +/* i2c on camera/display connector is gpio 28&29 */
4333 + pinctrl-1 = <&i2c0_gpio28>;
4335 diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
4336 index 87ddcad76083..1b16cb9ccb88 100644
4337 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
4338 +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
4339 @@ -19,6 +19,11 @@ firmware: firmware {
4341 mboxes = <&mailbox>;
4344 + firmware_clocks: clocks {
4345 + compatible = "raspberrypi,firmware-clocks";
4346 + #clock-cells = <1>;
4351 @@ -49,13 +54,17 @@ alt0: alt0 {
4356 - pinctrl-names = "default";
4357 - pinctrl-0 = <&i2c0_gpio0>;
4360 clock-frequency = <100000>;
4364 + pinctrl-0 = <&i2c0_gpio0>;
4365 + /* pinctrl-1 varies based on platform */
4370 pinctrl-names = "default";
4371 pinctrl-0 = <&i2c1_gpio2>;
4372 diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
4373 index 0549686134ea..2ea891228ea0 100644
4374 --- a/arch/arm/boot/dts/bcm2835.dtsi
4375 +++ b/arch/arm/boot/dts/bcm2835.dtsi
4376 @@ -19,7 +19,7 @@ cpu@0 {
4379 ranges = <0x7e000000 0x20000000 0x02000000>;
4380 - dma-ranges = <0x40000000 0x00000000 0x20000000>;
4381 + dma-ranges = <0x80000000 0x00000000 0x20000000>;
4385 diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
4386 index d8af8eeac7b6..bf22b74359d8 100644
4387 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
4388 +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
4389 @@ -128,3 +128,8 @@ &uart0 {
4390 pinctrl-0 = <&uart0_gpio14>;
4394 +/* i2c on camera/display connector is gpio 28&29 */
4396 + pinctrl-1 = <&i2c0_gpio28>;
4398 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
4399 index 77099a7871b0..9529c0475673 100644
4400 --- a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
4401 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
4402 @@ -178,3 +178,8 @@ &uart1 {
4403 pinctrl-0 = <&uart1_gpio14>;
4407 +/* i2c on camera/display connector is gpio 44&45 */
4409 + pinctrl-1 = <&i2c0_gpio44>;
4411 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
4412 index 61010266ca9a..40cb269aed0f 100644
4413 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
4414 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
4415 @@ -181,3 +181,8 @@ &uart1 {
4416 pinctrl-0 = <&uart1_gpio14>;
4420 +/* i2c on camera/display connector is gpio 44&45 */
4422 + pinctrl-1 = <&i2c0_gpio44>;
4424 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
4425 index dd4a48604097..8f16b6b3fe08 100644
4426 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
4427 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
4428 @@ -174,3 +174,8 @@ &sdhost {
4433 +/* i2c on camera/display connector is gpio 44&45 */
4435 + pinctrl-1 = <&i2c0_gpio44>;
4437 diff --git a/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts b/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
4438 index 588d9411ceb6..dde209ade51b 100644
4439 --- a/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
4440 +++ b/arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts
4441 @@ -94,3 +94,8 @@ &uart0 {
4442 pinctrl-0 = <&uart0_gpio14>;
4446 +/* WHAT TO DO HERE? */
4448 + pinctrl-1 = <&i2c0_gpio28>;
4450 diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
4451 new file mode 100644
4452 index 000000000000..6e4ce8622b47
4454 +++ b/arch/arm/boot/dts/bcm283x-rpi-csi0-2lane.dtsi
4456 +// SPDX-License-Identifier: GPL-2.0-only
4458 + brcm,num-data-lanes = <2>;
4460 diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
4461 new file mode 100644
4462 index 000000000000..6938f4daacdc
4464 +++ b/arch/arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
4466 +// SPDX-License-Identifier: GPL-2.0-only
4468 + brcm,num-data-lanes = <2>;
4470 diff --git a/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi b/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
4471 new file mode 100644
4472 index 000000000000..b37037437bee
4474 +++ b/arch/arm/boot/dts/bcm283x-rpi-csi1-4lane.dtsi
4476 +// SPDX-License-Identifier: GPL-2.0-only
4478 + brcm,num-data-lanes = <4>;
4480 diff --git a/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
4481 new file mode 100644
4482 index 000000000000..38f0074bce3f
4484 +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
4487 + pinctrl-0 = <&i2c0_gpio0>;
4488 + pinctrl-1 = <&i2c0_gpio28>;
4490 diff --git a/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
4491 new file mode 100644
4492 index 000000000000..119946d878db
4494 +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
4497 + pinctrl-0 = <&i2c0_gpio0>;
4498 + pinctrl-1 = <&i2c0_gpio44>;
4500 diff --git a/arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi b/arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
4501 deleted file mode 100644
4502 index 0ff0e9e25327..000000000000
4503 --- a/arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
4506 -// SPDX-License-Identifier: GPL-2.0
4508 - dr_mode = "peripheral";
4509 - g-rx-fifo-size = <256>;
4510 - g-np-tx-fifo-size = <32>;
4511 - g-tx-fifo-size = <256 256 512 512 512 768 768>;
4513 diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
4514 index 0f3be55201a5..6d305b8b5ebe 100644
4515 --- a/arch/arm/boot/dts/bcm283x.dtsi
4516 +++ b/arch/arm/boot/dts/bcm283x.dtsi
4517 @@ -334,7 +334,7 @@ spi: spi@7e204000 {
4518 status = "disabled";
4521 - i2c0: i2c@7e205000 {
4522 + i2c0if: i2c@7e205000 {
4523 compatible = "brcm,bcm2835-i2c";
4524 reg = <0x7e205000 0x200>;
4525 interrupts = <2 21>;
4526 @@ -344,6 +344,30 @@ i2c0: i2c@7e205000 {
4527 status = "disabled";
4530 + i2c0mux: i2c0mux {
4531 + compatible = "i2c-mux-pinctrl";
4532 + #address-cells = <1>;
4533 + #size-cells = <0>;
4535 + i2c-parent = <&i2c0if>;
4537 + pinctrl-names = "i2c0", "i2c_csi_dsi";
4539 + status = "disabled";
4543 + #address-cells = <1>;
4544 + #size-cells = <0>;
4547 + i2c_csi_dsi: i2c@1 {
4549 + #address-cells = <1>;
4550 + #size-cells = <0>;
4555 compatible = "brcm,bcm2835-dpi";
4556 reg = <0x7e208000 0x8c>;
4557 diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
4558 new file mode 100644
4559 index 000000000000..b30568e29526
4561 +++ b/arch/arm/boot/dts/overlays/Makefile
4563 +# Overlays for the Raspberry Pi platform
4565 +dtb-$(CONFIG_ARCH_BCM2835) += overlay_map.dtb
4567 +dtbo-$(CONFIG_ARCH_BCM2835) += \
4570 + adau1977-adc.dtbo \
4571 + adau7002-simple.dtbo \
4577 + akkordion-iqdacplus.dtbo \
4578 + allo-boss-dac-pcm512x-audio.dtbo \
4579 + allo-digione.dtbo \
4580 + allo-katana-dac-audio.dtbo \
4581 + allo-piano-dac-pcm512x-audio.dtbo \
4582 + allo-piano-dac-plus-pcm512x-audio.dtbo \
4585 + applepi-dac.dtbo \
4587 + audioinjector-addons.dtbo \
4588 + audioinjector-isolated-soundcard.dtbo \
4589 + audioinjector-ultra.dtbo \
4590 + audioinjector-wm8731-audio.dtbo \
4591 + audiosense-pi.dtbo \
4596 + dionaudio-loco.dtbo \
4597 + dionaudio-loco-v2.dtbo \
4599 + disable-wifi.dtbo \
4606 + enc28j60-spi2.dtbo \
4608 + fe-pi-audio.dtbo \
4612 + googlevoicehat-soundcard.dtbo \
4617 + gpio-no-bank0-irq.dtbo \
4618 + gpio-no-irq.dtbo \
4619 + gpio-poweroff.dtbo \
4620 + gpio-shutdown.dtbo \
4621 + hd44780-lcd.dtbo \
4622 + hdmi-backlight-hwhack-gpio.dtbo \
4623 + hifiberry-amp.dtbo \
4624 + hifiberry-dac.dtbo \
4625 + hifiberry-dacplus.dtbo \
4626 + hifiberry-dacplusadc.dtbo \
4627 + hifiberry-dacplusadcpro.dtbo \
4628 + hifiberry-dacplusdsp.dtbo \
4629 + hifiberry-dacplushd.dtbo \
4630 + hifiberry-digi.dtbo \
4631 + hifiberry-digi-pro.dtbo \
4636 + i-sabre-q2m.dtbo \
4637 + i2c-bcm2708.dtbo \
4640 + i2c-pwm-pca9685a.dtbo \
4642 + i2c-rtc-gpio.dtbo \
4650 + i2s-gpio28-31.dtbo \
4655 + iqaudio-codec.dtbo \
4656 + iqaudio-dac.dtbo \
4657 + iqaudio-dacplus.dtbo \
4658 + iqaudio-digi-wm8804-audio.dtbo \
4660 + jedec-spi-nor.dtbo \
4661 + justboom-both.dtbo \
4662 + justboom-dac.dtbo \
4663 + justboom-digi.dtbo \
4670 + mcp2515-can0.dtbo \
4671 + mcp2515-can1.dtbo \
4675 + media-center.dtbo \
4679 + miniuart-bt.dtbo \
4689 + pifacedigital.dtbo \
4695 + pitft28-capacitive.dtbo \
4696 + pitft28-resistive.dtbo \
4697 + pitft35-resistive.dtbo \
4703 + rotary-encoder.dtbo \
4704 + rpi-backlight.dtbo \
4705 + rpi-cirrus-wm5102.dtbo \
4707 + rpi-display.dtbo \
4713 + rpivid-v4l2.dtbo \
4714 + rra-digidac1-wm8741-audio.dtbo \
4715 + sainsmart18.dtbo \
4716 + sc16is750-i2c.dtbo \
4717 + sc16is752-i2c.dtbo \
4718 + sc16is752-spi0.dtbo \
4719 + sc16is752-spi1.dtbo \
4727 + spi-gpio35-39.dtbo \
4728 + spi-gpio40-45.dtbo \
4747 + ssd1306-spi.dtbo \
4748 + ssd1351-spi.dtbo \
4749 + superaudioboard.dtbo \
4752 + tc358743-audio.dtbo \
4754 + tpm-slb9670.dtbo \
4763 + upstream-pi4.dtbo \
4764 + vc4-fkms-v3d.dtbo \
4765 + vc4-kms-kippah-7inch.dtbo \
4766 + vc4-kms-v3d.dtbo \
4767 + vc4-kms-v3d-pi4.dtbo \
4770 + w1-gpio-pullup.dtbo \
4774 +targets += dtbs dtbs_install
4775 +targets += $(dtbo-y)
4777 +always-y := $(dtbo-y)
4778 +clean-files := *.dtbo
4779 diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
4780 new file mode 100644
4781 index 000000000000..eff90baed406
4783 +++ b/arch/arm/boot/dts/overlays/README
4788 +This directory contains Device Tree overlays. Device Tree makes it possible
4789 +to support many hardware configurations with a single kernel and without the
4790 +need to explicitly load or blacklist kernel modules. Note that this isn't a
4791 +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
4792 +are still configured by the board support code, but the intention is to
4793 +eventually reach that goal.
4795 +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
4796 +default, the Raspberry Pi kernel boots with device tree enabled. You can
4797 +completely disable DT usage (for now) by adding:
4801 +to your config.txt, which should cause your Pi to revert to the old way of
4802 +doing things after a reboot.
4804 +In /boot you will find a .dtb for each base platform. This describes the
4805 +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
4806 +siblings) selects the .dtb file appropriate for the platform by name, and reads
4807 +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
4808 +are disabled, but they can be enabled using Device Tree parameters:
4810 + dtparam=i2c=on,i2s=on,spi=on
4812 +However, this shouldn't be necessary in many use cases because loading an
4813 +overlay that requires one of those interfaces will cause it to be enabled
4814 +automatically, and it is advisable to only enable interfaces if they are
4817 +Configuring additional, optional hardware is done using Device Tree overlays
4820 +GPIO numbering uses the hardware pin numbering scheme (aka BCM scheme) and
4821 +not the physical pin numbers.
4826 +The Advanced Options section of the raspi-config utility can enable and disable
4827 +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
4828 +is possible to both enable an interface and blacklist the driver, if for some
4829 +reason you should want to defer the loading.
4834 +As well as describing the hardware, Device Tree also gives enough information
4835 +to allow suitable driver modules to be located and loaded, with the corollary
4836 +that unneeded modules are not loaded. As a result it should be possible to
4837 +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
4838 +have its contents deleted (or commented out).
4843 +Overlays are loaded using the "dtoverlay" config.txt setting. As an example,
4844 +consider I2C Real Time Clock drivers. In the pre-DT world these would be loaded
4845 +by writing a magic string comprising a device identifier and an I2C address to
4846 +a special file in /sys/class/i2c-adapter, having first loaded the driver for
4847 +the I2C interface and the RTC device - something like this:
4849 + modprobe i2c-bcm2835
4850 + modprobe rtc-ds1307
4851 + echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
4853 +With DT enabled, this becomes a line in config.txt:
4855 + dtoverlay=i2c-rtc,ds1307
4857 +This causes the file /boot/overlays/i2c-rtc.dtbo to be loaded and a "node"
4858 +describing the DS1307 I2C device to be added to the Device Tree for the Pi. By
4859 +default it usees address 0x68, but this can be modified with an additional DT
4862 + dtoverlay=i2c-rtc,ds1307,addr=0x68
4864 +Parameters usually have default values, although certain parameters are
4865 +mandatory. See the list of overlays below for a description of the parameters
4866 +and their defaults.
4868 +The Overlay and Parameter Reference
4869 +===================================
4871 +N.B. When editing this file, please preserve the indentation levels to make it
4872 +simple to parse programmatically. NO HARD TABS.
4875 +Name: <The base DTB>
4876 +Info: Configures the base Raspberry Pi hardware
4877 +Load: <loaded automatically>
4879 + ant1 Select antenna 1 (default). CM4 only.
4881 + ant2 Select antenna 2. CM4 only.
4883 + noant Disable both antennas. CM4 only.
4885 + audio Set to "on" to enable the onboard ALSA audio
4886 + interface (default "off")
4888 + axiperf Set to "on" to enable the AXI bus performance
4890 + See /sys/kernel/debug/raspberrypi_axi_monitor
4893 + eee Enable Energy Efficient Ethernet support for
4894 + compatible devices (default "on"). See also
4895 + "tx_lpi_timer". Pi3B+ only.
4897 + eth_downshift_after Set the number of auto-negotiation failures
4898 + after which the 1000Mbps modes are disabled.
4899 + Legal values are 2, 3, 4, 5 and 0, where
4900 + 0 means never downshift (default 2). Pi3B+ only.
4902 + eth_led0 Set mode of LED0 - amber on Pi3B+ (default "1"),
4903 + green on Pi4 (default "0").
4904 + The legal values are:
4908 + 0=link/activity 1=link1000/activity
4909 + 2=link100/activity 3=link10/activity
4910 + 4=link100/1000/activity 5=link10/1000/activity
4911 + 6=link10/100/activity 14=off 15=on
4915 + 0=Speed/Activity 1=Speed
4916 + 2=Flash activity 3=FDX
4918 + 6=Alt 7=Speed/Flash
4921 + eth_led1 Set mode of LED1 - green on Pi3B+ (default "6"),
4922 + amber on Pi4 (default "8"). See eth_led0 for
4925 + eth_max_speed Set the maximum speed a link is allowed
4926 + to negotiate. Legal values are 10, 100 and
4927 + 1000 (default 1000). Pi3B+ only.
4929 + i2c_arm Set to "on" to enable the ARM's i2c interface
4932 + i2c_vc Set to "on" to enable the i2c interface
4933 + usually reserved for the VideoCore processor
4936 + i2c An alias for i2c_arm
4938 + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
4939 + (default "100000")
4941 + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
4942 + (default "100000")
4944 + i2c_baudrate An alias for i2c_arm_baudrate
4946 + i2s Set to "on" to enable the i2s interface
4949 + krnbt Set to "on" to enable autoprobing of Bluetooth
4950 + driver without need of hciattach/btattach
4953 + krnbt_baudrate Set the baudrate of the PL011 UART when used
4956 + spi Set to "on" to enable the spi interfaces
4959 + spi_dma4 Use to enable 40-bit DMA on spi interfaces
4960 + (the assigned value doesn't matter)
4963 + random Set to "on" to enable the hardware random
4964 + number generator (default "on")
4966 + sd_overclock Clock (in MHz) to use when the MMC framework
4969 + sd_poll_once Looks for a card once after booting. Useful
4970 + for network booting scenarios to avoid the
4971 + overhead of continuous polling. N.B. Using
4972 + this option restricts the system to using a
4973 + single card per boot (or none at all).
4976 + sd_force_pio Disable DMA support for SD driver (default off)
4978 + sd_pio_limit Number of blocks above which to use DMA for
4979 + SD card (default 1)
4981 + sd_debug Enable debug output from SD driver (default off)
4983 + sdio_overclock Clock (in MHz) to use when the MMC framework
4984 + requests 50MHz for the SDIO/WiFi interface.
4986 + tx_lpi_timer Set the delay in microseconds between going idle
4987 + and entering the low power state (default 600).
4988 + Requires EEE to be enabled - see "eee".
4990 + uart0 Set to "off" to disable uart0 (default "on")
4992 + uart1 Set to "on" or "off" to enable or disable uart1
4995 + watchdog Set to "on" to enable the hardware watchdog
4998 + act_led_trigger Choose which activity the LED tracks.
4999 + Use "heartbeat" for a nice load indicator.
5002 + act_led_activelow Set to "on" to invert the sense of the LED
5004 + N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led
5007 + act_led_gpio Set which GPIO to use for the activity LED
5008 + (in case you want to connect it to an external
5010 + (default "16" on a non-Plus board, "47" on a
5012 + N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led
5018 + As for act_led_*, but using the PWR LED.
5019 + Not available on Model A/B boards.
5021 + N.B. It is recommended to only enable those interfaces that are needed.
5022 + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
5023 + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
5024 + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
5025 + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
5026 + but deprecated because the ARM/VC assignments differ between board
5027 + revisions. The same board-specific mapping applies to i2c_baudrate,
5028 + and the other i2c baudrate parameters.
5032 +Info: Pi 3B, 3B+, 3A+ and 4B use a GPIO expander to drive the LEDs which can
5033 + only be accessed from the VPU. There is a special driver for this with a
5034 + separate DT node, which has the unfortunate consequence of breaking the
5035 + act_led_gpio and act_led_activelow dtparams.
5036 + This overlay changes the GPIO controller back to the standard one and
5037 + restores the dtparams.
5038 +Load: dtoverlay=act-led,<param>=<val>
5039 +Params: activelow Set to "on" to invert the sense of the LED
5042 + gpio Set which GPIO to use for the activity LED
5043 + (in case you want to connect it to an external
5049 +Info: Overlay for the SPI-connected Adafruit 1.8" display (based on the
5050 + ST7735R chip). It includes support for the "green tab" version.
5051 +Load: dtoverlay=adafruit18,<param>=<val>
5052 +Params: green Use the adafruit18_green variant.
5053 + rotate Display rotation {0,90,180,270}
5054 + speed SPI bus speed in Hz (default 4000000)
5055 + fps Display frame rate in Hz
5056 + bgr Enable BGR mode (default off)
5057 + debug Debug output level {0-7}
5058 + dc_pin GPIO pin for D/C (default 24)
5059 + reset_pin GPIO pin for RESET (default 25)
5060 + led_pin GPIO used to control backlight (default 18)
5064 +Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
5066 +Load: dtoverlay=adau1977-adc
5070 +Name: adau7002-simple
5071 +Info: Overlay for the activation of ADAU7002 stereo PDM to I2S converter.
5072 +Load: dtoverlay=adau7002-simple,<param>=<val>
5073 +Params: card-name Override the default, "adau7002", card name.
5077 +Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C
5078 +Load: dtoverlay=ads1015,<param>=<val>
5079 +Params: addr I2C bus address of device. Set based on how the
5080 + addr pin is wired. (default=0x48 assumes addr
5082 + cha_enable Enable virtual channel a. (default=true)
5083 + cha_cfg Set the configuration for virtual channel a.
5084 + (default=4 configures this channel for the
5085 + voltage at A0 with respect to GND)
5086 + cha_datarate Set the datarate (samples/sec) for this channel.
5087 + (default=4 sets 1600 sps)
5088 + cha_gain Set the gain of the Programmable Gain
5089 + Amplifier for this channel. (default=2 sets the
5090 + full scale of the channel to 2.048 Volts)
5092 + Channel (ch) parameters can be set for each enabled channel.
5093 + A maximum of 4 channels can be enabled (letters a thru d).
5094 + For more information refer to the device datasheet at:
5095 + http://www.ti.com/lit/ds/symlink/ads1015.pdf
5099 +Info: Texas Instruments ADS1115 ADC
5100 +Load: dtoverlay=ads1115,<param>[=<val>]
5101 +Params: addr I2C bus address of device. Set based on how the
5102 + addr pin is wired. (default=0x48 assumes addr
5104 + cha_enable Enable virtual channel a.
5105 + cha_cfg Set the configuration for virtual channel a.
5106 + (default=4 configures this channel for the
5107 + voltage at A0 with respect to GND)
5108 + cha_datarate Set the datarate (samples/sec) for this channel.
5109 + (default=7 sets 860 sps)
5110 + cha_gain Set the gain of the Programmable Gain
5111 + Amplifier for this channel. (Default 1 sets the
5112 + full scale of the channel to 4.096 Volts)
5114 + Channel parameters can be set for each enabled channel.
5115 + A maximum of 4 channels can be enabled (letters a thru d).
5116 + For more information refer to the device datasheet at:
5117 + http://www.ti.com/lit/ds/symlink/ads1115.pdf
5121 +Info: ADS7846 Touch controller
5122 +Load: dtoverlay=ads7846,<param>=<val>
5123 +Params: cs SPI bus Chip Select (default 1)
5124 + speed SPI bus speed (default 2MHz, max 3.25MHz)
5125 + penirq GPIO used for PENIRQ. REQUIRED
5126 + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
5127 + swapxy Swap x and y axis
5128 + xmin Minimum value on the X axis (default 0)
5129 + ymin Minimum value on the Y axis (default 0)
5130 + xmax Maximum value on the X axis (default 4095)
5131 + ymax Maximum value on the Y axis (default 4095)
5132 + pmin Minimum reported pressure value (default 0)
5133 + pmax Maximum reported pressure value (default 65535)
5134 + xohms Touchpanel sensitivity (X-plate resistance)
5137 + penirq is required and usually xohms (60-100) has to be set as well.
5138 + Apart from that, pmax (255) and swapxy are also common.
5139 + The rest of the calibration can be done with xinput-calibrator.
5140 + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
5141 + Device Tree binding document:
5142 + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
5146 +Info: Analog Devices ADV7282M analogue video to CSI2 bridge.
5147 + Uses Unicam1, which is the standard camera connector on most Pi
5149 +Load: dtoverlay=adv7282m,<param>=<val>
5150 +Params: addr Overrides the I2C address (default 0x21)
5154 +Info: Analog Devices ADV728[0|1|2]-M analogue video to CSI2 bridges.
5155 + This is a wrapper for adv7282m, and defaults to ADV7282M.
5156 +Load: dtoverlay=adv728x-m,<param>=<val>
5157 +Params: addr Overrides the I2C address (default 0x21)
5158 + adv7280m Select ADV7280-M.
5159 + adv7281m Select ADV7281-M.
5160 + adv7281ma Select ADV7281-MA.
5163 +Name: akkordion-iqdacplus
5164 +Info: Configures the Digital Dreamtime Akkordion Music Player (based on the
5165 + OEM IQAudIO DAC+ or DAC Zero module).
5166 +Load: dtoverlay=akkordion-iqdacplus,<param>=<val>
5167 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5168 + Digital volume control. Enable with
5169 + dtoverlay=akkordion-iqdacplus,24db_digital_gain
5170 + (The default behaviour is that the Digital
5171 + volume control is limited to a maximum of
5172 + 0dB. ie. it can attenuate but not provide
5173 + gain. For most users, this will be desired
5174 + as it will prevent clipping. By appending
5175 + the 24db_digital_gain parameter, the Digital
5176 + volume control will allow up to 24dB of
5177 + gain. If this parameter is enabled, it is the
5178 + responsibility of the user to ensure that
5179 + the Digital volume control is set to a value
5180 + that does not result in clipping/distortion!)
5183 +Name: allo-boss-dac-pcm512x-audio
5184 +Info: Configures the Allo Boss DAC audio cards.
5185 +Load: dtoverlay=allo-boss-dac-pcm512x-audio,<param>
5186 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5187 + Digital volume control. Enable with
5188 + "dtoverlay=allo-boss-dac-pcm512x-audio,
5189 + 24db_digital_gain"
5190 + (The default behaviour is that the Digital
5191 + volume control is limited to a maximum of
5192 + 0dB. ie. it can attenuate but not provide
5193 + gain. For most users, this will be desired
5194 + as it will prevent clipping. By appending
5195 + the 24db_digital_gain parameter, the Digital
5196 + volume control will allow up to 24dB of
5197 + gain. If this parameter is enabled, it is the
5198 + responsibility of the user to ensure that
5199 + the Digital volume control is set to a value
5200 + that does not result in clipping/distortion!)
5201 + slave Force Boss DAC into slave mode, using Pi a
5202 + master for bit clock and frame clock. Enable
5203 + with "dtoverlay=allo-boss-dac-pcm512x-audio,
5208 +Info: Configures the Allo Digione audio card
5209 +Load: dtoverlay=allo-digione
5213 +Name: allo-katana-dac-audio
5214 +Info: Configures the Allo Katana DAC audio card
5215 +Load: dtoverlay=allo-katana-dac-audio
5219 +Name: allo-piano-dac-pcm512x-audio
5220 +Info: Configures the Allo Piano DAC (2.0/2.1) audio cards.
5221 + (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo.
5222 + The subwoofer outputs on the Piano 2.1 are not currently supported!)
5223 +Load: dtoverlay=allo-piano-dac-pcm512x-audio,<param>
5224 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5225 + Digital volume control.
5226 + (The default behaviour is that the Digital
5227 + volume control is limited to a maximum of
5228 + 0dB. ie. it can attenuate but not provide
5229 + gain. For most users, this will be desired
5230 + as it will prevent clipping. By appending
5231 + the 24db_digital_gain parameter, the Digital
5232 + volume control will allow up to 24dB of
5233 + gain. If this parameter is enabled, it is the
5234 + responsibility of the user to ensure that
5235 + the Digital volume control is set to a value
5236 + that does not result in clipping/distortion!)
5239 +Name: allo-piano-dac-plus-pcm512x-audio
5240 +Info: Configures the Allo Piano DAC (2.1) audio cards.
5241 +Load: dtoverlay=allo-piano-dac-plus-pcm512x-audio,<param>
5242 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5243 + Digital volume control.
5244 + (The default behaviour is that the Digital
5245 + volume control is limited to a maximum of
5246 + 0dB. ie. it can attenuate but not provide
5247 + gain. For most users, this will be desired
5248 + as it will prevent clipping. By appending
5249 + the 24db_digital_gain parameter, the Digital
5250 + volume control will allow up to 24dB of
5251 + gain. If this parameter is enabled, it is the
5252 + responsibility of the user to ensure that
5253 + the Digital volume control is set to a value
5254 + that does not result in clipping/distortion!)
5255 + glb_mclk This option is only with Kali board. If enabled,
5256 + MCLK for Kali is used and PLL is disabled for
5257 + better voice quality. (default Off)
5261 +Info: Universal device tree overlay for SPI devices
5263 + Just specify the SPI address and device name ("compatible" property).
5264 + This overlay lacks any device-specific parameter support!
5266 + For devices on spi1 or spi2, the interfaces should be enabled
5267 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
5270 + 1. SPI NOR flash on spi0.1, maximum SPI clock frequency 45MHz:
5271 + dtoverlay=anyspi:spi0-1,dev="jedec,spi-nor",speed=45000000
5272 + 2. MCP3204 ADC on spi1.2, maximum SPI clock frequency 500kHz:
5273 + dtoverlay=anyspi:spi1-2,dev="microchip,mcp3204"
5274 +Load: dtoverlay=anyspi,<param>=<val>
5275 +Params: spi<n>-<m> Configure device at spi<n>, cs<m>
5276 + (boolean, required)
5277 + dev Set device name to search compatible module
5278 + (string, required)
5279 + speed Set SPI clock frequency in Hz
5280 + (integer, optional, default 500000)
5284 +Info: Configures the AVAGO APDS9960 digital proximity, ambient light, RGB and
5286 +Load: dtoverlay=apds9960,<param>=<val>
5287 +Params: gpiopin GPIO used for INT (default 4)
5288 + noints Disable the interrupt GPIO line.
5292 +Info: Configures the Orchard Audio ApplePi-DAC audio card
5293 +Load: dtoverlay=applepi-dac
5298 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
5299 + connected to spi0.0
5300 +Load: dtoverlay=at86rf233,<param>=<val>
5301 +Params: interrupt GPIO used for INT (default 23)
5302 + reset GPIO used for Reset (default 24)
5303 + sleep GPIO used for Sleep (default 25)
5304 + speed SPI bus speed in Hz (default 3000000)
5305 + trim Fine tuning of the internal capacitance
5306 + arrays (0=+0pF, 15=+4.5pF, default 15)
5309 +Name: audioinjector-addons
5310 +Info: Configures the audioinjector.net audio add on soundcards
5311 +Load: dtoverlay=audioinjector-addons,<param>=<val>
5312 +Params: non-stop-clocks Keeps the clocks running even when the stream
5313 + is paused or stopped (default off)
5316 +Name: audioinjector-isolated-soundcard
5317 +Info: Configures the audioinjector.net isolated soundcard
5318 +Load: dtoverlay=audioinjector-isolated-soundcard
5322 +Name: audioinjector-ultra
5323 +Info: Configures the audioinjector.net ultra soundcard
5324 +Load: dtoverlay=audioinjector-ultra
5328 +Name: audioinjector-wm8731-audio
5329 +Info: Configures the audioinjector.net audio add on soundcard
5330 +Load: dtoverlay=audioinjector-wm8731-audio
5334 +Name: audiosense-pi
5335 +Info: Configures the audiosense-pi add on soundcard
5336 + For more information refer to
5337 + https://gitlab.com/kakar0t/audiosense-pi
5338 +Load: dtoverlay=audiosense-pi
5343 +Info: Switches PWM sound output to GPIOs on the 40-pin header
5344 +Load: dtoverlay=audremap,<param>=<val>
5345 +Params: swap_lr Reverse the channel allocation, which will also
5346 + swap the audio jack outputs (default off)
5347 + enable_jack Don't switch off the audio jack output
5349 + pins_12_13 Select GPIOs 12 & 13 (default)
5350 + pins_18_19 Select GPIOs 18 & 19
5354 +Info: Overlay that enables WiFi, Bluetooth and the GPIO expander on the
5355 + balenaFin carrier board for the Raspberry Pi Compute Module 3/3+ Lite.
5356 +Load: dtoverlay=balena-fin
5360 +Name: bmp085_i2c-sensor
5361 +Info: This overlay is now deprecated - see i2c-sensor
5366 +Info: Set custom CMA sizes, only use if you know what you are doing, might
5367 + clash with other overlays like vc4-fkms-v3d and vc4-kms-v3d.
5368 +Load: dtoverlay=cma,<param>=<val>
5369 +Params: cma-512 CMA is 512MB (needs 1GB)
5370 + cma-448 CMA is 448MB (needs 1GB)
5371 + cma-384 CMA is 384MB (needs 1GB)
5372 + cma-320 CMA is 320MB (needs 1GB)
5373 + cma-256 CMA is 256MB (needs 1GB)
5374 + cma-192 CMA is 192MB (needs 1GB)
5375 + cma-128 CMA is 128MB
5376 + cma-96 CMA is 96MB
5377 + cma-64 CMA is 64MB
5378 + cma-size CMA size in bytes, 4MB aligned
5379 + cma-default Use upstream's default value
5383 +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
5384 + Also sometimes found with the part number(s) AM230x.
5385 +Load: dtoverlay=dht11,<param>=<val>
5386 +Params: gpiopin GPIO connected to the sensor's DATA output.
5390 +Name: dionaudio-loco
5391 +Info: Configures the Dion Audio LOCO DAC-AMP
5392 +Load: dtoverlay=dionaudio-loco
5396 +Name: dionaudio-loco-v2
5397 +Info: Configures the Dion Audio LOCO-V2 DAC-AMP
5398 +Load: dtoverlay=dionaudio-loco-v2,<param>=<val>
5399 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5400 + Digital volume control. Enable with
5401 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
5402 + (The default behaviour is that the Digital
5403 + volume control is limited to a maximum of
5404 + 0dB. ie. it can attenuate but not provide
5405 + gain. For most users, this will be desired
5406 + as it will prevent clipping. By appending
5407 + the 24dB_digital_gain parameter, the Digital
5408 + volume control will allow up to 24dB of
5409 + gain. If this parameter is enabled, it is the
5410 + responsibility of the user to ensure that
5411 + the Digital volume control is set to a value
5412 + that does not result in clipping/distortion!)
5416 +Info: Disable onboard Bluetooth on Pi 3B, 3B+, 3A+, 4B and Zero W, restoring
5417 + UART0/ttyAMA0 over GPIOs 14 & 15.
5418 + N.B. To disable the systemd service that initialises the modem so it
5419 + doesn't use the UART, use 'sudo systemctl disable hciuart'.
5420 +Load: dtoverlay=disable-bt
5425 +Info: Disable onboard WiFi on Pi 3B, 3B+, 3A+, 4B and Zero W.
5426 +Load: dtoverlay=disable-wifi
5431 +Info: Overlay for a generic 18-bit DPI display
5432 + This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output
5433 + 2-3 seconds after the kernel has started.
5434 +Load: dtoverlay=dpi18
5439 +Info: Overlay for a generic 24-bit DPI display
5440 + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output
5441 + 2-3 seconds after the kernel has started.
5442 +Load: dtoverlay=dpi24
5447 +Info: Configures the NW Digital Radio DRAWS Hat
5449 + The board includes an ADC to measure various board values and also
5450 + provides two analog user inputs on the expansion header. The ADC
5451 + can be configured for various sample rates and gain values to adjust
5452 + the input range. Tables describing the two parameters follow.
5464 + ADC Datarate Values:
5469 + 4 = 1600sps (default)
5473 +Load: dtoverlay=draws,<param>=<val>
5474 +Params: draws_adc_ch4_gain Sets the full scale resolution of the ADCs
5475 + input voltage sensor (default 1)
5477 + draws_adc_ch4_datarate Sets the datarate of the ADCs input voltage
5480 + draws_adc_ch5_gain Sets the full scale resolution of the ADCs
5481 + 5V rail voltage sensor (default 1)
5483 + draws_adc_ch5_datarate Sets the datarate of the ADCs 4V rail voltage
5486 + draws_adc_ch6_gain Sets the full scale resolution of the ADCs
5487 + AIN2 input (default 2)
5489 + draws_adc_ch6_datarate Sets the datarate of the ADCs AIN2 input
5491 + draws_adc_ch7_gain Sets the full scale resolution of the ADCs
5492 + AIN3 input (default 2)
5494 + draws_adc_ch7_datarate Sets the datarate of the ADCs AIN3 input
5496 + alsaname Name of the ALSA audio device (default "draws")
5500 +Info: Selects the dwc_otg USB controller driver which has fiq support. This
5501 + is the default on all except the Pi Zero which defaults to dwc2.
5502 +Load: dtoverlay=dwc-otg
5507 +Info: Selects the dwc2 USB controller driver
5508 +Load: dtoverlay=dwc2,<param>=<val>
5509 +Params: dr_mode Dual role mode: "host", "peripheral" or "otg"
5511 + g-rx-fifo-size Size of rx fifo size in gadget mode
5513 + g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget
5517 +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
5521 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0
5522 +Load: dtoverlay=enc28j60,<param>=<val>
5523 +Params: int_pin GPIO used for INT (default 25)
5525 + speed SPI bus speed (default 12000000)
5528 +Name: enc28j60-spi2
5529 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2
5530 +Load: dtoverlay=enc28j60-spi2,<param>=<val>
5531 +Params: int_pin GPIO used for INT (default 39)
5533 + speed SPI bus speed (default 12000000)
5537 +Info: Enables I2C connected EETI EXC3000 multiple touch controller using
5538 + GPIO 4 (pin 7 on GPIO header) for interrupt.
5539 +Load: dtoverlay=exc3000,<param>=<val>
5540 +Params: interrupt GPIO used for interrupt (default 4)
5541 + sizex Touchscreen size x (default 4096)
5542 + sizey Touchscreen size y (default 4096)
5543 + invx Touchscreen inverted x axis
5544 + invy Touchscreen inverted y axis
5545 + swapxy Touchscreen swapped x y axis
5549 +Info: Configures the Fe-Pi Audio Sound Card
5550 +Load: dtoverlay=fe-pi-audio
5555 +Info: A demonstration of the gpio-fsm driver. The GPIOs are chosen to work
5556 + nicely with a "traffic-light" display of red, amber and green LEDs on
5557 + GPIOs 7, 8 and 25 respectively.
5558 +Load: dtoverlay=fsm-demo,<param>=<val>
5559 +Params: fsm_debug Enable debug logging (default off)
5563 +Info: An overlay for the Ghost amplifier.
5564 +Load: dtoverlay=ghost-amp,<param>=<val>
5565 +Params: fsm_debug Enable debug logging of the GPIO FSM (default
5570 +Info: Enables I2C connected Goodix gt9271 multiple touch controller using
5571 + GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset.
5572 +Load: dtoverlay=goodix,<param>=<val>
5573 +Params: interrupt GPIO used for interrupt (default 4)
5574 + reset GPIO used for reset (default 17)
5577 +Name: googlevoicehat-soundcard
5578 +Info: Configures the Google voiceHAT soundcard
5579 +Load: dtoverlay=googlevoicehat-soundcard
5584 +Info: Configure a GPIO pin to control a cooling fan.
5585 +Load: dtoverlay=gpio-fan,<param>=<val>
5586 +Params: gpiopin GPIO used to control the fan (default 12)
5587 + temp Temperature at which the fan switches on, in
5588 + millicelcius (default 55000)
5592 +Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core-
5593 + based gpio_ir_recv driver maps received keys directly to a
5594 + /dev/input/event* device, all decoding is done by the kernel - LIRC is
5595 + not required! The key mapping and other decoding parameters can be
5596 + configured by "ir-keytable" tool.
5597 +Load: dtoverlay=gpio-ir,<param>=<val>
5598 +Params: gpio_pin Input pin number. Default is 18.
5600 + gpio_pull Desired pull-up/down state (off, down, up)
5603 + invert "1" = invert the input (active-low signalling).
5604 + "0" = non-inverted input (active-high
5605 + signalling). Default is "1".
5607 + rc-map-name Default rc keymap (can also be changed by
5608 + ir-keytable), defaults to "rc-rc6-mce"
5612 +Info: Use GPIO pin as bit-banged infrared transmitter output.
5613 + This is an alternative to "pwm-ir-tx". gpio-ir-tx doesn't require
5614 + a PWM so it can be used together with onboard analog audio.
5615 +Load: dtoverlay=gpio-ir-tx,<param>=<val>
5616 +Params: gpio_pin Output GPIO (default 18)
5618 + invert "1" = invert the output (make it active-low).
5619 + Default is "0" (active-high).
5623 +Info: This is a generic overlay for activating GPIO keypresses using
5624 + the gpio-keys library and this dtoverlay. Multiple keys can be
5625 + set up using multiple calls to the overlay for configuring
5626 + additional buttons or joysticks. You can see available keycodes
5627 + at https://github.com/torvalds/linux/blob/v4.12/include/uapi/
5628 + linux/input-event-codes.h#L64
5629 +Load: dtoverlay=gpio-key,<param>=<val>
5630 +Params: gpio GPIO pin to trigger on (default 3)
5631 + active_low When this is 1 (active low), a falling
5632 + edge generates a key down event and a
5633 + rising edge generates a key up event.
5634 + When this is 0 (active high), this is
5635 + reversed. The default is 1 (active low)
5636 + gpio_pull Desired pull-up/down state (off, down, up)
5637 + Default is "up". Note that the default pin
5638 + (GPIO3) has an external pullup
5639 + label Set a label for the key
5640 + keycode Set the key code for the button
5643 +Name: gpio-no-bank0-irq
5644 +Info: Use this overlay to disable GPIO interrupts for GPIOs in bank 0 (0-27),
5645 + which can be useful for UIO drivers.
5646 + N.B. Using this overlay will trigger a kernel WARN during booting, but
5647 + this can safely be ignored - the system should work as expected.
5648 +Load: dtoverlay=gpio-no-bank0-irq
5653 +Info: Use this overlay to disable all GPIO interrupts, which can be useful
5654 + for user-space GPIO edge detection systems.
5655 +Load: dtoverlay=gpio-no-irq
5659 +Name: gpio-poweroff
5660 +Info: Drives a GPIO high or low on poweroff (including halt). Enabling this
5661 + overlay will prevent the ability to boot by driving GPIO3 low.
5662 +Load: dtoverlay=gpio-poweroff,<param>=<val>
5663 +Params: gpiopin GPIO for signalling (default 26)
5665 + active_low Set if the power control device requires a
5666 + high->low transition to trigger a power-down.
5667 + Note that this will require the support of a
5668 + custom dt-blob.bin to prevent a power-down
5669 + during the boot process, and that a reboot
5670 + will also cause the pin to go low.
5671 + input Set if the gpio pin should be configured as
5673 + export Set to export the configured pin to sysfs
5674 + timeout_ms Specify (in ms) how long the kernel waits for
5675 + power-down before issuing a WARN (default 3000).
5678 +Name: gpio-shutdown
5679 +Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin
5680 + is configured as an input key that generates KEY_POWER events.
5682 + This event is handled by systemd-logind by initiating a
5683 + shutdown. Systemd versions older than 225 need an udev rule
5684 + enable listening to the input device:
5686 + ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", \
5687 + SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", \
5688 + ATTRS{keys}=="116", TAG+="power-switch"
5690 + Alternatively this event can be handled also on systems without
5691 + systemd, just by traditional SysV init daemon. KEY_POWER event
5692 + (keycode 116) needs to be mapped to KeyboardSignal on console
5693 + and then kb::kbrequest inittab action which is triggered by
5694 + KeyboardSignal from console can be configured to issue system
5695 + shutdown. Steps for this configuration are:
5697 + Add following lines to the /etc/console-setup/remap.inc file:
5699 + # Key Power as special keypress
5700 + keycode 116 = KeyboardSignal
5702 + Then add following lines to /etc/inittab file:
5704 + # Action on special keypress (Key Power)
5705 + kb::kbrequest:/sbin/shutdown -t1 -a -h -P now
5707 + And finally reload configuration by calling following commands:
5709 + # dpkg-reconfigure console-setup
5710 + # service console-setup reload
5713 + This overlay only handles shutdown. After shutdown, the system
5714 + can be powered up again by driving GPIO3 low. The default
5715 + configuration uses GPIO3 with a pullup, so if you connect a
5716 + button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
5717 + you get a shutdown and power-up button. Please note that
5718 + Raspberry Pi 1 Model B rev 1 uses GPIO1 instead of GPIO3.
5719 +Load: dtoverlay=gpio-shutdown,<param>=<val>
5720 +Params: gpio_pin GPIO pin to trigger on (default 3)
5721 + For Raspberry Pi 1 Model B rev 1 set this
5722 + explicitly to value 1, e.g.:
5724 + dtoverlay=gpio-shutdown,gpio_pin=1
5726 + active_low When this is 1 (active low), a falling
5727 + edge generates a key down event and a
5728 + rising edge generates a key up event.
5729 + When this is 0 (active high), this is
5730 + reversed. The default is 1 (active low).
5732 + gpio_pull Desired pull-up/down state (off, down, up)
5735 + Note that the default pin (GPIO3) has an
5736 + external pullup. Same applies for GPIO1
5737 + on Raspberry Pi 1 Model B rev 1.
5739 + debounce Specify the debounce interval in milliseconds
5744 +Info: Configures an HD44780 compatible LCD display. Uses 4 gpio pins for
5745 + data, 2 gpio pins for enable and register select and 1 optional pin
5746 + for enabling/disabling the backlight display.
5747 +Load: dtoverlay=hd44780-lcd,<param>=<val>
5748 +Params: pin_d4 GPIO pin for data pin D4 (default 6)
5750 + pin_d5 GPIO pin for data pin D5 (default 13)
5752 + pin_d6 GPIO pin for data pin D6 (default 19)
5754 + pin_d7 GPIO pin for data pin D7 (default 26)
5756 + pin_en GPIO pin for "Enable" (default 21)
5758 + pin_rs GPIO pin for "Register Select" (default 20)
5760 + pin_bl Optional pin for enabling/disabling the
5761 + display backlight. (default disabled)
5763 + display_height Height of the display in characters
5765 + display_width Width of the display in characters
5768 +Name: hdmi-backlight-hwhack-gpio
5769 +Info: Devicetree overlay for GPIO based backlight on/off capability.
5770 + Use this if you have one of those HDMI displays whose backlight cannot
5771 + be controlled via DPMS over HDMI and plan to do a little soldering to
5772 + use an RPi gpio pin for on/off switching. See:
5773 + https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)#Backlight_Control
5774 +Load: dtoverlay=hdmi-backlight-hwhack-gpio,<param>=<val>
5775 +Params: gpio_pin GPIO pin used (default 17)
5776 + active_low Set this to 1 if the display backlight is
5777 + switched on when the wire goes low.
5778 + Leave the default (value 0) if the backlight
5779 + expects a high to switch it on.
5782 +Name: hifiberry-amp
5783 +Info: Configures the HifiBerry Amp and Amp+ audio cards
5784 +Load: dtoverlay=hifiberry-amp
5788 +Name: hifiberry-dac
5789 +Info: Configures the HifiBerry DAC audio card
5790 +Load: dtoverlay=hifiberry-dac
5794 +Name: hifiberry-dacplus
5795 +Info: Configures the HifiBerry DAC+ audio card
5796 +Load: dtoverlay=hifiberry-dacplus,<param>=<val>
5797 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5798 + Digital volume control. Enable with
5799 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
5800 + (The default behaviour is that the Digital
5801 + volume control is limited to a maximum of
5802 + 0dB. ie. it can attenuate but not provide
5803 + gain. For most users, this will be desired
5804 + as it will prevent clipping. By appending
5805 + the 24dB_digital_gain parameter, the Digital
5806 + volume control will allow up to 24dB of
5807 + gain. If this parameter is enabled, it is the
5808 + responsibility of the user to ensure that
5809 + the Digital volume control is set to a value
5810 + that does not result in clipping/distortion!)
5811 + slave Force DAC+ Pro into slave mode, using Pi as
5812 + master for bit clock and frame clock.
5813 + leds_off If set to 'true' the onboard indicator LEDs
5814 + are switched off at all times.
5817 +Name: hifiberry-dacplusadc
5818 +Info: Configures the HifiBerry DAC+ADC audio card
5819 +Load: dtoverlay=hifiberry-dacplusadc,<param>=<val>
5820 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5821 + Digital volume control. Enable with
5822 + "dtoverlay=hifiberry-dacplus,24db_digital_gain"
5823 + (The default behaviour is that the Digital
5824 + volume control is limited to a maximum of
5825 + 0dB. ie. it can attenuate but not provide
5826 + gain. For most users, this will be desired
5827 + as it will prevent clipping. By appending
5828 + the 24dB_digital_gain parameter, the Digital
5829 + volume control will allow up to 24dB of
5830 + gain. If this parameter is enabled, it is the
5831 + responsibility of the user to ensure that
5832 + the Digital volume control is set to a value
5833 + that does not result in clipping/distortion!)
5834 + slave Force DAC+ Pro into slave mode, using Pi as
5835 + master for bit clock and frame clock.
5836 + leds_off If set to 'true' the onboard indicator LEDs
5837 + are switched off at all times.
5840 +Name: hifiberry-dacplusadcpro
5841 +Info: Configures the HifiBerry DAC+ADC PRO audio card
5842 +Load: dtoverlay=hifiberry-dacplusadcpro,<param>=<val>
5843 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
5844 + Digital volume control. Enable with
5845 + "dtoverlay=hifiberry-dacplusadcpro,24db_digital_gain"
5846 + (The default behaviour is that the Digital
5847 + volume control is limited to a maximum of
5848 + 0dB. ie. it can attenuate but not provide
5849 + gain. For most users, this will be desired
5850 + as it will prevent clipping. By appending
5851 + the 24dB_digital_gain parameter, the Digital
5852 + volume control will allow up to 24dB of
5853 + gain. If this parameter is enabled, it is the
5854 + responsibility of the user to ensure that
5855 + the Digital volume control is set to a value
5856 + that does not result in clipping/distortion!)
5857 + slave Force DAC+ADC Pro into slave mode, using Pi as
5858 + master for bit clock and frame clock.
5859 + leds_off If set to 'true' the onboard indicator LEDs
5860 + are switched off at all times.
5863 +Name: hifiberry-dacplusdsp
5864 +Info: Configures the HifiBerry DAC+DSP audio card
5865 +Load: dtoverlay=hifiberry-dacplusdsp
5869 +Name: hifiberry-dacplushd
5870 +Info: Configures the HifiBerry DAC+ HD audio card
5871 +Load: dtoverlay=hifiberry-dacplushd
5875 +Name: hifiberry-digi
5876 +Info: Configures the HifiBerry Digi and Digi+ audio card
5877 +Load: dtoverlay=hifiberry-digi
5881 +Name: hifiberry-digi-pro
5882 +Info: Configures the HifiBerry Digi+ Pro audio card
5883 +Load: dtoverlay=hifiberry-digi-pro
5888 +Info: Enables "High Peripheral" mode
5889 +Load: dtoverlay=highperi
5894 +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
5895 + Default values match Texy's display shield
5896 +Load: dtoverlay=hy28a,<param>=<val>
5897 +Params: speed Display SPI bus speed
5899 + rotate Display rotation {0,90,180,270}
5901 + fps Delay between frame updates
5903 + debug Debug output level {0-7}
5905 + xohms Touchpanel sensitivity (X-plate resistance)
5907 + resetgpio GPIO used to reset controller
5909 + ledgpio GPIO used to control backlight
5913 +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
5914 + Default values match Texy's display shield
5915 +Load: dtoverlay=hy28b,<param>=<val>
5916 +Params: speed Display SPI bus speed
5918 + rotate Display rotation {0,90,180,270}
5920 + fps Delay between frame updates
5922 + debug Debug output level {0-7}
5924 + xohms Touchpanel sensitivity (X-plate resistance)
5926 + resetgpio GPIO used to reset controller
5928 + ledgpio GPIO used to control backlight
5932 +Info: HY28B 2017 version - 2.8" TFT LCD Display Module by HAOYU Electronics
5933 + Default values match Texy's display shield
5934 +Load: dtoverlay=hy28b-2017,<param>=<val>
5935 +Params: speed Display SPI bus speed
5937 + rotate Display rotation {0,90,180,270}
5939 + fps Delay between frame updates
5941 + debug Debug output level {0-7}
5943 + xohms Touchpanel sensitivity (X-plate resistance)
5945 + resetgpio GPIO used to reset controller
5947 + ledgpio GPIO used to control backlight
5951 +Info: Configures the Audiophonics I-SABRE Q2M DAC
5952 +Load: dtoverlay=i-sabre-q2m
5957 +Info: Fall back to the i2c_bcm2708 driver for the i2c_arm bus.
5958 +Load: dtoverlay=i2c-bcm2708
5963 +Info: Adds support for software i2c controller on gpio pins
5964 +Load: dtoverlay=i2c-gpio,<param>=<val>
5965 +Params: i2c_gpio_sda GPIO used for I2C data (default "23")
5967 + i2c_gpio_scl GPIO used for I2C clock (default "24")
5969 + i2c_gpio_delay_us Clock delay in microseconds
5970 + (default "2" = ~100kHz)
5972 + bus Set to a unique, non-zero value if wanting
5973 + multiple i2c-gpio busses. If set, will be used
5974 + as the preferred bus number (/dev/i2c-<n>). If
5975 + not set, the default value is 0, but the bus
5976 + number will be dynamically assigned - probably
5981 +Info: Adds support for a number of I2C bus multiplexers on i2c_arm
5982 +Load: dtoverlay=i2c-mux,<param>=<val>
5983 +Params: pca9542 Select the NXP PCA9542 device
5985 + pca9545 Select the NXP PCA9545 device
5987 + pca9548 Select the NXP PCA9548 device
5989 + addr Change I2C address of the device (default 0x70)
5992 +[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
5995 +Name: i2c-pwm-pca9685a
5996 +Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
5997 +Load: dtoverlay=i2c-pwm-pca9685a,<param>=<val>
5998 +Params: addr I2C address of PCA9685A (default 0x40)
6002 +Info: Adds support for a number of I2C Real Time Clock devices
6003 +Load: dtoverlay=i2c-rtc,<param>=<val>
6004 +Params: abx80x Select one of the ABx80x family:
6005 + AB0801, AB0803, AB0804, AB0805,
6006 + AB1801, AB1803, AB1804, AB1805
6008 + ds1307 Select the DS1307 device
6010 + ds1339 Select the DS1339 device
6012 + ds3231 Select the DS3231 device
6014 + m41t62 Select the M41T62 device
6016 + mcp7940x Select the MCP7940x device
6018 + mcp7941x Select the MCP7941x device
6020 + pcf2127 Select the PCF2127 device
6022 + pcf2129 Select the PCF2129 device
6024 + pcf8523 Select the PCF8523 device
6026 + pcf85363 Select the PCF85363 device
6028 + pcf8563 Select the PCF8563 device
6030 + rv1805 Select the Micro Crystal RV1805 device
6032 + rv3028 Select the Micro Crystal RV3028 device
6034 + sd3078 Select the ZXW Shenzhen whwave SD3078 device
6036 + addr Sets the address for the RTC. Note that the
6037 + device must be configured to use the specified
6040 + trickle-diode-type Diode type for trickle charge - "standard" or
6041 + "schottky" (ABx80x and RV1805 only)
6043 + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
6044 + ABx80x, RV1805, RV3028)
6046 + wakeup-source Specify that the RTC can be used as a wakeup
6049 + backup-switchover-mode Backup power supply switch mode. Must be 0 for
6050 + off or 1 for Vdd < VBackup (RV3028 only)
6054 +Info: Adds support for a number of I2C Real Time Clock devices
6055 + using the software i2c controller
6056 +Load: dtoverlay=i2c-rtc-gpio,<param>=<val>
6057 +Params: abx80x Select one of the ABx80x family:
6058 + AB0801, AB0803, AB0804, AB0805,
6059 + AB1801, AB1803, AB1804, AB1805
6061 + ds1307 Select the DS1307 device
6063 + ds1339 Select the DS1339 device
6065 + ds3231 Select the DS3231 device
6067 + m41t62 Select the M41T62 device
6069 + mcp7940x Select the MCP7940x device
6071 + mcp7941x Select the MCP7941x device
6073 + pcf2127 Select the PCF2127 device
6075 + pcf2129 Select the PCF2129 device
6077 + pcf8523 Select the PCF8523 device
6079 + pcf8563 Select the PCF8563 device
6081 + rv1805 Select the Micro Crystal RV1805 device
6083 + rv3028 Select the Micro Crystal RV3028 device
6085 + addr Sets the address for the RTC. Note that the
6086 + device must be configured to use the specified
6089 + trickle-diode-type Diode type for trickle charge - "standard" or
6090 + "schottky" (ABx80x and RV1805 only)
6092 + trickle-resistor-ohms Resistor value for trickle charge (DS1339,
6093 + ABx80x, RV1805, RV3028)
6095 + wakeup-source Specify that the RTC can be used as a wakeup
6098 + backup-switchover-mode Backup power supply switch mode. Must be 0 for
6099 + off or 1 for Vdd < VBackup (RV3028 only)
6101 + i2c_gpio_sda GPIO used for I2C data (default "23")
6103 + i2c_gpio_scl GPIO used for I2C clock (default "24")
6105 + i2c_gpio_delay_us Clock delay in microseconds
6106 + (default "2" = ~100kHz)
6110 +Info: Adds support for a number of I2C barometric pressure and temperature
6111 + sensors on i2c_arm
6112 +Load: dtoverlay=i2c-sensor,<param>=<val>
6113 +Params: addr Set the address for the BME280, BME680, BMP280,
6114 + DS1621, HDC100X, LM75, SHT3x or TMP102
6116 + bme280 Select the Bosch Sensortronic BME280
6117 + Valid addresses 0x76-0x77, default 0x76
6119 + bme680 Select the Bosch Sensortronic BME680
6120 + Valid addresses 0x76-0x77, default 0x76
6122 + bmp085 Select the Bosch Sensortronic BMP085
6124 + bmp180 Select the Bosch Sensortronic BMP180
6126 + bmp280 Select the Bosch Sensortronic BMP280
6127 + Valid addresses 0x76-0x77, default 0x76
6129 + ds1621 Select the Dallas Semiconductors DS1621 temp
6130 + sensor. Valid addresses 0x48-0x4f, default 0x48
6132 + hdc100x Select the Texas Instruments HDC100x temp sensor
6133 + Valid addresses 0x40-0x43, default 0x40
6135 + htu21 Select the HTU21 temperature and humidity sensor
6137 + lm75 Select the Maxim LM75 temperature sensor
6138 + Valid addresses 0x48-0x4f, default 0x4f
6140 + lm75addr Deprecated - use addr parameter instead
6142 + max17040 Select the Maxim Integrated MAX17040 battery
6145 + sht3x Select the Sensiron SHT3x temperature and
6146 + humidity sensor. Valid addresses 0x44-0x45,
6149 + si7020 Select the Silicon Labs Si7013/20/21 humidity/
6150 + temperature sensor
6152 + sps30 Select the Sensirion SPS30 particulate matter
6153 + sensor. Fixed address 0x69.
6155 + tmp102 Select the Texas Instruments TMP102 temp sensor
6156 + Valid addresses 0x48-0x4b, default 0x48
6158 + tsl4531 Select the AMS TSL4531 digital ambient light
6161 + veml6070 Select the Vishay VEML6070 ultraviolet light
6166 +Info: Change i2c0 pin usage. Not all pin combinations are usable on all
6167 + platforms - platforms other then Compute Modules can only use this
6168 + to disable transaction combining.
6169 + Do NOT use in conjunction with dtparam=i2c_vc=on. From the 5.4 kernel
6170 + onwards the base DT includes the use of i2c_mux_pinctrl to expose two
6171 + muxings of BSC0 - GPIOs 0&1, and whichever combination is used for the
6172 + camera and display connectors. This overlay disables that mux and
6173 + configures /dev/i2c0 to point at whichever set of pins is requested.
6174 + dtparam=i2c_vc=on will try and enable the mux, so combining the two
6175 + will cause conflicts.
6176 +Load: dtoverlay=i2c0,<param>=<val>
6177 +Params: pins_0_1 Use pins 0 and 1 (default)
6178 + pins_28_29 Use pins 28 and 29
6179 + pins_44_45 Use pins 44 and 45
6180 + pins_46_47 Use pins 46 and 47
6181 + combine Allow transactions to be combined (default
6186 +Info: Deprecated, legacy version of i2c0.
6191 +Info: Change i2c1 pin usage. Not all pin combinations are usable on all
6192 + platforms - platforms other then Compute Modules can only use this
6193 + to disable transaction combining.
6194 +Load: dtoverlay=i2c1,<param>=<val>
6195 +Params: pins_2_3 Use pins 2 and 3 (default)
6196 + pins_44_45 Use pins 44 and 45
6197 + combine Allow transactions to be combined (default
6202 +Info: Deprecated, legacy version of i2c1.
6207 +Info: Enable the i2c3 bus. BCM2711 only.
6208 +Load: dtoverlay=i2c3,<param>
6209 +Params: pins_2_3 Use GPIOs 2 and 3
6210 + pins_4_5 Use GPIOs 4 and 5 (default)
6211 + baudrate Set the baudrate for the interface (default
6216 +Info: Enable the i2c4 bus. BCM2711 only.
6217 +Load: dtoverlay=i2c4,<param>
6218 +Params: pins_6_7 Use GPIOs 6 and 7
6219 + pins_8_9 Use GPIOs 8 and 9 (default)
6220 + baudrate Set the baudrate for the interface (default
6225 +Info: Enable the i2c5 bus. BCM2711 only.
6226 +Load: dtoverlay=i2c5,<param>
6227 +Params: pins_10_11 Use GPIOs 10 and 11
6228 + pins_12_13 Use GPIOs 12 and 13 (default)
6229 + baudrate Set the baudrate for the interface (default
6234 +Info: Enable the i2c6 bus. BCM2711 only.
6235 +Load: dtoverlay=i2c6,<param>
6236 +Params: pins_0_1 Use GPIOs 0 and 1
6237 + pins_22_23 Use GPIOs 22 and 23 (default)
6238 + baudrate Set the baudrate for the interface (default
6242 +Name: i2s-gpio28-31
6243 +Info: move I2S function block to GPIO 28 to 31
6244 +Load: dtoverlay=i2s-gpio28-31
6249 +Info: Enables I2C connected Ilitek 251x multiple touch controller using
6250 + GPIO 4 (pin 7 on GPIO header) for interrupt.
6251 +Load: dtoverlay=ilitek251x,<param>=<val>
6252 +Params: interrupt GPIO used for interrupt (default 4)
6253 + sizex Touchscreen size x, horizontal resolution of
6254 + touchscreen (in pixels)
6255 + sizey Touchscreen size y, vertical resolution of
6256 + touchscreen (in pixels)
6260 +Info: Sony IMX219 camera module.
6261 + Uses Unicam 1, which is the standard camera connector on most Pi
6263 +Load: dtoverlay=imx219,<param>=<val>
6264 +Params: rotation Mounting rotation of the camera sensor (0 or
6269 +Info: Sony IMX290 camera module.
6270 + Uses Unicam 1, which is the standard camera connector on most Pi
6271 + variants. NB This currently uses 4 CSI2 data lanes and therefore will
6272 + only work on a CM.
6273 +Load: dtoverlay=imx290,<param>
6274 +Params: 4lane Enable 4 CSI2 lanes. This requires a Compute
6275 + Module (1, 3, or 4).
6276 + clock-frequency Sets the clock frequency to match that used on
6278 + Modules from Vision Components use 37.125MHz
6279 + (the default), whilst those from Innomaker use
6281 + mono Denote that the module is a mono sensor.
6285 +Info: Sony IMX477 camera module.
6286 + Uses Unicam 1, which is the standard camera connector on most Pi
6288 +Load: dtoverlay=imx477,<param>=<val>
6289 +Params: rotation Mounting rotation of the camera sensor (0 or
6293 +Name: iqaudio-codec
6294 +Info: Configures the IQaudio Codec audio card
6295 +Load: dtoverlay=iqaudio-codec
6300 +Info: Configures the IQaudio DAC audio card
6301 +Load: dtoverlay=iqaudio-dac,<param>
6302 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
6303 + Digital volume control. Enable with
6304 + "dtoverlay=iqaudio-dac,24db_digital_gain"
6305 + (The default behaviour is that the Digital
6306 + volume control is limited to a maximum of
6307 + 0dB. ie. it can attenuate but not provide
6308 + gain. For most users, this will be desired
6309 + as it will prevent clipping. By appending
6310 + the 24db_digital_gain parameter, the Digital
6311 + volume control will allow up to 24dB of
6312 + gain. If this parameter is enabled, it is the
6313 + responsibility of the user to ensure that
6314 + the Digital volume control is set to a value
6315 + that does not result in clipping/distortion!)
6318 +Name: iqaudio-dacplus
6319 +Info: Configures the IQaudio DAC+ audio card
6320 +Load: dtoverlay=iqaudio-dacplus,<param>=<val>
6321 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
6322 + Digital volume control. Enable with
6323 + "dtoverlay=iqaudio-dacplus,24db_digital_gain"
6324 + (The default behaviour is that the Digital
6325 + volume control is limited to a maximum of
6326 + 0dB. ie. it can attenuate but not provide
6327 + gain. For most users, this will be desired
6328 + as it will prevent clipping. By appending
6329 + the 24db_digital_gain parameter, the Digital
6330 + volume control will allow up to 24dB of
6331 + gain. If this parameter is enabled, it is the
6332 + responsibility of the user to ensure that
6333 + the Digital volume control is set to a value
6334 + that does not result in clipping/distortion!)
6335 + auto_mute_amp If specified, unmute/mute the IQaudIO amp when
6336 + starting/stopping audio playback.
6337 + unmute_amp If specified, unmute the IQaudIO amp once when
6338 + the DAC driver module loads.
6341 +Name: iqaudio-digi-wm8804-audio
6342 +Info: Configures the IQAudIO Digi WM8804 audio card
6343 +Load: dtoverlay=iqaudio-digi-wm8804-audio,<param>=<val>
6344 +Params: card_name Override the default, "IQAudIODigi", card name.
6345 + dai_name Override the default, "IQAudIO Digi", dai name.
6346 + dai_stream_name Override the default, "IQAudIO Digi HiFi",
6351 +Info: Infineon irs1125 TOF camera module.
6352 + Uses Unicam 1, which is the standard camera connector on most Pi
6354 +Load: dtoverlay=irs1125
6358 +Name: jedec-spi-nor
6359 +Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
6360 + "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
6361 +Load: dtoverlay=jedec-spi-nor,<param>=<val>
6362 +Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
6363 + flash-fastr-spi<n>-<m> Enables flash device with fast read capability
6364 + on SPI<n>, CS#<m>.
6367 +Name: justboom-both
6368 +Info: Simultaneous usage of an justboom-dac and justboom-digi based
6370 +Load: dtoverlay=justboom-both,<param>=<val>
6371 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
6372 + Digital volume control. Enable with
6373 + "dtoverlay=justboom-dac,24db_digital_gain"
6374 + (The default behaviour is that the Digital
6375 + volume control is limited to a maximum of
6376 + 0dB. ie. it can attenuate but not provide
6377 + gain. For most users, this will be desired
6378 + as it will prevent clipping. By appending
6379 + the 24dB_digital_gain parameter, the Digital
6380 + volume control will allow up to 24dB of
6381 + gain. If this parameter is enabled, it is the
6382 + responsibility of the user to ensure that
6383 + the Digital volume control is set to a value
6384 + that does not result in clipping/distortion!)
6388 +Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
6390 +Load: dtoverlay=justboom-dac,<param>=<val>
6391 +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
6392 + Digital volume control. Enable with
6393 + "dtoverlay=justboom-dac,24db_digital_gain"
6394 + (The default behaviour is that the Digital
6395 + volume control is limited to a maximum of
6396 + 0dB. ie. it can attenuate but not provide
6397 + gain. For most users, this will be desired
6398 + as it will prevent clipping. By appending
6399 + the 24dB_digital_gain parameter, the Digital
6400 + volume control will allow up to 24dB of
6401 + gain. If this parameter is enabled, it is the
6402 + responsibility of the user to ensure that
6403 + the Digital volume control is set to a value
6404 + that does not result in clipping/distortion!)
6407 +Name: justboom-digi
6408 +Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
6409 +Load: dtoverlay=justboom-digi
6414 +Info: This overlay has been deprecated and removed - see gpio-ir
6419 +Info: Adds support for the ltc294x family of battery gauges
6420 +Load: dtoverlay=ltc294x,<param>=<val>
6421 +Params: ltc2941 Select the ltc2941 device
6423 + ltc2942 Select the ltc2942 device
6425 + ltc2943 Select the ltc2943 device
6427 + ltc2944 Select the ltc2944 device
6429 + resistor-sense The sense resistor value in milli-ohms.
6430 + Can be a 32-bit negative value when the battery
6431 + has been connected to the wrong end of the
6434 + prescaler-exponent Range and accuracy of the gauge. The value is
6435 + programmed into the chip only if it differs
6436 + from the current setting.
6438 + - Default value is 128
6439 + - the exponent is in the range 0-7 (default 7)
6440 + See the datasheet for more information.
6444 +Info: Configures the Maxim MAX98357A I2S DAC
6445 +Load: dtoverlay=max98357a,<param>=<val>
6446 +Params: no-sdmode Driver does not manage the state of the DAC's
6447 + SD_MODE pin (i.e. chip is always on).
6448 + sdmode-pin integer, GPIO pin connected to the SD_MODE input
6449 + of the DAC (default GPIO4 if parameter omitted).
6453 +Info: Configure a MAX6675 or MAX31855 thermocouple as an IIO device.
6455 + For devices on spi1 or spi2, the interfaces should be enabled
6456 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
6457 + The overlay expects to disable the relevant spidev node, so also using
6458 + e.g. cs0_spidev=off is unnecessary.
6460 + Note: with the 5.7 kernel (and later) there will also be
6461 + overlays for MAX31855E, MAX31855J, MAX31855K,
6462 + MAX31885N, MAX31855R, MAX31855S and MAX31855T.
6465 + MAX31855 on /dev/spidev0.0
6466 + dtoverlay=maxtherm,spi0-0,max31855
6468 +Load: dtoverlay=maxtherm,<param>=<val>
6469 +Params: spi<n>-<m> Configure device at spi<n>, cs<m>
6470 + (boolean, required)
6471 + max6675 Enable support for the MAX6675 (default)
6472 + max31855 Enable support for the MAX31855
6473 + max31855e Enable support for the MAX31855E
6474 + max31855j Enable support for the MAX31855J
6475 + max31855k Enable support for the MAX31855K
6476 + max31855n Enable support for the MAX31855N
6477 + max31855r Enable support for the MAX31855R
6478 + max31855s Enable support for the MAX31855S
6479 + max31855t Enable support for the MAX31855T
6483 +Info: Configures the mbed AudioCODEC (TLV320AIC23B)
6484 +Load: dtoverlay=mbed-dac
6489 +Info: Configures the MCP23017 I2C GPIO expander
6490 +Load: dtoverlay=mcp23017,<param>=<val>
6491 +Params: gpiopin Gpio pin connected to the INTA output of the
6492 + MCP23017 (default: 4)
6494 + addr I2C address of the MCP23017 (default: 0x20)
6496 + mcp23008 Configure an MCP23008 instead.
6497 + noints Disable the interrupt GPIO line.
6501 +Info: Configures the MCP23S08/17 SPI GPIO expanders.
6502 + If devices are present on SPI1 or SPI2, those interfaces must be enabled
6503 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
6504 + If interrupts are enabled for a device on a given CS# on a SPI bus, that
6505 + device must be the only one present on that SPI bus/CS#.
6506 +Load: dtoverlay=mcp23s17,<param>=<val>
6507 +Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
6508 + devices present on SPI<n>, CS#<m>
6510 + s17-spi<n>-<m>-present 8-bit integer, bitmap indicating MCP23S17
6511 + devices present on SPI<n>, CS#<m>
6513 + s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
6514 + MCP23S08 device on SPI<n>, CS#<m>, specifies
6515 + the GPIO pin to which INT output of MCP23S08
6518 + s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
6519 + single MCP23S17 device on SPI<n>, CS#<m>,
6520 + specifies the GPIO pin to which either INTA
6521 + or INTB output of MCP23S17 is connected.
6525 +Info: Configures the MCP2515 CAN controller on spi0.0
6526 +Load: dtoverlay=mcp2515-can0,<param>=<val>
6527 +Params: oscillator Clock frequency for the CAN controller (Hz)
6529 + spimaxfrequency Maximum SPI frequence (Hz)
6531 + interrupt GPIO for interrupt signal
6535 +Info: Configures the MCP2515 CAN controller on spi0.1
6536 +Load: dtoverlay=mcp2515-can1,<param>=<val>
6537 +Params: oscillator Clock frequency for the CAN controller (Hz)
6539 + spimaxfrequency Maximum SPI frequence (Hz)
6541 + interrupt GPIO for interrupt signal
6545 +Info: Configures MCP3008 A/D converters
6546 + For devices on spi1 or spi2, the interfaces should be enabled
6547 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
6548 +Load: dtoverlay=mcp3008,<param>[=<val>]
6549 +Params: spi<n>-<m>-present boolean, configure device at spi<n>, cs<m>
6550 + spi<n>-<m>-speed integer, set the spi bus speed for this device
6554 +Info: Configures MCP3202 A/D converters
6555 + For devices on spi1 or spi2, the interfaces should be enabled
6556 + with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
6557 +Load: dtoverlay=mcp3202,<param>[=<val>]
6558 +Params: spi<n>-<m>-present boolean, configure device at spi<n>, cs<m>
6559 + spi<n>-<m>-speed integer, set the spi bus speed for this device
6563 +Info: Overlay for activation of Microchip MCP3421-3428 ADCs over I2C
6564 +Load: dtoverlay=mcp342x,<param>=<val>
6565 +Params: addr I2C bus address of device, for devices with
6566 + addresses that are configurable, e.g. by
6567 + hardware links (default=0x68)
6568 + mcp3421 The device is an MCP3421
6569 + mcp3422 The device is an MCP3422
6570 + mcp3423 The device is an MCP3423
6571 + mcp3424 The device is an MCP3424
6572 + mcp3425 The device is an MCP3425
6573 + mcp3426 The device is an MCP3426
6574 + mcp3427 The device is an MCP3427
6575 + mcp3428 The device is an MCP3428
6579 +Info: Media Center HAT - 2.83" Touch Display + extras by Pi Supply
6580 +Load: dtoverlay=media-center,<param>=<val>
6581 +Params: speed Display SPI bus speed
6582 + rotate Display rotation {0,90,180,270}
6583 + fps Delay between frame updates
6584 + xohms Touchpanel sensitivity (X-plate resistance)
6585 + swapxy Swap x and y axis
6586 + backlight Change backlight GPIO pin {e.g. 12, 18}
6587 + gpio_out_pin GPIO for output (default "17")
6588 + gpio_in_pin GPIO for input (default "18")
6589 + gpio_in_pull Pull up/down/off on the input pin
6591 + sense Override the IR receive auto-detection logic:
6592 + "0" = force active-high
6593 + "1" = force active-low
6594 + "-1" = use auto-detection
6596 + softcarrier Turn the software carrier "on" or "off"
6598 + invert "on" = invert the output pin (default "off")
6599 + debug "on" = enable additional debug messages
6604 +Info: Configures the merus-amp audio card
6605 +Load: dtoverlay=merus-amp
6610 +Info: Configures UART0 (ttyAMA0) so that a requested 38.4kbaud actually gets
6611 + 31.25kbaud, the frequency required for MIDI
6612 +Load: dtoverlay=midi-uart0
6617 +Info: Configures UART1 (ttyS0) so that a requested 38.4kbaud actually gets
6618 + 31.25kbaud, the frequency required for MIDI
6619 +Load: dtoverlay=midi-uart1
6624 +Info: Switch the onboard Bluetooth function on Pi 3B, 3B+, 3A+, 4B and Zero W
6625 + to use the mini-UART (ttyS0) and restore UART0/ttyAMA0 over GPIOs 14 &
6626 + 15. Note that this may reduce the maximum usable baudrate.
6627 + N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
6628 + and replace ttyAMA0 with ttyS0, unless using Raspbian or another
6629 + distribution with udev rules that create /dev/serial0 and /dev/serial1,
6630 + in which case use /dev/serial1 instead because it will always be
6631 + correct. Furthermore, you must also set core_freq and core_freq_min to
6632 + the same value in config.txt or the miniuart will not work.
6633 +Load: dtoverlay=miniuart-bt,<param>=<val>
6634 +Params: krnbt Set to "on" to enable autoprobing of Bluetooth
6635 + driver without need of hciattach/btattach
6639 +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
6640 +Load: dtoverlay=mmc,<param>=<val>
6641 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
6646 +Info: Overlay for i2c connected mpu6050 imu
6647 +Load: dtoverlay=mpu6050,<param>=<val>
6648 +Params: interrupt GPIO pin for interrupt (default 4)
6652 +Info: MZ61581 display by Tontec
6653 +Load: dtoverlay=mz61581,<param>=<val>
6654 +Params: speed Display SPI bus speed
6656 + rotate Display rotation {0,90,180,270}
6658 + fps Delay between frame updates
6660 + txbuflen Transmit buffer length (default 32768)
6662 + debug Debug output level {0-7}
6664 + xohms Touchpanel sensitivity (X-plate resistance)
6668 +Info: Omnivision OV5647 camera module.
6669 + Uses Unicam 1, which is the standard camera connector on most Pi
6671 +Load: dtoverlay=ov5647,<param>=<val>
6672 +Params: rotation Mounting rotation of the camera sensor (0 or
6677 +Info: Omnivision OV7251 camera module.
6678 + Uses Unicam 1, which is the standard camera connector on most Pi
6680 +Load: dtoverlay=ov7251
6685 +Info: Omnivision OV9281 camera module.
6686 + Uses Unicam 1, which is the standard camera connector on most Pi
6688 +Load: dtoverlay=ov9281
6693 +Info: PaPiRus ePaper Screen by Pi Supply (both HAT and pHAT)
6694 +Load: dtoverlay=papirus,<param>=<val>
6695 +Params: panel Display panel (required):
6700 + speed Display SPI bus speed
6704 +Info: TI PCA953x family of I2C GPIO expanders. Default is for NXP PCA9534.
6705 +Load: dtoverlay=pca953x,<param>=<val>
6706 +Params: addr I2C address of expander. Default 0x20.
6707 + pca6416 Select the NXP PCA6416 (16 bit)
6708 + pca9505 Select the NXP PCA9505 (40 bit)
6709 + pca9535 Select the NXP PCA9535 (16 bit)
6710 + pca9536 Select the NXP PCA9536 or TI PCA9536 (4 bit)
6711 + pca9537 Select the NXP PCA9537 (4 bit)
6712 + pca9538 Select the NXP PCA9538 (8 bit)
6713 + pca9539 Select the NXP PCA9539 (16 bit)
6714 + pca9554 Select the NXP PCA9554 (8 bit)
6715 + pca9555 Select the NXP PCA9555 (16 bit)
6716 + pca9556 Select the NXP PCA9556 (8 bit)
6717 + pca9557 Select the NXP PCA9557 (8 bit)
6718 + pca9574 Select the NXP PCA9574 (8 bit)
6719 + pca9575 Select the NXP PCA9575 (16 bit)
6720 + pca9698 Select the NXP PCA9698 (40 bit)
6721 + pca16416 Select the NXP PCA16416 (16 bit)
6722 + pca16524 Select the NXP PCA16524 (24 bit)
6723 + pca19555a Select the NXP PCA19555A (16 bit)
6724 + max7310 Select the Maxim MAX7310 (8 bit)
6725 + max7312 Select the Maxim MAX7312 (16 bit)
6726 + max7313 Select the Maxim MAX7313 (16 bit)
6727 + max7315 Select the Maxim MAX7315 (8 bit)
6728 + pca6107 Select the TI PCA6107 (8 bit)
6729 + tca6408 Select the TI TCA6408 (8 bit)
6730 + tca6416 Select the TI TCA6416 (16 bit)
6731 + tca6424 Select the TI TCA6424 (24 bit)
6732 + tca9539 Select the TI TCA9539 (16 bit)
6733 + tca9554 Select the TI TCA9554 (8 bit)
6734 + cat9554 Select the Onnn CAT9554 (8 bit)
6735 + pca9654 Select the Onnn PCA9654 (8 bit)
6736 + xra1202 Select the Exar XRA1202 (8 bit)
6739 +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
6742 +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
6745 +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
6749 +Info: This overlay has been renamed act-led, keeping pi3-act-led as an alias
6750 + for backwards compatibility.
6754 +Name: pi3-disable-bt
6755 +Info: This overlay has been renamed disable-bt, keeping pi3-disable-bt as an
6756 + alias for backwards compatibility.
6760 +Name: pi3-disable-wifi
6761 +Info: This overlay has been renamed disable-wifi, keeping pi3-disable-wifi as
6762 + an alias for backwards compatibility.
6766 +Name: pi3-miniuart-bt
6767 +Info: This overlay has been renamed miniuart-bt, keeping pi3-miniuart-bt as
6768 + an alias for backwards compatibility.
6773 +Info: Configures the pibell audio card.
6774 +Load: dtoverlay=pibell,<param>=<val>
6775 +Params: alsaname Set the name as it appears in ALSA (default
6779 +Name: pifacedigital
6780 +Info: Configures the PiFace Digital mcp23s17 GPIO port expander.
6781 +Load: dtoverlay=pifacedigital,<param>=<val>
6782 +Params: spi-present-mask 8-bit integer, bitmap indicating MCP23S17 SPI0
6783 + CS0 address. PiFace Digital supports addresses
6784 + 0-3, which can be configured with JP1 and JP2.
6788 +Info: Configures the PiGlow by pimoroni.com
6789 +Load: dtoverlay=piglow
6794 +Info: PiScreen display by OzzMaker.com
6795 +Load: dtoverlay=piscreen,<param>=<val>
6796 +Params: speed Display SPI bus speed
6798 + rotate Display rotation {0,90,180,270}
6800 + fps Delay between frame updates
6802 + debug Debug output level {0-7}
6804 + xohms Touchpanel sensitivity (X-plate resistance)
6808 +Info: PiScreen 2 with resistive TP display by OzzMaker.com
6809 +Load: dtoverlay=piscreen2r,<param>=<val>
6810 +Params: speed Display SPI bus speed
6812 + rotate Display rotation {0,90,180,270}
6814 + fps Delay between frame updates
6816 + debug Debug output level {0-7}
6818 + xohms Touchpanel sensitivity (X-plate resistance)
6822 +Info: Configures the Blokas Labs pisound card
6823 +Load: dtoverlay=pisound
6828 +Info: Adafruit PiTFT 2.2" screen
6829 +Load: dtoverlay=pitft22,<param>=<val>
6830 +Params: speed Display SPI bus speed
6832 + rotate Display rotation {0,90,180,270}
6834 + fps Delay between frame updates
6836 + debug Debug output level {0-7}
6839 +Name: pitft28-capacitive
6840 +Info: Adafruit PiTFT 2.8" capacitive touch screen
6841 +Load: dtoverlay=pitft28-capacitive,<param>=<val>
6842 +Params: speed Display SPI bus speed
6844 + rotate Display rotation {0,90,180,270}
6846 + fps Delay between frame updates
6848 + debug Debug output level {0-7}
6850 + touch-sizex Touchscreen size x (default 240)
6852 + touch-sizey Touchscreen size y (default 320)
6854 + touch-invx Touchscreen inverted x axis
6856 + touch-invy Touchscreen inverted y axis
6858 + touch-swapxy Touchscreen swapped x y axis
6861 +Name: pitft28-resistive
6862 +Info: Adafruit PiTFT 2.8" resistive touch screen
6863 +Load: dtoverlay=pitft28-resistive,<param>=<val>
6864 +Params: speed Display SPI bus speed
6866 + rotate Display rotation {0,90,180,270}
6868 + fps Delay between frame updates
6870 + debug Debug output level {0-7}
6873 +Name: pitft35-resistive
6874 +Info: Adafruit PiTFT 3.5" resistive touch screen
6875 +Load: dtoverlay=pitft35-resistive,<param>=<val>
6876 +Params: speed Display SPI bus speed
6878 + rotate Display rotation {0,90,180,270}
6880 + fps Delay between frame updates
6882 + debug Debug output level {0-7}
6886 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
6887 +Load: dtoverlay=pps-gpio,<param>=<val>
6888 +Params: gpiopin Input GPIO (default "18")
6889 + assert_falling_edge When present, assert is indicated by a falling
6890 + edge, rather than by a rising edge (default
6892 + capture_clear Generate clear events on the trailing edge
6897 +Info: Configures a single PWM channel
6898 + Legal pin,function combinations for each channel:
6899 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
6900 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
6902 + 1) Pin 18 is the only one available on all platforms, and
6903 + it is the one used by the I2S audio interface.
6904 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
6905 + 2) The onboard analogue audio output uses both PWM channels.
6906 + 3) So be careful mixing audio and PWM.
6907 + 4) Currently the clock must have been enabled and configured
6909 +Load: dtoverlay=pwm,<param>=<val>
6910 +Params: pin Output pin (default 18) - see table
6911 + func Pin function (default 2 = Alt5) - see above
6912 + clock PWM clock frequency (informational)
6916 +Info: Configures both PWM channels
6917 + Legal pin,function combinations for each channel:
6918 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
6919 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
6921 + 1) Pin 18 is the only one available on all platforms, and
6922 + it is the one used by the I2S audio interface.
6923 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
6924 + 2) The onboard analogue audio output uses both PWM channels.
6925 + 3) So be careful mixing audio and PWM.
6926 + 4) Currently the clock must have been enabled and configured
6928 +Load: dtoverlay=pwm-2chan,<param>=<val>
6929 +Params: pin Output pin (default 18) - see table
6930 + pin2 Output pin for other channel (default 19)
6931 + func Pin function (default 2 = Alt5) - see above
6932 + func2 Function for pin2 (default 2 = Alt5)
6933 + clock PWM clock frequency (informational)
6937 +Info: Use GPIO pin as pwm-assisted infrared transmitter output.
6938 + This is an alternative to "gpio-ir-tx". pwm-ir-tx makes use
6939 + of PWM0 to reduce the CPU load during transmission compared to
6940 + gpio-ir-tx which uses bit-banging.
6941 + Legal pin,function combinations are:
6942 + 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
6943 +Load: dtoverlay=pwm-ir-tx,<param>=<val>
6944 +Params: gpio_pin Output GPIO (default 18)
6946 + func Pin function (default 2 = Alt5)
6950 +Info: I2SE's Evaluation Board for PLC Stamp micro
6951 +Load: dtoverlay=qca7000,<param>=<val>
6952 +Params: int_pin GPIO pin for interrupt signal (default 23)
6954 + speed SPI bus speed (default 12 MHz)
6957 +Name: rotary-encoder
6958 +Info: Overlay for GPIO connected rotary encoder.
6959 +Load: dtoverlay=rotary-encoder,<param>=<val>
6960 +Params: pin_a GPIO connected to rotary encoder channel A
6962 + pin_b GPIO connected to rotary encoder channel B
6964 + relative_axis register a relative axis rather than an
6965 + absolute one. Relative axis will only
6966 + generate +1/-1 events on the input device,
6967 + hence no steps need to be passed.
6968 + linux_axis the input subsystem axis to map to this
6969 + rotary encoder. Defaults to 0 (ABS_X / REL_X)
6970 + rollover Automatic rollover when the rotary value
6971 + becomes greater than the specified steps or
6972 + smaller than 0. For absolute axis only.
6973 + steps-per-period Number of steps (stable states) per period.
6974 + The values have the following meaning:
6975 + 1: Full-period mode (default)
6976 + 2: Half-period mode
6977 + 4: Quarter-period mode
6978 + steps Number of steps in a full turnaround of the
6979 + encoder. Only relevant for absolute axis.
6980 + Defaults to 24 which is a typical value for
6982 + wakeup Boolean, rotary encoder can wake up the
6984 + encoding String, the method used to encode steps.
6985 + Supported are "gray" (the default and more
6986 + common) and "binary".
6989 +Name: rpi-backlight
6990 +Info: Raspberry Pi official display backlight driver
6991 +Load: dtoverlay=rpi-backlight
6995 +Name: rpi-cirrus-wm5102
6996 +Info: Configures the Cirrus Logic Audio Card
6997 +Load: dtoverlay=rpi-cirrus-wm5102
7002 +Info: Configures the RPi DAC audio card
7003 +Load: dtoverlay=rpi-dac
7008 +Info: RPi-Display - 2.8" Touch Display by Watterott
7009 +Load: dtoverlay=rpi-display,<param>=<val>
7010 +Params: speed Display SPI bus speed
7011 + rotate Display rotation {0,90,180,270}
7012 + fps Delay between frame updates
7013 + debug Debug output level {0-7}
7014 + xohms Touchpanel sensitivity (X-plate resistance)
7015 + swapxy Swap x and y axis
7016 + backlight Change backlight GPIO pin {e.g. 12, 18}
7020 +Info: Official Raspberry Pi display touchscreen
7021 +Load: dtoverlay=rpi-ft5406,<param>=<val>
7022 +Params: touchscreen-size-x Touchscreen X resolution (default 800)
7023 + touchscreen-size-y Touchscreen Y resolution (default 600);
7024 + touchscreen-inverted-x Invert touchscreen X coordinates (default 0);
7025 + touchscreen-inverted-y Invert touchscreen Y coordinates (default 0);
7026 + touchscreen-swapped-x-y Swap X and Y cordinates (default 0);
7030 +Info: Raspberry Pi PoE HAT fan
7031 +Load: dtoverlay=rpi-poe,<param>[=<val>]
7032 +Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan
7033 + turns on (default 40000)
7034 + poe_fan_temp0_hyst Temperature delta (in millicelcius) at which
7035 + the fan turns off (default 2000)
7036 + poe_fan_temp1 Temperature (in millicelcius) at which the fan
7037 + speeds up (default 45000)
7038 + poe_fan_temp1_hyst Temperature delta (in millicelcius) at which
7039 + the fan slows down (default 2000)
7040 + poe_fan_temp2 Temperature (in millicelcius) at which the fan
7041 + speeds up (default 50000)
7042 + poe_fan_temp2_hyst Temperature delta (in millicelcius) at which
7043 + the fan slows down (default 2000)
7044 + poe_fan_temp3 Temperature (in millicelcius) at which the fan
7045 + speeds up (default 55000)
7046 + poe_fan_temp3_hyst Temperature delta (in millicelcius) at which
7047 + the fan slows down (default 5000)
7051 +Info: Configures the RPi Proto audio card
7052 +Load: dtoverlay=rpi-proto
7057 +Info: Raspberry Pi Sense HAT
7058 +Load: dtoverlay=rpi-sense
7063 +Info: Raspberry Pi TV HAT
7064 +Load: dtoverlay=rpi-tv
7069 +Info: Load the V4L2 stateless video decoder driver for the HEVC block,
7070 + disabling the memory mapped devices in the process.
7071 +Load: dtoverlay=rpivid-v4l2
7075 +Name: rra-digidac1-wm8741-audio
7076 +Info: Configures the Red Rocks Audio DigiDAC1 soundcard
7077 +Load: dtoverlay=rra-digidac1-wm8741-audio
7082 +Info: Overlay for the SPI-connected Sainsmart 1.8" display (based on the
7084 +Load: dtoverlay=sainsmart18,<param>=<val>
7085 +Params: rotate Display rotation {0,90,180,270}
7086 + speed SPI bus speed in Hz (default 4000000)
7087 + fps Display frame rate in Hz
7088 + bgr Enable BGR mode (default off)
7089 + debug Debug output level {0-7}
7090 + dc_pin GPIO pin for D/C (default 24)
7091 + reset_pin GPIO pin for RESET (default 25)
7094 +Name: sc16is750-i2c
7095 +Info: Overlay for the NXP SC16IS750 UART with I2C Interface
7096 + Enables the chip on I2C1 at 0x48 (or the "addr" parameter value). To
7097 + select another address, please refer to table 10 in reference manual.
7098 +Load: dtoverlay=sc16is750-i2c,<param>=<val>
7099 +Params: int_pin GPIO used for IRQ (default 24)
7100 + addr Address (default 0x48)
7101 + xtal On-board crystal frequency (default 14745600)
7104 +Name: sc16is752-i2c
7105 +Info: Overlay for the NXP SC16IS752 dual UART with I2C Interface
7106 + Enables the chip on I2C1 at 0x48 (or the "addr" parameter value). To
7107 + select another address, please refer to table 10 in reference manual.
7108 +Load: dtoverlay=sc16is752-i2c,<param>=<val>
7109 +Params: int_pin GPIO used for IRQ (default 24)
7110 + addr Address (default 0x48)
7111 + xtal On-board crystal frequency (default 14745600)
7114 +Name: sc16is752-spi0
7115 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
7116 + Enables the chip on SPI0.
7117 +Load: dtoverlay=sc16is752-spi0,<param>=<val>
7118 +Params: int_pin GPIO used for IRQ (default 24)
7119 + xtal On-board crystal frequency (default 14745600)
7122 +Name: sc16is752-spi1
7123 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
7124 + Enables the chip on SPI1.
7125 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
7126 + A+, B+, Zero and PI2 B; as well as the Compute Module.
7128 +Load: dtoverlay=sc16is752-spi1,<param>=<val>
7129 +Params: int_pin GPIO used for IRQ (default 24)
7130 + xtal On-board crystal frequency (default 14745600)
7134 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock.
7135 + N.B. This overlay is designed for situations where the mmc driver is
7136 + the default, so it disables the other (mmc) interface - this will kill
7137 + WiFi on a Pi3. If this isn't what you want, either use the sdtweak
7138 + overlay or the new sd_* dtparams of the base DTBs.
7139 +Load: dtoverlay=sdhost,<param>=<val>
7140 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
7143 + force_pio Disable DMA support (default off)
7145 + pio_limit Number of blocks above which to use DMA
7148 + debug Enable debug output (default off)
7152 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
7153 + and enables SDIO via GPIOs 22-27. An example of use in 1-bit mode is
7154 + "dtoverlay=sdio,bus_width=1,gpios_22_25"
7155 +Load: dtoverlay=sdio,<param>=<val>
7156 +Params: sdio_overclock SDIO Clock (in MHz) to use when the MMC
7157 + framework requests 50MHz
7159 + poll_once Disable SDIO-device polling every second
7160 + (default on: polling once at boot-time)
7162 + bus_width Set the SDIO host bus width (default 4 bits)
7164 + gpios_22_25 Select GPIOs 22-25 for 1-bit mode. Must be used
7165 + with bus_width=1. This replaces the sdio-1bit
7166 + overlay, which is now deprecated.
7168 + gpios_34_37 Select GPIOs 34-37 for 1-bit mode. Must be used
7171 + gpios_34_39 Select GPIOs 34-39 for 4-bit mode. Must be used
7172 + with bus_width=4 (the default).
7176 +Info: This overlay is now deprecated. Use
7177 + "dtoverlay=sdio,bus_width=1,gpios_22_25" instead.
7182 +Info: Tunes the bcm2835-sdhost SD/MMC driver
7183 + N.B. This functionality is now available via the sd_* dtparams in the
7185 +Load: dtoverlay=sdtweak,<param>=<val>
7186 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
7189 + force_pio Disable DMA support (default off)
7191 + pio_limit Number of blocks above which to use DMA
7194 + debug Enable debug output (default off)
7196 + poll_once Looks for a card once after booting. Useful
7197 + for network booting scenarios to avoid the
7198 + overhead of continuous polling. N.B. Using
7199 + this option restricts the system to using a
7200 + single card per boot (or none at all).
7203 + enable Set to off to completely disable the interface
7208 +Info: Overlay for SH1106 OLED via SPI using fbtft staging driver.
7209 +Load: dtoverlay=sh1106-spi,<param>=<val>
7210 +Params: speed SPI bus speed (default 4000000)
7211 + rotate Display rotation (0, 90, 180 or 270; default 0)
7212 + fps Delay between frame updates (default 25)
7213 + debug Debug output level (0-7; default 0)
7214 + dc_pin GPIO pin for D/C (default 24)
7215 + reset_pin GPIO pin for RESET (default 25)
7216 + height Display height (32 or 64; default 64)
7220 +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
7221 +Load: dtoverlay=smi
7226 +Info: Enables the userspace interface for the SMI driver
7227 +Load: dtoverlay=smi-dev
7232 +Info: Enables access to NAND flash via the SMI interface
7233 +Load: dtoverlay=smi-nand
7237 +Name: spi-gpio35-39
7238 +Info: Move SPI function block to GPIO 35 to 39
7239 +Load: dtoverlay=spi-gpio35-39
7243 +Name: spi-gpio40-45
7244 +Info: Move SPI function block to GPIOs 40 to 45
7245 +Load: dtoverlay=spi-gpio40-45
7250 +Info: Adds support for a number of SPI Real Time Clock devices
7251 +Load: dtoverlay=spi-rtc,<param>=<val>
7252 +Params: pcf2123 Select the PCF2123 device
7256 +Info: Only use one CS pin for SPI0
7257 +Load: dtoverlay=spi0-1cs,<param>=<val>
7258 +Params: cs0_pin GPIO pin for CS0 (default 8)
7259 + no_miso Don't claim and use the MISO pin (9), freeing
7260 + it for other uses.
7264 +Info: Change the CS pins for SPI0
7265 +Load: dtoverlay=spi0-2cs,<param>=<val>
7266 +Params: cs0_pin GPIO pin for CS0 (default 8)
7267 + cs1_pin GPIO pin for CS1 (default 7)
7268 + no_miso Don't claim and use the MISO pin (9), freeing
7269 + it for other uses.
7273 +Info: This overlay has been renamed spi0-2cs, keeping spi0-cs as an
7274 + alias for backwards compatibility.
7279 +Info: This overlay has been deprecated and removed because it is no longer
7280 + necessary and has been seen to prevent spi0 from working.
7285 +Info: Enables spi1 with a single chip select (CS) line and associated spidev
7286 + dev node. The gpio pin number for the CS line and spidev device node
7287 + creation are configurable.
7288 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
7289 + A+, B+, Zero and PI2 B; as well as the Compute Module.
7290 +Load: dtoverlay=spi1-1cs,<param>=<val>
7291 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
7292 + cs0_spidev Set to 'disabled' to stop the creation of a
7293 + userspace device node /dev/spidev1.0 (default
7294 + is 'okay' or enabled).
7298 +Info: Enables spi1 with two chip select (CS) lines and associated spidev
7299 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7300 + creation are configurable.
7301 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
7302 + A+, B+, Zero and PI2 B; as well as the Compute Module.
7303 +Load: dtoverlay=spi1-2cs,<param>=<val>
7304 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
7305 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
7306 + cs0_spidev Set to 'disabled' to stop the creation of a
7307 + userspace device node /dev/spidev1.0 (default
7308 + is 'okay' or enabled).
7309 + cs1_spidev Set to 'disabled' to stop the creation of a
7310 + userspace device node /dev/spidev1.1 (default
7311 + is 'okay' or enabled).
7315 +Info: Enables spi1 with three chip select (CS) lines and associated spidev
7316 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7317 + creation are configurable.
7318 + N.B.: spi1 is only accessible on devices with a 40pin header, eg:
7319 + A+, B+, Zero and PI2 B; as well as the Compute Module.
7320 +Load: dtoverlay=spi1-3cs,<param>=<val>
7321 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
7322 + cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
7323 + cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
7324 + cs0_spidev Set to 'disabled' to stop the creation of a
7325 + userspace device node /dev/spidev1.0 (default
7326 + is 'okay' or enabled).
7327 + cs1_spidev Set to 'disabled' to stop the creation of a
7328 + userspace device node /dev/spidev1.1 (default
7329 + is 'okay' or enabled).
7330 + cs2_spidev Set to 'disabled' to stop the creation of a
7331 + userspace device node /dev/spidev1.2 (default
7332 + is 'okay' or enabled).
7336 +Info: Enables spi2 with a single chip select (CS) line and associated spidev
7337 + dev node. The gpio pin number for the CS line and spidev device node
7338 + creation are configurable.
7339 + N.B.: spi2 is only accessible with the Compute Module.
7340 +Load: dtoverlay=spi2-1cs,<param>=<val>
7341 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
7342 + cs0_spidev Set to 'disabled' to stop the creation of a
7343 + userspace device node /dev/spidev2.0 (default
7344 + is 'okay' or enabled).
7348 +Info: Enables spi2 with two chip select (CS) lines and associated spidev
7349 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7350 + creation are configurable.
7351 + N.B.: spi2 is only accessible with the Compute Module.
7352 +Load: dtoverlay=spi2-2cs,<param>=<val>
7353 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
7354 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
7355 + cs0_spidev Set to 'disabled' to stop the creation of a
7356 + userspace device node /dev/spidev2.0 (default
7357 + is 'okay' or enabled).
7358 + cs1_spidev Set to 'disabled' to stop the creation of a
7359 + userspace device node /dev/spidev2.1 (default
7360 + is 'okay' or enabled).
7364 +Info: Enables spi2 with three chip select (CS) lines and associated spidev
7365 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7366 + creation are configurable.
7367 + N.B.: spi2 is only accessible with the Compute Module.
7368 +Load: dtoverlay=spi2-3cs,<param>=<val>
7369 +Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
7370 + cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
7371 + cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2).
7372 + cs0_spidev Set to 'disabled' to stop the creation of a
7373 + userspace device node /dev/spidev2.0 (default
7374 + is 'okay' or enabled).
7375 + cs1_spidev Set to 'disabled' to stop the creation of a
7376 + userspace device node /dev/spidev2.1 (default
7377 + is 'okay' or enabled).
7378 + cs2_spidev Set to 'disabled' to stop the creation of a
7379 + userspace device node /dev/spidev2.2 (default
7380 + is 'okay' or enabled).
7384 +Info: Enables spi3 with a single chip select (CS) line and associated spidev
7385 + dev node. The gpio pin number for the CS line and spidev device node
7386 + creation are configurable. BCM2711 only.
7387 +Load: dtoverlay=spi3-1cs,<param>=<val>
7388 +Params: cs0_pin GPIO pin for CS0 (default 0 - BCM SPI3_CE0).
7389 + cs0_spidev Set to 'off' to prevent the creation of a
7390 + userspace device node /dev/spidev3.0 (default
7391 + is 'on' or enabled).
7395 +Info: Enables spi3 with two chip select (CS) lines and associated spidev
7396 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7397 + creation are configurable. BCM2711 only.
7398 +Load: dtoverlay=spi3-2cs,<param>=<val>
7399 +Params: cs0_pin GPIO pin for CS0 (default 0 - BCM SPI3_CE0).
7400 + cs1_pin GPIO pin for CS1 (default 24 - BCM SPI3_CE1).
7401 + cs0_spidev Set to 'off' to prevent the creation of a
7402 + userspace device node /dev/spidev3.0 (default
7403 + is 'on' or enabled).
7404 + cs1_spidev Set to 'off' to prevent the creation of a
7405 + userspace device node /dev/spidev3.1 (default
7406 + is 'on' or enabled).
7410 +Info: Enables spi4 with a single chip select (CS) line and associated spidev
7411 + dev node. The gpio pin number for the CS line and spidev device node
7412 + creation are configurable. BCM2711 only.
7413 +Load: dtoverlay=spi4-1cs,<param>=<val>
7414 +Params: cs0_pin GPIO pin for CS0 (default 4 - BCM SPI4_CE0).
7415 + cs0_spidev Set to 'off' to prevent the creation of a
7416 + userspace device node /dev/spidev4.0 (default
7417 + is 'on' or enabled).
7421 +Info: Enables spi4 with two chip select (CS) lines and associated spidev
7422 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7423 + creation are configurable. BCM2711 only.
7424 +Load: dtoverlay=spi4-2cs,<param>=<val>
7425 +Params: cs0_pin GPIO pin for CS0 (default 4 - BCM SPI4_CE0).
7426 + cs1_pin GPIO pin for CS1 (default 25 - BCM SPI4_CE1).
7427 + cs0_spidev Set to 'off' to prevent the creation of a
7428 + userspace device node /dev/spidev4.0 (default
7429 + is 'on' or enabled).
7430 + cs1_spidev Set to 'off' to prevent the creation of a
7431 + userspace device node /dev/spidev4.1 (default
7432 + is 'on' or enabled).
7436 +Info: Enables spi5 with a single chip select (CS) line and associated spidev
7437 + dev node. The gpio pin numbers for the CS lines and spidev device node
7438 + creation are configurable. BCM2711 only.
7439 +Load: dtoverlay=spi5-1cs,<param>=<val>
7440 +Params: cs0_pin GPIO pin for CS0 (default 12 - BCM SPI5_CE0).
7441 + cs0_spidev Set to 'off' to prevent the creation of a
7442 + userspace device node /dev/spidev5.0 (default
7443 + is 'on' or enabled).
7447 +Info: Enables spi5 with two chip select (CS) lines and associated spidev
7448 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7449 + creation are configurable. BCM2711 only.
7450 +Load: dtoverlay=spi5-2cs,<param>=<val>
7451 +Params: cs0_pin GPIO pin for CS0 (default 12 - BCM SPI5_CE0).
7452 + cs1_pin GPIO pin for CS1 (default 26 - BCM SPI5_CE1).
7453 + cs0_spidev Set to 'off' to prevent the creation of a
7454 + userspace device node /dev/spidev5.0 (default
7455 + is 'on' or enabled).
7456 + cs1_spidev Set to 'off' to prevent the creation of a
7457 + userspace device node /dev/spidev5.1 (default
7458 + is 'on' or enabled).
7462 +Info: Enables spi6 with a single chip select (CS) line and associated spidev
7463 + dev node. The gpio pin number for the CS line and spidev device node
7464 + creation are configurable. BCM2711 only.
7465 +Load: dtoverlay=spi6-1cs,<param>=<val>
7466 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI6_CE0).
7467 + cs0_spidev Set to 'off' to prevent the creation of a
7468 + userspace device node /dev/spidev6.0 (default
7469 + is 'on' or enabled).
7473 +Info: Enables spi6 with two chip select (CS) lines and associated spidev
7474 + dev nodes. The gpio pin numbers for the CS lines and spidev device node
7475 + creation are configurable. BCM2711 only.
7476 +Load: dtoverlay=spi6-2cs,<param>=<val>
7477 +Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI6_CE0).
7478 + cs1_pin GPIO pin for CS1 (default 27 - BCM SPI6_CE1).
7479 + cs0_spidev Set to 'off' to prevent the creation of a
7480 + userspace device node /dev/spidev6.0 (default
7481 + is 'on' or enabled).
7482 + cs1_spidev Set to 'off' to prevent the creation of a
7483 + userspace device node /dev/spidev6.1 (default
7484 + is 'on' or enabled).
7488 +Info: Overlay for activation of SSD1306 over I2C OLED display framebuffer.
7489 +Load: dtoverlay=ssd1306,<param>=<val>
7490 +Params: address Location in display memory of first character.
7492 + width Width of display. (default=128)
7493 + height Height of display. (default=64)
7494 + offset virtual channel a. (default=0)
7495 + normal Has no effect on displays tested. (default=not
7497 + sequential Set this if every other scan line is missing.
7499 + remapped Set this if display is garbled. (default=not
7501 + inverted Set this if display is inverted and mirrored.
7505 + Typical usage for 128x64 display: dtoverlay=ssd1306,inverted
7507 + Typical usage for 128x32 display: dtoverlay=ssd1306,inverted,sequential
7509 + i2c_baudrate=400000 will speed up the display.
7511 + i2c_baudrate=1000000 seems to work even though it's not officially
7512 + supported by the hardware, and is faster still.
7514 + For more information refer to the device datasheet at:
7515 + https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
7519 +Info: Overlay for SSD1306 OLED via SPI using fbtft staging driver.
7520 +Load: dtoverlay=ssd1306-spi,<param>=<val>
7521 +Params: speed SPI bus speed (default 10000000)
7522 + rotate Display rotation (0, 90, 180 or 270; default 0)
7523 + fps Delay between frame updates (default 25)
7524 + debug Debug output level (0-7; default 0)
7525 + dc_pin GPIO pin for D/C (default 24)
7526 + reset_pin GPIO pin for RESET (default 25)
7527 + height Display height (32 or 64; default 64)
7531 +Info: Overlay for SSD1351 OLED via SPI using fbtft staging driver.
7532 +Load: dtoverlay=ssd1351-spi,<param>=<val>
7533 +Params: speed SPI bus speed (default 4500000)
7534 + rotate Display rotation (0, 90, 180 or 270; default 0)
7535 + fps Delay between frame updates (default 25)
7536 + debug Debug output level (0-7; default 0)
7537 + dc_pin GPIO pin for D/C (default 24)
7538 + reset_pin GPIO pin for RESET (default 25)
7541 +Name: superaudioboard
7542 +Info: Configures the SuperAudioBoard sound card
7543 +Load: dtoverlay=superaudioboard,<param>=<val>
7544 +Params: gpiopin GPIO pin for codec reset
7548 +Info: Configures the Semtech SX150X I2C GPIO expanders.
7549 +Load: dtoverlay=sx150x,<param>=<val>
7550 +Params: sx150<x>-<n>-<m> Enables SX150X device on I2C#<n> with slave
7551 + address <m>. <x> may be 1-9. <n> may be 0 or 1.
7552 + Permissible values of <m> (which is denoted in
7553 + hex) depend on the device variant. For SX1501,
7554 + SX1502, SX1504 and SX1505, <m> may be 20 or 21.
7555 + For SX1503 and SX1506, <m> may be 20. For
7556 + SX1507 and SX1509, <m> may be 3E, 3F, 70 or 71.
7557 + For SX1508, <m> may be 20, 21, 22 or 23.
7559 + sx150<x>-<n>-<m>-int-gpio
7560 + Integer, enables interrupts on SX150X device on
7561 + I2C#<n> with slave address <m>, specifies
7562 + the GPIO pin to which NINT output of SX150X is
7567 +Info: Toshiba TC358743 HDMI to CSI-2 bridge chip.
7568 + Uses Unicam 1, which is the standard camera connector on most Pi
7570 +Load: dtoverlay=tc358743,<param>=<val>
7571 +Params: 4lane Use 4 lanes (only applicable to Compute Modules
7574 + link-frequency Set the link frequency. Only values of 297000000
7575 + (574Mbit/s) and 486000000 (972Mbit/s - default)
7576 + are supported by the driver.
7579 +Name: tc358743-audio
7580 +Info: Used in combination with the tc358743-fast overlay to route the audio
7581 + from the TC358743 over I2S to the Pi.
7582 + Wiring is LRCK/WFS to GPIO 19, BCK/SCK to GPIO 18, and DATA/SD to GPIO
7584 +Load: dtoverlay=tc358743-audio,<param>=<val>
7585 +Params: card-name Override the default, "tc358743", card name.
7589 +Info: 3.5" Color TFT Display by www.tinylcd.com
7590 + Options: Touch, RTC, keypad
7591 +Load: dtoverlay=tinylcd35,<param>=<val>
7592 +Params: speed Display SPI bus speed
7594 + rotate Display rotation {0,90,180,270}
7596 + fps Delay between frame updates
7598 + debug Debug output level {0-7}
7600 + touch Enable touch panel
7602 + touchgpio Touch controller IRQ GPIO
7604 + xohms Touchpanel: Resistance of X-plate in ohms
7606 + rtc-pcf PCF8563 Real Time Clock
7608 + rtc-ds DS1307 Real Time Clock
7610 + keypad Enable keypad
7613 + Display with touchpanel, PCF8563 RTC and keypad:
7614 + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
7615 + Old touch display:
7616 + dtoverlay=tinylcd35,touch,touchgpio=3
7620 +Info: Enables support for Infineon SLB9670 Trusted Platform Module add-on
7621 + boards, which can be used as a secure key storage and hwrng,
7622 + available as "Iridium SLB9670" by Infineon and "LetsTrust TPM" by pi3g.
7623 +Load: dtoverlay=tpm-slb9670
7628 +Info: Change the pin usage of uart0
7629 +Load: dtoverlay=uart0,<param>=<val>
7630 +Params: txd0_pin GPIO pin for TXD0 (14, 32 or 36 - default 14)
7632 + rxd0_pin GPIO pin for RXD0 (15, 33 or 37 - default 15)
7634 + pin_func Alternative pin function - 4(Alt0) for 14&15,
7635 + 7(Alt3) for 32&33, 6(Alt2) for 36&37
7639 +Info: Change the pin usage of uart1
7640 +Load: dtoverlay=uart1,<param>=<val>
7641 +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
7643 + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
7647 +Info: Enable uart 2 on GPIOs 0-3. BCM2711 only.
7648 +Load: dtoverlay=uart2,<param>
7649 +Params: ctsrts Enable CTS/RTS on GPIOs 2-3 (default off)
7653 +Info: Enable uart 3 on GPIOs 4-7. BCM2711 only.
7654 +Load: dtoverlay=uart3,<param>
7655 +Params: ctsrts Enable CTS/RTS on GPIOs 6-7 (default off)
7659 +Info: Enable uart 4 on GPIOs 8-11. BCM2711 only.
7660 +Load: dtoverlay=uart4,<param>
7661 +Params: ctsrts Enable CTS/RTS on GPIOs 10-11 (default off)
7665 +Info: Enable uart 5 on GPIOs 12-15. BCM2711 only.
7666 +Load: dtoverlay=uart5,<param>
7667 +Params: ctsrts Enable CTS/RTS on GPIOs 14-15 (default off)
7671 +Info: Configures the NW Digital Radio UDRC Hat
7672 +Load: dtoverlay=udrc,<param>=<val>
7673 +Params: alsaname Name of the ALSA audio device (default "udrc")
7677 +Info: Allow usage of downstream .dtb with upstream kernel. Comprises the
7678 + vc4-kms-v3d and dwc2 overlays.
7679 +Load: dtoverlay=upstream
7683 +Name: upstream-aux-interrupt
7684 +Info: This overlay has been deprecated and removed because it is no longer
7690 +Info: Allow usage of downstream .dtb with upstream kernel on Pi 4. Comprises
7691 + the vc4-kms-v3d-pi4 and dwc2 overlays.
7692 +Load: dtoverlay=upstream-pi4
7697 +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
7699 +Load: dtoverlay=vc4-fkms-v3d,<param>
7700 +Params: cma-512 CMA is 512MB (needs 1GB)
7701 + cma-448 CMA is 448MB (needs 1GB)
7702 + cma-384 CMA is 384MB (needs 1GB)
7703 + cma-320 CMA is 320MB (needs 1GB)
7704 + cma-256 CMA is 256MB (needs 1GB)
7705 + cma-192 CMA is 192MB (needs 1GB)
7706 + cma-128 CMA is 128MB
7707 + cma-96 CMA is 96MB
7708 + cma-64 CMA is 64MB
7709 + cma-size CMA size in bytes, 4MB aligned
7710 + cma-default Use upstream's default value
7713 +Name: vc4-kms-kippah-7inch
7714 +Info: Enable the Adafruit DPI Kippah with the 7" Ontat panel attached.
7715 + Requires vc4-kms-v3d to be loaded.
7716 +Load: dtoverlay=vc4-kms-kippah-7inch
7721 +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver.
7722 +Load: dtoverlay=vc4-kms-v3d,<param>
7723 +Params: cma-512 CMA is 512MB (needs 1GB)
7724 + cma-448 CMA is 448MB (needs 1GB)
7725 + cma-384 CMA is 384MB (needs 1GB)
7726 + cma-320 CMA is 320MB (needs 1GB)
7727 + cma-256 CMA is 256MB (needs 1GB)
7728 + cma-192 CMA is 192MB (needs 1GB)
7729 + cma-128 CMA is 128MB
7730 + cma-96 CMA is 96MB
7731 + cma-64 CMA is 64MB
7732 + cma-size CMA size in bytes, 4MB aligned
7733 + cma-default Use upstream's default value
7734 + audio Enable or disable audio over HDMI (default "on")
7735 + noaudio Disable all HDMI audio (default "off")
7738 +Name: vc4-kms-v3d-pi4
7739 +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver for Pi4.
7740 +Load: dtoverlay=vc4-kms-v3d-pi4,<param>
7741 +Params: cma-512 CMA is 512MB
7742 + cma-448 CMA is 448MB
7743 + cma-384 CMA is 384MB
7744 + cma-320 CMA is 320MB
7745 + cma-256 CMA is 256MB
7746 + cma-192 CMA is 192MB
7747 + cma-128 CMA is 128MB
7748 + cma-96 CMA is 96MB
7749 + cma-64 CMA is 64MB
7750 + cma-size CMA size in bytes, 4MB aligned
7751 + cma-default Use upstream's default value
7752 + audio Enable or disable audio over HDMI0 (default
7754 + audio1 Enable or disable audio over HDMI1 (default
7756 + noaudio Disable all HDMI audio (default "off")
7757 + composite Enable the composite output (disables all other
7762 +Info: Overlay for the Fen Logic VGA666 board
7763 + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds
7764 + after the kernel has started.
7765 +Load: dtoverlay=vga666
7770 +Info: Configures the w1-gpio Onewire interface module.
7771 + Use this overlay if you *don't* need a GPIO to drive an external pullup.
7772 +Load: dtoverlay=w1-gpio,<param>=<val>
7773 +Params: gpiopin GPIO for I/O (default "4")
7774 + pullup Now enabled by default (ignored)
7777 +Name: w1-gpio-pullup
7778 +Info: Configures the w1-gpio Onewire interface module.
7779 + Use this overlay if you *do* need a GPIO to drive an external pullup.
7780 +Load: dtoverlay=w1-gpio-pullup,<param>=<val>
7781 +Params: gpiopin GPIO for I/O (default "4")
7782 + extpullup GPIO for external pullup (default "5")
7783 + pullup Now enabled by default (ignored)
7787 +Info: Overlay for the Wiznet W5500 Ethernet Controller on SPI0
7788 +Load: dtoverlay=w5500,<param>=<val>
7789 +Params: int_pin GPIO used for INT (default 25)
7791 + speed SPI bus speed (default 30000000)
7793 + cs SPI bus Chip Select (default 0)
7797 +Info: Configures the wittypi RTC module.
7798 +Load: dtoverlay=wittypi,<param>=<val>
7799 +Params: led_gpio GPIO for LED (default "17")
7800 + led_trigger Choose which activity the LED tracks (default
7807 +If you are experiencing problems that you think are DT-related, enable DT
7808 +diagnostic output by adding this to /boot/config.txt:
7812 +and rebooting. Then run:
7814 + sudo vcdbg log msg
7816 +and look for relevant messages.
7821 +This is only meant to be a quick introduction to the subject of Device Tree on
7822 +Raspberry Pi. There is a more complete explanation here:
7824 +http://www.raspberrypi.org/documentation/configuration/device-tree.md
7825 diff --git a/arch/arm/boot/dts/overlays/act-led-overlay.dts b/arch/arm/boot/dts/overlays/act-led-overlay.dts
7826 new file mode 100644
7827 index 000000000000..2f4bbb407f89
7829 +++ b/arch/arm/boot/dts/overlays/act-led-overlay.dts
7834 +/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
7835 + from the VPU. There is a special driver for this with a separate DT node,
7836 + which has the unfortunate consequence of breaking the act_led_gpio and
7837 + act_led_activelow dtparams.
7839 + This overlay changes the GPIO controller back to the standard one and
7840 + restores the dtparams.
7844 + compatible = "brcm,bcm2835";
7847 + target = <&act_led>;
7848 + frag0: __overlay__ {
7849 + gpios = <&gpio 0 0>;
7854 + gpio = <&frag0>,"gpios:4";
7855 + activelow = <&frag0>,"gpios:8";
7858 diff --git a/arch/arm/boot/dts/overlays/adafruit18-overlay.dts b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
7859 new file mode 100644
7860 index 000000000000..e1ce94a8cd3e
7862 +++ b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
7865 + * Device Tree overlay for Adafruit 1.8" TFT LCD with ST7735R chip 160x128
7872 + compatible = "brcm,bcm2835";
7875 + target = <&spidev0>;
7877 + status = "disabled";
7884 + /* needed to avoid dtc warning */
7885 + #address-cells = <1>;
7886 + #size-cells = <0>;
7889 + af18: adafruit18@0 {
7890 + compatible = "fbtft,adafruit18";
7892 + pinctrl-names = "default";
7893 + spi-max-frequency = <40000000>;
7899 + reset-gpios = <&gpio 25 1>;
7900 + dc-gpios = <&gpio 24 0>;
7901 + led-gpios = <&gpio 18 0>;
7908 + green = <&af18>, "compatible=fbtft,adafruit18_green";
7909 + speed = <&af18>,"spi-max-frequency:0";
7910 + rotate = <&af18>,"rotate:0";
7911 + fps = <&af18>,"fps:0";
7912 + bgr = <&af18>,"bgr?";
7913 + debug = <&af18>,"debug:0";
7914 + dc_pin = <&af18>,"dc-gpios:4";
7915 + reset_pin = <&af18>,"reset-gpios:4";
7916 + led_pin = <&af18>,"led-gpios:4";
7919 diff --git a/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
7920 new file mode 100644
7921 index 000000000000..298488e19156
7923 +++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
7925 +// Definitions for ADAU1977 ADC
7930 + compatible = "brcm,bcm2835";
7936 + #address-cells = <1>;
7937 + #size-cells = <0>;
7940 + adau1977: codec@11 {
7941 + compatible = "adi,adau1977";
7943 + reset-gpios = <&gpio 5 0>;
7944 + AVDD-supply = <&vdd_3v3_reg>;
7957 + target = <&sound>;
7959 + compatible = "adi,adau1977-adc";
7960 + i2s-controller = <&i2s>;
7965 diff --git a/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
7966 new file mode 100644
7967 index 000000000000..5fed769d2526
7969 +++ b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
7975 + compatible = "brcm,bcm2835";
7985 + target-path = "/";
7987 + adau7002_codec: adau7002-codec {
7988 + #sound-dai-cells = <0>;
7989 + compatible = "adi,adau7002";
7990 +/* IOVDD-supply = <&supply>;*/
7997 + target = <&sound>;
7998 + sound_overlay: __overlay__ {
7999 + compatible = "simple-audio-card";
8000 + simple-audio-card,format = "i2s";
8001 + simple-audio-card,name = "adau7002";
8002 + simple-audio-card,bitclock-slave = <&dailink0_slave>;
8003 + simple-audio-card,frame-slave = <&dailink0_slave>;
8004 + simple-audio-card,widgets =
8005 + "Microphone", "Microphone Jack";
8006 + simple-audio-card,routing =
8007 + "PDM_DAT", "Microphone Jack";
8009 + simple-audio-card,cpu {
8010 + sound-dai = <&i2s>;
8012 + dailink0_slave: simple-audio-card,codec {
8013 + sound-dai = <&adau7002_codec>;
8020 + card-name = <&sound_overlay>,"simple-audio-card,name";
8023 diff --git a/arch/arm/boot/dts/overlays/ads1015-overlay.dts b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
8024 new file mode 100644
8025 index 000000000000..deeee1228395
8027 +++ b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
8030 + * 2016 - Erik Sejr
8036 + compatible = "brcm,bcm2835";
8037 + /* ----------- ADS1015 ------------ */
8039 + target = <&i2c_arm>;
8041 + #address-cells = <1>;
8042 + #size-cells = <0>;
8044 + ads1015: ads1015 {
8045 + compatible = "ti,ads1015";
8047 + #address-cells = <1>;
8048 + #size-cells = <0>;
8055 + target = <&ads1015>;
8057 + #address-cells = <1>;
8058 + #size-cells = <0>;
8059 + channel_a: channel_a {
8062 + ti,datarate = <4>;
8068 + target = <&ads1015>;
8070 + #address-cells = <1>;
8071 + #size-cells = <0>;
8072 + channel_b: channel_b {
8075 + ti,datarate = <4>;
8081 + target = <&ads1015>;
8083 + #address-cells = <1>;
8084 + #size-cells = <0>;
8085 + channel_c: channel_c {
8088 + ti,datarate = <4>;
8094 + target = <&ads1015>;
8096 + #address-cells = <1>;
8097 + #size-cells = <0>;
8098 + channel_d: channel_d {
8101 + ti,datarate = <4>;
8107 + addr = <&ads1015>,"reg:0";
8108 + cha_enable = <0>,"=1";
8109 + cha_cfg = <&channel_a>,"reg:0";
8110 + cha_gain = <&channel_a>,"ti,gain:0";
8111 + cha_datarate = <&channel_a>,"ti,datarate:0";
8112 + chb_enable = <0>,"=2";
8113 + chb_cfg = <&channel_b>,"reg:0";
8114 + chb_gain = <&channel_b>,"ti,gain:0";
8115 + chb_datarate = <&channel_b>,"ti,datarate:0";
8116 + chc_enable = <0>,"=3";
8117 + chc_cfg = <&channel_c>,"reg:0";
8118 + chc_gain = <&channel_c>,"ti,gain:0";
8119 + chc_datarate = <&channel_c>,"ti,datarate:0";
8120 + chd_enable = <0>,"=4";
8121 + chd_cfg = <&channel_d>,"reg:0";
8122 + chd_gain = <&channel_d>,"ti,gain:0";
8123 + chd_datarate = <&channel_d>,"ti,datarate:0";
8127 diff --git a/arch/arm/boot/dts/overlays/ads1115-overlay.dts b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
8128 new file mode 100644
8129 index 000000000000..4fc571c2db33
8131 +++ b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
8134 + * TI ADS1115 multi-channel ADC overlay
8141 + compatible = "brcm,bcm2835";
8144 + target = <&i2c_arm>;
8146 + #address-cells = <1>;
8147 + #size-cells = <0>;
8150 + ads1115: ads1115 {
8151 + compatible = "ti,ads1115";
8153 + #address-cells = <1>;
8154 + #size-cells = <0>;
8161 + target = <&ads1115>;
8163 + #address-cells = <1>;
8164 + #size-cells = <0>;
8166 + channel_a: channel_a {
8169 + ti,datarate = <7>;
8175 + target = <&ads1115>;
8177 + #address-cells = <1>;
8178 + #size-cells = <0>;
8180 + channel_b: channel_b {
8183 + ti,datarate = <7>;
8189 + target = <&ads1115>;
8191 + #address-cells = <1>;
8192 + #size-cells = <0>;
8194 + channel_c: channel_c {
8197 + ti,datarate = <7>;
8203 + target = <&ads1115>;
8205 + #address-cells = <1>;
8206 + #size-cells = <0>;
8208 + channel_d: channel_d {
8211 + ti,datarate = <7>;
8217 + addr = <&ads1115>,"reg:0";
8218 + cha_enable = <0>,"=1";
8219 + cha_cfg = <&channel_a>,"reg:0";
8220 + cha_gain = <&channel_a>,"ti,gain:0";
8221 + cha_datarate = <&channel_a>,"ti,datarate:0";
8222 + chb_enable = <0>,"=2";
8223 + chb_cfg = <&channel_b>,"reg:0";
8224 + chb_gain = <&channel_b>,"ti,gain:0";
8225 + chb_datarate = <&channel_b>,"ti,datarate:0";
8226 + chc_enable = <0>,"=3";
8227 + chc_cfg = <&channel_c>,"reg:0";
8228 + chc_gain = <&channel_c>,"ti,gain:0";
8229 + chc_datarate = <&channel_c>,"ti,datarate:0";
8230 + chd_enable = <0>,"=4";
8231 + chd_cfg = <&channel_d>,"reg:0";
8232 + chd_gain = <&channel_d>,"ti,gain:0";
8233 + chd_datarate = <&channel_d>,"ti,datarate:0";
8236 diff --git a/arch/arm/boot/dts/overlays/ads7846-overlay.dts b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
8237 new file mode 100644
8238 index 000000000000..1c5c9b6bb6ff
8240 +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
8243 + * Generic Device Tree overlay for the ADS7846 touch controller
8251 + compatible = "brcm,bcm2835";
8261 + target = <&spidev0>;
8263 + status = "disabled";
8268 + target = <&spidev1>;
8270 + status = "disabled";
8277 + ads7846_pins: ads7846_pins {
8278 + brcm,pins = <255>; /* illegal default value */
8279 + brcm,function = <0>; /* in */
8280 + brcm,pull = <0>; /* none */
8288 + /* needed to avoid dtc warning */
8289 + #address-cells = <1>;
8290 + #size-cells = <0>;
8292 + ads7846: ads7846@1 {
8293 + compatible = "ti,ads7846";
8295 + pinctrl-names = "default";
8296 + pinctrl-0 = <&ads7846_pins>;
8298 + spi-max-frequency = <2000000>;
8299 + interrupts = <255 2>; /* high-to-low edge triggered */
8300 + interrupt-parent = <&gpio>;
8301 + pendown-gpio = <&gpio 255 0>;
8303 + /* driver defaults */
8304 + ti,x-min = /bits/ 16 <0>;
8305 + ti,y-min = /bits/ 16 <0>;
8306 + ti,x-max = /bits/ 16 <0x0FFF>;
8307 + ti,y-max = /bits/ 16 <0x0FFF>;
8308 + ti,pressure-min = /bits/ 16 <0>;
8309 + ti,pressure-max = /bits/ 16 <0xFFFF>;
8310 + ti,x-plate-ohms = /bits/ 16 <400>;
8315 + cs = <&ads7846>,"reg:0";
8316 + speed = <&ads7846>,"spi-max-frequency:0";
8317 + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
8318 + <&ads7846>,"interrupts:0",
8319 + <&ads7846>,"pendown-gpio:4";
8320 + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
8321 + swapxy = <&ads7846>,"ti,swap-xy?";
8322 + xmin = <&ads7846>,"ti,x-min;0";
8323 + ymin = <&ads7846>,"ti,y-min;0";
8324 + xmax = <&ads7846>,"ti,x-max;0";
8325 + ymax = <&ads7846>,"ti,y-max;0";
8326 + pmin = <&ads7846>,"ti,pressure-min;0";
8327 + pmax = <&ads7846>,"ti,pressure-max;0";
8328 + xohms = <&ads7846>,"ti,x-plate-ohms;0";
8331 diff --git a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
8332 new file mode 100644
8333 index 000000000000..5d85dfd0595c
8335 +++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
8337 +// SPDX-License-Identifier: GPL-2.0-only
8338 +// Definitions for Analog Devices ADV7282-M video to CSI2 bridge on VC I2C bus
8343 + compatible = "brcm,bcm2835";
8346 + target = <&i2c_csi_dsi>;
8348 + #address-cells = <1>;
8349 + #size-cells = <0>;
8352 + adv728x: adv728x@21 {
8353 + compatible = "adi,adv7282-m";
8356 + clock-frequency = <24000000>;
8358 + adv728x_0: endpoint {
8359 + remote-endpoint = <&csi1_ep>;
8360 + clock-lanes = <0>;
8362 + link-frequencies =
8363 + /bits/ 64 <297000000>;
8365 + mclk-frequency = <12000000>;
8377 + csi1_ep: endpoint {
8378 + remote-endpoint = <&adv728x_0>;
8385 + target = <&i2c0if>;
8392 + target = <&i2c0mux>;
8399 + addr = <&adv728x>,"reg:0";
8402 diff --git a/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
8403 new file mode 100644
8404 index 000000000000..ea392e886984
8406 +++ b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
8408 +// SPDX-License-Identifier: GPL-2.0-only
8409 +// Definitions for Analog Devices ADV728[0|1|2]-M video to CSI2 bridges on VC
8412 +#include "adv7282m-overlay.dts"
8415 + compatible = "brcm,bcm2835";
8417 + // Fragment numbers deliberately high to avoid conflicts with the
8418 + // included adv7282m overlay file.
8421 + target = <&adv728x>;
8423 + compatible = "adi,adv7280-m";
8427 + target = <&adv728x>;
8429 + compatible = "adi,adv7281-m";
8433 + target = <&adv728x>;
8435 + compatible = "adi,adv7281-ma";
8440 + adv7280m = <0>, "+101";
8441 + adv7281m = <0>, "+102";
8442 + adv7281ma = <0>, "+103";
8445 diff --git a/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
8446 new file mode 100644
8447 index 000000000000..82f9b3734fb1
8449 +++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
8451 +// Definitions for Digital Dreamtime Akkordion using IQaudIO DAC+ or DACZero
8456 + compatible = "brcm,bcm2835";
8468 + #address-cells = <1>;
8469 + #size-cells = <0>;
8473 + #sound-dai-cells = <0>;
8474 + compatible = "ti,pcm5122";
8476 + AVDD-supply = <&vdd_3v3_reg>;
8477 + DVDD-supply = <&vdd_3v3_reg>;
8478 + CPVDD-supply = <&vdd_3v3_reg>;
8485 + target = <&sound>;
8486 + frag2: __overlay__ {
8487 + compatible = "iqaudio,iqaudio-dac";
8488 + card_name = "Akkordion";
8489 + dai_name = "IQaudIO DAC";
8490 + dai_stream_name = "IQaudIO DAC HiFi";
8491 + i2s-controller = <&i2s>;
8497 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
8500 diff --git a/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
8501 new file mode 100644
8502 index 000000000000..873cb2fab52b
8504 +++ b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
8507 + * Definitions for Allo Boss DAC board
8514 + compatible = "brcm,bcm2835";
8517 + target-path = "/";
8519 + boss_osc: boss_osc {
8520 + compatible = "allo,dac-clk";
8521 + #clock-cells = <0>;
8536 + #address-cells = <1>;
8537 + #size-cells = <0>;
8541 + #sound-dai-cells = <0>;
8542 + compatible = "ti,pcm5122";
8543 + clocks = <&boss_osc>;
8551 + target = <&sound>;
8552 + boss_dac: __overlay__ {
8553 + compatible = "allo,boss-dac";
8554 + i2s-controller = <&i2s>;
8555 + mute-gpios = <&gpio 6 1>;
8561 + 24db_digital_gain = <&boss_dac>,"allo,24db_digital_gain?";
8562 + slave = <&boss_dac>,"allo,slave?";
8565 diff --git a/arch/arm/boot/dts/overlays/allo-digione-overlay.dts b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
8566 new file mode 100644
8567 index 000000000000..ea018ace34d4
8569 +++ b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
8571 +// Definitions for Allo DigiOne
8576 + compatible = "brcm,bcm2835";
8588 + #address-cells = <1>;
8589 + #size-cells = <0>;
8593 + #sound-dai-cells = <0>;
8594 + compatible = "wlf,wm8804";
8596 + PVDD-supply = <&vdd_3v3_reg>;
8597 + DVDD-supply = <&vdd_3v3_reg>;
8599 + wlf,reset-gpio = <&gpio 17 0>;
8605 + target = <&sound>;
8607 + compatible = "allo,allo-digione";
8608 + i2s-controller = <&i2s>;
8610 + clock44-gpio = <&gpio 5 0>;
8611 + clock48-gpio = <&gpio 6 0>;
8615 diff --git a/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
8616 new file mode 100644
8617 index 000000000000..b25fd681f09f
8619 +++ b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
8622 + * Definitions for Allo Katana DAC boards
8629 + compatible = "brcm,bcm2835";
8634 + #sound-dai-cells = <0>;
8637 + cpu_endpoint: endpoint {
8638 + remote-endpoint = <&codec_endpoint>;
8639 + bitclock-master = <&codec_endpoint>;
8640 + frame-master = <&codec_endpoint>;
8641 + dai-format = "i2s";
8650 + #address-cells = <1>;
8651 + #size-cells = <0>;
8654 + allo-katana-codec@30 {
8655 + #sound-dai-cells = <0>;
8656 + compatible = "allo,allo-katana-codec";
8659 + codec_endpoint: endpoint {
8660 + remote-endpoint = <&cpu_endpoint>;
8668 + target = <&sound>;
8669 + katana_dac: __overlay__ {
8670 + compatible = "audio-graph-card";
8671 + label = "Allo Katana";
8672 + dais = <&cpu_port>;
8678 diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
8679 new file mode 100644
8680 index 000000000000..bfc66da6295a
8682 +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
8685 + * Definitions for Allo Piano DAC (2.0/2.1) boards
8687 + * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo
8688 + * (left/right) and the other provides a subwoofer output, using DSP on the
8689 + * chip for digital high/low pass crossover.
8690 + * The initial support for this hardware, that doesn't require any codec driver
8691 + * modifications, uses only one DAC chip for stereo (left/right) output, the
8692 + * chip with 0x4c slave address. The other chip at 0x4d is currently ignored!
8699 + compatible = "brcm,bcm2835";
8711 + #address-cells = <1>;
8712 + #size-cells = <0>;
8716 + #sound-dai-cells = <0>;
8717 + compatible = "ti,pcm5142";
8725 + target = <&sound>;
8726 + piano_dac: __overlay__ {
8727 + compatible = "allo,piano-dac";
8728 + i2s-controller = <&i2s>;
8734 + 24db_digital_gain =
8735 + <&piano_dac>,"allo,24db_digital_gain?";
8738 diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
8739 new file mode 100644
8740 index 000000000000..374c553db062
8742 +++ b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
8744 +// Definitions for Piano DAC
8749 + compatible = "brcm,bcm2835";
8761 + #address-cells = <1>;
8762 + #size-cells = <0>;
8765 + allo_pcm5122_4c: pcm5122@4c {
8766 + #sound-dai-cells = <0>;
8767 + compatible = "ti,pcm5122";
8771 + allo_pcm5122_4d: pcm5122@4d {
8772 + #sound-dai-cells = <0>;
8773 + compatible = "ti,pcm5122";
8781 + target = <&sound>;
8782 + piano_dac: __overlay__ {
8783 + compatible = "allo,piano-dac-plus";
8784 + audio-codec = <&allo_pcm5122_4c &allo_pcm5122_4d>;
8785 + i2s-controller = <&i2s>;
8786 + mute1-gpios = <&gpio 6 1>;
8787 + mute2-gpios = <&gpio 25 1>;
8793 + 24db_digital_gain =
8794 + <&piano_dac>,"allo,24db_digital_gain?";
8796 + <&piano_dac>,"allo,glb_mclk?";
8799 diff --git a/arch/arm/boot/dts/overlays/anyspi-overlay.dts b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
8800 new file mode 100755
8801 index 000000000000..87523dcca318
8803 +++ b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
8806 + * Universal device tree overlay for SPI devices
8813 + compatible = "brcm,bcm2835";
8816 + target = <&spidev0>;
8818 + status = "disabled";
8823 + target = <&spidev1>;
8825 + status = "disabled";
8830 + target-path = "spi1/spidev@0";
8832 + status = "disabled";
8837 + target-path = "spi1/spidev@1";
8839 + status = "disabled";
8844 + target-path = "spi1/spidev@2";
8846 + status = "disabled";
8851 + target-path = "spi2/spidev@0";
8853 + status = "disabled";
8858 + target-path = "spi2/spidev@1";
8860 + status = "disabled";
8865 + target-path = "spi2/spidev@2";
8867 + status = "disabled";
8875 + #address-cells = <1>;
8876 + #size-cells = <0>;
8878 + anyspi_00: anyspi@0 {
8880 + spi-max-frequency = <500000>;
8889 + #address-cells = <1>;
8890 + #size-cells = <0>;
8892 + anyspi_01: anyspi@1 {
8894 + spi-max-frequency = <500000>;
8903 + #address-cells = <1>;
8904 + #size-cells = <0>;
8906 + anyspi_10: anyspi@0 {
8908 + spi-max-frequency = <500000>;
8917 + #address-cells = <1>;
8918 + #size-cells = <0>;
8920 + anyspi_11: anyspi@1 {
8922 + spi-max-frequency = <500000>;
8931 + #address-cells = <1>;
8932 + #size-cells = <0>;
8934 + anyspi_12: anyspi@2 {
8936 + spi-max-frequency = <500000>;
8945 + #address-cells = <1>;
8946 + #size-cells = <0>;
8948 + anyspi_20: anyspi@0 {
8950 + spi-max-frequency = <500000>;
8959 + #address-cells = <1>;
8960 + #size-cells = <0>;
8962 + anyspi_21: anyspi@1 {
8964 + spi-max-frequency = <500000>;
8973 + #address-cells = <1>;
8974 + #size-cells = <0>;
8976 + anyspi_22: anyspi@2 {
8978 + spi-max-frequency = <500000>;
8984 + spi0-0 = <0>, "+0+8";
8985 + spi0-1 = <0>, "+1+9";
8986 + spi1-0 = <0>, "+2+10";
8987 + spi1-1 = <0>, "+3+11";
8988 + spi1-2 = <0>, "+4+12";
8989 + spi2-0 = <0>, "+5+13";
8990 + spi2-1 = <0>, "+6+14";
8991 + spi2-2 = <0>, "+7+15";
8992 + dev = <&anyspi_00>,"compatible",
8993 + <&anyspi_01>,"compatible",
8994 + <&anyspi_10>,"compatible",
8995 + <&anyspi_11>,"compatible",
8996 + <&anyspi_12>,"compatible",
8997 + <&anyspi_20>,"compatible",
8998 + <&anyspi_21>,"compatible",
8999 + <&anyspi_22>,"compatible";
9000 + speed = <&anyspi_00>, "spi-max-frequency:0",
9001 + <&anyspi_01>, "spi-max-frequency:0",
9002 + <&anyspi_10>, "spi-max-frequency:0",
9003 + <&anyspi_11>, "spi-max-frequency:0",
9004 + <&anyspi_12>, "spi-max-frequency:0",
9005 + <&anyspi_20>, "spi-max-frequency:0",
9006 + <&anyspi_21>, "spi-max-frequency:0",
9007 + <&anyspi_22>, "spi-max-frequency:0";
9010 diff --git a/arch/arm/boot/dts/overlays/apds9960-overlay.dts b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
9011 new file mode 100644
9012 index 000000000000..c216932278ab
9014 +++ b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
9016 +// Definitions for APDS-9960 ambient light and gesture sensor
9022 + compatible = "brcm,bcm2835";
9034 + apds9960_pins: apds9960_pins@39 {
9036 + brcm,function = <0>;
9044 + #address-cells = <1>;
9045 + #size-cells = <0>;
9047 + apds9960: apds@39 {
9048 + compatible = "avago,apds9960";
9058 + apds9960_irq: apds@39 {
9059 + #interrupt-cells=<2>;
9060 + interrupt-parent = <&gpio>;
9061 + interrupts = <4 1>;
9067 + gpiopin = <&apds9960_pins>,"brcm,pins:0",
9068 + <&apds9960_irq>,"interrupts:0";
9069 + noints = <0>,"!1!3";
9073 diff --git a/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
9074 new file mode 100644
9075 index 000000000000..4769296ec9d6
9077 +++ b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
9083 + compatible = "brcm,bcm2835";
9086 + target = <&sound>;
9088 + compatible = "simple-audio-card";
9089 + simple-audio-card,name = "ApplePi-DAC";
9093 + playback_link: simple-audio-card,dai-link@1 {
9097 + sound-dai = <&i2s>;
9098 + dai-tdm-slot-num = <2>;
9099 + dai-tdm-slot-width = <32>;
9102 + p_codec_dai: codec {
9103 + sound-dai = <&codec_out>;
9110 + target-path = "/";
9112 + codec_out: pcm1794a-codec {
9113 + #sound-dai-cells = <0>;
9114 + compatible = "ti,pcm1794a";
9123 + #sound-dai-cells = <0>;
9130 + Written by: Leonid Ayzenshtat
9131 + Company: Orchard Audio (www.orchardaudio.com)
9134 + dtc -@ -H epapr -O dtb -o ApplePi-DAC.dtbo -W no-unit_address_vs_reg ApplePi-DAC.dts
9136 diff --git a/arch/arm/boot/dts/overlays/at86rf233-overlay.dts b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
9137 new file mode 100644
9138 index 000000000000..5a3f4571ee78
9140 +++ b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
9145 +/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */
9148 + compatible = "brcm,bcm2835";
9153 + #address-cells = <1>;
9154 + #size-cells = <0>;
9158 + lowpan0: at86rf233@0 {
9159 + compatible = "atmel,at86rf233";
9161 + interrupt-parent = <&gpio>;
9162 + interrupts = <23 4>; /* active high */
9163 + reset-gpio = <&gpio 24 1>;
9164 + sleep-gpio = <&gpio 25 1>;
9165 + spi-max-frequency = <3000000>;
9166 + xtal-trim = /bits/ 8 <0xf>;
9172 + target = <&spidev0>;
9174 + status = "disabled";
9181 + lowpan0_pins: lowpan0_pins {
9182 + brcm,pins = <23 24 25>;
9183 + brcm,function = <0 1 1>; /* in out out */
9189 + interrupt = <&lowpan0>, "interrupts:0",
9190 + <&lowpan0_pins>, "brcm,pins:0";
9191 + reset = <&lowpan0>, "reset-gpio:4",
9192 + <&lowpan0_pins>, "brcm,pins:4";
9193 + sleep = <&lowpan0>, "sleep-gpio:4",
9194 + <&lowpan0_pins>, "brcm,pins:8";
9195 + speed = <&lowpan0>, "spi-max-frequency:0";
9196 + trim = <&lowpan0>, "xtal-trim.0";
9199 diff --git a/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
9200 new file mode 100644
9201 index 000000000000..57a66eac8e9b
9203 +++ b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
9205 +// Definitions for audioinjector.net audio add on soundcard
9210 + compatible = "brcm,bcm2835";
9220 + target-path = "/";
9222 + cs42448_mclk: codec-mclk {
9223 + compatible = "fixed-clock";
9224 + #clock-cells = <0>;
9225 + clock-frequency = <49152000>;
9233 + #address-cells = <1>;
9234 + #size-cells = <0>;
9237 + cs42448: cs42448@48 {
9238 + #sound-dai-cells = <0>;
9239 + compatible = "cirrus,cs42448";
9241 + clocks = <&cs42448_mclk>;
9242 + clock-names = "mclk";
9249 + target = <&sound>;
9250 + snd: __overlay__ {
9251 + compatible = "ai,audioinjector-octo-soundcard";
9252 + mult-gpios = <&gpio 27 0>, <&gpio 22 0>, <&gpio 23 0>,
9254 + reset-gpios = <&gpio 5 0>;
9255 + i2s-controller = <&i2s>;
9256 + codec = <&cs42448>;
9262 + non-stop-clocks = <&snd>, "non-stop-clocks?";
9265 diff --git a/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
9266 new file mode 100644
9267 index 000000000000..63e05cf9665d
9269 +++ b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
9271 +// Definitions for audioinjector.net audio isolated soundcard
9276 + compatible = "brcm,bcm2835";
9286 + target-path = "/";
9288 + cs4272_mclk: codec-mclk {
9289 + compatible = "fixed-clock";
9290 + #clock-cells = <0>;
9291 + clock-frequency = <24576000>;
9299 + #address-cells = <1>;
9300 + #size-cells = <0>;
9303 + cs4272: cs4271@10 {
9304 + #sound-dai-cells = <0>;
9305 + compatible = "cirrus,cs4271";
9307 + reset-gpio = <&gpio 5 0>;
9308 + clocks = <&cs4272_mclk>;
9309 + clock-names = "mclk";
9316 + target = <&sound>;
9317 + snd: __overlay__ {
9318 + compatible = "ai,audioinjector-isolated-soundcard";
9319 + mute-gpios = <&gpio 17 0>;
9320 + i2s-controller = <&i2s>;
9321 + codec = <&cs4272>;
9326 diff --git a/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
9327 new file mode 100644
9328 index 000000000000..fb4a4678a17a
9330 +++ b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
9332 +// Definitions for audioinjector.net audio add on soundcard
9337 + compatible = "brcm,bcm2835";
9349 + #address-cells = <1>;
9350 + #size-cells = <0>;
9353 + cs4265: cs4265@4e {
9354 + #sound-dai-cells = <0>;
9355 + compatible = "cirrus,cs4265";
9357 + reset-gpios = <&gpio 5 0>;
9364 + target = <&sound>;
9366 + compatible = "simple-audio-card";
9367 + i2s-controller = <&i2s>;
9370 + simple-audio-card,name = "audioinjector-ultra";
9372 + simple-audio-card,widgets =
9373 + "Line", "OUTPUTS",
9376 + simple-audio-card,routing =
9377 + "OUTPUTS","LINEOUTL",
9378 + "OUTPUTS","LINEOUTR",
9379 + "OUTPUTS","SPDIFOUT",
9380 + "LINEINL","INPUTS",
9381 + "LINEINR","INPUTS",
9385 + simple-audio-card,format = "i2s";
9387 + simple-audio-card,bitclock-master = <&sound_master>;
9388 + simple-audio-card,frame-master = <&sound_master>;
9390 + simple-audio-card,cpu {
9391 + sound-dai = <&i2s>;
9392 + dai-tdm-slot-num = <2>;
9393 + dai-tdm-slot-width = <32>;
9396 + sound_master: simple-audio-card,codec {
9397 + sound-dai = <&cs4265>;
9398 + system-clock-frequency = <12288000>;
9403 diff --git a/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
9404 new file mode 100644
9405 index 000000000000..68f4427d86c3
9407 +++ b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
9409 +// Definitions for audioinjector.net audio add on soundcard
9414 + compatible = "brcm,bcm2835";
9426 + #address-cells = <1>;
9427 + #size-cells = <0>;
9431 + #sound-dai-cells = <0>;
9432 + compatible = "wlf,wm8731";
9440 + target = <&sound>;
9442 + compatible = "ai,audioinjector-pi-soundcard";
9443 + i2s-controller = <&i2s>;
9448 diff --git a/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
9449 new file mode 100644
9450 index 000000000000..81af26374d92
9452 +++ b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
9454 +// Definitions for audiosense add on soundcard
9457 +#include <dt-bindings/pinctrl/bcm2835.h>
9458 +#include <dt-bindings/gpio/gpio.h>
9461 + compatible = "brcm,bcm2835";
9471 + target-path = "/";
9473 + codec_reg_1v8: codec-reg-1v8 {
9474 + compatible = "regulator-fixed";
9475 + regulator-name = "tlv320aic3204_1v8";
9476 + regulator-min-microvolt = <1800000>;
9477 + regulator-max-microvolt = <1800000>;
9478 + regulator-always-on;
9481 + /* audio external oscillator */
9482 + codec_osc: codec_osc {
9483 + compatible = "fixed-clock";
9484 + #clock-cells = <0>;
9485 + clock-frequency = <12000000>; /* 12 MHz */
9493 + codec_rst: codec-rst {
9495 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
9503 + #address-cells = <1>;
9504 + #size-cells = <0>;
9507 + codec: tlv320aic32x4@18 {
9508 + #sound-dai-cells = <0>;
9509 + compatible = "ti,tlv320aic32x4";
9512 + clocks = <&codec_osc>;
9513 + clock-names = "mclk";
9515 + iov-supply = <&vdd_3v3_reg>;
9516 + ldoin-supply = <&vdd_3v3_reg>;
9519 + #gpio-cells = <2>;
9520 + reset-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
9528 + target = <&sound>;
9530 + compatible = "as,audiosense-pi";
9531 + i2s-controller = <&i2s>;
9536 diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts
9537 new file mode 100644
9538 index 000000000000..d624bb3a3fea
9540 +++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
9546 + compatible = "brcm,bcm2835";
9549 + target = <&audio_pins>;
9550 + frag0: __overlay__ {
9555 + target = <&audio_pins>;
9557 + brcm,pins = < 12 13 >;
9558 + brcm,function = < 4 >; /* alt0 alt0 */
9563 + target = <&audio_pins>;
9565 + brcm,pins = < 18 19 >;
9566 + brcm,function = < 2 >; /* alt5 alt5 */
9571 + swap_lr = <&frag0>, "swap_lr?";
9572 + enable_jack = <&frag0>, "enable_jack?";
9573 + pins_12_13 = <0>,"+1-2";
9574 + pins_18_19 = <0>,"-1+2";
9577 diff --git a/arch/arm/boot/dts/overlays/balena-fin-overlay.dts b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
9578 new file mode 100644
9579 index 000000000000..e7ead7cdf5f5
9581 +++ b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
9586 +#include <dt-bindings/gpio/gpio.h>
9589 + compatible = "brcm,bcm2835";
9592 + target = <&mmcnr>;
9594 + pinctrl-names = "default";
9595 + pinctrl-0 = <&sdio_pins>;
9597 + brcm,overclock-50 = <35>;
9605 + sdio_pins: sdio_pins {
9606 + brcm,pins = <34 35 36 37 38 39>;
9607 + brcm,function = <7>; /* ALT3 = SD1 */
9608 + brcm,pull = <0 2 2 2 2 2>;
9611 + power_ctrl_pins: power_ctrl_pins {
9613 + brcm,function = <1>; // out
9619 + target-path = "/";
9621 + // We should switch to mmc-pwrseq-sd8787 after making it
9622 + // compatible with sd8887
9623 + // Currently that module requires two GPIOs to function since it
9624 + // targets a slightly different chip
9625 + power_ctrl: power_ctrl {
9626 + compatible = "gpio-poweroff";
9627 + gpios = <&gpio 40 1>;
9629 + pinctrl-names = "default";
9630 + pinctrl-0 = <&power_ctrl_pins>;
9634 + compatible = "i2c-gpio";
9635 + gpios = <&gpio 43 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
9636 + &gpio 42 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */>;
9637 + i2c-gpio,delay-us = <5>;
9638 + i2c-gpio,scl-open-drain;
9639 + i2c-gpio,sda-open-drain;
9640 + #address-cells = <1>;
9641 + #size-cells = <0>;
9647 + cfg80211_wext = <0xf>;
9648 + sta_name = "wlan";
9650 + cal_data_cfg = "none";
9656 + target = <&i2c_soft>;
9658 + #address-cells = <1>;
9659 + #size-cells = <0>;
9662 + gpio_expander: gpio_expander@20 {
9663 + compatible = "nxp,pca9554";
9665 + #gpio-cells = <2>;
9671 + ds1307: ds1307@68 {
9672 + compatible = "dallas,ds1307";
9677 + // RGB LEDs (>= v1.1.0)
9678 + pca9633: pca9633@62 {
9679 + compatible = "nxp,pca9633";
9681 + #address-cells = <1>;
9682 + #size-cells = <0>;
9687 + linux,default-trigger = "none";
9692 + linux,default-trigger = "none";
9697 + linux,default-trigger = "none";
9702 + linux,default-trigger = "none";
9708 diff --git a/arch/arm/boot/dts/overlays/cma-overlay.dts b/arch/arm/boot/dts/overlays/cma-overlay.dts
9709 new file mode 100644
9710 index 000000000000..1d87c599f909
9712 +++ b/arch/arm/boot/dts/overlays/cma-overlay.dts
9722 + compatible = "brcm,bcm2835";
9726 + frag0: __overlay__ {
9728 + * The default size when using this overlay is 256 MB
9729 + * and should be kept as is for backwards
9732 + size = <0x10000000>;
9737 + cma-512 = <&frag0>,"size:0=",<0x20000000>;
9738 + cma-448 = <&frag0>,"size:0=",<0x1c000000>;
9739 + cma-384 = <&frag0>,"size:0=",<0x18000000>;
9740 + cma-320 = <&frag0>,"size:0=",<0x14000000>;
9741 + cma-256 = <&frag0>,"size:0=",<0x10000000>;
9742 + cma-192 = <&frag0>,"size:0=",<0xC000000>;
9743 + cma-128 = <&frag0>,"size:0=",<0x8000000>;
9744 + cma-96 = <&frag0>,"size:0=",<0x6000000>;
9745 + cma-64 = <&frag0>,"size:0=",<0x4000000>;
9746 + cma-size = <&frag0>,"size:0"; /* in bytes, 4MB aligned */
9747 + cma-default = <0>,"-0";
9750 diff --git a/arch/arm/boot/dts/overlays/dht11-overlay.dts b/arch/arm/boot/dts/overlays/dht11-overlay.dts
9751 new file mode 100644
9752 index 000000000000..6feeeb402493
9754 +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
9757 + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
9763 + compatible = "brcm,bcm2835";
9766 + target-path = "/";
9770 + compatible = "dht11";
9771 + pinctrl-names = "default";
9772 + pinctrl-0 = <&dht11_pins>;
9773 + gpios = <&gpio 4 0>;
9782 + dht11_pins: dht11_pins@0 {
9784 + brcm,function = <0>; // in
9785 + brcm,pull = <0>; // off
9791 + gpiopin = <&dht11_pins>,"brcm,pins:0",
9792 + <&dht11_pins>, "reg:0",
9793 + <&dht11>,"gpios:4",
9797 diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
9798 new file mode 100644
9799 index 000000000000..d863e5c167cc
9801 +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
9803 +// Definitions for Dion Audio LOCO DAC-AMP
9806 + * PCM5242 DAC (in hardware mode) and TPA3118 AMP.
9813 + compatible = "brcm,bcm2835";
9823 + target-path = "/";
9826 + #sound-dai-cells = <0>;
9827 + compatible = "ti,pcm5102a";
9834 + target = <&sound>;
9836 + compatible = "dionaudio,loco-pcm5242-tpa3118";
9837 + i2s-controller = <&i2s>;
9842 diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
9843 new file mode 100644
9844 index 000000000000..dfb8922a654b
9846 +++ b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
9849 + * Definitions for Dion Audio LOCO-V2 DAC-AMP
9850 + * eg. dtoverlay=dionaudio-loco-v2
9852 + * PCM5242 DAC (in software mode) and TPA3255 AMP.
9859 + compatible = "brcm,bcm2835";
9862 + target = <&sound>;
9863 + frag0: __overlay__ {
9864 + compatible = "dionaudio,dionaudio-loco-v2";
9865 + i2s-controller = <&i2s>;
9880 + #address-cells = <1>;
9881 + #size-cells = <0>;
9885 + #sound-dai-cells = <0>;
9886 + compatible = "ti,pcm5122";
9894 + 24db_digital_gain = <&frag0>,"dionaudio,24db_digital_gain?";
9897 diff --git a/arch/arm/boot/dts/overlays/disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
9898 new file mode 100644
9899 index 000000000000..d5a66e5d76a9
9901 +++ b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
9906 +/* Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15.
9907 + To disable the systemd service that initialises the modem so it doesn't use
9910 + sudo systemctl disable hciuart
9913 +#include <dt-bindings/gpio/gpio.h>
9916 + compatible = "brcm,bcm2835";
9919 + target = <&uart1>;
9921 + status = "disabled";
9926 + target = <&uart0>;
9928 + pinctrl-names = "default";
9929 + pinctrl-0 = <&uart0_pins>;
9937 + status = "disabled";
9942 + target = <&uart0_pins>;
9951 + target = <&bt_pins>;
9960 + target-path = "/aliases";
9962 + serial0 = "/soc/serial@7e201000";
9963 + serial1 = "/soc/serial@7e215040";
9967 diff --git a/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
9968 new file mode 100644
9969 index 000000000000..75e046463900
9971 +++ b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
9977 + compatible = "brcm,bcm2835";
9982 + status = "disabled";
9987 + target = <&mmcnr>;
9989 + status = "disabled";
9993 diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
9994 new file mode 100644
9995 index 000000000000..4abe5be744db
9997 +++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
10003 + compatible = "brcm,bcm2835";
10005 + // There is no DPI driver module, but we need a platform device
10006 + // node (that doesn't already use pinctrl) to hang the pinctrl
10007 + // reference on - leds will do
10012 + pinctrl-names = "default";
10013 + pinctrl-0 = <&dpi18_pins>;
10020 + pinctrl-names = "default";
10021 + pinctrl-0 = <&dpi18_pins>;
10026 + target = <&gpio>;
10028 + dpi18_pins: dpi18_pins {
10029 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
10030 + 12 13 14 15 16 17 18 19 20
10032 + brcm,function = <6>; /* alt2 */
10033 + brcm,pull = <0>; /* no pull */
10038 diff --git a/arch/arm/boot/dts/overlays/dpi24-overlay.dts b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
10039 new file mode 100644
10040 index 000000000000..44335cc81277
10042 +++ b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
10048 + compatible = "brcm,bcm2835";
10050 + // There is no DPI driver module, but we need a platform device
10051 + // node (that doesn't already use pinctrl) to hang the pinctrl
10052 + // reference on - leds will do
10057 + pinctrl-names = "default";
10058 + pinctrl-0 = <&dpi24_pins>;
10065 + pinctrl-names = "default";
10066 + pinctrl-0 = <&dpi24_pins>;
10071 + target = <&gpio>;
10073 + dpi24_pins: dpi24_pins {
10074 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
10075 + 12 13 14 15 16 17 18 19 20
10076 + 21 22 23 24 25 26 27>;
10077 + brcm,function = <6>; /* alt2 */
10078 + brcm,pull = <0>; /* no pull */
10083 diff --git a/arch/arm/boot/dts/overlays/draws-overlay.dts b/arch/arm/boot/dts/overlays/draws-overlay.dts
10084 new file mode 100644
10085 index 000000000000..d18187d7f343
10087 +++ b/arch/arm/boot/dts/overlays/draws-overlay.dts
10089 +#include <dt-bindings/clock/bcm2835.h>
10091 + * Device tree overlay for the DRAWS Hardware
10098 + compatible = "brcm,bcm2835";
10107 + target-path = "/";
10110 + compatible = "simple-bus";
10111 + #address-cells = <1>;
10112 + #size-cells = <0>;
10114 + udrc0_ldoin: udrc0_ldoin {
10115 + compatible = "regulator-fixed";
10116 + regulator-name = "ldoin";
10117 + regulator-min-microvolt = <3300000>;
10118 + regulator-max-microvolt = <3300000>;
10119 + regulator-always-on;
10122 + sc16is752_clk: sc16is752_draws_clk {
10123 + compatible = "fixed-clock";
10124 + #clock-cells = <0>;
10125 + clock-frequency = <1843200>;
10130 + compatible = "pps-gpio";
10131 + pinctrl-names = "default";
10132 + pinctrl-0 = <&pps_pins>;
10133 + gpios = <&gpio 7 0>;
10138 + compatible = "iio-hwmon";
10140 + io-channels = <&tla2024 4>, <&tla2024 5>, <&tla2024 6>,
10147 + target = <&i2c_arm>;
10149 + #address-cells = <1>;
10150 + #size-cells = <0>;
10153 + tlv320aic32x4: tlv320aic32x4@18 {
10154 + compatible = "ti,tlv320aic32x4";
10156 + #sound-dai-cells = <0>;
10159 + clocks = <&clocks BCM2835_CLOCK_GP0>;
10160 + clock-names = "mclk";
10161 + assigned-clocks = <&clocks BCM2835_CLOCK_GP0>;
10162 + assigned-clock-rates = <25000000>;
10164 + pinctrl-names = "default";
10165 + pinctrl-0 = <&gpclk0_pin &aic3204_reset>;
10167 + reset-gpios = <&gpio 13 0>;
10169 + iov-supply = <&udrc0_ldoin>;
10170 + ldoin-supply = <&udrc0_ldoin>;
10173 + sc16is752: sc16is752@50 {
10174 + compatible = "nxp,sc16is752";
10176 + clocks = <&sc16is752_clk>;
10177 + interrupt-parent = <&gpio>;
10178 + interrupts = <17 2>; /* IRQ_TYPE_EDGE_FALLING */
10180 + pinctrl-names = "default";
10181 + pinctrl-0 = <&sc16is752_irq>;
10184 + tla2024: tla2024@48 {
10185 + compatible = "ti,ads1015";
10187 + #address-cells = <1>;
10188 + #size-cells = <0>;
10189 + #io-channel-cells = <1>;
10191 + adc_ch4: channel@4 {
10194 + ti,datarate = <4>;
10197 + adc_ch5: channel@5 {
10200 + ti,datarate = <4>;
10203 + adc_ch6: channel@6 {
10206 + ti,datarate = <4>;
10209 + adc_ch7: channel@7 {
10212 + ti,datarate = <4>;
10219 + target = <&sound>;
10220 + snd: __overlay__ {
10221 + compatible = "simple-audio-card";
10222 + i2s-controller = <&i2s>;
10225 + simple-audio-card,name = "draws";
10226 + simple-audio-card,format = "i2s";
10228 + simple-audio-card,bitclock-master = <&dailink0_master>;
10229 + simple-audio-card,frame-master = <&dailink0_master>;
10231 + simple-audio-card,widgets =
10232 + "Line", "Line In",
10233 + "Line", "Line Out";
10235 + simple-audio-card,routing =
10236 + "IN1_R", "Line In",
10237 + "IN1_L", "Line In",
10238 + "CM_L", "Line In",
10239 + "CM_R", "Line In",
10240 + "Line Out", "LOR",
10241 + "Line Out", "LOL";
10243 + dailink0_master: simple-audio-card,cpu {
10244 + sound-dai = <&i2s>;
10247 + simple-audio-card,codec {
10248 + sound-dai = <&tlv320aic32x4>;
10254 + target = <&gpio>;
10256 + gpclk0_pin: gpclk0_pin {
10258 + brcm,function = <4>;
10261 + aic3204_reset: aic3204_reset {
10262 + brcm,pins = <13>;
10263 + brcm,function = <1>;
10267 + aic3204_gpio: aic3204_gpio {
10268 + brcm,pins = <26>;
10271 + sc16is752_irq: sc16is752_irq {
10272 + brcm,pins = <17>;
10273 + brcm,function = <0>;
10277 + pps_pins: pps_pins {
10279 + brcm,function = <0>;
10286 + draws_adc_ch4_gain = <&adc_ch4>,"ti,gain:0";
10287 + draws_adc_ch4_datarate = <&adc_ch4>,"ti,datarate:0";
10288 + draws_adc_ch5_gain = <&adc_ch5>,"ti,gain:0";
10289 + draws_adc_ch5_datarate = <&adc_ch5>,"ti,datarate:0";
10290 + draws_adc_ch6_gain = <&adc_ch6>,"ti,gain:0";
10291 + draws_adc_ch6_datarate = <&adc_ch6>,"ti,datarate:0";
10292 + draws_adc_ch7_gain = <&adc_ch7>,"ti,gain:0";
10293 + draws_adc_ch7_datarate = <&adc_ch7>,"ti,datarate:0";
10294 + alsaname = <&snd>, "simple-audio-card,name";
10297 diff --git a/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
10298 new file mode 100644
10299 index 000000000000..78c5e9f85048
10301 +++ b/arch/arm/boot/dts/overlays/dwc-otg-overlay.dts
10307 + compatible = "brcm,bcm2835";
10312 + compatible = "brcm,bcm2708-usb";
10317 diff --git a/arch/arm/boot/dts/overlays/dwc2-overlay.dts b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
10318 new file mode 100644
10319 index 000000000000..0d83e344ad97
10321 +++ b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
10327 + compatible = "brcm,bcm2835";
10331 + #address-cells = <1>;
10332 + #size-cells = <1>;
10333 + dwc2_usb: __overlay__ {
10334 + compatible = "brcm,bcm2835-usb";
10336 + g-np-tx-fifo-size = <32>;
10337 + g-rx-fifo-size = <558>;
10338 + g-tx-fifo-size = <512 512 512 512 512 256 256>;
10344 + dr_mode = <&dwc2_usb>, "dr_mode";
10345 + g-np-tx-fifo-size = <&dwc2_usb>,"g-np-tx-fifo-size:0";
10346 + g-rx-fifo-size = <&dwc2_usb>,"g-rx-fifo-size:0";
10349 diff --git a/arch/arm/boot/dts/overlays/enc28j60-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
10350 new file mode 100644
10351 index 000000000000..7af5c2e607ea
10353 +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
10355 +// Overlay for the Microchip ENC28J60 Ethernet Controller
10360 + compatible = "brcm,bcm2835";
10363 + target = <&spi0>;
10365 + /* needed to avoid dtc warning */
10366 + #address-cells = <1>;
10367 + #size-cells = <0>;
10371 + eth1: enc28j60@0{
10372 + compatible = "microchip,enc28j60";
10373 + reg = <0>; /* CE0 */
10374 + pinctrl-names = "default";
10375 + pinctrl-0 = <ð1_pins>;
10376 + interrupt-parent = <&gpio>;
10377 + interrupts = <25 0x2>; /* falling edge */
10378 + spi-max-frequency = <12000000>;
10385 + target = <&spidev0>;
10387 + status = "disabled";
10392 + target = <&gpio>;
10394 + eth1_pins: eth1_pins {
10395 + brcm,pins = <25>;
10396 + brcm,function = <0>; /* in */
10397 + brcm,pull = <0>; /* none */
10403 + int_pin = <ð1>, "interrupts:0",
10404 + <ð1_pins>, "brcm,pins:0";
10405 + speed = <ð1>, "spi-max-frequency:0";
10408 diff --git a/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
10409 new file mode 100644
10410 index 000000000000..17cb5b8fa485
10412 +++ b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
10414 +// Overlay for the Microchip ENC28J60 Ethernet Controller - SPI2 Compute Module
10415 +// Interrupt pin: 39
10420 + compatible = "brcm,bcm2835";
10423 + target = <&spi2>;
10425 + /* needed to avoid dtc warning */
10426 + #address-cells = <1>;
10427 + #size-cells = <0>;
10431 + eth1: enc28j60@0{
10432 + compatible = "microchip,enc28j60";
10433 + reg = <0>; /* CE0 */
10434 + pinctrl-names = "default";
10435 + pinctrl-0 = <ð1_pins>;
10436 + interrupt-parent = <&gpio>;
10437 + interrupts = <39 0x2>; /* falling edge */
10438 + spi-max-frequency = <12000000>;
10445 + target = <&gpio>;
10447 + eth1_pins: eth1_pins {
10448 + brcm,pins = <39>;
10449 + brcm,function = <0>; /* in */
10450 + brcm,pull = <0>; /* none */
10456 + int_pin = <ð1>, "interrupts:0",
10457 + <ð1_pins>, "brcm,pins:0";
10458 + speed = <ð1>, "spi-max-frequency:0";
10461 diff --git a/arch/arm/boot/dts/overlays/exc3000-overlay.dts b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
10462 new file mode 100644
10463 index 000000000000..6f087fb20661
10465 +++ b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
10467 +// Device tree overlay for I2C connected EETI EXC3000 multiple touch controller
10472 + compatible = "brcm,bcm2835";
10475 + target = <&gpio>;
10477 + exc3000_pins: exc3000_pins {
10478 + brcm,pins = <4>; // interrupt
10479 + brcm,function = <0>; // in
10480 + brcm,pull = <2>; // pull-up
10486 + target = <&i2c1>;
10488 + #address-cells = <1>;
10489 + #size-cells = <0>;
10492 + exc3000: exc3000@2a {
10493 + compatible = "eeti,exc3000";
10495 + pinctrl-names = "default";
10496 + pinctrl-0 = <&exc3000_pins>;
10497 + interrupt-parent = <&gpio>;
10498 + interrupts = <4 8>; // active low level-sensitive
10499 + touchscreen-size-x = <4096>;
10500 + touchscreen-size-y = <4096>;
10506 + interrupt = <&exc3000_pins>,"brcm,pins:0",
10507 + <&exc3000>,"interrupts:0";
10508 + sizex = <&exc3000>,"touchscreen-size-x:0";
10509 + sizey = <&exc3000>,"touchscreen-size-y:0";
10510 + invx = <&exc3000>,"touchscreen-inverted-x?";
10511 + invy = <&exc3000>,"touchscreen-inverted-y?";
10512 + swapxy = <&exc3000>,"touchscreen-swapped-x-y?";
10515 diff --git a/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
10516 new file mode 100644
10517 index 000000000000..743f14ae5768
10519 +++ b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
10521 +// Definitions for Fe-Pi Audio
10526 + compatible = "brcm,bcm2835";
10529 + target-path = "/";
10531 + sgtl5000_mclk: sgtl5000_mclk {
10532 + compatible = "fixed-clock";
10533 + #clock-cells = <0>;
10534 + clock-frequency = <12288000>;
10535 + clock-output-names = "sgtl5000-mclk";
10543 + reg_1v8: reg_1v8@0 {
10544 + compatible = "regulator-fixed";
10545 + regulator-name = "1V8";
10546 + regulator-min-microvolt = <1800000>;
10547 + regulator-max-microvolt = <1800000>;
10548 + regulator-always-on;
10554 + target = <&i2c1>;
10556 + #address-cells = <1>;
10557 + #size-cells = <0>;
10561 + #sound-dai-cells = <0>;
10562 + compatible = "fsl,sgtl5000";
10564 + clocks = <&sgtl5000_mclk>;
10565 + micbias-resistor-k-ohms = <2>;
10566 + micbias-voltage-m-volts = <3000>;
10567 + VDDA-supply = <&vdd_3v3_reg>;
10568 + VDDIO-supply = <&vdd_3v3_reg>;
10569 + VDDD-supply = <®_1v8>;
10583 + target = <&sound>;
10585 + compatible = "fe-pi,fe-pi-audio";
10586 + i2s-controller = <&i2s>;
10591 diff --git a/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
10592 new file mode 100644
10593 index 000000000000..9e06e388e4d3
10595 +++ b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
10597 +// Demo overlay for the gpio-fsm driver
10601 +#include <dt-bindings/gpio/gpio-fsm.h>
10603 +#define BUTTON1 GF_IP(0)
10604 +#define BUTTON2 GF_SW(0)
10605 +#define RED GF_OP(0) // GPIO7
10606 +#define AMBER GF_OP(1) // GPIO8
10607 +#define GREEN GF_OP(2) // GPIO25
10610 + compatible = "brcm,bcm2835";
10613 + target-path = "/";
10615 + fsm_demo: fsm-demo {
10616 + compatible = "rpi,gpio-fsm";
10620 + #gpio-cells = <2>;
10621 + num-soft-gpios = <1>;
10622 + gpio-line-names = "button2";
10623 + input-gpios = <&gpio 6 1>; // BUTTON1 (active-low)
10624 + output-gpios = <&gpio 7 0>, // RED
10625 + <&gpio 8 0>, // AMBER
10626 + <&gpio 25 0>; // GREEN
10627 + shutdown-timeout-ms = <2000>;
10631 + set = <RED 1>, <AMBER 0>, <GREEN 0>;
10632 + start2 = <GF_DELAY 250>;
10636 + set = <RED 0>, <AMBER 1>;
10637 + go = <GF_DELAY 250>;
10641 + set = <RED 0>, <AMBER 0>, <GREEN 1>;
10642 + ready_wait = <BUTTON1 0>;
10643 + shutdown1 = <GF_SHUTDOWN 0>;
10647 + // Clear the soft GPIO
10648 + set = <BUTTON2 0>;
10649 + ready = <GF_DELAY 1000>;
10650 + shutdown1 = <GF_SHUTDOWN 0>;
10654 + stopping = <BUTTON1 1>, <BUTTON2 1>;
10655 + shutdown1 = <GF_SHUTDOWN 0>;
10659 + set = <GREEN 0>, <AMBER 1>;
10660 + stopped = <GF_DELAY 1000>;
10664 + set = <AMBER 0>, <RED 1>;
10665 + get_set = <GF_DELAY 3000>;
10666 + shutdown1 = <GF_SHUTDOWN 0>;
10671 + go = <GF_DELAY 1000>;
10675 + set = <RED 0>, <AMBER 0>, <GREEN 1>;
10676 + shutdown2 = <GF_SHUTDOWN 250>;
10680 + set = <AMBER 1>, <GREEN 0>;
10681 + shutdown3 = <GF_SHUTDOWN 250>;
10685 + set = <RED 1>, <AMBER 0>;
10686 + shutdown4 = <GF_SHUTDOWN 250>;
10698 + fsm_debug = <&fsm_demo>,"debug:0";
10701 diff --git a/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
10702 new file mode 100644
10703 index 000000000000..afc9f034b5fc
10705 +++ b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
10707 +// Overlay for the PCM5122-based Ghost amplifier using gpio-fsm
10711 +#include <dt-bindings/gpio/gpio-fsm.h>
10713 +#define ENABLE GF_SW(0)
10714 +#define FAULT GF_IP(0) // GPIO5
10715 +#define RELAY1 GF_OP(0) // GPIO22
10716 +#define RELAY2 GF_OP(1) // GPIO23
10719 + compatible = "brcm,bcm2835";
10729 + target = <&i2c1>;
10731 + #address-cells = <1>;
10732 + #size-cells = <0>;
10736 + #sound-dai-cells = <0>;
10737 + compatible = "ti,pcm5122";
10739 + AVDD-supply = <&vdd_3v3_reg>;
10740 + DVDD-supply = <&vdd_3v3_reg>;
10741 + CPVDD-supply = <&vdd_3v3_reg>;
10748 + target = <&sound>;
10749 + iqaudio_dac: __overlay__ {
10750 + compatible = "iqaudio,iqaudio-dac";
10751 + i2s-controller = <&i2s>;
10752 + mute-gpios = <& 0 0>;
10753 + iqaudio-dac,auto-mute-amp;
10759 + target-path = "/";
10762 + compatible = "rpi,gpio-fsm";
10766 + #gpio-cells = <2>;
10767 + num-soft-gpios = <1>;
10768 + gpio-line-names = "enable";
10769 + input-gpios = <&gpio 5 1>; // FAULT (active low)
10770 + output-gpios = <&gpio 22 0>, // RELAY1
10771 + <&gpio 23 0>; // RELAY2
10772 + shutdown-timeout-ms = <1000>;
10778 + set = <RELAY2 0>,
10780 + amp_on_1 = <ENABLE 1>;
10781 + fault = <FAULT 1>;
10785 + set = <RELAY1 1>;
10786 + amp_on = <GF_DELAY 1500>;
10787 + amp_off = <ENABLE 0>;
10788 + fault = <FAULT 1>;
10792 + set = <RELAY2 1>;
10793 + amp_off_wait = <ENABLE 0>;
10794 + fault = <FAULT 1>;
10798 + amp_off_1 = <GF_DELAY (30*60*1000)>,
10800 + amp_on = <ENABLE 1>;
10801 + fault = <FAULT 1>;
10805 + set = <RELAY2 0>;
10806 + amp_on = <ENABLE 1>;
10807 + amp_off = <GF_DELAY 100>;
10808 + fault = <FAULT 1>;
10811 + // Keep this a distinct state to prevent
10812 + // changes and for the diagnostic output
10814 + set = <RELAY2 0>,
10823 + fsm_debug = <&>,"debug:0";
10826 diff --git a/arch/arm/boot/dts/overlays/goodix-overlay.dts b/arch/arm/boot/dts/overlays/goodix-overlay.dts
10827 new file mode 100644
10828 index 000000000000..a11d65f81c5e
10830 +++ b/arch/arm/boot/dts/overlays/goodix-overlay.dts
10832 +// Device tree overlay for I2C connected Goodix gt9271 multiple touch controller
10837 + compatible = "brcm,bcm2835";
10840 + target = <&gpio>;
10842 + goodix_pins: goodix_pins {
10843 + brcm,pins = <4 17>; // interrupt and reset
10844 + brcm,function = <0 0>; // in
10845 + brcm,pull = <2 2>; // pull-up
10851 + target = <&i2c1>;
10853 + #address-cells = <1>;
10854 + #size-cells = <0>;
10857 + gt9271: gt9271@14 {
10858 + compatible = "goodix,gt9271";
10860 + pinctrl-names = "default";
10861 + pinctrl-0 = <&goodix_pins>;
10862 + interrupt-parent = <&gpio>;
10863 + interrupts = <4 2>; // high-to-low edge triggered
10864 + irq-gpios = <&gpio 4 0>; // Pin7 on GPIO header
10865 + reset-gpios = <&gpio 17 1>; // Pin11 on GPIO header
10871 + interrupt = <&goodix_pins>,"brcm,pins:0",
10872 + <>9271>,"interrupts:0",
10873 + <>9271>,"irq-gpios:4";
10874 + reset = <&goodix_pins>,"brcm,pins:4",
10875 + <>9271>,"reset-gpios:4";
10878 diff --git a/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
10879 new file mode 100644
10880 index 000000000000..e443be1f9a0e
10882 +++ b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
10884 +// Definitions for Google voiceHAT v1 soundcard overlay
10889 + compatible = "brcm,bcm2835";
10899 + target = <&gpio>;
10901 + googlevoicehat_pins: googlevoicehat_pins {
10902 + brcm,pins = <16>;
10903 + brcm,function = <1>; /* out */
10904 + brcm,pull = <0>; /* up */
10911 + target-path = "/";
10914 + #sound-dai-cells = <0>;
10915 + compatible = "google,voicehat";
10916 + pinctrl-names = "default";
10917 + pinctrl-0 = <&googlevoicehat_pins>;
10918 + sdmode-gpios= <&gpio 16 0>;
10925 + target = <&sound>;
10927 + compatible = "googlevoicehat,googlevoicehat-soundcard";
10928 + i2s-controller = <&i2s>;
10933 diff --git a/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
10934 new file mode 100644
10935 index 000000000000..77a7bbb41e3b
10937 +++ b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
10940 + * Overlay for the Raspberry Pi GPIO Fan @ BCM GPIO12.
10942 + * - https://www.raspberrypi.org/forums/viewtopic.php?f=107&p=1367135#p1365084
10944 + * Optional parameters:
10945 + * - "gpiopin" - BCM number of the pin driving the fan, default 12 (GPIO12);
10946 + * - "temp" - CPU temperature at which fan is started in millicelsius, default 55000;
10949 + * - kernel configurations: CONFIG_SENSORS_GPIO_FAN=m;
10950 + * - kernel rebuild;
10951 + * - N-MOSFET connected to gpiopin, 2N7002-[https://en.wikipedia.org/wiki/2N7000];
10952 + * - DC Fan connected to N-MOSFET Drain terminal, a 12V fan is working fine and quite silently;
10953 + * [https://www.tme.eu/en/details/ee40101s1-999-a/dc12v-fans/sunon/ee40101s1-1000u-999/]
10955 + * ┌─────────────────────┐
10956 + * │Fan negative terminal│
10957 + * └┬────────────────────┘
10960 + * [GPIO12]──────┤ │<─┐ 2N7002
10967 + * - `sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/gpio-fan.dtbo gpio-fan-overlay.dts`
10969 + * - sudo nano /boot/config.txt add "dtoverlay=gpio-fan" or "dtoverlay=gpio-fan,gpiopin=12,temp=45000"
10971 + * - sudo sh -c 'printf "\n# Enable PI GPIO-Fan Default\ndtoverlay=gpio-fan\n" >> /boot/config.txt'
10972 + * - sudo sh -c 'printf "\n# Enable PI GPIO-Fan Custom\ndtoverlay=gpio-fan,gpiopin=12,temp=45000\n" >> /boot/config.txt'
10979 + compatible = "brcm,bcm2835";
10982 + target-path = "/";
10984 + fan0: gpio-fan@0 {
10985 + compatible = "gpio-fan";
10986 + gpios = <&gpio 12 0>;
10987 + gpio-fan,speed-map = <0 0>,
10989 + #cooling-cells = <2>;
10995 + target = <&cpu_thermal>;
10996 + polling-delay = <2000>; /* milliseconds */
10999 + cpu_hot: trip-point@0 {
11000 + temperature = <55000>; /* (millicelsius) Fan started at 55°C */
11001 + hysteresis = <10000>; /* (millicelsius) Fan stopped at 45°C */
11007 + trip = <&cpu_hot>;
11008 + cooling-device = <&fan0 1 1>;
11014 + gpiopin = <&fan0>,"gpios:4", <&fan0>,"brcm,pins:0";
11015 + temp = <&cpu_hot>,"temperature:0";
11018 diff --git a/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
11019 new file mode 100644
11020 index 000000000000..162b6ce07dc9
11022 +++ b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
11024 +// Definitions for ir-gpio module
11029 + compatible = "brcm,bcm2835";
11032 + target-path = "/";
11034 + gpio_ir: ir-receiver@12 {
11035 + compatible = "gpio-ir-receiver";
11036 + pinctrl-names = "default";
11037 + pinctrl-0 = <&gpio_ir_pins>;
11039 + // pin number, high or low
11040 + gpios = <&gpio 18 1>;
11042 + // parameter for keymap name
11043 + linux,rc-map-name = "rc-rc6-mce";
11051 + target = <&gpio>;
11053 + gpio_ir_pins: gpio_ir_pins@12 {
11054 + brcm,pins = <18>; // pin 18
11055 + brcm,function = <0>; // in
11056 + brcm,pull = <2>; // up
11063 + gpio_pin = <&gpio_ir>,"gpios:4", // pin number
11064 + <&gpio_ir>,"reg:0",
11065 + <&gpio_ir_pins>,"brcm,pins:0",
11066 + <&gpio_ir_pins>,"reg:0";
11067 + gpio_pull = <&gpio_ir_pins>,"brcm,pull:0"; // pull-up/down state
11068 + invert = <&gpio_ir>,"gpios:8"; // 0 = active high input
11070 + rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
11073 diff --git a/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
11074 new file mode 100644
11075 index 000000000000..3625431b7560
11077 +++ b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
11083 + compatible = "brcm,bcm2835";
11086 + target = <&gpio>;
11088 + gpio_ir_tx_pins: gpio_ir_tx_pins@12 {
11089 + brcm,pins = <18>;
11090 + brcm,function = <1>; // out
11096 + target-path = "/";
11098 + gpio_ir_tx: gpio-ir-transmitter@12 {
11099 + compatible = "gpio-ir-tx";
11100 + pinctrl-names = "default";
11101 + pinctrl-0 = <&gpio_ir_tx_pins>;
11102 + gpios = <&gpio 18 0>;
11108 + gpio_pin = <&gpio_ir_tx>, "gpios:4", // pin number
11109 + <&gpio_ir_tx>, "reg:0",
11110 + <&gpio_ir_tx_pins>, "brcm,pins:0",
11111 + <&gpio_ir_tx_pins>, "reg:0";
11112 + invert = <&gpio_ir_tx>, "gpios:8"; // 1 = active low
11115 diff --git a/arch/arm/boot/dts/overlays/gpio-key-overlay.dts b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
11116 new file mode 100644
11117 index 000000000000..2e7253d1d0ab
11119 +++ b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
11121 +// Definitions for gpio-key module
11126 + compatible = "brcm,bcm2835";
11129 + // Configure the gpio pin controller
11130 + target = <&gpio>;
11132 + pin_state: button_pins@0 {
11133 + brcm,pins = <3>; // gpio number
11134 + brcm,function = <0>; // 0 = input, 1 = output
11135 + brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
11140 + target-path = "/";
11142 + button: button@0 {
11143 + compatible = "gpio-keys";
11144 + pinctrl-names = "default";
11145 + pinctrl-0 = <&pin_state>;
11149 + linux,code = <116>;
11150 + gpios = <&gpio 3 1>;
11151 + label = "KEY_POWER";
11158 + gpio = <&key>,"gpios:4",
11159 + <&button>,"reg:0",
11160 + <&pin_state>,"brcm,pins:0",
11161 + <&pin_state>,"reg:0";
11162 + label = <&key>,"label";
11163 + keycode = <&key>,"linux,code:0";
11164 + gpio_pull = <&pin_state>,"brcm,pull:0";
11165 + active_low = <&key>,"gpios:8";
11169 diff --git a/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
11170 new file mode 100755
11171 index 000000000000..96cbe80820b7
11173 +++ b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
11179 + compatible = "brcm,bcm2835";
11182 + // Configure the gpio pin controller
11183 + target = <&gpio>;
11185 + interrupts = <255 255>, <2 18>;
11189 diff --git a/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
11190 new file mode 100644
11191 index 000000000000..55f9bff3a8f6
11193 +++ b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
11199 + compatible = "brcm,bcm2835";
11202 + // Configure the gpio pin controller
11203 + target = <&gpio>;
11209 diff --git a/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
11210 new file mode 100644
11211 index 000000000000..416aa2bc797a
11213 +++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
11215 +// Definitions for gpio-poweroff module
11220 + compatible = "brcm,bcm2835";
11223 + target-path = "/";
11225 + power_ctrl: power_ctrl {
11226 + compatible = "gpio-poweroff";
11227 + gpios = <&gpio 26 0>;
11234 + target = <&gpio>;
11236 + power_ctrl_pins: power_ctrl_pins {
11237 + brcm,pins = <26>;
11238 + brcm,function = <1>; // out
11244 + gpiopin = <&power_ctrl>,"gpios:4",
11245 + <&power_ctrl_pins>,"brcm,pins:0";
11246 + active_low = <&power_ctrl>,"gpios:8";
11247 + input = <&power_ctrl>,"input?";
11248 + export = <&power_ctrl>,"export?";
11249 + timeout_ms = <&power_ctrl>,"timeout-ms:0";
11252 diff --git a/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
11253 new file mode 100644
11254 index 000000000000..0a27595143ec
11256 +++ b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
11258 +// Definitions for gpio-poweroff module
11262 +// This overlay sets up an input device that generates KEY_POWER events
11263 +// when a given GPIO pin changes. It defaults to using GPIO3, which can
11264 +// also be used to wake up (start) the Rpi again after shutdown.
11265 +// Raspberry Pi 1 Model B rev 1 can be wake up only by GPIO1 pin, so for
11266 +// these boards change default GPIO pin to 1 via gpio_pin parameter. Since
11267 +// wakeup is active-low, this defaults to active-low with a pullup
11268 +// enabled, but all of this can be changed using overlay parameters (but
11269 +// note that GPIO3 has an external pullup on at least some boards).
11272 + compatible = "brcm,bcm2835";
11275 + // Configure the gpio pin controller
11276 + target = <&gpio>;
11278 + // Define a pinctrl state, that sets up the gpio
11279 + // as an input with a pullup enabled. This does
11280 + // not take effect by itself, only when referenced
11281 + // by a "pinctrl client", as is done below. See:
11282 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
11283 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt
11284 + pin_state: shutdown_button_pins {
11285 + brcm,pins = <3>; // gpio number
11286 + brcm,function = <0>; // 0 = input, 1 = output
11287 + brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
11292 + // Add a new device to the /soc devicetree node
11293 + target-path = "/soc";
11295 + shutdown_button {
11296 + // Let the gpio-keys driver handle this device. See:
11297 + // https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.txt
11298 + compatible = "gpio-keys";
11300 + // Declare a single pinctrl state (referencing the one declared above) and name it
11301 + // default, so it is activated automatically.
11302 + pinctrl-names = "default";
11303 + pinctrl-0 = <&pin_state>;
11305 + // Enable this device
11308 + // Define a single key, called "shutdown" that monitors the gpio and sends KEY_POWER
11309 + // (keycode 116, see
11310 + // https://github.com/torvalds/linux/blob/v4.12/include/uapi/linux/input-event-codes.h#L190)
11311 + button: shutdown {
11312 + label = "shutdown";
11313 + linux,code = <116>; // KEY_POWER
11314 + gpios = <&gpio 3 1>;
11315 + debounce-interval = <100>; // ms
11321 + // This defines parameters that can be specified when loading
11322 + // the overlay. Each foo = line specifies one parameter, named
11323 + // foo. The rest of the specification gives properties where the
11324 + // parameter value is inserted into (changing the values above
11325 + // or adding new ones).
11327 + // Allow overriding the GPIO number.
11328 + gpio_pin = <&button>,"gpios:4",
11329 + <&pin_state>,"brcm,pins:0";
11331 + // Allow changing the internal pullup/down state. 0 = none, 1 = pulldown, 2 = pullup
11332 + // Note that GPIO3 and GPIO2 are the I2c pins and have an external pullup (at least
11333 + // on some boards). Same applies for GPIO1 on Raspberry Pi 1 Model B rev 1.
11334 + gpio_pull = <&pin_state>,"brcm,pull:0";
11336 + // Allow setting the active_low flag. 0 = active high, 1 = active low
11337 + active_low = <&button>,"gpios:8";
11338 + debounce = <&button>,"debounce-interval:0";
11342 diff --git a/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
11343 new file mode 100644
11344 index 000000000000..ee726669ff51
11346 +++ b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
11352 + compatible = "brcm,bcm2835";
11355 + target-path = "/";
11357 + lcd_screen: auxdisplay {
11358 + compatible = "hit,hd44780";
11360 + data-gpios = <&gpio 6 0>,
11364 + enable-gpios = <&gpio 21 0>;
11365 + rs-gpios = <&gpio 20 0>;
11367 + display-height-chars = <2>;
11368 + display-width-chars = <16>;
11375 + target = <&lcd_screen>;
11377 + backlight-gpios = <&gpio 12 0>;
11382 + pin_d4 = <&lcd_screen>,"data-gpios:4";
11383 + pin_d5 = <&lcd_screen>,"data-gpios:16";
11384 + pin_d6 = <&lcd_screen>,"data-gpios:28";
11385 + pin_d7 = <&lcd_screen>,"data-gpios:40";
11386 + pin_en = <&lcd_screen>,"enable-gpios:4";
11387 + pin_rs = <&lcd_screen>,"rs-gpios:4";
11388 + pin_bl = <0>,"+1", <&lcd_screen>,"backlight-gpios:4";
11389 + display_height = <&lcd_screen>,"display-height-chars:0";
11390 + display_width = <&lcd_screen>,"display-width-chars:0";
11394 diff --git a/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
11395 new file mode 100644
11396 index 000000000000..50b9a2665c80
11398 +++ b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
11401 + * Devicetree overlay for GPIO based backlight on/off capability.
11403 + * Use this if you have one of those HDMI displays whose backlight cannot be
11404 + * controlled via DPMS over HDMI and plan to do a little soldering to use an
11405 + * RPi gpio pin for on/off switching.
11407 + * See: https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)#Backlight_Control
11414 + compatible = "brcm,bcm2835";
11417 + target = <&gpio>;
11419 + hdmi_backlight_hwhack_gpio_pins: hdmi_backlight_hwhack_gpio_pins {
11420 + brcm,pins = <17>;
11421 + brcm,function = <1>; /* out */
11427 + target-path = "/";
11429 + hdmi_backlight_hwhack_gpio: hdmi_backlight_hwhack_gpio {
11430 + compatible = "gpio-backlight";
11432 + pinctrl-names = "default";
11433 + pinctrl-0 = <&hdmi_backlight_hwhack_gpio_pins>;
11435 + gpios = <&gpio 17 0>;
11442 + gpio_pin = <&hdmi_backlight_hwhack_gpio>,"gpios:4",
11443 + <&hdmi_backlight_hwhack_gpio_pins>,"brcm,pins:0";
11444 + active_low = <&hdmi_backlight_hwhack_gpio>,"gpios:8";
11447 diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
11448 new file mode 100644
11449 index 000000000000..142518ab348b
11451 +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
11453 +// Definitions for HiFiBerry Amp/Amp+
11458 + compatible = "brcm,bcm2835";
11468 + target = <&i2c1>;
11470 + #address-cells = <1>;
11471 + #size-cells = <0>;
11475 + #sound-dai-cells = <0>;
11476 + compatible = "ti,tas5713";
11484 + target = <&sound>;
11486 + compatible = "hifiberry,hifiberry-amp";
11487 + i2s-controller = <&i2s>;
11492 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
11493 new file mode 100644
11494 index 000000000000..ea8a6c8f36c0
11496 +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
11498 +// Definitions for HiFiBerry DAC
11503 + compatible = "brcm,bcm2835";
11513 + target-path = "/";
11516 + #sound-dai-cells = <0>;
11517 + compatible = "ti,pcm5102a";
11524 + target = <&sound>;
11526 + compatible = "hifiberry,hifiberry-dac";
11527 + i2s-controller = <&i2s>;
11532 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
11533 new file mode 100644
11534 index 000000000000..ff19015ba656
11536 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
11538 +// Definitions for HiFiBerry DAC+
11543 + compatible = "brcm,bcm2835";
11546 + target-path = "/";
11548 + dacpro_osc: dacpro_osc {
11549 + compatible = "hifiberry,dacpro-clk";
11550 + #clock-cells = <0>;
11563 + target = <&i2c1>;
11565 + #address-cells = <1>;
11566 + #size-cells = <0>;
11570 + #sound-dai-cells = <0>;
11571 + compatible = "ti,pcm5122";
11573 + clocks = <&dacpro_osc>;
11574 + AVDD-supply = <&vdd_3v3_reg>;
11575 + DVDD-supply = <&vdd_3v3_reg>;
11576 + CPVDD-supply = <&vdd_3v3_reg>;
11579 + hpamp: hpamp@60 {
11580 + compatible = "ti,tpa6130a2";
11582 + status = "disabled";
11588 + target = <&sound>;
11589 + hifiberry_dacplus: __overlay__ {
11590 + compatible = "hifiberry,hifiberry-dacplus";
11591 + i2s-controller = <&i2s>;
11597 + 24db_digital_gain =
11598 + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
11599 + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
11600 + leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
11603 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
11604 new file mode 100644
11605 index 000000000000..540563dec10f
11607 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
11609 +// Definitions for HiFiBerry DAC+ADC
11614 + compatible = "brcm,bcm2835";
11617 + target-path = "/";
11619 + dacpro_osc: dacpro_osc {
11620 + compatible = "hifiberry,dacpro-clk";
11621 + #clock-cells = <0>;
11634 + target = <&i2c1>;
11636 + #address-cells = <1>;
11637 + #size-cells = <0>;
11640 + pcm_codec: pcm5122@4d {
11641 + #sound-dai-cells = <0>;
11642 + compatible = "ti,pcm5122";
11644 + clocks = <&dacpro_osc>;
11645 + AVDD-supply = <&vdd_3v3_reg>;
11646 + DVDD-supply = <&vdd_3v3_reg>;
11647 + CPVDD-supply = <&vdd_3v3_reg>;
11654 + target-path = "/";
11657 + #sound-dai-cells = <0>;
11658 + compatible = "dmic-codec";
11659 + num-channels = <2>;
11666 + target = <&sound>;
11667 + hifiberry_dacplusadc: __overlay__ {
11668 + compatible = "hifiberry,hifiberry-dacplusadc";
11669 + i2s-controller = <&i2s>;
11675 + 24db_digital_gain =
11676 + <&hifiberry_dacplusadc>,"hifiberry,24db_digital_gain?";
11677 + slave = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,slave?";
11678 + leds_off = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,leds_off?";
11681 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
11682 new file mode 100644
11683 index 000000000000..cafa2ccd7ff7
11685 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
11687 +// Definitions for HiFiBerry DAC+ADC PRO
11692 + compatible = "brcm,bcm2835";
11695 + target-path = "/";
11697 + dacpro_osc: dacpro_osc {
11698 + compatible = "hifiberry,dacpro-clk";
11699 + #clock-cells = <0>;
11712 + target = <&i2c1>;
11714 + #address-cells = <1>;
11715 + #size-cells = <0>;
11718 + hb_dac: pcm5122@4d {
11719 + #sound-dai-cells = <0>;
11720 + compatible = "ti,pcm5122";
11722 + clocks = <&dacpro_osc>;
11725 + hb_adc: pcm186x@4a {
11726 + #sound-dai-cells = <0>;
11727 + compatible = "ti,pcm1863";
11729 + clocks = <&dacpro_osc>;
11736 + target = <&sound>;
11737 + hifiberry_dacplusadcpro: __overlay__ {
11738 + compatible = "hifiberry,hifiberry-dacplusadcpro";
11739 + audio-codec = <&hb_dac &hb_adc>;
11740 + i2s-controller = <&i2s>;
11746 + 24db_digital_gain =
11747 + <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,24db_digital_gain?";
11748 + slave = <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,slave?";
11749 + leds_off = <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,leds_off?";
11752 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
11753 new file mode 100644
11754 index 000000000000..63432e8b983f
11756 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
11758 +// Definitions for hifiberry DAC+DSP soundcard overlay
11763 + compatible = "brcm,bcm2835";
11773 + target-path = "/";
11775 + dacplusdsp-codec {
11776 + #sound-dai-cells = <0>;
11777 + compatible = "hifiberry,dacplusdsp";
11784 + target = <&sound>;
11786 + compatible = "hifiberrydacplusdsp,hifiberrydacplusdsp-soundcard";
11787 + i2s-controller = <&i2s>;
11792 diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
11793 new file mode 100644
11794 index 000000000000..c5583e010339
11796 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
11798 +// Definitions for HiFiBerry DAC+ HD
11802 +#include <dt-bindings/gpio/gpio.h>
11805 + compatible = "brcm,bcm2835";
11808 + target-path = "/";
11810 + dachd_osc: pll_dachd_osc {
11811 + compatible = "hifiberry,dachd-clk";
11812 + #clock-cells = <0>;
11825 + target = <&i2c1>;
11827 + #address-cells = <1>;
11828 + #size-cells = <0>;
11832 + compatible = "ti,pcm1792a";
11833 + #sound-dai-cells = <0>;
11834 + #clock-cells = <0>;
11835 + clocks = <&dachd_osc>;
11840 + compatible = "hifiberry,dachd-clk";
11841 + #clock-cells = <0>;
11843 + clocks = <&dachd_osc>;
11845 + common_pll_regs = [
11846 + 02 53 03 00 07 20 0F 00
11847 + 10 0D 11 1D 12 0D 13 8C
11848 + 14 8C 15 8C 16 8C 17 8C
11849 + 18 2A 1C 00 1D 0F 1F 00
11850 + 2A 00 2C 00 2F 00 30 00
11851 + 31 00 32 00 34 00 37 00
11852 + 38 00 39 00 3A 00 3B 01
11853 + 3E 00 3F 00 40 00 41 00
11854 + 5A 00 5B 00 95 00 96 00
11855 + 97 00 98 00 99 00 9A 00
11856 + 9B 00 A2 00 A3 00 A4 00
11858 + 192k_pll_regs = [
11859 + 1A 0C 1B 35 1E F0 20 09
11860 + 21 50 2B 02 2D 10 2E 40
11861 + 33 01 35 22 36 80 3C 22
11864 + 1A 0C 1B 35 1E F0 20 09
11865 + 21 50 2B 02 2D 10 2E 40
11866 + 33 01 35 47 36 00 3C 32
11869 + 1A 0C 1B 35 1E F0 20 09
11870 + 21 50 2B 02 2D 10 2E 40
11871 + 33 01 35 90 36 00 3C 42
11873 + 176k4_pll_regs = [
11874 + 1A 3D 1B 09 1E F3 20 13
11875 + 21 75 2B 04 2D 11 2E E0
11876 + 33 02 35 25 36 C0 3C 22
11878 + 88k2_pll_regs = [
11879 + 1A 3D 1B 09 1E F3 20 13
11880 + 21 75 2B 04 2D 11 2E E0
11881 + 33 01 35 4D 36 80 3C 32
11883 + 44k1_pll_regs = [
11884 + 1A 3D 1B 09 1E F3 20 13
11885 + 21 75 2B 04 2D 11 2E E0
11886 + 33 01 35 9D 36 00 3C 42
11893 + target = <&sound>;
11895 + compatible = "hifiberry,hifiberry-dacplushd";
11896 + i2s-controller = <&i2s>;
11897 + clocks = <&pll 0>;
11898 + reset-gpio = <&gpio 16 GPIO_ACTIVE_LOW>;
11904 diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
11905 new file mode 100644
11906 index 000000000000..a2309a50e8d8
11908 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
11910 +// Definitions for HiFiBerry Digi
11915 + compatible = "brcm,bcm2835";
11925 + target = <&i2c1>;
11927 + #address-cells = <1>;
11928 + #size-cells = <0>;
11932 + #sound-dai-cells = <0>;
11933 + compatible = "wlf,wm8804";
11935 + PVDD-supply = <&vdd_3v3_reg>;
11936 + DVDD-supply = <&vdd_3v3_reg>;
11943 + target = <&sound>;
11945 + compatible = "hifiberry,hifiberry-digi";
11946 + i2s-controller = <&i2s>;
11951 diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
11952 new file mode 100644
11953 index 000000000000..83de602e76ba
11955 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
11957 +// Definitions for HiFiBerry Digi Pro
11962 + compatible = "brcm,bcm2835";
11972 + target = <&i2c1>;
11974 + #address-cells = <1>;
11975 + #size-cells = <0>;
11979 + #sound-dai-cells = <0>;
11980 + compatible = "wlf,wm8804";
11982 + PVDD-supply = <&vdd_3v3_reg>;
11983 + DVDD-supply = <&vdd_3v3_reg>;
11990 + target = <&sound>;
11992 + compatible = "hifiberry,hifiberry-digi";
11993 + i2s-controller = <&i2s>;
11995 + clock44-gpio = <&gpio 5 0>;
11996 + clock48-gpio = <&gpio 6 0>;
12000 diff --git a/arch/arm/boot/dts/overlays/highperi-overlay.dts b/arch/arm/boot/dts/overlays/highperi-overlay.dts
12001 new file mode 100644
12002 index 000000000000..46cb76c2d34f
12004 +++ b/arch/arm/boot/dts/overlays/highperi-overlay.dts
12014 + compatible = "brcm,bcm2711";
12018 + #address-cells = <2>;
12019 + #size-cells = <1>;
12022 + #address-cells = <1>;
12023 + #size-cells = <1>;
12024 + ranges = <0x7c000000 0x4 0x7c000000 0x04000000>,
12025 + <0x40000000 0x4 0xc0000000 0x00800000>;
12031 + #address-cells = <2>;
12032 + #size-cells = <1>;
12035 + #address-cells = <2>;
12036 + #size-cells = <2>;
12037 + ranges = <0x0 0x7c000000 0x4 0x7c000000 0x0 0x04000000>,
12038 + <0x0 0x40000000 0x4 0xc0000000 0x0 0x00800000>,
12039 + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>;
12040 + dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x2 0x00000000>;
12045 + target = <&v3dbus>;
12046 + #address-cells = <2>;
12047 + #size-cells = <1>;
12050 + #address-cells = <1>;
12051 + #size-cells = <2>;
12052 + ranges = <0x7c500000 0x4 0x7c500000 0x0 0x03300000>,
12053 + <0x40000000 0x4 0xc0000000 0x0 0x00800000>;
12058 + target = <&emmc2bus>;
12059 + #address-cells = <2>;
12060 + #size-cells = <1>;
12063 + #address-cells = <2>;
12064 + #size-cells = <1>;
12065 + ranges = <0x0 0x7e000000 0x4 0x7e000000 0x01800000>;
12069 diff --git a/arch/arm/boot/dts/overlays/hy28a-overlay.dts b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
12070 new file mode 100644
12071 index 000000000000..5843a5e9c86a
12073 +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
12076 + * Device Tree overlay for HY28A display
12084 + compatible = "brcm,bcm2835";
12087 + target = <&spi0>;
12094 + target = <&spidev0>;
12096 + status = "disabled";
12101 + target = <&spidev1>;
12103 + status = "disabled";
12108 + target = <&gpio>;
12110 + hy28a_pins: hy28a_pins {
12111 + brcm,pins = <17 25 18>;
12112 + brcm,function = <0 1 1>; /* in out out */
12118 + target = <&spi0>;
12120 + /* needed to avoid dtc warning */
12121 + #address-cells = <1>;
12122 + #size-cells = <0>;
12125 + compatible = "ilitek,ili9320";
12127 + pinctrl-names = "default";
12128 + pinctrl-0 = <&hy28a_pins>;
12130 + spi-max-frequency = <32000000>;
12137 + startbyte = <0x70>;
12138 + reset-gpios = <&gpio 25 1>;
12139 + led-gpios = <&gpio 18 1>;
12143 + hy28a_ts: hy28a-ts@1 {
12144 + compatible = "ti,ads7846";
12147 + spi-max-frequency = <2000000>;
12148 + interrupts = <17 2>; /* high-to-low edge triggered */
12149 + interrupt-parent = <&gpio>;
12150 + pendown-gpio = <&gpio 17 0>;
12151 + ti,x-plate-ohms = /bits/ 16 <100>;
12152 + ti,pressure-max = /bits/ 16 <255>;
12157 + speed = <&hy28a>,"spi-max-frequency:0";
12158 + rotate = <&hy28a>,"rotate:0";
12159 + fps = <&hy28a>,"fps:0";
12160 + debug = <&hy28a>,"debug:0";
12161 + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
12162 + resetgpio = <&hy28a>,"reset-gpios:4",
12163 + <&hy28a_pins>, "brcm,pins:4";
12164 + ledgpio = <&hy28a>,"led-gpios:4",
12165 + <&hy28a_pins>, "brcm,pins:8";
12168 diff --git a/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
12169 new file mode 100644
12170 index 000000000000..95bfb1eadc20
12172 +++ b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
12175 + * Device Tree overlay for HY28b display shield by Texy.
12176 + * Modified for 2017 version with ILI9325 D chip
12183 + compatible = "brcm,bcm2835";
12186 + target = <&spi0>;
12193 + target = <&spidev0>;
12195 + status = "disabled";
12200 + target = <&spidev1>;
12202 + status = "disabled";
12207 + target = <&gpio>;
12209 + hy28b_pins: hy28b_pins {
12210 + brcm,pins = <17 25 18>;
12211 + brcm,function = <0 1 1>; /* in out out */
12217 + target = <&spi0>;
12219 + /* needed to avoid dtc warning */
12220 + #address-cells = <1>;
12221 + #size-cells = <0>;
12224 + compatible = "ilitek,ili9325";
12226 + pinctrl-names = "default";
12227 + pinctrl-0 = <&hy28b_pins>;
12229 + spi-max-frequency = <48000000>;
12236 + startbyte = <0x70>;
12237 + reset-gpios = <&gpio 25 1>;
12238 + led-gpios = <&gpio 18 1>;
12240 + init = <0x10000e5 0x78F0
12297 + 0x1000007 0x0133>;
12301 + hy28b_ts: hy28b-ts@1 {
12302 + compatible = "ti,ads7846";
12305 + spi-max-frequency = <2000000>;
12306 + interrupts = <17 2>; /* high-to-low edge triggered */
12307 + interrupt-parent = <&gpio>;
12308 + pendown-gpio = <&gpio 17 0>;
12309 + ti,x-plate-ohms = /bits/ 16 <100>;
12310 + ti,pressure-max = /bits/ 16 <255>;
12315 + speed = <&hy28b>,"spi-max-frequency:0";
12316 + rotate = <&hy28b>,"rotate:0";
12317 + fps = <&hy28b>,"fps:0";
12318 + debug = <&hy28b>,"debug:0";
12319 + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
12320 + resetgpio = <&hy28b>,"reset-gpios:4",
12321 + <&hy28b_pins>, "brcm,pins:4";
12322 + ledgpio = <&hy28b>,"led-gpios:4",
12323 + <&hy28b_pins>, "brcm,pins:8";
12326 diff --git a/arch/arm/boot/dts/overlays/hy28b-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
12327 new file mode 100644
12328 index 000000000000..9edd0848d555
12330 +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
12333 + * Device Tree overlay for HY28b display shield by Texy
12341 + compatible = "brcm,bcm2835";
12344 + target = <&spi0>;
12351 + target = <&spidev0>;
12353 + status = "disabled";
12358 + target = <&spidev1>;
12360 + status = "disabled";
12365 + target = <&gpio>;
12367 + hy28b_pins: hy28b_pins {
12368 + brcm,pins = <17 25 18>;
12369 + brcm,function = <0 1 1>; /* in out out */
12375 + target = <&spi0>;
12377 + /* needed to avoid dtc warning */
12378 + #address-cells = <1>;
12379 + #size-cells = <0>;
12382 + compatible = "ilitek,ili9325";
12384 + pinctrl-names = "default";
12385 + pinctrl-0 = <&hy28b_pins>;
12387 + spi-max-frequency = <48000000>;
12394 + startbyte = <0x70>;
12395 + reset-gpios = <&gpio 25 1>;
12396 + led-gpios = <&gpio 18 1>;
12398 + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
12400 + init = <0x10000e7 0x0010
12455 + hy28b_ts: hy28b-ts@1 {
12456 + compatible = "ti,ads7846";
12459 + spi-max-frequency = <2000000>;
12460 + interrupts = <17 2>; /* high-to-low edge triggered */
12461 + interrupt-parent = <&gpio>;
12462 + pendown-gpio = <&gpio 17 0>;
12463 + ti,x-plate-ohms = /bits/ 16 <100>;
12464 + ti,pressure-max = /bits/ 16 <255>;
12469 + speed = <&hy28b>,"spi-max-frequency:0";
12470 + rotate = <&hy28b>,"rotate:0";
12471 + fps = <&hy28b>,"fps:0";
12472 + debug = <&hy28b>,"debug:0";
12473 + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
12474 + resetgpio = <&hy28b>,"reset-gpios:4",
12475 + <&hy28b_pins>, "brcm,pins:4";
12476 + ledgpio = <&hy28b>,"led-gpios:4",
12477 + <&hy28b_pins>, "brcm,pins:8";
12480 diff --git a/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
12481 new file mode 100644
12482 index 000000000000..0c4cff354674
12484 +++ b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
12486 +// Definitions for I-Sabre Q2M
12491 + compatible = "brcm,bcm2835";
12494 + target = <&sound>;
12495 + frag0: __overlay__ {
12496 + compatible = "audiophonics,i-sabre-q2m";
12497 + i2s-controller = <&i2s>;
12510 + target = <&i2c1>;
12512 + #address-cells = <1>;
12513 + #size-cells = <0>;
12516 + i-sabre-codec@48 {
12517 + #sound-dai-cells = <0>;
12518 + compatible = "audiophonics,i-sabre-codec";
12525 diff --git a/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
12526 new file mode 100644
12527 index 000000000000..8204b6b3aef8
12529 +++ b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
12535 + compatible = "brcm,bcm2835";
12538 + target = <&i2c_arm>;
12540 + compatible = "brcm,bcm2708-i2c";
12544 diff --git a/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
12545 new file mode 100644
12546 index 000000000000..63231b5d7c0c
12548 +++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
12550 +// Overlay for i2c_gpio bitbanging host bus.
12554 +#include <dt-bindings/gpio/gpio.h>
12557 + compatible = "brcm,bcm2835";
12560 + target-path = "/";
12563 + i2c_gpio: i2c@0 {
12564 + reg = <0xffffffff>;
12565 + compatible = "i2c-gpio";
12566 + gpios = <&gpio 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
12567 + &gpio 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
12569 + i2c-gpio,delay-us = <2>; /* ~100 kHz */
12570 + #address-cells = <1>;
12571 + #size-cells = <0>;
12577 + target-path = "/aliases";
12579 + i2c_gpio = "/i2c@0";
12584 + target-path = "/__symbols__";
12586 + i2c_gpio = "/i2c@0";
12591 + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
12592 + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
12593 + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
12594 + bus = <&i2c_gpio>, "reg:0";
12597 diff --git a/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
12598 new file mode 100644
12599 index 000000000000..112aed91ecb2
12601 +++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
12603 +// Umbrella I2C Mux overlay
12609 + compatible = "brcm,bcm2835";
12612 + target = <&i2c_arm>;
12614 + #address-cells = <1>;
12615 + #size-cells = <0>;
12618 + pca9542: mux@70 {
12619 + compatible = "nxp,pca9542";
12621 + #address-cells = <1>;
12622 + #size-cells = <0>;
12625 + #address-cells = <1>;
12626 + #size-cells = <0>;
12630 + #address-cells = <1>;
12631 + #size-cells = <0>;
12639 + target = <&i2c_arm>;
12641 + #address-cells = <1>;
12642 + #size-cells = <0>;
12645 + pca9545: mux@70 {
12646 + compatible = "nxp,pca9545";
12648 + #address-cells = <1>;
12649 + #size-cells = <0>;
12652 + #address-cells = <1>;
12653 + #size-cells = <0>;
12657 + #address-cells = <1>;
12658 + #size-cells = <0>;
12662 + #address-cells = <1>;
12663 + #size-cells = <0>;
12667 + #address-cells = <1>;
12668 + #size-cells = <0>;
12676 + target = <&i2c_arm>;
12678 + #address-cells = <1>;
12679 + #size-cells = <0>;
12682 + pca9548: mux@70 {
12683 + compatible = "nxp,pca9548";
12685 + #address-cells = <1>;
12686 + #size-cells = <0>;
12689 + #address-cells = <1>;
12690 + #size-cells = <0>;
12694 + #address-cells = <1>;
12695 + #size-cells = <0>;
12699 + #address-cells = <1>;
12700 + #size-cells = <0>;
12704 + #address-cells = <1>;
12705 + #size-cells = <0>;
12709 + #address-cells = <1>;
12710 + #size-cells = <0>;
12714 + #address-cells = <1>;
12715 + #size-cells = <0>;
12719 + #address-cells = <1>;
12720 + #size-cells = <0>;
12724 + #address-cells = <1>;
12725 + #size-cells = <0>;
12733 + pca9542 = <0>, "+0";
12734 + pca9545 = <0>, "+1";
12735 + pca9548 = <0>, "+2";
12737 + addr = <&pca9542>,"reg:0",
12738 + <&pca9545>,"reg:0",
12739 + <&pca9548>,"reg:0";
12742 diff --git a/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
12743 new file mode 100644
12744 index 000000000000..9bb16465a50e
12746 +++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
12748 +// Definitions for NXP PCA9685A I2C PWM controller on ARM I2C bus.
12753 + compatible = "brcm,bcm2835";
12756 + target = <&i2c_arm>;
12758 + #address-cells = <1>;
12759 + #size-cells = <0>;
12763 + compatible = "nxp,pca9685-pwm";
12764 + #pwm-cells = <2>;
12771 + addr = <&pca>,"reg:0";
12774 diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
12775 new file mode 100644
12776 index 000000000000..227e3c0fa1cd
12778 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
12780 +// Definitions for several I2C based Real Time Clocks
12781 +// Available through i2c-gpio
12785 +#include <dt-bindings/gpio/gpio.h>
12788 + compatible = "brcm,bcm2835";
12791 + target-path = "/";
12793 + i2c_gpio: i2c-gpio-rtc@0 {
12794 + compatible = "i2c-gpio";
12795 + gpios = <&gpio 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
12796 + &gpio 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
12798 + i2c-gpio,delay-us = <2>; /* ~100 kHz */
12799 + #address-cells = <1>;
12800 + #size-cells = <0>;
12806 + target = <&i2c_gpio>;
12808 + #address-cells = <1>;
12809 + #size-cells = <0>;
12812 + abx80x: abx80x@69 {
12813 + compatible = "abracon,abx80x";
12815 + abracon,tc-diode = "standard";
12816 + abracon,tc-resistor = <0>;
12823 + target = <&i2c_gpio>;
12825 + #address-cells = <1>;
12826 + #size-cells = <0>;
12829 + ds1307: ds1307@68 {
12830 + compatible = "dallas,ds1307";
12838 + target = <&i2c_gpio>;
12840 + #address-cells = <1>;
12841 + #size-cells = <0>;
12844 + ds1339: ds1339@68 {
12845 + compatible = "dallas,ds1339";
12846 + trickle-resistor-ohms = <0>;
12854 + target = <&i2c_gpio>;
12856 + #address-cells = <1>;
12857 + #size-cells = <0>;
12860 + ds3231: ds3231@68 {
12861 + compatible = "maxim,ds3231";
12869 + target = <&i2c_gpio>;
12871 + #address-cells = <1>;
12872 + #size-cells = <0>;
12875 + mcp7940x: mcp7940x@6f {
12876 + compatible = "microchip,mcp7940x";
12884 + target = <&i2c_gpio>;
12886 + #address-cells = <1>;
12887 + #size-cells = <0>;
12890 + mcp7941x: mcp7941x@6f {
12891 + compatible = "microchip,mcp7941x";
12899 + target = <&i2c_gpio>;
12901 + #address-cells = <1>;
12902 + #size-cells = <0>;
12906 + compatible = "nxp,pcf2127";
12914 + target = <&i2c_gpio>;
12916 + #address-cells = <1>;
12917 + #size-cells = <0>;
12920 + pcf8523: pcf8523@68 {
12921 + compatible = "nxp,pcf8523";
12929 + target = <&i2c_gpio>;
12931 + #address-cells = <1>;
12932 + #size-cells = <0>;
12935 + pcf8563: pcf8563@51 {
12936 + compatible = "nxp,pcf8563";
12944 + target = <&i2c_arm>;
12946 + #address-cells = <1>;
12947 + #size-cells = <0>;
12950 + m41t62: m41t62@68 {
12951 + compatible = "st,m41t62";
12959 + target = <&i2c_gpio>;
12961 + #address-cells = <1>;
12962 + #size-cells = <0>;
12965 + rv3028: rv3028@52 {
12966 + compatible = "microcrystal,rv3028";
12974 + target = <&i2c_gpio>;
12976 + #address-cells = <1>;
12977 + #size-cells = <0>;
12981 + compatible = "nxp,pcf2129";
12989 + target = <&i2c_gpio>;
12991 + #address-cells = <1>;
12992 + #size-cells = <0>;
12995 + rv1805: rv1805@69 {
12996 + compatible = "microcrystal,rv1805";
12998 + abracon,tc-diode = "standard";
12999 + abracon,tc-resistor = <0>;
13006 + abx80x = <0>,"+1";
13007 + ds1307 = <0>,"+2";
13008 + ds1339 = <0>,"+3";
13009 + ds3231 = <0>,"+4";
13010 + mcp7940x = <0>,"+5";
13011 + mcp7941x = <0>,"+6";
13012 + pcf2127 = <0>,"+7";
13013 + pcf8523 = <0>,"+8";
13014 + pcf8563 = <0>,"+9";
13015 + m41t62 = <0>,"+10";
13016 + rv3028 = <0>,"+11";
13017 + pcf2129 = <0>,"+12";
13018 + rv1805 = <0>,"+13";
13020 + addr = <&abx80x>, "reg:0",
13021 + <&ds1307>, "reg:0",
13022 + <&ds1339>, "reg:0",
13023 + <&ds3231>, "reg:0",
13024 + <&mcp7940x>, "reg:0",
13025 + <&mcp7941x>, "reg:0",
13026 + <&pcf8523>, "reg:0",
13027 + <&pcf8563>, "reg:0",
13028 + <&m41t62>, "reg:0",
13029 + <&rv1805>, "reg:0";
13030 + trickle-diode-type = <&abx80x>,"abracon,tc-diode",
13031 + <&rv1805>,"abracon,tc-diode";
13032 + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
13033 + <&abx80x>,"abracon,tc-resistor:0",
13034 + <&rv3028>,"trickle-resistor-ohms:0",
13035 + <&rv1805>,"abracon,tc-resistor:0";
13036 + backup-switchover-mode = <&rv3028>,"backup-switchover-mode:0";
13037 + wakeup-source = <&ds1339>,"wakeup-source?",
13038 + <&ds3231>,"wakeup-source?",
13039 + <&mcp7940x>,"wakeup-source?",
13040 + <&mcp7941x>,"wakeup-source?";
13041 + i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
13042 + i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
13043 + i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
13046 diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
13047 new file mode 100644
13048 index 000000000000..735ca303e4fa
13050 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
13052 +// Definitions for several I2C based Real Time Clocks
13057 + compatible = "brcm,bcm2835";
13060 + target = <&i2c_arm>;
13062 + #address-cells = <1>;
13063 + #size-cells = <0>;
13066 + abx80x: abx80x@69 {
13067 + compatible = "abracon,abx80x";
13069 + abracon,tc-diode = "standard";
13070 + abracon,tc-resistor = <0>;
13077 + target = <&i2c_arm>;
13079 + #address-cells = <1>;
13080 + #size-cells = <0>;
13083 + ds1307: ds1307@68 {
13084 + compatible = "dallas,ds1307";
13092 + target = <&i2c_arm>;
13094 + #address-cells = <1>;
13095 + #size-cells = <0>;
13098 + ds1339: ds1339@68 {
13099 + compatible = "dallas,ds1339";
13100 + trickle-resistor-ohms = <0>;
13108 + target = <&i2c_arm>;
13110 + #address-cells = <1>;
13111 + #size-cells = <0>;
13114 + ds3231: ds3231@68 {
13115 + compatible = "maxim,ds3231";
13123 + target = <&i2c_arm>;
13125 + #address-cells = <1>;
13126 + #size-cells = <0>;
13129 + mcp7940x: mcp7940x@6f {
13130 + compatible = "microchip,mcp7940x";
13138 + target = <&i2c_arm>;
13140 + #address-cells = <1>;
13141 + #size-cells = <0>;
13144 + mcp7941x: mcp7941x@6f {
13145 + compatible = "microchip,mcp7941x";
13153 + target = <&i2c_arm>;
13155 + #address-cells = <1>;
13156 + #size-cells = <0>;
13160 + compatible = "nxp,pcf2127";
13168 + target = <&i2c_arm>;
13170 + #address-cells = <1>;
13171 + #size-cells = <0>;
13174 + pcf8523: pcf8523@68 {
13175 + compatible = "nxp,pcf8523";
13183 + target = <&i2c_arm>;
13185 + #address-cells = <1>;
13186 + #size-cells = <0>;
13189 + pcf8563: pcf8563@51 {
13190 + compatible = "nxp,pcf8563";
13198 + target = <&i2c_arm>;
13200 + #address-cells = <1>;
13201 + #size-cells = <0>;
13204 + m41t62: m41t62@68 {
13205 + compatible = "st,m41t62";
13213 + target = <&i2c_arm>;
13215 + #address-cells = <1>;
13216 + #size-cells = <0>;
13219 + rv3028: rv3028@52 {
13220 + compatible = "microcrystal,rv3028";
13228 + target = <&i2c_arm>;
13230 + #address-cells = <1>;
13231 + #size-cells = <0>;
13235 + compatible = "nxp,pcf2129";
13243 + target = <&i2c_arm>;
13245 + #address-cells = <1>;
13246 + #size-cells = <0>;
13250 + compatible = "nxp,pcf85363";
13258 + target = <&i2c_arm>;
13260 + #address-cells = <1>;
13261 + #size-cells = <0>;
13264 + rv1805: rv1805@69 {
13265 + compatible = "microcrystal,rv1805";
13267 + abracon,tc-diode = "standard";
13268 + abracon,tc-resistor = <0>;
13275 + target = <&i2c_arm>;
13277 + #address-cells = <1>;
13278 + #size-cells = <0>;
13281 + sd3078: sd3078@32 {
13282 + compatible = "whwave,sd3078";
13290 + abx80x = <0>,"+0";
13291 + ds1307 = <0>,"+1";
13292 + ds1339 = <0>,"+2";
13293 + ds3231 = <0>,"+3";
13294 + mcp7940x = <0>,"+4";
13295 + mcp7941x = <0>,"+5";
13296 + pcf2127 = <0>,"+6";
13297 + pcf8523 = <0>,"+7";
13298 + pcf8563 = <0>,"+8";
13299 + m41t62 = <0>,"+9";
13300 + rv3028 = <0>,"+10";
13301 + pcf2129 = <0>,"+11";
13302 + pcf85363 = <0>,"+12";
13303 + rv1805 = <0>,"+13";
13304 + sd3078 = <0>,"+14";
13306 + addr = <&abx80x>, "reg:0",
13307 + <&ds1307>, "reg:0",
13308 + <&ds1339>, "reg:0",
13309 + <&ds3231>, "reg:0",
13310 + <&mcp7940x>, "reg:0",
13311 + <&mcp7941x>, "reg:0",
13312 + <&pcf8523>, "reg:0",
13313 + <&pcf8563>, "reg:0",
13314 + <&m41t62>, "reg:0",
13315 + <&rv1805>, "reg:0";
13316 + trickle-diode-type = <&abx80x>,"abracon,tc-diode",
13317 + <&rv1805>,"abracon,tc-diode";
13318 + trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
13319 + <&abx80x>,"abracon,tc-resistor:0",
13320 + <&rv3028>,"trickle-resistor-ohms:0",
13321 + <&rv1805>,"abracon,tc-resistor:0";
13322 + backup-switchover-mode = <&rv3028>,"backup-switchover-mode:0";
13323 + wakeup-source = <&ds1339>,"wakeup-source?",
13324 + <&ds3231>,"wakeup-source?",
13325 + <&mcp7940x>,"wakeup-source?",
13326 + <&mcp7941x>,"wakeup-source?",
13327 + <&m41t62>,"wakeup-source?";
13330 diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
13331 new file mode 100644
13332 index 000000000000..ce97837b0db5
13334 +++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
13336 +// Definitions for I2C based sensors using the Industrial IO or HWMON interface.
13341 + compatible = "brcm,bcm2835";
13344 + target = <&i2c_arm>;
13346 + #address-cells = <1>;
13347 + #size-cells = <0>;
13350 + bme280: bme280@76 {
13351 + compatible = "bosch,bme280";
13359 + target = <&i2c_arm>;
13361 + #address-cells = <1>;
13362 + #size-cells = <0>;
13365 + bmp085: bmp085@77 {
13366 + compatible = "bosch,bmp085";
13368 + default-oversampling = <3>;
13375 + target = <&i2c_arm>;
13377 + #address-cells = <1>;
13378 + #size-cells = <0>;
13381 + bmp180: bmp180@77 {
13382 + compatible = "bosch,bmp180";
13390 + target = <&i2c_arm>;
13392 + #address-cells = <1>;
13393 + #size-cells = <0>;
13396 + bmp280: bmp280@76 {
13397 + compatible = "bosch,bmp280";
13405 + target = <&i2c_arm>;
13407 + #address-cells = <1>;
13408 + #size-cells = <0>;
13411 + htu21: htu21@40 {
13412 + compatible = "htu21";
13420 + target = <&i2c_arm>;
13422 + #address-cells = <1>;
13423 + #size-cells = <0>;
13427 + compatible = "lm75";
13435 + target = <&i2c_arm>;
13437 + #address-cells = <1>;
13438 + #size-cells = <0>;
13441 + si7020: si7020@40 {
13442 + compatible = "si7020";
13450 + target = <&i2c_arm>;
13452 + #address-cells = <1>;
13453 + #size-cells = <0>;
13456 + tmp102: tmp102@48 {
13457 + compatible = "ti,tmp102";
13465 + target = <&i2c_arm>;
13467 + #address-cells = <1>;
13468 + #size-cells = <0>;
13471 + hdc100x: hdc100x@40 {
13472 + compatible = "hdc100x";
13480 + target = <&i2c_arm>;
13482 + #address-cells = <1>;
13483 + #size-cells = <0>;
13486 + tsl4531: tsl4531@29 {
13487 + compatible = "tsl4531";
13495 + target = <&i2c_arm>;
13497 + #address-cells = <1>;
13498 + #size-cells = <0>;
13501 + veml6070: veml6070@38 {
13502 + compatible = "veml6070";
13510 + target = <&i2c_arm>;
13512 + #address-cells = <1>;
13513 + #size-cells = <0>;
13516 + sht3x: sht3x@44 {
13517 + compatible = "sht3x";
13525 + target = <&i2c_arm>;
13527 + #address-cells = <1>;
13528 + #size-cells = <0>;
13531 + ds1621: ds1621@48 {
13532 + compatible = "ds1621";
13540 + target = <&i2c_arm>;
13542 + #address-cells = <1>;
13543 + #size-cells = <0>;
13546 + max17040: max17040@36 {
13547 + compatible = "maxim,max17040";
13555 + target = <&i2c_arm>;
13557 + #address-cells = <1>;
13558 + #size-cells = <0>;
13561 + bme680: bme680@76 {
13562 + compatible = "bosch,bme680";
13570 + target = <&i2c_arm>;
13572 + #address-cells = <1>;
13573 + #size-cells = <0>;
13576 + sps30: sps30@69 {
13577 + compatible = "sensirion,sps30";
13585 + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0",
13586 + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0",
13587 + <&ds1621>,"reg:0", <&bme680>,"reg:0";
13588 + bme280 = <0>,"+0";
13589 + bmp085 = <0>,"+1";
13590 + bmp180 = <0>,"+2";
13591 + bmp280 = <0>,"+3";
13592 + htu21 = <0>,"+4";
13594 + lm75addr = <&lm75>,"reg:0";
13595 + si7020 = <0>,"+6";
13596 + tmp102 = <0>,"+7";
13597 + hdc100x = <0>,"+8";
13598 + tsl4531 = <0>,"+9";
13599 + veml6070 = <0>,"+10";
13600 + sht3x = <0>,"+11";
13601 + ds1621 = <0>,"+12";
13602 + max17040 = <0>,"+13";
13603 + bme680 = <0>,"+14";
13604 + sps30 = <0>,"+15";
13607 diff --git a/arch/arm/boot/dts/overlays/i2c0-overlay.dts b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
13608 new file mode 100644
13609 index 000000000000..7c6771f84d8e
13611 +++ b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
13617 + compatible = "brcm,bcm2835";
13620 + target = <&i2c0if>;
13623 + pinctrl-0 = <&i2c0_pins>;
13628 + target = <&i2c0_pins>;
13629 + pins1: __overlay__ {
13630 + brcm,pins = <0 1>;
13631 + brcm,function = <4>; /* alt0 */
13636 + target = <&i2c0_pins>;
13637 + pins2: __dormant__ {
13638 + brcm,pins = <28 29>;
13639 + brcm,function = <4>; /* alt0 */
13644 + target = <&i2c0_pins>;
13645 + pins3: __dormant__ {
13646 + brcm,pins = <44 45>;
13647 + brcm,function = <5>; /* alt1 */
13652 + target = <&i2c0_pins>;
13653 + pins4: __dormant__ {
13654 + brcm,pins = <46 47>;
13655 + brcm,function = <4>; /* alt0 */
13660 + target = <&i2c0>;
13662 + compatible = "brcm,bcm2708-i2c";
13667 + target = <&i2c0mux>;
13669 + status = "disabled";
13674 + target-path = "/aliases";
13676 + i2c0 = "/soc/i2c@7e205000";
13680 + pins_0_1 = <0>,"+1-2-3-4";
13681 + pins_28_29 = <0>,"-1+2-3-4";
13682 + pins_44_45 = <0>,"-1-2+3-4";
13683 + pins_46_47 = <0>,"-1-2-3+4";
13684 + combine = <0>, "!5";
13687 diff --git a/arch/arm/boot/dts/overlays/i2c1-overlay.dts b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
13688 new file mode 100644
13689 index 000000000000..addaed73e665
13691 +++ b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
13697 + compatible = "brcm,bcm2835";
13700 + target = <&i2c1>;
13703 + pinctrl-names = "default";
13704 + pinctrl-0 = <&i2c1_pins>;
13709 + target = <&i2c1_pins>;
13710 + pins1: __overlay__ {
13711 + brcm,pins = <2 3>;
13712 + brcm,function = <4>; /* alt 0 */
13717 + target = <&i2c1_pins>;
13718 + pins2: __dormant__ {
13719 + brcm,pins = <44 45>;
13720 + brcm,function = <6>; /* alt 2 */
13725 + target = <&i2c1>;
13727 + compatible = "brcm,bcm2708-i2c";
13732 + pins_2_3 = <0>,"=1!2";
13733 + pins_44_45 = <0>,"!1=2";
13734 + combine = <0>, "!3";
13737 diff --git a/arch/arm/boot/dts/overlays/i2c3-overlay.dts b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
13738 new file mode 100644
13739 index 000000000000..e24a1df21f99
13741 +++ b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
13747 + compatible = "brcm,bcm2711";
13750 + target = <&i2c3>;
13751 + frag0: __overlay__ {
13753 + pinctrl-names = "default";
13754 + pinctrl-0 = <&i2c3_pins>;
13755 + clock-frequency = <100000>;
13760 + target = <&i2c3_pins>;
13762 + brcm,pins = <2 3>;
13767 + target = <&i2c3_pins>;
13769 + brcm,pins = <4 5>;
13774 + pins_2_3 = <0>,"=1!2";
13775 + pins_4_5 = <0>,"!1=2";
13776 + baudrate = <&frag0>, "clock-frequency:0";
13779 diff --git a/arch/arm/boot/dts/overlays/i2c4-overlay.dts b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
13780 new file mode 100644
13781 index 000000000000..14c7f4d1da4c
13783 +++ b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
13789 + compatible = "brcm,bcm2711";
13792 + target = <&i2c4>;
13793 + frag0: __overlay__ {
13795 + pinctrl-names = "default";
13796 + pinctrl-0 = <&i2c4_pins>;
13797 + clock-frequency = <100000>;
13802 + target = <&i2c4_pins>;
13804 + brcm,pins = <6 7>;
13809 + target = <&i2c4_pins>;
13811 + brcm,pins = <8 9>;
13816 + pins_6_7 = <0>,"=1!2";
13817 + pins_8_9 = <0>,"!1=2";
13818 + baudrate = <&frag0>, "clock-frequency:0";
13821 diff --git a/arch/arm/boot/dts/overlays/i2c5-overlay.dts b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
13822 new file mode 100644
13823 index 000000000000..7953621112de
13825 +++ b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
13831 + compatible = "brcm,bcm2711";
13834 + target = <&i2c5>;
13835 + frag0: __overlay__ {
13837 + pinctrl-names = "default";
13838 + pinctrl-0 = <&i2c5_pins>;
13839 + clock-frequency = <100000>;
13844 + target = <&i2c5_pins>;
13846 + brcm,pins = <10 11>;
13851 + target = <&i2c5_pins>;
13853 + brcm,pins = <12 13>;
13858 + pins_10_11 = <0>,"=1!2";
13859 + pins_12_13 = <0>,"!1=2";
13860 + baudrate = <&frag0>, "clock-frequency:0";
13863 diff --git a/arch/arm/boot/dts/overlays/i2c6-overlay.dts b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
13864 new file mode 100644
13865 index 000000000000..555305a7ee1f
13867 +++ b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
13873 + compatible = "brcm,bcm2711";
13876 + target = <&i2c6>;
13877 + frag0: __overlay__ {
13879 + pinctrl-names = "default";
13880 + pinctrl-0 = <&i2c6_pins>;
13881 + clock-frequency = <100000>;
13886 + target = <&i2c6_pins>;
13888 + brcm,pins = <0 1>;
13893 + target = <&i2c6_pins>;
13895 + brcm,pins = <22 23>;
13900 + pins_0_1 = <0>,"=1!2";
13901 + pins_22_23 = <0>,"!1=2";
13902 + baudrate = <&frag0>, "clock-frequency:0";
13905 diff --git a/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
13906 new file mode 100644
13907 index 000000000000..cf43094c6ff4
13909 +++ b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
13912 + * Device tree overlay to move i2s to gpio 28 to 31 on CM
13919 + compatible = "brcm,bcm2835";
13922 + target = <&i2s_pins>;
13924 + brcm,pins = <28 29 30 31>;
13925 + brcm,function = <6>; /* alt2 */
13929 diff --git a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
13930 new file mode 100644
13931 index 000000000000..551aba591d26
13933 +++ b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
13935 +// Device tree overlay for I2C connected Ilitek multiple touch controller
13940 + compatible = "brcm,bcm2835";
13943 + target = <&gpio>;
13945 + ili251x_pins: ili251x_pins {
13946 + brcm,pins = <4>; // interrupt
13947 + brcm,function = <0>; // in
13948 + brcm,pull = <2>; // pull-up //
13954 + target = <&i2c1>;
13956 + #address-cells = <1>;
13957 + #size-cells = <0>;
13960 + ili251x: ili251x@41 {
13961 + compatible = "ilitek,ili251x";
13963 + pinctrl-names = "default";
13964 + pinctrl-0 = <&ili251x_pins>;
13965 + interrupt-parent = <&gpio>;
13966 + interrupts = <4 8>; // high-to-low edge triggered
13967 + touchscreen-size-x = <16384>;
13968 + touchscreen-size-y = <9600>;
13974 + interrupt = <&ili251x_pins>,"brcm,pins:0",
13975 + <&ili251x>,"interrupts:0";
13976 + sizex = <&ili251x>,"touchscreen-size-x:0";
13977 + sizey = <&ili251x>,"touchscreen-size-y:0";
13980 diff --git a/arch/arm/boot/dts/overlays/imx219-overlay.dts b/arch/arm/boot/dts/overlays/imx219-overlay.dts
13981 new file mode 100644
13982 index 000000000000..3484bde5a9e8
13984 +++ b/arch/arm/boot/dts/overlays/imx219-overlay.dts
13986 +// SPDX-License-Identifier: GPL-2.0-only
13987 +// Definitions for IMX219 camera module on VC I2C bus
13991 +#include <dt-bindings/gpio/gpio.h>
13994 + compatible = "brcm,bcm2835";
13997 + target = <&i2c_csi_dsi>;
13999 + #address-cells = <1>;
14000 + #size-cells = <0>;
14003 + imx219: imx219@10 {
14004 + compatible = "sony,imx219";
14008 + clocks = <&imx219_clk>;
14009 + clock-names = "xclk";
14011 + VANA-supply = <&imx219_vana>; /* 2.8v */
14012 + VDIG-supply = <&imx219_vdig>; /* 1.8v */
14013 + VDDL-supply = <&imx219_vddl>; /* 1.2v */
14015 + rotation = <180>;
14018 + imx219_0: endpoint {
14019 + remote-endpoint = <&csi1_ep>;
14020 + clock-lanes = <0>;
14021 + data-lanes = <1 2>;
14022 + clock-noncontinuous;
14023 + link-frequencies =
14024 + /bits/ 64 <297000000>;
14032 + target = <&csi1>;
14037 + csi1_ep: endpoint {
14038 + remote-endpoint = <&imx219_0>;
14039 + clock-lanes = <0>;
14040 + data-lanes = <1 2>;
14041 + clock-noncontinuous;
14048 + target = <&i2c0if>;
14057 + imx219_vana: fixedregulator@0 {
14058 + compatible = "regulator-fixed";
14059 + regulator-name = "imx219_vana";
14060 + regulator-min-microvolt = <2800000>;
14061 + regulator-max-microvolt = <2800000>;
14062 + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
14063 + enable-active-high;
14065 + imx219_vdig: fixedregulator@1 {
14066 + compatible = "regulator-fixed";
14067 + regulator-name = "imx219_vdig";
14068 + regulator-min-microvolt = <1800000>;
14069 + regulator-max-microvolt = <1800000>;
14071 + imx219_vddl: fixedregulator@2 {
14072 + compatible = "regulator-fixed";
14073 + regulator-name = "imx219_vddl";
14074 + regulator-min-microvolt = <1200000>;
14075 + regulator-max-microvolt = <1200000>;
14078 + imx219_clk: camera-clk {
14079 + compatible = "fixed-clock";
14080 + #clock-cells = <0>;
14081 + clock-frequency = <24000000>;
14087 + target = <&i2c0mux>;
14094 + target-path="/__overrides__";
14096 + cam0-pwdn-ctrl = <&imx219_vana>,"gpio:0";
14097 + cam0-pwdn = <&imx219_vana>,"gpio:4";
14102 + rotation = <&imx219>,"rotation:0";
14105 diff --git a/arch/arm/boot/dts/overlays/imx290-overlay.dts b/arch/arm/boot/dts/overlays/imx290-overlay.dts
14106 new file mode 100644
14107 index 000000000000..e536aa7f9e33
14109 +++ b/arch/arm/boot/dts/overlays/imx290-overlay.dts
14111 +// SPDX-License-Identifier: GPL-2.0-only
14112 +// Definitions for IMX290 camera module on VC I2C bus
14116 +#include <dt-bindings/gpio/gpio.h>
14117 +#include "imx290_327-overlay.dtsi"
14120 + compatible = "brcm,bcm2835";
14122 + // Fragment numbers deliberately high to avoid conflicts with the
14123 + // included imx290_327 overlay file.
14126 + target = <&imx290>;
14128 + compatible = "sony,imx290";
14133 + target = <&imx290>;
14135 + compatible = "sony,imx290-mono";
14140 + mono = <0>, "-101+102";
14143 diff --git a/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
14144 new file mode 100644
14145 index 000000000000..8f1dadb13f6a
14147 +++ b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
14149 +// SPDX-License-Identifier: GPL-2.0-only
14150 +// Partial definitions for IMX290 or IMX327 camera module on VC I2C bus
14151 +// The compatible string should be set in an overlay that then includes this one
14155 +#include <dt-bindings/gpio/gpio.h>
14158 + compatible = "brcm,bcm2835";
14161 + target = <&i2c_csi_dsi>;
14163 + #address-cells = <1>;
14164 + #size-cells = <0>;
14167 + imx290: imx290@1a {
14171 + clocks = <&imx290_clk>;
14172 + clock-names = "xclk";
14173 + clock-frequency = <37125000>;
14175 + vdda-supply = <&imx290_vdda>; /* 2.8v */
14176 + vdddo-supply = <&imx290_vdddo>; /* 1.8v */
14177 + vddd-supply = <&imx290_vddd>; /* 1.5v */
14180 + imx290_0: endpoint {
14181 + remote-endpoint = <&csi1_ep>;
14182 + clock-lanes = <0>;
14190 + target = <&csi1>;
14195 + csi1_ep: endpoint {
14196 + remote-endpoint = <&imx290_0>;
14203 + target = <&i2c0if>;
14212 + imx290_vdda: fixedregulator@0 {
14213 + compatible = "regulator-fixed";
14214 + regulator-name = "imx290_vdda";
14215 + regulator-min-microvolt = <2800000>;
14216 + regulator-max-microvolt = <2800000>;
14217 + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
14218 + enable-active-high;
14220 + imx290_vdddo: fixedregulator@1 {
14221 + compatible = "regulator-fixed";
14222 + regulator-name = "imx290_vdddo";
14223 + regulator-min-microvolt = <1800000>;
14224 + regulator-max-microvolt = <1800000>;
14226 + imx290_vddd: fixedregulator@2 {
14227 + compatible = "regulator-fixed";
14228 + regulator-name = "imx290_vddd";
14229 + regulator-min-microvolt = <1500000>;
14230 + regulator-max-microvolt = <1500000>;
14233 + imx290_clk: camera-clk {
14234 + compatible = "fixed-clock";
14235 + #clock-cells = <0>;
14236 + clock-frequency = <37125000>;
14242 + target = <&i2c0mux>;
14249 + target-path="/__overrides__";
14251 + cam0-pwdn-ctrl = <&imx290_vdda>,"gpio:0";
14252 + cam0-pwdn = <&imx290_vdda>,"gpio:4";
14257 + target = <&imx290_0>;
14259 + data-lanes = <1 2>;
14260 + link-frequencies =
14261 + /bits/ 64 <445500000 297000000>;
14266 + target = <&imx290_0>;
14268 + data-lanes = <1 2 3 4>;
14269 + link-frequencies =
14270 + /bits/ 64 <222750000 148500000>;
14275 + target = <&csi1_ep>;
14277 + data-lanes = <1 2>;
14282 + target = <&csi1_ep>;
14284 + data-lanes = <1 2 3 4>;
14289 + 4lane = <0>, "-6+7-8+9";
14290 + clock-frequency = <&imx290_clk>,"clock-frequency:0",
14291 + <&imx290>,"clock-frequency:0";
14294 diff --git a/arch/arm/boot/dts/overlays/imx477-overlay.dts b/arch/arm/boot/dts/overlays/imx477-overlay.dts
14295 new file mode 100644
14296 index 000000000000..1a97eaaf4c82
14298 +++ b/arch/arm/boot/dts/overlays/imx477-overlay.dts
14300 +// SPDX-License-Identifier: GPL-2.0-only
14301 +// Definitions for IMX477 camera module on VC I2C bus
14305 +#include <dt-bindings/gpio/gpio.h>
14308 + compatible = "brcm,bcm2835";
14311 + target = <&i2c_csi_dsi>;
14313 + #address-cells = <1>;
14314 + #size-cells = <0>;
14317 + imx477: imx477@1a {
14318 + compatible = "sony,imx477";
14322 + clocks = <&imx477_clk>;
14323 + clock-names = "xclk";
14325 + VANA-supply = <&imx477_vana>; /* 2.8v */
14326 + VDIG-supply = <&imx477_vdig>; /* 1.05v */
14327 + VDDL-supply = <&imx477_vddl>; /* 1.8v */
14329 + rotation = <180>;
14332 + imx477_0: endpoint {
14333 + remote-endpoint = <&csi1_ep>;
14334 + clock-lanes = <0>;
14335 + data-lanes = <1 2>;
14336 + clock-noncontinuous;
14337 + link-frequencies =
14338 + /bits/ 64 <450000000>;
14346 + target = <&csi1>;
14351 + csi1_ep: endpoint {
14352 + remote-endpoint = <&imx477_0>;
14353 + clock-lanes = <0>;
14354 + data-lanes = <1 2>;
14355 + clock-noncontinuous;
14362 + target = <&i2c0if>;
14371 + imx477_vana: fixedregulator@0 {
14372 + compatible = "regulator-fixed";
14373 + regulator-name = "imx477_vana";
14374 + regulator-min-microvolt = <2800000>;
14375 + regulator-max-microvolt = <2800000>;
14376 + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
14377 + enable-active-high;
14378 + startup-delay-us = <300000>;
14380 + imx477_vdig: fixedregulator@1 {
14381 + compatible = "regulator-fixed";
14382 + regulator-name = "imx477_vdig";
14383 + regulator-min-microvolt = <1050000>;
14384 + regulator-max-microvolt = <1050000>;
14386 + imx477_vddl: fixedregulator@2 {
14387 + compatible = "regulator-fixed";
14388 + regulator-name = "imx477_vddl";
14389 + regulator-min-microvolt = <1800000>;
14390 + regulator-max-microvolt = <1800000>;
14392 + imx477_clk: camera-clk {
14393 + compatible = "fixed-clock";
14394 + #clock-cells = <0>;
14395 + clock-frequency = <24000000>;
14401 + target = <&i2c0mux>;
14408 + target-path="/__overrides__";
14410 + cam0-pwdn-ctrl = <&imx477_vana>,"gpio:0";
14411 + cam0-pwdn = <&imx477_vana>,"gpio:4";
14416 + rotation = <&imx477>,"rotation:0";
14419 diff --git a/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
14420 new file mode 100644
14421 index 000000000000..9110f5d34298
14423 +++ b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
14425 +// Definitions for IQaudIO CODEC
14430 + compatible = "brcm,bcm2835";
14440 + target = <&i2c1>;
14442 + #address-cells = <1>;
14443 + #size-cells = <0>;
14447 + #sound-dai-cells = <0>;
14448 + compatible = "dlg,da7213";
14456 + target = <&sound>;
14457 + iqaudio_dac: __overlay__ {
14458 + compatible = "iqaudio,iqaudio-codec";
14459 + i2s-controller = <&i2s>;
14467 diff --git a/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
14468 new file mode 100644
14469 index 000000000000..24073cadd0ef
14471 +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
14473 +// Definitions for IQaudIO DAC
14478 + compatible = "brcm,bcm2835";
14488 + target = <&i2c1>;
14490 + #address-cells = <1>;
14491 + #size-cells = <0>;
14495 + #sound-dai-cells = <0>;
14496 + compatible = "ti,pcm5122";
14498 + AVDD-supply = <&vdd_3v3_reg>;
14499 + DVDD-supply = <&vdd_3v3_reg>;
14500 + CPVDD-supply = <&vdd_3v3_reg>;
14507 + target = <&sound>;
14508 + frag2: __overlay__ {
14509 + compatible = "iqaudio,iqaudio-dac";
14510 + i2s-controller = <&i2s>;
14516 + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
14519 diff --git a/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
14520 new file mode 100644
14521 index 000000000000..7c70b25e58d7
14523 +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
14525 +// Definitions for IQaudIO DAC+
14530 + compatible = "brcm,bcm2835";
14540 + target = <&i2c1>;
14542 + #address-cells = <1>;
14543 + #size-cells = <0>;
14547 + #sound-dai-cells = <0>;
14548 + compatible = "ti,pcm5122";
14550 + AVDD-supply = <&vdd_3v3_reg>;
14551 + DVDD-supply = <&vdd_3v3_reg>;
14552 + CPVDD-supply = <&vdd_3v3_reg>;
14559 + target = <&sound>;
14560 + iqaudio_dac: __overlay__ {
14561 + compatible = "iqaudio,iqaudio-dac";
14562 + i2s-controller = <&i2s>;
14563 + mute-gpios = <&gpio 22 0>;
14569 + 24db_digital_gain = <&iqaudio_dac>,"iqaudio,24db_digital_gain?";
14570 + auto_mute_amp = <&iqaudio_dac>,"iqaudio-dac,auto-mute-amp?";
14571 + unmute_amp = <&iqaudio_dac>,"iqaudio-dac,unmute-amp?";
14574 diff --git a/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
14575 new file mode 100644
14576 index 000000000000..ee54095c869b
14578 +++ b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
14580 +// Definitions for IQAudIO Digi WM8804 audio board
14585 + compatible = "brcm,bcm2835";
14595 + target = <&i2c1>;
14597 + #address-cells = <1>;
14598 + #size-cells = <0>;
14602 + #sound-dai-cells = <0>;
14603 + compatible = "wlf,wm8804";
14606 + DVDD-supply = <&vdd_3v3_reg>;
14607 + PVDD-supply = <&vdd_3v3_reg>;
14613 + target = <&sound>;
14614 + wm8804_digi: __overlay__ {
14615 + compatible = "iqaudio,wm8804-digi";
14616 + i2s-controller = <&i2s>;
14622 + card_name = <&wm8804_digi>,"wm8804-digi,card-name";
14623 + dai_name = <&wm8804_digi>,"wm8804-digi,dai-name";
14624 + dai_stream_name = <&wm8804_digi>,"wm8804-digi,dai-stream-name";
14627 diff --git a/arch/arm/boot/dts/overlays/irs1125-overlay.dts b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
14628 new file mode 100644
14629 index 000000000000..e926e18e71fc
14631 +++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
14633 +// SPDX-License-Identifier: GPL-2.0-only
14634 +// Definitions for IRS1125 camera module on VC I2C bus
14639 + compatible = "brcm,bcm2835";
14642 + target = <&i2c_csi_dsi>;
14644 + #address-cells = <1>;
14645 + #size-cells = <0>;
14648 + irs1125: irs1125@3D {
14649 + compatible = "infineon,irs1125";
14653 + pwdn-gpios = <&gpio 5 0>;
14654 + clocks = <&irs1125_clk>;
14657 + irs1125_0: endpoint {
14658 + remote-endpoint = <&csi1_ep>;
14659 + clock-lanes = <0>;
14660 + data-lanes = <1 2>;
14661 + clock-noncontinuous;
14662 + link-frequencies =
14663 + /bits/ 64 <297000000>;
14671 + target = <&csi1>;
14676 + csi1_ep: endpoint {
14677 + remote-endpoint = <&irs1125_0>;
14678 + data-lanes = <1 2>;
14679 + clock-noncontinuous;
14686 + target = <&i2c0if>;
14693 + target = <&i2c0mux>;
14700 + target-path="/__overrides__";
14702 + cam0-pwdn-ctrl = <&irs1125>,"pwdn-gpios:0";
14703 + cam0-pwdn = <&irs1125>,"pwdn-gpios:4";
14708 + target-path = "/";
14710 + irs1125_clk: camera-clk {
14711 + compatible = "fixed-clock";
14712 + #clock-cells = <0>;
14713 + clock-frequency = <26000000>;
14718 diff --git a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
14719 new file mode 100644
14720 index 000000000000..585c7dbcdf7f
14722 +++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
14724 +// Overlay for JEDEC SPI-NOR Flash Devices (aka m25p80)
14727 +// flash-spi<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
14728 +// flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
14730 +// 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.
14732 +// Example: A single flash device with fast read capability on SPI0, CS#0:
14733 +// dtoverlay=jedec-spi-nor:flash-fastr-spi0-0
14739 + compatible = "brcm,bcm2835";
14741 + // disable spi-dev on spi0.0
14743 + target = <&spidev0>;
14745 + status = "disabled";
14749 + // disable spi-dev on spi0.1
14751 + target = <&spidev1>;
14753 + status = "disabled";
14757 + // disable spi-dev on spi1.0
14759 + target-path = "spi1/spidev@0";
14761 + status = "disabled";
14765 + // disable spi-dev on spi1.1
14767 + target-path = "spi1/spidev@1";
14769 + status = "disabled";
14773 + // disable spi-dev on spi1.2
14775 + target-path = "spi1/spidev@2";
14777 + status = "disabled";
14781 + // disable spi-dev on spi2.0
14783 + target-path = "spi2/spidev@0";
14785 + status = "disabled";
14789 + // disable spi-dev on spi2.1
14791 + target-path = "spi2/spidev@1";
14793 + status = "disabled";
14797 + // disable spi-dev on spi2.2
14799 + target-path = "spi2/spidev@2";
14801 + status = "disabled";
14805 + // enable flash on spi0.0
14807 + target = <&spi0>;
14810 + #address-cells = <1>;
14811 + #size-cells = <0>;
14812 + spi_nor_00: spi_nor@0 {
14813 + #address-cells = <1>;
14814 + #size-cells = <1>;
14815 + compatible = "jedec,spi-nor";
14817 + spi-max-frequency = <500000>;
14822 + // enable flash on spi0.1
14824 + target = <&spi0>;
14827 + #address-cells = <1>;
14828 + #size-cells = <0>;
14829 + spi_nor_01: spi_nor@1 {
14830 + #address-cells = <1>;
14831 + #size-cells = <1>;
14832 + compatible = "jedec,spi-nor";
14834 + spi-max-frequency = <500000>;
14839 + // enable flash on spi1.0
14841 + target = <&spi1>;
14844 + #address-cells = <1>;
14845 + #size-cells = <0>;
14846 + spi_nor_10: spi_nor@0 {
14847 + #address-cells = <1>;
14848 + #size-cells = <1>;
14849 + compatible = "jedec,spi-nor";
14851 + spi-max-frequency = <500000>;
14856 + // enable flash on spi1.1
14858 + target = <&spi1>;
14861 + #address-cells = <1>;
14862 + #size-cells = <0>;
14863 + spi_nor_11: spi_nor@1 {
14864 + #address-cells = <1>;
14865 + #size-cells = <1>;
14866 + compatible = "jedec,spi-nor";
14868 + spi-max-frequency = <500000>;
14873 + // enable flash on spi1.2
14875 + target = <&spi1>;
14878 + #address-cells = <1>;
14879 + #size-cells = <0>;
14880 + spi_nor_12: spi_nor@2 {
14881 + #address-cells = <1>;
14882 + #size-cells = <1>;
14883 + compatible = "jedec,spi-nor";
14885 + spi-max-frequency = <500000>;
14890 + // enable flash on spi2.0
14892 + target = <&spi2>;
14895 + #address-cells = <1>;
14896 + #size-cells = <0>;
14897 + spi_nor_20: spi_nor@0 {
14898 + #address-cells = <1>;
14899 + #size-cells = <1>;
14900 + compatible = "jedec,spi-nor";
14902 + spi-max-frequency = <500000>;
14907 + // enable flash on spi2.1
14909 + target = <&spi2>;
14912 + #address-cells = <1>;
14913 + #size-cells = <0>;
14914 + spi_nor_21: spi_nor@1 {
14915 + #address-cells = <1>;
14916 + #size-cells = <1>;
14917 + compatible = "jedec,spi-nor";
14919 + spi-max-frequency = <500000>;
14924 + // enable flash on spi2.2
14926 + target = <&spi2>;
14929 + #address-cells = <1>;
14930 + #size-cells = <0>;
14931 + spi_nor_22: spi_nor@2 {
14932 + #address-cells = <1>;
14933 + #size-cells = <1>;
14934 + compatible = "jedec,spi-nor";
14936 + spi-max-frequency = <500000>;
14941 + // Enable fast read for device on spi0.0.
14942 + // Use default active low interrupt signalling.
14944 + target = <&spi_nor_00>;
14950 + // Enable fast read for device on spi0.1.
14951 + // Use default active low interrupt signalling.
14953 + target = <&spi_nor_01>;
14959 + // Enable fast read for device on spi1.0.
14960 + // Use default active low interrupt signalling.
14962 + target = <&spi_nor_10>;
14968 + // Enable fast read for device on spi1.1.
14969 + // Use default active low interrupt signalling.
14971 + target = <&spi_nor_11>;
14977 + // Enable fast read for device on spi1.2.
14978 + // Use default active low interrupt signalling.
14980 + target = <&spi_nor_12>;
14986 + // Enable fast read for device on spi2.0.
14987 + // Use default active low interrupt signalling.
14989 + target = <&spi_nor_20>;
14995 + // Enable fast read for device on spi2.1.
14996 + // Use default active low interrupt signalling.
14998 + target = <&spi_nor_21>;
15004 + // Enable fast read for device on spi2.2.
15005 + // Use default active low interrupt signalling.
15007 + target = <&spi_nor_22>;
15014 + flash-spi0-0 = <0>,"+0+8";
15015 + flash-spi0-1 = <0>,"+1+9";
15016 + flash-spi1-0 = <0>,"+2+10";
15017 + flash-spi1-1 = <0>,"+3+11";
15018 + flash-spi1-2 = <0>,"+4+12";
15019 + flash-spi2-0 = <0>,"+5+13";
15020 + flash-spi2-1 = <0>,"+6+14";
15021 + flash-spi2-2 = <0>,"+7+15";
15022 + flash-fastr-spi0-0 = <0>,"+0+8+16";
15023 + flash-fastr-spi0-1 = <0>,"+1+9+17";
15024 + flash-fastr-spi1-0 = <0>,"+2+10+18";
15025 + flash-fastr-spi1-1 = <0>,"+3+11+19";
15026 + flash-fastr-spi1-2 = <0>,"+4+12+20";
15027 + flash-fastr-spi2-0 = <0>,"+5+13+21";
15028 + flash-fastr-spi2-1 = <0>,"+6+14+22";
15029 + flash-fastr-spi2-2 = <0>,"+7+15+23";
15033 diff --git a/arch/arm/boot/dts/overlays/justboom-both-overlay.dts b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
15034 new file mode 100644
15035 index 000000000000..9c42670631c0
15037 +++ b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
15039 +// SPDX-License-Identifier: GPL-2.0
15040 +// Definitions for JustBoom Both (Digi+DAC)
15045 + compatible = "brcm,bcm2835";
15055 + target = <&i2c1>;
15057 + #address-cells = <1>;
15058 + #size-cells = <0>;
15062 + #sound-dai-cells = <0>;
15063 + compatible = "wlf,wm8804";
15065 + PVDD-supply = <&vdd_3v3_reg>;
15066 + DVDD-supply = <&vdd_3v3_reg>;
15073 + target = <&i2c1>;
15075 + #address-cells = <1>;
15076 + #size-cells = <0>;
15080 + #sound-dai-cells = <0>;
15081 + compatible = "ti,pcm5122";
15083 + AVDD-supply = <&vdd_3v3_reg>;
15084 + DVDD-supply = <&vdd_3v3_reg>;
15085 + CPVDD-supply = <&vdd_3v3_reg>;
15092 + target = <&sound>;
15093 + frag3: __overlay__ {
15094 + compatible = "justboom,justboom-both";
15095 + i2s-controller = <&i2s>;
15101 + 24db_digital_gain = <&frag3>,"justboom,24db_digital_gain?";
15104 diff --git a/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
15105 new file mode 100644
15106 index 000000000000..d00515dca419
15108 +++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
15110 +// Definitions for JustBoom DAC
15115 + compatible = "brcm,bcm2835";
15125 + target = <&i2c1>;
15127 + #address-cells = <1>;
15128 + #size-cells = <0>;
15132 + #sound-dai-cells = <0>;
15133 + compatible = "ti,pcm5122";
15135 + AVDD-supply = <&vdd_3v3_reg>;
15136 + DVDD-supply = <&vdd_3v3_reg>;
15137 + CPVDD-supply = <&vdd_3v3_reg>;
15144 + target = <&sound>;
15145 + frag2: __overlay__ {
15146 + compatible = "justboom,justboom-dac";
15147 + i2s-controller = <&i2s>;
15153 + 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
15156 diff --git a/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
15157 new file mode 100644
15158 index 000000000000..e73336029c54
15160 +++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
15162 +// Definitions for JustBoom Digi
15167 + compatible = "brcm,bcm2835";
15177 + target = <&i2c1>;
15179 + #address-cells = <1>;
15180 + #size-cells = <0>;
15184 + #sound-dai-cells = <0>;
15185 + compatible = "wlf,wm8804";
15187 + PVDD-supply = <&vdd_3v3_reg>;
15188 + DVDD-supply = <&vdd_3v3_reg>;
15195 + target = <&sound>;
15197 + compatible = "justboom,justboom-digi";
15198 + i2s-controller = <&i2s>;
15203 diff --git a/arch/arm/boot/dts/overlays/ltc294x-overlay.dts b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
15204 new file mode 100644
15205 index 000000000000..6d971f3649ca
15207 +++ b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
15214 + compatible = "brcm,bcm2835";
15217 + target = <&i2c_arm>;
15219 + #address-cells = <1>;
15220 + #size-cells = <0>;
15223 + ltc2941: ltc2941@64 {
15224 + compatible = "lltc,ltc2941";
15226 + lltc,resistor-sense = <50>;
15227 + lltc,prescaler-exponent = <7>;
15233 + target = <&i2c_arm>;
15235 + #address-cells = <1>;
15236 + #size-cells = <0>;
15239 + ltc2942: ltc2942@64 {
15240 + compatible = "lltc,ltc2942";
15242 + lltc,resistor-sense = <50>;
15243 + lltc,prescaler-exponent = <7>;
15249 + target = <&i2c_arm>;
15251 + #address-cells = <1>;
15252 + #size-cells = <0>;
15255 + ltc2943: ltc2943@64 {
15256 + compatible = "lltc,ltc2943";
15258 + lltc,resistor-sense = <50>;
15259 + lltc,prescaler-exponent = <7>;
15265 + target = <&i2c_arm>;
15267 + #address-cells = <1>;
15268 + #size-cells = <0>;
15271 + ltc2944: ltc2944@64 {
15272 + compatible = "lltc,ltc2944";
15274 + lltc,resistor-sense = <50>;
15275 + lltc,prescaler-exponent = <7>;
15281 + ltc2941 = <0>,"+0";
15282 + ltc2942 = <0>,"+1";
15283 + ltc2943 = <0>,"+2";
15284 + ltc2944 = <0>,"+3";
15285 + resistor-sense = <<c2941>, "lltc,resistor-sense:0",
15286 + <<c2942>, "lltc,resistor-sense:0",
15287 + <<c2943>, "lltc,resistor-sense:0",
15288 + <<c2944>, "lltc,resistor-sense:0";
15289 + prescaler-exponent = <<c2941>, "lltc,prescaler-exponent:0",
15290 + <<c2942>, "lltc,prescaler-exponent:0",
15291 + <<c2943>, "lltc,prescaler-exponent:0",
15292 + <<c2944>, "lltc,prescaler-exponent:0";
15295 diff --git a/arch/arm/boot/dts/overlays/max98357a-overlay.dts b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
15296 new file mode 100644
15297 index 000000000000..9e2afb05b7cb
15299 +++ b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
15301 +// Overlay for Maxim MAX98357A audio DAC
15304 +// no-sdmode - SD_MODE pin not managed by driver.
15305 +// sdmode-pin - Specify GPIO pin to which SD_MODE is connected (default 4).
15311 + compatible = "brcm,bcm2835";
15321 + /* DAC whose SD_MODE pin is managed by driver (via GPIO pin) */
15323 + target-path = "/";
15325 + max98357a_dac: max98357a {
15326 + compatible = "maxim,max98357a";
15327 + #sound-dai-cells = <0>;
15328 + sdmode-gpios = <&gpio 4 0>; /* 2nd word overwritten by sdmode-pin parameter */
15334 + /* DAC whose SD_MODE pin is not managed by driver */
15336 + target-path = "/";
15338 + max98357a_nsd: max98357a {
15339 + compatible = "maxim,max98357a";
15340 + #sound-dai-cells = <0>;
15346 + /* Soundcard connecting I2S to DAC with SD_MODE */
15348 + target = <&sound>;
15350 + compatible = "simple-audio-card";
15351 + simple-audio-card,format = "i2s";
15352 + simple-audio-card,name = "MAX98357A";
15354 + simple-audio-card,cpu {
15355 + sound-dai = <&i2s>;
15357 + simple-audio-card,codec {
15358 + sound-dai = <&max98357a_dac>;
15363 + /* Soundcard connecting I2S to DAC without SD_MODE */
15365 + target = <&sound>;
15367 + compatible = "simple-audio-card";
15368 + simple-audio-card,format = "i2s";
15369 + simple-audio-card,name = "MAX98357A";
15371 + simple-audio-card,cpu {
15372 + sound-dai = <&i2s>;
15374 + simple-audio-card,codec {
15375 + sound-dai = <&max98357a_nsd>;
15381 + no-sdmode = <0>,"-1+2-3+4";
15382 + sdmode-pin = <&max98357a_dac>,"sdmode-gpios:4";
15385 diff --git a/arch/arm/boot/dts/overlays/maxtherm-overlay.dts b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
15386 new file mode 100644
15387 index 000000000000..34d5727069ec
15389 +++ b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
15392 + * Universal device tree overlay for SPI devices
15399 + compatible = "brcm,bcm2835";
15402 + target = <&spidev0>;
15404 + status = "disabled";
15409 + target = <&spidev1>;
15411 + status = "disabled";
15416 + target-path = "spi1/spidev@0";
15418 + status = "disabled";
15423 + target-path = "spi1/spidev@1";
15425 + status = "disabled";
15430 + target-path = "spi1/spidev@2";
15432 + status = "disabled";
15437 + target-path = "spi2/spidev@0";
15439 + status = "disabled";
15444 + target-path = "spi2/spidev@1";
15446 + status = "disabled";
15451 + target-path = "spi2/spidev@2";
15453 + status = "disabled";
15457 + maxfrag: fragment@8 {
15458 + target = <&spi0>;
15461 + #address-cells = <1>;
15462 + #size-cells = <0>;
15464 + max: maxtherm@0 {
15465 + compatible = "maxim,max6675";
15467 + spi-max-frequency = <500000>;
15475 + compatible = "maxim,max31855e", "maxim,max31855";
15482 + compatible = "maxim,max31855j", "maxim,max31855";
15489 + compatible = "maxim,max31855k", "maxim,max31855";
15496 + compatible = "maxim,max31855n", "maxim,max31855";
15503 + compatible = "maxim,max31855r", "maxim,max31855";
15510 + compatible = "maxim,max31855s", "maxim,max31855";
15517 + compatible = "maxim,max31855t", "maxim,max31855";
15522 + spi0-0 = <0>, "+0",
15523 + <&maxfrag>,"target:0=",<&spi0>,
15524 + <&max>,"reg:0=0";
15525 + spi0-1 = <0>, "+1",
15526 + <&maxfrag>,"target:0=",<&spi0>,
15527 + <&max>,"reg:0=1";
15528 + spi1-0 = <0>, "+2",
15529 + <&maxfrag>,"target:0=",<&spi1>,
15530 + <&max>,"reg:0=0";
15531 + spi1-1 = <0>, "+3",
15532 + <&maxfrag>,"target:0=",<&spi1>,
15533 + <&max>,"reg:0=1";
15534 + spi1-2 = <0>, "+4",
15535 + <&maxfrag>,"target:0=",<&spi1>,
15536 + <&max>,"reg:0=2";
15537 + spi2-0 = <0>, "+5",
15538 + <&maxfrag>,"target:0=",<&spi2>,
15539 + <&max>,"reg:0=0";
15540 + spi2-1 = <0>, "+6",
15541 + <&maxfrag>,"target:0=",<&spi2>,
15542 + <&max>,"reg:0=1";
15543 + spi2-2 = <0>, "+7",
15544 + <&maxfrag>,"target:0=",<&spi2>,
15545 + <&max>,"reg:0=2";
15546 + max6675 = <&max>,"compatible=maxim,max6675";
15547 + max31855 = <&max>,"compatible=maxim,max31855";
15548 + max31855e = <0>,"+9";
15549 + max31855j = <0>,"+10";
15550 + max31855k = <0>,"+11";
15551 + max31855n = <0>,"+12";
15552 + max31855r = <0>,"+13";
15553 + max31855s = <0>,"+14";
15554 + max31855t = <0>,"+15";
15557 diff --git a/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
15558 new file mode 100644
15559 index 000000000000..840dd9b31db4
15561 +++ b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
15563 +// Definitions for mbed DAC
15568 + compatible = "brcm,bcm2835";
15578 + target = <&i2c1>;
15580 + #address-cells = <1>;
15581 + #size-cells = <0>;
15584 + tlv320aic23: codec@1a {
15585 + #sound-dai-cells = <0>;
15587 + compatible = "ti,tlv320aic23";
15594 + target = <&sound>;
15596 + compatible = "simple-audio-card";
15597 + i2s-controller = <&i2s>;
15600 + simple-audio-card,name = "mbed-DAC";
15602 + simple-audio-card,widgets =
15603 + "Microphone", "Mic Jack",
15604 + "Line", "Line In",
15605 + "Headphone", "Headphone Jack";
15607 + simple-audio-card,routing =
15608 + "Headphone Jack", "LHPOUT",
15609 + "Headphone Jack", "RHPOUT",
15610 + "LLINEIN", "Line In",
15611 + "RLINEIN", "Line In",
15612 + "MICIN", "Mic Jack";
15614 + simple-audio-card,format = "i2s";
15616 + simple-audio-card,cpu {
15617 + sound-dai = <&i2s>;
15620 + sound_master: simple-audio-card,codec {
15621 + sound-dai = <&tlv320aic23>;
15622 + system-clock-frequency = <12288000>;
15627 diff --git a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
15628 new file mode 100644
15629 index 000000000000..c546d8ba7e6d
15631 +++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
15633 +// Definitions for MCP23017 Gpio Extender from Microchip Semiconductor
15639 + compatible = "brcm,bcm2835";
15642 + target = <&i2c1>;
15649 + target = <&gpio>;
15651 + mcp23017_pins: mcp23017_pins@20 {
15653 + brcm,function = <0>;
15659 + target = <&i2c1>;
15661 + #address-cells = <1>;
15662 + #size-cells = <0>;
15664 + mcp23017: mcp@20 {
15665 + compatible = "microchip,mcp23017";
15668 + #gpio-cells = <2>;
15676 + target = <&mcp23017>;
15678 + compatible = "microchip,mcp23008";
15683 + target = <&mcp23017>;
15684 + mcp23017_irq: __overlay__ {
15685 + #interrupt-cells=<2>;
15686 + interrupt-parent = <&gpio>;
15687 + interrupts = <4 2>;
15688 + interrupt-controller;
15689 + microchip,irq-mirror;
15694 + gpiopin = <&mcp23017_pins>,"brcm,pins:0",
15695 + <&mcp23017_irq>,"interrupts:0";
15696 + addr = <&mcp23017>,"reg:0", <&mcp23017_pins>,"reg:0";
15697 + mcp23008 = <0>,"=3";
15698 + noints = <0>,"!1!4";
15702 diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
15703 new file mode 100644
15704 index 000000000000..484d64b225fb
15706 +++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
15708 +// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor
15711 +// s08-spi<n>-<m>-present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI<n>, CS#<m>.
15712 +// s17-spi<n>-<m>-present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI<n>, CS#<m>.
15713 +// 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.
15714 +// 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.
15716 +// 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.
15717 +// 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#.
15719 +// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25:
15720 +// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25
15722 +// 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:
15723 +// dtoverlay=spi1-2cs
15724 +// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131
15730 + compatible = "brcm,bcm2835";
15732 + // disable spi-dev on spi0.0
15734 + target = <&spidev0>;
15736 + status = "disabled";
15740 + // disable spi-dev on spi0.1
15742 + target = <&spidev1>;
15744 + status = "disabled";
15748 + // disable spi-dev on spi1.0
15750 + target-path = "spi1/spidev@0";
15752 + status = "disabled";
15756 + // disable spi-dev on spi1.1
15758 + target-path = "spi1/spidev@1";
15760 + status = "disabled";
15764 + // disable spi-dev on spi1.2
15766 + target-path = "spi1/spidev@2";
15768 + status = "disabled";
15772 + // disable spi-dev on spi2.0
15774 + target-path = "spi2/spidev@0";
15776 + status = "disabled";
15780 + // disable spi-dev on spi2.1
15782 + target-path = "spi2/spidev@1";
15784 + status = "disabled";
15788 + // disable spi-dev on spi2.2
15790 + target-path = "spi2/spidev@2";
15792 + status = "disabled";
15796 + // enable one or more mcp23s08s on spi0.0
15798 + target = <&spi0>;
15801 + #address-cells = <1>;
15802 + #size-cells = <0>;
15803 + mcp23s08_00: mcp23s08@0 {
15804 + compatible = "microchip,mcp23s08";
15806 + #gpio-cells = <2>;
15807 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */
15809 + spi-max-frequency = <500000>;
15811 + #interrupt-cells=<2>;
15812 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */
15817 + // enable one or more mcp23s08s on spi0.1
15819 + target = <&spi0>;
15822 + #address-cells = <1>;
15823 + #size-cells = <0>;
15824 + mcp23s08_01: mcp23s08@1 {
15825 + compatible = "microchip,mcp23s08";
15827 + #gpio-cells = <2>;
15828 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */
15830 + spi-max-frequency = <500000>;
15832 + #interrupt-cells=<2>;
15833 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */
15838 + // enable one or more mcp23s08s on spi1.0
15840 + target = <&spi1>;
15843 + #address-cells = <1>;
15844 + #size-cells = <0>;
15845 + mcp23s08_10: mcp23s08@0 {
15846 + compatible = "microchip,mcp23s08";
15848 + #gpio-cells = <2>;
15849 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */
15851 + spi-max-frequency = <500000>;
15853 + #interrupt-cells=<2>;
15854 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */
15859 + // enable one or more mcp23s08s on spi1.1
15861 + target = <&spi1>;
15864 + #address-cells = <1>;
15865 + #size-cells = <0>;
15866 + mcp23s08_11: mcp23s08@1 {
15867 + compatible = "microchip,mcp23s08";
15869 + #gpio-cells = <2>;
15870 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */
15872 + spi-max-frequency = <500000>;
15874 + #interrupt-cells=<2>;
15875 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */
15880 + // enable one or more mcp23s08s on spi1.2
15882 + target = <&spi1>;
15885 + #address-cells = <1>;
15886 + #size-cells = <0>;
15887 + mcp23s08_12: mcp23s08@2 {
15888 + compatible = "microchip,mcp23s08";
15890 + #gpio-cells = <2>;
15891 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */
15893 + spi-max-frequency = <500000>;
15895 + #interrupt-cells=<2>;
15896 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */
15901 + // enable one or more mcp23s08s on spi2.0
15903 + target = <&spi2>;
15906 + #address-cells = <1>;
15907 + #size-cells = <0>;
15908 + mcp23s08_20: mcp23s08@0 {
15909 + compatible = "microchip,mcp23s08";
15911 + #gpio-cells = <2>;
15912 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */
15914 + spi-max-frequency = <500000>;
15916 + #interrupt-cells=<2>;
15917 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */
15922 + // enable one or more mcp23s08s on spi2.1
15924 + target = <&spi2>;
15927 + #address-cells = <1>;
15928 + #size-cells = <0>;
15929 + mcp23s08_21: mcp23s08@1 {
15930 + compatible = "microchip,mcp23s08";
15932 + #gpio-cells = <2>;
15933 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */
15935 + spi-max-frequency = <500000>;
15937 + #interrupt-cells=<2>;
15938 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */
15943 + // enable one or more mcp23s08s on spi2.2
15945 + target = <&spi2>;
15948 + #address-cells = <1>;
15949 + #size-cells = <0>;
15950 + mcp23s08_22: mcp23s08@2 {
15951 + compatible = "microchip,mcp23s08";
15953 + #gpio-cells = <2>;
15954 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */
15956 + spi-max-frequency = <500000>;
15958 + #interrupt-cells=<2>;
15959 + interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */
15964 + // enable one or more mcp23s17s on spi0.0
15966 + target = <&spi0>;
15969 + #address-cells = <1>;
15970 + #size-cells = <0>;
15971 + mcp23s17_00: mcp23s17@0 {
15972 + compatible = "microchip,mcp23s17";
15974 + #gpio-cells = <2>;
15975 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */
15977 + spi-max-frequency = <500000>;
15979 + #interrupt-cells=<2>;
15980 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */
15985 + // enable one or more mcp23s17s on spi0.1
15987 + target = <&spi0>;
15990 + #address-cells = <1>;
15991 + #size-cells = <0>;
15992 + mcp23s17_01: mcp23s17@1 {
15993 + compatible = "microchip,mcp23s17";
15995 + #gpio-cells = <2>;
15996 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */
15998 + spi-max-frequency = <500000>;
16000 + #interrupt-cells=<2>;
16001 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */
16006 + // enable one or more mcp23s17s on spi1.0
16008 + target = <&spi1>;
16011 + #address-cells = <1>;
16012 + #size-cells = <0>;
16013 + mcp23s17_10: mcp23s17@0 {
16014 + compatible = "microchip,mcp23s17";
16016 + #gpio-cells = <2>;
16017 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */
16019 + spi-max-frequency = <500000>;
16021 + #interrupt-cells=<2>;
16022 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */
16027 + // enable one or more mcp23s17s on spi1.1
16029 + target = <&spi1>;
16032 + #address-cells = <1>;
16033 + #size-cells = <0>;
16034 + mcp23s17_11: mcp23s17@1 {
16035 + compatible = "microchip,mcp23s17";
16037 + #gpio-cells = <2>;
16038 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */
16040 + spi-max-frequency = <500000>;
16042 + #interrupt-cells=<2>;
16043 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */
16048 + // enable one or more mcp23s17s on spi1.2
16050 + target = <&spi1>;
16053 + #address-cells = <1>;
16054 + #size-cells = <0>;
16055 + mcp23s17_12: mcp23s17@2 {
16056 + compatible = "microchip,mcp23s17";
16058 + #gpio-cells = <2>;
16059 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */
16061 + spi-max-frequency = <500000>;
16063 + #interrupt-cells=<2>;
16064 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */
16069 + // enable one or more mcp23s17s on spi2.0
16071 + target = <&spi2>;
16074 + #address-cells = <1>;
16075 + #size-cells = <0>;
16076 + mcp23s17_20: mcp23s17@0 {
16077 + compatible = "microchip,mcp23s17";
16079 + #gpio-cells = <2>;
16080 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */
16082 + spi-max-frequency = <500000>;
16084 + #interrupt-cells=<2>;
16085 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */
16090 + // enable one or more mcp23s17s on spi2.1
16092 + target = <&spi2>;
16095 + #address-cells = <1>;
16096 + #size-cells = <0>;
16097 + mcp23s17_21: mcp23s17@1 {
16098 + compatible = "microchip,mcp23s17";
16100 + #gpio-cells = <2>;
16101 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */
16103 + spi-max-frequency = <500000>;
16105 + #interrupt-cells=<2>;
16106 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */
16111 + // enable one or more mcp23s17s on spi2.2
16113 + target = <&spi2>;
16116 + #address-cells = <1>;
16117 + #size-cells = <0>;
16118 + mcp23s17_22: mcp23s17@2 {
16119 + compatible = "microchip,mcp23s17";
16121 + #gpio-cells = <2>;
16122 + microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */
16124 + spi-max-frequency = <500000>;
16126 + #interrupt-cells=<2>;
16127 + interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */
16132 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down
16134 + target = <&gpio>;
16136 + spi0_0_int_pins: spi0_0_int_pins {
16137 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */
16138 + brcm,function = <0>;
16144 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down
16146 + target = <&gpio>;
16148 + spi0_1_int_pins: spi0_1_int_pins {
16149 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */
16150 + brcm,function = <0>;
16156 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down
16158 + target = <&gpio>;
16160 + spi1_0_int_pins: spi1_0_int_pins {
16161 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */
16162 + brcm,function = <0>;
16168 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down
16170 + target = <&gpio>;
16172 + spi1_1_int_pins: spi1_1_int_pins {
16173 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */
16174 + brcm,function = <0>;
16180 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down
16182 + target = <&gpio>;
16184 + spi1_2_int_pins: spi1_2_int_pins {
16185 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */
16186 + brcm,function = <0>;
16192 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down
16194 + target = <&gpio>;
16196 + spi2_0_int_pins: spi2_0_int_pins {
16197 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */
16198 + brcm,function = <0>;
16204 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down
16206 + target = <&gpio>;
16208 + spi2_1_int_pins: spi2_1_int_pins {
16209 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */
16210 + brcm,function = <0>;
16216 + // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down
16218 + target = <&gpio>;
16220 + spi2_2_int_pins: spi2_2_int_pins {
16221 + brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */
16222 + brcm,function = <0>;
16228 + // Enable interrupts for a mcp23s08 on spi0.0.
16229 + // Use default active low interrupt signalling.
16231 + target = <&mcp23s08_00>;
16233 + interrupt-parent = <&gpio>;
16234 + interrupt-controller;
16238 + // Enable interrupts for a mcp23s08 on spi0.1.
16239 + // Use default active low interrupt signalling.
16241 + target = <&mcp23s08_01>;
16243 + interrupt-parent = <&gpio>;
16244 + interrupt-controller;
16248 + // Enable interrupts for a mcp23s08 on spi1.0.
16249 + // Use default active low interrupt signalling.
16251 + target = <&mcp23s08_10>;
16253 + interrupt-parent = <&gpio>;
16254 + interrupt-controller;
16258 + // Enable interrupts for a mcp23s08 on spi1.1.
16259 + // Use default active low interrupt signalling.
16261 + target = <&mcp23s08_11>;
16263 + interrupt-parent = <&gpio>;
16264 + interrupt-controller;
16268 + // Enable interrupts for a mcp23s08 on spi1.2.
16269 + // Use default active low interrupt signalling.
16271 + target = <&mcp23s08_12>;
16273 + interrupt-parent = <&gpio>;
16274 + interrupt-controller;
16278 + // Enable interrupts for a mcp23s08 on spi2.0.
16279 + // Use default active low interrupt signalling.
16281 + target = <&mcp23s08_20>;
16283 + interrupt-parent = <&gpio>;
16284 + interrupt-controller;
16288 + // Enable interrupts for a mcp23s08 on spi2.1.
16289 + // Use default active low interrupt signalling.
16291 + target = <&mcp23s08_21>;
16293 + interrupt-parent = <&gpio>;
16294 + interrupt-controller;
16298 + // Enable interrupts for a mcp23s08 on spi2.2.
16299 + // Use default active low interrupt signalling.
16301 + target = <&mcp23s08_22>;
16303 + interrupt-parent = <&gpio>;
16304 + interrupt-controller;
16308 + // Enable interrupts for a mcp23s17 on spi0.0.
16309 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16310 + // Use default active low interrupt signalling.
16312 + target = <&mcp23s17_00>;
16314 + interrupt-parent = <&gpio>;
16315 + interrupt-controller;
16316 + microchip,irq-mirror;
16320 + // Enable interrupts for a mcp23s17 on spi0.1.
16321 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16322 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16324 + target = <&mcp23s17_01>;
16326 + interrupt-parent = <&gpio>;
16327 + interrupt-controller;
16328 + microchip,irq-mirror;
16332 + // Enable interrupts for a mcp23s17 on spi1.0.
16333 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16334 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16336 + target = <&mcp23s17_10>;
16338 + interrupt-parent = <&gpio>;
16339 + interrupt-controller;
16340 + microchip,irq-mirror;
16344 + // Enable interrupts for a mcp23s17 on spi1.1.
16345 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16346 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16348 + target = <&mcp23s17_11>;
16350 + interrupt-parent = <&gpio>;
16351 + interrupt-controller;
16352 + microchip,irq-mirror;
16356 + // Enable interrupts for a mcp23s17 on spi1.2.
16357 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16358 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16360 + target = <&mcp23s17_12>;
16362 + interrupt-parent = <&gpio>;
16363 + interrupt-controller;
16364 + microchip,irq-mirror;
16368 + // Enable interrupts for a mcp23s17 on spi2.0.
16369 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16370 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16372 + target = <&mcp23s17_20>;
16374 + interrupt-parent = <&gpio>;
16375 + interrupt-controller;
16376 + microchip,irq-mirror;
16380 + // Enable interrupts for a mcp23s17 on spi2.1.
16381 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16382 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16384 + target = <&mcp23s17_21>;
16386 + interrupt-parent = <&gpio>;
16387 + interrupt-controller;
16388 + microchip,irq-mirror;
16392 + // Enable interrupts for a mcp23s17 on spi2.2.
16393 + // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
16394 + // Configure INTA/B outputs of mcp23s08/17 as active low.
16396 + target = <&mcp23s17_22>;
16398 + interrupt-parent = <&gpio>;
16399 + interrupt-controller;
16400 + microchip,irq-mirror;
16405 + s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0";
16406 + s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0";
16407 + s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0";
16408 + s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0";
16409 + s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0";
16410 + s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0";
16411 + s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0";
16412 + s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0";
16413 + s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0";
16414 + s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0";
16415 + s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0";
16416 + s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0";
16417 + s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0";
16418 + s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0";
16419 + s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0";
16420 + s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0";
16421 + s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0";
16422 + s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0";
16423 + s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0";
16424 + s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0";
16425 + s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0";
16426 + s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0";
16427 + s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0";
16428 + s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0";
16429 + s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0";
16430 + s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0";
16431 + s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0";
16432 + s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0";
16433 + s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0";
16434 + s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0";
16435 + s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0";
16436 + s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0";
16440 diff --git a/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
16441 new file mode 100755
16442 index 000000000000..46f143d809cc
16444 +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
16447 + * Device tree overlay for mcp251x/can0 on spi0.0
16454 + compatible = "brcm,bcm2835";
16455 + /* disable spi-dev for spi0.0 */
16457 + target = <&spi0>;
16464 + target = <&spidev0>;
16466 + status = "disabled";
16470 + /* the interrupt pin of the can-controller */
16472 + target = <&gpio>;
16474 + can0_pins: can0_pins {
16475 + brcm,pins = <25>;
16476 + brcm,function = <0>; /* input */
16481 + /* the clock/oscillator of the can-controller */
16483 + target-path = "/";
16485 + /* external oscillator of mcp2515 on SPI0.0 */
16486 + can0_osc: can0_osc {
16487 + compatible = "fixed-clock";
16488 + #clock-cells = <0>;
16489 + clock-frequency = <16000000>;
16494 + /* the spi config of the can-controller itself binding everything together */
16496 + target = <&spi0>;
16498 + /* needed to avoid dtc warning */
16499 + #address-cells = <1>;
16500 + #size-cells = <0>;
16501 + can0: mcp2515@0 {
16503 + compatible = "microchip,mcp2515";
16504 + pinctrl-names = "default";
16505 + pinctrl-0 = <&can0_pins>;
16506 + spi-max-frequency = <10000000>;
16507 + interrupt-parent = <&gpio>;
16508 + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
16509 + clocks = <&can0_osc>;
16514 + oscillator = <&can0_osc>,"clock-frequency:0";
16515 + spimaxfrequency = <&can0>,"spi-max-frequency:0";
16516 + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
16519 diff --git a/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
16520 new file mode 100644
16521 index 000000000000..0a8dd576818e
16523 +++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
16526 + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
16533 + compatible = "brcm,bcm2835";
16534 + /* disable spi-dev for spi0.1 */
16536 + target = <&spi0>;
16543 + target = <&spidev1>;
16545 + status = "disabled";
16549 + /* the interrupt pin of the can-controller */
16551 + target = <&gpio>;
16553 + can1_pins: can1_pins {
16554 + brcm,pins = <25>;
16555 + brcm,function = <0>; /* input */
16560 + /* the clock/oscillator of the can-controller */
16562 + target-path = "/";
16564 + /* external oscillator of mcp2515 on spi0.1 */
16565 + can1_osc: can1_osc {
16566 + compatible = "fixed-clock";
16567 + #clock-cells = <0>;
16568 + clock-frequency = <16000000>;
16573 + /* the spi config of the can-controller itself binding everything together */
16575 + target = <&spi0>;
16577 + /* needed to avoid dtc warning */
16578 + #address-cells = <1>;
16579 + #size-cells = <0>;
16580 + can1: mcp2515@1 {
16582 + compatible = "microchip,mcp2515";
16583 + pinctrl-names = "default";
16584 + pinctrl-0 = <&can1_pins>;
16585 + spi-max-frequency = <10000000>;
16586 + interrupt-parent = <&gpio>;
16587 + interrupts = <25 8>; /* IRQ_TYPE_LEVEL_LOW */
16588 + clocks = <&can1_osc>;
16593 + oscillator = <&can1_osc>,"clock-frequency:0";
16594 + spimaxfrequency = <&can1>,"spi-max-frequency:0";
16595 + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
16598 diff --git a/arch/arm/boot/dts/overlays/mcp3008-overlay.dts b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
16599 new file mode 100755
16600 index 000000000000..957fdb9310af
16602 +++ b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
16605 + * Device tree overlay for Microchip mcp3008 10-Bit A/D Converters
16612 + compatible = "brcm,bcm2835";
16615 + target = <&spidev0>;
16617 + status = "disabled";
16622 + target = <&spidev1>;
16624 + status = "disabled";
16629 + target-path = "spi1/spidev@0";
16631 + status = "disabled";
16636 + target-path = "spi1/spidev@1";
16638 + status = "disabled";
16643 + target-path = "spi1/spidev@2";
16645 + status = "disabled";
16650 + target-path = "spi2/spidev@0";
16652 + status = "disabled";
16657 + target-path = "spi2/spidev@1";
16659 + status = "disabled";
16664 + target-path = "spi2/spidev@2";
16666 + status = "disabled";
16671 + target = <&spi0>;
16674 + #address-cells = <1>;
16675 + #size-cells = <0>;
16677 + mcp3008_00: mcp3008@0 {
16678 + compatible = "microchip,mcp3008";
16680 + spi-max-frequency = <1600000>;
16686 + target = <&spi0>;
16689 + #address-cells = <1>;
16690 + #size-cells = <0>;
16692 + mcp3008_01: mcp3008@1 {
16693 + compatible = "microchip,mcp3008";
16695 + spi-max-frequency = <1600000>;
16701 + target = <&spi1>;
16704 + #address-cells = <1>;
16705 + #size-cells = <0>;
16707 + mcp3008_10: mcp3008@0 {
16708 + compatible = "microchip,mcp3008";
16710 + spi-max-frequency = <1600000>;
16716 + target = <&spi1>;
16719 + #address-cells = <1>;
16720 + #size-cells = <0>;
16722 + mcp3008_11: mcp3008@1 {
16723 + compatible = "microchip,mcp3008";
16725 + spi-max-frequency = <1600000>;
16731 + target = <&spi1>;
16734 + #address-cells = <1>;
16735 + #size-cells = <0>;
16737 + mcp3008_12: mcp3008@2 {
16738 + compatible = "microchip,mcp3008";
16740 + spi-max-frequency = <1600000>;
16746 + target = <&spi2>;
16749 + #address-cells = <1>;
16750 + #size-cells = <0>;
16752 + mcp3008_20: mcp3008@0 {
16753 + compatible = "microchip,mcp3008";
16755 + spi-max-frequency = <1600000>;
16761 + target = <&spi2>;
16764 + #address-cells = <1>;
16765 + #size-cells = <0>;
16767 + mcp3008_21: mcp3008@1 {
16768 + compatible = "microchip,mcp3008";
16770 + spi-max-frequency = <1600000>;
16776 + target = <&spi2>;
16779 + #address-cells = <1>;
16780 + #size-cells = <0>;
16782 + mcp3008_22: mcp3008@2 {
16783 + compatible = "microchip,mcp3008";
16785 + spi-max-frequency = <1600000>;
16791 + spi0-0-present = <0>, "+0+8";
16792 + spi0-1-present = <0>, "+1+9";
16793 + spi1-0-present = <0>, "+2+10";
16794 + spi1-1-present = <0>, "+3+11";
16795 + spi1-2-present = <0>, "+4+12";
16796 + spi2-0-present = <0>, "+5+13";
16797 + spi2-1-present = <0>, "+6+14";
16798 + spi2-2-present = <0>, "+7+15";
16799 + spi0-0-speed = <&mcp3008_00>, "spi-max-frequency:0";
16800 + spi0-1-speed = <&mcp3008_01>, "spi-max-frequency:0";
16801 + spi1-0-speed = <&mcp3008_10>, "spi-max-frequency:0";
16802 + spi1-1-speed = <&mcp3008_11>, "spi-max-frequency:0";
16803 + spi1-2-speed = <&mcp3008_12>, "spi-max-frequency:0";
16804 + spi2-0-speed = <&mcp3008_20>, "spi-max-frequency:0";
16805 + spi2-1-speed = <&mcp3008_21>, "spi-max-frequency:0";
16806 + spi2-2-speed = <&mcp3008_22>, "spi-max-frequency:0";
16809 diff --git a/arch/arm/boot/dts/overlays/mcp3202-overlay.dts b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
16810 new file mode 100755
16811 index 000000000000..8e4e9f60f285
16813 +++ b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
16816 + * Device tree overlay for Microchip mcp3202 12-Bit A/D Converters
16823 + compatible = "brcm,bcm2835";
16826 + target = <&spidev0>;
16828 + status = "disabled";
16833 + target = <&spidev1>;
16835 + status = "disabled";
16840 + target-path = "spi1/spidev@0";
16842 + status = "disabled";
16847 + target-path = "spi1/spidev@1";
16849 + status = "disabled";
16854 + target-path = "spi1/spidev@2";
16856 + status = "disabled";
16861 + target-path = "spi2/spidev@0";
16863 + status = "disabled";
16868 + target-path = "spi2/spidev@1";
16870 + status = "disabled";
16875 + target-path = "spi2/spidev@2";
16877 + status = "disabled";
16882 + target = <&spi0>;
16885 + #address-cells = <1>;
16886 + #size-cells = <0>;
16888 + mcp3202_00: mcp3202@0 {
16889 + compatible = "mcp3202";
16891 + spi-max-frequency = <1600000>;
16897 + target = <&spi0>;
16900 + #address-cells = <1>;
16901 + #size-cells = <0>;
16903 + mcp3202_01: mcp3202@1 {
16904 + compatible = "mcp3202";
16906 + spi-max-frequency = <1600000>;
16912 + target = <&spi1>;
16915 + #address-cells = <1>;
16916 + #size-cells = <0>;
16918 + mcp3202_10: mcp3202@0 {
16919 + compatible = "mcp3202";
16921 + spi-max-frequency = <1600000>;
16927 + target = <&spi1>;
16930 + #address-cells = <1>;
16931 + #size-cells = <0>;
16933 + mcp3202_11: mcp3202@1 {
16934 + compatible = "mcp3202";
16936 + spi-max-frequency = <1600000>;
16942 + target = <&spi1>;
16945 + #address-cells = <1>;
16946 + #size-cells = <0>;
16948 + mcp3202_12: mcp3202@2 {
16949 + compatible = "mcp3202";
16951 + spi-max-frequency = <1600000>;
16957 + target = <&spi2>;
16960 + #address-cells = <1>;
16961 + #size-cells = <0>;
16963 + mcp3202_20: mcp3202@0 {
16964 + compatible = "mcp3202";
16966 + spi-max-frequency = <1600000>;
16972 + target = <&spi2>;
16975 + #address-cells = <1>;
16976 + #size-cells = <0>;
16978 + mcp3202_21: mcp3202@1 {
16979 + compatible = "mcp3202";
16981 + spi-max-frequency = <1600000>;
16987 + target = <&spi2>;
16990 + #address-cells = <1>;
16991 + #size-cells = <0>;
16993 + mcp3202_22: mcp3202@2 {
16994 + compatible = "mcp3202";
16996 + spi-max-frequency = <1600000>;
17002 + spi0-0-present = <0>, "+0+8";
17003 + spi0-1-present = <0>, "+1+9";
17004 + spi1-0-present = <0>, "+2+10";
17005 + spi1-1-present = <0>, "+3+11";
17006 + spi1-2-present = <0>, "+4+12";
17007 + spi2-0-present = <0>, "+5+13";
17008 + spi2-1-present = <0>, "+6+14";
17009 + spi2-2-present = <0>, "+7+15";
17010 + spi0-0-speed = <&mcp3202_00>, "spi-max-frequency:0";
17011 + spi0-1-speed = <&mcp3202_01>, "spi-max-frequency:0";
17012 + spi1-0-speed = <&mcp3202_10>, "spi-max-frequency:0";
17013 + spi1-1-speed = <&mcp3202_11>, "spi-max-frequency:0";
17014 + spi1-2-speed = <&mcp3202_12>, "spi-max-frequency:0";
17015 + spi2-0-speed = <&mcp3202_20>, "spi-max-frequency:0";
17016 + spi2-1-speed = <&mcp3202_21>, "spi-max-frequency:0";
17017 + spi2-2-speed = <&mcp3202_22>, "spi-max-frequency:0";
17020 diff --git a/arch/arm/boot/dts/overlays/mcp342x-overlay.dts b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
17021 new file mode 100644
17022 index 000000000000..714eca5a4b5e
17024 +++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
17026 +// Overlay for MCP3421-8 ADCs from Microchip Semiconductor
17032 + compatible = "brcm,bcm2835";
17035 + target = <&i2c1>;
17037 + #address-cells = <1>;
17038 + #size-cells = <0>;
17042 + mcp3421: mcp@68 {
17044 + compatible = "microchip,mcp3421";
17052 + target = <&i2c1>;
17054 + #address-cells = <1>;
17055 + #size-cells = <0>;
17059 + mcp3422: mcp@68 {
17061 + compatible = "microchip,mcp3422";
17069 + target = <&i2c1>;
17071 + #address-cells = <1>;
17072 + #size-cells = <0>;
17076 + mcp3423: mcp@68 {
17078 + compatible = "microchip,mcp3423";
17086 + target = <&i2c1>;
17088 + #address-cells = <1>;
17089 + #size-cells = <0>;
17093 + mcp3424: mcp@68 {
17095 + compatible = "microchip,mcp3424";
17103 + target = <&i2c1>;
17105 + #address-cells = <1>;
17106 + #size-cells = <0>;
17110 + mcp3425: mcp@68 {
17112 + compatible = "microchip,mcp3425","mcp3425";
17120 + target = <&i2c1>;
17122 + #address-cells = <1>;
17123 + #size-cells = <0>;
17127 + mcp3426: mcp@68 {
17129 + compatible = "microchip,mcp3426";
17137 + target = <&i2c1>;
17139 + #address-cells = <1>;
17140 + #size-cells = <0>;
17144 + mcp3427: mcp@68 {
17146 + compatible = "microchip,mcp3427";
17154 + target = <&i2c1>;
17156 + #address-cells = <1>;
17157 + #size-cells = <0>;
17161 + mcp3428: mcp@68 {
17163 + compatible = "microchip,mcp3428";
17171 + addr = <&mcp3421>,"reg:0",
17172 + <&mcp3422>,"reg:0",
17173 + <&mcp3423>,"reg:0",
17174 + <&mcp3424>,"reg:0",
17175 + <&mcp3425>,"reg:0",
17176 + <&mcp3426>,"reg:0",
17177 + <&mcp3427>,"reg:0",
17178 + <&mcp3428>,"reg:0";
17179 + mcp3421 = <0>,"=0";
17180 + mcp3422 = <0>,"=1";
17181 + mcp3423 = <0>,"=2";
17182 + mcp3424 = <0>,"=3";
17183 + mcp3425 = <0>,"=4";
17184 + mcp3426 = <0>,"=5";
17185 + mcp3427 = <0>,"=6";
17186 + mcp3428 = <0>,"=7";
17190 diff --git a/arch/arm/boot/dts/overlays/media-center-overlay.dts b/arch/arm/boot/dts/overlays/media-center-overlay.dts
17191 new file mode 100644
17192 index 000000000000..1b56963f4f16
17194 +++ b/arch/arm/boot/dts/overlays/media-center-overlay.dts
17197 + * Device Tree overlay for Media Center HAT by Pi Supply
17205 + compatible = "brcm,bcm2835";
17208 + target = <&spi0>;
17213 + status = "disabled";
17217 + status = "disabled";
17223 + target = <&gpio>;
17225 + rpi_display_pins: rpi_display_pins {
17226 + brcm,pins = <12 23 24 25>;
17227 + brcm,function = <1 1 1 0>; /* out out out in */
17228 + brcm,pull = <0 0 0 2>; /* - - - up */
17234 + target = <&spi0>;
17236 + /* needed to avoid dtc warning */
17237 + #address-cells = <1>;
17238 + #size-cells = <0>;
17240 + rpidisplay: rpi-display@0{
17241 + compatible = "ilitek,ili9341";
17243 + pinctrl-names = "default";
17244 + pinctrl-0 = <&rpi_display_pins>;
17246 + spi-max-frequency = <32000000>;
17251 + reset-gpios = <&gpio 23 1>;
17252 + dc-gpios = <&gpio 24 0>;
17253 + led-gpios = <&gpio 12 0>;
17257 + rpidisplay_ts: rpi-display-ts@1 {
17258 + compatible = "ti,ads7846";
17261 + spi-max-frequency = <2000000>;
17262 + interrupts = <25 2>; /* high-to-low edge triggered */
17263 + interrupt-parent = <&gpio>;
17264 + pendown-gpio = <&gpio 25 1>;
17265 + ti,x-plate-ohms = /bits/ 16 <60>;
17266 + ti,pressure-max = /bits/ 16 <255>;
17272 + target-path = "/";
17274 + lirc_rpi: lirc_rpi {
17275 + compatible = "rpi,lirc-rpi";
17276 + pinctrl-names = "default";
17277 + pinctrl-0 = <&lirc_pins>;
17280 + // Override autodetection of IR receiver circuit
17281 + // (0 = active high, 1 = active low, -1 = no override )
17282 + rpi,sense = <0xffffffff>;
17284 + // Software carrier
17285 + // (0 = off, 1 = on)
17286 + rpi,softcarrier = <1>;
17289 + // (0 = off, 1 = on)
17290 + rpi,invert = <0>;
17292 + // Enable debugging messages
17293 + // (0 = off, 1 = on)
17300 + target = <&gpio>;
17302 + lirc_pins: lirc_pins {
17303 + brcm,pins = <6 5>;
17304 + brcm,function = <1 0>; // out in
17305 + brcm,pull = <0 1>; // off down
17311 + speed = <&rpidisplay>,"spi-max-frequency:0";
17312 + rotate = <&rpidisplay>,"rotate:0";
17313 + fps = <&rpidisplay>,"fps:0";
17314 + debug = <&rpidisplay>,"debug:0",
17315 + <&lirc_rpi>,"rpi,debug:0";
17316 + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
17317 + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
17318 + backlight = <&rpidisplay>,"led-gpios:4",
17319 + <&rpi_display_pins>,"brcm,pins:0";
17321 + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
17322 + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
17323 + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
17325 + sense = <&lirc_rpi>,"rpi,sense:0";
17326 + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
17327 + invert = <&lirc_rpi>,"rpi,invert:0";
17330 diff --git a/arch/arm/boot/dts/overlays/merus-amp-overlay.dts b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
17331 new file mode 100644
17332 index 000000000000..4501fbdc253d
17334 +++ b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
17336 +// SPDX-License-Identifier: GPL-2.0-only
17337 +// Definitions for Infineon Merus-Amp
17340 +#include <dt-bindings/pinctrl/bcm2835.h>
17341 +#include <dt-bindings/gpio/gpio.h>
17345 + compatible = "brcm,bcm2835";
17355 + target = <&gpio>;
17357 + merus_amp_pins: merus_amp_pins {
17358 + brcm,pins = <23>;
17359 + brcm,function = <0>; /* in */
17360 + brcm,pull = <2>; /* up */
17366 + target = <&i2c1>;
17368 + #address-cells = <1>;
17369 + #size-cells = <0>;
17372 + merus_amp: ma120x0p@20 {
17373 + #sound-dai-cells = <0>;
17374 + compatible = "ma,ma120x0p";
17377 + pinctrl-names = "default";
17378 + pinctrl-0 = <&merus_amp_pins>;
17379 + enable_gp-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
17380 + mute_gp-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
17381 + booster_gp-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
17382 + error_gp-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
17388 + target = <&sound>;
17390 + compatible = "merus,merus-amp";
17391 + i2s-controller = <&i2s>;
17396 diff --git a/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
17397 new file mode 100644
17398 index 000000000000..f7e44d29e101
17400 +++ b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
17405 +#include <dt-bindings/clock/bcm2835.h>
17408 + * Fake a higher clock rate to get a larger divisor, and thereby a lower
17409 + * baudrate. The real clock is 48MHz, which we scale so that requesting
17410 + * 38.4kHz results in an actual 31.25kHz.
17412 + * 48000000*38400/31250 = 58982400
17416 + compatible = "brcm,bcm2835";
17419 + target-path = "/";
17421 + midi_clk: midi_clk {
17422 + compatible = "fixed-clock";
17423 + #clock-cells = <0>;
17424 + clock-output-names = "uart0_pclk";
17425 + clock-frequency = <58982400>;
17431 + target = <&uart0>;
17433 + clocks = <&midi_clk>,
17434 + <&clocks BCM2835_CLOCK_VPU>;
17438 diff --git a/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
17439 new file mode 100644
17440 index 000000000000..e0bc410acbff
17442 +++ b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
17447 +#include <dt-bindings/clock/bcm2835-aux.h>
17450 + * Fake a higher clock rate to get a larger divisor, and thereby a lower
17451 + * baudrate. The real clock is 48MHz, which we scale so that requesting
17452 + * 38.4kHz results in an actual 31.25kHz.
17454 + * 48000000*38400/31250 = 58982400
17458 + compatible = "brcm,bcm2835";
17461 + target-path = "/clocks";
17463 + midi_clk: clock@5 {
17464 + compatible = "fixed-factor-clock";
17465 + #clock-cells = <0>;
17466 + clocks = <&aux BCM2835_AUX_CLOCK_UART>;
17467 + clock-mult = <38400>;
17468 + clock-div = <31250>;
17474 + target = <&uart1>;
17476 + clocks = <&midi_clk>;
17483 + clock-output-names = "aux_uart", "aux_spi1", "aux_spi2";
17487 diff --git a/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
17488 new file mode 100644
17489 index 000000000000..da49f14a0940
17491 +++ b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
17496 +/* Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
17497 + UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
17500 + It is also necessary to edit /lib/systemd/system/hciuart.service and
17501 + replace ttyAMA0 with ttyS0, unless you have a system with udev rules
17502 + that create /dev/serial0 and /dev/serial1, in which case use /dev/serial1
17503 + instead because it will always be correct.
17505 + If cmdline.txt uses the alias serial0 to refer to the user-accessable port
17506 + then the firmware will replace with the appropriate port whether or not
17507 + this overlay is used.
17510 +#include <dt-bindings/gpio/gpio.h>
17513 + compatible = "brcm,bcm2835";
17516 + target = <&uart0>;
17518 + pinctrl-names = "default";
17519 + pinctrl-0 = <&uart0_pins>;
17527 + status = "disabled";
17532 + target = <&uart1>;
17534 + pinctrl-names = "default";
17535 + pinctrl-0 = <&uart1_pins &bt_pins &fake_bt_cts>;
17541 + target = <&uart0_pins>;
17550 + target = <&uart1_pins>;
17552 + brcm,pins = <32 33>;
17553 + brcm,function = <2>; /* alt5=UART1 */
17554 + brcm,pull = <0 2>;
17559 + target = <&gpio>;
17561 + fake_bt_cts: fake_bt_cts {
17562 + brcm,pins = <31>;
17563 + brcm,function = <1>; /* output */
17569 + target-path = "/aliases";
17571 + serial0 = "/soc/serial@7e201000";
17572 + serial1 = "/soc/serial@7e215040";
17577 + target = <&minibt>;
17578 + minibt_frag: __overlay__ {
17583 + krnbt = <&minibt_frag>,"status";
17586 diff --git a/arch/arm/boot/dts/overlays/mmc-overlay.dts b/arch/arm/boot/dts/overlays/mmc-overlay.dts
17587 new file mode 100644
17588 index 000000000000..c1a2f691aa1e
17590 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
17596 + compatible = "brcm,bcm2835";
17600 + frag0: __overlay__ {
17601 + pinctrl-names = "default";
17602 + pinctrl-0 = <&mmc_pins>;
17604 + brcm,overclock-50 = <0>;
17610 + target = <&gpio>;
17612 + mmc_pins: mmc_pins {
17613 + brcm,pins = <48 49 50 51 52 53>;
17614 + brcm,function = <7>; /* alt3 */
17615 + brcm,pull = <0 2 2 2 2 2>;
17621 + target = <&sdhost>;
17623 + status = "disabled";
17628 + target = <&mmcnr>;
17630 + status = "disabled";
17635 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
17638 diff --git a/arch/arm/boot/dts/overlays/mpu6050-overlay.dts b/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
17639 new file mode 100644
17640 index 000000000000..3109d90562ae
17642 +++ b/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
17644 +// Definitions for MPU6050
17649 + compatible = "brcm,bcm2835";
17652 + target = <&i2c1>;
17654 + #address-cells = <1>;
17655 + #size-cells = <0>;
17657 + clock-frequency = <400000>;
17659 + mpu6050: mpu6050@68 {
17660 + compatible = "invensense,mpu6050";
17662 + interrupt-parent = <&gpio>;
17663 + interrupts = <4 1>;
17669 + interrupt = <&mpu6050>,"interrupts:0";
17672 diff --git a/arch/arm/boot/dts/overlays/mz61581-overlay.dts b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
17673 new file mode 100644
17674 index 000000000000..6e00e8b2ddf2
17676 +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
17679 + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
17687 + compatible = "brcm,bcm2835";
17690 + target = <&spi0>;
17697 + target = <&spidev0>;
17699 + status = "disabled";
17704 + target = <&spidev1>;
17706 + status = "disabled";
17711 + target = <&gpio>;
17713 + mz61581_pins: mz61581_pins {
17714 + brcm,pins = <4 15 18 25>;
17715 + brcm,function = <0 1 1 1>; /* in out out out */
17721 + target = <&spi0>;
17723 + /* needed to avoid dtc warning */
17724 + #address-cells = <1>;
17725 + #size-cells = <0>;
17727 + mz61581: mz61581@0{
17728 + compatible = "samsung,s6d02a1";
17730 + pinctrl-names = "default";
17731 + pinctrl-0 = <&mz61581_pins>;
17733 + spi-max-frequency = <128000000>;
17743 + txbuflen = <32768>;
17745 + reset-gpios = <&gpio 15 1>;
17746 + dc-gpios = <&gpio 25 0>;
17747 + led-gpios = <&gpio 18 0>;
17749 + init = <0x10000b0 00
17752 + 0x10000b3 0x02 0x00 0x00 0x00
17753 + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
17754 + 0x10000c1 0x08 0x16 0x08 0x08
17755 + 0x10000c4 0x11 0x07 0x03 0x03
17757 + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
17761 + 0x1000044 0x00 0x01
17762 + 0x10000d0 0x07 0x07 0x1d 0x03
17763 + 0x10000d1 0x03 0x30 0x10
17764 + 0x10000d2 0x03 0x14 0x04
17768 + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
17772 + mz61581_ts: mz61581_ts@1 {
17773 + compatible = "ti,ads7846";
17776 + spi-max-frequency = <2000000>;
17777 + interrupts = <4 2>; /* high-to-low edge triggered */
17778 + interrupt-parent = <&gpio>;
17779 + pendown-gpio = <&gpio 4 0>;
17781 + ti,x-plate-ohms = /bits/ 16 <60>;
17782 + ti,pressure-max = /bits/ 16 <255>;
17787 + speed = <&mz61581>, "spi-max-frequency:0";
17788 + rotate = <&mz61581>, "rotate:0";
17789 + fps = <&mz61581>, "fps:0";
17790 + txbuflen = <&mz61581>, "txbuflen:0";
17791 + debug = <&mz61581>, "debug:0";
17792 + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
17795 diff --git a/arch/arm/boot/dts/overlays/ov5647-overlay.dts b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
17796 new file mode 100644
17797 index 000000000000..fd1e7a457f69
17799 +++ b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
17801 +// SPDX-License-Identifier: GPL-2.0-only
17802 +// Definitions for OV5647 camera module on VC I2C bus
17807 + compatible = "brcm,bcm2835";
17810 + target = <&i2c_csi_dsi>;
17812 + #address-cells = <1>;
17813 + #size-cells = <0>;
17816 + ov5647: ov5647@36 {
17817 + compatible = "ovti,ov5647";
17821 + pwdn-gpios = <&gpio 41 1>, <&gpio 32 1>;
17822 + clocks = <&ov5647_clk>;
17827 + ov5647_0: endpoint {
17828 + remote-endpoint = <&csi1_ep>;
17829 + clock-lanes = <0>;
17830 + data-lanes = <1 2>;
17831 + clock-noncontinuous;
17832 + link-frequencies =
17833 + /bits/ 64 <297000000>;
17841 + target = <&csi1>;
17846 + csi1_ep: endpoint {
17847 + remote-endpoint = <&ov5647_0>;
17848 + data-lanes = <1 2>;
17855 + target = <&i2c0if>;
17862 + target = <&i2c0mux>;
17869 + target-path="/__overrides__";
17871 + cam0-pwdn-ctrl = <&ov5647>,"pwdn-gpios:0";
17872 + cam0-pwdn = <&ov5647>,"pwdn-gpios:4";
17873 + cam0-led-ctrl = <&ov5647>,"pwdn-gpios:12";
17874 + cam0-led = <&ov5647>,"pwdn-gpios:16";
17879 + target-path = "/";
17881 + ov5647_clk: camera-clk {
17882 + compatible = "fixed-clock";
17883 + #clock-cells = <0>;
17884 + clock-frequency = <25000000>;
17890 + rotation = <&ov5647>,"rotation:0";
17893 diff --git a/arch/arm/boot/dts/overlays/ov7251-overlay.dts b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
17894 new file mode 100644
17895 index 000000000000..f04eafd4adf9
17897 +++ b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
17899 +// SPDX-License-Identifier: GPL-2.0-only
17900 +// Definitions for OV7251 camera module on VC I2C bus
17904 +#include <dt-bindings/gpio/gpio.h>
17907 + compatible = "brcm,bcm2835";
17910 + target = <&i2c_csi_dsi>;
17912 + #address-cells = <1>;
17913 + #size-cells = <0>;
17916 + ov7251: ov7251@60 {
17917 + compatible = "ovti,ov7251";
17921 + clocks = <&ov7251_clk>;
17922 + clock-names = "xclk";
17923 + clock-frequency = <24000000>;
17925 + vdddo-supply = <&ov7251_dovdd>;
17926 + vdda-supply = <&ov7251_avdd>;
17927 + vddd-supply = <&ov7251_dvdd>;
17929 + enable-gpios = <&gpio 41 GPIO_ACTIVE_HIGH>;
17932 + ov7251_0: endpoint {
17933 + remote-endpoint = <&csi1_ep>;
17934 + clock-lanes = <0>;
17935 + data-lanes = <1>;
17936 + clock-noncontinuous;
17937 + link-frequencies =
17938 + /bits/ 64 <456000000>;
17946 + target = <&csi1>;
17951 + csi1_ep: endpoint {
17952 + remote-endpoint = <&ov7251_0>;
17953 + data-lanes = <1>;
17960 + target = <&i2c0if>;
17969 + ov7251_avdd: fixedregulator@0 {
17970 + compatible = "regulator-fixed";
17971 + regulator-name = "ov7251_avdd";
17972 + regulator-min-microvolt = <2800000>;
17973 + regulator-max-microvolt = <2800000>;
17975 + ov7251_dovdd: fixedregulator@1 {
17976 + compatible = "regulator-fixed";
17977 + regulator-name = "ov7251_dovdd";
17978 + regulator-min-microvolt = <1800000>;
17979 + regulator-max-microvolt = <1800000>;
17981 + ov7251_dvdd: fixedregulator@2 {
17982 + compatible = "regulator-fixed";
17983 + regulator-name = "ov7251_dvdd";
17984 + regulator-min-microvolt = <1200000>;
17985 + regulator-max-microvolt = <1200000>;
17987 + ov7251_clk: ov7251-clk {
17988 + compatible = "fixed-clock";
17989 + #clock-cells = <0>;
17990 + clock-frequency = <24000000>;
17996 + target = <&i2c0mux>;
18003 + target-path="/__overrides__";
18005 + cam0-pwdn-ctrl = <&ov7251>,"enable-gpios:0";
18006 + cam0-pwdn = <&ov7251>,"enable-gpios:4";
18010 diff --git a/arch/arm/boot/dts/overlays/ov9281-overlay.dts b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
18011 new file mode 100644
18012 index 000000000000..40b298d3dd86
18014 +++ b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
18016 +// SPDX-License-Identifier: GPL-2.0-only
18017 +// Definitions for OV9281 camera module on VC I2C bus
18021 +#include <dt-bindings/gpio/gpio.h>
18024 + compatible = "brcm,bcm2835";
18027 + target = <&i2c_csi_dsi>;
18029 + #address-cells = <1>;
18030 + #size-cells = <0>;
18033 + ov9281: ov9281@60 {
18034 + compatible = "ovti,ov9281";
18038 + clocks = <&ov9281_clk>;
18039 + clock-names = "xvclk";
18041 + avdd-supply = <&ov9281_avdd>;
18042 + dovdd-supply = <&ov9281_dovdd>;
18043 + dvdd-supply = <&ov9281_dvdd>;
18046 + ov9281_0: endpoint {
18047 + remote-endpoint = <&csi1_ep>;
18048 + clock-lanes = <0>;
18049 + data-lanes = <1 2>;
18050 + clock-noncontinuous;
18051 + link-frequencies =
18052 + /bits/ 64 <400000000>;
18060 + target = <&csi1>;
18065 + csi1_ep: endpoint {
18066 + remote-endpoint = <&ov9281_0>;
18067 + data-lanes = <1 2>;
18068 + clock-noncontinuous;
18075 + target = <&i2c0if>;
18084 + ov9281_avdd: fixedregulator@0 {
18085 + compatible = "regulator-fixed";
18086 + regulator-name = "ov9281_avdd";
18087 + regulator-min-microvolt = <2800000>;
18088 + regulator-max-microvolt = <2800000>;
18089 + gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
18090 + enable-active-high;
18092 + ov9281_dovdd: fixedregulator@1 {
18093 + compatible = "regulator-fixed";
18094 + regulator-name = "ov9281_dovdd";
18095 + regulator-min-microvolt = <1800000>;
18096 + regulator-max-microvolt = <1800000>;
18098 + ov9281_dvdd: fixedregulator@2 {
18099 + compatible = "regulator-fixed";
18100 + regulator-name = "ov9281_dvdd";
18101 + regulator-min-microvolt = <1200000>;
18102 + regulator-max-microvolt = <1200000>;
18104 + ov9281_clk: ov9281-clk {
18105 + compatible = "fixed-clock";
18106 + #clock-cells = <0>;
18107 + clock-frequency = <24000000>;
18113 + target = <&i2c0mux>;
18120 + target-path="/__overrides__";
18122 + cam0-pwdn-ctrl = <&ov9281_avdd>,"gpio:0";
18123 + cam0-pwdn = <&ov9281_avdd>,"gpio:4";
18127 diff --git a/arch/arm/boot/dts/overlays/overlay_map.dts b/arch/arm/boot/dts/overlays/overlay_map.dts
18128 new file mode 100644
18129 index 000000000000..22b0ad1738ec
18131 +++ b/arch/arm/boot/dts/overlays/overlay_map.dts
18136 + bmp085_i2c-sensor {
18137 + deprecated = "use i2c-sensor,bmp085";
18145 + deprecated = "use i2c0";
18149 + deprecated = "use i2c1";
18169 + deprecated = "use gpio-ir";
18173 + renamed = "act-led";
18177 + renamed = "disable-bt";
18180 + pi3-disable-wifi {
18181 + renamed = "disable-wifi";
18184 + pi3-miniuart-bt {
18185 + renamed = "miniuart-bt";
18193 + deprecated = "use sdio,bus_width=1,gpios_22_25";
18197 + renamed = "spi0-2cs";
18201 + deprecated = "no longer necessary";
18254 + bcm2711 = "upstream-pi4";
18257 + upstream-aux-interrupt {
18258 + deprecated = "no longer necessary";
18267 + bcm2711 = "vc4-kms-v3d-pi4";
18270 + vc4-kms-v3d-pi4 {
18274 diff --git a/arch/arm/boot/dts/overlays/papirus-overlay.dts b/arch/arm/boot/dts/overlays/papirus-overlay.dts
18275 new file mode 100644
18276 index 000000000000..7b6bcfd49c86
18278 +++ b/arch/arm/boot/dts/overlays/papirus-overlay.dts
18280 +/* PaPiRus ePaper Screen by Pi Supply */
18286 + compatible = "brcm,bcm2835";
18289 + target = <&i2c_arm>;
18291 + #address-cells = <1>;
18292 + #size-cells = <0>;
18295 + display_temp: lm75@48 {
18296 + compatible = "lm75b";
18299 + #thermal-sensor-cells = <0>;
18305 + target-path = "/";
18309 + polling-delay-passive = <0>;
18310 + polling-delay = <0>;
18311 + thermal-sensors = <&display_temp>;
18318 + target = <&spi0>;
18323 + status = "disabled";
18329 + target = <&gpio>;
18331 + repaper_pins: repaper_pins {
18332 + brcm,pins = <14 15 23 24 25>;
18333 + brcm,function = <1 1 1 1 0>; /* out out out out in */
18339 + target = <&spi0>;
18341 + /* needed to avoid dtc warning */
18342 + #address-cells = <1>;
18343 + #size-cells = <0>;
18345 + repaper: repaper@0{
18346 + compatible = "not_set";
18348 + pinctrl-names = "default";
18349 + pinctrl-0 = <&repaper_pins>;
18351 + spi-max-frequency = <8000000>;
18353 + panel-on-gpios = <&gpio 23 0>;
18354 + border-gpios = <&gpio 14 0>;
18355 + discharge-gpios = <&gpio 15 0>;
18356 + reset-gpios = <&gpio 24 0>;
18357 + busy-gpios = <&gpio 25 0>;
18359 + repaper-thermal-zone = "display";
18365 + panel = <&repaper>, "compatible";
18366 + speed = <&repaper>, "spi-max-frequency:0";
18369 diff --git a/arch/arm/boot/dts/overlays/pca953x-overlay.dts b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
18370 new file mode 100644
18371 index 000000000000..8b6ee44665ce
18373 +++ b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
18375 +// Definitions for NXP PCA953x family of I2C GPIO controllers on ARM I2C bus.
18380 + compatible = "brcm,bcm2835";
18383 + target = <&i2c_arm>;
18385 + #address-cells = <1>;
18386 + #size-cells = <0>;
18390 + compatible = "nxp,pca9534";
18393 + #gpio-cells = <2>;
18403 + compatible = "nxp,pca6416";
18409 + compatible = "nxp,pca9505";
18415 + compatible = "nxp,pca9535";
18421 + compatible = "nxp,pca9536";
18427 + compatible = "nxp,pca9537";
18433 + compatible = "nxp,pca9538";
18439 + compatible = "nxp,pca9539";
18445 + compatible = "nxp,pca9554";
18451 + compatible = "nxp,pca9555";
18457 + compatible = "nxp,pca9556";
18463 + compatible = "nxp,pca9557";
18469 + compatible = "nxp,pca9574";
18475 + compatible = "nxp,pca9575";
18481 + compatible = "nxp,pca9698";
18487 + compatible = "nxp,pca16416";
18493 + compatible = "nxp,pca16524";
18499 + compatible = "nxp,pca19555a";
18505 + compatible = "maxim,max7310";
18511 + compatible = "maxim,max7312";
18517 + compatible = "maxim,max7313";
18523 + compatible = "maxim,max7315";
18529 + compatible = "ti,pca6107";
18535 + compatible = "ti,tca6408";
18541 + compatible = "ti,tca6416";
18547 + compatible = "ti,tca6424";
18553 + compatible = "ti,tca9539";
18559 + compatible = "ti,tca9554";
18565 + compatible = "onnn,cat9554";
18571 + compatible = "onnn,pca9654";
18577 + compatible = "exar,xra1202";
18582 + addr = <&pca>,"reg:0";
18583 + pca6416 = <0>, "+1";
18584 + pca9505 = <0>, "+2";
18585 + pca9535 = <0>, "+3";
18586 + pca9536 = <0>, "+4";
18587 + pca9537 = <0>, "+5";
18588 + pca9538 = <0>, "+6";
18589 + pca9539 = <0>, "+7";
18590 + pca9554 = <0>, "+8";
18591 + pca9555 = <0>, "+9";
18592 + pca9556 = <0>, "+10";
18593 + pca9557 = <0>, "+11";
18594 + pca9574 = <0>, "+12";
18595 + pca9575 = <0>, "+13";
18596 + pca9698 = <0>, "+14";
18597 + pca16416 = <0>, "+15";
18598 + pca16524 = <0>, "+16";
18599 + pca19555a = <0>, "+17";
18600 + max7310 = <0>, "+18";
18601 + max7312 = <0>, "+19";
18602 + max7313 = <0>, "+20";
18603 + max7315 = <0>, "+21";
18604 + pca6107 = <0>, "+22";
18605 + tca6408 = <0>, "+23";
18606 + tca6416 = <0>, "+24";
18607 + tca6424 = <0>, "+25";
18608 + tca9539 = <0>, "+26";
18609 + tca9554 = <0>, "+27";
18610 + cat9554 = <0>, "+28";
18611 + pca9654 = <0>, "+29";
18612 + xra1202 = <0>, "+30";
18615 diff --git a/arch/arm/boot/dts/overlays/pibell-overlay.dts b/arch/arm/boot/dts/overlays/pibell-overlay.dts
18616 new file mode 100644
18617 index 000000000000..9333a9b09772
18619 +++ b/arch/arm/boot/dts/overlays/pibell-overlay.dts
18625 + compatible = "brcm,bcm2835";
18628 + target-path = "/";
18630 + codec_out: spdif-transmitter {
18631 + #address-cells = <0>;
18632 + #size-cells = <0>;
18633 + #sound-dai-cells = <0>;
18634 + compatible = "linux,spdif-dit";
18638 + codec_in: card-codec {
18639 + #sound-dai-cells = <0>;
18640 + compatible = "invensense,ics43432";
18649 + #sound-dai-cells = <0>;
18655 + target = <&sound>;
18656 + snd: __overlay__ {
18657 + compatible = "simple-audio-card";
18658 + simple-audio-card,name = "PiBell";
18662 + capture_link: simple-audio-card,dai-link@0 {
18666 + sound-dai = <&i2s>;
18668 +/* example TDM slot configuration
18669 + dai-tdm-slot-num = <2>;
18670 + dai-tdm-slot-width = <32>;
18674 + r_codec_dai: codec {
18675 + sound-dai = <&codec_in>;
18679 + playback_link: simple-audio-card,dai-link@1 {
18683 + sound-dai = <&i2s>;
18685 +/* example TDM slot configuration
18686 + dai-tdm-slot-num = <2>;
18687 + dai-tdm-slot-width = <32>;
18691 + p_codec_dai: codec {
18692 + sound-dai = <&codec_out>;
18699 + alsaname = <&snd>, "simple-audio-card,name";
18702 diff --git a/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
18703 new file mode 100644
18704 index 000000000000..532a858683d6
18706 +++ b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
18708 +// SPDX-License-Identifier: GPL-2.0-only
18710 + * PiFace Digital, Device Tree Overlay.
18711 + * Copyright (C) 2020 Thomas Preston <thomas.preston@codethink.co.uk>
18713 + * The PiFace Digital is a convenient breakout board for the Microchip mcp23s17
18714 + * SPI GPIO port expander.
18716 + * The first eight GPIOs 0..7 (bank A) are connected to eight output terminals
18717 + * and LEDs, plus two relays on the first two outputs. These output loads are
18720 + * The next eight GPIOs 8..15 (bank B) are connected to eight input terminals
18721 + * with four on-board switches connecting them to ground. Inputs devices are
18722 + * therefore expected to bridge terminals to ground, so the mcp23s17 pullups are
18723 + * activated for GPIO bank B.
18725 + * On PiFace Digital, the mcp23s17 is connected to the Raspberry Pi's SPI0 CS0
18726 + * bus. Each SPI bus supports up to eight addressable child devices. The PiFace
18727 + * Digital only supports addresses 0-4, which can be configured by jumpers JP1
18730 + * You can tell the driver about these jumper configurations with the
18731 + * spi-present-mask bitmask:
18733 + * | JP1 | JP2 | dtoverlay line in /boot/config.txt |
18734 + * | --- | --- | ------------------------------------------ |
18735 + * | 0 | 0 | dtoverlay=pifacedigital |
18736 + * | 0 | 0 | dtoverlay=pifacedigital:spi-present-mask=1 |
18737 + * | 0 | 1 | dtoverlay=pifacedigital:spi-present-mask=2 |
18738 + * | 1 | 0 | dtoverlay=pifacedigital:spi-present-mask=4 |
18739 + * | 1 | 1 | dtoverlay=pifacedigital:spi-present-mask=8 |
18742 + * Set the dtoverlay config in /boot/config.txt and power off the Raspberry Pi:
18744 + * $ grep pifacedigital /boot/config.txt
18745 + * dtoverlay=pifacedigital
18746 + * $ sudo systemctl poweroff
18748 + * Attach the PiFace Digital and power on the Raspberry Pi.
18749 + * Then use the libgpiod tools to query the device:
18751 + * $ sudo apt install gpiod
18752 + * $ gpiodetect | grep mcp23s17
18753 + * gpiochip2 [mcp23s17.0] (16 lines)
18755 + * Set GPIO outputs 0, 2 and 5:
18757 + * $ gpioset gpiochip2 0=1 2=1 5=1
18759 + * Get GPIO status (input GPIO 8..15 are high, because they are active-low):
18761 + * $ gpioget gpiochip2 {8..15}
18762 + * 1 1 1 1 1 1 1 1
18764 + * And even monitor interrupts:
18766 + * $ gpiomon gpiochip2 {8..15}
18767 + * event: FALLING EDGE offset: 11 timestamp: [1597361662.926741667]
18768 + * event: RISING EDGE offset: 11 timestamp: [1597361663.062555051]
18776 + compatible = "brcm,bcm2835";
18778 + /* Disable exposing /dev/spidev0.0 */
18780 + target = <&spidev0>;
18782 + status = "disabled";
18786 + /* Add the PiFace Digital device node to the spi0.0 device. */
18788 + target = <&spi0>;
18791 + #address-cells = <1>;
18792 + #size-cells = <0>;
18794 + pfdigital: pifacedigital@0 {
18795 + compatible = "microchip,mcp23s17";
18798 + /* Set devices present with 8-bit mask. */
18799 + microchip,spi-present-mask = <0x01>;
18800 + spi-max-frequency = <500000>;
18803 + #gpio-cells = <2>;
18805 + /* This device can pass through interrupts. */
18806 + interrupt-controller;
18807 + #interrupt-cells = <2>;
18809 + /* INTB is connected to GPIO 25.
18810 + * 0x8 active-low level-sensitive
18812 + interrupts = <25 0x8>;
18813 + interrupt-parent = <&gpio>;
18815 + /* Configure pull-ups on bank B GPIOs */
18816 + pinctrl-0 = <&pfdigital_irq &pfdigital_pullups>;
18817 + pinctrl-names = "default";
18818 + pfdigital_pullups: pinmux {
18834 + /* PiFace Digital mcp23s17 INTB pin is connected to GPIO 25. The INTB
18835 + * pin is configured active-low (0 on interrupt), so expect to see
18836 + * FALLING_EDGE when inputs are bridged to ground (switch is pressed).
18839 + target = <&gpio>;
18841 + pfdigital_irq: pifacedigital_irq {
18842 + brcm,pins = <25>;
18843 + brcm,function = <0>; /* input */
18849 + spi-present-mask = <&pfdigital>, "microchip,spi-present-mask:0";
18852 diff --git a/arch/arm/boot/dts/overlays/piglow-overlay.dts b/arch/arm/boot/dts/overlays/piglow-overlay.dts
18853 new file mode 100644
18854 index 000000000000..075bceef158c
18856 +++ b/arch/arm/boot/dts/overlays/piglow-overlay.dts
18858 +// Definitions for SN3218 LED driver from Si-En Technology on PiGlow
18863 + compatible = "brcm,bcm2835";
18866 + target = <&i2c_arm>;
18868 + #address-cells = <1>;
18869 + #size-cells = <0>;
18873 + compatible = "si-en,sn3218";
18875 + #address-cells = <1>;
18876 + #size-cells = <0>;
18881 + label = "piglow:red:led1";
18885 + label = "piglow:orange:led2";
18889 + label = "piglow:yellow:led3";
18893 + label = "piglow:green:led4";
18897 + label = "piglow:blue:led5";
18901 + label = "piglow:green:led6";
18905 + label = "piglow:red:led7";
18909 + label = "piglow:orange:led8";
18913 + label = "piglow:yellow:led9";
18917 + label = "piglow:white:led10";
18921 + label = "piglow:white:led11";
18925 + label = "piglow:blue:led12";
18929 + label = "piglow:white:led13";
18933 + label = "piglow:green:led14";
18937 + label = "piglow:blue:led15";
18941 + label = "piglow:yellow:led16";
18945 + label = "piglow:orange:led17";
18949 + label = "piglow:red:led18";
18955 diff --git a/arch/arm/boot/dts/overlays/piscreen-overlay.dts b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
18956 new file mode 100644
18957 index 000000000000..1ac75a248fab
18959 +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
18962 + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
18970 + compatible = "brcm,bcm2835";
18973 + target = <&spi0>;
18980 + target = <&spidev0>;
18982 + status = "disabled";
18987 + target = <&spidev1>;
18989 + status = "disabled";
18994 + target = <&gpio>;
18996 + piscreen_pins: piscreen_pins {
18997 + brcm,pins = <17 25 24 22>;
18998 + brcm,function = <0 1 1 1>; /* in out out out */
19004 + target = <&spi0>;
19006 + /* needed to avoid dtc warning */
19007 + #address-cells = <1>;
19008 + #size-cells = <0>;
19010 + piscreen: piscreen@0{
19011 + compatible = "ilitek,ili9486";
19013 + pinctrl-names = "default";
19014 + pinctrl-0 = <&piscreen_pins>;
19016 + spi-max-frequency = <24000000>;
19022 + reset-gpios = <&gpio 25 1>;
19023 + dc-gpios = <&gpio 24 0>;
19024 + led-gpios = <&gpio 22 0>;
19027 + init = <0x10000b0 0x00
19033 + 0x10000c5 0x00 0x00 0x00 0x00
19034 + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
19035 + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
19036 + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
19041 + piscreen_ts: piscreen-ts@1 {
19042 + compatible = "ti,ads7846";
19045 + spi-max-frequency = <2000000>;
19046 + interrupts = <17 2>; /* high-to-low edge triggered */
19047 + interrupt-parent = <&gpio>;
19048 + pendown-gpio = <&gpio 17 0>;
19050 + ti,x-plate-ohms = /bits/ 16 <100>;
19051 + ti,pressure-max = /bits/ 16 <255>;
19056 + speed = <&piscreen>,"spi-max-frequency:0";
19057 + rotate = <&piscreen>,"rotate:0";
19058 + fps = <&piscreen>,"fps:0";
19059 + debug = <&piscreen>,"debug:0";
19060 + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
19063 diff --git a/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
19064 new file mode 100644
19065 index 000000000000..9d2b51101969
19067 +++ b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
19070 + * Device Tree overlay for PiScreen2 3.5" TFT with resistive touch by Ozzmaker.com
19078 + compatible = "brcm,bcm2835";
19081 + target = <&spi0>;
19088 + target = <&spidev0>;
19090 + status = "disabled";
19095 + target = <&spidev1>;
19097 + status = "disabled";
19102 + target = <&gpio>;
19104 + piscreen2_pins: piscreen2_pins {
19105 + brcm,pins = <17 25 24 22>;
19106 + brcm,function = <0 1 1 1>; /* in out out out */
19112 + target = <&spi0>;
19114 + /* needed to avoid dtc warning */
19115 + #address-cells = <1>;
19116 + #size-cells = <0>;
19118 + piscreen2: piscreen2@0{
19119 + compatible = "ilitek,ili9486";
19121 + pinctrl-names = "default";
19122 + pinctrl-0 = <&piscreen2_pins>;
19124 + spi-max-frequency = <64000000>;
19129 + txbuflen = <32768>;
19130 + reset-gpios = <&gpio 25 1>;
19131 + dc-gpios = <&gpio 24 0>;
19132 + led-gpios = <&gpio 22 0>;
19135 + init = <0x10000b0 0x00
19140 + 0x10000c0 0x11 0x09
19142 + 0x10000c5 0x00 0x00 0x00 0x00
19143 + 0x10000b6 0x00 0x02
19144 + 0x10000f7 0xa9 0x51 0x2c 0x2
19145 + 0x10000be 0x00 0x04
19152 + piscreen2_ts: piscreen2-ts@1 {
19153 + compatible = "ti,ads7846";
19156 + spi-max-frequency = <2000000>;
19157 + interrupts = <17 2>; /* high-to-low edge triggered */
19158 + interrupt-parent = <&gpio>;
19159 + pendown-gpio = <&gpio 17 0>;
19161 + ti,x-plate-ohms = /bits/ 16 <100>;
19162 + ti,pressure-max = /bits/ 16 <255>;
19167 + speed = <&piscreen2>,"spi-max-frequency:0";
19168 + rotate = <&piscreen2>,"rotate:0";
19169 + fps = <&piscreen2>,"fps:0";
19170 + debug = <&piscreen2>,"debug:0";
19171 + xohms = <&piscreen2_ts>,"ti,x-plate-ohms;0";
19175 diff --git a/arch/arm/boot/dts/overlays/pisound-overlay.dts b/arch/arm/boot/dts/overlays/pisound-overlay.dts
19176 new file mode 100644
19177 index 000000000000..49efb2b768fb
19179 +++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
19182 + * Pisound Linux kernel module.
19183 + * Copyright (C) 2016-2017 Vilniaus Blokas UAB, https://blokas.io/pisound
19185 + * This program is free software; you can redistribute it and/or
19186 + * modify it under the terms of the GNU General Public License
19187 + * as published by the Free Software Foundation; version 2 of the
19190 + * This program is distributed in the hope that it will be useful,
19191 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
19192 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19193 + * GNU General Public License for more details.
19195 + * You should have received a copy of the GNU General Public License
19196 + * along with this program; if not, write to the Free Software
19197 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19203 +#include <dt-bindings/gpio/gpio.h>
19206 + compatible = "brcm,bcm2835";
19209 + target = <&spi0>;
19216 + target = <&spidev0>;
19218 + status = "disabled";
19223 + target = <&spidev1>;
19230 + target = <&spi0>;
19232 + #address-cells = <1>;
19233 + #size-cells = <0>;
19235 + pisound_spi: pisound_spi@0{
19236 + compatible = "blokaslabs,pisound-spi";
19238 + pinctrl-names = "default";
19239 + pinctrl-0 = <&spi0_pins>;
19240 + spi-max-frequency = <1000000>;
19246 + target-path = "/";
19249 + #sound-dai-cells = <0>;
19250 + compatible = "ti,pcm5102a";
19257 + target = <&sound>;
19259 + compatible = "blokaslabs,pisound";
19260 + i2s-controller = <&i2s>;
19263 + pinctrl-0 = <&pisound_button_pins>;
19266 + <&gpio 13 GPIO_ACTIVE_HIGH>,
19267 + <&gpio 26 GPIO_ACTIVE_HIGH>,
19268 + <&gpio 16 GPIO_ACTIVE_HIGH>;
19271 + <&gpio 12 GPIO_ACTIVE_HIGH>,
19272 + <&gpio 24 GPIO_ACTIVE_HIGH>;
19274 + data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
19276 + button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
19281 + target = <&gpio>;
19283 + pinctrl-names = "default";
19284 + pinctrl-0 = <&pisound_button_pins>;
19286 + pisound_button_pins: pisound_button_pins {
19287 + brcm,pins = <17>;
19288 + brcm,function = <0>; // Input
19289 + brcm,pull = <2>; // Pull-Up
19301 diff --git a/arch/arm/boot/dts/overlays/pitft22-overlay.dts b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
19302 new file mode 100644
19303 index 000000000000..589ad13795b1
19305 +++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
19308 + * Device Tree overlay for pitft by Adafruit
19316 + compatible = "brcm,bcm2835";
19319 + target = <&spi0>;
19324 + status = "disabled";
19328 + status = "disabled";
19334 + target = <&gpio>;
19336 + pitft_pins: pitft_pins {
19337 + brcm,pins = <25>;
19338 + brcm,function = <1>; /* out */
19339 + brcm,pull = <0>; /* none */
19345 + target = <&spi0>;
19347 + /* needed to avoid dtc warning */
19348 + #address-cells = <1>;
19349 + #size-cells = <0>;
19352 + compatible = "ilitek,ili9340";
19354 + pinctrl-names = "default";
19355 + pinctrl-0 = <&pitft_pins>;
19357 + spi-max-frequency = <32000000>;
19362 + dc-gpios = <&gpio 25 0>;
19370 + speed = <&pitft>,"spi-max-frequency:0";
19371 + rotate = <&pitft>,"rotate:0";
19372 + fps = <&pitft>,"fps:0";
19373 + debug = <&pitft>,"debug:0";
19376 diff --git a/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
19377 new file mode 100644
19378 index 000000000000..33901ee1db7a
19380 +++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
19383 + * Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
19391 + compatible = "brcm,bcm2835";
19394 + target = <&spi0>;
19401 + target = <&spidev0>;
19403 + status = "disabled";
19408 + target = <&gpio>;
19410 + pitft_pins: pitft_pins {
19411 + brcm,pins = <24 25>;
19412 + brcm,function = <0 1>; /* in out */
19413 + brcm,pull = <2 0>; /* pullup none */
19419 + target = <&spi0>;
19421 + /* needed to avoid dtc warning */
19422 + #address-cells = <1>;
19423 + #size-cells = <0>;
19426 + compatible = "ilitek,ili9340";
19428 + pinctrl-names = "default";
19429 + pinctrl-0 = <&pitft_pins>;
19431 + spi-max-frequency = <32000000>;
19436 + dc-gpios = <&gpio 25 0>;
19443 + target = <&i2c1>;
19445 + /* needed to avoid dtc warning */
19446 + #address-cells = <1>;
19447 + #size-cells = <0>;
19449 + ft6236: ft6236@38 {
19450 + compatible = "focaltech,ft6236";
19453 + interrupt-parent = <&gpio>;
19454 + interrupts = <24 2>;
19455 + touchscreen-size-x = <240>;
19456 + touchscreen-size-y = <320>;
19462 + speed = <&pitft>,"spi-max-frequency:0";
19463 + rotate = <&pitft>,"rotate:0";
19464 + fps = <&pitft>,"fps:0";
19465 + debug = <&pitft>,"debug:0";
19466 + touch-sizex = <&ft6236>,"touchscreen-size-x?";
19467 + touch-sizey = <&ft6236>,"touchscreen-size-y?";
19468 + touch-invx = <&ft6236>,"touchscreen-inverted-x?";
19469 + touch-invy = <&ft6236>,"touchscreen-inverted-y?";
19470 + touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
19473 diff --git a/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
19474 new file mode 100644
19475 index 000000000000..4a4a3f44c29d
19477 +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
19480 + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
19488 + compatible = "brcm,bcm2835";
19491 + target = <&spi0>;
19498 + target = <&spidev0>;
19500 + status = "disabled";
19505 + target = <&spidev1>;
19507 + status = "disabled";
19512 + target = <&gpio>;
19514 + pitft_pins: pitft_pins {
19515 + brcm,pins = <24 25>;
19516 + brcm,function = <0 1>; /* in out */
19517 + brcm,pull = <2 0>; /* pullup none */
19523 + target = <&spi0>;
19525 + /* needed to avoid dtc warning */
19526 + #address-cells = <1>;
19527 + #size-cells = <0>;
19530 + compatible = "ilitek,ili9340";
19532 + pinctrl-names = "default";
19533 + pinctrl-0 = <&pitft_pins>;
19535 + spi-max-frequency = <32000000>;
19540 + dc-gpios = <&gpio 25 0>;
19545 + compatible = "st,stmpe610";
19548 + spi-max-frequency = <500000>;
19549 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
19550 + interrupts = <24 2>; /* high-to-low edge triggered */
19551 + interrupt-parent = <&gpio>;
19552 + interrupt-controller;
19554 + stmpe_touchscreen {
19555 + compatible = "st,stmpe-ts";
19556 + st,sample-time = <4>;
19557 + st,mod-12b = <1>;
19558 + st,ref-sel = <0>;
19559 + st,adc-freq = <2>;
19560 + st,ave-ctrl = <3>;
19561 + st,touch-det-delay = <4>;
19562 + st,settling = <2>;
19563 + st,fraction-z = <7>;
19564 + st,i-drive = <0>;
19567 + stmpe_gpio: stmpe_gpio {
19568 + #gpio-cells = <2>;
19569 + compatible = "st,stmpe-gpio";
19571 + * only GPIO2 is wired/available
19572 + * and it is wired to the backlight
19574 + st,norequest-mask = <0x7b>;
19581 + target-path = "/soc";
19584 + compatible = "gpio-backlight";
19585 + gpios = <&stmpe_gpio 2 0>;
19592 + speed = <&pitft>,"spi-max-frequency:0";
19593 + rotate = <&pitft>,"rotate:0";
19594 + fps = <&pitft>,"fps:0";
19595 + debug = <&pitft>,"debug:0";
19598 diff --git a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
19599 new file mode 100644
19600 index 000000000000..37629f18a740
19602 +++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
19605 + * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen
19613 + compatible = "brcm,bcm2835";
19616 + target = <&spi0>;
19623 + target = <&spidev0>;
19625 + status = "disabled";
19630 + target = <&spidev1>;
19632 + status = "disabled";
19637 + target = <&gpio>;
19639 + pitft_pins: pitft_pins {
19640 + brcm,pins = <24 25>;
19641 + brcm,function = <0 1>; /* in out */
19642 + brcm,pull = <2 0>; /* pullup none */
19648 + target = <&spi0>;
19650 + /* needed to avoid dtc warning */
19651 + #address-cells = <1>;
19652 + #size-cells = <0>;
19655 + compatible = "himax,hx8357d", "adafruit,yx350hv15";
19657 + pinctrl-names = "default";
19658 + pinctrl-0 = <&pitft_pins>;
19660 + spi-max-frequency = <32000000>;
19665 + dc-gpios = <&gpio 25 0>;
19670 + compatible = "st,stmpe610";
19673 + spi-max-frequency = <500000>;
19674 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
19675 + interrupts = <24 2>; /* high-to-low edge triggered */
19676 + interrupt-parent = <&gpio>;
19677 + interrupt-controller;
19679 + stmpe_touchscreen {
19680 + compatible = "st,stmpe-ts";
19681 + st,sample-time = <4>;
19682 + st,mod-12b = <1>;
19683 + st,ref-sel = <0>;
19684 + st,adc-freq = <2>;
19685 + st,ave-ctrl = <3>;
19686 + st,touch-det-delay = <4>;
19687 + st,settling = <2>;
19688 + st,fraction-z = <7>;
19689 + st,i-drive = <0>;
19692 + stmpe_gpio: stmpe_gpio {
19693 + #gpio-cells = <2>;
19694 + compatible = "st,stmpe-gpio";
19696 + * only GPIO2 is wired/available
19697 + * and it is wired to the backlight
19699 + st,norequest-mask = <0x7b>;
19706 + target-path = "/soc";
19709 + compatible = "gpio-backlight";
19710 + gpios = <&stmpe_gpio 2 0>;
19717 + speed = <&pitft>,"spi-max-frequency:0";
19718 + rotate = <&pitft>,"rotate:0";
19719 + fps = <&pitft>,"fps:0";
19720 + debug = <&pitft>,"debug:0";
19723 diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
19724 new file mode 100644
19725 index 000000000000..524a1c1d3670
19727 +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
19733 + compatible = "brcm,bcm2835";
19735 + target-path = "/";
19738 + compatible = "pps-gpio";
19739 + pinctrl-names = "default";
19740 + pinctrl-0 = <&pps_pins>;
19741 + gpios = <&gpio 18 0>;
19748 + target = <&gpio>;
19750 + pps_pins: pps_pins@12 {
19751 + brcm,pins = <18>;
19752 + brcm,function = <0>; // in
19753 + brcm,pull = <0>; // off
19759 + gpiopin = <&pps>,"gpios:4",
19761 + <&pps_pins>,"brcm,pins:0",
19762 + <&pps_pins>,"reg:0";
19763 + assert_falling_edge = <&pps>,"assert-falling-edge?";
19764 + capture_clear = <&pps>,"capture-clear?";
19767 diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
19768 new file mode 100644
19769 index 000000000000..4ddbbfa04065
19771 +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
19777 +This is the 2-channel overlay - only use it if you need both channels.
19779 +Legal pin,function combinations for each channel:
19780 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
19781 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
19784 + 1) Pin 18 is the only one available on all platforms, and
19785 + it is the one used by the I2S audio interface.
19786 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
19787 + 2) The onboard analogue audio output uses both PWM channels.
19788 + 3) So be careful mixing audio and PWM.
19792 + compatible = "brcm,bcm2835";
19795 + target = <&gpio>;
19797 + pwm_pins: pwm_pins {
19798 + brcm,pins = <18 19>;
19799 + brcm,function = <2 2>; /* Alt5 */
19806 + frag1: __overlay__ {
19807 + pinctrl-names = "default";
19808 + pinctrl-0 = <&pwm_pins>;
19809 + assigned-clock-rates = <100000000>;
19815 + pin = <&pwm_pins>,"brcm,pins:0";
19816 + pin2 = <&pwm_pins>,"brcm,pins:4";
19817 + func = <&pwm_pins>,"brcm,function:0";
19818 + func2 = <&pwm_pins>,"brcm,function:4";
19819 + clock = <&frag1>,"assigned-clock-rates:0";
19822 diff --git a/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
19823 new file mode 100644
19824 index 000000000000..119caf746b3b
19826 +++ b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
19832 + compatible = "brcm,bcm2835";
19835 + target = <&gpio>;
19837 + pwm0_pins: pwm0_pins {
19838 + brcm,pins = <18>;
19839 + brcm,function = <2>; /* Alt5 */
19847 + pinctrl-names = "default";
19848 + pinctrl-0 = <&pwm0_pins>;
19854 + target-path = "/";
19856 + pwm-ir-transmitter {
19857 + compatible = "pwm-ir-tx";
19858 + pwms = <&pwm 0 100>;
19864 + gpio_pin = <&pwm0_pins>, "brcm,pins:0";
19865 + func = <&pwm0_pins>,"brcm,function:0";
19868 diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts
19869 new file mode 100644
19870 index 000000000000..92876ab3bc8c
19872 +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
19878 +Legal pin,function combinations for each channel:
19879 + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
19880 + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
19883 + 1) Pin 18 is the only one available on all platforms, and
19884 + it is the one used by the I2S audio interface.
19885 + Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
19886 + 2) The onboard analogue audio output uses both PWM channels.
19887 + 3) So be careful mixing audio and PWM.
19891 + compatible = "brcm,bcm2835";
19894 + target = <&gpio>;
19896 + pwm_pins: pwm_pins {
19897 + brcm,pins = <18>;
19898 + brcm,function = <2>; /* Alt5 */
19905 + frag1: __overlay__ {
19906 + pinctrl-names = "default";
19907 + pinctrl-0 = <&pwm_pins>;
19908 + assigned-clock-rates = <100000000>;
19914 + pin = <&pwm_pins>,"brcm,pins:0";
19915 + func = <&pwm_pins>,"brcm,function:0";
19916 + clock = <&frag1>,"assigned-clock-rates:0";
19919 diff --git a/arch/arm/boot/dts/overlays/qca7000-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
19920 new file mode 100644
19921 index 000000000000..9a451202a2eb
19923 +++ b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
19925 +// Overlay for the Qualcomm Atheros QCA7000 on I2SE's PLC Stamp micro EVK
19926 +// Visit: https://www.i2se.com/product/plc-stamp-micro-evk for details
19932 + compatible = "brcm,bcm2835";
19935 + target = <&spidev0>;
19937 + status = "disabled";
19942 + target = <&spi0>;
19944 + /* needed to avoid dtc warning */
19945 + #address-cells = <1>;
19946 + #size-cells = <0>;
19950 + eth1: qca7000@0 {
19951 + compatible = "qca,qca7000";
19952 + reg = <0>; /* CE0 */
19953 + pinctrl-names = "default";
19954 + pinctrl-0 = <ð1_pins>;
19955 + interrupt-parent = <&gpio>;
19956 + interrupts = <23 0x1>; /* rising edge */
19957 + spi-max-frequency = <12000000>;
19964 + target = <&gpio>;
19966 + eth1_pins: eth1_pins {
19967 + brcm,pins = <23>;
19968 + brcm,function = <0>; /* in */
19969 + brcm,pull = <0>; /* none */
19975 + int_pin = <ð1>, "interrupts:0",
19976 + <ð1_pins>, "brcm,pins:0";
19977 + speed = <ð1>, "spi-max-frequency:0";
19980 diff --git a/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
19981 new file mode 100644
19982 index 000000000000..ea1d952734e9
19984 +++ b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
19986 +// Device tree overlay for GPIO connected rotary encoder.
19991 + compatible = "brcm,bcm2835";
19994 + target = <&gpio>;
19996 + rotary_pins: rotary_pins@4 {
19997 + brcm,pins = <4 17>; /* gpio 4 17 */
19998 + brcm,function = <0 0>; /* input */
19999 + brcm,pull = <2 2>; /* pull-up */
20006 + target-path = "/";
20008 + rotary: rotary@4 {
20009 + compatible = "rotary-encoder";
20011 + pinctrl-names = "default";
20012 + pinctrl-0 = <&rotary_pins>;
20013 + gpios = <&gpio 4 0>, <&gpio 17 0>;
20014 + linux,axis = <0>; /* REL_X */
20015 + rotary-encoder,encoding = "gray";
20016 + rotary-encoder,steps = <24>; /* 24 default */
20017 + rotary-encoder,steps-per-period = <1>; /* corresponds to full period mode. See README */
20024 + pin_a = <&rotary>,"gpios:4",
20025 + <&rotary_pins>,"brcm,pins:0",
20026 + /* modify reg values to allow multiple instantiation */
20027 + <&rotary>,"reg:0",
20028 + <&rotary_pins>,"reg:0";
20029 + pin_b = <&rotary>,"gpios:16",
20030 + <&rotary_pins>,"brcm,pins:4";
20031 + relative_axis = <&rotary>,"rotary-encoder,relative-axis?";
20032 + linux_axis = <&rotary>,"linux,axis:0";
20033 + rollover = <&rotary>,"rotary-encoder,rollover?";
20034 + steps-per-period = <&rotary>,"rotary-encoder,steps-per-period:0";
20035 + steps = <&rotary>,"rotary-encoder,steps:0";
20036 + wakeup = <&rotary>,"wakeup-source?";
20037 + encoding = <&rotary>,"rotary-encoder,encoding";
20038 + /* legacy parameters*/
20039 + rotary0_pin_a = <&rotary>,"gpios:4",
20040 + <&rotary_pins>,"brcm,pins:0";
20041 + rotary0_pin_b = <&rotary>,"gpios:16",
20042 + <&rotary_pins>,"brcm,pins:4";
20045 diff --git a/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
20046 new file mode 100644
20047 index 000000000000..cac5e44c6ec5
20049 +++ b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
20052 + * Devicetree overlay for mailbox-driven Raspberry Pi DSI Display
20053 + * backlight controller
20059 + compatible = "brcm,bcm2835";
20062 + target-path = "/";
20064 + rpi_backlight: rpi_backlight {
20065 + compatible = "raspberrypi,rpi-backlight";
20066 + firmware = <&firmware>;
20072 diff --git a/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
20073 new file mode 100644
20074 index 000000000000..ed0c2745399f
20076 +++ b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
20078 +// Definitions for the Cirrus Logic Audio Card
20081 +#include <dt-bindings/pinctrl/bcm2835.h>
20082 +#include <dt-bindings/gpio/gpio.h>
20083 +#include <dt-bindings/mfd/arizona.h>
20086 + compatible = "brcm,bcm2835";
20096 + target = <&gpio>;
20098 + wlf_5102_pins: wlf_5102_pins {
20099 + brcm,pins = <17 22 27>;
20100 + brcm,function = <
20101 + BCM2835_FSEL_GPIO_OUT
20102 + BCM2835_FSEL_GPIO_OUT
20103 + BCM2835_FSEL_GPIO_IN
20106 + wlf_8804_pins: wlf_8804_pins {
20108 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
20114 + target = <&spi0_cs_pins>;
20117 + brcm,function = <BCM2835_FSEL_GPIO_OUT>;
20123 + target-path = "/";
20125 + rpi_cirrus_reg_1v8: rpi_cirrus_reg_1v8 {
20126 + compatible = "regulator-fixed";
20127 + regulator-name = "RPi-Cirrus 1v8";
20128 + regulator-min-microvolt = <1800000>;
20129 + regulator-max-microvolt = <1800000>;
20130 + regulator-always-on;
20136 + target = <&spidev0>;
20138 + status = "disabled";
20143 + target = <&spidev1>;
20145 + status = "disabled";
20150 + target = <&spi0>;
20152 + #address-cells = <1>;
20153 + #size-cells = <0>;
20155 + cs-gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
20158 + compatible = "wlf,wm5102";
20161 + pinctrl-names = "default";
20162 + pinctrl-0 = <&wlf_5102_pins>;
20164 + spi-max-frequency = <500000>;
20166 + interrupt-parent = <&gpio>;
20167 + interrupts = <27 8>;
20168 + interrupt-controller;
20169 + #interrupt-cells = <2>;
20172 + #gpio-cells = <2>;
20174 + LDOVDD-supply = <&rpi_cirrus_reg_1v8>;
20175 + AVDD-supply = <&rpi_cirrus_reg_1v8>;
20176 + DBVDD1-supply = <&rpi_cirrus_reg_1v8>;
20177 + DBVDD2-supply = <&vdd_3v3_reg>;
20178 + DBVDD3-supply = <&vdd_3v3_reg>;
20179 + CPVDD-supply = <&rpi_cirrus_reg_1v8>;
20180 + SPKVDDL-supply = <&vdd_5v0_reg>;
20181 + SPKVDDR-supply = <&vdd_5v0_reg>;
20182 + DCVDD-supply = <&arizona_ldo1>;
20184 + reset-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
20185 + wlf,ldoena = <&gpio 22 GPIO_ACTIVE_HIGH>;
20186 + wlf,gpio-defaults = <
20187 + ARIZONA_GP_DEFAULT
20188 + ARIZONA_GP_DEFAULT
20189 + ARIZONA_GP_DEFAULT
20190 + ARIZONA_GP_DEFAULT
20191 + ARIZONA_GP_DEFAULT
20193 + wlf,micd-configs = <0 1 0>;
20195 + ARIZONA_DMIC_MICVDD
20196 + ARIZONA_DMIC_MICBIAS2
20197 + ARIZONA_DMIC_MICVDD
20198 + ARIZONA_DMIC_MICVDD
20201 + ARIZONA_INMODE_DIFF
20202 + ARIZONA_INMODE_DMIC
20203 + ARIZONA_INMODE_SE
20204 + ARIZONA_INMODE_DIFF
20208 + arizona_ldo1: ldo1 {
20209 + regulator-name = "LDO1";
20210 + // default constraints as in
20211 + // arizona-ldo1.c
20212 + regulator-min-microvolt = <1200000>;
20213 + regulator-max-microvolt = <1800000>;
20220 + target = <&i2c1>;
20223 + #address-cells = <1>;
20224 + #size-cells = <0>;
20227 + compatible = "wlf,wm8804";
20231 + pinctrl-names = "default";
20232 + pinctrl-0 = <&wlf_8804_pins>;
20234 + PVDD-supply = <&vdd_3v3_reg>;
20235 + DVDD-supply = <&vdd_3v3_reg>;
20236 + wlf,reset-gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
20242 + target = <&sound>;
20244 + compatible = "wlf,rpi-cirrus";
20245 + i2s-controller = <&i2s>;
20250 diff --git a/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
20251 new file mode 100644
20252 index 000000000000..07a915342702
20254 +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
20256 +// Definitions for RPi DAC
20261 + compatible = "brcm,bcm2835";
20271 + target-path = "/";
20274 + #sound-dai-cells = <0>;
20275 + compatible = "ti,pcm1794a";
20282 + target = <&sound>;
20284 + compatible = "rpi,rpi-dac";
20285 + i2s-controller = <&i2s>;
20290 diff --git a/arch/arm/boot/dts/overlays/rpi-display-overlay.dts b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
20291 new file mode 100644
20292 index 000000000000..de87432ff2be
20294 +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
20297 + * Device Tree overlay for rpi-display by Watterott
20305 + compatible = "brcm,bcm2835";
20308 + target = <&spi0>;
20315 + target = <&spidev0>;
20317 + status = "disabled";
20322 + target = <&spidev1>;
20324 + status = "disabled";
20329 + target = <&gpio>;
20331 + rpi_display_pins: rpi_display_pins {
20332 + brcm,pins = <18 23 24 25>;
20333 + brcm,function = <1 1 1 0>; /* out out out in */
20334 + brcm,pull = <0 0 0 2>; /* - - - up */
20340 + target = <&spi0>;
20342 + /* needed to avoid dtc warning */
20343 + #address-cells = <1>;
20344 + #size-cells = <0>;
20346 + rpidisplay: rpi-display@0{
20347 + compatible = "ilitek,ili9341";
20349 + pinctrl-names = "default";
20350 + pinctrl-0 = <&rpi_display_pins>;
20352 + spi-max-frequency = <32000000>;
20357 + reset-gpios = <&gpio 23 1>;
20358 + dc-gpios = <&gpio 24 0>;
20359 + led-gpios = <&gpio 18 0>;
20363 + rpidisplay_ts: rpi-display-ts@1 {
20364 + compatible = "ti,ads7846";
20367 + spi-max-frequency = <2000000>;
20368 + interrupts = <25 2>; /* high-to-low edge triggered */
20369 + interrupt-parent = <&gpio>;
20370 + pendown-gpio = <&gpio 25 1>;
20371 + ti,x-plate-ohms = /bits/ 16 <60>;
20372 + ti,pressure-max = /bits/ 16 <255>;
20377 + speed = <&rpidisplay>,"spi-max-frequency:0";
20378 + rotate = <&rpidisplay>,"rotate:0";
20379 + fps = <&rpidisplay>,"fps:0";
20380 + debug = <&rpidisplay>,"debug:0";
20381 + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
20382 + swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
20383 + backlight = <&rpidisplay>,"led-gpios:4",
20384 + <&rpi_display_pins>,"brcm,pins:0";
20387 diff --git a/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
20388 new file mode 100644
20389 index 000000000000..8483c4f4b2eb
20391 +++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
20397 + compatible = "brcm,bcm2835";
20400 + target-path = "/soc/firmware";
20402 + ts: touchscreen {
20403 + compatible = "raspberrypi,firmware-ts";
20404 + touchscreen-size-x = <800>;
20405 + touchscreen-size-y = <480>;
20411 + touchscreen-size-x = <&ts>,"touchscreen-size-x:0";
20412 + touchscreen-size-y = <&ts>,"touchscreen-size-y:0";
20413 + touchscreen-inverted-x = <&ts>,"touchscreen-inverted-x?";
20414 + touchscreen-inverted-y = <&ts>,"touchscreen-inverted-y?";
20415 + touchscreen-swapped-x-y = <&ts>,"touchscreen-swapped-x-y?";
20418 diff --git a/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
20419 new file mode 100644
20420 index 000000000000..544038b614e1
20422 +++ b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
20425 + * Overlay for the Raspberry Pi POE HAT.
20431 + compatible = "brcm,bcm2835";
20434 + target-path = "/";
20436 + fan0: rpi-poe-fan@0 {
20437 + compatible = "raspberrypi,rpi-poe-fan";
20438 + firmware = <&firmware>;
20439 + cooling-min-state = <0>;
20440 + cooling-max-state = <4>;
20441 + #cooling-cells = <2>;
20442 + cooling-levels = <0 31 63 150 255>;
20449 + target = <&cpu_thermal>;
20453 + temperature = <40000>;
20454 + hysteresis = <2000>;
20458 + temperature = <45000>;
20459 + hysteresis = <2000>;
20463 + temperature = <50000>;
20464 + hysteresis = <2000>;
20468 + temperature = <55000>;
20469 + hysteresis = <5000>;
20476 + cooling-device = <&fan0 0 1>;
20480 + cooling-device = <&fan0 1 2>;
20484 + cooling-device = <&fan0 2 3>;
20488 + cooling-device = <&fan0 3 4>;
20495 + target-path = "/__overrides__";
20497 + poe_fan_temp0 = <&trip0>,"temperature:0";
20498 + poe_fan_temp0_hyst = <&trip0>,"hysteresis:0";
20499 + poe_fan_temp1 = <&trip1>,"temperature:0";
20500 + poe_fan_temp1_hyst = <&trip1>,"hysteresis:0";
20501 + poe_fan_temp2 = <&trip2>,"temperature:0";
20502 + poe_fan_temp2_hyst = <&trip2>,"hysteresis:0";
20503 + poe_fan_temp3 = <&trip3>,"temperature:0";
20504 + poe_fan_temp3_hyst = <&trip3>,"hysteresis:0";
20509 + poe_fan_temp0 = <&trip0>,"temperature:0";
20510 + poe_fan_temp0_hyst = <&trip0>,"hysteresis:0";
20511 + poe_fan_temp1 = <&trip1>,"temperature:0";
20512 + poe_fan_temp1_hyst = <&trip1>,"hysteresis:0";
20513 + poe_fan_temp2 = <&trip2>,"temperature:0";
20514 + poe_fan_temp2_hyst = <&trip2>,"hysteresis:0";
20515 + poe_fan_temp3 = <&trip3>,"temperature:0";
20516 + poe_fan_temp3_hyst = <&trip3>,"hysteresis:0";
20519 diff --git a/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
20520 new file mode 100644
20521 index 000000000000..9cda044a0f62
20523 +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
20525 +// Definitions for Rpi-Proto
20530 + compatible = "brcm,bcm2835";
20540 + target = <&i2c1>;
20542 + #address-cells = <1>;
20543 + #size-cells = <0>;
20547 + #sound-dai-cells = <0>;
20548 + compatible = "wlf,wm8731";
20556 + target = <&sound>;
20558 + compatible = "rpi,rpi-proto";
20559 + i2s-controller = <&i2s>;
20564 diff --git a/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
20565 new file mode 100644
20566 index 000000000000..89d8d2ea6b2e
20568 +++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
20575 + compatible = "brcm,bcm2835";
20578 + target = <&i2c1>;
20580 + #address-cells = <1>;
20581 + #size-cells = <0>;
20585 + compatible = "rpi,rpi-sense";
20587 + keys-int-gpios = <&gpio 23 1>;
20591 + lsm9ds1-magn@1c {
20592 + compatible = "st,lsm9ds1-magn";
20597 + lsm9ds1-accel6a {
20598 + compatible = "st,lsm9ds1-accel";
20603 + lps25h-press@5c {
20604 + compatible = "st,lps25h-press";
20609 + hts221-humid@5f {
20610 + compatible = "st,hts221-humid", "st,hts221";
20617 diff --git a/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
20618 new file mode 100644
20619 index 000000000000..3c97a545d820
20621 +++ b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
20629 + compatible = "brcm,bcm2835";
20632 + target = <&spidev0>;
20634 + status = "disabled";
20639 + target = <&spi0>;
20641 + /* needed to avoid dtc warning */
20642 + #address-cells = <1>;
20643 + #size-cells = <0>;
20648 + compatible = "sony,cxd2880";
20649 + reg = <0>; /* CE0 */
20650 + spi-max-frequency = <50000000>;
20657 diff --git a/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts b/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
20658 new file mode 100644
20659 index 000000000000..0a611b31b9d4
20661 +++ b/arch/arm/boot/dts/overlays/rpivid-v4l2-overlay.dts
20663 +// SPDX-License-Identifier: GPL-2.0-only
20664 +// Definitions for Raspberry Pi video decode engine
20668 +#include <dt-bindings/interrupt-controller/arm-gic.h>
20671 + compatible = "brcm,bcm2711";
20676 + /* needed to avoid dtc warning */
20677 + #address-cells = <2>;
20678 + #size-cells = <2>;
20681 + compatible = "raspberrypi,rpivid-vid-decoder";
20682 + reg = <0x0 0x7eb10000 0x0 0x1000>, /* INTC */
20683 + <0x0 0x7eb00000 0x0 0x10000>; /* HEVC */
20684 + reg-names = "intc",
20687 + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
20689 + clocks = <&hevc_clk>;
20690 + clock-names = "hevc";
20698 + hevc-decoder@7eb00000 {
20699 + status = "disabled";
20701 + rpivid-local-intc@7eb10000 {
20702 + status = "disabled";
20704 + h264-decoder@7eb20000 {
20705 + status = "disabled";
20707 + vp9-decoder@7eb30000 {
20708 + status = "disabled";
20714 + target-path = "/";
20716 + hevc_clk: hevc_clk {
20717 + compatible = "fixed-clock";
20718 + #clock-cells = <0>;
20719 + clock-frequency = <500000000>;
20724 diff --git a/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
20725 new file mode 100644
20726 index 000000000000..87e9a326eff1
20728 +++ b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
20730 +// Definitions for RRA DigiDAC1 Audio card
20735 + compatible = "brcm,bcm2835";
20745 + target = <&i2c1>;
20747 + #address-cells = <1>;
20748 + #size-cells = <0>;
20752 + #sound-dai-cells = <0>;
20753 + compatible = "wlf,wm8804";
20756 + PVDD-supply = <&vdd_3v3_reg>;
20757 + DVDD-supply = <&vdd_3v3_reg>;
20760 + wm8742: wm8741@1a {
20761 + compatible = "wlf,wm8741";
20764 + AVDD-supply = <&vdd_5v0_reg>;
20765 + DVDD-supply = <&vdd_3v3_reg>;
20771 + target = <&sound>;
20773 + compatible = "rra,digidac1-soundcard";
20774 + i2s-controller = <&i2s>;
20779 diff --git a/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
20780 new file mode 100644
20781 index 000000000000..c51f1c030a55
20783 +++ b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
20786 + * Device Tree overlay for the Sainsmart 1.8" TFT LCD with ST7735R chip 160x128
20793 + compatible = "brcm,bcm2835";
20796 + target = <&spidev0>;
20798 + status = "disabled";
20803 + target = <&spi0>;
20805 + /* needed to avoid dtc warning */
20806 + #address-cells = <1>;
20807 + #size-cells = <0>;
20810 + ss18: sainsmart18@0 {
20811 + compatible = "fbtft,sainsmart18";
20813 + pinctrl-names = "default";
20814 + spi-max-frequency = <40000000>;
20820 + reset-gpios = <&gpio 25 1>;
20821 + dc-gpios = <&gpio 24 0>;
20828 + speed = <&ss18>,"spi-max-frequency:0";
20829 + rotate = <&ss18>,"rotate:0";
20830 + fps = <&ss18>,"fps:0";
20831 + bgr = <&ss18>,"bgr?";
20832 + debug = <&ss18>,"debug:0";
20833 + dc_pin = <&ss18>,"dc-gpios:4";
20834 + reset_pin = <&ss18>,"reset-gpios:4";
20837 diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
20838 new file mode 100644
20839 index 000000000000..04d74d62897b
20841 +++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
20847 + compatible = "brcm,bcm2835";
20850 + target = <&i2c_arm>;
20852 + #address-cells = <1>;
20853 + #size-cells = <0>;
20856 + sc16is750: sc16is750@48 {
20857 + compatible = "nxp,sc16is750";
20858 + reg = <0x48>; /* i2c address */
20859 + clocks = <&sc16is750_clk>;
20860 + interrupt-parent = <&gpio>;
20861 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
20863 + #gpio-cells = <2>;
20864 + i2c-max-frequency = <400000>;
20870 + target-path = "/";
20872 + sc16is750_clk: sc16is750_i2c_clk@48 {
20873 + compatible = "fixed-clock";
20874 + #clock-cells = <0>;
20875 + clock-frequency = <14745600>;
20881 + int_pin = <&sc16is750>,"interrupts:0";
20882 + addr = <&sc16is750>,"reg:0", <&sc16is750_clk>,"name";
20883 + xtal = <&sc16is750_clk>,"clock-frequency:0";
20886 diff --git a/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
20887 new file mode 100644
20888 index 000000000000..da05e981314c
20890 +++ b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
20896 + compatible = "brcm,bcm2835";
20899 + target = <&i2c_arm>;
20901 + #address-cells = <1>;
20902 + #size-cells = <0>;
20905 + sc16is752: sc16is752@48 {
20906 + compatible = "nxp,sc16is752";
20907 + reg = <0x48>; /* i2c address */
20908 + clocks = <&sc16is752_clk>;
20909 + interrupt-parent = <&gpio>;
20910 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
20912 + #gpio-cells = <2>;
20913 + i2c-max-frequency = <400000>;
20919 + target-path = "/";
20921 + sc16is752_clk: sc16is752_i2c_clk@48 {
20922 + compatible = "fixed-clock";
20923 + #clock-cells = <0>;
20924 + clock-frequency = <14745600>;
20930 + int_pin = <&sc16is752>,"interrupts:0";
20931 + addr = <&sc16is752>,"reg:0",<&sc16is752_clk>,"name";
20932 + xtal = <&sc16is752_clk>,"clock-frequency:0";
20935 diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
20936 new file mode 100644
20937 index 000000000000..a49a04722b99
20939 +++ b/arch/arm/boot/dts/overlays/sc16is752-spi0-overlay.dts
20945 + compatible = "brcm,bcm2835";
20948 + target = <&spi0>;
20950 + #address-cells = <1>;
20951 + #size-cells = <0>;
20954 + sc16is752: sc16is752@0 {
20955 + compatible = "nxp,sc16is752";
20956 + reg = <0>; /* CE0 */
20957 + clocks = <&sc16is752_clk>;
20958 + interrupt-parent = <&gpio>;
20959 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
20961 + #gpio-cells = <2>;
20962 + spi-max-frequency = <4000000>;
20968 + target = <&spidev0>;
20970 + status = "disabled";
20975 + target-path = "/";
20977 + sc16is752_clk: sc16is752_spi0_0_clk {
20978 + compatible = "fixed-clock";
20979 + #clock-cells = <0>;
20980 + clock-frequency = <14745600>;
20986 + int_pin = <&sc16is752>,"interrupts:0";
20987 + xtal = <&sc16is752_clk>,"clock-frequency:0";
20990 diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
20991 new file mode 100644
20992 index 000000000000..730c6e8cd614
20994 +++ b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts
21000 + compatible = "brcm,bcm2835";
21003 + target = <&gpio>;
21005 + spi1_pins: spi1_pins {
21006 + brcm,pins = <19 20 21>;
21007 + brcm,function = <3>; /* alt4 */
21010 + spi1_cs_pins: spi1_cs_pins {
21011 + brcm,pins = <18>;
21012 + brcm,function = <1>; /* output */
21018 + target = <&spi1>;
21020 + #address-cells = <1>;
21021 + #size-cells = <0>;
21022 + pinctrl-names = "default";
21023 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
21024 + cs-gpios = <&gpio 18 1>;
21027 + sc16is752: sc16is752@0 {
21028 + compatible = "nxp,sc16is752";
21029 + reg = <0>; /* CE0 */
21030 + clocks = <&sc16is752_clk>;
21031 + interrupt-parent = <&gpio>;
21032 + interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
21034 + #gpio-cells = <2>;
21035 + spi-max-frequency = <4000000>;
21048 + target-path = "/";
21050 + sc16is752_clk: sc16is752_spi1_0_clk {
21051 + compatible = "fixed-clock";
21052 + #clock-cells = <0>;
21053 + clock-frequency = <14745600>;
21059 + int_pin = <&sc16is752>,"interrupts:0";
21060 + xtal = <&sc16is752_clk>,"clock-frequency:0";
21063 diff --git a/arch/arm/boot/dts/overlays/sdhost-overlay.dts b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
21064 new file mode 100644
21065 index 000000000000..0b72b4eeac88
21067 +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
21072 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
21075 + compatible = "brcm,bcm2835";
21078 + target = <&sdhost>;
21079 + frag0: __overlay__ {
21080 + brcm,overclock-50 = <0>;
21081 + brcm,pio-limit = <1>;
21089 + status = "disabled";
21094 + target = <&mmcnr>;
21096 + status = "disabled";
21101 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
21102 + force_pio = <&frag0>,"brcm,force-pio?";
21103 + pio_limit = <&frag0>,"brcm,pio-limit:0";
21104 + debug = <&frag0>,"brcm,debug?";
21107 diff --git a/arch/arm/boot/dts/overlays/sdio-overlay.dts b/arch/arm/boot/dts/overlays/sdio-overlay.dts
21108 new file mode 100644
21109 index 000000000000..873e49056379
21111 +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
21116 +/* Enable SDIO from MMC interface via various GPIO groups */
21119 + compatible = "brcm,bcm2835";
21122 + target = <&mmcnr>;
21124 + status = "disabled";
21130 + sdio_ovl: __overlay__ {
21131 + pinctrl-0 = <&sdio_ovl_pins>;
21132 + pinctrl-names = "default";
21140 + target = <&gpio>;
21142 + sdio_ovl_pins: sdio_ovl_pins {
21143 + brcm,pins = <22 23 24 25 26 27>;
21144 + brcm,function = <7>; /* ALT3 = SD1 */
21145 + brcm,pull = <0 2 2 2 2 2>;
21151 + target = <&sdio_ovl_pins>;
21153 + brcm,pins = <22 23 24 25>;
21154 + brcm,pull = <0 2 2 2>;
21159 + target = <&sdio_ovl_pins>;
21161 + brcm,pins = <34 35 36 37>;
21162 + brcm,pull = <0 2 2 2>;
21167 + target = <&sdio_ovl_pins>;
21169 + brcm,pins = <34 35 36 37 38 39>;
21170 + brcm,pull = <0 2 2 2 2 2>;
21175 + target-path = "/aliases";
21177 + mmc1 = "/soc/mmc@7e300000";
21182 + poll_once = <&sdio_ovl>,"non-removable?";
21183 + bus_width = <&sdio_ovl>,"bus-width:0";
21184 + sdio_overclock = <&sdio_ovl>,"brcm,overclock-50:0";
21185 + gpios_22_25 = <0>,"=3";
21186 + gpios_34_37 = <0>,"=4";
21187 + gpios_34_39 = <0>,"=5";
21190 diff --git a/arch/arm/boot/dts/overlays/sdtweak-overlay.dts b/arch/arm/boot/dts/overlays/sdtweak-overlay.dts
21191 new file mode 100644
21192 index 000000000000..38157d2f9bf3
21194 +++ b/arch/arm/boot/dts/overlays/sdtweak-overlay.dts
21199 +/* Provide backwards compatible aliases for the old sdhost dtparams. */
21202 + compatible = "brcm,bcm2835";
21205 + target = <&sdhost>;
21206 + frag0: __overlay__ {
21207 + brcm,overclock-50 = <0>;
21208 + brcm,pio-limit = <1>;
21213 + overclock_50 = <&frag0>,"brcm,overclock-50:0";
21214 + force_pio = <&frag0>,"brcm,force-pio?";
21215 + pio_limit = <&frag0>,"brcm,pio-limit:0";
21216 + debug = <&frag0>,"brcm,debug?";
21217 + enable = <&frag0>,"status";
21218 + poll_once = <&frag0>,"non-removable?";
21221 diff --git a/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
21222 new file mode 100644
21223 index 000000000000..57a0cc9b1741
21225 +++ b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
21228 + * Device Tree overlay for SH1106 based SPI OLED display
21236 + compatible = "brcm,bcm2835";
21239 + target = <&spi0>;
21246 + target = <&spidev0>;
21248 + status = "disabled";
21253 + target = <&spidev1>;
21255 + status = "disabled";
21260 + target = <&gpio>;
21262 + sh1106_pins: sh1106_pins {
21263 + brcm,pins = <25 24>;
21264 + brcm,function = <1 1>; /* out out */
21270 + target = <&spi0>;
21272 + /* needed to avoid dtc warning */
21273 + #address-cells = <1>;
21274 + #size-cells = <0>;
21276 + sh1106: sh1106@0{
21277 + compatible = "sinowealth,sh1106";
21279 + pinctrl-names = "default";
21280 + pinctrl-0 = <&sh1106_pins>;
21282 + spi-max-frequency = <4000000>;
21288 + reset-gpios = <&gpio 25 1>;
21289 + dc-gpios = <&gpio 24 0>;
21292 + sinowealth,height = <64>;
21293 + sinowealth,width = <128>;
21294 + sinowealth,page-offset = <0>;
21300 + speed = <&sh1106>,"spi-max-frequency:0";
21301 + rotate = <&sh1106>,"rotate:0";
21302 + fps = <&sh1106>,"fps:0";
21303 + debug = <&sh1106>,"debug:0";
21304 + dc_pin = <&sh1106>,"dc-gpios:4",
21305 + <&sh1106_pins>,"brcm,pins:4";
21306 + reset_pin = <&sh1106>,"reset-gpios:4",
21307 + <&sh1106_pins>,"brcm,pins:0";
21308 + height = <&sh1106>,"sinowealth,height:0";
21311 diff --git a/arch/arm/boot/dts/overlays/smi-dev-overlay.dts b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
21312 new file mode 100644
21313 index 000000000000..bafab6c92506
21315 +++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
21317 +// Description: Overlay to enable character device interface for SMI.
21318 +// Author: Luke Wren <luke@raspberrypi.org>
21324 + compatible = "brcm,bcm2835";
21330 + compatible = "brcm,bcm2835-smi-dev";
21331 + smi_handle = <&smi>;
21337 diff --git a/arch/arm/boot/dts/overlays/smi-nand-overlay.dts b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
21338 new file mode 100644
21339 index 000000000000..ae1e50329d66
21341 +++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
21343 +// Description: Overlay to enable NAND flash through
21344 +// the secondary memory interface
21345 +// Author: Luke Wren
21351 + compatible = "brcm,bcm2835";
21356 + pinctrl-names = "default";
21357 + pinctrl-0 = <&smi_pins>;
21366 + compatible = "brcm,bcm2835-smi-nand";
21367 + smi_handle = <&smi>;
21368 + #address-cells = <1>;
21369 + #size-cells = <1>;
21373 + label = "stage2";
21375 + reg = <0 0x20000>;
21379 + label = "firmware";
21381 + reg = <0x20000 0x1000000>;
21386 + // 2G (will need to use 64 bit for >=4G)
21387 + reg = <0x1020000 0x80000000>;
21394 + target = <&gpio>;
21396 + smi_pins: smi_pins {
21397 + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
21400 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5
21402 + /* /CS, /WE and /OE are pulled high, as they are
21403 + generally active low signals */
21404 + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
21409 diff --git a/arch/arm/boot/dts/overlays/smi-overlay.dts b/arch/arm/boot/dts/overlays/smi-overlay.dts
21410 new file mode 100644
21411 index 000000000000..bb8c7830df23
21413 +++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
21415 +// Description: Overlay to enable the secondary memory interface peripheral
21416 +// Author: Luke Wren
21422 + compatible = "brcm,bcm2835";
21427 + pinctrl-names = "default";
21428 + pinctrl-0 = <&smi_pins>;
21434 + target = <&gpio>;
21436 + smi_pins: smi_pins {
21437 + /* Don't configure the top two address bits, as
21438 + these are already used as ID_SD and ID_SC */
21439 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15
21440 + 16 17 18 19 20 21 22 23 24 25>;
21442 + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
21443 + 5 5 5 5 5 5 5 5 5>;
21444 + /* /CS, /WE and /OE are pulled high, as they are
21445 + generally active low signals */
21446 + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
21452 diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
21453 new file mode 100644
21454 index 000000000000..a132b8637c31
21456 +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
21459 + * Device tree overlay to move spi0 to gpio 35 to 39 on CM
21466 + compatible = "brcm,bcm2835";
21469 + target = <&spi0>;
21471 + cs-gpios = <&gpio 36 1>, <&gpio 35 1>;
21476 + target = <&spi0_cs_pins>;
21478 + brcm,pins = <36 35>;
21483 + target = <&spi0_pins>;
21485 + brcm,pins = <37 38 39>;
21489 diff --git a/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
21490 new file mode 100644
21491 index 000000000000..9ebcaf1b5ea0
21493 +++ b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
21496 + * Boot EEPROM overlay
21503 + compatible = "brcm,bcm2835";
21506 + target = <&spi0>;
21508 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
21514 + target = <&spi0_cs_pins>;
21516 + brcm,pins = <45 44 43>;
21517 + brcm,function = <1>; /* output */
21523 + target = <&spi0_pins>;
21525 + brcm,pins = <40 41 42>;
21526 + brcm,function = <3>; /* alt4 */
21531 diff --git a/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
21532 new file mode 100644
21533 index 000000000000..9664afc9845c
21535 +++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
21541 + compatible = "brcm,bcm2835";
21544 + target = <&spidev0>;
21546 + status = "disabled";
21551 + target = <&spi0>;
21553 + #address-cells = <1>;
21554 + #size-cells = <0>;
21558 + compatible = "nxp,rtc-pcf2123";
21559 + spi-max-frequency = <5000000>;
21560 + spi-cs-high = <1>;
21567 + pcf2123 = <0>, "=0=1";
21570 diff --git a/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
21571 new file mode 100644
21572 index 000000000000..e6eb66e2076a
21574 +++ b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
21581 + compatible = "brcm,bcm2835";
21584 + target = <&spi0_cs_pins>;
21585 + frag0: __overlay__ {
21591 + target = <&spi0>;
21592 + frag1: __overlay__ {
21593 + cs-gpios = <&gpio 8 1>;
21599 + target = <&spidev1>;
21601 + status = "disabled";
21606 + target = <&spi0_pins>;
21608 + brcm,pins = <10 11>;
21613 + cs0_pin = <&frag0>,"brcm,pins:0",
21614 + <&frag1>,"cs-gpios:4";
21615 + no_miso = <0>,"=3";
21618 diff --git a/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
21619 new file mode 100644
21620 index 000000000000..df6519537c3a
21622 +++ b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
21629 + compatible = "brcm,bcm2835";
21632 + target = <&spi0_cs_pins>;
21633 + frag0: __overlay__ {
21634 + brcm,pins = <8 7>;
21639 + target = <&spi0>;
21640 + frag1: __overlay__ {
21641 + cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
21647 + target = <&spi0_pins>;
21649 + brcm,pins = <10 11>;
21654 + cs0_pin = <&frag0>,"brcm,pins:0",
21655 + <&frag1>,"cs-gpios:4";
21656 + cs1_pin = <&frag0>,"brcm,pins:4",
21657 + <&frag1>,"cs-gpios:16";
21658 + no_miso = <0>,"=2";
21661 diff --git a/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
21662 new file mode 100644
21663 index 000000000000..ea2794bc5fd5
21665 +++ b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
21672 + compatible = "brcm,bcm2835";
21675 + target = <&gpio>;
21677 + spi1_pins: spi1_pins {
21678 + brcm,pins = <19 20 21>;
21679 + brcm,function = <3>; /* alt4 */
21682 + spi1_cs_pins: spi1_cs_pins {
21683 + brcm,pins = <18>;
21684 + brcm,function = <1>; /* output */
21690 + target = <&spi1>;
21691 + frag1: __overlay__ {
21692 + /* needed to avoid dtc warning */
21693 + #address-cells = <1>;
21694 + #size-cells = <0>;
21695 + pinctrl-names = "default";
21696 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
21697 + cs-gpios = <&gpio 18 1>;
21700 + spidev1_0: spidev@0 {
21701 + compatible = "spidev";
21702 + reg = <0>; /* CE0 */
21703 + #address-cells = <1>;
21704 + #size-cells = <0>;
21705 + spi-max-frequency = <125000000>;
21719 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
21720 + <&frag1>,"cs-gpios:4";
21721 + cs0_spidev = <&spidev1_0>,"status";
21724 diff --git a/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
21725 new file mode 100644
21726 index 000000000000..dab34ee79ae2
21728 +++ b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
21735 + compatible = "brcm,bcm2835";
21738 + target = <&gpio>;
21740 + spi1_pins: spi1_pins {
21741 + brcm,pins = <19 20 21>;
21742 + brcm,function = <3>; /* alt4 */
21745 + spi1_cs_pins: spi1_cs_pins {
21746 + brcm,pins = <18 17>;
21747 + brcm,function = <1>; /* output */
21753 + target = <&spi1>;
21754 + frag1: __overlay__ {
21755 + /* needed to avoid dtc warning */
21756 + #address-cells = <1>;
21757 + #size-cells = <0>;
21758 + pinctrl-names = "default";
21759 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
21760 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>;
21763 + spidev1_0: spidev@0 {
21764 + compatible = "spidev";
21765 + reg = <0>; /* CE0 */
21766 + #address-cells = <1>;
21767 + #size-cells = <0>;
21768 + spi-max-frequency = <125000000>;
21772 + spidev1_1: spidev@1 {
21773 + compatible = "spidev";
21774 + reg = <1>; /* CE1 */
21775 + #address-cells = <1>;
21776 + #size-cells = <0>;
21777 + spi-max-frequency = <125000000>;
21791 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
21792 + <&frag1>,"cs-gpios:4";
21793 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
21794 + <&frag1>,"cs-gpios:16";
21795 + cs0_spidev = <&spidev1_0>,"status";
21796 + cs1_spidev = <&spidev1_1>,"status";
21799 diff --git a/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
21800 new file mode 100644
21801 index 000000000000..bc7e7d04324b
21803 +++ b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
21810 + compatible = "brcm,bcm2835";
21813 + target = <&gpio>;
21815 + spi1_pins: spi1_pins {
21816 + brcm,pins = <19 20 21>;
21817 + brcm,function = <3>; /* alt4 */
21820 + spi1_cs_pins: spi1_cs_pins {
21821 + brcm,pins = <18 17 16>;
21822 + brcm,function = <1>; /* output */
21828 + target = <&spi1>;
21829 + frag1: __overlay__ {
21830 + /* needed to avoid dtc warning */
21831 + #address-cells = <1>;
21832 + #size-cells = <0>;
21833 + pinctrl-names = "default";
21834 + pinctrl-0 = <&spi1_pins &spi1_cs_pins>;
21835 + cs-gpios = <&gpio 18 1>, <&gpio 17 1>, <&gpio 16 1>;
21838 + spidev1_0: spidev@0 {
21839 + compatible = "spidev";
21840 + reg = <0>; /* CE0 */
21841 + #address-cells = <1>;
21842 + #size-cells = <0>;
21843 + spi-max-frequency = <125000000>;
21847 + spidev1_1: spidev@1 {
21848 + compatible = "spidev";
21849 + reg = <1>; /* CE1 */
21850 + #address-cells = <1>;
21851 + #size-cells = <0>;
21852 + spi-max-frequency = <125000000>;
21856 + spidev1_2: spidev@2 {
21857 + compatible = "spidev";
21858 + reg = <2>; /* CE2 */
21859 + #address-cells = <1>;
21860 + #size-cells = <0>;
21861 + spi-max-frequency = <125000000>;
21875 + cs0_pin = <&spi1_cs_pins>,"brcm,pins:0",
21876 + <&frag1>,"cs-gpios:4";
21877 + cs1_pin = <&spi1_cs_pins>,"brcm,pins:4",
21878 + <&frag1>,"cs-gpios:16";
21879 + cs2_pin = <&spi1_cs_pins>,"brcm,pins:8",
21880 + <&frag1>,"cs-gpios:28";
21881 + cs0_spidev = <&spidev1_0>,"status";
21882 + cs1_spidev = <&spidev1_1>,"status";
21883 + cs2_spidev = <&spidev1_2>,"status";
21886 diff --git a/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
21887 new file mode 100644
21888 index 000000000000..2a29750462af
21890 +++ b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
21897 + compatible = "brcm,bcm2835";
21900 + target = <&gpio>;
21902 + spi2_pins: spi2_pins {
21903 + brcm,pins = <40 41 42>;
21904 + brcm,function = <3>; /* alt4 */
21907 + spi2_cs_pins: spi2_cs_pins {
21908 + brcm,pins = <43>;
21909 + brcm,function = <1>; /* output */
21915 + target = <&spi2>;
21916 + frag1: __overlay__ {
21917 + /* needed to avoid dtc warning */
21918 + #address-cells = <1>;
21919 + #size-cells = <0>;
21920 + pinctrl-names = "default";
21921 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
21922 + cs-gpios = <&gpio 43 1>;
21925 + spidev2_0: spidev@0 {
21926 + compatible = "spidev";
21927 + reg = <0>; /* CE0 */
21928 + #address-cells = <1>;
21929 + #size-cells = <0>;
21930 + spi-max-frequency = <125000000>;
21944 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
21945 + <&frag1>,"cs-gpios:4";
21946 + cs0_spidev = <&spidev2_0>,"status";
21949 diff --git a/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
21950 new file mode 100644
21951 index 000000000000..642678fc9ddd
21953 +++ b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
21960 + compatible = "brcm,bcm2835";
21963 + target = <&gpio>;
21965 + spi2_pins: spi2_pins {
21966 + brcm,pins = <40 41 42>;
21967 + brcm,function = <3>; /* alt4 */
21970 + spi2_cs_pins: spi2_cs_pins {
21971 + brcm,pins = <43 44>;
21972 + brcm,function = <1>; /* output */
21978 + target = <&spi2>;
21979 + frag1: __overlay__ {
21980 + /* needed to avoid dtc warning */
21981 + #address-cells = <1>;
21982 + #size-cells = <0>;
21983 + pinctrl-names = "default";
21984 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
21985 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>;
21988 + spidev2_0: spidev@0 {
21989 + compatible = "spidev";
21990 + reg = <0>; /* CE0 */
21991 + #address-cells = <1>;
21992 + #size-cells = <0>;
21993 + spi-max-frequency = <125000000>;
21997 + spidev2_1: spidev@1 {
21998 + compatible = "spidev";
21999 + reg = <1>; /* CE1 */
22000 + #address-cells = <1>;
22001 + #size-cells = <0>;
22002 + spi-max-frequency = <125000000>;
22016 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
22017 + <&frag1>,"cs-gpios:4";
22018 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
22019 + <&frag1>,"cs-gpios:16";
22020 + cs0_spidev = <&spidev2_0>,"status";
22021 + cs1_spidev = <&spidev2_1>,"status";
22024 diff --git a/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
22025 new file mode 100644
22026 index 000000000000..28d40c6c3c37
22028 +++ b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
22035 + compatible = "brcm,bcm2835";
22038 + target = <&gpio>;
22040 + spi2_pins: spi2_pins {
22041 + brcm,pins = <40 41 42>;
22042 + brcm,function = <3>; /* alt4 */
22045 + spi2_cs_pins: spi2_cs_pins {
22046 + brcm,pins = <43 44 45>;
22047 + brcm,function = <1>; /* output */
22053 + target = <&spi2>;
22054 + frag1: __overlay__ {
22055 + /* needed to avoid dtc warning */
22056 + #address-cells = <1>;
22057 + #size-cells = <0>;
22058 + pinctrl-names = "default";
22059 + pinctrl-0 = <&spi2_pins &spi2_cs_pins>;
22060 + cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
22063 + spidev2_0: spidev@0 {
22064 + compatible = "spidev";
22065 + reg = <0>; /* CE0 */
22066 + #address-cells = <1>;
22067 + #size-cells = <0>;
22068 + spi-max-frequency = <125000000>;
22072 + spidev2_1: spidev@1 {
22073 + compatible = "spidev";
22074 + reg = <1>; /* CE1 */
22075 + #address-cells = <1>;
22076 + #size-cells = <0>;
22077 + spi-max-frequency = <125000000>;
22081 + spidev2_2: spidev@2 {
22082 + compatible = "spidev";
22083 + reg = <2>; /* CE2 */
22084 + #address-cells = <1>;
22085 + #size-cells = <0>;
22086 + spi-max-frequency = <125000000>;
22100 + cs0_pin = <&spi2_cs_pins>,"brcm,pins:0",
22101 + <&frag1>,"cs-gpios:4";
22102 + cs1_pin = <&spi2_cs_pins>,"brcm,pins:4",
22103 + <&frag1>,"cs-gpios:16";
22104 + cs2_pin = <&spi2_cs_pins>,"brcm,pins:8",
22105 + <&frag1>,"cs-gpios:28";
22106 + cs0_spidev = <&spidev2_0>,"status";
22107 + cs1_spidev = <&spidev2_1>,"status";
22108 + cs2_spidev = <&spidev2_2>,"status";
22111 diff --git a/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
22112 new file mode 100644
22113 index 000000000000..335af8637051
22115 +++ b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
22122 + compatible = "brcm,bcm2711";
22125 + target = <&spi3_cs_pins>;
22126 + frag0: __overlay__ {
22128 + brcm,function = <1>; /* output */
22133 + target = <&spi3>;
22134 + frag1: __overlay__ {
22135 + /* needed to avoid dtc warning */
22136 + #address-cells = <1>;
22137 + #size-cells = <0>;
22139 + pinctrl-names = "default";
22140 + pinctrl-0 = <&spi3_pins &spi3_cs_pins>;
22141 + cs-gpios = <&gpio 0 1>;
22144 + spidev3_0: spidev@0 {
22145 + compatible = "spidev";
22146 + reg = <0>; /* CE0 */
22147 + #address-cells = <1>;
22148 + #size-cells = <0>;
22149 + spi-max-frequency = <125000000>;
22156 + cs0_pin = <&frag0>,"brcm,pins:0",
22157 + <&frag1>,"cs-gpios:4";
22158 + cs0_spidev = <&spidev3_0>,"status";
22161 diff --git a/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
22162 new file mode 100644
22163 index 000000000000..ce65da27f767
22165 +++ b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
22172 + compatible = "brcm,bcm2711";
22175 + target = <&spi3_cs_pins>;
22176 + frag0: __overlay__ {
22177 + brcm,pins = <0 24>;
22178 + brcm,function = <1>; /* output */
22183 + target = <&spi3>;
22184 + frag1: __overlay__ {
22185 + /* needed to avoid dtc warning */
22186 + #address-cells = <1>;
22187 + #size-cells = <0>;
22189 + pinctrl-names = "default";
22190 + pinctrl-0 = <&spi3_pins &spi3_cs_pins>;
22191 + cs-gpios = <&gpio 0 1>, <&gpio 24 1>;
22194 + spidev3_0: spidev@0 {
22195 + compatible = "spidev";
22196 + reg = <0>; /* CE0 */
22197 + #address-cells = <1>;
22198 + #size-cells = <0>;
22199 + spi-max-frequency = <125000000>;
22203 + spidev3_1: spidev@1 {
22204 + compatible = "spidev";
22205 + reg = <1>; /* CE1 */
22206 + #address-cells = <1>;
22207 + #size-cells = <0>;
22208 + spi-max-frequency = <125000000>;
22215 + cs0_pin = <&frag0>,"brcm,pins:0",
22216 + <&frag1>,"cs-gpios:4";
22217 + cs1_pin = <&frag0>,"brcm,pins:4",
22218 + <&frag1>,"cs-gpios:16";
22219 + cs0_spidev = <&spidev3_0>,"status";
22220 + cs1_spidev = <&spidev3_1>,"status";
22223 diff --git a/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
22224 new file mode 100644
22225 index 000000000000..85d70b40352b
22227 +++ b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
22234 + compatible = "brcm,bcm2711";
22237 + target = <&spi4_cs_pins>;
22238 + frag0: __overlay__ {
22240 + brcm,function = <1>; /* output */
22245 + target = <&spi4>;
22246 + frag1: __overlay__ {
22247 + /* needed to avoid dtc warning */
22248 + #address-cells = <1>;
22249 + #size-cells = <0>;
22251 + pinctrl-names = "default";
22252 + pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
22253 + cs-gpios = <&gpio 4 1>;
22256 + spidev4_0: spidev@0 {
22257 + compatible = "spidev";
22258 + reg = <0>; /* CE0 */
22259 + #address-cells = <1>;
22260 + #size-cells = <0>;
22261 + spi-max-frequency = <125000000>;
22268 + cs0_pin = <&frag0>,"brcm,pins:0",
22269 + <&frag1>,"cs-gpios:4";
22270 + cs0_spidev = <&spidev4_0>,"status";
22273 diff --git a/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
22274 new file mode 100644
22275 index 000000000000..8bc2215a6a7e
22277 +++ b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
22284 + compatible = "brcm,bcm2711";
22287 + target = <&spi4_cs_pins>;
22288 + frag0: __overlay__ {
22289 + brcm,pins = <4 25>;
22290 + brcm,function = <1>; /* output */
22295 + target = <&spi4>;
22296 + frag1: __overlay__ {
22297 + /* needed to avoid dtc warning */
22298 + #address-cells = <1>;
22299 + #size-cells = <0>;
22301 + pinctrl-names = "default";
22302 + pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
22303 + cs-gpios = <&gpio 4 1>, <&gpio 25 1>;
22306 + spidev4_0: spidev@0 {
22307 + compatible = "spidev";
22308 + reg = <0>; /* CE0 */
22309 + #address-cells = <1>;
22310 + #size-cells = <0>;
22311 + spi-max-frequency = <125000000>;
22315 + spidev4_1: spidev@1 {
22316 + compatible = "spidev";
22317 + reg = <1>; /* CE1 */
22318 + #address-cells = <1>;
22319 + #size-cells = <0>;
22320 + spi-max-frequency = <125000000>;
22327 + cs0_pin = <&frag0>,"brcm,pins:0",
22328 + <&frag1>,"cs-gpios:4";
22329 + cs1_pin = <&frag0>,"brcm,pins:4",
22330 + <&frag1>,"cs-gpios:16";
22331 + cs0_spidev = <&spidev4_0>,"status";
22332 + cs1_spidev = <&spidev4_1>,"status";
22335 diff --git a/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
22336 new file mode 100644
22337 index 000000000000..c0f8cb8510ee
22339 +++ b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
22346 + compatible = "brcm,bcm2711";
22349 + target = <&spi5_cs_pins>;
22350 + frag0: __overlay__ {
22351 + brcm,pins = <12>;
22352 + brcm,function = <1>; /* output */
22357 + target = <&spi5>;
22358 + frag1: __overlay__ {
22359 + /* needed to avoid dtc warning */
22360 + #address-cells = <1>;
22361 + #size-cells = <0>;
22363 + pinctrl-names = "default";
22364 + pinctrl-0 = <&spi5_pins &spi5_cs_pins>;
22365 + cs-gpios = <&gpio 12 1>;
22368 + spidev5_0: spidev@0 {
22369 + compatible = "spidev";
22370 + reg = <0>; /* CE0 */
22371 + #address-cells = <1>;
22372 + #size-cells = <0>;
22373 + spi-max-frequency = <125000000>;
22380 + cs0_pin = <&frag0>,"brcm,pins:0",
22381 + <&frag1>,"cs-gpios:4";
22382 + cs0_spidev = <&spidev5_0>,"status";
22385 diff --git a/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
22386 new file mode 100644
22387 index 000000000000..7758b9c00b4e
22389 +++ b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
22396 + compatible = "brcm,bcm2711";
22399 + target = <&spi5_cs_pins>;
22400 + frag0: __overlay__ {
22401 + brcm,pins = <12 26>;
22402 + brcm,function = <1>; /* output */
22407 + target = <&spi5>;
22408 + frag1: __overlay__ {
22409 + /* needed to avoid dtc warning */
22410 + #address-cells = <1>;
22411 + #size-cells = <0>;
22413 + pinctrl-names = "default";
22414 + pinctrl-0 = <&spi5_pins &spi5_cs_pins>;
22415 + cs-gpios = <&gpio 12 1>, <&gpio 26 1>;
22418 + spidev5_0: spidev@0 {
22419 + compatible = "spidev";
22420 + reg = <0>; /* CE0 */
22421 + #address-cells = <1>;
22422 + #size-cells = <0>;
22423 + spi-max-frequency = <125000000>;
22427 + spidev5_1: spidev@1 {
22428 + compatible = "spidev";
22429 + reg = <1>; /* CE1 */
22430 + #address-cells = <1>;
22431 + #size-cells = <0>;
22432 + spi-max-frequency = <125000000>;
22439 + cs0_pin = <&frag0>,"brcm,pins:0",
22440 + <&frag1>,"cs-gpios:4";
22441 + cs1_pin = <&frag0>,"brcm,pins:4",
22442 + <&frag1>,"cs-gpios:16";
22443 + cs0_spidev = <&spidev5_0>,"status";
22444 + cs1_spidev = <&spidev5_1>,"status";
22447 diff --git a/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
22448 new file mode 100644
22449 index 000000000000..8c8a953eca01
22451 +++ b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
22458 + compatible = "brcm,bcm2711";
22461 + target = <&spi6_cs_pins>;
22462 + frag0: __overlay__ {
22463 + brcm,pins = <18>;
22464 + brcm,function = <1>; /* output */
22469 + target = <&spi6>;
22470 + frag1: __overlay__ {
22471 + /* needed to avoid dtc warning */
22472 + #address-cells = <1>;
22473 + #size-cells = <0>;
22475 + pinctrl-names = "default";
22476 + pinctrl-0 = <&spi6_pins &spi6_cs_pins>;
22477 + cs-gpios = <&gpio 18 1>;
22480 + spidev6_0: spidev@0 {
22481 + compatible = "spidev";
22482 + reg = <0>; /* CE0 */
22483 + #address-cells = <1>;
22484 + #size-cells = <0>;
22485 + spi-max-frequency = <125000000>;
22492 + cs0_pin = <&frag0>,"brcm,pins:0",
22493 + <&frag1>,"cs-gpios:4";
22494 + cs0_spidev = <&spidev6_0>,"status";
22497 diff --git a/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
22498 new file mode 100644
22499 index 000000000000..2ff897f21aed
22501 +++ b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
22508 + compatible = "brcm,bcm2711";
22511 + target = <&spi6_cs_pins>;
22512 + frag0: __overlay__ {
22513 + brcm,pins = <18 27>;
22514 + brcm,function = <1>; /* output */
22519 + target = <&spi6>;
22520 + frag1: __overlay__ {
22521 + /* needed to avoid dtc warning */
22522 + #address-cells = <1>;
22523 + #size-cells = <0>;
22525 + pinctrl-names = "default";
22526 + pinctrl-0 = <&spi6_pins &spi6_cs_pins>;
22527 + cs-gpios = <&gpio 18 1>, <&gpio 27 1>;
22530 + spidev6_0: spidev@0 {
22531 + compatible = "spidev";
22532 + reg = <0>; /* CE0 */
22533 + #address-cells = <1>;
22534 + #size-cells = <0>;
22535 + spi-max-frequency = <125000000>;
22539 + spidev6_1: spidev@1 {
22540 + compatible = "spidev";
22541 + reg = <1>; /* CE1 */
22542 + #address-cells = <1>;
22543 + #size-cells = <0>;
22544 + spi-max-frequency = <125000000>;
22551 + cs0_pin = <&frag0>,"brcm,pins:0",
22552 + <&frag1>,"cs-gpios:4";
22553 + cs1_pin = <&frag0>,"brcm,pins:4",
22554 + <&frag1>,"cs-gpios:16";
22555 + cs0_spidev = <&spidev6_0>,"status";
22556 + cs1_spidev = <&spidev6_1>,"status";
22559 diff --git a/arch/arm/boot/dts/overlays/ssd1306-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
22560 new file mode 100644
22561 index 000000000000..84cf10e489d3
22563 +++ b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
22565 +// Overlay for SSD1306 128x64 and 128x32 OLED displays
22570 + compatible = "brcm,bcm2835";
22573 + target = <&i2c1>;
22577 + #address-cells = <1>;
22578 + #size-cells = <0>;
22580 + ssd1306: oled@3c{
22581 + compatible = "solomon,ssd1306fb-i2c";
22583 + solomon,width = <128>;
22584 + solomon,height = <64>;
22585 + solomon,page-offset = <0>;
22591 + address = <&ssd1306>,"reg:0";
22592 + width = <&ssd1306>,"solomon,width:0";
22593 + height = <&ssd1306>,"solomon,height:0";
22594 + offset = <&ssd1306>,"solomon,page-offset:0";
22595 + normal = <&ssd1306>,"solomon,segment-no-remap?";
22596 + sequential = <&ssd1306>,"solomon,com-seq?";
22597 + remapped = <&ssd1306>,"solomon,com-lrremap?";
22598 + inverted = <&ssd1306>,"solomon,com-invdir?";
22601 diff --git a/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
22602 new file mode 100644
22603 index 000000000000..ffc90c7cecf6
22605 +++ b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
22608 + * Device Tree overlay for SSD1306 based SPI OLED display
22616 + compatible = "brcm,bcm2835";
22619 + target = <&spi0>;
22626 + target = <&spidev0>;
22628 + status = "disabled";
22633 + target = <&spidev1>;
22635 + status = "disabled";
22640 + target = <&gpio>;
22642 + ssd1306_pins: ssd1306_pins {
22643 + brcm,pins = <25 24>;
22644 + brcm,function = <1 1>; /* out out */
22650 + target = <&spi0>;
22652 + /* needed to avoid dtc warning */
22653 + #address-cells = <1>;
22654 + #size-cells = <0>;
22656 + ssd1306: ssd1306@0{
22657 + compatible = "solomon,ssd1306";
22659 + pinctrl-names = "default";
22660 + pinctrl-0 = <&ssd1306_pins>;
22662 + spi-max-frequency = <10000000>;
22668 + reset-gpios = <&gpio 25 1>;
22669 + dc-gpios = <&gpio 24 0>;
22672 + solomon,height = <64>;
22673 + solomon,width = <128>;
22674 + solomon,page-offset = <0>;
22680 + speed = <&ssd1306>,"spi-max-frequency:0";
22681 + rotate = <&ssd1306>,"rotate:0";
22682 + fps = <&ssd1306>,"fps:0";
22683 + debug = <&ssd1306>,"debug:0";
22684 + dc_pin = <&ssd1306>,"dc-gpios:4",
22685 + <&ssd1306_pins>,"brcm,pins:4";
22686 + reset_pin = <&ssd1306>,"reset-gpios:4",
22687 + <&ssd1306_pins>,"brcm,pins:0";
22688 + height = <&ssd1306>,"solomon,height:0";
22691 diff --git a/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
22692 new file mode 100644
22693 index 000000000000..ffc872c60648
22695 +++ b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
22698 + * Device Tree overlay for SSD1351 based SPI OLED display
22706 + compatible = "brcm,bcm2835";
22709 + target = <&spi0>;
22716 + target = <&spidev0>;
22718 + status = "disabled";
22723 + target = <&spidev1>;
22725 + status = "disabled";
22730 + target = <&gpio>;
22732 + ssd1351_pins: ssd1351_pins {
22733 + brcm,pins = <25 24>;
22734 + brcm,function = <1 1>; /* out out */
22740 + target = <&spi0>;
22742 + /* needed to avoid dtc warning */
22743 + #address-cells = <1>;
22744 + #size-cells = <0>;
22746 + ssd1351: ssd1351@0{
22747 + compatible = "solomon,ssd1351";
22749 + pinctrl-names = "default";
22750 + pinctrl-0 = <&ssd1351_pins>;
22752 + spi-max-frequency = <4500000>;
22758 + reset-gpios = <&gpio 25 1>;
22759 + dc-gpios = <&gpio 24 0>;
22762 + solomon,height = <128>;
22763 + solomon,width = <128>;
22764 + solomon,page-offset = <0>;
22770 + speed = <&ssd1351>,"spi-max-frequency:0";
22771 + rotate = <&ssd1351>,"rotate:0";
22772 + fps = <&ssd1351>,"fps:0";
22773 + debug = <&ssd1351>,"debug:0";
22774 + dc_pin = <&ssd1351>,"dc-gpios:4",
22775 + <&ssd1351_pins>,"brcm,pins:4";
22776 + reset_pin = <&ssd1351>,"reset-gpios:4",
22777 + <&ssd1351_pins>,"brcm,pins:0";
22780 diff --git a/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
22781 new file mode 100755
22782 index 000000000000..bad61535981e
22784 +++ b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
22786 +// Definitions for SuperAudioBoard
22791 + compatible = "brcm,bcm2835";
22794 + target = <&sound>;
22796 + compatible = "simple-audio-card";
22797 + i2s-controller = <&i2s>;
22800 + simple-audio-card,name = "SuperAudioBoard";
22802 + simple-audio-card,widgets =
22803 + "Line", "Line In",
22804 + "Line", "Line Out";
22806 + simple-audio-card,routing =
22807 + "Line Out","AOUTA+",
22808 + "Line Out","AOUTA-",
22809 + "Line Out","AOUTB+",
22810 + "Line Out","AOUTB-",
22811 + "AINA","Line In",
22812 + "AINB","Line In";
22814 + simple-audio-card,format = "i2s";
22816 + simple-audio-card,bitclock-master = <&sound_master>;
22817 + simple-audio-card,frame-master = <&sound_master>;
22819 + simple-audio-card,cpu {
22820 + sound-dai = <&i2s>;
22821 + dai-tdm-slot-num = <2>;
22822 + dai-tdm-slot-width = <32>;
22825 + sound_master: simple-audio-card,codec {
22826 + sound-dai = <&cs4271>;
22827 + system-clock-frequency = <24576000>;
22840 + target = <&i2c1>;
22842 + #address-cells = <1>;
22843 + #size-cells = <0>;
22846 + cs4271: cs4271@10 {
22847 + #sound-dai-cells = <0>;
22848 + compatible = "cirrus,cs4271";
22851 + reset-gpio = <&gpio 26 0>; /* Pin 26, active high */
22856 + gpiopin = <&cs4271>,"reset-gpio:4";
22859 diff --git a/arch/arm/boot/dts/overlays/sx150x-overlay.dts b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
22860 new file mode 100644
22861 index 000000000000..1d1069345da2
22863 +++ b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
22865 +// Definitions for SX150x I2C GPIO Expanders from Semtech
22868 +// sx150<x>-<n>-<m> - Enables SX150X device on I2C#<n> with slave address <m>. <x> may be 1-9.
22869 +// <n> may be 0 or 1. Permissible values of <m> (which is denoted in hex)
22870 +// depend on the device variant.
22871 +// For SX1501, SX1502, SX1504 and SX1505, <m> may be 20 or 21.
22872 +// For SX1503 and SX1506, <m> may be 20.
22873 +// For SX1507 and SX1509, <m> may be 3E, 3F, 70 or 71.
22874 +// For SX1508, <m> may be 20, 21, 22 or 23.
22875 +// sx150<x>-<n>-<m>-int-gpio - Integer, enables interrupts on SX150X device on I2C#<n> with slave address <m>,
22876 +// specifies the GPIO pin to which NINT output of SX150X is connected.
22879 +// Example 1: A single SX1505 device on I2C#1 with its slave address set to 0x20 and NINT output connected to GPIO25:
22880 +// dtoverlay=sx150x:sx1505-1-20,sx1505-1-20-int-gpio=25
22882 +// Example 2: Two SX1507 devices on I2C#0 with their slave addresses set to 0x3E and 0x70 (interrupts not used):
22883 +// dtoverlay=sx150x:sx1507-0-3E,sx1507-0-70
22889 + compatible = "brcm,bcm2835";
22891 + // Enable I2C#0 interface
22893 + target = <&i2c0>;
22899 + // Enable I2C#1 interface
22901 + target = <&i2c1>;
22907 + // Enable a SX1501 on I2C#0 at slave addr 0x20
22909 + target = <&i2c0>;
22911 + #address-cells = <1>;
22912 + #size-cells = <0>;
22914 + sx1501_0_20: sx150x@20 {
22915 + compatible = "semtech,sx1501q";
22918 + #gpio-cells = <2>;
22919 + #interrupt-cells = <2>;
22920 + interrupts = <25 2>; /* 1st word overwritten by sx1501-0-20-int-gpio parameter
22921 + 2nd word is 2 for falling-edge triggered */
22927 + // Enable a SX1501 on I2C#1 at slave addr 0x20
22929 + target = <&i2c1>;
22931 + #address-cells = <1>;
22932 + #size-cells = <0>;
22934 + sx1501_1_20: sx150x@20 {
22935 + compatible = "semtech,sx1501q";
22938 + #gpio-cells = <2>;
22939 + #interrupt-cells = <2>;
22940 + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-20-int-gpio parameter
22941 + 2nd word is 2 for falling-edge triggered */
22947 + // Enable a SX1501 on I2C#0 at slave addr 0x21
22949 + target = <&i2c0>;
22951 + #address-cells = <1>;
22952 + #size-cells = <0>;
22954 + sx1501_0_21: sx150x@21 {
22955 + compatible = "semtech,sx1501q";
22958 + #gpio-cells = <2>;
22959 + #interrupt-cells = <2>;
22960 + interrupts = <25 2>; /* 1st word overwritten by sx1501-0-21-int-gpio parameter
22961 + 2nd word is 2 for falling-edge triggered */
22967 + // Enable a SX1501 on I2C#1 at slave addr 0x21
22969 + target = <&i2c1>;
22971 + #address-cells = <1>;
22972 + #size-cells = <0>;
22974 + sx1501_1_21: sx150x@21 {
22975 + compatible = "semtech,sx1501q";
22978 + #gpio-cells = <2>;
22979 + #interrupt-cells = <2>;
22980 + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-21-int-gpio parameter
22981 + 2nd word is 2 for falling-edge triggered */
22987 + // Enable a SX1502 on I2C#0 at slave addr 0x20
22989 + target = <&i2c0>;
22991 + #address-cells = <1>;
22992 + #size-cells = <0>;
22994 + sx1502_0_20: sx150x@20 {
22995 + compatible = "semtech,sx1502q";
22998 + #gpio-cells = <2>;
22999 + #interrupt-cells = <2>;
23000 + interrupts = <25 2>; /* 1st word overwritten by sx1502-0-20-int-gpio parameter
23001 + 2nd word is 2 for falling-edge triggered */
23007 + // Enable a SX1502 on I2C#1 at slave addr 0x20
23009 + target = <&i2c1>;
23011 + #address-cells = <1>;
23012 + #size-cells = <0>;
23014 + sx1502_1_20: sx150x@20 {
23015 + compatible = "semtech,sx1502q";
23018 + #gpio-cells = <2>;
23019 + #interrupt-cells = <2>;
23020 + interrupts = <25 2>; /* 1st word overwritten by sx1502-1-20-int-gpio parameter
23021 + 2nd word is 2 for falling-edge triggered */
23027 + // Enable a SX1502 on I2C#0 at slave addr 0x21
23029 + target = <&i2c0>;
23031 + #address-cells = <1>;
23032 + #size-cells = <0>;
23034 + sx1502_0_21: sx150x@21 {
23035 + compatible = "semtech,sx1502q";
23038 + #gpio-cells = <2>;
23039 + #interrupt-cells = <2>;
23040 + interrupts = <25 2>; /* 1st word overwritten by sx1502-0-21-int-gpio parameter
23041 + 2nd word is 2 for falling-edge triggered */
23047 + // Enable a SX1502 on I2C#1 at slave addr 0x21
23049 + target = <&i2c1>;
23051 + #address-cells = <1>;
23052 + #size-cells = <0>;
23054 + sx1502_1_21: sx150x@21 {
23055 + compatible = "semtech,sx1502q";
23058 + #gpio-cells = <2>;
23059 + #interrupt-cells = <2>;
23060 + interrupts = <25 2>; /* 1st word overwritten by sx1501-1-21-int-gpio parameter
23061 + 2nd word is 2 for falling-edge triggered */
23067 + // Enable a SX1503 on I2C#0 at slave addr 0x20
23069 + target = <&i2c0>;
23071 + #address-cells = <1>;
23072 + #size-cells = <0>;
23074 + sx1503_0_20: sx150x@20 {
23075 + compatible = "semtech,sx1503q";
23078 + #gpio-cells = <2>;
23079 + #interrupt-cells = <2>;
23080 + interrupts = <25 2>; /* 1st word overwritten by sx1503-0-20-int-gpio parameter
23081 + 2nd word is 2 for falling-edge triggered */
23087 + // Enable a SX1503 on I2C#1 at slave addr 0x20
23089 + target = <&i2c1>;
23091 + #address-cells = <1>;
23092 + #size-cells = <0>;
23094 + sx1503_1_20: sx150x@20 {
23095 + compatible = "semtech,sx1503q";
23098 + #gpio-cells = <2>;
23099 + #interrupt-cells = <2>;
23100 + interrupts = <25 2>; /* 1st word overwritten by sx1503-1-20-int-gpio parameter
23101 + 2nd word is 2 for falling-edge triggered */
23107 + // Enable a SX1504 on I2C#0 at slave addr 0x20
23109 + target = <&i2c0>;
23111 + #address-cells = <1>;
23112 + #size-cells = <0>;
23114 + sx1504_0_20: sx150x@20 {
23115 + compatible = "semtech,sx1504q";
23118 + #gpio-cells = <2>;
23119 + #interrupt-cells = <2>;
23120 + interrupts = <25 2>; /* 1st word overwritten by sx1504-0-20-int-gpio parameter
23121 + 2nd word is 2 for falling-edge triggered */
23127 + // Enable a SX1504 on I2C#1 at slave addr 0x20
23129 + target = <&i2c1>;
23131 + #address-cells = <1>;
23132 + #size-cells = <0>;
23134 + sx1504_1_20: sx150x@20 {
23135 + compatible = "semtech,sx1504q";
23138 + #gpio-cells = <2>;
23139 + #interrupt-cells = <2>;
23140 + interrupts = <25 2>; /* 1st word overwritten by sx1504-1-20-int-gpio parameter
23141 + 2nd word is 2 for falling-edge triggered */
23147 + // Enable a SX1504 on I2C#0 at slave addr 0x21
23149 + target = <&i2c0>;
23151 + #address-cells = <1>;
23152 + #size-cells = <0>;
23154 + sx1504_0_21: sx150x@21 {
23155 + compatible = "semtech,sx1504q";
23158 + #gpio-cells = <2>;
23159 + #interrupt-cells = <2>;
23160 + interrupts = <25 2>; /* 1st word overwritten by sx1504-0-21-int-gpio parameter
23161 + 2nd word is 2 for falling-edge triggered */
23167 + // Enable a SX1504 on I2C#1 at slave addr 0x21
23169 + target = <&i2c1>;
23171 + #address-cells = <1>;
23172 + #size-cells = <0>;
23174 + sx1504_1_21: sx150x@21 {
23175 + compatible = "semtech,sx1504q";
23178 + #gpio-cells = <2>;
23179 + #interrupt-cells = <2>;
23180 + interrupts = <25 2>; /* 1st word overwritten by sx1504-1-20-int-gpio parameter
23181 + 2nd word is 2 for falling-edge triggered */
23187 + // Enable a SX1505 on I2C#0 at slave addr 0x20
23189 + target = <&i2c0>;
23191 + #address-cells = <1>;
23192 + #size-cells = <0>;
23194 + sx1505_0_20: sx150x@20 {
23195 + compatible = "semtech,sx1505q";
23198 + #gpio-cells = <2>;
23199 + #interrupt-cells = <2>;
23200 + interrupts = <25 2>; /* 1st word overwritten by sx1505-0-20-int-gpio parameter
23201 + 2nd word is 2 for falling-edge triggered */
23207 + // Enable a SX1505 on I2C#1 at slave addr 0x20
23209 + target = <&i2c1>;
23211 + #address-cells = <1>;
23212 + #size-cells = <0>;
23214 + sx1505_1_20: sx150x@20 {
23215 + compatible = "semtech,sx1505q";
23218 + #gpio-cells = <2>;
23219 + #interrupt-cells = <2>;
23220 + interrupts = <25 2>; /* 1st word overwritten by sx1505-1-20-int-gpio parameter
23221 + 2nd word is 2 for falling-edge triggered */
23227 + // Enable a SX1505 on I2C#0 at slave addr 0x21
23229 + target = <&i2c0>;
23231 + #address-cells = <1>;
23232 + #size-cells = <0>;
23234 + sx1505_0_21: sx150x@21 {
23235 + compatible = "semtech,sx1505q";
23238 + #gpio-cells = <2>;
23239 + #interrupt-cells = <2>;
23240 + interrupts = <25 2>; /* 1st word overwritten by sx1505-0-21-int-gpio parameter
23241 + 2nd word is 2 for falling-edge triggered */
23247 + // Enable a SX1505 on I2C#1 at slave addr 0x21
23249 + target = <&i2c1>;
23251 + #address-cells = <1>;
23252 + #size-cells = <0>;
23254 + sx1505_1_21: sx150x@21 {
23255 + compatible = "semtech,sx1505q";
23258 + #gpio-cells = <2>;
23259 + #interrupt-cells = <2>;
23260 + interrupts = <25 2>; /* 1st word overwritten by sx1505-1-21-int-gpio parameter
23261 + 2nd word is 2 for falling-edge triggered */
23267 + // Enable a SX1506 on I2C#0 at slave addr 0x20
23269 + target = <&i2c0>;
23271 + #address-cells = <1>;
23272 + #size-cells = <0>;
23274 + sx1506_0_20: sx150x@20 {
23275 + compatible = "semtech,sx1506q";
23278 + #gpio-cells = <2>;
23279 + #interrupt-cells = <2>;
23280 + interrupts = <25 2>; /* 1st word overwritten by sx1506-0-20-int-gpio parameter
23281 + 2nd word is 2 for falling-edge triggered */
23287 + // Enable a SX1506 on I2C#1 at slave addr 0x20
23289 + target = <&i2c1>;
23291 + #address-cells = <1>;
23292 + #size-cells = <0>;
23294 + sx1506_1_20: sx150x@20 {
23295 + compatible = "semtech,sx1506q";
23298 + #gpio-cells = <2>;
23299 + #interrupt-cells = <2>;
23300 + interrupts = <25 2>; /* 1st word overwritten by sx1506-1-20-int-gpio parameter
23301 + 2nd word is 2 for falling-edge triggered */
23307 + // Enable a SX1507 on I2C#0 at slave addr 0x3E
23309 + target = <&i2c0>;
23311 + #address-cells = <1>;
23312 + #size-cells = <0>;
23314 + sx1507_0_3E: sx150x@3E {
23315 + compatible = "semtech,sx1507q";
23318 + #gpio-cells = <2>;
23319 + #interrupt-cells = <2>;
23320 + interrupts = <25 2>; /* 1st word overwritten by sx1507_0_3E-int-gpio parameter
23321 + 2nd word is 2 for falling-edge triggered */
23327 + // Enable a SX1507 on I2C#1 at slave addr 0x3E
23329 + target = <&i2c1>;
23331 + #address-cells = <1>;
23332 + #size-cells = <0>;
23334 + sx1507_1_3E: sx150x@3E {
23335 + compatible = "semtech,sx1507q";
23338 + #gpio-cells = <2>;
23339 + #interrupt-cells = <2>;
23340 + interrupts = <25 2>; /* 1st word overwritten by sx1507_1_3E-int-gpio parameter
23341 + 2nd word is 2 for falling-edge triggered */
23347 + // Enable a SX1507 on I2C#0 at slave addr 0x3F
23349 + target = <&i2c0>;
23351 + #address-cells = <1>;
23352 + #size-cells = <0>;
23354 + sx1507_0_3F: sx150x@3F {
23355 + compatible = "semtech,sx1507q";
23358 + #gpio-cells = <2>;
23359 + #interrupt-cells = <2>;
23360 + interrupts = <25 2>; /* 1st word overwritten by sx1507_0_3F-int-gpio parameter
23361 + 2nd word is 2 for falling-edge triggered */
23367 + // Enable a SX1507 on I2C#1 at slave addr 0x3F
23369 + target = <&i2c1>;
23371 + #address-cells = <1>;
23372 + #size-cells = <0>;
23374 + sx1507_1_3F: sx150x@3F {
23375 + compatible = "semtech,sx1507q";
23378 + #gpio-cells = <2>;
23379 + #interrupt-cells = <2>;
23380 + interrupts = <25 2>; /* 1st word overwritten by sx1507_1_3F-int-gpio parameter
23381 + 2nd word is 2 for falling-edge triggered */
23387 + // Enable a SX1507 on I2C#0 at slave addr 0x70
23389 + target = <&i2c0>;
23391 + #address-cells = <1>;
23392 + #size-cells = <0>;
23394 + sx1507_0_70: sx150x@70 {
23395 + compatible = "semtech,sx1507q";
23398 + #gpio-cells = <2>;
23399 + #interrupt-cells = <2>;
23400 + interrupts = <25 2>; /* 1st word overwritten by sx1507-0-70-int-gpio parameter
23401 + 2nd word is 2 for falling-edge triggered */
23407 + // Enable a SX1507 on I2C#1 at slave addr 0x70
23409 + target = <&i2c1>;
23411 + #address-cells = <1>;
23412 + #size-cells = <0>;
23414 + sx1507_1_70: sx150x@70 {
23415 + compatible = "semtech,sx1507q";
23418 + #gpio-cells = <2>;
23419 + #interrupt-cells = <2>;
23420 + interrupts = <25 2>; /* 1st word overwritten by sx1507-1-70-int-gpio parameter
23421 + 2nd word is 2 for falling-edge triggered */
23427 + // Enable a SX1507 on I2C#0 at slave addr 0x71
23429 + target = <&i2c0>;
23431 + #address-cells = <1>;
23432 + #size-cells = <0>;
23434 + sx1507_0_71: sx150x@71 {
23435 + compatible = "semtech,sx1507q";
23438 + #gpio-cells = <2>;
23439 + #interrupt-cells = <2>;
23440 + interrupts = <25 2>; /* 1st word overwritten by sx1507-0-71-int-gpio parameter
23441 + 2nd word is 2 for falling-edge triggered */
23447 + // Enable a SX1507 on I2C#1 at slave addr 0x71
23449 + target = <&i2c1>;
23451 + #address-cells = <1>;
23452 + #size-cells = <0>;
23454 + sx1507_1_71: sx150x@71 {
23455 + compatible = "semtech,sx1507q";
23458 + #gpio-cells = <2>;
23459 + #interrupt-cells = <2>;
23460 + interrupts = <25 2>; /* 1st word overwritten by sx1507-1-71-int-gpio parameter
23461 + 2nd word is 2 for falling-edge triggered */
23467 + // Enable a SX1508 on I2C#0 at slave addr 0x20
23469 + target = <&i2c0>;
23471 + #address-cells = <1>;
23472 + #size-cells = <0>;
23474 + sx1508_0_20: sx150x@20 {
23475 + compatible = "semtech,sx1508q";
23478 + #gpio-cells = <2>;
23479 + #interrupt-cells = <2>;
23480 + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-20-int-gpio parameter
23481 + 2nd word is 2 for falling-edge triggered */
23487 + // Enable a SX1508 on I2C#1 at slave addr 0x20
23489 + target = <&i2c1>;
23491 + #address-cells = <1>;
23492 + #size-cells = <0>;
23494 + sx1508_1_20: sx150x@20 {
23495 + compatible = "semtech,sx1508q";
23498 + #gpio-cells = <2>;
23499 + #interrupt-cells = <2>;
23500 + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-20-int-gpio parameter
23501 + 2nd word is 2 for falling-edge triggered */
23507 + // Enable a SX1508 on I2C#0 at slave addr 0x21
23509 + target = <&i2c0>;
23511 + #address-cells = <1>;
23512 + #size-cells = <0>;
23514 + sx1508_0_21: sx150x@21 {
23515 + compatible = "semtech,sx1508q";
23518 + #gpio-cells = <2>;
23519 + #interrupt-cells = <2>;
23520 + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-21-int-gpio parameter
23521 + 2nd word is 2 for falling-edge triggered */
23527 + // Enable a SX1508 on I2C#1 at slave addr 0x21
23529 + target = <&i2c1>;
23531 + #address-cells = <1>;
23532 + #size-cells = <0>;
23534 + sx1508_1_21: sx150x@21 {
23535 + compatible = "semtech,sx1508q";
23538 + #gpio-cells = <2>;
23539 + #interrupt-cells = <2>;
23540 + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-21-int-gpio parameter
23541 + 2nd word is 2 for falling-edge triggered */
23547 + // Enable a SX1508 on I2C#0 at slave addr 0x22
23549 + target = <&i2c0>;
23551 + #address-cells = <1>;
23552 + #size-cells = <0>;
23554 + sx1508_0_22: sx150x@22 {
23555 + compatible = "semtech,sx1508q";
23558 + #gpio-cells = <2>;
23559 + #interrupt-cells = <2>;
23560 + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-22-int-gpio parameter
23561 + 2nd word is 2 for falling-edge triggered */
23567 + // Enable a SX1508 on I2C#1 at slave addr 0x22
23569 + target = <&i2c1>;
23571 + #address-cells = <1>;
23572 + #size-cells = <0>;
23574 + sx1508_1_22: sx150x@22 {
23575 + compatible = "semtech,sx1508q";
23578 + #gpio-cells = <2>;
23579 + #interrupt-cells = <2>;
23580 + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-22-int-gpio parameter
23581 + 2nd word is 2 for falling-edge triggered */
23587 + // Enable a SX1508 on I2C#0 at slave addr 0x23
23589 + target = <&i2c0>;
23591 + #address-cells = <1>;
23592 + #size-cells = <0>;
23594 + sx1508_0_23: sx150x@23 {
23595 + compatible = "semtech,sx1508q";
23598 + #gpio-cells = <2>;
23599 + #interrupt-cells = <2>;
23600 + interrupts = <25 2>; /* 1st word overwritten by sx1508-0-23-int-gpio parameter
23601 + 2nd word is 2 for falling-edge triggered */
23607 + // Enable a SX1508 on I2C#1 at slave addr 0x23
23609 + target = <&i2c1>;
23611 + #address-cells = <1>;
23612 + #size-cells = <0>;
23614 + sx1508_1_23: sx150x@23 {
23615 + compatible = "semtech,sx1508q";
23618 + #gpio-cells = <2>;
23619 + #interrupt-cells = <2>;
23620 + interrupts = <25 2>; /* 1st word overwritten by sx1508-1-23-int-gpio parameter
23621 + 2nd word is 2 for falling-edge triggered */
23627 + // Enable a SX1509 on I2C#0 at slave addr 0x3E
23629 + target = <&i2c0>;
23631 + #address-cells = <1>;
23632 + #size-cells = <0>;
23634 + sx1509_0_3E: sx150x@3E {
23635 + compatible = "semtech,sx1509q";
23638 + #gpio-cells = <2>;
23639 + #interrupt-cells = <2>;
23640 + interrupts = <25 2>; /* 1st word overwritten by sx1509_0_3E-int-gpio parameter
23641 + 2nd word is 2 for falling-edge triggered */
23647 + // Enable a SX1509 on I2C#1 at slave addr 0x3E
23649 + target = <&i2c1>;
23651 + #address-cells = <1>;
23652 + #size-cells = <0>;
23654 + sx1509_1_3E: sx150x@3E {
23655 + compatible = "semtech,sx1509q";
23658 + #gpio-cells = <2>;
23659 + #interrupt-cells = <2>;
23660 + interrupts = <25 2>; /* 1st word overwritten by sx1509_1_3E-int-gpio parameter
23661 + 2nd word is 2 for falling-edge triggered */
23667 + // Enable a SX1509 on I2C#0 at slave addr 0x3F
23669 + target = <&i2c0>;
23671 + #address-cells = <1>;
23672 + #size-cells = <0>;
23674 + sx1509_0_3F: sx150x@3F {
23675 + compatible = "semtech,sx1509q";
23678 + #gpio-cells = <2>;
23679 + #interrupt-cells = <2>;
23680 + interrupts = <25 2>; /* 1st word overwritten by sx1509_0_3F-int-gpio parameter
23681 + 2nd word is 2 for falling-edge triggered */
23687 + // Enable a SX1509 on I2C#1 at slave addr 0x3F
23689 + target = <&i2c1>;
23691 + #address-cells = <1>;
23692 + #size-cells = <0>;
23694 + sx1509_1_3F: sx150x@3F {
23695 + compatible = "semtech,sx1509q";
23698 + #gpio-cells = <2>;
23699 + #interrupt-cells = <2>;
23700 + interrupts = <25 2>; /* 1st word overwritten by sx1509_1_3F-int-gpio parameter
23701 + 2nd word is 2 for falling-edge triggered */
23707 + // Enable a SX1509 on I2C#0 at slave addr 0x70
23709 + target = <&i2c0>;
23711 + #address-cells = <1>;
23712 + #size-cells = <0>;
23714 + sx1509_0_70: sx150x@70 {
23715 + compatible = "semtech,sx1509q";
23718 + #gpio-cells = <2>;
23719 + #interrupt-cells = <2>;
23720 + interrupts = <25 2>; /* 1st word overwritten by sx1509-0-70-int-gpio parameter
23721 + 2nd word is 2 for falling-edge triggered */
23727 + // Enable a SX1509 on I2C#1 at slave addr 0x70
23729 + target = <&i2c1>;
23731 + #address-cells = <1>;
23732 + #size-cells = <0>;
23734 + sx1509_1_70: sx150x@70 {
23735 + compatible = "semtech,sx1509q";
23738 + #gpio-cells = <2>;
23739 + #interrupt-cells = <2>;
23740 + interrupts = <25 2>; /* 1st word overwritten by sx1509-1-70-int-gpio parameter
23741 + 2nd word is 2 for falling-edge triggered */
23747 + // Enable a SX1509 on I2C#0 at slave addr 0x71
23749 + target = <&i2c0>;
23751 + #address-cells = <1>;
23752 + #size-cells = <0>;
23754 + sx1509_0_71: sx150x@71 {
23755 + compatible = "semtech,sx1509q";
23758 + #gpio-cells = <2>;
23759 + #interrupt-cells = <2>;
23760 + interrupts = <25 2>; /* 1st word overwritten by sx1509-0-71-int-gpio parameter
23761 + 2nd word is 2 for falling-edge triggered */
23767 + // Enable a SX1509 on I2C#1 at slave addr 0x71
23769 + target = <&i2c1>;
23771 + #address-cells = <1>;
23772 + #size-cells = <0>;
23774 + sx1509_1_71: sx150x@71 {
23775 + compatible = "semtech,sx1509q";
23778 + #gpio-cells = <2>;
23779 + #interrupt-cells = <2>;
23780 + interrupts = <25 2>; /* 1st word overwritten by sx1509-1-71-int-gpio parameter
23781 + 2nd word is 2 for falling-edge triggered */
23787 + // Enable interrupts for a SX1501 on I2C#0 at slave addr 0x20
23789 + target = <&sx1501_0_20>;
23791 + interrupt-parent = <&gpio>;
23792 + interrupt-controller;
23793 + pinctrl-names = "default";
23794 + pinctrl-0 = <&sx150x_0_20_pins>;
23798 + // Enable interrupts for a SX1501 on I2C#1 at slave addr 0x20
23800 + target = <&sx1501_1_20>;
23802 + interrupt-parent = <&gpio>;
23803 + interrupt-controller;
23804 + pinctrl-names = "default";
23805 + pinctrl-0 = <&sx150x_1_20_pins>;
23809 + // Enable interrupts for a SX1501 on I2C#0 at slave addr 0x21
23811 + target = <&sx1501_0_21>;
23813 + interrupt-parent = <&gpio>;
23814 + interrupt-controller;
23815 + pinctrl-names = "default";
23816 + pinctrl-0 = <&sx150x_0_21_pins>;
23820 + // Enable interrupts for a SX1501 on I2C#1 at slave addr 0x21
23822 + target = <&sx1501_1_21>;
23824 + interrupt-parent = <&gpio>;
23825 + interrupt-controller;
23826 + pinctrl-names = "default";
23827 + pinctrl-0 = <&sx150x_1_21_pins>;
23831 + // Enable interrupts for a SX1502 on I2C#0 at slave addr 0x20
23833 + target = <&sx1502_0_20>;
23835 + interrupt-parent = <&gpio>;
23836 + interrupt-controller;
23837 + pinctrl-names = "default";
23838 + pinctrl-0 = <&sx150x_0_20_pins>;
23842 + // Enable interrupts for a SX1502 on I2C#1 at slave addr 0x20
23844 + target = <&sx1502_1_20>;
23846 + interrupt-parent = <&gpio>;
23847 + interrupt-controller;
23848 + pinctrl-names = "default";
23849 + pinctrl-0 = <&sx150x_1_20_pins>;
23853 + // Enable interrupts for a SX1502 on I2C#0 at slave addr 0x21
23855 + target = <&sx1502_0_21>;
23857 + interrupt-parent = <&gpio>;
23858 + interrupt-controller;
23859 + pinctrl-names = "default";
23860 + pinctrl-0 = <&sx150x_0_21_pins>;
23864 + // Enable interrupts for a SX1502 on I2C#1 at slave addr 0x21
23866 + target = <&sx1502_1_21>;
23868 + interrupt-parent = <&gpio>;
23869 + interrupt-controller;
23870 + pinctrl-names = "default";
23871 + pinctrl-0 = <&sx150x_1_21_pins>;
23875 + // Enable interrupts for a SX1503 on I2C#0 at slave addr 0x20
23877 + target = <&sx1503_0_20>;
23879 + interrupt-parent = <&gpio>;
23880 + interrupt-controller;
23881 + pinctrl-names = "default";
23882 + pinctrl-0 = <&sx150x_0_20_pins>;
23886 + // Enable interrupts for a SX1503 on I2C#1 at slave addr 0x20
23888 + target = <&sx1503_1_20>;
23890 + interrupt-parent = <&gpio>;
23891 + interrupt-controller;
23892 + pinctrl-names = "default";
23893 + pinctrl-0 = <&sx150x_1_20_pins>;
23897 + // Enable interrupts for a SX1504 on I2C#0 at slave addr 0x20
23899 + target = <&sx1504_0_20>;
23901 + interrupt-parent = <&gpio>;
23902 + interrupt-controller;
23903 + pinctrl-names = "default";
23904 + pinctrl-0 = <&sx150x_0_20_pins>;
23908 + // Enable interrupts for a SX1504 on I2C#1 at slave addr 0x20
23910 + target = <&sx1504_1_20>;
23912 + interrupt-parent = <&gpio>;
23913 + interrupt-controller;
23914 + pinctrl-names = "default";
23915 + pinctrl-0 = <&sx150x_1_20_pins>;
23919 + // Enable interrupts for a SX1504 on I2C#0 at slave addr 0x21
23921 + target = <&sx1504_0_21>;
23923 + interrupt-parent = <&gpio>;
23924 + interrupt-controller;
23925 + pinctrl-names = "default";
23926 + pinctrl-0 = <&sx150x_0_21_pins>;
23930 + // Enable interrupts for a SX1504 on I2C#1 at slave addr 0x21
23932 + target = <&sx1504_1_21>;
23934 + interrupt-parent = <&gpio>;
23935 + interrupt-controller;
23936 + pinctrl-names = "default";
23937 + pinctrl-0 = <&sx150x_1_21_pins>;
23941 + // Enable interrupts for a SX1505 on I2C#0 at slave addr 0x20
23943 + target = <&sx1505_0_20>;
23945 + interrupt-parent = <&gpio>;
23946 + interrupt-controller;
23947 + pinctrl-names = "default";
23948 + pinctrl-0 = <&sx150x_0_20_pins>;
23952 + // Enable interrupts for a SX1505 on I2C#1 at slave addr 0x20
23954 + target = <&sx1505_1_20>;
23956 + interrupt-parent = <&gpio>;
23957 + interrupt-controller;
23958 + pinctrl-names = "default";
23959 + pinctrl-0 = <&sx150x_1_20_pins>;
23963 + // Enable interrupts for a SX1505 on I2C#0 at slave addr 0x21
23965 + target = <&sx1505_0_21>;
23967 + interrupt-parent = <&gpio>;
23968 + interrupt-controller;
23969 + pinctrl-names = "default";
23970 + pinctrl-0 = <&sx150x_0_21_pins>;
23974 + // Enable interrupts for a SX1505 on I2C#1 at slave addr 0x21
23976 + target = <&sx1505_1_21>;
23978 + interrupt-parent = <&gpio>;
23979 + interrupt-controller;
23980 + pinctrl-names = "default";
23981 + pinctrl-0 = <&sx150x_1_21_pins>;
23985 + // Enable interrupts for a SX1506 on I2C#0 at slave addr 0x20
23987 + target = <&sx1506_0_20>;
23989 + interrupt-parent = <&gpio>;
23990 + interrupt-controller;
23991 + pinctrl-names = "default";
23992 + pinctrl-0 = <&sx150x_0_20_pins>;
23996 + // Enable interrupts for a SX1506 on I2C#1 at slave addr 0x20
23998 + target = <&sx1506_1_20>;
24000 + interrupt-parent = <&gpio>;
24001 + interrupt-controller;
24002 + pinctrl-names = "default";
24003 + pinctrl-0 = <&sx150x_1_20_pins>;
24007 + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x3E
24009 + target = <&sx1507_0_3E>;
24011 + interrupt-parent = <&gpio>;
24012 + interrupt-controller;
24013 + pinctrl-names = "default";
24014 + pinctrl-0 = <&sx150x_0_3E_pins>;
24018 + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x3E
24020 + target = <&sx1507_1_3E>;
24022 + interrupt-parent = <&gpio>;
24023 + interrupt-controller;
24024 + pinctrl-names = "default";
24025 + pinctrl-0 = <&sx150x_1_3E_pins>;
24029 + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x3F
24031 + target = <&sx1507_0_3F>;
24033 + interrupt-parent = <&gpio>;
24034 + interrupt-controller;
24035 + pinctrl-names = "default";
24036 + pinctrl-0 = <&sx150x_0_3F_pins>;
24040 + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x3F
24042 + target = <&sx1507_1_3F>;
24044 + interrupt-parent = <&gpio>;
24045 + interrupt-controller;
24046 + pinctrl-names = "default";
24047 + pinctrl-0 = <&sx150x_1_3F_pins>;
24051 + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x70
24053 + target = <&sx1507_0_70>;
24055 + interrupt-parent = <&gpio>;
24056 + interrupt-controller;
24057 + pinctrl-names = "default";
24058 + pinctrl-0 = <&sx150x_1_70_pins>;
24062 + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x70
24064 + target = <&sx1507_1_70>;
24066 + interrupt-parent = <&gpio>;
24067 + interrupt-controller;
24068 + pinctrl-names = "default";
24069 + pinctrl-0 = <&sx150x_1_70_pins>;
24073 + // Enable interrupts for a SX1507 on I2C#0 at slave addr 0x71
24075 + target = <&sx1507_0_71>;
24077 + interrupt-parent = <&gpio>;
24078 + interrupt-controller;
24079 + pinctrl-names = "default";
24080 + pinctrl-0 = <&sx150x_0_71_pins>;
24084 + // Enable interrupts for a SX1507 on I2C#1 at slave addr 0x71
24086 + target = <&sx1507_1_71>;
24088 + interrupt-parent = <&gpio>;
24089 + interrupt-controller;
24090 + pinctrl-names = "default";
24091 + pinctrl-0 = <&sx150x_1_71_pins>;
24095 + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x20
24097 + target = <&sx1508_0_20>;
24099 + interrupt-parent = <&gpio>;
24100 + interrupt-controller;
24101 + pinctrl-names = "default";
24102 + pinctrl-0 = <&sx150x_0_20_pins>;
24106 + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x20
24108 + target = <&sx1508_1_20>;
24110 + interrupt-parent = <&gpio>;
24111 + interrupt-controller;
24112 + pinctrl-names = "default";
24113 + pinctrl-0 = <&sx150x_1_20_pins>;
24117 + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x21
24119 + target = <&sx1508_0_21>;
24121 + interrupt-parent = <&gpio>;
24122 + interrupt-controller;
24123 + pinctrl-names = "default";
24124 + pinctrl-0 = <&sx150x_0_21_pins>;
24128 + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x21
24130 + target = <&sx1508_1_21>;
24132 + interrupt-parent = <&gpio>;
24133 + interrupt-controller;
24134 + pinctrl-names = "default";
24135 + pinctrl-0 = <&sx150x_1_21_pins>;
24139 + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x22
24141 + target = <&sx1508_0_22>;
24143 + interrupt-parent = <&gpio>;
24144 + interrupt-controller;
24145 + pinctrl-names = "default";
24146 + pinctrl-0 = <&sx150x_0_22_pins>;
24150 + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x22
24152 + target = <&sx1508_1_22>;
24154 + interrupt-parent = <&gpio>;
24155 + interrupt-controller;
24156 + pinctrl-names = "default";
24157 + pinctrl-0 = <&sx150x_1_22_pins>;
24161 + // Enable interrupts for a SX1508 on I2C#0 at slave addr 0x23
24163 + target = <&sx1508_0_23>;
24165 + interrupt-parent = <&gpio>;
24166 + interrupt-controller;
24167 + pinctrl-names = "default";
24168 + pinctrl-0 = <&sx150x_0_23_pins>;
24172 + // Enable interrupts for a SX1508 on I2C#1 at slave addr 0x23
24174 + target = <&sx1508_1_23>;
24176 + interrupt-parent = <&gpio>;
24177 + interrupt-controller;
24178 + pinctrl-names = "default";
24179 + pinctrl-0 = <&sx150x_1_23_pins>;
24183 + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x3E
24185 + target = <&sx1509_0_3E>;
24187 + interrupt-parent = <&gpio>;
24188 + interrupt-controller;
24189 + pinctrl-names = "default";
24190 + pinctrl-0 = <&sx150x_0_3E_pins>;
24194 + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x3E
24196 + target = <&sx1509_1_3E>;
24198 + interrupt-parent = <&gpio>;
24199 + interrupt-controller;
24200 + pinctrl-names = "default";
24201 + pinctrl-0 = <&sx150x_1_3E_pins>;
24205 + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x3F
24207 + target = <&sx1509_0_3F>;
24209 + interrupt-parent = <&gpio>;
24210 + interrupt-controller;
24211 + pinctrl-names = "default";
24212 + pinctrl-0 = <&sx150x_0_3F_pins>;
24216 + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x3F
24218 + target = <&sx1509_1_3F>;
24220 + interrupt-parent = <&gpio>;
24221 + interrupt-controller;
24222 + pinctrl-names = "default";
24223 + pinctrl-0 = <&sx150x_1_3F_pins>;
24227 + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x70
24229 + target = <&sx1509_0_70>;
24231 + interrupt-parent = <&gpio>;
24232 + interrupt-controller;
24233 + pinctrl-names = "default";
24234 + pinctrl-0 = <&sx150x_0_70_pins>;
24238 + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x70
24240 + target = <&sx1509_1_70>;
24242 + interrupt-parent = <&gpio>;
24243 + interrupt-controller;
24244 + pinctrl-names = "default";
24245 + pinctrl-0 = <&sx150x_1_70_pins>;
24249 + // Enable interrupts for a SX1509 on I2C#0 at slave addr 0x71
24251 + target = <&sx1509_0_71>;
24253 + interrupt-parent = <&gpio>;
24254 + interrupt-controller;
24255 + pinctrl-names = "default";
24256 + pinctrl-0 = <&sx150x_0_71_pins>;
24260 + // Enable interrupts for a SX1509 on I2C#1 at slave addr 0x71
24262 + target = <&sx1509_1_71>;
24264 + interrupt-parent = <&gpio>;
24265 + interrupt-controller;
24266 + pinctrl-names = "default";
24267 + pinctrl-0 = <&sx150x_1_71_pins>;
24271 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x20
24272 + // Configure as a input with no pull-up/down
24274 + target = <&gpio>;
24276 + sx150x_0_20_pins: sx150x_0_20_pins {
24277 + brcm,pins = <0>; /* overwritten by sx150x-0-20-int-gpio parameter */
24278 + brcm,function = <0>;
24284 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x20
24285 + // Configure as a input with no pull-up/down
24287 + target = <&gpio>;
24289 + sx150x_1_20_pins: sx150x_1_20_pins {
24290 + brcm,pins = <0>; /* overwritten by sx150x-1-20-int-gpio parameter */
24291 + brcm,function = <0>;
24297 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x21
24298 + // Configure as a input with no pull-up/down
24300 + target = <&gpio>;
24302 + sx150x_0_21_pins: sx150x_0_21_pins {
24303 + brcm,pins = <0>; /* overwritten by sx150x-0-21-int-gpio parameter */
24304 + brcm,function = <0>;
24310 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x21
24311 + // Configure as a input with no pull-up/down
24313 + target = <&gpio>;
24315 + sx150x_1_21_pins: sx150x_1_21_pins {
24316 + brcm,pins = <0>; /* overwritten by sx150x-1-21-int-gpio parameter */
24317 + brcm,function = <0>;
24323 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x22
24324 + // Configure as a input with no pull-up/down
24326 + target = <&gpio>;
24328 + sx150x_0_22_pins: sx150x_0_22_pins {
24329 + brcm,pins = <0>; /* overwritten by sx150x-0-22-int-gpio parameter */
24330 + brcm,function = <0>;
24336 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x22
24337 + // Configure as a input with no pull-up/down
24339 + target = <&gpio>;
24341 + sx150x_1_22_pins: sx150x_1_22_pins {
24342 + brcm,pins = <0>; /* overwritten by sx150x-1-22-int-gpio parameter */
24343 + brcm,function = <0>;
24349 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x23
24350 + // Configure as a input with no pull-up/down
24352 + target = <&gpio>;
24354 + sx150x_0_23_pins: sx150x_0_23_pins {
24355 + brcm,pins = <0>; /* overwritten by sx150x-0-23-int-gpio parameter */
24356 + brcm,function = <0>;
24362 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x23
24363 + // Configure as a input with no pull-up/down
24365 + target = <&gpio>;
24367 + sx150x_1_23_pins: sx150x_1_23_pins {
24368 + brcm,pins = <0>; /* overwritten by sx150x-1-23-int-gpio parameter */
24369 + brcm,function = <0>;
24375 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x3E
24376 + // Configure as a input with no pull-up/down
24378 + target = <&gpio>;
24380 + sx150x_0_3E_pins: sx150x_0_3E_pins {
24381 + brcm,pins = <0>; /* overwritten by sx150x-0-3E-int-gpio parameter */
24382 + brcm,function = <0>;
24388 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x3E
24389 + // Configure as a input with no pull-up/down
24391 + target = <&gpio>;
24393 + sx150x_1_3E_pins: sx150x_1_3E_pins {
24394 + brcm,pins = <0>; /* overwritten by sx150x-1-3E-int-gpio parameter */
24395 + brcm,function = <0>;
24401 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x3F
24402 + // Configure as a input with no pull-up/down
24404 + target = <&gpio>;
24406 + sx150x_0_3F_pins: sx150x_0_3F_pins {
24407 + brcm,pins = <0>; /* overwritten by sx150x-0-3F-int-gpio parameter */
24408 + brcm,function = <0>;
24414 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x3F
24415 + // Configure as a input with no pull-up/down
24417 + target = <&gpio>;
24419 + sx150x_1_3F_pins: sx150x_1_3F_pins {
24420 + brcm,pins = <0>; /* overwritten by sx150x-1-3F-int-gpio parameter */
24421 + brcm,function = <0>;
24427 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x70
24428 + // Configure as a input with no pull-up/down
24430 + target = <&gpio>;
24432 + sx150x_0_70_pins: sx150x_0_70_pins {
24433 + brcm,pins = <0>; /* overwritten by sx150x-0-70-int-gpio parameter */
24434 + brcm,function = <0>;
24440 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x70
24441 + // Configure as a input with no pull-up/down
24443 + target = <&gpio>;
24445 + sx150x_1_70_pins: sx150x_1_70_pins {
24446 + brcm,pins = <0>; /* overwritten by sx150x-1-70-int-gpio parameter */
24447 + brcm,function = <0>;
24453 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#0 interface at slave addr 0x71
24454 + // Configure as a input with no pull-up/down
24456 + target = <&gpio>;
24458 + sx150x_0_71_pins: sx150x_0_71_pins {
24459 + brcm,pins = <0>; /* overwritten by sx150x-0-71-int-gpio parameter */
24460 + brcm,function = <0>;
24466 + // Configure GPIO pin connected to NINT output of a SX150x on I2C#1 interface at slave addr 0x71
24467 + // Configure as a input with no pull-up/down
24469 + target = <&gpio>;
24471 + sx150x_1_71_pins: sx150x_1_71_pins {
24472 + brcm,pins = <0>; /* overwritten by sx150x-1-71-int-gpio parameter */
24473 + brcm,function = <0>;
24480 + sx1501-0-20 = <0>,"+0+2";
24481 + sx1501-1-20 = <0>,"+1+3";
24482 + sx1501-0-21 = <0>,"+0+4";
24483 + sx1501-1-21 = <0>,"+1+5";
24484 + sx1502-0-20 = <0>,"+0+6";
24485 + sx1502-1-20 = <0>,"+1+7";
24486 + sx1502-0-21 = <0>,"+0+8";
24487 + sx1502-1-21 = <0>,"+1+9";
24488 + sx1503-0-20 = <0>,"+0+10";
24489 + sx1503-1-20 = <0>,"+1+11";
24490 + sx1504-0-20 = <0>,"+0+12";
24491 + sx1504-1-20 = <0>,"+1+13";
24492 + sx1504-0-21 = <0>,"+0+14";
24493 + sx1504-1-21 = <0>,"+1+15";
24494 + sx1505-0-20 = <0>,"+0+16";
24495 + sx1505-1-20 = <0>,"+1+17";
24496 + sx1505-0-21 = <0>,"+0+18";
24497 + sx1505-1-21 = <0>,"+1+19";
24498 + sx1506-0-20 = <0>,"+0+20";
24499 + sx1506-1-20 = <0>,"+1+21";
24500 + sx1507-0-3E = <0>,"+0+22";
24501 + sx1507-1-3E = <0>,"+1+23";
24502 + sx1507-0-3F = <0>,"+0+24";
24503 + sx1507-1-3F = <0>,"+1+25";
24504 + sx1507-0-70 = <0>,"+0+26";
24505 + sx1507-1-70 = <0>,"+1+27";
24506 + sx1507-0-71 = <0>,"+0+28";
24507 + sx1507-1-71 = <0>,"+1+29";
24508 + sx1508-0-20 = <0>,"+0+30";
24509 + sx1508-1-20 = <0>,"+1+31";
24510 + sx1508-0-21 = <0>,"+0+32";
24511 + sx1508-1-21 = <0>,"+1+33";
24512 + sx1508-0-22 = <0>,"+0+34";
24513 + sx1508-1-22 = <0>,"+1+35";
24514 + sx1508-0-23 = <0>,"+0+36";
24515 + sx1508-1-23 = <0>,"+1+37";
24516 + sx1509-0-3E = <0>,"+0+38";
24517 + sx1509-1-3E = <0>,"+1+39";
24518 + sx1509-0-3F = <0>,"+0+40";
24519 + sx1509-1-3F = <0>,"+1+41";
24520 + sx1509-0-70 = <0>,"+0+42";
24521 + sx1509-1-70 = <0>,"+1+43";
24522 + sx1509-0-71 = <0>,"+0+44";
24523 + sx1509-1-71 = <0>,"+1+45";
24524 + sx1501-0-20-int-gpio = <0>,"+46+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1501_0_20>,"interrupts:0";
24525 + sx1501-1-20-int-gpio = <0>,"+47+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1501_1_20>,"interrupts:0";
24526 + sx1501-0-21-int-gpio = <0>,"+48+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1501_0_21>,"interrupts:0";
24527 + sx1501-1-21-int-gpio = <0>,"+49+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1501_1_21>,"interrupts:0";
24528 + sx1502-0-20-int-gpio = <0>,"+50+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1502_0_20>,"interrupts:0";
24529 + sx1502-1-20-int-gpio = <0>,"+51+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1502_1_20>,"interrupts:0";
24530 + sx1502-0-21-int-gpio = <0>,"+52+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1502_0_21>,"interrupts:0";
24531 + sx1502-1-21-int-gpio = <0>,"+53+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1502_1_21>,"interrupts:0";
24532 + sx1503-0-20-int-gpio = <0>,"+54+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1503_0_20>,"interrupts:0";
24533 + sx1503-1-20-int-gpio = <0>,"+55+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1503_1_20>,"interrupts:0";
24534 + sx1504-0-20-int-gpio = <0>,"+56+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1504_0_20>,"interrupts:0";
24535 + sx1504-1-20-int-gpio = <0>,"+57+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1504_1_20>,"interrupts:0";
24536 + sx1504-0-21-int-gpio = <0>,"+58+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1504_0_21>,"interrupts:0";
24537 + sx1504-1-21-int-gpio = <0>,"+59+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1504_1_21>,"interrupts:0";
24538 + sx1505-0-20-int-gpio = <0>,"+60+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1505_0_20>,"interrupts:0";
24539 + sx1505-1-20-int-gpio = <0>,"+61+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1505_1_20>,"interrupts:0";
24540 + sx1505-0-21-int-gpio = <0>,"+62+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1505_0_21>,"interrupts:0";
24541 + sx1505-1-21-int-gpio = <0>,"+63+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1505_1_21>,"interrupts:0";
24542 + sx1506-0-20-int-gpio = <0>,"+64+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1506_0_20>,"interrupts:0";
24543 + sx1506-1-20-int-gpio = <0>,"+65+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1506_1_20>,"interrupts:0";
24544 + sx1507-0-3E-int-gpio = <0>,"+66+98", <&sx150x_0_3E_pins>,"brcm,pins:0", <&sx1507_0_3E>,"interrupts:0";
24545 + sx1507-1-3E-int-gpio = <0>,"+67+99", <&sx150x_1_3E_pins>,"brcm,pins:0", <&sx1507_1_3E>,"interrupts:0";
24546 + sx1507-0-3F-int-gpio = <0>,"+68+100", <&sx150x_0_3F_pins>,"brcm,pins:0", <&sx1507_0_3F>,"interrupts:0";
24547 + sx1507-1-3F-int-gpio = <0>,"+69+101", <&sx150x_1_3F_pins>,"brcm,pins:0", <&sx1507_1_3F>,"interrupts:0";
24548 + sx1507-0-70-int-gpio = <0>,"+60+102", <&sx150x_0_70_pins>,"brcm,pins:0", <&sx1507_0_70>,"interrupts:0";
24549 + sx1507-1-70-int-gpio = <0>,"+71+103", <&sx150x_1_70_pins>,"brcm,pins:0", <&sx1507_1_70>,"interrupts:0";
24550 + sx1507-0-71-int-gpio = <0>,"+72+104", <&sx150x_0_71_pins>,"brcm,pins:0", <&sx1507_0_71>,"interrupts:0";
24551 + sx1507-1-71-int-gpio = <0>,"+73+105", <&sx150x_1_71_pins>,"brcm,pins:0", <&sx1507_1_71>,"interrupts:0";
24552 + sx1508-0-20-int-gpio = <0>,"+74+90", <&sx150x_0_20_pins>,"brcm,pins:0", <&sx1508_0_20>,"interrupts:0";
24553 + sx1508-1-20-int-gpio = <0>,"+75+91", <&sx150x_1_20_pins>,"brcm,pins:0", <&sx1508_1_20>,"interrupts:0";
24554 + sx1508-0-21-int-gpio = <0>,"+76+92", <&sx150x_0_21_pins>,"brcm,pins:0", <&sx1508_0_21>,"interrupts:0";
24555 + sx1508-1-21-int-gpio = <0>,"+77+93", <&sx150x_1_21_pins>,"brcm,pins:0", <&sx1508_1_21>,"interrupts:0";
24556 + sx1508-0-22-int-gpio = <0>,"+78+94", <&sx150x_0_22_pins>,"brcm,pins:0", <&sx1508_0_22>,"interrupts:0";
24557 + sx1508-1-22-int-gpio = <0>,"+79+95", <&sx150x_1_22_pins>,"brcm,pins:0", <&sx1508_1_22>,"interrupts:0";
24558 + sx1508-0-23-int-gpio = <0>,"+80+96", <&sx150x_0_23_pins>,"brcm,pins:0", <&sx1508_0_23>,"interrupts:0";
24559 + sx1508-1-23-int-gpio = <0>,"+81+97", <&sx150x_1_23_pins>,"brcm,pins:0", <&sx1508_1_23>,"interrupts:0";
24560 + sx1509-0-3E-int-gpio = <0>,"+82+98", <&sx150x_0_3E_pins>,"brcm,pins:0", <&sx1509_0_3E>,"interrupts:0";
24561 + sx1509-1-3E-int-gpio = <0>,"+83+99", <&sx150x_1_3E_pins>,"brcm,pins:0", <&sx1509_1_3E>,"interrupts:0";
24562 + sx1509-0-3F-int-gpio = <0>,"+84+100", <&sx150x_0_3F_pins>,"brcm,pins:0", <&sx1509_0_3F>,"interrupts:0";
24563 + sx1509-1-3F-int-gpio = <0>,"+85+101", <&sx150x_1_3F_pins>,"brcm,pins:0", <&sx1509_1_3F>,"interrupts:0";
24564 + sx1509-0-70-int-gpio = <0>,"+86+102", <&sx150x_0_70_pins>,"brcm,pins:0", <&sx1509_0_70>,"interrupts:0";
24565 + sx1509-1-70-int-gpio = <0>,"+87+103", <&sx150x_1_70_pins>,"brcm,pins:0", <&sx1509_1_70>,"interrupts:0";
24566 + sx1509-0-71-int-gpio = <0>,"+88+104", <&sx150x_0_71_pins>,"brcm,pins:0", <&sx1509_0_71>,"interrupts:0";
24567 + sx1509-1-71-int-gpio = <0>,"+89+105", <&sx150x_1_71_pins>,"brcm,pins:0", <&sx1509_1_71>,"interrupts:0";
24571 diff --git a/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
24572 new file mode 100644
24573 index 000000000000..047695bb0c71
24575 +++ b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
24577 +// SPDX-License-Identifier: GPL-2.0-only
24578 +// Definitions to add I2S audio from the Toshiba TC358743 HDMI to CSI2 bridge.
24579 +// Requires tc358743 overlay to have been loaded to actually function.
24584 + compatible = "brcm,bcm2835";
24594 + target-path = "/";
24596 + tc358743_codec: tc358743-codec {
24597 + #sound-dai-cells = <0>;
24598 + compatible = "linux,spdif-dir";
24605 + target = <&sound>;
24606 + sound_overlay: __overlay__ {
24607 + compatible = "simple-audio-card";
24608 + simple-audio-card,format = "i2s";
24609 + simple-audio-card,name = "tc358743";
24610 + simple-audio-card,bitclock-master = <&dailink0_slave>;
24611 + simple-audio-card,frame-master = <&dailink0_slave>;
24614 + simple-audio-card,cpu {
24615 + sound-dai = <&i2s>;
24616 + dai-tdm-slot-num = <2>;
24617 + dai-tdm-slot-width = <32>;
24619 + dailink0_slave: simple-audio-card,codec {
24620 + sound-dai = <&tc358743_codec>;
24626 + card-name = <&sound_overlay>,"simple-audio-card,name";
24629 diff --git a/arch/arm/boot/dts/overlays/tc358743-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
24630 new file mode 100644
24631 index 000000000000..a1f8af36d2e7
24633 +++ b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
24635 +// SPDX-License-Identifier: GPL-2.0-only
24636 +// Definitions for Toshiba TC358743 HDMI to CSI2 bridge on VC I2C bus
24641 + compatible = "brcm,bcm2835";
24644 + target = <&i2c_csi_dsi>;
24646 + #address-cells = <1>;
24647 + #size-cells = <0>;
24651 + compatible = "toshiba,tc358743";
24655 + clocks = <&tc358743_clk>;
24656 + clock-names = "refclk";
24659 + tc358743: endpoint {
24660 + remote-endpoint = <&csi1_ep>;
24661 + clock-lanes = <0>;
24662 + clock-noncontinuous;
24663 + link-frequencies =
24664 + /bits/ 64 <486000000>;
24672 + target = <&csi1>;
24677 + csi1_ep: endpoint {
24678 + remote-endpoint = <&tc358743>;
24685 + target = <&tc358743>;
24687 + data-lanes = <1 2>;
24692 + target = <&tc358743>;
24694 + data-lanes = <1 2 3 4>;
24699 + target = <&i2c0if>;
24706 + target = <&i2c0mux>;
24713 + target-path = "/";
24715 + tc358743_clk: bridge-clk {
24716 + compatible = "fixed-clock";
24717 + #clock-cells = <0>;
24718 + clock-frequency = <27000000>;
24724 + target = <&csi1_ep>;
24726 + data-lanes = <1 2>;
24731 + target = <&csi1_ep>;
24733 + data-lanes = <1 2 3 4>;
24738 + 4lane = <0>, "-2+3-7+8";
24739 + link-frequency = <&tc358743>,"link-frequencies#0";
24742 diff --git a/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
24743 new file mode 100644
24744 index 000000000000..a102b09e3ab5
24746 +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
24749 + * tinylcd35-overlay.dts
24751 + * -------------------------------------------------
24752 + * www.tinlylcd.com
24753 + * -------------------------------------------------
24754 + * Device---Driver-----BUS GPIO's
24755 + * display tinylcd35 spi0.0 25 24 18
24756 + * touch ads7846 spi0.1 5
24757 + * rtc ds1307 i2c1-0068
24758 + * rtc pcf8563 i2c1-0051
24759 + * keypad gpio-keys --------- 17 22 27 23 28
24762 + * TinyLCD.com 3.5 inch TFT
24765 + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
24766 + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support.
24774 + compatible = "brcm,bcm2835";
24777 + target = <&spi0>;
24784 + target = <&spidev0>;
24786 + status = "disabled";
24791 + target = <&spidev1>;
24793 + status = "disabled";
24798 + target = <&gpio>;
24800 + tinylcd35_pins: tinylcd35_pins {
24801 + brcm,pins = <25 24 18>;
24802 + brcm,function = <1>; /* out */
24804 + tinylcd35_ts_pins: tinylcd35_ts_pins {
24806 + brcm,function = <0>; /* in */
24808 + keypad_pins: keypad_pins {
24809 + brcm,pins = <4 17 22 23 27>;
24810 + brcm,function = <0>; /* in */
24811 + brcm,pull = <1>; /* down */
24817 + target = <&spi0>;
24819 + /* needed to avoid dtc warning */
24820 + #address-cells = <1>;
24821 + #size-cells = <0>;
24823 + tinylcd35: tinylcd35@0{
24824 + compatible = "neosec,tinylcd";
24826 + pinctrl-names = "default";
24827 + pinctrl-0 = <&tinylcd35_pins>,
24828 + <&tinylcd35_ts_pins>;
24830 + spi-max-frequency = <48000000>;
24835 + reset-gpios = <&gpio 25 1>;
24836 + dc-gpios = <&gpio 24 0>;
24837 + led-gpios = <&gpio 18 0>;
24840 + init = <0x10000B0 0x80
24841 + 0x10000C0 0x0A 0x0A
24842 + 0x10000C1 0x01 0x01
24844 + 0x10000C5 0x00 0x42 0x80
24845 + 0x10000B1 0xD0 0x11
24847 + 0x10000B6 0x00 0x22 0x3B
24850 + 0x10000F0 0x36 0xA5 0xD3
24855 + 0x10000F0 0x36 0xA5 0x53
24856 + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
24863 + tinylcd35_ts: tinylcd35_ts@1 {
24864 + compatible = "ti,ads7846";
24866 + status = "disabled";
24868 + spi-max-frequency = <2000000>;
24869 + interrupts = <5 2>; /* high-to-low edge triggered */
24870 + interrupt-parent = <&gpio>;
24871 + pendown-gpio = <&gpio 5 0>;
24872 + ti,x-plate-ohms = /bits/ 16 <100>;
24873 + ti,pressure-max = /bits/ 16 <255>;
24881 + target = <&i2c1>;
24883 + #address-cells = <1>;
24884 + #size-cells = <0>;
24888 + pcf8563: pcf8563@51 {
24889 + compatible = "nxp,pcf8563";
24897 + target = <&i2c1>;
24899 + #address-cells = <1>;
24900 + #size-cells = <0>;
24904 + ds1307: ds1307@68 {
24905 + compatible = "dallas,ds1307";
24913 + * Values for input event code is found under the
24914 + * 'Keys and buttons' heading in include/uapi/linux/input.h
24917 + target-path = "/soc";
24920 + compatible = "gpio-keys";
24921 + pinctrl-names = "default";
24922 + pinctrl-0 = <&keypad_pins>;
24923 + status = "disabled";
24927 + label = "GPIO KEY_UP";
24928 + linux,code = <103>;
24929 + gpios = <&gpio 17 0>;
24932 + label = "GPIO KEY_DOWN";
24933 + linux,code = <108>;
24934 + gpios = <&gpio 22 0>;
24937 + label = "GPIO KEY_LEFT";
24938 + linux,code = <105>;
24939 + gpios = <&gpio 27 0>;
24942 + label = "GPIO KEY_RIGHT";
24943 + linux,code = <106>;
24944 + gpios = <&gpio 23 0>;
24947 + label = "GPIO KEY_ENTER";
24948 + linux,code = <28>;
24949 + gpios = <&gpio 4 0>;
24956 + speed = <&tinylcd35>,"spi-max-frequency:0";
24957 + rotate = <&tinylcd35>,"rotate:0";
24958 + fps = <&tinylcd35>,"fps:0";
24959 + debug = <&tinylcd35>,"debug:0";
24960 + touch = <&tinylcd35_ts>,"status";
24961 + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
24962 + <&tinylcd35_ts>,"interrupts:0",
24963 + <&tinylcd35_ts>,"pendown-gpio:4";
24964 + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
24965 + rtc-pcf = <0>,"=5";
24966 + rtc-ds = <0>,"=6";
24967 + keypad = <&keypad>,"status";
24970 diff --git a/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
24971 new file mode 100644
24972 index 000000000000..e69188503ca3
24974 +++ b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
24977 + * Device Tree overlay for the Infineon SLB9670 Trusted Platform Module add-on
24978 + * boards, which can be used as a secure key storage and hwrng.
24979 + * available as "Iridium SLB9670" by Infineon and "LetsTrust TPM" by pi3g.
24986 + compatible = "brcm,bcm2835";
24989 + target = <&spi0>;
24996 + target = <&spidev1>;
24998 + status = "disabled";
25003 + target = <&spi0>;
25005 + /* needed to avoid dtc warning */
25006 + #address-cells = <1>;
25007 + #size-cells = <0>;
25008 + slb9670: slb9670@1 {
25009 + compatible = "infineon,slb9670";
25010 + reg = <1>; /* CE1 */
25011 + #address-cells = <1>;
25012 + #size-cells = <0>;
25013 + spi-max-frequency = <32000000>;
25020 diff --git a/arch/arm/boot/dts/overlays/uart0-overlay.dts b/arch/arm/boot/dts/overlays/uart0-overlay.dts
25021 new file mode 100755
25022 index 000000000000..73d563bbaabf
25024 +++ b/arch/arm/boot/dts/overlays/uart0-overlay.dts
25030 + compatible = "brcm,bcm2835";
25033 + target = <&uart0>;
25035 + pinctrl-names = "default";
25036 + pinctrl-0 = <&uart0_pins>;
25042 + target = <&gpio>;
25044 + uart0_pins: uart0_pins {
25045 + brcm,pins = <14 15>;
25046 + brcm,function = <4>; /* alt0 */
25047 + brcm,pull = <0 2>;
25053 + txd0_pin = <&uart0_pins>,"brcm,pins:0";
25054 + rxd0_pin = <&uart0_pins>,"brcm,pins:4";
25055 + pin_func = <&uart0_pins>,"brcm,function:0";
25058 diff --git a/arch/arm/boot/dts/overlays/uart1-overlay.dts b/arch/arm/boot/dts/overlays/uart1-overlay.dts
25059 new file mode 100644
25060 index 000000000000..986d725a2652
25062 +++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
25068 + compatible = "brcm,bcm2835";
25071 + target = <&uart1>;
25073 + pinctrl-names = "default";
25074 + pinctrl-0 = <&uart1_pins>;
25080 + target = <&gpio>;
25082 + uart1_pins: uart1_pins {
25083 + brcm,pins = <14 15>;
25084 + brcm,function = <2>; /* alt5 */
25085 + brcm,pull = <0 2>;
25091 + target-path = "/chosen";
25093 + bootargs = "8250.nr_uarts=1";
25098 + txd1_pin = <&uart1_pins>,"brcm,pins:0";
25099 + rxd1_pin = <&uart1_pins>,"brcm,pins:4";
25102 diff --git a/arch/arm/boot/dts/overlays/uart2-overlay.dts b/arch/arm/boot/dts/overlays/uart2-overlay.dts
25103 new file mode 100644
25104 index 000000000000..9face240aca1
25106 +++ b/arch/arm/boot/dts/overlays/uart2-overlay.dts
25112 + compatible = "brcm,bcm2711";
25115 + target = <&uart2>;
25117 + pinctrl-names = "default";
25118 + pinctrl-0 = <&uart2_pins>;
25124 + target = <&uart2_pins>;
25126 + brcm,pins = <0 1 2 3>;
25127 + brcm,pull = <0 2 2 0>;
25132 + ctsrts = <0>,"=1";
25135 diff --git a/arch/arm/boot/dts/overlays/uart3-overlay.dts b/arch/arm/boot/dts/overlays/uart3-overlay.dts
25136 new file mode 100644
25137 index 000000000000..ae9f9fe5ea1d
25139 +++ b/arch/arm/boot/dts/overlays/uart3-overlay.dts
25145 + compatible = "brcm,bcm2711";
25148 + target = <&uart3>;
25150 + pinctrl-names = "default";
25151 + pinctrl-0 = <&uart3_pins>;
25157 + target = <&uart3_pins>;
25159 + brcm,pins = <4 5 6 7>;
25160 + brcm,pull = <0 2 2 0>;
25165 + ctsrts = <0>,"=1";
25168 diff --git a/arch/arm/boot/dts/overlays/uart4-overlay.dts b/arch/arm/boot/dts/overlays/uart4-overlay.dts
25169 new file mode 100644
25170 index 000000000000..ac004ffbadbf
25172 +++ b/arch/arm/boot/dts/overlays/uart4-overlay.dts
25178 + compatible = "brcm,bcm2711";
25181 + target = <&uart4>;
25183 + pinctrl-names = "default";
25184 + pinctrl-0 = <&uart4_pins>;
25190 + target = <&uart4_pins>;
25192 + brcm,pins = <8 9 10 11>;
25193 + brcm,pull = <0 2 2 0>;
25198 + ctsrts = <0>,"=1";
25201 diff --git a/arch/arm/boot/dts/overlays/uart5-overlay.dts b/arch/arm/boot/dts/overlays/uart5-overlay.dts
25202 new file mode 100644
25203 index 000000000000..04eaf376effe
25205 +++ b/arch/arm/boot/dts/overlays/uart5-overlay.dts
25211 + compatible = "brcm,bcm2711";
25214 + target = <&uart5>;
25216 + pinctrl-names = "default";
25217 + pinctrl-0 = <&uart5_pins>;
25223 + target = <&uart5_pins>;
25225 + brcm,pins = <12 13 14 15>;
25226 + brcm,pull = <0 2 2 0>;
25231 + ctsrts = <0>,"=1";
25234 diff --git a/arch/arm/boot/dts/overlays/udrc-overlay.dts b/arch/arm/boot/dts/overlays/udrc-overlay.dts
25235 new file mode 100644
25236 index 000000000000..ae7c37996894
25238 +++ b/arch/arm/boot/dts/overlays/udrc-overlay.dts
25240 +#include <dt-bindings/clock/bcm2835.h>
25242 + * Device tree overlay for the Universal Digital Radio Controller
25249 + compatible = "brcm,bcm2835";
25253 + clocks = <&clocks BCM2835_CLOCK_PCM>;
25254 + clock-names = "pcm";
25260 + target-path = "/";
25263 + compatible = "simple-bus";
25264 + #address-cells = <1>;
25265 + #size-cells = <0>;
25267 + udrc0_ldoin: udrc0_ldoin {
25268 + compatible = "regulator-fixed";
25269 + regulator-name = "ldoin";
25270 + regulator-min-microvolt = <3300000>;
25271 + regulator-max-microvolt = <3300000>;
25272 + regulator-always-on;
25279 + target = <&i2c1>;
25281 + #address-cells = <1>;
25282 + #size-cells = <0>;
25284 + clocks = <&clocks BCM2835_CLOCK_VPU>;
25285 + clock-frequency = <400000>;
25287 + tlv320aic32x4: tlv320aic32x4@18 {
25288 + compatible = "ti,tlv320aic32x4";
25289 + #sound-dai-cells = <0>;
25293 + clocks = <&clocks BCM2835_CLOCK_GP0>;
25294 + clock-names = "mclk";
25295 + assigned-clocks = <&clocks BCM2835_CLOCK_GP0>;
25296 + assigned-clock-rates = <25000000>;
25298 + pinctrl-names = "default";
25299 + pinctrl-0 = <&gpclk0_pin &aic3204_reset>;
25301 + reset-gpios = <&gpio 13 0>;
25303 + iov-supply = <&udrc0_ldoin>;
25304 + ldoin-supply = <&udrc0_ldoin>;
25310 + target = <&sound>;
25311 + snd: __overlay__ {
25312 + compatible = "simple-audio-card";
25313 + i2s-controller = <&i2s>;
25316 + simple-audio-card,name = "udrc";
25317 + simple-audio-card,format = "i2s";
25319 + simple-audio-card,bitclock-master = <&dailink0_master>;
25320 + simple-audio-card,frame-master = <&dailink0_master>;
25322 + simple-audio-card,widgets =
25323 + "Line", "Line In",
25324 + "Line", "Line Out";
25326 + simple-audio-card,routing =
25327 + "IN1_R", "Line In",
25328 + "IN1_L", "Line In",
25329 + "CM_L", "Line In",
25330 + "CM_R", "Line In",
25331 + "Line Out", "LOR",
25332 + "Line Out", "LOL";
25334 + dailink0_master: simple-audio-card,cpu {
25335 + sound-dai = <&i2s>;
25338 + simple-audio-card,codec {
25339 + sound-dai = <&tlv320aic32x4>;
25345 + target = <&gpio>;
25347 + gpclk0_pin: gpclk0_pin {
25349 + brcm,function = <4>;
25352 + aic3204_reset: aic3204_reset {
25353 + brcm,pins = <13>;
25354 + brcm,function = <1>;
25358 + aic3204_gpio: aic3204_gpio {
25359 + brcm,pins = <26>;
25365 + alsaname = <&snd>, "simple-audio-card,name";
25368 diff --git a/arch/arm/boot/dts/overlays/upstream-overlay.dts b/arch/arm/boot/dts/overlays/upstream-overlay.dts
25369 new file mode 100644
25370 index 000000000000..2e9dcd4f5f0a
25372 +++ b/arch/arm/boot/dts/overlays/upstream-overlay.dts
25374 +// redo: ovmerge -c vc4-kms-v3d-overlay.dts,cma-default dwc2-overlay.dts,dr_mode=otg
25379 +#include <dt-bindings/clock/bcm2835.h>
25382 + compatible = "brcm,bcm2835";
25386 + size = <0x10000000>;
25390 + target = <&i2c2>;
25398 + status = "disabled";
25402 + target = <&pixelvalve0>;
25408 + target = <&pixelvalve1>;
25414 + target = <&pixelvalve2>;
25426 + target = <&hdmi>;
25444 + target = <&clocks>;
25446 + claim-clocks = <BCM2835_PLLD_DSI0 BCM2835_PLLD_DSI1 BCM2835_PLLH_AUX BCM2835_PLLH_PIX>;
25462 + target = <&hdmi>;
25468 + target = <&audio>;
25470 + brcm,disable-hdmi;
25475 + #address-cells = <1>;
25476 + #size-cells = <1>;
25478 + compatible = "brcm,bcm2835-usb";
25480 + g-np-tx-fifo-size = <32>;
25481 + g-rx-fifo-size = <558>;
25482 + g-tx-fifo-size = <512 512 512 512 512 256 256>;
25487 diff --git a/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
25488 new file mode 100644
25489 index 000000000000..6195e02bf9ff
25491 +++ b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
25493 +// redo: ovmerge -c vc4-kms-v3d-pi4-overlay.dts,cma-default dwc2-overlay.dts,dr_mode=otg
25498 +#include <dt-bindings/clock/bcm2835.h>
25501 + compatible = "brcm,bcm2835";
25505 + size = <0x10000000>;
25509 + target = <&ddc0>;
25515 + target = <&ddc1>;
25521 + target = <&hdmi0>;
25527 + target = <&hdmi1>;
25539 + target = <&pixelvalve0>;
25545 + target = <&pixelvalve1>;
25551 + target = <&pixelvalve2>;
25557 + target = <&pixelvalve3>;
25563 + target = <&pixelvalve4>;
25589 + status = "disabled";
25593 + target = <&firmwarekms>;
25595 + status = "disabled";
25601 + status = "disabled";
25605 + target = <&hdmi0>;
25611 + target = <&hdmi1>;
25617 + target = <&audio>;
25619 + brcm,disable-hdmi;
25629 + target = <&pixelvalve3>;
25642 + #address-cells = <1>;
25643 + #size-cells = <1>;
25645 + compatible = "brcm,bcm2835-usb";
25647 + g-np-tx-fifo-size = <32>;
25648 + g-rx-fifo-size = <558>;
25649 + g-tx-fifo-size = <512 512 512 512 512 256 256>;
25654 diff --git a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
25655 new file mode 100644
25656 index 000000000000..ca344492bed8
25658 +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
25661 + * vc4-fkms-v3d-overlay.dts
25667 +#include "cma-overlay.dts"
25670 + compatible = "brcm,bcm2835";
25675 + status = "disabled";
25680 + target = <&firmwarekms>;
25700 diff --git a/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
25701 new file mode 100644
25702 index 000000000000..b03394844abd
25704 +++ b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
25707 + * vc4-kms-v3d-overlay.dts
25713 +#include <dt-bindings/pinctrl/bcm2835.h>
25716 + compatible = "brcm,bcm2835";
25719 + target-path = "/";
25722 + compatible = "ontat,yx700wv03", "simple-panel";
25725 + panel_in: endpoint {
25726 + remote-endpoint = <&dpi_out>;
25738 + pinctrl-names = "default";
25739 + pinctrl-0 = <&dpi_18bit_gpio0>;
25742 + dpi_out: endpoint@0 {
25743 + remote-endpoint = <&panel_in>;
25749 diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
25750 new file mode 100644
25751 index 000000000000..6d34a2bff49b
25753 +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
25756 + * vc4-kms-v3d-overlay.dts
25762 +#include <dt-bindings/clock/bcm2835.h>
25764 +#include "cma-overlay.dts"
25767 + compatible = "brcm,bcm2835";
25770 + target = <&i2c2>;
25779 + status = "disabled";
25784 + target = <&pixelvalve0>;
25791 + target = <&pixelvalve1>;
25798 + target = <&pixelvalve2>;
25812 + target = <&hdmi>;
25833 + target = <&clocks>;
25836 + BCM2835_PLLD_DSI0
25837 + BCM2835_PLLD_DSI1
25859 + target = <&hdmi>;
25866 + target = <&audio>;
25868 + brcm,disable-hdmi;
25873 + audio = <0>,"!13", <0>,"=14";
25874 + noaudio = <0>,"=13", <0>,"!14";
25877 diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
25878 new file mode 100644
25879 index 000000000000..f721f12d729d
25881 +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
25884 + * vc4-kms-v3d-pi4-overlay.dts
25890 +#include <dt-bindings/clock/bcm2835.h>
25892 +#include "cma-overlay.dts"
25895 + compatible = "brcm,bcm2835";
25898 + target = <&ddc0>;
25905 + target = <&ddc1>;
25912 + target = <&hdmi0>;
25919 + target = <&hdmi1>;
25933 + target = <&pixelvalve0>;
25940 + target = <&pixelvalve1>;
25947 + target = <&pixelvalve2>;
25954 + target = <&pixelvalve3>;
25961 + target = <&pixelvalve4>;
25991 + status = "disabled";
25996 + target = <&firmwarekms>;
25998 + status = "disabled";
26005 + status = "disabled";
26010 + target = <&hdmi0>;
26017 + target = <&hdmi1>;
26024 + target = <&audio>;
26026 + brcm,disable-hdmi;
26038 + target = <&pixelvalve3>;
26052 + audio = <0>,"!17";
26053 + audio1 = <0>,"!18";
26054 + noaudio = <0>,"=17", <0>,"=18", <0>,"!19";
26055 + composite = <0>, "!1",
26069 diff --git a/arch/arm/boot/dts/overlays/vga666-overlay.dts b/arch/arm/boot/dts/overlays/vga666-overlay.dts
26070 new file mode 100644
26071 index 000000000000..a4968d180a5d
26073 +++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
26079 + compatible = "brcm,bcm2835";
26081 + // There is no VGA driver module, but we need a platform device
26082 + // node (that doesn't already use pinctrl) to hang the pinctrl
26083 + // reference on - leds will do
26086 + target = <&leds>;
26088 + pinctrl-names = "default";
26089 + pinctrl-0 = <&vga666_pins>;
26094 + target = <&gpio>;
26096 + vga666_pins: vga666_pins {
26097 + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12
26098 + 13 14 15 16 17 18 19 20 21>;
26099 + brcm,function = <6>; /* alt2 */
26100 + brcm,pull = <0>; /* no pull */
26105 diff --git a/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
26106 new file mode 100644
26107 index 000000000000..f44e325bc1f2
26109 +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
26111 +// Definitions for w1-gpio module (without external pullup)
26116 + compatible = "brcm,bcm2835";
26119 + target-path = "/";
26123 + compatible = "w1-gpio";
26124 + pinctrl-names = "default";
26125 + pinctrl-0 = <&w1_pins>;
26126 + gpios = <&gpio 4 0>;
26133 + target = <&gpio>;
26135 + w1_pins: w1_pins@0 {
26137 + brcm,function = <0>; // in (initially)
26138 + brcm,pull = <0>; // off
26144 + gpiopin = <&w1>,"gpios:4",
26146 + <&w1_pins>,"brcm,pins:0",
26147 + <&w1_pins>,"reg:0";
26148 + pullup; // Silently ignore unneeded parameter
26151 diff --git a/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
26152 new file mode 100644
26153 index 000000000000..953c6a1aeab9
26155 +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
26157 +// Definitions for w1-gpio module (with external pullup)
26162 + compatible = "brcm,bcm2835";
26165 + target-path = "/";
26169 + compatible = "w1-gpio";
26170 + pinctrl-names = "default";
26171 + pinctrl-0 = <&w1_pins>;
26172 + gpios = <&gpio 4 0>, <&gpio 5 1>;
26179 + target = <&gpio>;
26181 + w1_pins: w1_pins@0 {
26182 + brcm,pins = <4 5>;
26183 + brcm,function = <0 1>; // in out
26184 + brcm,pull = <0 0>; // off off
26190 + gpiopin = <&w1>,"gpios:4",
26192 + <&w1_pins>,"brcm,pins:0",
26193 + <&w1_pins>,"reg:0";
26194 + extpullup = <&w1>,"gpios:16",
26195 + <&w1_pins>,"brcm,pins:4";
26196 + pullup; // Silently ignore unneeded parameter
26199 diff --git a/arch/arm/boot/dts/overlays/w5500-overlay.dts b/arch/arm/boot/dts/overlays/w5500-overlay.dts
26200 new file mode 100644
26201 index 000000000000..4d3e66296753
26203 +++ b/arch/arm/boot/dts/overlays/w5500-overlay.dts
26205 +// Overlay for the Wiznet w5500 Ethernet Controller
26210 + compatible = "brcm,bcm2835";
26213 + target = <&spidev0>;
26215 + status = "disabled";
26220 + target = <&spidev1>;
26222 + status = "disabled";
26227 + target = <&spi0>;
26229 + /* needed to avoid dtc warning */
26230 + #address-cells = <1>;
26231 + #size-cells = <0>;
26236 + compatible = "wiznet,w5500";
26237 + reg = <0>; /* CE0 */
26238 + pinctrl-names = "default";
26239 + pinctrl-0 = <ð1_pins>;
26240 + interrupt-parent = <&gpio>;
26241 + interrupts = <25 0x8>;
26242 + spi-max-frequency = <30000000>;
26243 +// local-mac-address = [aa bb cc dd ee ff];
26250 + target = <&gpio>;
26252 + eth1_pins: eth1_pins {
26253 + brcm,pins = <25>;
26254 + brcm,function = <0>; /* in */
26255 + brcm,pull = <0>; /* none */
26261 + int_pin = <ð1>, "interrupts:0",
26262 + <ð1_pins>, "brcm,pins:0";
26263 + speed = <ð1>, "spi-max-frequency:0";
26264 + cs = <ð1>, "reg:0",
26268 diff --git a/arch/arm/boot/dts/overlays/wittypi-overlay.dts b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
26269 new file mode 100644
26270 index 000000000000..71ce806186de
26272 +++ b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
26275 + * Device Tree overlay for Witty Pi extension board by UUGear
26284 + compatible = "brcm,bcm2835";
26287 + target = <&leds>;
26289 + compatible = "gpio-leds";
26290 + wittypi_led: wittypi_led {
26291 + label = "wittypi_led";
26292 + linux,default-trigger = "default-on";
26293 + gpios = <&gpio 17 0>;
26299 + target = <&i2c1>;
26301 + #address-cells = <1>;
26302 + #size-cells = <0>;
26305 + compatible = "dallas,ds1337";
26313 + led_gpio = <&wittypi_led>,"gpios:4";
26314 + led_trigger = <&wittypi_led>,"linux,default-trigger";
26318 diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
26319 index 9b1170658d60..cc6c25629057 100644
26320 --- a/arch/arm64/boot/dts/Makefile
26321 +++ b/arch/arm64/boot/dts/Makefile
26322 @@ -30,3 +30,5 @@ subdir-y += ti
26323 subdir-y += toshiba
26327 +subdir-y += overlays
26328 diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
26329 index cb7de8d99223..c3eaf8d63ee4 100644
26330 --- a/arch/arm64/boot/dts/broadcom/Makefile
26331 +++ b/arch/arm64/boot/dts/broadcom/Makefile
26333 # SPDX-License-Identifier: GPL-2.0
26334 -dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-4-b.dtb \
26335 - bcm2837-rpi-3-a-plus.dtb \
26336 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-a-plus.dtb \
26337 bcm2837-rpi-3-b.dtb \
26338 bcm2837-rpi-3-b-plus.dtb \
26339 bcm2837-rpi-cm3-io3.dtb
26340 +dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-2-b.dtb
26341 +dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb
26342 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-2-b.dtb
26343 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b.dtb
26344 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-4-b.dtb
26345 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b-plus.dtb
26346 +dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb
26347 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-cm3.dtb
26349 subdir-y += northstar2
26350 subdir-y += stingray
26352 +# Enable fixups to support overlays on BCM2835 platforms
26353 +ifeq ($(CONFIG_ARCH_BCM2835),y)
26356 diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
26357 new file mode 100644
26358 index 000000000000..116cdbf94b9b
26360 +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
26364 +#include "../../../../arm/boot/dts/bcm2710-rpi-2-b.dts"
26365 diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
26366 new file mode 100644
26367 index 000000000000..d9242ff77079
26369 +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
26373 +#include "../../../../arm/boot/dts/bcm2710-rpi-3-b-plus.dts"
26374 diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
26375 new file mode 100644
26376 index 000000000000..deb33441da95
26378 +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
26382 +#include "../../../../arm/boot/dts/bcm2710-rpi-3-b.dts"
26383 diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
26384 new file mode 100644
26385 index 000000000000..1c2560017c02
26387 +++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
26391 +#include "../../../../arm/boot/dts/bcm2710-rpi-cm3.dts"
26392 diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
26393 index d24c53682e44..1fd86f81f542 100644
26394 --- a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
26395 +++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
26397 -// SPDX-License-Identifier: GPL-2.0
26398 -#include "arm/bcm2711-rpi-4-b.dts"
26401 +#include "../../../../arm/boot/dts/bcm2711-rpi-4-b.dts"
26402 diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
26403 new file mode 120000
26404 index 000000000000..e5c400284467
26406 +++ b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
26408 +../../../../arm/boot/dts/bcm283x-rpi-csi1-2lane.dtsi
26409 \ No newline at end of file
26410 diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
26411 new file mode 120000
26412 index 000000000000..fc4c05bbe7fd
26414 +++ b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi
26416 +../../../../arm/boot/dts/bcm283x-rpi-lan7515.dtsi
26417 \ No newline at end of file
26418 diff --git a/arch/arm64/boot/dts/overlays b/arch/arm64/boot/dts/overlays
26419 new file mode 120000
26420 index 000000000000..ded08646b6f6
26422 +++ b/arch/arm64/boot/dts/overlays
26424 +../../../arm/boot/dts/overlays
26425 \ No newline at end of file
26426 diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
26427 index 50d580d77ae9..079b83308011 100644
26428 --- a/scripts/Makefile.dtbinst
26429 +++ b/scripts/Makefile.dtbinst
26430 @@ -18,9 +18,10 @@ include scripts/Kbuild.include
26431 include $(src)/Makefile
26433 dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
26434 +dtbos := $(addprefix $(dst)/, $(dtbo-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
26435 subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))
26437 -__dtbs_install: $(dtbs) $(subdirs)
26438 +__dtbs_install: $(dtbs) $(dtbos) $(subdirs)
26441 quiet_cmd_dtb_install = INSTALL $@
26442 @@ -29,6 +30,9 @@ quiet_cmd_dtb_install = INSTALL $@
26443 $(dst)/%.dtb: $(obj)/%.dtb
26444 $(call cmd,dtb_install)
26446 +$(dst)/%.dtbo: $(obj)/%.dtbo
26447 + $(call cmd,dtb_install)
26449 PHONY += $(subdirs)
26451 $(Q)$(MAKE) $(dtbinst)=$@ dst=$(patsubst $(obj)/%,$(dst)/%,$@)
26452 diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
26453 index 94133708889d..9c0df5bde46c 100644
26454 --- a/scripts/Makefile.lib
26455 +++ b/scripts/Makefile.lib
26456 @@ -281,6 +281,7 @@ DTC_FLAGS += -Wno-interrupt_provider
26457 ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
26458 DTC_FLAGS += -Wno-unit_address_vs_reg \
26459 -Wno-unit_address_format \
26460 + -Wno-gpios_property \
26461 -Wno-avoid_unnecessary_addr_size \
26463 -Wno-graph_child_address \
26464 @@ -341,6 +342,18 @@ endef
26465 $(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
26466 $(call if_changed_rule,dtc,yaml)
26468 +quiet_cmd_dtco = DTCO $@
26469 +cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \
26470 + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
26471 + $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \
26472 + -i $(dir $<) $(DTC_FLAGS) \
26473 + -Wno-interrupts_property \
26474 + -d $(depfile).dtc.tmp $(dtc-tmp) ; \
26475 + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
26477 +$(obj)/%.dtbo: $(src)/%-overlay.dts FORCE
26478 + $(call if_changed_dep,dtco)
26480 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)