Add support NanoPC-T6(RK3588) board 68/30168/6 master
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Tue, 23 Jul 2024 22:18:48 +0000 (07:18 +0900)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 17 Sep 2024 08:58:22 +0000 (08:58 +0000)
This patch add NanoPC-T6 board support to AGL that board is
manufactured by FriendlyElec.

Board info.
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6

Bug-AGL: SPEC-5208

Change-Id: Id1b6d9c6f73ece2b3a2f602405f534473e8bcbf2
Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/30168
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Tested-by: Jenkins Job builder account
meta-agl-bsp/conf/include/agl_rk3588.inc [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state/asound.state [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init/agl-compositor-rockchip.conf [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf/nanopct6_output.cfg [new file with mode: 0644]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-AGL-alsa.conf
templates/machine/nanopc-t6/50_bblayers.conf.inc [new file with mode: 0644]
templates/machine/nanopc-t6/50_local.conf.inc [new file with mode: 0644]
templates/machine/nanopc-t6/README_machine_nanopc-t6.md [new file with mode: 0644]

diff --git a/meta-agl-bsp/conf/include/agl_rk3588.inc b/meta-agl-bsp/conf/include/agl_rk3588.inc
new file mode 100644 (file)
index 0000000..4c3f699
--- /dev/null
@@ -0,0 +1,12 @@
+# Add for gstreamer plugins ugly
+LICENSE_FLAGS_ACCEPTED:append = " commercial"
+MACHINE_FEATURES:append:rk3588 = " multimedia"
+
+BBMASK += " \
+    meta-rockchip/recipes-multimedia/gstreamer \
+    meta-rockchip/recipes-graphics/wayland/weston_%.bbappend \
+    "
+
+MACHINE_EXTRA_RRECOMMENDS:append = " \
+    alsa-state \
+"
diff --git a/meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state.bbappend b/meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state.bbappend
new file mode 100644 (file)
index 0000000..7845601
--- /dev/null
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state/asound.state b/meta-agl-bsp/meta-rockchip/recipes-bsp/alsa-state/alsa-state/asound.state
new file mode 100644 (file)
index 0000000..c403945
--- /dev/null
@@ -0,0 +1,525 @@
+state.realtekrt5616co {
+       control.1 {
+               iface CARD
+               name 'Headphone Jack'
+               value true
+               comment {
+                       access read
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.2 {
+               iface MIXER
+               name 'I2STDM Digital Loopback Mode'
+               value Disabled
+               comment {
+                       access 'read write'
+                       type ENUMERATED
+                       count 1
+                       item.0 Disabled
+                       item.1 Mode1
+                       item.2 Mode2
+                       item.3 'Mode2 Swap'
+               }
+       }
+       control.3 {
+               iface MIXER
+               name 'HP Playback Switch'
+               value.0 true
+               value.1 true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 2
+               }
+       }
+       control.4 {
+               iface MIXER
+               name 'HPVOL Playback Switch'
+               value.0 false
+               value.1 false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 2
+               }
+       }
+       control.5 {
+               iface MIXER
+               name 'HP Playback Volume'
+               value.0 0
+               value.1 0
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 39'
+                       dbmin -4650
+                       dbmax 1200
+                       dbvalue.0 -4650
+                       dbvalue.1 -4650
+               }
+       }
+       control.6 {
+               iface MIXER
+               name 'OUT Playback Switch'
+               value.0 false
+               value.1 false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 2
+               }
+       }
+       control.7 {
+               iface MIXER
+               name 'OUT Channel Switch'
+               value.0 false
+               value.1 false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 2
+               }
+       }
+       control.8 {
+               iface MIXER
+               name 'OUT Playback Volume'
+               value.0 31
+               value.1 31
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 39'
+                       dbmin -4650
+                       dbmax 1200
+                       dbvalue.0 0
+                       dbvalue.1 0
+               }
+       }
+       control.9 {
+               iface MIXER
+               name 'DAC1 Playback Volume'
+               value.0 175
+               value.1 175
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 175'
+                       dbmin -65625
+                       dbmax 0
+                       dbvalue.0 0
+                       dbvalue.1 0
+               }
+       }
+       control.10 {
+               iface MIXER
+               name 'IN1 Boost Volume'
+               value 0
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 1
+                       range '0 - 8'
+                       dbmin 0
+                       dbmax 5200
+                       dbvalue.0 0
+               }
+       }
+       control.11 {
+               iface MIXER
+               name 'IN2 Boost Volume'
+               value 0
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 1
+                       range '0 - 8'
+                       dbmin 0
+                       dbmax 5200
+                       dbvalue.0 0
+               }
+       }
+       control.12 {
+               iface MIXER
+               name 'IN Capture Volume'
+               value.0 23
+               value.1 23
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 31'
+                       dbmin -3450
+                       dbmax 1200
+                       dbvalue.0 0
+                       dbvalue.1 0
+               }
+       }
+       control.13 {
+               iface MIXER
+               name 'ADC Capture Switch'
+               value.0 false
+               value.1 false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 2
+               }
+       }
+       control.14 {
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 47
+               value.1 47
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 127'
+                       dbmin -17625
+                       dbmax 30000
+                       dbvalue.0 0
+                       dbvalue.1 0
+               }
+       }
+       control.15 {
+               iface MIXER
+               name 'ADC Boost Volume'
+               value.0 0
+               value.1 0
+               comment {
+                       access 'read write'
+                       type INTEGER
+                       count 2
+                       range '0 - 3'
+                       dbmin 0
+                       dbmax 3600
+                       dbvalue.0 0
+                       dbvalue.1 0
+               }
+       }
+       control.16 {
+               iface MIXER
+               name 'RECMIXL INL1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.17 {
+               iface MIXER
+               name 'RECMIXL BST2 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.18 {
+               iface MIXER
+               name 'RECMIXL BST1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.19 {
+               iface MIXER
+               name 'RECMIXR INR1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.20 {
+               iface MIXER
+               name 'RECMIXR BST2 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.21 {
+               iface MIXER
+               name 'RECMIXR BST1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.22 {
+               iface MIXER
+               name 'Stereo1 ADC MIXL ADC1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.23 {
+               iface MIXER
+               name 'Stereo1 ADC MIXR ADC1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.24 {
+               iface MIXER
+               name 'DAC MIXL Stereo ADC Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.25 {
+               iface MIXER
+               name 'DAC MIXL INF1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.26 {
+               iface MIXER
+               name 'DAC MIXR Stereo ADC Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.27 {
+               iface MIXER
+               name 'DAC MIXR INF1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.28 {
+               iface MIXER
+               name 'Stereo DAC MIXL DAC L1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.29 {
+               iface MIXER
+               name 'Stereo DAC MIXL DAC R1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.30 {
+               iface MIXER
+               name 'Stereo DAC MIXR DAC R1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.31 {
+               iface MIXER
+               name 'Stereo DAC MIXR DAC L1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.32 {
+               iface MIXER
+               name 'OUT MIXL BST1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.33 {
+               iface MIXER
+               name 'OUT MIXL BST2 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.34 {
+               iface MIXER
+               name 'OUT MIXL INL1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.35 {
+               iface MIXER
+               name 'OUT MIXL REC MIXL Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.36 {
+               iface MIXER
+               name 'OUT MIXL DAC L1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.37 {
+               iface MIXER
+               name 'OUT MIXR BST2 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.38 {
+               iface MIXER
+               name 'OUT MIXR BST1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.39 {
+               iface MIXER
+               name 'OUT MIXR INR1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.40 {
+               iface MIXER
+               name 'OUT MIXR REC MIXR Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.41 {
+               iface MIXER
+               name 'OUT MIXR DAC R1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.42 {
+               iface MIXER
+               name 'HPO MIX DAC1 Switch'
+               value true
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.43 {
+               iface MIXER
+               name 'HPO MIX HPVOL Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.44 {
+               iface MIXER
+               name 'LOUT MIX DAC L1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.45 {
+               iface MIXER
+               name 'LOUT MIX DAC R1 Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.46 {
+               iface MIXER
+               name 'LOUT MIX OUTVOL L Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+       control.47 {
+               iface MIXER
+               name 'LOUT MIX OUTVOL R Switch'
+               value false
+               comment {
+                       access 'read write'
+                       type BOOLEAN
+                       count 1
+               }
+       }
+}
diff --git a/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init.bbappend b/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init.bbappend
new file mode 100644 (file)
index 0000000..ab14bdb
--- /dev/null
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI:append = " file://agl-compositor-rockchip.conf "
+
+do_install:append() {
+    install -m644 ${WORKDIR}/agl-compositor-rockchip.conf ${D}/${systemd_system_unitdir}/agl-compositor.service.d/agl-compositor-rockchip.conf
+}
diff --git a/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init/agl-compositor-rockchip.conf b/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/agl-compositor-init/agl-compositor-rockchip.conf
new file mode 100644 (file)
index 0000000..e85d7fa
--- /dev/null
@@ -0,0 +1,2 @@
+[Service]
+Environment=LD_PRELOAD=/usr/lib/libmali.so.1
diff --git a/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf.bbappend
new file mode 100644 (file)
index 0000000..a7bebe3
--- /dev/null
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI:append = " \
+       file://nanopct6_output.cfg \
+"
+
+WESTON_FRAGMENTS:append:nanopct6 = " nanopct6_output"
diff --git a/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf/nanopct6_output.cfg b/meta-agl-bsp/meta-rockchip/recipes-graphics/wayland/weston-ini-conf/nanopct6_output.cfg
new file mode 100644 (file)
index 0000000..fbee866
--- /dev/null
@@ -0,0 +1,7 @@
+[output]
+name=HDMI-A-2
+mode=off
+
+[output]
+name=DP-1
+transform=rotate-90
index fc03ceb..9af9541 100644 (file)
@@ -63,6 +63,11 @@ monitor.alsa.rules = [
         node.name = "~alsa_output.*"
         api.alsa.pcm.name = "bcm2835 ALSA"
       }
+      # nanopc-t6
+      {
+        node.name = "~alsa_output.*"
+        api.alsa.card.id = "realtekrt5616co"
+      }
     ]
     actions = {
       update-props = {
@@ -90,6 +95,11 @@ monitor.alsa.rules = [
         node.name = "~alsa_input.*"
         api.alsa.card.id = "rcarsound"
       }
+      # nanopc-t6
+      {
+        node.name = "~alsa_input.*"
+        api.alsa.card.id = "realtekrt5616co"
+      }
     ]
     actions = {
       update-props = {
diff --git a/templates/machine/nanopc-t6/50_bblayers.conf.inc b/templates/machine/nanopc-t6/50_bblayers.conf.inc
new file mode 100644 (file)
index 0000000..721a5dc
--- /dev/null
@@ -0,0 +1,4 @@
+BBLAYERS =+ "\
+    ${METADIR}/bsp/meta-rockchip \
+    ${METADIR}/bsp/meta-rockchip-extra \
+    "
diff --git a/templates/machine/nanopc-t6/50_local.conf.inc b/templates/machine/nanopc-t6/50_local.conf.inc
new file mode 100644 (file)
index 0000000..aa95de1
--- /dev/null
@@ -0,0 +1,3 @@
+MACHINE = "rockchip-rk3588-nanopc-t6"
+
+require conf/include/agl_rk3588.inc
diff --git a/templates/machine/nanopc-t6/README_machine_nanopc-t6.md b/templates/machine/nanopc-t6/README_machine_nanopc-t6.md
new file mode 100644 (file)
index 0000000..04d4dc4
--- /dev/null
@@ -0,0 +1,9 @@
+---
+description: Machine NanoPC-T6
+authors: Naoto Yamaguchi <naoto.yamaguchi@automotivelinux.org>
+---
+
+### Machine nanopc-t6
+
+Rockchip RK3588 SBC.  Manufactured by FriendlyElec.
+