From 3598d4333666b577a49c52e7437183eb03ef34af Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Sat, 27 Nov 2021 09:25:13 +0000 Subject: [PATCH] alsa-utils: rework Amlogic card soundconfig setup --- packages/audio/alsa-utils/scripts/soundconfig | 66 ++++++++++++------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/packages/audio/alsa-utils/scripts/soundconfig b/packages/audio/alsa-utils/scripts/soundconfig index ee285d9832..8ce81b35b7 100755 --- a/packages/audio/alsa-utils/scripts/soundconfig +++ b/packages/audio/alsa-utils/scripts/soundconfig @@ -128,34 +128,52 @@ else mixer "$card" Headphone 0db on mixer "$card" 'AIF1 Slot 0 Digital DAC' on -# Amlogic G12A/G12B/SM1 HDMI - case $(dtname) in - azw,gsking-x|khadas,vim3*) #TDM_A - mixer "$card" 'FRDDR_A SINK 1 SEL' 'OUT 0' - mixer "$card" 'FRDDR_A SRC 1 EN' on - mixer "$card" 'TDMOUT_A SRC SEL' 'IN 0' - mixer "$card" 'TOHDMITX' on - mixer "$card" 'TOHDMITX I2S SRC' 'I2S A' +# Amlogic audio devices + case $(dtsoc) in + amlogic,g12*|amlogic,sm1) + # AXG HDMI // Logic assumes TDMOUT_A is not present in device-tree when TDMOUT_B is used + TDMOUT=$(awk '/TDMOUT/ && $2=="OUT" {print substr($1,length($1),1)}' /sys/firmware/devicetree/base/sound/audio-routing | sort | head -n 1) + if [ "${TDMOUT}" = "A" ]; then + mixer "$card" 'FRDDR_A SINK 1 SEL' 'OUT 0' + mixer "$card" 'FRDDR_A SRC 1 EN' on + mixer "$card" 'TDMOUT_A SRC SEL' 'IN 0' + mixer "$card" 'TOHDMITX' on + mixer "$card" 'TOHDMITX I2S SRC' 'I2S A' + elif [ "${TDMOUT}" = "B" ]; then + mixer "$card" 'FRDDR_A SINK 1 SEL' 'OUT 1' + mixer "$card" 'FRDDR_A SRC 1 EN' on + mixer "$card" 'TDMOUT_B SRC SEL' 'IN 0' + mixer "$card" 'TOHDMITX' on + mixer "$card" 'TOHDMITX I2S SRC' 'I2S B' + fi + # AXG S/PDIF + SPDIFOUT=$(awk '/SPDIF/' /sys/firmware/devicetree/base/sound/audio-routing | sort | head -n 1) + if [ -n "${SPDIFOUT}" ]; then + mixer "$card" 'FRDDR_B SINK 1 SEL' 'OUT 3' + mixer "$card" 'FRDDR_B SRC 1 EN' on + mixer "$card" 'SPDIFOUT SRC SEL' 'IN 1' + mixer "$card" 'SPDIFOUT Playback' on + fi + # AXG Headphone Jack + ACODEC=$(awk '/ACODEC/' /sys/firmware/devicetree/base/sound/audio-routing | sort | head -n 1) + if [ -n "${ACODEC}" ]; then + mixer "$card" 'TOACODEC OUT EN' on + mixer "$card" 'TOACODEC SRC' 'I2S ${TDMOUT}' + mixer "$card" 'ACODEC Playback Switch' on + mixer "$card" 'ACODEC Playback Channel Mode' Stereo + fi ;; - *) #TDM_B - mixer "$card" 'FRDDR_A SINK 1 SEL' 'OUT 1' - mixer "$card" 'FRDDR_A SRC 1 EN' on - mixer "$card" 'TDMOUT_B SRC SEL' 'IN 0' - mixer "$card" 'TOHDMITX' on - mixer "$card" 'TOHDMITX I2S SRC' 'I2S B' + amlogic,meson-gx*) + # AIU HDMI and S/PDIF + mixer "$card" 'AIU HDMI CTRL SRC' 'I2S' + mixer "$card" 'AIU SPDIF SRC SEL' 'SPDIF' + # AIU ACODEC headphone jack + mixer "$card" 'ACODEC' 80% on + mixer "$card" 'AIU ACODEC SRC' 'I2S' + mixer "$card" 'AIU ACODEC OUT EN' on ;; esac -# Amlogic G12A/G12B/SM1 S/PDIF - mixer "$card" 'FRDDR_B SINK 1 SEL' 'OUT 3' - mixer "$card" 'FRDDR_B SRC 1 EN' on - mixer "$card" 'SPDIFOUT SRC SEL' 'IN 1' - mixer "$card" 'SPDIFOUT Playback' on - -# Amlogic GX HDMI and S/PDIF - mixer "$card" 'AIU HDMI CTRL SRC' 'I2S' - mixer "$card" 'AIU SPDIF SRC SEL' 'SPDIF' - # ES8316 headphone jack mixer "$card" 'Right Headphone Mixer Right DAC' on mixer "$card" 'Left Headphone Mixer Left DAC' on