Skip to content

Commit f2e2ca2

Browse files
committed
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 <[email protected]>
1 parent 0f7418e commit f2e2ca2

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

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

arch/arm/boot/dts/overlays/README

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

39283928

3929+
Name: pwm-pio
3930+
Info: Configures a GPIO pin as PIO-assisted PWM output. Unlike hardware PWM,
3931+
this can be used on any RP1 GPIO in bank 0 (0-27). Up to 4 are
3932+
supported, assuming nothing else is using PIO. Pi 5 only.
3933+
Load: dtoverlay=pwm-pio,<param>=<val>
3934+
Params: gpio Output GPIO (0-27, default 4)
3935+
3936+
39293937
Name: pwm1
39303938
Info: Configures one or two PWM channel on PWM1 (BCM2711 only)
39313939
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: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Device tree overlay for RP1 PIO PWM.
2+
/dts-v1/;
3+
/plugin/;
4+
5+
/ {
6+
compatible = "brcm,bcm2712";
7+
8+
fragment@0 {
9+
target = <&gpio>;
10+
__overlay__ {
11+
pwm_pio_pins: pwm_pio_pins@4 {
12+
brcm,pins = <4>; /* gpio 4 */
13+
function = "pio";
14+
bias-disable;
15+
};
16+
};
17+
};
18+
19+
fragment@1 {
20+
target-path = "/";
21+
__overlay__ {
22+
pwm_pio: pwm_pio@4 {
23+
compatible = "raspberrypi,pwm-pio-rp1";
24+
pinctrl-names = "default";
25+
pinctrl-0 = <&pwm_pio_pins>;
26+
gpios = <&gpio 4 0>;
27+
};
28+
};
29+
};
30+
31+
__overrides__ {
32+
gpio = <&pwm_pio>,"gpios:4",
33+
<&pwm_pio_pins>,"brcm,pins:0",
34+
/* modify reg values to allow multiple instantiation */
35+
<&pwm_pio>,"reg:0",
36+
<&pwm_pio_pins>,"reg:0";
37+
};
38+
};

0 commit comments

Comments
 (0)