summaryrefslogtreecommitdiff
path: root/recipes-bsp
diff options
context:
space:
mode:
authorMing Liu <ming.liu@toradex.com>2022-05-02 14:49:52 +0200
committerFrancesco Dolcini <francesco.dolcini@toradex.com>2022-05-10 07:03:18 +0000
commit9e5c0e3043a7c49fb71276a0f6604047129eafdc (patch)
tree668aae7d8aa995eb2ec27e2d0e1c8c4246df1762 /recipes-bsp
parent2cd96b80efd4a73a12d2c63ef46d0de8d31babf3 (diff)
alsa-state: set up asound configs dynamically for verdin-imx8 boards
We need set up asound.conf and asound.state dynamitically at runtime since the Verdin Development/Dahlia boards are using different ones. To achieve that, we now introduce a on-target package postinst script to set up them at runtime by checking /proc/device-tree/model to determine which config files should be used. Related-to: ELB-4349 Signed-off-by: Ming Liu <ming.liu@toradex.com>
Diffstat (limited to 'recipes-bsp')
-rw-r--r--recipes-bsp/alsa-state/alsa-state.bbappend38
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state (renamed from recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state)0
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state729
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state519
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state729
9 files changed, 3014 insertions, 1 deletions
diff --git a/recipes-bsp/alsa-state/alsa-state.bbappend b/recipes-bsp/alsa-state/alsa-state.bbappend
index 51f5749..5a1cef7 100644
--- a/recipes-bsp/alsa-state/alsa-state.bbappend
+++ b/recipes-bsp/alsa-state/alsa-state.bbappend
@@ -1,4 +1,40 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-state/:"
-#make this machine specific, as we have different codecs with different settings
+# make this machine specific, as we have different codecs with different settings
PACKAGE_ARCH_tdx = "${MACHINE_ARCH}"
+
+SRC_URI_append_mx8m_tdx = " \
+ file://asound-dev.conf \
+ file://asound-dahlia.conf \
+ file://asound-dev.state \
+ file://asound-dahlia.state \
+"
+
+FILES_${PN} += "${sysconfdir}/asound-*.conf"
+
+do_install_append_mx8m_tdx () {
+ # Remove the default asound.conf, we need set up asound.conf dynamically
+ # at runtime to support both dev/dahlia boards.
+ rm -f ${D}${sysconfdir}/asound.conf
+ rm -f ${D}${localstatedir}/lib/alsa/asound.state
+ install -m 0644 ${WORKDIR}/asound-*.conf ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/asound-*.state ${D}${localstatedir}/lib/alsa
+}
+
+# Invalidate the default pkg_postinst in oe-core, this ensures our ontarget
+# postinst to be the only one to run during package installation.
+pkg_postinst_${PN}_mx8m_tdx () {
+}
+
+pkg_postinst_ontarget_${PN}_mx8m_tdx () {
+ if grep -q "Development" /proc/device-tree/model; then
+ board="dev"
+ else
+ board="dahlia"
+ fi
+
+ mv /etc/asound-$board.conf /etc/asound.conf
+ mv /var/lib/alsa/asound-$board.state /var/lib/alsa/asound.state
+ rm -f /etc/asound-*.conf
+ rm -f /var/lib/alsa/asound-*.state
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf
new file mode 100644
index 0000000..122f912
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mmwm8904"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mmwm8904"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mmwm8904"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state
index 1d3e09a..1d3e09a 100644
--- a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf
new file mode 100644
index 0000000..c0789f6
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mmnau8822"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mmnau8822"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mmnau8822"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state
new file mode 100644
index 0000000..878f82e
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state
@@ -0,0 +1,729 @@
+state.imx8mmnau8822 {
+ control.1 {
+ iface MIXER
+ name 'ADC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'DAC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ Function'
+ value Playback
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Capture
+ item.1 Playback
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ Parameters'
+ value '012c002c002c002c002c'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'DAC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'PCM Volume'
+ value.0 215
+ value.1 215
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -2000
+ dbvalue.1 -2000
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'High Pass Cut Off'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'ADC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'ADC Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'DAC Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAC Limiter Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAC Limiter Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'DAC Limiter Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'DAC Limiter Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'ALC Mode'
+ value Normal
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Normal
+ item.1 Limiter
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'ALC Enable Switch'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 Right
+ item.2 Left
+ item.3 Both
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'ALC Min Gain'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'ALC Max Gain'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'ALC Hold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ALC Target'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ALC Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'ALC Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'ALC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'ALC Noise Gate Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'PGA ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'PGA Volume'
+ value.0 16
+ value.1 16
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -1200
+ dbmax 3525
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Speaker RInversion Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'Speaker Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'AUXOUT Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'PGA Boost Volume'
+ value.0 1
+ value.1 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 1'
+ dbmin 0
+ dbmax 2000
+ dbvalue.0 2000
+ dbvalue.1 2000
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'L2/R2 Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'Aux Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'DAC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'ADC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'Left Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Left Output Mixer LAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Left Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Left Output Mixer RDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Right Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Right Output Mixer RAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Right Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Right Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'AUX1 Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'AUX1 Output Mixer RMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'AUX1 Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'AUX1 Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'AUX1 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'AUX2 Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'AUX2 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'AUX2 Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'AUX2 Output Mixer AUX1MIX Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'Left Input Mixer L2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'Left Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'Left Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'Right Input Mixer R2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'Right Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'Right Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'Digital Loopback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf
new file mode 100644
index 0000000..2289bd0
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mpwm8904"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mpwm8904"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mpwm8904"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state
new file mode 100644
index 0000000..194c7bf
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state
@@ -0,0 +1,519 @@
+state.imx8mpwm8904 {
+ control.1 {
+ iface MIXER
+ name 'EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'Digital Capture Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 119'
+ dbmin -9999999
+ dbmax 1725
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'Left Caputure Mode'
+ value Single-Ended
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Single-Ended
+ item.1 'Differential Line'
+ item.2 'Differential Mic'
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'Right Capture Mode'
+ value Single-Ended
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Single-Ended
+ item.1 'Differential Line'
+ item.2 'Differential Mic'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'Capture Volume'
+ value.0 24
+ value.1 24
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'High Pass Filter Mode'
+ value Hi-fi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Hi-fi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'ADC 128x OSR Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'Digital Playback Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'Digital Playback Volume'
+ value.0 88
+ value.1 88
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -600
+ dbvalue.1 -600
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 43
+ value.1 43
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -1400
+ dbvalue.1 -1400
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'Headphone Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'Line Output Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -5700
+ dbvalue.1 -5700
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'Line Output Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'Line Output ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'DRC Path'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DAC
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'DAC OSRx2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'DAC Deemphasis Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'Digital Sidetone Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 15'
+ dbmin -3600
+ dbmax 900
+ dbvalue.0 -3600
+ dbvalue.1 -3600
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Left Capture Mux'
+ value IN1L
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1L
+ item.1 IN2L
+ item.2 IN3L
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Left Capture Inverting Mux'
+ value IN1L
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1L
+ item.1 IN2L
+ item.2 IN3L
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Right Capture Mux'
+ value IN1R
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1R
+ item.1 IN2R
+ item.2 IN3R
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Right Capture Inverting Mux'
+ value IN1R
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1R
+ item.1 IN2R
+ item.2 IN3R
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'AIFOUTL Mux'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'AIFOUTR Mux'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'DACL Mux'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'DACR Mux'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'Left Sidetone'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'Right Sidetone'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'HPL Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'HPR Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'LINEL Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'LINER Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf
new file mode 100644
index 0000000..54941e3
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mpnau8822"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mpnau8822"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mpnau8822"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state
new file mode 100644
index 0000000..125ddf7
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state
@@ -0,0 +1,729 @@
+state.imx8mpnau8822 {
+ control.1 {
+ iface MIXER
+ name 'ADC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'DAC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ Function'
+ value Playback
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Capture
+ item.1 Playback
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ Parameters'
+ value '012c002c002c002c002c'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'DAC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'PCM Volume'
+ value.0 215
+ value.1 215
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -2000
+ dbvalue.1 -2000
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'High Pass Cut Off'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'ADC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'ADC Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'DAC Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAC Limiter Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAC Limiter Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'DAC Limiter Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'DAC Limiter Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'ALC Mode'
+ value Normal
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Normal
+ item.1 Limiter
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'ALC Enable Switch'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 Right
+ item.2 Left
+ item.3 Both
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'ALC Min Gain'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'ALC Max Gain'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'ALC Hold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ALC Target'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ALC Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'ALC Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'ALC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'ALC Noise Gate Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'PGA ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'PGA Volume'
+ value.0 16
+ value.1 16
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -1200
+ dbmax 3525
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 51
+ value.1 51
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -600
+ dbvalue.1 -600
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Speaker RInversion Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'Speaker Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'AUXOUT Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'PGA Boost Volume'
+ value.0 1
+ value.1 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 1'
+ dbmin 0
+ dbmax 2000
+ dbvalue.0 2000
+ dbvalue.1 2000
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'L2/R2 Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'Aux Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'DAC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'ADC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'Left Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Left Output Mixer LAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Left Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Left Output Mixer RDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Right Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Right Output Mixer RAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Right Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Right Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'AUX1 Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'AUX1 Output Mixer RMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'AUX1 Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'AUX1 Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'AUX1 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'AUX2 Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'AUX2 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'AUX2 Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'AUX2 Output Mixer AUX1MIX Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'Left Input Mixer L2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'Left Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'Left Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'Right Input Mixer R2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'Right Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'Right Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'Digital Loopback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+}