brcm2708: update to latest patches from RPi foundation
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0266-overlays-Add-ssd1306-overlay-for-OLED-display.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0266-overlays-Add-ssd1306-overlay-for-OLED-display.patch b/target/linux/brcm2708/patches-4.19/950-0266-overlays-Add-ssd1306-overlay-for-OLED-display.patch
new file mode 100644 (file)
index 0000000..967cc76
--- /dev/null
@@ -0,0 +1,104 @@
+From d8eac0d3e4f6c6f9e5f789c8e2288699b2afebcb Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Mon, 21 Jan 2019 21:17:27 +0000
+Subject: [PATCH] overlays: Add ssd1306 overlay for OLED display
+
+See: https://github.com/raspberrypi/firmware/issues/1098
+
+Signed-off-by: mincepi <mincepi@gmail.com>
+---
+ arch/arm/boot/dts/overlays/Makefile           |  1 +
+ arch/arm/boot/dts/overlays/README             | 31 ++++++++++++++++
+ .../arm/boot/dts/overlays/ssd1306-overlay.dts | 36 +++++++++++++++++++
+ 3 files changed, 68 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/ssd1306-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -135,6 +135,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+       spi2-1cs.dtbo \
+       spi2-2cs.dtbo \
+       spi2-3cs.dtbo \
++      ssd1306.dtbo \
+       superaudioboard.dtbo \
+       sx150x.dtbo \
+       tc358743.dtbo \
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -1950,6 +1950,37 @@ Params: cs0_pin                 GPIO pin
+                                 is 'okay' or enabled).
++Name:   ssd1306
++Info:   Overlay for activation of SSD1306 over I2C OLED display framebuffer.
++Load:   dtoverlay=ssd1306,<param>=<val>
++Params: address                 Location in display memory of first character.
++                                (default=0)
++        width                   Width of display. (default=128)
++        height                  Height of display. (default=64)
++        offset                  virtual channel a. (default=0)
++        normal                  Has no effect on displays tested. (default=not
++                                set)
++        sequential              Set this if every other scan line is missing.
++                                (default=not set)
++        remapped                Set this if display is garbled. (default=not
++                                set)
++        inverted                Set this if display is inverted and mirrored.
++                                (default=not set)
++
++        Examples:
++        Typical usage for 128x64 display: dtoverlay=ssd1306,inverted
++
++        Typical usage for 128x32 display: dtoverlay=ssd1306,inverted,sequential
++
++        i2c_baudrate=400000 will speed up the display.
++
++        i2c_baudrate=1000000 seems to work even though it's not officially
++        supported by the hardware, and is faster still.
++
++        For more information refer to the device datasheet at:
++        https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
++
++
+ Name:   superaudioboard
+ Info:   Configures the SuperAudioBoard sound card
+ Load:   dtoverlay=superaudioboard,<param>=<val>
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
+@@ -0,0 +1,36 @@
++// Overlay for SSD1306 128x64 and 128x32 OLED displays
++/dts-v1/;
++/plugin/;
++
++/ {
++    compatible = "brcm,bcm2718";
++
++    fragment@0 {
++      target = <&i2c1>;
++      __overlay__ {
++          status = "okay";
++
++          #address-cells = <1>;
++          #size-cells = <0>;
++
++          ssd1306: oled@3c{
++              compatible = "solomon,ssd1306fb-i2c";
++              reg = <0x3c>;
++              solomon,width = <128>;
++              solomon,height = <64>;
++              solomon,page-offset = <0>;
++          };
++      };
++    };
++
++    __overrides__ {
++      address = <&ssd1306>,"reg:0";
++      width = <&ssd1306>,"solomon,width:0";
++      height = <&ssd1306>,"solomon,height:0";
++      offset = <&ssd1306>,"solomon,page-offset:0";
++      normal = <&ssd1306>,"solomon,segment-no-remap?";
++      sequential = <&ssd1306>,"solomon,com-seq?";
++      remapped = <&ssd1306>,"solomon,com-lrremap?";
++      inverted = <&ssd1306>,"solomon,com-invdir?";
++    };
++};