overlays: Add Goodix overlay
authorAhmet Inan <inan@distec.de>
Mon, 15 May 2017 15:10:53 +0000 (17:10 +0200)
committerRaspbian kernel package updater <root@raspbian.org>
Sun, 8 Oct 2017 01:08:06 +0000 (01:08 +0000)
Add support for I2C connected Goodix gt9271 multiple touch controller using
GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset.

Signed-off-by: Ahmet Inan <inan@distec.de>
arch/arm/boot/dts/overlays/Makefile
arch/arm/boot/dts/overlays/README
arch/arm/boot/dts/overlays/goodix-overlay.dts [new file with mode: 0644]

index e2f66a55dc5afe13d690c2c17827054ac94b7168..b62edf6ce17ed8db18c73ce02b18ca43481691ab 100644 (file)
@@ -25,6 +25,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
        enc28j60.dtbo \
        enc28j60-spi2.dtbo \
        fe-pi-audio.dtbo \
+       goodix.dtbo \
        googlevoicehat-soundcard.dtbo \
        gpio-ir.dtbo \
        gpio-poweroff.dtbo \
index 32e5fc4a9968c368e1063aef5fea95caedfba36f..b3aadaa6cfafae0e01908a3a2f1f646d06d69b32 100644 (file)
@@ -459,6 +459,14 @@ Load:   dtoverlay=fe-pi-audio
 Params: <None>
 
 
+Name:   goodix
+Info:   Enables I2C connected Goodix gt9271 multiple touch controller using
+        GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset.
+Load:   dtoverlay=goodix,<param>=<val>
+Params: interrupt               GPIO used for interrupt (default 4)
+        reset                   GPIO used for reset (default 17)
+
+
 Name:   googlevoicehat-soundcard
 Info:   Configures the Google voiceHAT soundcard
 Load:   dtoverlay=googlevoicehat-soundcard
diff --git a/arch/arm/boot/dts/overlays/goodix-overlay.dts b/arch/arm/boot/dts/overlays/goodix-overlay.dts
new file mode 100644 (file)
index 0000000..084f740
--- /dev/null
@@ -0,0 +1,46 @@
+// Device tree overlay for I2C connected Goodix gt9271 multiple touch controller
+/dts-v1/;
+/plugin/;
+
+/ {
+       compatible = "brcm,bcm2708";
+
+       fragment@0 {
+               target = <&gpio>;
+               __overlay__ {
+                       goodix_pins: goodix_pins {
+                               brcm,pins = <4 17>; // interrupt and reset
+                               brcm,function = <0 0>; // in
+                               brcm,pull = <2 2>; // pull-up
+                       };
+               };
+       };
+
+       fragment@1 {
+               target = <&i2c1>;
+               __overlay__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       gt9271: gt9271@14 {
+                               compatible = "goodix,gt9271";
+                               reg = <0x14>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&goodix_pins>;
+                               interrupt-parent = <&gpio>;
+                               interrupts = <4 2>; // high-to-low edge triggered
+                               irq-gpios = <&gpio 4 0>; // Pin7 on GPIO header
+                               reset-gpios = <&gpio 17 0>; // Pin11 on GPIO header
+                       };
+               };
+       };
+
+       __overrides__ {
+               interrupt = <&goodix_pins>,"brcm,pins:0",
+                       <&gt9271>,"interrupts:0",
+                       <&gt9271>,"irq-gpios:4";
+               reset = <&goodix_pins>,"brcm,pins:4",
+                       <&gt9271>,"reset-gpios:4";
+       };
+};