Skip to content

Commit c44ae83

Browse files
pelwellpopcornmix
authored andcommitted
overlays: Add pwm-pio overlay
Add an overlay to enable a single-channel PIO-assisted PWM interface on any header pin. Signed-off-by: Phil Elwell <phil@raspberrypi.com>
1 parent 05df566 commit c44ae83

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
220220
pwm-2chan.dtbo \
221221
pwm-gpio.dtbo \
222222
pwm-ir-tx.dtbo \
223+
pwm-pio.dtbo \
223224
pwm1.dtbo \
224225
qca7000.dtbo \
225226
qca7000-uart0.dtbo \

arch/arm/boot/dts/overlays/README

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3960,6 +3960,14 @@ Params: gpio_pin Output GPIO (default 18)
39603960
func Pin function (default 2 = Alt5)
39613961

39623962

3963+
Name: pwm-pio
3964+
Info: Configures a GPIO pin as PIO-assisted PWM output. Unlike hardware PWM,
3965+
this can be used on any RP1 GPIO in bank 0 (0-27). Up to 4 are
3966+
supported, assuming nothing else is using PIO. Pi 5 only.
3967+
Load: dtoverlay=pwm-pio,<param>=<val>
3968+
Params: gpio Output GPIO (0-27, default 4)
3969+
3970+
39633971
Name: pwm1
39643972
Info: Configures one or two PWM channel on PWM1 (BCM2711 only)
39653973
N.B.:

arch/arm/boot/dts/overlays/overlay_map.dts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,10 @@
240240
bcm2712;
241241
};
242242

243+
pwm-pio {
244+
bcm2712;
245+
};
246+
243247
pwm1 {
244248
bcm2711;
245249
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
// Device tree overlay for RP1 PIO PWM.
3+
/dts-v1/;
4+
/plugin/;
5+
6+
/ {
7+
compatible = "brcm,bcm2712";
8+
9+
fragment@0 {
10+
target = <&gpio>;
11+
__overlay__ {
12+
pwm_pio_pins: pwm_pio_pins@4 {
13+
brcm,pins = <4>; /* gpio 4 */
14+
function = "pio";
15+
bias-disable;
16+
};
17+
};
18+
};
19+
20+
fragment@1 {
21+
target-path = "/";
22+
__overlay__ {
23+
pwm_pio: pwm_pio@4 {
24+
compatible = "raspberrypi,pwm-pio-rp1";
25+
pinctrl-names = "default";
26+
pinctrl-0 = <&pwm_pio_pins>;
27+
gpios = <&gpio 4 0>;
28+
};
29+
};
30+
};
31+
32+
__overrides__ {
33+
gpio = <&pwm_pio>,"gpios:4",
34+
<&pwm_pio_pins>,"brcm,pins:0",
35+
/* modify reg values to allow multiple instantiation */
36+
<&pwm_pio>,"reg:0",
37+
<&pwm_pio_pins>,"reg:0";
38+
};
39+
};

0 commit comments

Comments
 (0)