boards: nxp: rd_rw612_bga: add support for goworld 16880 display module
Add support for the goworld 16880 display module. As this display module
only features an FFC cable, it is added as a board overlay for the RW612
BGA. This module uses an ST7796S display controller as well as an FT7401
touch controller (which is managed by the FT5336 input driver)
Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
diff --git a/boards/nxp/rd_rw612_bga/Kconfig.defconfig b/boards/nxp/rd_rw612_bga/Kconfig.defconfig
index 713d859..376f96d 100644
--- a/boards/nxp/rd_rw612_bga/Kconfig.defconfig
+++ b/boards/nxp/rd_rw612_bga/Kconfig.defconfig
@@ -30,4 +30,8 @@
endif # LVGL
+# Enable interrupt support when using FT5336 driver
+config INPUT_FT5336_INTERRUPT
+ default y if INPUT
+
endif # BOARD_RD_RW612_BGA
diff --git a/boards/nxp/rd_rw612_bga/dts/goworld_16880_lcm.overlay b/boards/nxp/rd_rw612_bga/dts/goworld_16880_lcm.overlay
new file mode 100644
index 0000000..8b9dbe9
--- /dev/null
+++ b/boards/nxp/rd_rw612_bga/dts/goworld_16880_lcm.overlay
@@ -0,0 +1,91 @@
+#include <zephyr/dt-bindings/spi/spi.h>
+
+/ {
+ chosen {
+ zephyr,display = &st7796s_lcdic;
+ };
+
+ lvgl_pointer {
+ compatible = "zephyr,lvgl-pointer-input";
+ input = <&ft7401>;
+ swap-xy;
+ invert-y;
+ };
+};
+
+&lcdic {
+ status = "okay";
+ nxp,swap-bytes;
+ /*
+ * Settings to connect this display:
+ * Populate the following resistors:
+ * - R125, R123, R12, R124, R15, R243, R239, R236, R233, R286, R246
+ * Remove the following resistors:
+ * - R9, R11, R20, R19, R242, R241, R237, R235, R245
+ * Remove JP30 to disconnect Flexcomm SPI CS
+ * Display can be connected to Arduino header (J5/J6)
+ * Pin # | Signal | Header
+ * -------------------------------
+ * 1 | VDD | J5.8 (+3.3V)
+ * 2 | RST | J6.8 (LCD_SPI_RESETN)
+ * 3 | SDO | J5.5 (SPI_MISO)
+ * 4 | CS | J5.3 (LCD_SPI_SS)
+ * 5 | SCLK | J5.6 (LCD_SPI_SCK)
+ * 6 | GND | J5.7 (GND)
+ * 7 | MOSI | J5.4 (LCD_SPI_SDIO)
+ * 8 | CD | J5.1 (LCD_SPI_DC)
+ * 9 | TE | J5.2 (LCD_SPI_TE, not enabled)
+ *
+ * Pins 10 and 11 correspond to the backlight anode and cathode,
+ * and must be driven by an external circuit
+ */
+ st7796s_lcdic: st7796s@0 {
+ compatible = "sitronix,st7796s";
+ status = "okay";
+ reg = <0>;
+ mipi-max-frequency = <23000000>;
+ duplex = <SPI_HALF_DUPLEX>;
+ height = <320>;
+ width = <480>;
+ invert-mode = "1-dot";
+ frmctl1 = [80 10];
+ bpc = [1F 50 00 20];
+ dfc = [8A 07 3B];
+ pwr1 = [80 64];
+ pwr2 = <0x13>;
+ pwr3 = <0xA7>;
+ vcmpctl = <0x09>;
+ doca = [40 8A 00 00 29 19 A5 38];
+ pgc = [F0 06 0B 07 06 05 2E 33 47 3A 17 16 2E 31];
+ ngc = [F0 09 0D 09 08 23 2E 33 46 38 13 13 2C 32];
+ madctl = <0x28>;
+ };
+};
+
+&flexcomm2 {
+ status = "okay";
+ ft7401: ft7401@38 {
+ /*
+ * Settings to connect this touch controller:
+ * Populate JP3 and JP50 to connect I2C
+ * Controller can be connected to Arduino Header (J8/J5)
+ * Pin #1 | Signal | Header
+ * -------------------------------
+ * 1 | VDD | J8.2 (+3.3V)
+ * 2 | IOVDD | J8.4 (+3.3V)
+ * 3 | SCL | J5.10 (SCL)
+ * 4 | SDA | J5.9 (SDA)
+ * 5 | INT | J6.3 (D2)
+ * 6 | RST | J6.4 (D3)
+ * 7 | GND | J8.6 (GND)
+ * 8 | GND | J8.7 (GND)
+ *
+ * Note- the actual controller present on this IC is a FT7401,
+ * but the FT5336 driver in Zephyr supports this IC.
+ */
+ compatible = "focaltech,ft5336";
+ reg = <0x38>;
+ reset-gpios = <&hsgpio0 15 GPIO_ACTIVE_LOW>;
+ int-gpios = <&hsgpio0 11 GPIO_ACTIVE_HIGH>;
+ };
+};