diff mbox series

[meta-rockchip] tinker-board-3: add

Message ID 20251218060321.2194839-1-michael.opdenacker@rootcommit.com
State New
Headers show
Series [meta-rockchip] tinker-board-3: add | expand

Commit Message

Michael Opdenacker Dec. 18, 2025, 6:03 a.m. UTC
From: Michael Opdenacker <michael.opdenacker@rootcommit.com>

Add basic support for the Asus Tinker Board 3 [1] and 3S [2] SBCs,
with the Rockchip rk3566 SoC.

Support for such boards was introduced in the 6.19-rc1 version
of the Linux kernel:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f80b3952318d7ef18573a5010f06118602f992e

Therefore, the https://github.com/betafive/meta-linux-mainline/
layer is currently a prerequisite to build images for such machines.

Here are already supported features:
- Debug UART (/dev/ttyS2)
- SD card (/dev/mmcblk1)
- eMMC (/dev/mmcblk0, only on Tinker Board 3S)
- I2C:
  - i2c0 (internal bus with a PMIC and regulators)
  - i2c2 (internal bus with an at24 eeprom and an RTC device)
- USB 2.0 ports
- 2 GPIO LEDS

[1] https://tinker-board.asus.com/series/tinker-board-3.html
[2] https://tinker-board.asus.com/series/tinker-board-3s.html

Signed-off-by: Michael Opdenacker <michael.opdenacker@rootcommit.com>
---
 conf/machine/include/tinker-board-3.inc     | 11 +++++++++++
 conf/machine/tinker-board-3.conf            | 10 ++++++++++
 conf/machine/tinker-board-3s.conf           | 10 ++++++++++
 recipes-kernel/linux/linux-yocto_%.bbappend |  2 ++
 4 files changed, 33 insertions(+)
 create mode 100644 conf/machine/include/tinker-board-3.inc
 create mode 100644 conf/machine/tinker-board-3.conf
 create mode 100644 conf/machine/tinker-board-3s.conf

Comments

Quentin Schulz Dec. 18, 2025, 10:46 a.m. UTC | #1
Hi Michael,

On 12/18/25 7:03 AM, Michael Opdenacker via lists.yoctoproject.org wrote:
> From: Michael Opdenacker <michael.opdenacker@rootcommit.com>
> 
> Add basic support for the Asus Tinker Board 3 [1] and 3S [2] SBCs,
> with the Rockchip rk3566 SoC.
> 
> Support for such boards was introduced in the 6.19-rc1 version
> of the Linux kernel:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f80b3952318d7ef18573a5010f06118602f992e
> 
> Therefore, the https://github.com/betafive/meta-linux-mainline/
> layer is currently a prerequisite to build images for such machines.
> 
> Here are already supported features:
> - Debug UART (/dev/ttyS2)
> - SD card (/dev/mmcblk1)
> - eMMC (/dev/mmcblk0, only on Tinker Board 3S)
> - I2C:
>    - i2c0 (internal bus with a PMIC and regulators)
>    - i2c2 (internal bus with an at24 eeprom and an RTC device)
> - USB 2.0 ports
> - 2 GPIO LEDS
> 
> [1] https://tinker-board.asus.com/series/tinker-board-3.html
> [2] https://tinker-board.asus.com/series/tinker-board-3s.html
> 
> Signed-off-by: Michael Opdenacker <michael.opdenacker@rootcommit.com>
> ---
>   conf/machine/include/tinker-board-3.inc     | 11 +++++++++++
>   conf/machine/tinker-board-3.conf            | 10 ++++++++++
>   conf/machine/tinker-board-3s.conf           | 10 ++++++++++
>   recipes-kernel/linux/linux-yocto_%.bbappend |  2 ++
>   4 files changed, 33 insertions(+)
>   create mode 100644 conf/machine/include/tinker-board-3.inc
>   create mode 100644 conf/machine/tinker-board-3.conf
>   create mode 100644 conf/machine/tinker-board-3s.conf
> 
> diff --git a/conf/machine/include/tinker-board-3.inc b/conf/machine/include/tinker-board-3.inc
> new file mode 100644
> index 0000000..17d0ecc
> --- /dev/null
> +++ b/conf/machine/include/tinker-board-3.inc
> @@ -0,0 +1,11 @@
> +require conf/machine/include/rk3566.inc
> +
> +# Kernel provided by https://github.com/betafive/meta-linux-mainline/
> +PREFERRED_PROVIDER_virtual/kernel = "linux-mainline"
> +PREFERRED_VERSION_virtual/kernel = "6.19-rc1"
> +

Not sure we really want to do this. Maybe wait for linux-yocto-dev to 
hit v6.19*? We used to do this for some Radxa board in the past I believe.

> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> +
> +# U-Boot doesn't support Tinker Board 3 so far
> +# but boots fine when configured for a similar SBC
> +UBOOT_MACHINE = "soquartz-model-a-rk3566_defconfig"

Can you maybe try generic-rk3568_defconfig instead?

> diff --git a/conf/machine/tinker-board-3.conf b/conf/machine/tinker-board-3.conf
> new file mode 100644
> index 0000000..d6400f3
> --- /dev/null
> +++ b/conf/machine/tinker-board-3.conf
> @@ -0,0 +1,10 @@
> +# Copyright (C) 2025 Michael Opdenacker <michael.opdenacker@rootcommit.com>
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +#@TYPE: Machine
> +#@NAME: Tinker Board 3 RK3566
> +#@DESCRIPTION: ASUS Tinker Board 3 is a Raspberry Pi like SBC based on Rockchip RK3566 Processor.
> +
> +require conf/machine/include/tinker-board-3.inc
> +
> +KERNEL_DEVICETREE = "rockchip/rk3566-tinker-board-3.dtb"
> diff --git a/conf/machine/tinker-board-3s.conf b/conf/machine/tinker-board-3s.conf
> new file mode 100644
> index 0000000..e23dc8b
> --- /dev/null
> +++ b/conf/machine/tinker-board-3s.conf
> @@ -0,0 +1,10 @@
> +# Copyright (C) 2025 Michael Opdenacker <michael.opdenacker@rootcommit.com>
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +#@TYPE: Machine
> +#@NAME: Tinker Board 3S RK3566
> +#@DESCRIPTION: ASUS Tinker Board 3 is a Raspberry Pi like SBC based on Rockchip RK3566 Processor.

s/Tinker Board 3/Tinker Board 3S.

> +
> +require conf/machine/include/tinker-board-3.inc
> +
> +KERNEL_DEVICETREE = "rockchip/rk3566-tinker-board-3s.dtb"

Do you know if Asus has provided a way to know at runtime which of the 
Tinker 3/3S is currently running the software? E.g. via a GPIO or an ADC 
channel with different voltage values?

This would help us only have one machine for supporting both. In U-Boot, 
you'd do the auto-detection and load the appropriate device tree based 
on that.

We also need an entry in the README for this newly supported board.

> diff --git a/recipes-kernel/linux/linux-yocto_%.bbappend b/recipes-kernel/linux/linux-yocto_%.bbappend
> index 2dba3d7..684d33a 100644
> --- a/recipes-kernel/linux/linux-yocto_%.bbappend
> +++ b/recipes-kernel/linux/linux-yocto_%.bbappend
> @@ -30,6 +30,8 @@ COMPATIBLE_MACHINE:rock-pi-e = "rock-pi-e"
>   COMPATIBLE_MACHINE:rock-pi-s = "rock-pi-s"
>   COMPATIBLE_MACHINE:rock64 = "rock64"
>   COMPATIBLE_MACHINE:soquartz = "soquartz"
> +COMPATIBLE_MACHINE:tinker-board-3 = "tinker-board-3"
> +COMPATIBLE_MACHINE:tinker-board-3s = "tinker-board-3s"
>   

NACK, it isn't supported, you said it yourself.

Cheers,
Quentin
diff mbox series

Patch

diff --git a/conf/machine/include/tinker-board-3.inc b/conf/machine/include/tinker-board-3.inc
new file mode 100644
index 0000000..17d0ecc
--- /dev/null
+++ b/conf/machine/include/tinker-board-3.inc
@@ -0,0 +1,11 @@ 
+require conf/machine/include/rk3566.inc
+
+# Kernel provided by https://github.com/betafive/meta-linux-mainline/
+PREFERRED_PROVIDER_virtual/kernel = "linux-mainline"
+PREFERRED_VERSION_virtual/kernel = "6.19-rc1"
+
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+
+# U-Boot doesn't support Tinker Board 3 so far
+# but boots fine when configured for a similar SBC
+UBOOT_MACHINE = "soquartz-model-a-rk3566_defconfig"
diff --git a/conf/machine/tinker-board-3.conf b/conf/machine/tinker-board-3.conf
new file mode 100644
index 0000000..d6400f3
--- /dev/null
+++ b/conf/machine/tinker-board-3.conf
@@ -0,0 +1,10 @@ 
+# Copyright (C) 2025 Michael Opdenacker <michael.opdenacker@rootcommit.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+#@TYPE: Machine
+#@NAME: Tinker Board 3 RK3566
+#@DESCRIPTION: ASUS Tinker Board 3 is a Raspberry Pi like SBC based on Rockchip RK3566 Processor.
+
+require conf/machine/include/tinker-board-3.inc
+
+KERNEL_DEVICETREE = "rockchip/rk3566-tinker-board-3.dtb"
diff --git a/conf/machine/tinker-board-3s.conf b/conf/machine/tinker-board-3s.conf
new file mode 100644
index 0000000..e23dc8b
--- /dev/null
+++ b/conf/machine/tinker-board-3s.conf
@@ -0,0 +1,10 @@ 
+# Copyright (C) 2025 Michael Opdenacker <michael.opdenacker@rootcommit.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+#@TYPE: Machine
+#@NAME: Tinker Board 3S RK3566
+#@DESCRIPTION: ASUS Tinker Board 3 is a Raspberry Pi like SBC based on Rockchip RK3566 Processor.
+
+require conf/machine/include/tinker-board-3.inc
+
+KERNEL_DEVICETREE = "rockchip/rk3566-tinker-board-3s.dtb"
diff --git a/recipes-kernel/linux/linux-yocto_%.bbappend b/recipes-kernel/linux/linux-yocto_%.bbappend
index 2dba3d7..684d33a 100644
--- a/recipes-kernel/linux/linux-yocto_%.bbappend
+++ b/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -30,6 +30,8 @@  COMPATIBLE_MACHINE:rock-pi-e = "rock-pi-e"
 COMPATIBLE_MACHINE:rock-pi-s = "rock-pi-s"
 COMPATIBLE_MACHINE:rock64 = "rock64"
 COMPATIBLE_MACHINE:soquartz = "soquartz"
+COMPATIBLE_MACHINE:tinker-board-3 = "tinker-board-3"
+COMPATIBLE_MACHINE:tinker-board-3s = "tinker-board-3s"
 
 SRC_URI:append:rockchip = " file://rockchip-kmeta;type=kmeta;name=rockchip-kmeta;destsuffix=rockchip-kmeta"
 SRC_URI:append:nanopi-r4s = " file://realtek-r8169.cfg"