brcm2708: update linux 4.4 patches to latest version
[openwrt/staging/yousong.git] / target / linux / brcm2708 / patches-4.4 / 0511-Add-Adafruit-pitft35-touchscreen-support-1657.patch
diff --git a/target/linux/brcm2708/patches-4.4/0511-Add-Adafruit-pitft35-touchscreen-support-1657.patch b/target/linux/brcm2708/patches-4.4/0511-Add-Adafruit-pitft35-touchscreen-support-1657.patch
new file mode 100644 (file)
index 0000000..a5d8c0c
--- /dev/null
@@ -0,0 +1,196 @@
+From 877d2ad66da4c7aba2db0ecb394a07a19ac2e374 Mon Sep 17 00:00:00 2001
+From: Scott Ellis <scott@jumpnowtek.com>
+Date: Tue, 27 Sep 2016 04:29:00 -0400
+Subject: [PATCH] Add Adafruit pitft35 touchscreen support (#1657)
+
+The dts comes from the Adafruit repository
+
+  https://github.com/adafruit/Adafruit-Pi-Kernel-o-Matic/blob/pitft/pitft35r-overlay.dts
+
+Reformatted slightly to match conventions in the pitft28-resistive-overlay.
+
+Signed-off-by: Scott Ellis <scott@jumpnowtek.com>
+---
+ arch/arm/boot/dts/overlays/Makefile                |   1 +
+ arch/arm/boot/dts/overlays/README                  |  12 ++
+ .../dts/overlays/pitft35-resistive-overlay.dts     | 121 +++++++++++++++++++++
+ arch/arm/configs/bcm2709_defconfig                 |   1 +
+ arch/arm/configs/bcmrpi_defconfig                  |   1 +
+ 5 files changed, 136 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -65,6 +65,7 @@ dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dt
+ dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += pitft35-resistive.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += pps-gpio.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += pwm.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += pwm-2chan.dtbo
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -854,6 +854,18 @@ Params: speed                   Display
+         debug                   Debug output level {0-7}
++Name:   pitft35-resistive
++Info:   Adafruit PiTFT 3.5" resistive touch screen
++Load:   dtoverlay=pitft35-resistive,<param>=<val>
++Params: speed                   Display SPI bus speed
++
++        rotate                  Display rotation {0,90,180,270}
++
++        fps                     Delay between frame updates
++
++        debug                   Debug output level {0-7}
++
++
+ Name:   pps-gpio
+ Info:   Configures the pps-gpio (pulse-per-second time signal via GPIO).
+ Load:   dtoverlay=pps-gpio,<param>=<val>
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
+@@ -0,0 +1,121 @@
++/*
++ * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen
++ *
++ */
++
++/dts-v1/;
++/plugin/;
++
++/ {
++      compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
++
++      fragment@0 {
++              target = <&spi0>;
++              __overlay__ {
++                      status = "okay";
++              };
++      };
++
++      fragment@1 {
++              target = <&spidev0>;
++              __overlay__ {
++                      status = "disabled";
++              };
++      };
++
++      fragment@2 {
++              target = <&spidev1>;
++              __overlay__ {
++                      status = "disabled";
++              };
++      };
++
++      fragment@3 {
++              target = <&gpio>;
++              __overlay__ {
++                      pitft_pins: pitft_pins {
++                              brcm,pins = <24 25>;
++                              brcm,function = <0 1>; /* in out */
++                              brcm,pull = <2 0>; /* pullup none */
++                      };
++              };
++      };
++
++      fragment@4 {
++              target = <&spi0>;
++              __overlay__ {
++                      /* needed to avoid dtc warning */
++                      #address-cells = <1>;
++                      #size-cells = <0>;
++
++                      pitft: pitft@0{
++                              compatible = "himax,hx8357d";
++                              reg = <0>;
++                              pinctrl-names = "default";
++                              pinctrl-0 = <&pitft_pins>;
++
++                              spi-max-frequency = <32000000>;
++                              rotate = <90>;
++                              fps = <25>;
++                              bgr;
++                              buswidth = <8>;
++                              dc-gpios = <&gpio 25 0>;
++                              debug = <0>;
++                      };
++
++                      pitft_ts@1 {
++                              #address-cells = <1>;
++                              #size-cells = <0>;
++                              compatible = "st,stmpe610";
++                              reg = <1>;
++
++                              spi-max-frequency = <500000>;
++                              irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
++                              interrupts = <24 2>; /* high-to-low edge triggered */
++                              interrupt-parent = <&gpio>;
++                              interrupt-controller;
++
++                              stmpe_touchscreen {
++                                      compatible = "st,stmpe-ts";
++                                      st,sample-time = <4>;
++                                      st,mod-12b = <1>;
++                                      st,ref-sel = <0>;
++                                      st,adc-freq = <2>;
++                                      st,ave-ctrl = <3>;
++                                      st,touch-det-delay = <4>;
++                                      st,settling = <2>;
++                                      st,fraction-z = <7>;
++                                      st,i-drive = <0>;
++                              };
++
++                              stmpe_gpio: stmpe_gpio {
++                                      #gpio-cells = <2>;
++                                      compatible = "st,stmpe-gpio";
++                                      /*
++                                       * only GPIO2 is wired/available
++                                       * and it is wired to the backlight
++                                       */
++                                      st,norequest-mask = <0x7b>;
++                              };
++                      };
++              };
++      };
++
++      fragment@5 {
++              target-path = "/soc";
++              __overlay__ {
++                      backlight {
++                              compatible = "gpio-backlight";
++                              gpios = <&stmpe_gpio 2 0>;
++                              default-on;
++                      };
++              };
++      };
++
++      __overrides__ {
++              speed =   <&pitft>,"spi-max-frequency:0";
++              rotate =  <&pitft>,"rotate:0";
++              fps =     <&pitft>,"fps:0";
++              debug =   <&pitft>,"debug:0";
++      };
++};
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -1116,6 +1116,7 @@ CONFIG_FB_TFT_BD663474=m
+ CONFIG_FB_TFT_HX8340BN=m
+ CONFIG_FB_TFT_HX8347D=m
+ CONFIG_FB_TFT_HX8353D=m
++CONFIG_FB_TFT_HX8357D=m
+ CONFIG_FB_TFT_ILI9163=m
+ CONFIG_FB_TFT_ILI9320=m
+ CONFIG_FB_TFT_ILI9325=m
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -1123,6 +1123,7 @@ CONFIG_FB_TFT_BD663474=m
+ CONFIG_FB_TFT_HX8340BN=m
+ CONFIG_FB_TFT_HX8347D=m
+ CONFIG_FB_TFT_HX8353D=m
++CONFIG_FB_TFT_HX8357D=m
+ CONFIG_FB_TFT_ILI9163=m
+ CONFIG_FB_TFT_ILI9320=m
+ CONFIG_FB_TFT_ILI9325=m