Add device tree overlay for GPIO connected rotary encoder.
authorchenzhiwo <chenzhiwo@139.com>
Wed, 17 May 2017 08:34:57 +0000 (16:34 +0800)
committerRaspbian kernel package updater <root@raspbian.org>
Sat, 31 Mar 2018 14:54:14 +0000 (15:54 +0100)
See Documentation/input/rotary-encoder.txt for more information.

arch/arm/boot/dts/overlays/Makefile
arch/arm/boot/dts/overlays/README
arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts [new file with mode: 0644]

index b62edf6ce17ed8db18c73ce02b18ca43481691ab..9368f6281dd80f01900b477d97c83047e33ceb36 100644 (file)
@@ -75,6 +75,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
        pwm-2chan.dtbo \
        qca7000.dtbo \
        raspidac3.dtbo \
+       rotary-encoder.dtbo \
        rpi-backlight.dtbo \
        rpi-cirrus-wm5102.dtbo \
        rpi-dac.dtbo \
index b3aadaa6cfafae0e01908a3a2f1f646d06d69b32..95600381448b0b485dbbbeb592ae1e82a8acec08 100644 (file)
@@ -1115,6 +1115,15 @@ Load:   dtoverlay=raspidac3
 Params: <None>
 
 
+Name:   rotary-encoder
+Info:   Overlay for GPIO connected rotary encoder.
+Load:   dtoverlay=rotary-encoder,<param>=<val>
+Params: rotary0_pin_a           GPIO connected to rotary encoder channel A
+                                (default 4).
+        rotary0_pin_b           GPIO connected to rotary encoder channel B
+                                (default 17).
+
+
 Name:   rpi-backlight
 Info:   Raspberry Pi official display backlight driver
 Load:   dtoverlay=rpi-backlight
diff --git a/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
new file mode 100644 (file)
index 0000000..c0c6bcc
--- /dev/null
@@ -0,0 +1,43 @@
+// Device tree overlay for GPIO connected rotary encoder.
+/dts-v1/;
+/plugin/;
+
+/ {
+       compatible = "brcm,bcm2708";
+
+       fragment@0 {
+               target = <&gpio>;
+               __overlay__ {
+                       rotary0_pins: rotary0_pins {
+                               brcm,pins = <4 17>; /* gpio 4 17 */
+                               brcm,function = <0 0>; /* input */
+                               brcm,pull = <2 2>; /* pull-up */
+                       };
+
+               };
+       };
+
+       fragment@1 {
+               target-path = "/";
+               __overlay__ {
+                       rotary0: rotary@0 {
+                                       compatible = "rotary-encoder";
+                                       status = "okay";
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&rotary0_pins>;
+                                       gpios = <&gpio 4 0>, <&gpio 17 0>;
+                                       linux,axis = <0>; /* REL_X */
+                                       rotary-encoder,encoding = "gray";
+                                       rotary-encoder,relative-axis;
+                       };
+               };
+
+       };  
+
+       __overrides__ {
+               rotary0_pin_a = <&rotary0>,"gpios:4",
+                               <&rotary0_pins>,"brcm,pins:0";
+               rotary0_pin_b = <&rotary0>,"gpios:16",
+                               <&rotary0_pins>,"brcm,pins:4";
+       };  
+};