From 536382633e9e399907fe06f34f426184965b5ab1 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 11 Jun 2025 11:23:44 +0000
Subject: [PATCH 35/37] WIP: arm64: dts: meson-gxl-s905w-tx3-mini: support the
 fd628 display

The TX3-mini has an FD628 display. Add support using the tm166xx
kernel driver and userspace tools [0].

[0] https://github.com/jefflessard/tm16xx-display

Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
 .../dts/amlogic/meson-gxl-s905w-tx3-mini.dts  | 63 +++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-tx3-mini.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-tx3-mini.dts
index 6705c2082a78..94cae3a59554 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-tx3-mini.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-tx3-mini.dts
@@ -10,6 +10,8 @@
 
 #include "meson-gxl-s905x.dtsi"
 #include "meson-gx-p23x-q20x.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 
 / {
 	compatible = "oranth,tx3-mini", "amlogic,s905w", "amlogic,meson-gxl";
@@ -19,6 +21,67 @@ memory@0 {
 		device_type = "memory";
 		reg = <0x0 0x0 0x0 0x40000000>; /* 1 GiB or 2 GiB */
 	};
+
+	display_client: spi {
+		compatible = "spi-gpio";
+		sck-gpios = <&gpio 76 GPIO_ACTIVE_HIGH>;
+		mosi-gpios = <&gpio 75 GPIO_ACTIVE_HIGH>;
+		cs-gpios = <&gpio_ao 4 GPIO_ACTIVE_LOW>;
+		num-chipselects = <1>;
+
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		display@0 {
+			compatible = "fdhisi,fd628";
+			reg = <0x0>;
+			spi-3wire;
+			spi-lsb-first;
+			spi-rx-delay-us = <1>;
+			spi-max-frequency = <500000>;
+
+			tm16xx,digits = [03 02 01 00];
+			tm16xx,segment-mapping = [03 04 05 00 01 02 06];
+
+			#address-cells = <2>;
+			#size-cells = <0>;
+
+			led@4,0 {
+				reg = <4 0>;
+				function = LED_FUNCTION_ALARM;
+			};
+
+			led@4,1 {
+				reg = <4 1>;
+				function = LED_FUNCTION_USB;
+			};
+
+			led@4,2 {
+				reg = <4 2>;
+				function = "play";
+			};
+
+			led@4,3 {
+				reg = <4 3>;
+				function = "pause";
+			};
+
+			led@4,4 {
+				reg = <4 4>;
+				function = "colon";
+			};
+
+			led@4,5 {
+				reg = <4 5>;
+				function = LED_FUNCTION_LAN;
+			};
+
+			led@4,6 {
+				reg = <4 6>;
+				function = LED_FUNCTION_WLAN;
+			};
+		};
+	};
 };
 
 &ir {
-- 
2.34.1

