bcm27xx: 6.1: add kernel patches
[openwrt/staging/stintel.git] / target / linux / bcm27xx / patches-6.1 / 950-0465-overlays-Add-overlay-pwm1.patch
1 From 6f5604a2d672ffb874f89f9ae276b565ae99dcc6 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Wed, 16 Nov 2022 14:54:08 +0000
4 Subject: [PATCH] overlays: Add overlay pwm1
5
6 pwm1 enables the second PWM interface found on BCM2711. It can only
7 be mapped to GPIOs 40 & 41.
8
9 See: https://forums.raspberrypi.com/viewtopic.php?t=342458
10
11 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
12 ---
13 arch/arm/boot/dts/overlays/Makefile | 1 +
14 arch/arm/boot/dts/overlays/README | 18 +++++++
15 arch/arm/boot/dts/overlays/overlay_map.dts | 4 ++
16 arch/arm/boot/dts/overlays/pwm1-overlay.dts | 60 +++++++++++++++++++++
17 4 files changed, 83 insertions(+)
18 create mode 100644 arch/arm/boot/dts/overlays/pwm1-overlay.dts
19
20 --- a/arch/arm/boot/dts/overlays/Makefile
21 +++ b/arch/arm/boot/dts/overlays/Makefile
22 @@ -183,6 +183,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
23 pwm.dtbo \
24 pwm-2chan.dtbo \
25 pwm-ir-tx.dtbo \
26 + pwm1.dtbo \
27 qca7000.dtbo \
28 qca7000-uart0.dtbo \
29 ramoops.dtbo \
30 --- a/arch/arm/boot/dts/overlays/README
31 +++ b/arch/arm/boot/dts/overlays/README
32 @@ -3216,6 +3216,24 @@ Params: gpio_pin Output G
33 func Pin function (default 2 = Alt5)
34
35
36 +Name: pwm1
37 +Info: Configures one or two PWM channel on PWM1 (BCM2711 only)
38 + N.B.:
39 + 1) The onboard analogue audio output uses both PWM channels.
40 + 2) So be careful mixing audio and PWM.
41 + Note that even when only one pin is enabled, both channels are available
42 + from the PWM driver, so be careful to use the correct one.
43 +Load: dtoverlay=pwm1,<param>=<val>
44 +Params: clock PWM clock frequency (informational)
45 + pins_40 Enable channel 0 (PWM1_0) on GPIO 40
46 + pins_41 Enable channel 1 (PWM1_1) on GPIO 41
47 + pins_40_41 Enable channels 0 (PWM1_0) and 1 (PW1_1) on
48 + GPIOs 40 and 41 (default)
49 + pull_up Enable pull-ups on the PWM pins (default)
50 + pull_down Enable pull-downs on the PWM pins
51 + pull_off Disable pulls on the PWM pins
52 +
53 +
54 Name: qca7000
55 Info: in-tech's Evaluation Board for PLC Stamp micro
56 This uses spi0 and a separate GPIO interrupt to connect the QCA7000.
57 --- a/arch/arm/boot/dts/overlays/overlay_map.dts
58 +++ b/arch/arm/boot/dts/overlays/overlay_map.dts
59 @@ -77,6 +77,10 @@
60 renamed = "miniuart-bt";
61 };
62
63 + pwm1 {
64 + bcm2711;
65 + };
66 +
67 ramoops {
68 bcm2835;
69 bcm2711 = "ramoops-pi4";
70 --- /dev/null
71 +++ b/arch/arm/boot/dts/overlays/pwm1-overlay.dts
72 @@ -0,0 +1,60 @@
73 +/dts-v1/;
74 +/plugin/;
75 +
76 +#include <dt-bindings/pinctrl/bcm2835.h>
77 +
78 +/ {
79 + compatible = "brcm,bcm2711";
80 +
81 + fragment@0 {
82 + target = <&pins>;
83 + __overlay__ {
84 + brcm,pins = <40 41>;
85 + };
86 + };
87 +
88 + fragment@1 {
89 + target = <&pins>;
90 + __dormant__ {
91 + brcm,pins = <40>;
92 + };
93 + };
94 +
95 + fragment@2 {
96 + target = <&pins>;
97 + __dormant__ {
98 + brcm,pins = <41>;
99 + };
100 + };
101 +
102 + fragment@3 {
103 + target = <&gpio>;
104 + __overlay__ {
105 + pins: pwm1_overlay_pins {
106 + brcm,pins = <40 41>;
107 + brcm,function = <BCM2835_FSEL_ALT0>;
108 + brcm,pull = <BCM2835_PUD_UP>;
109 + };
110 + };
111 + };
112 +
113 + fragment@4 {
114 + target = <&pwm1>;
115 + pwm: __overlay__ {
116 + status = "okay";
117 + assigned-clock-rates = <100000000>;
118 + pinctrl-names = "default";
119 + pinctrl-0 = <&pins>;
120 + };
121 + };
122 +
123 + __overrides__ {
124 + clock = <&pwm>, "assigned-clock-rates:0";
125 + pins_40_41 = <0>,"+0-1-2";
126 + pins_40 = <0>,"-0+1-2";
127 + pins_41 = <0>,"-0-1+2";
128 + pull_up = <&pins>, "brcm,pull:0=", <BCM2835_PUD_UP>;
129 + pull_down = <&pins>, "brcm,pull:0=", <BCM2835_PUD_DOWN>;
130 + pull_off = <&pins>, "brcm,pull:0=", <BCM2835_PUD_OFF>;
131 + };
132 +};