From ed39efa76b301700dedd0b086b5b857d857dc0a6 Mon Sep 17 00:00:00 2001 From: Nikita Maslo Date: Tue, 9 Dec 2025 12:35:37 +0300 Subject: [PATCH] jethubj200: update JetHub D2 DT file for I2C display and GPIO expander support Signed-off-by: Nikita Maslo --- .../dt/meson-sm1-jethome-jethub-j200.dts | 78 +++++++++++ .../dt/meson-sm1-jethome-jethub-j200.dts | 78 +++++++++++ ...6-joystick-and-gpio-expander-support.patch | 126 ++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 patch/u-boot/v2024.07/board_jethubj200/0003-add-ssd1306-joystick-and-gpio-expander-support.patch diff --git a/patch/kernel/archive/meson64-6.12/dt/meson-sm1-jethome-jethub-j200.dts b/patch/kernel/archive/meson64-6.12/dt/meson-sm1-jethome-jethub-j200.dts index e13d081d8..9d50e6997 100644 --- a/patch/kernel/archive/meson64-6.12/dt/meson-sm1-jethome-jethub-j200.dts +++ b/patch/kernel/archive/meson64-6.12/dt/meson-sm1-jethome-jethub-j200.dts @@ -13,6 +13,8 @@ #include #include #include +#include +#include / { @@ -250,6 +252,60 @@ model = "JETHUB-D2"; }; + gpio-keys { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + button_up { + label = "Joystick Up"; + gpios = <&exp24 8 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_down { + label = "Joystick Down"; + gpios = <&exp24 9 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_left { + label = "Joystick Left"; + gpios = <&exp24 10 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_right { + label = "Joystick Right"; + gpios = <&exp24 11 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_center { + label = "Joystick Center"; + gpios = <&exp24 12 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_home { + label = "Joystick Home"; + gpios = <&exp24 13 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_back { + label = "Joystick Back"; + gpios = <&exp24 14 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + }; + }; &arb { @@ -628,6 +684,28 @@ reg = <0x49>; }; + ssd1306: oled@3c { + compatible = "solomon,ssd1306"; + reg = <0x3c>; + solomon,com-invdir; + solomon,page-offset = <0x00>; + solomon,dclk-div = <1>; + solomon,dclk-frq = <8>; + solomon,prechargep1 = <2>; + solomon,prechargep2 = <8>; + }; + + exp24: gpio@24 { + compatible = "nxp,pca9535"; + reg = <0x24>; + gpio-controller; + #gpio-cells = <2>; + + gpio-line-names = + "", "", "", "", "", "", "", "", + "JOY_UP", "JOY_DOWN", "JOY_LEFT", "JOY_RIGHT", + "JOY_CENTER", "JOY_HOME", "JOY_BACK", ""; + }; }; &efuse { diff --git a/patch/kernel/archive/meson64-6.18/dt/meson-sm1-jethome-jethub-j200.dts b/patch/kernel/archive/meson64-6.18/dt/meson-sm1-jethome-jethub-j200.dts index e13d081d8..9d50e6997 100644 --- a/patch/kernel/archive/meson64-6.18/dt/meson-sm1-jethome-jethub-j200.dts +++ b/patch/kernel/archive/meson64-6.18/dt/meson-sm1-jethome-jethub-j200.dts @@ -13,6 +13,8 @@ #include #include #include +#include +#include / { @@ -250,6 +252,60 @@ model = "JETHUB-D2"; }; + gpio-keys { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + button_up { + label = "Joystick Up"; + gpios = <&exp24 8 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_down { + label = "Joystick Down"; + gpios = <&exp24 9 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_left { + label = "Joystick Left"; + gpios = <&exp24 10 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_right { + label = "Joystick Right"; + gpios = <&exp24 11 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_center { + label = "Joystick Center"; + gpios = <&exp24 12 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_home { + label = "Joystick Home"; + gpios = <&exp24 13 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + + button_back { + label = "Joystick Back"; + gpios = <&exp24 14 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + }; + }; + }; &arb { @@ -628,6 +684,28 @@ reg = <0x49>; }; + ssd1306: oled@3c { + compatible = "solomon,ssd1306"; + reg = <0x3c>; + solomon,com-invdir; + solomon,page-offset = <0x00>; + solomon,dclk-div = <1>; + solomon,dclk-frq = <8>; + solomon,prechargep1 = <2>; + solomon,prechargep2 = <8>; + }; + + exp24: gpio@24 { + compatible = "nxp,pca9535"; + reg = <0x24>; + gpio-controller; + #gpio-cells = <2>; + + gpio-line-names = + "", "", "", "", "", "", "", "", + "JOY_UP", "JOY_DOWN", "JOY_LEFT", "JOY_RIGHT", + "JOY_CENTER", "JOY_HOME", "JOY_BACK", ""; + }; }; &efuse { diff --git a/patch/u-boot/v2024.07/board_jethubj200/0003-add-ssd1306-joystick-and-gpio-expander-support.patch b/patch/u-boot/v2024.07/board_jethubj200/0003-add-ssd1306-joystick-and-gpio-expander-support.patch new file mode 100644 index 000000000..aaed7d46e --- /dev/null +++ b/patch/u-boot/v2024.07/board_jethubj200/0003-add-ssd1306-joystick-and-gpio-expander-support.patch @@ -0,0 +1,126 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nikita Maslo +Date: Thu, 27 Nov 2025 17:30:11 +0300 +Subject: add ssd1306, joystick and gpio expander support + +--- + arch/arm/dts/meson-sm1-jethome-jethub-j200.dts | 78 ++++++++++++++++++- + 1 file changed, 77 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/dts/meson-sm1-jethome-jethub-j200.dts b/arch/arm/dts/meson-sm1-jethome-jethub-j200.dts +index 3151a99974c..8acc3785ba3 100644 +--- a/arch/arm/dts/meson-sm1-jethome-jethub-j200.dts ++++ b/arch/arm/dts/meson-sm1-jethome-jethub-j200.dts +@@ -9,11 +9,12 @@ + #include "meson-sm1.dtsi" + + #include + #include + #include +- ++#include ++#include + + / { + + compatible = "jethome,jethub-j200", "amlogic,sm1"; + model = "JetHome JetHub D2"; +@@ -245,10 +246,63 @@ + + sound { + model = "JETHUB-D2"; + }; + ++ gpio-keys { ++ compatible = "gpio-keys-polled"; ++ poll-interval = <100>; ++ ++ button_up { ++ label = "Joystick Up"; ++ gpios = <&exp24 8 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_down { ++ label = "Joystick Down"; ++ gpios = <&exp24 9 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_left { ++ label = "Joystick Left"; ++ gpios = <&exp24 10 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_right { ++ label = "Joystick Right"; ++ gpios = <&exp24 11 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_center { ++ label = "Joystick Center"; ++ gpios = <&exp24 12 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_home { ++ label = "Joystick Home"; ++ gpios = <&exp24 13 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ ++ button_back { ++ label = "Joystick Back"; ++ gpios = <&exp24 14 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ debounce-interval = <10>; ++ }; ++ }; + }; + + &arb { + status = "okay"; + }; +@@ -627,10 +681,32 @@ + temp2: tmp102@49 { + compatible = "ti,tmp102"; + reg = <0x49>; + }; + ++ ssd1306: oled@3c { ++ compatible = "solomon,ssd1306"; ++ reg = <0x3c>; ++ solomon,com-invdir; ++ solomon,page-offset = <0x00>; ++ solomon,dclk-div = <1>; ++ solomon,dclk-frq = <8>; ++ solomon,prechargep1 = <2>; ++ solomon,prechargep2 = <8>; ++ }; ++ ++ exp24: gpio@24 { ++ compatible = "nxp,pca9535"; ++ reg = <0x24>; ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ gpio-line-names = ++ "", "", "", "", "", "", "", "", ++ "JOY_UP", "JOY_DOWN", "JOY_LEFT", "JOY_RIGHT", ++ "JOY_CENTER", "JOY_HOME", "JOY_BACK", ""; ++ }; + }; + + &efuse { + eth_mac: eth-mac@0 { + reg = <0x0 0x6>; +-- +Armbian