From 46e0ebddede96b5fea7bec2b6c117684436e7611 Mon Sep 17 00:00:00 2001
From: j1nx
Date: Sat, 3 Feb 2024 12:36:14 +0000
Subject: [PATCH] [All] Add ALSA UCM2 profiles
---
.../usr/share/alsa/ucm/README.md | 5 +
.../alsa/ucm2/AMD/acp3x-es83xx/HiFi.conf | 88 ++++
.../ucm2/AMD/acp3x-es83xx/acp3x-es83xx.conf | 33 ++
.../alsa/ucm2/AMD/acp3xalc5682m98/HiFi.conf | 144 ++++++
.../AMD/acp3xalc5682m98/acp3xalc5682m98.conf | 72 +++
.../usr/share/alsa/ucm2/AMD/acp5x/HiFi.conf | 136 ++++++
.../usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf | 92 ++++
.../alsa/ucm2/AMD/acpd7219m98357/HiFi.conf | 53 +++
.../AMD/acpd7219m98357/acpd7219m98357.conf | 8 +
.../ucm2/Allwinner/A64/PinePhone/HiFi.conf | 109 +++++
.../Allwinner/A64/PinePhone/PinePhone.conf | 74 ++++
.../Allwinner/A64/PinePhone/VoiceCall.conf | 115 +++++
.../alsa/ucm2/Amlogic/p241/p241-HiFi.conf | 40 ++
.../share/alsa/ucm2/Amlogic/p241/p241.conf | 31 ++
.../usr/share/alsa/ucm2/DEBUG.md | 121 +++++
.../alsa/ucm2/HDA/DualCodecs/DualCodecs.conf | 15 +
.../share/alsa/ucm2/HDA/DualCodecs/HiFi.conf | 160 +++++++
.../alsa/ucm2/HDA/HDA-Capture-value.conf | 4 +
.../usr/share/alsa/ucm2/HDA/HDA.conf | 71 +++
.../usr/share/alsa/ucm2/HDA/Hdmi.conf | 57 +++
.../usr/share/alsa/ucm2/HDA/HiFi-acp.conf | 10 +
.../usr/share/alsa/ucm2/HDA/HiFi-analog.conf | 327 ++++++++++++++
.../usr/share/alsa/ucm2/HDA/HiFi.conf | 34 ++
.../usr/share/alsa/ucm2/HDA/init.conf | 52 +++
.../usr/share/alsa/ucm2/Intel/SOF/HiFi.conf | 116 +++++
.../usr/share/alsa/ucm2/Intel/SOF/SOF.conf | 9 +
.../alsa/ucm2/Intel/bdw-rt5677/HiFi.conf | 187 ++++++++
.../ucm2/Intel/bdw-rt5677/bdw-rt5677.conf | 9 +
.../alsa/ucm2/Intel/broadwell-rt286/HiFi.conf | 102 +++++
.../broadwell-rt286/broadwell-rt286.conf | 6 +
.../alsa/ucm2/Intel/broxton-rt298/Hdmi.conf | 43 ++
.../alsa/ucm2/Intel/broxton-rt298/HiFi.conf | 112 +++++
.../Intel/broxton-rt298/broxton-rt298.conf | 41 ++
.../alsa/ucm2/Intel/bytcht-cx2072x/HiFi.conf | 23 +
.../Intel/bytcht-cx2072x/bytcht-cx2072x.conf | 6 +
.../Intel/bytcht-es8316/HiFi-Components.conf | 43 ++
.../Intel/bytcht-es8316/HiFi-LongName.conf | 43 ++
.../alsa/ucm2/Intel/bytcht-es8316/HiFi.conf | 25 ++
.../Intel/bytcht-es8316/bytcht-es8316.conf | 6 +
.../Intel/bytcr-rt5640/HiFi-Components.conf | 77 ++++
.../Intel/bytcr-rt5640/HiFi-LongName.conf | 47 ++
.../alsa/ucm2/Intel/bytcr-rt5640/HiFi.conf | 237 ++++++++++
.../ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf | 16 +
.../Intel/bytcr-rt5651/HiFi-Components.conf | 85 ++++
.../Intel/bytcr-rt5651/HiFi-LongName.conf | 83 ++++
.../alsa/ucm2/Intel/bytcr-rt5651/HiFi.conf | 33 ++
.../ucm2/Intel/bytcr-rt5651/bytcr-rt5651.conf | 12 +
.../alsa/ucm2/Intel/bytcr-wm5102/HiFi.conf | 54 +++
.../ucm2/Intel/bytcr-wm5102/bytcr-wm5102.conf | 6 +
.../alsa/ucm2/Intel/cht-bsw-rt5672/HiFi.conf | 155 +++++++
.../Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf | 14 +
.../alsa/ucm2/Intel/chtmax98090/HiFi.conf | 36 ++
.../ucm2/Intel/chtmax98090/chtmax98090.conf | 5 +
.../alsa/ucm2/Intel/chtnau8824/HiFi.conf | 90 ++++
.../ucm2/Intel/chtnau8824/chtnau8824.conf | 8 +
.../share/alsa/ucm2/Intel/chtrt5645/HiFi.conf | 208 +++++++++
.../alsa/ucm2/Intel/chtrt5645/chtrt5645.conf | 11 +
.../share/alsa/ucm2/Intel/chtrt5650/HiFi.conf | 116 +++++
.../alsa/ucm2/Intel/chtrt5650/chtrt5650.conf | 6 +
.../share/alsa/ucm2/Intel/hda-dsp/Hdmi1.conf | 24 +
.../share/alsa/ucm2/Intel/hda-dsp/Hdmi2.conf | 23 +
.../share/alsa/ucm2/Intel/hda-dsp/HiFi.conf | 96 ++++
.../alsa/ucm2/Intel/hda-dsp/hda-dsp.conf | 16 +
.../alsa/ucm2/Intel/kblrt5660/Hdmi1.conf | 23 +
.../alsa/ucm2/Intel/kblrt5660/Hdmi2.conf | 23 +
.../share/alsa/ucm2/Intel/kblrt5660/HiFi.conf | 77 ++++
.../alsa/ucm2/Intel/kblrt5660/kblrt5660.conf | 19 +
.../alsa/ucm2/Intel/skylake-rt286/Hdmi1.conf | 23 +
.../alsa/ucm2/Intel/skylake-rt286/Hdmi2.conf | 23 +
.../alsa/ucm2/Intel/skylake-rt286/HiFi.conf | 112 +++++
.../Intel/skylake-rt286/skylake-rt286.conf | 44 ++
.../alsa/ucm2/Intel/sof-ehl-rt5660/Hdmi.conf | 85 ++++
.../alsa/ucm2/Intel/sof-ehl-rt5660/HiFi.conf | 75 ++++
.../Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf | 19 +
.../alsa/ucm2/Intel/sof-essx8336/Hdmi.conf | 30 ++
.../alsa/ucm2/Intel/sof-essx8336/HiFi.conf | 152 +++++++
.../ucm2/Intel/sof-essx8336/sof-essx8336.conf | 57 +++
.../ucm2/Intel/sof-glkda7219max/Hdmi.conf | 30 ++
.../ucm2/Intel/sof-glkda7219max/HiFi.conf | 72 +++
.../sof-glkda7219max/sof-glkda7219max.conf | 8 +
.../alsa/ucm2/Intel/sof-hda-dsp/Hdmi.conf | 30 ++
.../alsa/ucm2/Intel/sof-hda-dsp/HiFi.conf | 56 +++
.../ucm2/Intel/sof-hda-dsp/sof-hda-dsp.conf | 117 +++++
.../mt8192/mt6359-rt1015p-rt5682/HiFi.conf | 88 ++++
.../mt8192/mt6359-rt1015p-rt5682/init.conf | 24 +
.../mt8192_mt6359_rt1015p_rt5682.conf | 11 +
.../alsa/ucm2/MediaTek/mt8195-sof/init.conf | 20 +
.../mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf | 94 ++++
.../mt8195-sof/mt6359-rt1019-rt5682/init.conf | 22 +
.../sof-mt8195-mt6359-rt1019-rt5682.conf | 12 +
.../alsa/ucm2/MediaTek/mt8195_demo/HiFi.conf | 117 +++++
.../MediaTek/mt8195_demo/mt8195_demo.conf | 45 ++
.../alsa/ucm2/MediaTek/mt8365-evk/HiFi.conf | 141 ++++++
.../ucm2/MediaTek/mt8365-evk/mt8365-evk.conf | 39 ++
.../alsa/ucm2/MediaTek/mt8370-evk/HiFi.conf | 165 +++++++
.../ucm2/MediaTek/mt8370-evk/mt8370-evk.conf | 45 ++
.../alsa/ucm2/MediaTek/mt8390-evk/HiFi.conf | 165 +++++++
.../ucm2/MediaTek/mt8390-evk/mt8390-evk.conf | 45 ++
.../alsa/ucm2/MediaTek/mt8395-evk/HiFi.conf | 163 +++++++
.../ucm2/MediaTek/mt8395-evk/mt8395-evk.conf | 47 ++
.../alsa/ucm2/MediaTek/mtk-rt5650/HDMI.conf | 9 +
.../alsa/ucm2/MediaTek/mtk-rt5650/HiFi.conf | 83 ++++
.../alsa/ucm2/MediaTek/mtk-rt5650/init.conf | 17 +
.../ucm2/MediaTek/mtk-rt5650/mtk-rt5650.conf | 12 +
.../alsa/ucm2/NXP/iMX8/Librem_5/HiFi.conf | 151 +++++++
.../alsa/ucm2/NXP/iMX8/Librem_5/Librem 5.conf | 25 ++
.../ucm2/NXP/iMX8/Librem_5_Devkit/HiFi.conf | 74 ++++
.../iMX8/Librem_5_Devkit/Librem 5 Devkit.conf | 5 +
.../OMAP/abe-twl6040/Pandaboard/FMAnalog.conf | 45 ++
.../OMAP/abe-twl6040/Pandaboard/HiFi.conf | 56 +++
.../OMAP/abe-twl6040/Pandaboard/HiFiLP.conf | 46 ++
.../abe-twl6040/Pandaboard/Pandaboard.conf | 41 ++
.../OMAP/abe-twl6040/Pandaboard/Record.conf | 47 ++
.../OMAP/abe-twl6040/Pandaboard/Voice.conf | 46 ++
.../abe-twl6040/Pandaboard/VoiceCall.conf | 67 +++
.../OMAP/abe-twl6040/SDP4430/FMAnalog.conf | 40 ++
.../ucm2/OMAP/abe-twl6040/SDP4430/HiFi.conf | 57 +++
.../ucm2/OMAP/abe-twl6040/SDP4430/HiFiLP.conf | 45 ++
.../ucm2/OMAP/abe-twl6040/SDP4430/Record.conf | 45 ++
.../OMAP/abe-twl6040/SDP4430/SDP4430.conf | 41 ++
.../ucm2/OMAP/abe-twl6040/SDP4430/Voice.conf | 45 ++
.../OMAP/abe-twl6040/SDP4430/VoiceCall.conf | 66 +++
.../ucm2/OMAP/abe-twl6040/abe-twl6040.conf | 13 +
.../alsa/ucm2/Qualcomm/apq8016-sbc/HDMI.conf | 17 +
.../alsa/ucm2/Qualcomm/apq8016-sbc/HiFi.conf | 159 +++++++
.../Qualcomm/apq8016-sbc/apq8016-sbc.conf | 10 +
.../alsa/ucm2/Qualcomm/apq8096/HDMI.conf | 33 ++
.../alsa/ucm2/Qualcomm/apq8096/HiFi.conf | 100 +++++
.../alsa/ucm2/Qualcomm/apq8096/apq8096.conf | 11 +
.../sc7180/rt5682-max98357a/HiFi.conf | 101 +++++
.../sc7180/rt5682-max98357a/init.conf | 24 +
.../sc7180-rt5682-max98357a-1mic.conf | 11 +
.../alsa/ucm2/Qualcomm/sc8280xp/HiFi.conf | 83 ++++
.../ucm2/Qualcomm/sc8280xp/LENOVO-X13s.conf | 21 +
.../alsa/ucm2/Qualcomm/sc8280xp/sc8280xp.conf | 11 +
.../share/alsa/ucm2/Qualcomm/sdm845/HDMI.conf | 26 ++
.../alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf | 76 ++++
.../share/alsa/ucm2/Qualcomm/sdm845/HiFi.conf | 40 ++
.../sdm845/Lenovo-YOGA-C630-13Q50.conf | 10 +
.../alsa/ucm2/Qualcomm/sdm845/sdm845.conf | 11 +
.../share/alsa/ucm2/Qualcomm/sm8250/HDMI.conf | 26 ++
.../share/alsa/ucm2/Qualcomm/sm8250/HiFi.conf | 46 ++
.../Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf | 11 +
.../alsa/ucm2/Qualcomm/sm8650/MTP/HiFi.conf | 26 ++
.../ucm2/Qualcomm/sm8650/MTP/SM8650-MTP.conf | 11 +
.../alsa/ucm2/Qualcomm/sm8650/QRD/HiFi.conf | 99 +++++
.../ucm2/Qualcomm/sm8650/QRD/SM8650-QRD.conf | 13 +
.../alsa/ucm2/Qualcomm/x1e80100/HiFi.conf | 54 +++
.../ucm2/Qualcomm/x1e80100/X1E80100-CRD.conf | 19 +
.../usr/share/alsa/ucm2/README.md | 62 +++
.../share/alsa/ucm2/Rockchip/es8316/HiFi.conf | 66 +++
.../alsa/ucm2/Rockchip/es8316/es8316.conf | 29 ++
.../alsa/ucm2/Rockchip/max98090/HiFi.conf | 138 ++++++
.../alsa/ucm2/Rockchip/max98090/max98090.conf | 8 +
.../ucm2/Rockchip/rk3399-gru-sound/HiFi.conf | 125 ++++++
.../rk3399-gru-sound/rk3399-gru-sound.conf | 8 +
.../ucm2/Rockchip/rk3588-es8316/HiFi.conf | 42 ++
.../Rockchip/rk3588-es8316/rk3588-es8316.conf | 26 ++
.../alsa/ucm2/Rockchip/rk817-sound/HiFi.conf | 68 +++
.../Rockchip/rk817-sound/rk817-sound.conf | 6 +
.../share/alsa/ucm2/Samsung/snow/HiFi.conf | 58 +++
.../share/alsa/ucm2/Samsung/snow/snow.conf | 8 +
.../share/alsa/ucm2/Tegra/alc5632/HiFi.conf | 39 ++
.../share/alsa/ucm2/Tegra/alc5632/Record.conf | 59 +++
.../alsa/ucm2/Tegra/alc5632/alc5632.conf | 44 ++
.../alsa/ucm2/Tegra/max98089/lge-x3-HiFi.conf | 148 +++++++
.../ucm2/Tegra/max98089/lge-x3-VoiceCall.conf | 125 ++++++
.../alsa/ucm2/Tegra/max98089/lge-x3.conf | 47 ++
.../share/alsa/ucm2/Tegra/max98090/HiFi.conf | 99 +++++
.../alsa/ucm2/Tegra/max98090/max98090.conf | 43 ++
.../Tegra/rt5631/Asus-Transformer-HiFi.conf | 101 +++++
.../ucm2/Tegra/rt5631/Asus-Transformer.conf | 65 +++
.../Tegra/rt5640/Google-Nexus-7-HiFi.conf | 15 +
.../ucm2/Tegra/rt5640/Google-Nexus-7.conf | 8 +
.../ucm2/Tegra/tegra-hda/tegra-hda-HiFi.conf | 10 +
.../alsa/ucm2/Tegra/tegra-hda/tegra-hda.conf | 8 +
.../ucm2/Tegra/wm8903/Acer-A500-HiFi.conf | 114 +++++
.../alsa/ucm2/Tegra/wm8903/Acer-A500.conf | 8 +
.../Tegra/wm8903/Asus-Transformer-HiFi.conf | 108 +++++
.../ucm2/Tegra/wm8903/Asus-Transformer.conf | 37 ++
.../USB-Audio/AllenAndHeath/Zedi10-Hifi.conf | 194 ++++++++
.../ucm2/USB-Audio/AllenAndHeath/Zedi10.conf | 12 +
.../USB-Audio/Arturia/Minifuse-12-HiFi.conf | 192 ++++++++
.../ucm2/USB-Audio/Arturia/Minifuse-12.conf | 11 +
.../USB-Audio/Arturia/Minifuse-4-HiFi.conf | 184 ++++++++
.../ucm2/USB-Audio/Arturia/Minifuse-4.conf | 11 +
.../USB-Audio/Audient/Audient-iD4-0003.conf | 11 +
.../USB-Audio/Audient/Audient-iD4-0009.conf | 11 +
.../Audient/Audient-iD4-HiFi-0003.conf | 55 +++
.../Audient/Audient-iD4-HiFi-0009.conf | 100 +++++
.../Behringer/Flow8-Recording-Hifi.conf | 289 ++++++++++++
.../USB-Audio/Behringer/Flow8-Recording.conf | 12 +
.../Behringer/Flow8-Streaming-Hifi.conf | 82 ++++
.../USB-Audio/Behringer/Flow8-Streaming.conf | 12 +
.../USB-Audio/Behringer/UMC202HD-HiFi.conf | 88 ++++
.../ucm2/USB-Audio/Behringer/UMC202HD.conf | 11 +
.../USB-Audio/Behringer/UMC204HD-HiFi.conf | 148 +++++++
.../ucm2/USB-Audio/Behringer/UMC204HD.conf | 11 +
.../USB-Audio/Behringer/UMC404HD-HiFi.conf | 200 +++++++++
.../ucm2/USB-Audio/Behringer/UMC404HD.conf | 11 +
.../USB-Audio/Common/HeadphonesOnly-HiFi.conf | 7 +
.../ucm2/USB-Audio/Common/HeadphonesOnly.conf | 6 +
.../Dell/Desktop-Front-Speaker-Headset.conf | 32 ++
.../ucm2/USB-Audio/Dell/Desktop-Front.conf | 6 +
.../USB-Audio/Dell/Desktop-Rear-Line.conf | 10 +
.../ucm2/USB-Audio/Dell/Desktop-Rear.conf | 6 +
.../ucm2/USB-Audio/Dell/WD15-Dock-HiFi.conf | 65 +++
.../alsa/ucm2/USB-Audio/Dell/WD15-Dock.conf | 6 +
.../Digidesign/Digidesign-Mbox-3-HiFi.conf | 126 ++++++
.../Digidesign/Digidesign-Mbox-3.conf | 11 +
.../USB-Audio/Focusrite/Scarlett-2i-HiFi.conf | 123 ++++++
.../ucm2/USB-Audio/Focusrite/Scarlett-2i.conf | 65 +++
.../Aorus-Master-Main-Audio-HiFi.conf | 61 +++
.../Gigabyte/Aorus-Master-Main-Audio.conf | 5 +
.../alsa/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf | 197 +++++++++
.../alsa/ucm2/USB-Audio/GoXLR/GoXLR.conf | 11 +
.../Lenovo/ThinkStation-P620-Main-HiFi.conf | 30 ++
.../Lenovo/ThinkStation-P620-Main.conf | 5 +
.../Lenovo/ThinkStation-P620-Rear-HiFi.conf | 31 ++
.../Lenovo/ThinkStation-P620-Rear.conf | 5 +
.../alsa/ucm2/USB-Audio/MOTU/M2-HiFi.conf | 87 ++++
.../share/alsa/ucm2/USB-Audio/MOTU/M2.conf | 12 +
.../alsa/ucm2/USB-Audio/MOTU/M4-HiFi.conf | 186 ++++++++
.../share/alsa/ucm2/USB-Audio/MOTU/M4.conf | 12 +
.../alsa/ucm2/USB-Audio/MOTU/M6-HiFi.conf | 245 +++++++++++
.../share/alsa/ucm2/USB-Audio/MOTU/M6.conf | 12 +
.../Traktor-Kontrol-Z1-Mixer.conf | 52 +++
.../NativeInstruments/Traktor-Kontrol-Z1.conf | 11 +
.../alsa/ucm2/USB-Audio/Rane/SL-1-HiFi.conf | 45 ++
.../share/alsa/ucm2/USB-Audio/Rane/SL-1.conf | 6 +
.../Realtek/ALC1220-VB-Desktop-HiFi.conf | 77 ++++
.../USB-Audio/Realtek/ALC1220-VB-Desktop.conf | 5 +
.../ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf | 323 ++++++++++++++
.../alsa/ucm2/USB-Audio/Realtek/ALC4080.conf | 13 +
.../USB-Audio/Roland/BridgeCast-Hifi.conf | 164 +++++++
.../ucm2/USB-Audio/Roland/BridgeCast.conf | 6 +
.../USB-Audio/SolidStateLabs/SSL2-HiFi.conf | 55 +++
.../ucm2/USB-Audio/SolidStateLabs/SSL2.conf | 11 +
.../USB-Audio/Sony/Inzone-H9-H7-HiFi.conf | 15 +
.../ucm2/USB-Audio/Sony/Inzone-H9-H7.conf | 6 +
.../ucm2/USB-Audio/Steinberg/UR24C-HiFi.conf | 94 ++++
.../alsa/ucm2/USB-Audio/Steinberg/UR24C.conf | 11 +
.../ucm2/USB-Audio/Steinberg/UR44-HiFi.conf | 162 +++++++
.../alsa/ucm2/USB-Audio/Steinberg/UR44.conf | 11 +
.../share/alsa/ucm2/USB-Audio/USB-Audio.conf | 413 ++++++++++++++++++
.../USB-Audio/UniversalAudio/Volt2-HiFi.conf | 54 +++
.../ucm2/USB-Audio/UniversalAudio/Volt2.conf | 11 +
.../share/alsa/ucm2/codecs/cs42l43/init.conf | 14 +
.../alsa/ucm2/codecs/cx2072x/DisableSeq.conf | 9 +
.../alsa/ucm2/codecs/cx2072x/EnableSeq.conf | 15 +
.../alsa/ucm2/codecs/cx2072x/HeadPhones.conf | 23 +
.../alsa/ucm2/codecs/cx2072x/HeadsetMic.conf | 24 +
.../alsa/ucm2/codecs/cx2072x/InternalMic.conf | 23 +
.../alsa/ucm2/codecs/cx2072x/Speaker.conf | 22 +
.../share/alsa/ucm2/codecs/da7219/init.conf | 24 +
.../alsa/ucm2/codecs/es8316/EnableSeq.conf | 29 ++
.../alsa/ucm2/codecs/es8316/HeadPhones.conf | 24 +
.../ucm2/codecs/es8316/IN1-HeadsetMic.conf | 24 +
.../ucm2/codecs/es8316/IN1-InternalMic.conf | 23 +
.../ucm2/codecs/es8316/IN2-HeadsetMic.conf | 24 +
.../ucm2/codecs/es8316/IN2-InternalMic.conf | 23 +
.../alsa/ucm2/codecs/es8316/MonoSpeaker.conf | 41 ++
.../alsa/ucm2/codecs/es8316/Speaker.conf | 24 +
.../usr/share/alsa/ucm2/codecs/hda/hdmi.conf | 35 ++
.../alsa/ucm2/codecs/max98090/EnableSeq.conf | 27 ++
.../alsa/ucm2/codecs/max98090/Headphones.conf | 25 ++
.../alsa/ucm2/codecs/max98090/HeadsetMic.conf | 32 ++
.../ucm2/codecs/max98090/InternalMic.conf | 25 ++
.../alsa/ucm2/codecs/max98090/Speaker.conf | 24 +
.../alsa/ucm2/codecs/nau8824/DMIC1_2.conf | 30 ++
.../alsa/ucm2/codecs/nau8824/EnableSeq.conf | 17 +
.../alsa/ucm2/codecs/nau8824/HeadPhones.conf | 21 +
.../alsa/ucm2/codecs/nau8824/HeadsetMic.conf | 28 ++
.../alsa/ucm2/codecs/nau8824/InternalMic.conf | 27 ++
.../alsa/ucm2/codecs/nau8824/MonoSpeaker.conf | 26 ++
.../alsa/ucm2/codecs/nau8824/Speaker.conf | 24 +
.../rx-macro/HeadphoneDisableSeq.conf | 11 +
.../rx-macro/HeadphoneEnableSeq.conf | 12 +
.../ucm2/codecs/qcom-lpass/rx-macro/init.conf | 6 +
.../qcom-lpass/tx-macro/DMIC0DisableSeq.conf | 4 +
.../qcom-lpass/tx-macro/DMIC0EnableSeq.conf | 9 +
.../tx-macro/HeadphoneMicDisableSeq.conf | 5 +
.../tx-macro/HeadphoneMicEnableSeq.conf | 7 +
.../tx-macro/SoundwireMic0EnableSeq.conf | 6 +
.../tx-macro/SoundwireMic1EnableSeq.conf | 7 +
.../tx-macro/SoundwireMicDisableSeq.conf | 4 +
.../qcom-lpass/va-macro/DMIC0DisableSeq.conf | 5 +
.../qcom-lpass/va-macro/DMIC0EnableSeq.conf | 6 +
.../qcom-lpass/va-macro/DMIC1DisableSeq.conf | 5 +
.../qcom-lpass/va-macro/DMIC1EnableSeq.conf | 6 +
.../wsa-macro/SpeakerDisableSeq.conf | 8 +
.../wsa-macro/SpeakerEnableSeq.conf | 8 +
.../wsa-macro/Wsa1SpeakerDisableSeq.conf | 10 +
.../wsa-macro/Wsa1SpeakerEnableSeq.conf | 10 +
.../wsa-macro/Wsa2SpeakerDisableSeq.conf | 10 +
.../wsa-macro/Wsa2SpeakerEnableSeq.conf | 10 +
.../wsa-macro/four-speakers/init.conf | 8 +
.../codecs/qcom-lpass/wsa-macro/init.conf | 6 +
.../alsa/ucm2/codecs/rt5640/DigitalMics.conf | 61 +++
.../alsa/ucm2/codecs/rt5640/EnableSeq.conf | 84 ++++
.../alsa/ucm2/codecs/rt5640/HeadPhones.conf | 53 +++
.../alsa/ucm2/codecs/rt5640/HeadPhones2.conf | 46 ++
.../alsa/ucm2/codecs/rt5640/HeadsetMic.conf | 59 +++
.../ucm2/codecs/rt5640/HeadsetMic2-IN1.conf | 52 +++
.../ucm2/codecs/rt5640/IN1-InternalMic.conf | 58 +++
.../ucm2/codecs/rt5640/IN3-InternalMic.conf | 58 +++
.../alsa/ucm2/codecs/rt5640/MonoSpeaker.conf | 47 ++
.../alsa/ucm2/codecs/rt5640/Speaker.conf | 47 ++
.../share/alsa/ucm2/codecs/rt5640/init.conf | 18 +
.../alsa/ucm2/codecs/rt5645/AnalogMic.conf | 37 ++
.../codecs/rt5645/DigitalMicDisableSeq.conf | 7 +
.../codecs/rt5645/DigitalMicEnableSeq.conf | 12 +
.../alsa/ucm2/codecs/rt5645/DisableSeq.conf | 17 +
.../alsa/ucm2/codecs/rt5645/EnableSeq.conf | 48 ++
.../ucm2/codecs/rt5645/HSMicDisableSeq.conf | 8 +
.../ucm2/codecs/rt5645/HSMicEnableSeq.conf | 9 +
.../codecs/rt5645/HeadphonesEnableSeq.conf | 9 +
.../ucm2/codecs/rt5645/SpeakerEnableSeq.conf | 8 +
.../share/alsa/ucm2/codecs/rt5645/init.conf | 10 +
.../alsa/ucm2/codecs/rt5651/DigitalMic.conf | 22 +
.../alsa/ucm2/codecs/rt5651/EnableSeq.conf | 59 +++
.../codecs/rt5651/HeadPhones-swapped.conf | 39 ++
.../alsa/ucm2/codecs/rt5651/HeadPhones.conf | 30 ++
.../ucm2/codecs/rt5651/IN1-InternalMic.conf | 24 +
.../ucm2/codecs/rt5651/IN12-InternalMic.conf | 28 ++
.../ucm2/codecs/rt5651/IN2-HeadsetMic.conf | 29 ++
.../ucm2/codecs/rt5651/IN2-InternalMic.conf | 24 +
.../ucm2/codecs/rt5651/IN3-HeadsetMic.conf | 29 ++
.../alsa/ucm2/codecs/rt5651/MonoSpeaker.conf | 47 ++
.../alsa/ucm2/codecs/rt5651/Speaker.conf | 29 ++
.../share/alsa/ucm2/codecs/rt5651/init.conf | 11 +
.../share/alsa/ucm2/codecs/rt5672/DMIC1.conf | 32 ++
.../share/alsa/ucm2/codecs/rt5672/DMIC2.conf | 32 ++
.../alsa/ucm2/codecs/rt5672/EnableSeq.conf | 54 +++
.../alsa/ucm2/codecs/rt5672/HeadPhones.conf | 25 ++
.../alsa/ucm2/codecs/rt5672/HeadsetMic.conf | 33 ++
.../alsa/ucm2/codecs/rt5672/MonoSpeaker.conf | 30 ++
.../alsa/ucm2/codecs/rt5672/Speaker.conf | 26 ++
.../share/alsa/ucm2/codecs/rt5682/init.conf | 24 +
.../share/alsa/ucm2/codecs/rt700/init.conf | 9 +
.../alsa/ucm2/codecs/rt711-sdca/init.conf | 8 +
.../share/alsa/ucm2/codecs/rt711/init.conf | 9 +
.../alsa/ucm2/codecs/rt713-dmic/init.conf | 6 +
.../alsa/ucm2/codecs/rt713-sdca/init.conf | 8 +
.../alsa/ucm2/codecs/rt715-sdca/init.conf | 14 +
.../share/alsa/ucm2/codecs/rt715/init.conf | 31 ++
.../codecs/wcd934x/DefaultDisableSeq.conf | 7 +
.../ucm2/codecs/wcd934x/DefaultEnableSeq.conf | 10 +
.../codecs/wcd934x/HeadphoneDisableSeq.conf | 8 +
.../codecs/wcd934x/HeadphoneEnableSeq.conf | 8 +
.../wcd934x/HeadphoneMicDisableSeq.conf | 4 +
.../codecs/wcd934x/HeadphoneMicEnableSeq.conf | 4 +
.../codecs/wcd934x/SpeakerDisableSeq.conf | 6 +
.../ucm2/codecs/wcd934x/SpeakerEnableSeq.conf | 6 +
.../share/alsa/ucm2/codecs/wcd934x/init.conf | 25 ++
.../codecs/wcd938x/HeadphoneDisableSeq.conf | 8 +
.../codecs/wcd938x/HeadphoneEnableSeq.conf | 10 +
.../wcd938x/HeadphoneMicDisableSeq.conf | 4 +
.../codecs/wcd938x/HeadphoneMicEnableSeq.conf | 6 +
.../share/alsa/ucm2/codecs/wcd938x/init.conf | 13 +
.../codecs/wcd939x/AnalogMic1EnableSeq.conf | 7 +
.../codecs/wcd939x/AnalogMic3EnableSeq.conf | 7 +
.../codecs/wcd939x/AnalogMic4EnableSeq.conf | 7 +
.../codecs/wcd939x/AnalogMic5EnableSeq.conf | 7 +
.../codecs/wcd939x/AnalogMicDisableSeq.conf | 5 +
.../ucm2/codecs/wcd939x/DefaultEnableSeq.conf | 4 +
.../codecs/wcd939x/HeadphoneDisableSeq.conf | 9 +
.../codecs/wcd939x/HeadphoneEnableSeq.conf | 9 +
.../wcd939x/HeadphoneMicDisableSeq.conf | 6 +
.../codecs/wcd939x/HeadphoneMicEnableSeq.conf | 8 +
.../share/alsa/ucm2/codecs/wcd939x/init.conf | 18 +
.../alsa/ucm2/codecs/wm5102/EnableSeq.conf | 19 +
.../ucm2/codecs/wm5102/HPOut2-Speaker.conf | 22 +
.../alsa/ucm2/codecs/wm5102/HeadPhones.conf | 23 +
.../ucm2/codecs/wm5102/IN1-HeadsetMic.conf | 24 +
.../ucm2/codecs/wm5102/IN1-InternalMic.conf | 23 +
.../ucm2/codecs/wm5102/IN2-HeadsetMic.conf | 24 +
.../ucm2/codecs/wm5102/IN3-InternalMic.conf | 23 +
.../alsa/ucm2/codecs/wm5102/Speaker.conf | 22 +
.../ucm2/codecs/wsa881x/DefaultEnableSeq.conf | 10 +
.../codecs/wsa881x/SpeakerDisableSeq.conf | 10 +
.../ucm2/codecs/wsa881x/SpeakerEnableSeq.conf | 12 +
.../ucm2/codecs/wsa883x/DefaultEnableSeq.conf | 12 +
.../codecs/wsa883x/SpeakerDisableSeq.conf | 10 +
.../ucm2/codecs/wsa883x/SpeakerEnableSeq.conf | 12 +
.../share/alsa/ucm2/codecs/wsa883x/init.conf | 12 +
.../four-speakers/DefaultEnableSeq.conf | 26 ++
.../wsa884x/four-speakers/SpeakerSeq.conf | 53 +++
.../codecs/wsa884x/four-speakers/init.conf | 13 +
.../two-speakers/DefaultEnableSeq.conf | 12 +
.../wsa884x/two-speakers/SpeakerSeq.conf | 29 ++
.../codecs/wsa884x/two-speakers/init.conf | 11 +
.../usr/share/alsa/ucm2/common/ctl/remap.conf | 50 +++
.../share/alsa/ucm2/common/direct-verb.conf | 27 ++
.../usr/share/alsa/ucm2/common/direct.conf | 12 +
.../share/alsa/ucm2/common/linked-card.conf | 3 +
.../usr/share/alsa/ucm2/common/linked.conf | 3 +
.../usr/share/alsa/ucm2/common/pcm/split.conf | 371 ++++++++++++++++
.../share/alsa/ucm2/conf.d/DB410c/DB410c.conf | 1 +
.../share/alsa/ucm2/conf.d/DB820c/DB820c.conf | 1 +
.../alsa/ucm2/conf.d/HDA-Intel/HDA-Intel.conf | 1 +
.../SC7180/sc7180-rt5682-max98357a-1mic.conf | 1 +
.../usr/share/alsa/ucm2/conf.d/SOF/SOF.conf | 1 +
.../alsa/ucm2/conf.d/USB-Audio/USB-Audio.conf | 1 +
.../ucm2/conf.d/VEYRON-I2S/VEYRON-I2S.conf | 1 +
.../usr/share/alsa/ucm2/conf.d/acp/acp.conf | 1 +
.../conf.d/acp3x-es83xx/acp3x-es83xx.conf | 1 +
.../acp3xalc5682m98/acp3xalc5682m98.conf | 1 +
.../ucm2/conf.d/acp5x/Valve-Jupiter-1.conf | 1 +
.../share/alsa/ucm2/conf.d/acp62/acp62.conf | 1 +
.../share/alsa/ucm2/conf.d/acp63/acp63.conf | 1 +
.../share/alsa/ucm2/conf.d/acp6x/acp6x.conf | 1 +
.../conf.d/acpd7219m98357/acpd7219m98357.conf | 1 +
.../ucm2/conf.d/bdw-rt5677/bdw-rt5677.conf | 1 +
.../broadwell-rt286/broadwell-rt286.conf | 1 +
.../conf.d/broxton-rt298/broxton-rt298.conf | 1 +
.../conf.d/bytcht-cx2072x/bytcht-cx2072x.conf | 1 +
.../conf.d/bytcht-es8316/bytcht-es8316.conf | 1 +
.../conf.d/bytcr-rt5640/bytcr-rt5640.conf | 1 +
.../conf.d/bytcr-rt5651/bytcr-rt5651.conf | 1 +
.../conf.d/bytcr-wm5102/bytcr-wm5102.conf | 1 +
.../conf.d/cht-bsw-rt5672/cht-bsw-rt5672.conf | 1 +
.../ucm2/conf.d/chtmax98090/chtmax98090.conf | 1 +
.../ucm2/conf.d/chtnau8824/chtnau8824.conf | 1 +
.../alsa/ucm2/conf.d/chtrt5645/chtrt5645.conf | 1 +
.../alsa/ucm2/conf.d/chtrt5650/chtrt5650.conf | 1 +
.../ucm2/conf.d/gx-sound-card/GXL-P241.conf | 1 +
.../conf.d/gx-sound-card/LIBRETECH-CC.conf | 1 +
.../alsa/ucm2/conf.d/hda-dsp/hda-dsp.conf | 1 +
.../alsa/ucm2/conf.d/kblrt5660/kblrt5660.conf | 1 +
.../mt8192_mt6359_rt1015p_rt5682.conf | 1 +
.../ucm2/conf.d/mt8195_demo/mt8195_demo.conf | 1 +
.../ucm2/conf.d/mt8365-evk/mt8365-evk.conf | 1 +
.../ucm2/conf.d/mt8370-evk/mt8370-evk.conf | 1 +
.../ucm2/conf.d/mt8390-evk/mt8390-evk.conf | 1 +
.../ucm2/conf.d/mt8395-evk/mt8395-evk.conf | 1 +
.../ucm2/conf.d/mtk-rt5650/mtk-rt5650.conf | 1 +
.../rk3399-gru-soun/rk3399-gru-soun.conf | 1 +
.../conf.d/rk3588-es8316/rk3588-es8316.conf | 1 +
.../rockchip_es8316/rockchip_es8316.conf | 1 +
.../alsa/ucm2/conf.d/sc8280xp/sc8280xp.conf | 1 +
.../share/alsa/ucm2/conf.d/sdm845/DB845c.conf | 1 +
...81JL-LenovoYOGAC630_13Q50-LNVNB161216.conf | 1 +
.../conf.d/simple-card/Librem 5 Devkit.conf | 1 +
.../ucm2/conf.d/simple-card/Librem 5.conf | 1 +
.../ucm2/conf.d/simple-card/PinePhone.conf | 1 +
.../ucm2/conf.d/simple-card/rk817_ext.conf | 1 +
.../ucm2/conf.d/simple-card/rk817_int.conf | 1 +
.../simple-card/rockchip,es8316-codec.conf | 1 +
.../conf.d/skylake-rt286/skylake-rt286.conf | 1 +
.../Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf | 1 +
.../alsa/ucm2/conf.d/sm8650/SM8650-MTP.conf | 1 +
.../alsa/ucm2/conf.d/sm8650/SM8650-QRD.conf | 1 +
.../conf.d/sof-ehl-rt5660/sof-ehl-rt5660.conf | 1 +
.../conf.d/sof-essx8336/sof-essx8336.conf | 1 +
.../sof-glkda7219ma/sof-glkda7219ma.conf | 1 +
.../ucm2/conf.d/sof-hda-dsp/sof-hda-dsp.conf | 1 +
.../conf.d/sof-hda-dsp/sof-skl_hda_card.conf | 1 +
.../sof-mt8195_r1019_5682.conf | 1 +
.../share/alsa/ucm2/conf.d/sof-skl_hda_card | 1 +
.../conf.d/sof-soundwire/sof-soundwire.conf | 1 +
.../alsa/ucm2/conf.d/tegra-hda/tegra-hda.conf | 1 +
.../tegra/ASUS Google Nexus 7 ALC5642.conf | 1 +
.../tegra/Acer Iconia Tab A500 WM8903.conf | 1 +
.../tegra/Asus EeePad Slider WM8903.conf | 1 +
.../tegra/Asus EeePad Transformer WM8903.conf | 1 +
...us Transformer Infinity TF700T RT5631.conf | 1 +
.../Asus Transformer Pad TF300T WM8903.conf | 1 +
.../Asus Transformer Pad TF300TG RT5631.conf | 1 +
.../Asus Transformer Pad TF300TL RT5631.conf | 1 +
.../Asus Transformer Prime TF201 RT5631.conf | 1 +
.../alsa/ucm2/conf.d/tegra/Compal PAZ00.conf | 1 +
.../alsa/ucm2/conf.d/tegra/GoogleNyanBig.conf | 1 +
.../ucm2/conf.d/tegra/GoogleNyanBlaze.conf | 1 +
.../tegra/LG Optimus 4X HD MAX98089.conf | 1 +
.../conf.d/tegra/LG Optimus Vu MAX98089.conf | 1 +
.../ucm2/conf.d/x1e80100/X1E80100-CRD.conf | 1 +
.../share/alsa/ucm2/conf.virt.d/.gitignore | 0
.../usr/share/alsa/ucm2/lib/card-init.conf | 10 +
.../usr/share/alsa/ucm2/lib/ctl-remap.conf | 22 +
.../usr/share/alsa/ucm2/lib/generic.conf | 29 ++
.../alsa/ucm2/module/snd_soc_apq8016_sbc.conf | 1 +
.../alsa/ucm2/module/snd_soc_apq8096.conf | 1 +
.../ucm2/module/snd_soc_omap_abe_twl6040.conf | 1 +
.../ucm2/module/snd_soc_rk3399_gru_sound.conf | 1 +
.../module/snd_soc_rockchip_max98090.conf | 1 +
.../alsa/ucm2/module/snd_soc_sdm845.conf | 1 +
.../share/alsa/ucm2/module/snd_soc_snow.conf | 1 +
.../ucm2/module/snd_soc_tegra_alc5632.conf | 1 +
.../ucm2/module/snd_soc_tegra_max98090.conf | 1 +
.../platforms/bytcr/PlatformDisableSeq.conf | 23 +
.../platforms/bytcr/PlatformEnableSeq.conf | 118 +++++
.../share/alsa/ucm2/sof-soundwire/Hdmi.conf | 30 ++
.../share/alsa/ucm2/sof-soundwire/HiFi.conf | 35 ++
.../alsa/ucm2/sof-soundwire/cs35l56.conf | 40 ++
.../alsa/ucm2/sof-soundwire/cs42l43-dmic.conf | 26 ++
.../alsa/ucm2/sof-soundwire/cs42l43.conf | 46 ++
.../share/alsa/ucm2/sof-soundwire/dmic.conf | 22 +
.../share/alsa/ucm2/sof-soundwire/rt1308.conf | 46 ++
.../share/alsa/ucm2/sof-soundwire/rt1316.conf | 65 +++
.../share/alsa/ucm2/sof-soundwire/rt1318.conf | 44 ++
.../share/alsa/ucm2/sof-soundwire/rt5682.conf | 50 +++
.../share/alsa/ucm2/sof-soundwire/rt700.conf | 62 +++
.../alsa/ucm2/sof-soundwire/rt711-sdca.conf | 40 ++
.../share/alsa/ucm2/sof-soundwire/rt711.conf | 39 ++
.../alsa/ucm2/sof-soundwire/rt713-dmic.conf | 21 +
.../alsa/ucm2/sof-soundwire/rt713-sdca.conf | 40 ++
.../alsa/ucm2/sof-soundwire/rt715-sdca.conf | 22 +
.../share/alsa/ucm2/sof-soundwire/rt715.conf | 31 ++
.../ucm2/sof-soundwire/sof-soundwire.conf | 105 +++++
.../usr/share/alsa/ucm2/ucm.conf | 172 ++++++++
511 files changed, 19427 insertions(+)
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm/README.md
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/acp3x-es83xx.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/acp3xalc5682m98.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/acpd7219m98357.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/PinePhone.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/VoiceCall.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/DEBUG.md
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/DualCodecs.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA-Capture-value.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-acp.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-analog.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/SOF.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/bdw-rt5677.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/broadwell-rt286.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/broxton-rt298.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/bytcht-cx2072x.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-Components.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-LongName.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/bytcht-es8316.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-Components.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-LongName.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-Components.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-LongName.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/bytcr-rt5651.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/bytcr-wm5102.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/chtmax98090.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/chtnau8824.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/chtrt5645.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/chtrt5650.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/hda-dsp.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/kblrt5660.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/skylake-rt286.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/sof-essx8336.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/sof-glkda7219max.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/sof-hda-dsp.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/mt8192_mt6359_rt1015p_rt5682.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/sof-mt8195-mt6359-rt1019-rt5682.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/mt8195_demo.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/mt8370-evk.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/mt8390-evk.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/mt8395-evk.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HDMI.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/mtk-rt5650.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/Librem 5.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/Librem 5 Devkit.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/FMAnalog.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFiLP.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Pandaboard.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Record.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Voice.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/FMAnalog.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFiLP.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Record.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/SDP4430.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Voice.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/VoiceCall.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/abe-twl6040.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HDMI.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/apq8016-sbc.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HDMI.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/apq8096.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/sc7180-rt5682-max98357a-1mic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/LENOVO-X13s.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/sc8280xp.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HDMI.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/sdm845.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HDMI.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/SM8650-MTP.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/SM8650-QRD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/X1E80100-CRD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/README.md
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/es8316.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/max98090.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/rk3588-es8316.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/rk817-sound.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/snow.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/Record.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/alc5632.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/max98090.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front-Speaker-Headset.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear-Line.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast-Hifi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/USB-Audio.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2-HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cs42l43/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/DisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/da7219/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/MonoSpeaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/hda/hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Headphones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/DMIC1_2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/MonoSpeaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0DisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic1EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1DisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/four-speakers/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/DigitalMics.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN1-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN3-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/MonoSpeaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/AnalogMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HeadphonesEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/DigitalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones-swapped.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN1-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN12-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN3-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/MonoSpeaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC1.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC2.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/MonoSpeaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5682/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt700/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711-sdca/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-dmic/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-sdca/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715-sdca/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic1EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic3EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic4EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic5EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/EnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HPOut2-Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HeadPhones.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN2-HeadsetMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN3-InternalMic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/Speaker.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/SpeakerSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/SpeakerSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/ctl/remap.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct-verb.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked-card.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/pcm/split.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB410c/DB410c.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB820c/DB820c.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/HDA-Intel/HDA-Intel.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SC7180/sc7180-rt5682-max98357a-1mic.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SOF/SOF.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/USB-Audio/USB-Audio.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/VEYRON-I2S/VEYRON-I2S.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp/acp.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3x-es83xx/acp3x-es83xx.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3xalc5682m98/acp3xalc5682m98.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp5x/Valve-Jupiter-1.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp62/acp62.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp63/acp63.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp6x/acp6x.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acpd7219m98357/acpd7219m98357.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bdw-rt5677/bdw-rt5677.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broadwell-rt286/broadwell-rt286.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broxton-rt298/broxton-rt298.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-cx2072x/bytcht-cx2072x.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-es8316/bytcht-es8316.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5640/bytcr-rt5640.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5651/bytcr-rt5651.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-wm5102/bytcr-wm5102.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5672/cht-bsw-rt5672.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtmax98090/chtmax98090.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtnau8824/chtnau8824.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5645/chtrt5645.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5650/chtrt5650.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/GXL-P241.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/LIBRETECH-CC.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/hda-dsp/hda-dsp.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/kblrt5660/kblrt5660.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8192_mt6359/mt8192_mt6359_rt1015p_rt5682.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8195_demo/mt8195_demo.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8365-evk/mt8365-evk.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8370-evk/mt8370-evk.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8390-evk/mt8390-evk.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8395-evk/mt8395-evk.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mtk-rt5650/mtk-rt5650.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3399-gru-soun/rk3399-gru-soun.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3588-es8316/rk3588-es8316.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rockchip_es8316/rockchip_es8316.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sc8280xp/sc8280xp.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/DB845c.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/LENOVO-81JL-LenovoYOGAC630_13Q50-LNVNB161216.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5 Devkit.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/PinePhone.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_ext.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_int.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rockchip,es8316-codec.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/skylake-rt286/skylake-rt286.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-MTP.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-QRD.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-ehl-rt5660/sof-ehl-rt5660.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-essx8336/sof-essx8336.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-glkda7219ma/sof-glkda7219ma.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-hda-dsp.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-skl_hda_card.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-mt8195_r101/sof-mt8195_r1019_5682.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-skl_hda_card
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-soundwire/sof-soundwire.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra-hda/tegra-hda.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/ASUS Google Nexus 7 ALC5642.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Acer Iconia Tab A500 WM8903.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Slider WM8903.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Transformer WM8903.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Infinity TF700T RT5631.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300T WM8903.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TG RT5631.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TL RT5631.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Prime TF201 RT5631.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Compal PAZ00.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBig.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBlaze.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/x1e80100/X1E80100-CRD.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.virt.d/.gitignore
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/card-init.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/ctl-remap.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/generic.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8016_sbc.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8096.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_omap_abe_twl6040.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rk3399_gru_sound.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rockchip_max98090.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_sdm845.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_snow.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_alc5632.conf
create mode 120000 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_max98090.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformDisableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformEnableSeq.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/Hdmi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/HiFi.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs35l56.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43-dmic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/dmic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1308.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1316.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1318.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt5682.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt700.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711-sdca.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-dmic.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-sdca.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715-sdca.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/sof-soundwire.conf
create mode 100644 buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/ucm.conf
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm/README.md b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm/README.md
new file mode 100644
index 00000000..2cbbfd18
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm/README.md
@@ -0,0 +1,5 @@
+Use Case Configuration files v1 syntax
+--------------------------------------
+
+This directory holds old UCM configuration files. The new
+configuration files should be created in the ucm2 tree only.
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/HiFi.conf
new file mode 100644
index 00000000..79179645
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/HiFi.conf
@@ -0,0 +1,88 @@
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ False.SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},${var:DeviceDmic}"
+ CaptureChannels 2
+ }
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # The es8316 only has a HP-amp which is muxed to the speaker
+ # or to the headpones output
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ cset "name='Headset Mic Switch' on"
+ cset "name='Digital Mic Mux' 'dmic disable'"
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ JackControl "Headset Mic Jack"
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/acp3x-es83xx.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/acp3x-es83xx.conf
new file mode 100644
index 00000000..d5645d20
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3x-es83xx/acp3x-es83xx.conf
@@ -0,0 +1,33 @@
+Syntax 6
+
+Define.DeviceDmic "$${find-device:type=pcm,stream=capture,field=id,regex='dmic'}"
+
+BootSequence [
+ # Setup muxes / switches
+ cset "name='Left Headphone Mixer Left DAC Switch' on"
+ cset "name='Right Headphone Mixer Right DAC Switch' on"
+ # Set digital mix mux to "dmic disable"
+ # That doesn't affect dmic, but other values mute headset mic
+ cset "name='Digital Mic Mux' 0"
+
+ # Set HP vol to 0 dB
+ cset "name='Headphone Playback Volume' 100%"
+ cset "name='Headphone Mixer Volume' 100%"
+
+ # Set DAC vol
+ cset "name='DAC Playback Volume' 70%"
+ # LDATA TO LDAC, RDATA TO RDAC
+ cset "name='DAC Source Mux' 0"
+
+ # Disable Auto Level Control
+ cset "name='ALC Capture Switch' off"
+
+ # Set capture vol
+ cset "name='ADC Capture Volume' 70%"
+]
+
+SectionUseCase."HiFi" {
+ File "/AMD/acp3x-es83xx/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/HiFi.conf
new file mode 100644
index 00000000..915d0203
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/HiFi.conf
@@ -0,0 +1,144 @@
+If.jelboz {
+ Condition {
+ Type RegexMatch
+ Regex "^(Jelboz|Jelboz360|Shuboz)$"
+ String "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True.Define.volume 3
+ False.Define.volume 2
+}
+
+SectionVerb {
+ EnableSequence [
+ cset "name='Headphone Jack Switch' off"
+ cset "name='HPOL Playback Switch' off"
+ cset "name='HPOR Playback Switch' off"
+ cset "name='Stereo1 DAC MIXL DAC L1 Switch' 0"
+ cset "name='Stereo1 DAC MIXR DAC R1 Switch' 0"
+ cset "name='Stereo1 ADC L Mux' 0"
+ cset "name='STO1 ADC Capture Switch' on"
+ cset "name='RECMIX1L CBJ Switch' 1"
+ cset "name='IF1 01 ADC Swap Mux' 2"
+ cset "name='CBJ Boost Volume' ${var:volume}"
+ cset "name='Stereo1 ADC L1 Mux' 1"
+ cset "name='Stereo1 ADC R1 Mux' 1"
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' 0"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 1"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 1"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+ Value {
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackPriority 200
+ }
+ EnableSequence [
+ cset "name='Spk Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Spk Switch' off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackPriority 300
+ PlaybackMixerElem "DAC1"
+ JackControl "Headphone Jack"
+ }
+ EnableSequence [
+ cset "name='Headphone Jack Switch' on"
+ cset "name='HPOL Playback Switch' 1"
+ cset "name='HPOR Playback Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='Headphone Jack Switch' off"
+ cset "name='HPOL Playback Switch' 0"
+ cset "name='HPOR Playback Switch' 0"
+ ]
+}
+
+If.1mic {
+ Condition {
+ Type String
+ Empty "${var:1mic}"
+ }
+ True {
+ SectionDevice."Mic1" {
+ Comment "Front Microphone"
+ ConflictingDevice [
+ "Mic2"
+ ]
+ Value {
+ CapturePCM "hw:${CardId},2"
+ CapturePriority 200
+ }
+ EnableSequence [
+ cset "name='Dmic Mux' Front Mic"
+ ]
+ }
+
+ SectionDevice."Mic2" {
+ Comment "Rear Microphone"
+ ConflictingDevice [
+ "Mic1"
+ ]
+ Value {
+ CapturePCM "hw:${CardId},2"
+ CapturePriority 100
+ }
+ EnableSequence [
+ cset "name='Dmic Mux' Rear Mic"
+ ]
+ }
+
+ SectionDevice."Mic3" {
+ Comment "Microphone"
+ Value {
+ CapturePCM "hw:${CardId},0"
+ CapturePriority 300
+ CaptureMixerElem "Headset Mic"
+ JackControl "Headset Mic Jack"
+ }
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+ }
+ }
+ False {
+ SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+ Value {
+ CapturePCM "hw:${CardId},2"
+ CapturePriority 200
+ }
+ EnableSequence [
+ cset "name='Dmic Mux' Front Mic"
+ ]
+ }
+
+ SectionDevice."Mic2" {
+ Comment "Microphone"
+ Value {
+ CapturePCM "hw:${CardId},0"
+ CapturePriority 300
+ CaptureMixerElem "Headset Mic"
+ JackControl "Headset Mic Jack"
+ }
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/acp3xalc5682m98.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/acp3xalc5682m98.conf
new file mode 100644
index 00000000..e1f1c9e2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp3xalc5682m98/acp3xalc5682m98.conf
@@ -0,0 +1,72 @@
+# Based on:
+# https://chromium.googlesource.com/chromiumos/overlays/board-overlays/+/ad560b208139b80e97a7c2d39c7bfea1dcc29da9/overlay-zork/chromeos-base/chromeos-bsp-zork/files/
+# https://chromium.googlesource.com/chromiumos/project/+/f1387fd5f4effe236dd2a8e6e2b8e665eb2a6cfb/zork/
+
+Syntax 4
+
+Define { Found="" 1mic="" }
+
+If.zork {
+ Condition {
+ Type String
+ String1 "Google_Zork"
+ String2 "${sys:devices/virtual/dmi/id/product_family}"
+ }
+ True {
+ If.1mic {
+ Condition {
+ Type RegexMatch
+ Regex "^(Berknip|Dirinboz|Gumboz|Jelboz|Trembyle|Woomax)$"
+ String "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True.Define { Found=y 1mic=y }
+ }
+
+ If.2mic {
+ Condition {
+ Type RegexMatch
+ Regex "^(Dalboz|Ezkinil|Jelboz360|Morphius)$"
+ String "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True.Define.Found y
+ }
+
+ If.shuboz {
+ Condition {
+ Type String
+ String1 "Shuboz"
+ String2 "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True {
+ If.shuboz_jelboz {
+ Condition {
+ Type RegexMatch
+ Regex "^sku(1518731265|1518731266|1518731267|1518731268|1518731269|1518731270|1518731271|1518731272|1518731273|1518731274|1518731275|1518731276|1518731277|1518731278|2147483647)$"
+ String "${sys:devices/virtual/dmi/id/product_sku}"
+ }
+ True.Define { Found=y 1mic=y }
+ }
+
+ If.shuboz_jelboz360 {
+ Condition {
+ Type RegexMatch
+ Regex "^sku(1518862337|1518862338|1518862339|1518862340)$"
+ String "${sys:devices/virtual/dmi/id/product_sku}"
+ }
+ True.Define.Found y
+ }
+ }
+ }
+ }
+}
+
+If.found {
+ Condition {
+ Type String
+ Empty "${var:Found}"
+ }
+ False.SectionUseCase."HiFi" {
+ File "/AMD/acp3xalc5682m98/HiFi.conf"
+ Comment "Default"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/HiFi.conf
new file mode 100644
index 00000000..13d40410
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/HiFi.conf
@@ -0,0 +1,136 @@
+Macro.apcmremap.CtlRemapMonoToStereoVolSw {
+ Type Volume
+ Stereo "Analog PCM"
+ MonoL "Left Analog PCM"
+ MonoR "Right Analog PCM"
+}
+
+Macro.dpcmremap.CtlRemapMonoToStereoVolSw {
+ Type Volume
+ Stereo "Digital PCM"
+ MonoL "Left Digital PCM"
+ MonoR "Right Digital PCM"
+}
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ cset "name='ADC Phase Switch' 1"
+ cset "name='BIQ Coefficients' 0x03,0x5a,0x00,0x06,0xfc,0xac,0x00,0x00,0xfe,0x58,0x00,0x00,0x03,0x50,0x00,0x06,0xfe,0x58,0x00,0x08"
+ cset "name='Left PCM Source' DSP"
+ cset "name='Right PCM Source' DSP"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ JackControl "Headphone Jack"
+ PlaybackMixerElem "Headphone"
+ PlaybackMasterElem "Digital Playback"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Left DSP RX1 Source' ASPRX1"
+ cset "name='Right DSP RX1 Source' ASPRX2"
+ cset "name='Left DSP RX2 Source' ASPRX1"
+ cset "name='Right DSP RX2 Source' ASPRX2"
+ cset "name='Left DSP1 Preload Switch' 1"
+ cset "name='Right DSP1 Preload Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Left DSP RX1 Source' Zero"
+ cset "name='Right DSP RX1 Source' Zero"
+ cset "name='Left DSP RX2 Source' Zero"
+ cset "name='Right DSP RX2 Source' Zero"
+ cset "name='Left DSP1 Preload Switch' 0"
+ cset "name='Right DSP1 Preload Switch' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixerElem "Digital PCM"
+ PlaybackMasterElem "Analog PCM"
+ PlaybackVolume "Digital PCM Volume"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='DMIC Enable Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='DMIC Enable Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},0"
+ CaptureMixerElem "Int Mic"
+ CaptureVolume "Mic Volume"
+ CaptureSwitch "Int Mic Switch"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId},0"
+ CaptureMixerElem "Headset Mic"
+ CaptureVolume "Mic Volume"
+ CaptureSwitch "Headset Mic Switch"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf
new file mode 100644
index 00000000..2e448636
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acp5x/acp5x.conf
@@ -0,0 +1,92 @@
+Syntax 6
+
+Comment "Vangogh internal card"
+
+#
+# Macro CtlRemapMonoToStereoVolSw - join two mono controls into one stereo
+#
+# Arguments:
+# Type - Volume or Switch
+# Stereo - Name of the stereo control to be created
+# MonoL - Name of the mono control to be used as Left channel
+# MonoR - Name of the mono control to be used as Right channel
+#
+DefineMacro.CtlRemapMonoToStereoVolSw {
+ LibraryConfig.remap.Config {
+ ctl.default.map."name='${var:__Stereo} ${var:__Type}'" {
+ "name='${var:__MonoL} ${var:__Type}'".vindex.0 0
+ "name='${var:__MonoR} ${var:__Type}'".vindex.1 0
+ }
+ }
+}
+
+#
+# Currently restricted to Steam Deck hardware.
+#
+If.jupiter {
+ Condition {
+ Type String
+ String1 "Jupiter"
+ String2 "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True {
+ SectionUseCase."HiFi" {
+ File "/AMD/acp5x/HiFi.conf"
+ Comment "Default"
+ }
+
+ BootSequence [
+ cset "name='Digital Playback Volume' 252"
+ cset "name='Left Analog PCM Volume' 17"
+ cset "name='Right Analog PCM Volume' 17"
+ cset "name='Left Digital PCM Volume' 870"
+ cset "name='Right Digital PCM Volume' 870"
+ cset "name='Headphone Volume' 2"
+ cset "name='Digital Playback Volume' 192"
+ cset "name='Mic Volume' 252"
+ cset "name='Frontend PGA Volume' 27"
+ ]
+
+ Include.card-init.File "/lib/card-init.conf"
+ Include.ctl-remap.File "/lib/ctl-remap.conf"
+ }
+}
+
+#
+# Currently restricted to Steam Deck OLED hardware.
+#
+If.galileo {
+ Condition {
+ Type String
+ String1 "Galileo"
+ String2 "${sys:devices/virtual/dmi/id/product_name}"
+ }
+ True {
+ SectionUseCase."HiFi" {
+ If.upstream {
+ Condition {
+ Type ControlExists
+ Control "name='Left Analog PCM Volume'"
+ }
+ True.File "HiFi-upstream.conf"
+ False.File "HiFi.conf"
+ }
+ Comment "Default"
+ }
+
+ BootSequence [
+ cset "name='Digital Playback Volume' 252"
+ cset "name='Left Analog PCM Volume' 17"
+ cset "name='Right Analog PCM Volume' 17"
+ cset "name='Left Digital PCM Volume' 870"
+ cset "name='Right Digital PCM Volume' 870"
+ cset "name='Headphone Volume' 2"
+ cset "name='Digital Playback Volume' 192"
+ cset "name='Mic Volume' 252"
+ cset "name='Frontend PGA Volume' 27"
+ ]
+
+ Include.card-init.File "/lib/card-init.conf"
+ Include.ctl-remap.File "/lib/ctl-remap.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/HiFi.conf
new file mode 100644
index 00000000..8b2985d7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/HiFi.conf
@@ -0,0 +1,53 @@
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixerElem "Headphone"
+ JackControl "Headphone Jack"
+ }
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ CaptureMixerElem "Headset Mic"
+ JackControl "Headset Mic Jack"
+ }
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='Mic Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='Mic Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/acpd7219m98357.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/acpd7219m98357.conf
new file mode 100644
index 00000000..14126dd6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/AMD/acpd7219m98357/acpd7219m98357.conf
@@ -0,0 +1,8 @@
+Syntax 6
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Default"
+}
+
+Include.codec-init.File "/codecs/da7219/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/HiFi.conf
new file mode 100644
index 00000000..83c5c430
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/HiFi.conf
@@ -0,0 +1,109 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='AIF2 Digital DAC Playback Switch' off"
+ cset "name='AIF2 ADC Mixer ADC Capture Switch' off"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Internal speaker"
+ EnableSequence [
+ cset "name='Line Out Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line Out Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackMixerElem "Line Out"
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Earpiece" {
+ Comment "Internal Earpiece"
+
+ EnableSequence [
+ cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono"
+ cset "name='Earpiece Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Earpiece Playback Switch' off"
+ cset "name='AIF1 DA0 Stereo Playback Route' Stereo"
+ ]
+
+ Value {
+ PlaybackMixerElem "Earpiece"
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Mic1 Capture Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic1 Capture Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},0"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "Mic1 Capture Switch"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Mic2 Capture Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic2 Capture Switch' off"
+ ]
+
+ Value {
+ CapturePriority 500
+ CapturePCM "hw:${CardId},0"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "Mic2 Capture Switch"
+ JackControl "Headset Microphone Jack"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackMixerElem "Headphone"
+ PlaybackPriority 500
+ PlaybackPCM "hw:${CardId},0"
+ JackControl "Headphone Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/PinePhone.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/PinePhone.conf
new file mode 100644
index 00000000..d2967180
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/PinePhone.conf
@@ -0,0 +1,74 @@
+Syntax 2
+
+# To understand (or propose bug reports) for the different
+# parts of these configuration files, see:
+# https://www.alsa-project.org/alsa-doc/alsa-lib/group__ucm__conf.html
+
+# PinePhone-specific audio card structure help:
+# https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2%20Released%20Schematic.pdf
+# https://xnux.eu/devices/feature/audio-pp.html
+
+# General PinePhone help:
+# https://wiki.pine64.org/index.php/PinePhone
+
+SectionUseCase."HiFi" {
+ File "/Allwinner/A64/PinePhone/HiFi.conf"
+ Comment "Play HiFi quality music"
+}
+
+SectionUseCase."Voice Call" {
+ File "/Allwinner/A64/PinePhone/VoiceCall.conf"
+ Comment "Make a phone call"
+}
+
+FixedBootSequence [
+ # Routing.
+ cset "name='ADC Digital DAC Playback Switch' off"
+ cset "name='AIF1 DA0 Stereo Playback Route' Stereo"
+ cset "name='AIF1 Data Digital ADC Capture Switch' on"
+ cset "name='AIF1 Slot 0 Digital DAC Playback Switch' on"
+ cset "name='AIF2 DAC Source Playback Route' AIF2"
+ # AIF2 (Modem) is mono.
+ cset "name='AIF2 DAC Stereo Playback Route' Mix Mono"
+ cset "name='AIF3 ADC Source Capture Route' None"
+ cset "name='DAC Playback Switch' on"
+ # Routes DACR->MIXL and DACL->MIXR => MIXL are MIXR are identical mono-mix of the DAC.
+ cset "name='DAC Reversed Playback Switch' on"
+ cset "name='Earpiece Source Playback Route' Left Mixer"
+ cset "name='Headphone Source Playback Route' DAC"
+ # The Pinephone speaker is mono.
+ cset "name='Line Out Source Playback Route' Mono Differential"
+]
+
+BootSequence [
+ # Playback volumes.
+ cset "name='AIF1 DA0 Playback Volume' 160"
+ cset "name='AIF2 DAC Playback Volume' 160"
+ cset "name='DAC Playback Volume' 160"
+ cset "name='Earpiece Playback Volume' 100%"
+ cset "name='Headphone Playback Volume' 70%"
+ cset "name='Line Out Playback Volume' 100%"
+ cset "name='Mic2 Boost Volume' 1"
+
+ # Capture volumes.
+ cset "name='ADC Capture Volume' 160"
+ cset "name='AIF1 AD0 Capture Volume' 160"
+ cset "name='AIF2 ADC Capture Volume' 160"
+]
+
+SectionDefaults [
+ # Switch playback off.
+ cset "name='Earpiece Playback Switch' off"
+ cset "name='Headphone Playback Switch' off"
+ cset "name='Line In Playback Switch' off"
+ cset "name='Line Out Playback Switch' off"
+ cset "name='Mic1 Playback Switch' off"
+ cset "name='Mic2 Playback Switch' off"
+
+ # Switch capture off.
+ cset "name='Line In Capture Switch' off"
+ cset "name='Mic1 Capture Switch' off"
+ cset "name='Mic2 Capture Switch' off"
+ cset "name='Mixer Capture Switch' off"
+ cset "name='Mixer Reversed Capture Switch' off"
+]
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/VoiceCall.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/VoiceCall.conf
new file mode 100644
index 00000000..2b6f50d5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Allwinner/A64/PinePhone/VoiceCall.conf
@@ -0,0 +1,115 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='AIF2 Digital DAC Playback Switch' on"
+ cset "name='AIF2 ADC Mixer ADC Capture Switch' on"
+ cset "name='AIF2 ADC Stereo Capture Route' Mix Mono"
+ ]
+
+ Value {
+ PlaybackRate 8000
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Internal speaker"
+
+ EnableSequence [
+ cset "name='Line Out Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line Out Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackMixerElem "Line Out"
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Earpiece" {
+ Comment "Internal Earpiece"
+
+ EnableSequence [
+ cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono"
+ cset "name='Earpiece Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Earpiece Playback Switch' off"
+ cset "name='AIF1 DA0 Stereo Playback Route' Stereo"
+ ]
+
+ Value {
+ PlaybackMixerElem "Earpiece"
+ PlaybackPriority 500
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Mic1 Capture Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic1 Capture Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},0"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "Mic1 Capture Switch"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Mic2 Capture Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic2 Capture Switch' off"
+ ]
+
+ Value {
+ CapturePriority 500
+ CapturePCM "hw:${CardId},0"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "Mic2 Capture Switch"
+ JackControl "Headset Microphone Jack"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackMixerElem "Headphone"
+ PlaybackPriority 500
+ PlaybackPCM "hw:${CardId},0"
+ JackControl "Headphone Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241-HiFi.conf
new file mode 100644
index 00000000..056116ee
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241-HiFi.conf
@@ -0,0 +1,40 @@
+SectionDevice."Line" {
+ Comment "Analog Lineout"
+
+ EnableSequence [
+ cset "name='AIU ACODEC SRC' I2S"
+ cset "name='AIU ACODEC OUT EN Switch' 1"
+ cset "name='ACODEC Playback Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='ACODEC Playback Switch' 0"
+ cset "name='AIU ACODEC OUT EN Switch' 0"
+ cset "name='AIU ACODEC SRC' DISABLED"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackChannels 2
+ PlaybackVolume "ACODEC Playback Volume"
+ PlaybackMixerElem "ACODEC"
+ }
+}
+
+SectionDevice."HDMI" {
+ Comment "HDMI"
+
+ EnableSequence [
+ cset "name='AIU HDMI CTRL SRC' I2S"
+ ]
+
+ DisableSequence [
+ cset "name='AIU HDMI CTRL SRC' DISABLED"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241.conf
new file mode 100644
index 00000000..b6f4010e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Amlogic/p241/p241.conf
@@ -0,0 +1,31 @@
+# Use case for the p241 Amlogic s805x reference design
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Amlogic/p241/p241-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+FixedBootSequence [
+ cset "name='AIU SPDIF SRC SEL' SPDIF"
+]
+
+BootSequence [
+ cset "name='AIU ACODEC I2S Lane Select' 0"
+ cset "name='ACODEC Playback Channel Mode' Stereo"
+ cset "name='ACODEC Playback Volume' 80%"
+ cset "name='ACODEC Ramp Rate' Fast"
+ cset "name='ACODEC Volume Ramp Switch' on"
+ cset "name='ACODEC Mute Ramp Switch' on"
+ cset "name='ACODEC Unmute Ramp Switch' on"
+ cset "name='ACODEC Right DAC Sel' Right"
+ cset "name='ACODEC Left DAC Sel' Left"
+]
+
+SectionDefaults [
+ cset "name='ACODEC Playback Switch' off"
+ cset "name='AIU ACODEC OUT EN Switch' off"
+ cset "name='AIU ACODEC SRC' DISABLED"
+ cset "name='AIU HDMI CTRL SRC' DISABLED"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/DEBUG.md b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/DEBUG.md
new file mode 100644
index 00000000..662b46fa
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/DEBUG.md
@@ -0,0 +1,121 @@
+Overview
+--------
+
+UCM works on top of the standard ALSA subsystem. If there is something
+missing or non-working, it usually means that UCM describes the devices
+and required control sequences in an incomplete or a wrong way.
+
+It is not required to be a developer to test your hardware.
+
+Use latest UCM configuration
+----------------------------
+
+The archive can be obtained from
+https://github.com/alsa-project/alsa-ucm-conf/archive/refs/heads/master.tar.gz
+or fetched from github https://github.com/alsa-project/alsa-ucm-conf .
+
+The default path for ucm2 configuration is `/usr/share/alsa/ucm2`. This
+path may be redirected temporary to the latest configuration tree like:
+
+````
+mv /usr/share/alsa/ucm2 /usr/share/alsa/ucm2.distro
+ln -s /NEW/UCM2/TREE/PATH /usr/share/alsa/ucm2
+````
+
+It is necessary to restart pulseaudio or pipewire to use the new ucm2
+configuration.
+
+The configuration revert is simple:
+
+````
+rm /usr/share/alsa/ucm2
+mv /usr/share/alsa/ucm2.distro /usr/share/alsa/ucm2
+````
+
+Useful commands and tools
+-------------------------
+
+````
+alsa-info.sh --no-upload # dump the system / ALSA state information
+aplay -l # dump playback ALSA cards and PCM devices
+arecord -l # dump capture ALSA cards and PCM devices
+amixer -c 0 contents # dump all controls for the ALSA card (zero = card number)
+amixer -c 0 events # dump events for controls (zero = card number)
+ # useful for Jack detection
+amixer -c 0 scontents # dump simple mixer controls for the ALSA card (zero = card number)
+alsamixer -c 0 # set native ALSA mixer (zero = card number)
+speaker-test -c hw:CARD=0,DEV=0 # playback test
+arecord -D hw:CARD=0,DEV=0 -f dat -vvv a.wav # capture test
+alsaucm -c hw:0 dump text # dump the UCM configuration (zero = card number)
+spa-acp-tool -vvv -c 0 # pipewire audio profile test tool (zero = card number)
+````
+
+The components for the UCM device
+---------------------------------
+
+1) ALSA PCM device
+2) ALSA Jack control name (optional, if available - for the presence detection)
+3) Simple mixer control name (optional, if available - for the hardware volume control)
+
+Example of the UCM configuration:
+
+````
+Value {
+ PlaybackPCM "hw:${CardId},0" # equivalent to hw:0,0 (for the first sound card)
+ JackControl "Speakers Jack" # should be in 'amixer -c 0 contents' dump
+ PlaybackMixerElem "Speaker" # Speaker bar should be in 'alsamixer -c 0'
+}
+````
+
+Checking of the corresponding ALSA PCM device
+---------------------------------------------
+
+Use `aplay -l` or `capture -l` to list the PCM devices in the system. Pick
+the device numbers for the tested ALSA soundcard and substitute those values
+for the playback test (`speaker-test -c hw:CARD=0,DEV=0`) and capture test
+(`arecord -D hw:CARD=0,DEV=0 -f dat -vvv a.wav`) commands.
+
+Note: If a sound server is running, it should be suspended (see
+`man pasuspender` for an example or manage appropriate services or
+sockets using systemd - systemctl).
+
+Checking of the corresponding ALSA Jack control
+-----------------------------------------------
+
+Use `amixer -c 0 events` (replace zero with the corresponding ALSA card
+number) command and watch '??? Jack' control changes when you plug and
+unplug the correspoding sound equipment to the tested physical jack.
+
+Checking of the corresponding simple mixer name
+-----------------------------------------------
+
+Use `alsamixer -c 0` (replace zero with the corresponding ALSA card
+number) command and try to find the corresponding bar which controls the
+volume when the PCM device is active. It is recommended to open the
+alsamixer tool in a separate terminal window and do the PCM tests in
+another.
+
+Testing changes in the UCM configuration
+----------------------------------------
+
+The sound server must be restarted to reload the UCM configuration. For
+PipeWire, the command `systemctl --user restart wireplumber` is sufficient.
+
+To check the configuration syntax, use `alsaucm -c hw:0 dump text` command
+(replace zero with the corresponding ALSA card number). This command should
+not return an error.
+
+Notes
+-----
+
+Some special hardware (mostly from the ASoC /ALSA SoC/ tree) may require
+special ALSA control initialization sequences. In this case, the driver
+developers should provide the hints.
+
+The `_ucmXXXX.` prefixes in the UCM dumps are referring the private
+ALSA device names - to test those devices, just remove this prefix. It
+will not work for special devices defined only in UCM configuration files.
+If you like to test this special alsa-lib configuration, you may dump the
+alsa-lib configuration using `alsaucm -c hw:0 get _alibcfg` and put the
+configuration to `~/.asoundrc` for example.
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/DualCodecs.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/DualCodecs.conf
new file mode 100644
index 00000000..fb2bdd1b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/DualCodecs.conf
@@ -0,0 +1,15 @@
+Comment "HDAudio with dual HD-audio codecs"
+SectionUseCase."HiFi" {
+ File "/HDA/DualCodecs/HiFi.conf"
+ Comment "Default"
+}
+
+Include.init1.File "/HDA/init.conf"
+
+BootSequence [
+ cset "name='Front Playback Volume' 100%"
+ cset "name='Front Playback Switch' on"
+ cset "name='Rear-Panel Capture Volume' 100%"
+ cset "name='Rear-Panel Capture Switch' on"
+ cset "name='Input Source' 'Rear Mic'"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf
new file mode 100644
index 00000000..8c0f403b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf
@@ -0,0 +1,160 @@
+SectionVerb {
+ Value {
+ TQ "HiFi"
+ }
+
+ EnableSequence [
+ cset "name='Front Playback Switch' off"
+ cset "name='Rear-Panel Capture Switch' off"
+ cset "name='Headphone Playback Switch' off"
+ ]
+
+ DisableSequence [
+ cset "name='Front Playback Switch' off"
+ cset "name='Front-Panel Capture Switch' off"
+ cset "name='Rear-Panel Capture Switch' off"
+ ]
+}
+
+If.speaker {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Switch'"
+ }
+ True {
+ SectionVerb {
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ ]
+ }
+
+ SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},4"
+ PlaybackMixerElem "Speaker"
+ }
+
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ ]
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+ }
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ If.0 {
+ Condition {
+ Type ControlExists
+ Control "name='Front Playback Switch'"
+ }
+ True.Value.PlaybackMixerElem "Front"
+ }
+ # make S/PDIF output working when no analog jacks are connected
+ If.speaker {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Switch'"
+ }
+ True.If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='Line Out Front Jack'"
+ }
+ True.Value.JackControl "Line Out Front Jack"
+ False.Value.JackControl "Line Out Jack"
+ }
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},4"
+ PlaybackMixerElem "Headphone"
+ JackControl "Front Headphone Jack"
+ }
+
+ If.speaker {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Switch'"
+ }
+ True.Value.JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Rear Line In"
+
+ ConflictingDevice [
+ "Mic2"
+ ]
+
+ EnableSequence [
+ cset "name='Input Source' Line"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "Rear-Panel"
+ CaptureMasterElem "Line Boost"
+ JackControl "Line Jack"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Rear Microphone"
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "Rear-Panel"
+ CaptureMasterElem "Rear Mic Boost"
+ JackHWMute "Line2"
+ JackControl "Rear Mic Jack"
+ }
+
+ EnableSequence [
+ cset "name='Input Source' 'Rear Mic'"
+ ]
+}
+
+SectionDevice."Mic1" {
+ Comment "Front Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ CaptureMixerElem "Front-Panel"
+ CaptureMasterElem "Front Mic Boost"
+ JackControl "Front Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA-Capture-value.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA-Capture-value.conf
new file mode 100644
index 00000000..2f1316ab
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA-Capture-value.conf
@@ -0,0 +1,4 @@
+CapturePCM "hw:${CardId}"
+CaptureMixerElem "Capture"
+CaptureVolume "Capture Volume"
+CaptureSwitch "Capture Switch"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA.conf
new file mode 100644
index 00000000..83f3db22
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HDA.conf
@@ -0,0 +1,71 @@
+Syntax 6
+
+Define.Use "" # a non-empty string to use UCM configuration for HDA devices
+Define.Done "" # a non-empty string to skip the end error
+
+Define.AcpCardId "$${find-card:field=name,return=id,regex='^acp(|6[23x])$'}"
+Define.DeviceMic "Mic"
+
+If.dualcodec {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "DualCodecs"
+ }
+ True {
+ Define.Done y
+ Define.AcpCardId ""
+ Include.dual.File "/HDA/DualCodecs/DualCodecs.conf"
+ }
+}
+
+If.acp {
+ Condition {
+ Type String
+ Empty "${var:AcpCardId}"
+ }
+ False {
+ Define.Use y
+ Define.DeviceMic "Mic2"
+ }
+}
+
+If.use {
+ Condition {
+ Type String
+ Empty "${var:Use}"
+ }
+ False {
+ Define.Done y
+
+ SectionUseCase."HiFi" {
+ File "/HDA/HiFi.conf"
+ Comment "Play HiFi quality Music"
+ }
+
+ If.analog {
+ Condition {
+ Type ControlExists
+ Control "name='Master Playback Switch'"
+ }
+ True {
+ Include.init.File "/HDA/init.conf"
+
+ FixedBootSequence [
+ cset-new "name='Mic ACP LED Capture Switch' type=bool,count=1 off"
+ exec "-/sbin/modprobe snd_ctl_led"
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/attach:Mic ACP LED Capture Switch"
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/detach:Capture Switch"
+ ]
+ }
+ }
+ }
+}
+
+If.err {
+ Condition {
+ Type String
+ Empty "${var:Done}"
+ }
+ True.Error "UCM is not supported for this HDA model (${CardLongName})"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/Hdmi.conf
new file mode 100644
index 00000000..e24c3c56
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/Hdmi.conf
@@ -0,0 +1,57 @@
+# HDA HDMI devices
+
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi1 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 1
+ Device 3
+ Priority 1100
+ }
+}
+
+If.hdmi2 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi2.HDMI {
+ Number 2
+ Device 7
+ Priority 1200
+ }
+}
+
+If.hdmi3 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi3.HDMI {
+ Number 3
+ Device 8
+ Priority 1300
+ }
+}
+
+If.hdmi4 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi4.HDMI {
+ Number 4
+ Device 9
+ Priority 1400
+ }
+}
+
+If.hdmi5 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi5.HDMI {
+ Number 5
+ Device 10
+ Priority 1500
+ }
+}
+
+If.hdmi6 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi5.HDMI {
+ Number 6
+ Device 11
+ Priority 1600
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-acp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-acp.conf
new file mode 100644
index 00000000..a650f5cf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-acp.conf
@@ -0,0 +1,10 @@
+SectionDevice."Mic1" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${var:AcpCardId}"
+ CaptureMixerElem "Mic ACP LED"
+ CaptureSwitch "Mic ACP LED Capture Switch"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-analog.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-analog.conf
new file mode 100644
index 00000000..3c96f5d7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi-analog.conf
@@ -0,0 +1,327 @@
+# Generic HDA devices for analog I/O
+
+Define.FrontMicName ""
+Define.FrontMicJack ""
+Define.DeviceFrontMic ""
+Define.LineDevice ""
+Define.hpvol "Headphone"
+Define.hpjack "Headphone Jack"
+Define.loctl "Line"
+Define.lovol "Line"
+
+If.imicname {
+ Condition {
+ Type ControlExists
+ Control "name='Internal Mic Boost Volume'"
+ }
+ True.Define {
+ FrontMicName "Internal"
+ }
+}
+
+If.fmicname {
+ Condition {
+ Type ControlExists
+ Control "name='Front Mic Playback Switch'"
+ }
+ True.Define {
+ FrontMicName "Front"
+ FrontMicJack "Front Mic Jack"
+ }
+}
+
+If.fmic {
+ Condition {
+ Type String
+ Empty "${var:FrontMicName}"
+ }
+ False {
+ If.mic2 {
+ Condition {
+ Type String
+ String1 "${var:DeviceMic}"
+ String2 "Mic2"
+ }
+ True.Define {
+ DeviceFrontMic "Mic3"
+ }
+ False.Define {
+ DeviceMic "Mic1"
+ DeviceFrontMic "Mic2"
+ }
+ }
+ }
+}
+
+If.lineout {
+ Condition {
+ Type ControlExists
+ Control "name='Line Out Playback Volume'"
+ }
+ True.Define {
+ loctl "Line Out"
+ lovol "Line Out"
+ }
+}
+
+If.linefront {
+ Condition {
+ Type ControlExists
+ Control "name='Front Playback Volume'"
+ }
+ True.Define {
+ LineDevice "1"
+ }
+}
+
+If.hplo {
+ Condition {
+ Type ControlExists
+ Control "name='Headphone+LO Playback Volume'"
+ }
+ True.Define {
+ hpvol "Headphone+LO"
+ lovol "Headphone+LO"
+ }
+}
+
+If.hpjack {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='Headphone Mic Jack'"
+ }
+ True.Define.hpjack "Headphone Mic Jack"
+ False.If.front {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='Front Headphone Jack'"
+ }
+ True.Define.hpjack "Front Headphone Jack"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ If.headphone_switch {
+ Condition {
+ Type ControlExists
+ Control "name='Headphone Playback Switch'"
+ }
+ True {
+ EnableSequence [
+ cset "name='Headphone Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headphone Playback Switch' off"
+ ]
+ }
+ }
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "${var:hpvol}"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "${var:hpvol} Playback Volume"
+ PlaybackSwitch "Headphone Playback Switch"
+ JackControl "${var:hpjack}"
+ }
+}
+
+If.spk {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Switch'"
+ }
+ True.SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ If.seq {
+ Condition {
+ Type ControlExists
+ Control "name='Bass Speaker Playback Switch'"
+ }
+ True {
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Bass Speaker Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ cset "name='Bass Speaker Playback Switch' off"
+ ]
+ }
+ False {
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ ]
+ }
+ }
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Speaker"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Speaker Playback Volume"
+ PlaybackSwitch "Speaker Playback Switch"
+ }
+ }
+}
+
+If.monomic {
+ Condition {
+ Type ControlExists
+ Control "name='Input Source'"
+ ControlEnum "Headphone Mic"
+ }
+ True {
+ SectionDevice."${var:DeviceMic}" {
+ Comment "Headphones Stereo Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Input Source' 'Headphone Mic'"
+ ]
+
+ Value {
+ CapturePriority 200
+ Include.value.File "/HDA/HDA-Capture-value.conf"
+ CaptureMasterElem "Headphone Mic Boost"
+ JackControl "Headphone Mic Jack"
+ }
+ }
+
+ SectionDevice."Headset" {
+ Comment "Headset Mono Microphone"
+
+ EnableSequence [
+ cset "name='Input Source' 'Headset Mic'"
+ ]
+
+ Value {
+ CapturePriority 300
+ Include.value.File "/HDA/HDA-Capture-value.conf"
+ CaptureMasterElem "Headset Mic Boost"
+ JackControl "Headphone Mic Jack"
+ }
+ }
+ }
+ False {
+ SectionDevice."${var:DeviceMic}" {
+ Comment "Headphones Stereo Microphone"
+
+ Value {
+ CapturePriority 200
+ Include.value.File "/HDA/HDA-Capture-value.conf"
+ CaptureMasterElem "Mic Boost"
+ JackControl "Mic Jack"
+ }
+ }
+ }
+}
+
+If.frontmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceFrontMic}"
+ }
+ False.SectionDevice."${var:DeviceFrontMic}" {
+ Comment "${var:FrontMicName} Stereo Microphone"
+
+ ConflictingDevice [
+ "${var:DeviceMic}"
+ ]
+
+ Value {
+ CapturePriority 400
+ Include.value.File "/HDA/HDA-Capture-value.conf"
+ CaptureMasterElem "${var:FrontMicName} Mic Boost"
+ }
+ If.jack {
+ Condition {
+ Type String
+ Empty "${var:FrontMicJack}"
+ }
+ False.Value.JackControl "${var:FrontMicJack}"
+ }
+ }
+}
+
+If.line {
+ Condition {
+ Type ControlExists
+ Control "name='${var:loctl} Playback Switch'"
+ }
+ True.SectionDevice."Line${var:LineDevice}" {
+ Comment "Line Output"
+
+ If.conflict {
+ Condition {
+ Type String
+ String1 "${var:lovol}"
+ String2 "Headphone+LO"
+ }
+ True.ConflictingDevice [
+ "Headphones"
+ ]
+ }
+
+ EnableSequence [
+ cset "name='${var:loctl} Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='${var:loctl} Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "${var:lovol}"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "${var:lovol} Playback Volume"
+ PlaybackSwitch "${var:loctl} Playback Switch"
+ JackControl "${var:loctl} Jack"
+ }
+ }
+}
+
+If.linefront {
+ Condition {
+ Type ControlExists
+ Control "name='Front Playback Switch'"
+ }
+ True.SectionDevice."Line2" {
+ Comment "Second Line Output"
+
+ ConflictingDevice [
+ "Line${var:LineDevice}"
+ ]
+
+ EnableSequence [
+ cset "name='Front Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Front Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 250
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Front"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Front Playback Volume"
+ PlaybackSwitch "Front Playback Switch"
+ JackControl "Line Out Front Jack"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi.conf
new file mode 100644
index 00000000..9e567f69
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/HiFi.conf
@@ -0,0 +1,34 @@
+# Use case Configuration for sof-hda-dsp
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+If.analog {
+ Condition {
+ Type ControlExists
+ Control "name='Master Playback Switch'"
+ }
+ True {
+ If.acp {
+ Condition {
+ Type String
+ Empty "${var:AcpCardId}"
+ }
+ True.Include.analog.File "/HDA/HiFi-analog.conf"
+ False.Include {
+ acp.File "/HDA/HiFi-acp.conf"
+ analog.File "/HDA/HiFi-analog.conf"
+ }
+ }
+ }
+}
+
+If.hdmi {
+ Condition { Type String Empty "" }
+ True.Include.hdmi.File "/HDA/Hdmi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/init.conf
new file mode 100644
index 00000000..a190e981
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/HDA/init.conf
@@ -0,0 +1,52 @@
+If.amute {
+ Condition {
+ Type ControlExists
+ Control "name='Auto-Mute Mode'"
+ }
+ True.BootSequence [
+ cset "name='Auto-Mute Mode' off"
+ ]
+}
+
+If.master {
+ Condition {
+ Type ControlExists
+ Control "name='Master Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Master Playback Volume' 60%"
+ cset "name='Master Playback Switch' on"
+ ]
+}
+
+If.speaker {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Speaker Playback Volume' 60%"
+ cset "name='Speaker Playback Switch' off"
+ ]
+}
+
+If.headphone {
+ Condition {
+ Type ControlExists
+ Control "name='Headphone Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Headphone Playback Volume' 60%"
+ cset "name='Headphone Playback Switch' off"
+ ]
+}
+
+If.capture {
+ Condition {
+ Type ControlExists
+ Control "name='Capture Volume'"
+ }
+ True.BootSequence [
+ cset "name='Capture Volume' 60%"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/HiFi.conf
new file mode 100644
index 00000000..f43906d8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/HiFi.conf
@@ -0,0 +1,116 @@
+If.bytcht_rt5640 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht rt5640"
+ }
+ True {
+ Include.init.File "/codecs/rt5640/init.conf"
+ Include.main.File "/Intel/bytcr-rt5640/HiFi.conf"
+ }
+}
+
+If.bytcht_rt5651 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht rt5651"
+ }
+ True {
+ Include.init.File "/codecs/rt5651/init.conf"
+ Include.main.File "/Intel/bytcr-rt5651/HiFi.conf"
+ }
+}
+
+If.bytcht_cx2072x {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht cx2072x"
+ }
+ True.Include.main.File "/Intel/bytcht-cx2072x/HiFi.conf"
+}
+
+If.bytcht_es8316 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht es8316"
+ }
+ True.Include.main.File "/Intel/bytcht-es8316/HiFi.conf"
+}
+
+If.bytcht_rt5672 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht rt5672"
+ }
+ True.Include.main.File "/Intel/cht-bsw-rt5672/HiFi.conf"
+}
+
+If.bytcht_nau8824 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht nau8824"
+ }
+ True.Include.main.File "/Intel/chtnau8824/HiFi.conf"
+}
+
+If.bytcht_rt5645 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht rt5645"
+ }
+ True {
+ Include.init.File "/codecs/rt5645/init.conf"
+ Include.main.File "/Intel/chtrt5645/HiFi.conf"
+ }
+}
+
+If.bytcht_rt5650 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht rt5650"
+ }
+ True.Include.main.File "/Intel/chtrt5650/HiFi.conf"
+}
+
+If.bytcht_max98090 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht max98090"
+ }
+ True.Include.main.File "/Intel/chtmax98090/HiFi.conf"
+}
+
+If.bytcht_wm5102 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bytcht wm5102"
+ }
+ True.Include.main.File "/Intel/bytcr-wm5102/HiFi.conf"
+}
+
+If.bdw_rt286 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bdw rt286"
+ }
+ True.Include.main.File "/Intel/broadwell-rt286/HiFi.conf"
+}
+
+If.bdw_rt5677 {
+ Condition {
+ Type String
+ Haystack "${CardName}"
+ Needle "bdw rt5677"
+ }
+ True.Include.main.File "/Intel/bdw-rt5677/HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/SOF.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/SOF.conf
new file mode 100644
index 00000000..4e976f47
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/SOF/SOF.conf
@@ -0,0 +1,9 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Intel/SOF/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/HiFi.conf
new file mode 100644
index 00000000..eba0f23b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/HiFi.conf
@@ -0,0 +1,187 @@
+# Use case Configuration for bdw-rt5677
+# command-line sequence to switch playback/capture
+# alsaucm -c bdw-rt5677 set _verb HiFi
+# alsaucm -c bdw-rt5677 set _verb HiFi set _enadev Headphones
+
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='IN1 Boost'" "name='IN1 Boost Capture Volume'"
+ "name='IN2 Boost'" "name='IN2 Boost Capture Volume'"
+ }
+
+}
+
+SectionVerb {
+
+ EnableSequence [
+
+ cset "name='PDM1 L Mux' STO1 DAC MIX"
+ cset "name='PDM1 R Mux' STO1 DAC MIX"
+
+ # Adjust Master Playback volume if needed
+ # cset "name='Master Playback Volume' 30"
+
+ cset "name='OUT1 Playback Switch' off"
+ cset "name='OUT2 Playback Switch' off"
+
+ cset "name='DAC1 Playback Volume' 175"
+ cset "name='DAC2 Playback Volume' 175"
+ cset "name='DAC12 SRC Mux' STO1 DAC MIX"
+
+ cset "name='Stereo DAC MIXL ST L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC2 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' on"
+
+ cset "name='Stereo DAC MIXR ST R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC2 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' on"
+
+ cset "name='DAC1 MIXL Stereo ADC Switch' off"
+ cset "name='DAC1 MIXL DAC1 Switch' on"
+
+ cset "name='DAC1 MIXR Stereo ADC Switch' off"
+ cset "name='DAC1 MIXR DAC1 Switch' on"
+
+ cset "name='DAC1 Mux' IF1 DAC 01"
+
+ cset "name='Stereo1 DMIC Mux' DMIC1"
+ cset "name='Stereo1 ADC2 Mux' DMIC"
+ cset "name='Stereo1 ADC1 Mux' ADC1/2"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+
+ cset "name='IF1 ADC1 Mux' STO1 ADC MIX"
+ cset "name='IF1 ADC1 Swap Mux' L/R"
+
+ # Adjust Mic Capture Volume if needed
+ # cset "name='Mic Capture Volume' 30"
+
+ cset "name='ADC1 Capture Switch' on"
+ cset "name='ADC1 Capture Volume' 31"
+ cset "name='STO1 ADC Boost Volume' 2"
+
+ cset "name='Headphone Switch' off"
+ cset "name='Speaker Switch' on"
+
+ cset "name='Remote DMICs Switch' on"
+ cset "name='Mono DMIC L Mux' DMIC1"
+ cset "name='Mono ADC2 L Mux' DMIC"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC2 Switch' on"
+ cset "name='VAD ADC Mux' MONO ADC MIX L"
+ cset "name='IB01 Mux' VAD ADC/DAC1 FS"
+ cset "name='IB01 Bypass Mux' Bypass"
+ cset "name='Mono ADC Boost Volume' 2"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' on"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' on"
+ cset "name='OUT1 Playback Switch' on"
+ cset "name='OUT2 Playback Switch' on"
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='OUT1 Playback Switch' off"
+ cset "name='OUT2 Playback Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' on"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Local DMICs Switch' off"
+
+ cset "name='IF1 ADC1 Swap Mux' L/L"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Headset Mic Switch' off"
+
+ cset "name='IF1 ADC1 Swap Mux' L/R"
+
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ cset "name='Local DMICs Switch' on"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/bdw-rt5677.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/bdw-rt5677.conf
new file mode 100644
index 00000000..be63db23
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bdw-rt5677/bdw-rt5677.conf
@@ -0,0 +1,9 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Intel/bdw-rt5677/HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/HiFi.conf
new file mode 100644
index 00000000..1da92110
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/HiFi.conf
@@ -0,0 +1,102 @@
+# Use case Configuration for broadwell-rt286
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='SPO Switch' on"
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Speaker Playback Switch' off"
+ cset "name='SPO Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "DAC0"
+ PlaybackMasterElem "Master"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HPO L Switch' on"
+ cset "name='HPO R Switch' on"
+ cset "name='Headphone Jack Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Jack Switch' off"
+ cset "name='HPO L Switch' off"
+ cset "name='HPO R Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "DAC0"
+ PlaybackMasterElem "Master"
+ JackDev "rt286-jack"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='ADC 0 Mux' 2"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC0"
+ CaptureMasterElem "Mic"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='ADC 0 Mux' 0"
+ cset "name='AMIC Volume' 3"
+ ]
+
+ DisableSequence [
+ cset "name='AMIC Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC0"
+ CaptureMasterElem "Mic"
+ JackDev "rt286-jack"
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/broadwell-rt286.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/broadwell-rt286.conf
new file mode 100644
index 00000000..34676cbf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broadwell-rt286/broadwell-rt286.conf
@@ -0,0 +1,6 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "/Intel/broadwell-rt286/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/Hdmi.conf
new file mode 100644
index 00000000..fc64fe77
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/Hdmi.conf
@@ -0,0 +1,43 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel SKYLAKE/KABYLAKE platforms
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},4"
+ PlaybackPriority 500
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=4 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=4 Jack"
+ }
+ }
+ }
+}
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},5"
+ PlaybackPriority 600
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=5 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=5 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/HiFi.conf
new file mode 100644
index 00000000..d858637f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/HiFi.conf
@@ -0,0 +1,112 @@
+# Usecase for stereo playback Speaker and Headset, Recording on DMIC and Headset MIC.
+# For Audio in I2S mode on Intel Broxton platforms
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='SPO Switch' 1"
+ cset "name='Speaker Playback Switch' 1,1"
+ cset "name='Speaker Switch' 1"
+ cset "name='HPO L Switch' 0"
+ cset "name='HPO R Switch' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HPO L Switch' 1"
+ cset "name='HPO R Switch' 1"
+ cset "name='Headphone Jack Switch' 1"
+ cset "name='Speaker Playback Switch' 0,0"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 0"
+ cset "name='Mic Jack Switch' 0"
+
+ ]
+
+ DisableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='ADC 0 Mux' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='ADC0 Capture Volume' 105,105"
+ cset "name='ADC 0 Mux' 0"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 0"
+ ]
+
+ DisableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Mic Jack"
+ }
+}
+
+Include.hdmi.File "/Intel/broxton-rt298/Hdmi.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/broxton-rt298.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/broxton-rt298.conf
new file mode 100644
index 00000000..0d73bc5e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/broxton-rt298/broxton-rt298.conf
@@ -0,0 +1,41 @@
+# UCM for Intel Broxton platforms
+# For Audio in I2S mode
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/broxton-rt298/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+
+SectionDefaults [
+ cset "name='Headphone Jack Switch' 1"
+ cset "name='Speaker Switch' 1"
+ cset "name='Speaker Playback Switch' 0,0"
+ cset "name='Front DAC Switch' 1"
+ cset "name='Front RECMIX Switch' 0"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='ADC 0 Mux' 2"
+ cset "name='ADC 1 Mux' 0"
+ cset "name='DAC0 Playback Volume' 100,100"
+ cset "name='HPO L Switch' 0"
+ cset "name='HPO Mux' 0"
+ cset "name='HPO R Switch' 0"
+ cset "name='Pin 5 Mux' 1"
+ cset "name='Pin 6 Mux' 2"
+ cset "name='Pin 7 Mux' 3"
+ cset "name='RECMIX Beep Switch' 0"
+ cset "name='RECMIX Line1 Switch' 0"
+ cset "name='RECMIX Mic1 Switch' 0"
+ cset "name='SPK Mux' 0"
+ cset "name='SPO Switch' 1"
+ cset "name='codec0_out mo codec0_in mi Switch' 0"
+ cset "name='codec0_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='codec0_out mo media0_in mi Switch' 1"
+ cset "name='codec1_out mo codec0_in mi Switch' 0"
+ cset "name='codec1_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='codec1_out mo media0_in mi Switch' 0"
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo media0_in mi Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/HiFi.conf
new file mode 100644
index 00000000..bf4ed117
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/HiFi.conf
@@ -0,0 +1,23 @@
+SectionVerb {
+
+ Include.e.File "/codecs/cx2072x/EnableSeq.conf"
+ Include.d.File "/codecs/cx2072x/DisableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+Include.spk.File "/codecs/cx2072x/Speaker.conf"
+Include.hp.File "/codecs/cx2072x/HeadPhones.conf"
+
+Include.imic.File "/codecs/cx2072x/InternalMic.conf"
+Include.hsmic.File "/codecs/cx2072x/HeadsetMic.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/bytcht-cx2072x.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/bytcht-cx2072x.conf
new file mode 100644
index 00000000..e4b05c93
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-cx2072x/bytcht-cx2072x.conf
@@ -0,0 +1,6 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/bytcht-cx2072x/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-Components.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-Components.conf
new file mode 100644
index 00000000..825ba5cc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-Components.conf
@@ -0,0 +1,43 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:2"
+ }
+ True.Include.spk.File "/codecs/es8316/Speaker.conf"
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:1"
+ }
+ True.Include.mspk.File "/codecs/es8316/MonoSpeaker.conf"
+}
+
+Include.hs.File "/codecs/es8316/HeadPhones.conf"
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in1"
+ }
+ True {
+ Include.mic.File "/codecs/es8316/IN1-InternalMic.conf"
+ Include.hsmic.File "/codecs/es8316/IN2-HeadsetMic.conf"
+ }
+}
+
+If.in2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in2"
+ }
+ True {
+ Include.hsmic.File "/codecs/es8316/IN1-HeadsetMic.conf"
+ Include.mic.File "/codecs/es8316/IN2-InternalMic.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-LongName.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-LongName.conf
new file mode 100644
index 00000000..ed88aff7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi-LongName.conf
@@ -0,0 +1,43 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-stereo-spk"
+ }
+ True.Include.spk.File "/codecs/es8316/Speaker.conf"
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-mono-spk"
+ }
+ True.Include.mspk.File "/codecs/es8316/MonoSpeaker.conf"
+}
+
+Include.hs.File "/codecs/es8316/HeadPhones.conf"
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in1-mic"
+ }
+ True {
+ Include.mic.File "/codecs/es8316/IN1-InternalMic.conf"
+ Include.hsmic.File "/codecs/es8316/IN2-HeadsetMic.conf"
+ }
+}
+
+If.in2 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in2-mic"
+ }
+ True {
+ Include.hsmic.File "/codecs/es8316/IN1-HeadsetMic.conf"
+ Include.mic.File "/codecs/es8316/IN2-InternalMic.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi.conf
new file mode 100644
index 00000000..2cf179e9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/HiFi.conf
@@ -0,0 +1,25 @@
+SectionVerb {
+ Include.e.File "/codecs/es8316/EnableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+If.0 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:"
+ }
+ True.Include.comp.File "/Intel/bytcht-es8316/HiFi-Components.conf"
+ False.Include.long.File "/Intel/bytcht-es8316/HiFi-LongName.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/bytcht-es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/bytcht-es8316.conf
new file mode 100644
index 00000000..3a1b979a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcht-es8316/bytcht-es8316.conf
@@ -0,0 +1,6 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/bytcht-es8316/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-Components.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-Components.conf
new file mode 100644
index 00000000..ae5fd05b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-Components.conf
@@ -0,0 +1,77 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:2"
+ }
+ True.Define.HaveSpeaker "2"
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:1"
+ }
+ True.Define.HaveSpeaker "1"
+}
+
+If.hp2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-hp2:lineout"
+ }
+ True.Define.HaveHeadPhones2 "yes"
+}
+
+If.dmic1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:dmic1"
+ }
+ True {
+ Define.HaveInternalMic "dmic"
+ Define.StereoADC2Mux "DMIC1"
+ }
+}
+
+If.dmic2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:dmic2"
+ }
+ True {
+ Define.HaveInternalMic "dmic"
+ Define.StereoADC2Mux "DMIC2"
+ }
+}
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in1"
+ }
+ True.Define.HaveInternalMic "in1"
+}
+
+If.in3 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in3"
+ }
+ True.Define.HaveInternalMic "in3"
+}
+
+If.hs2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-hs2:in1"
+ }
+ True.Define.HaveHeadsetMic2 "in1"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-LongName.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-LongName.conf
new file mode 100644
index 00000000..b2fb471d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi-LongName.conf
@@ -0,0 +1,47 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-stereo-spk"
+ }
+ True.Define.HaveSpeaker "2"
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-mono-spk"
+ }
+ True.Define.HaveSpeaker "1"
+}
+
+If.dmic1 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-dmic1-mic"
+ }
+ True {
+ Define.HaveInternalMic "dmic"
+ Define.StereoADC2Mux "DMIC1"
+ }
+}
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in1-mic"
+ }
+ True.Define.HaveInternalMic "in1"
+}
+
+If.in3 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in3-mic"
+ }
+ True.Define.HaveInternalMic "in3"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi.conf
new file mode 100644
index 00000000..fd1906cb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/HiFi.conf
@@ -0,0 +1,237 @@
+# Use case Configuration for bytcr-rt5640
+
+Define.HaveAif ""
+Define.HaveSpeaker ""
+Define.HaveHeadPhones2 ""
+Define.HaveInternalMic ""
+Define.HaveHeadsetMic "yes"
+Define.HaveHeadsetMic2 ""
+Define.StereoADC2Mux "DMIC1"
+
+If.DefineAif1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "aif:1"
+ }
+ True.Define.HaveAif "1"
+}
+
+If.DefineAif2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "aif:2"
+ }
+ True.Define.HaveAif "2"
+}
+
+If.0 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:"
+ }
+ True.Include.comp.File "/Intel/bytcr-rt5640/HiFi-Components.conf"
+ False.Include.long.File "/Intel/bytcr-rt5640/HiFi-LongName.conf"
+}
+
+SectionVerb {
+ Include.e.File "/codecs/rt5640/EnableSeq.conf"
+
+ EnableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+If.spk {
+ Condition {
+ Type String
+ Haystack "${var:HaveSpeaker}"
+ Needle "2"
+ }
+ True {
+ Include.spk.File "/codecs/rt5640/Speaker.conf"
+
+ SectionDevice."Speaker" {
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+ }
+ }
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${var:HaveSpeaker}"
+ Needle "1"
+ }
+ True {
+ Include.mspk.File "/codecs/rt5640/MonoSpeaker.conf"
+
+ SectionDevice."Speaker" {
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+ }
+ }
+}
+
+If.hp {
+ Condition { Type String Empty "" }
+ True {
+ Include.hs.File "/codecs/rt5640/HeadPhones.conf"
+
+ SectionDevice."Headphones" {
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+ }
+ }
+}
+
+If.hp2 {
+ Condition { Type String Empty "${var:HaveHeadPhones2}" }
+ False {
+ Include.hs.File "/codecs/rt5640/HeadPhones2.conf"
+
+ SectionDevice."Headphones2" {
+ EnableSequence [
+ cset "name='Line Out Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line Out Switch' off"
+ ]
+ }
+ }
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Haystack "${var:HaveInternalMic}"
+ Needle "dmic"
+ }
+ True {
+ Include.dmic.File "/codecs/rt5640/DigitalMics.conf"
+
+ SectionDevice."Mic" {
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+ }
+ }
+}
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${var:HaveInternalMic}"
+ Needle "in1"
+ }
+ True {
+ Include.mic1.File "/codecs/rt5640/IN1-InternalMic.conf"
+
+ SectionDevice."Mic" {
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+ }
+ }
+}
+
+If.in3 {
+ Condition {
+ Type String
+ Haystack "${var:HaveInternalMic}"
+ Needle "in3"
+ }
+ True {
+ Include.mic3.File "/codecs/rt5640/IN3-InternalMic.conf"
+
+ SectionDevice."Mic" {
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+ }
+ }
+}
+
+If.hsmic {
+ Condition { Type String Empty "" }
+ True {
+ Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf"
+
+ SectionDevice."Headset" {
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+ }
+ }
+}
+
+If.hsmic2 {
+ Condition {
+ Type String
+ Haystack "${var:HaveHeadsetMic2}"
+ Needle "in1"
+ }
+ True {
+ Include.hsmic.File "/codecs/rt5640/HeadsetMic2-IN1.conf"
+
+ SectionDevice."Headset2" {
+ EnableSequence [
+ cset "name='Headset Mic 2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic 2 Switch' off"
+ ]
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf
new file mode 100644
index 00000000..13a73adf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5640/bytcr-rt5640.conf
@@ -0,0 +1,16 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Intel/bytcr-rt5640/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/rt5640/init.conf"
+
+FixedBootSequence [
+ exec "-/sbin/modprobe snd_ctl_led"
+ sysw "-/class/sound/ctl-led/speaker/card${CardNumber}/attach:Speaker Channel Switch"
+ sysw "-/class/sound/ctl-led/speaker/card${CardNumber}/attach:HP Channel Switch"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-Components.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-Components.conf
new file mode 100644
index 00000000..3584a4e6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-Components.conf
@@ -0,0 +1,85 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:2"
+ }
+ True {
+ Include.spk.File "/codecs/rt5651/Speaker.conf"
+ }
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:1"
+ }
+ True {
+ Include.mspk.File "/codecs/rt5651/MonoSpeaker.conf"
+ }
+}
+
+If.headphones {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-hp:lrswap"
+ }
+ True {
+ Include.hp.File "/codecs/rt5651/HeadPhones-swapped.conf"
+ }
+ False {
+ Include.hp.File "/codecs/rt5651/HeadPhones.conf"
+ }
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:dmic"
+ }
+ True {
+ Include.dmic.File "/codecs/rt5651/DigitalMic.conf"
+ Include.hsmic.File "/codecs/rt5651/IN2-HeadsetMic.conf"
+ SectionDevice."Mic".ConflictingDevice.0 "Headset"
+ }
+ False {
+ Include.hsmic.File "/codecs/rt5651/IN3-HeadsetMic.conf"
+ }
+}
+
+If.in2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in2"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN2-InternalMic.conf"
+ }
+}
+
+If.in12 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in12"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN12-InternalMic.conf"
+ }
+ False {
+ If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:in1"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN1-InternalMic.conf"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-LongName.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-LongName.conf
new file mode 100644
index 00000000..436106db
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi-LongName.conf
@@ -0,0 +1,83 @@
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-stereo-spk"
+ }
+ True {
+ Include.spk.File "/codecs/rt5651/Speaker.conf"
+ }
+}
+
+If.mono {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-mono-spk"
+ }
+ True {
+ Include.mspk.File "/codecs/rt5651/MonoSpeaker.conf"
+ }
+}
+
+If.headphones {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-mic-hp-swapped"
+ }
+ True {
+ Include.hp.File "/codecs/rt5651/HeadPhones-swapped.conf"
+ }
+ False {
+ Include.hp.File "/codecs/rt5651/HeadPhones.conf"
+ }
+}
+
+If.dmic1 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-dmic1-mic"
+ }
+ True {
+ Include.dmic.File "/codecs/rt5651/DigitalMic.conf"
+ Include.hsmic.File "/codecs/rt5651/IN2-HeadsetMic.conf"
+ }
+ False {
+ Include.hsmic.File "/codecs/rt5651/IN3-HeadsetMic.conf"
+ }
+}
+
+If.in1 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in1-mic"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN1-InternalMic.conf"
+ }
+}
+
+If.in2 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in2-mic"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN2-InternalMic.conf"
+ }
+}
+
+If.in12 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "-in12-mic"
+ }
+ True {
+ Include.mic.File "/codecs/rt5651/IN12-InternalMic.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi.conf
new file mode 100644
index 00000000..6908d445
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/HiFi.conf
@@ -0,0 +1,33 @@
+# Adapted from https://github.com/plbossart/UCM/tree/master/bytcr-rt5651
+
+
+SectionVerb {
+
+ Include.e.File "/codecs/rt5651/EnableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+If.0 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:"
+ }
+ True {
+ Include.comp.File "/Intel/bytcr-rt5651/HiFi-Components.conf"
+ }
+ False {
+ Include.long.File "/Intel/bytcr-rt5651/HiFi-LongName.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/bytcr-rt5651.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/bytcr-rt5651.conf
new file mode 100644
index 00000000..81bead72
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-rt5651/bytcr-rt5651.conf
@@ -0,0 +1,12 @@
+# Adapted from https://github.com/plbossart/UCM/tree/master/bytcr-rt5651
+
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Intel/bytcr-rt5651/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/rt5651/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/HiFi.conf
new file mode 100644
index 00000000..46ef7d11
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/HiFi.conf
@@ -0,0 +1,54 @@
+SectionVerb {
+
+ Value {
+ TQ "HiFi"
+ }
+
+ Include.e.File "/codecs/wm5102/EnableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ True {
+ Include.pe {
+ File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Before.EnableSequence "0"
+ }
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+If.spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:hpout2"
+ }
+ True.Include.hpout2.File "/codecs/wm5102/HPOut2-Speaker.conf"
+ False.Include.spk.File "/codecs/wm5102/Speaker.conf"
+}
+
+Include.hp.File "/codecs/wm5102/HeadPhones.conf"
+
+If.intmic {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-intmic:in1l"
+ }
+ True.Include.intmic1.File "/codecs/wm5102/IN1-InternalMic.conf"
+ False.Include.intmic3.File "/codecs/wm5102/IN3-InternalMic.conf"
+}
+
+If.hsmic {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-hsmic:in2l"
+ }
+ True.Include.hsmic2.File "/codecs/wm5102/IN2-HeadsetMic.conf"
+ False.Include.hsmic1.File "/codecs/wm5102/IN1-HeadsetMic.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/bytcr-wm5102.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/bytcr-wm5102.conf
new file mode 100644
index 00000000..ba1c2b6d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/bytcr-wm5102/bytcr-wm5102.conf
@@ -0,0 +1,6 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/bytcr-wm5102/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/HiFi.conf
new file mode 100644
index 00000000..41828efd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/HiFi.conf
@@ -0,0 +1,155 @@
+# Adapted from https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
+
+Define.Speaker "yes"
+Define.Headphones "yes"
+Define.MonoSpeaker "yes"
+Define.DigitalMic1 "yes"
+Define.DigitalMic2 "yes"
+Define.HeadsetMic "yes"
+
+# Figure out which components are in use on the device, we check both the
+# components string (present on newer kernels) as well as checking for DMI
+# strings for compatibility with older kernels. Note DMI matches for new
+# models should only be added to the kernel, this UCM profile will then
+# automatically pick up the info from the components string.
+
+If.components-stereo-spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:2"
+ }
+ True.Define.MonoSpeaker ""
+}
+
+If.components-dmic1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:dmic1"
+ }
+ True.Define.DigitalMic2 ""
+}
+
+If.components-dmic2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-mic:dmic2"
+ }
+ True.Define.DigitalMic1 ""
+}
+
+If.dmi-dmic1 {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(LENOVO.*LenovoMiix210)|(LENOVO.*ThinkPad10)"
+ }
+ True {
+ Define.MonoSpeaker ""
+ Define.DigitalMic2 ""
+ }
+}
+
+If.dmi-dmic2 {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(LENOVO.*ThinkPad8)"
+ }
+ True {
+ Define.MonoSpeaker ""
+ Define.DigitalMic1 ""
+ }
+}
+
+SectionVerb {
+ Include.e.File "/codecs/rt5672/EnableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+If.spk {
+ Condition {
+ Type String
+ Empty "${var:Speaker}"
+ }
+ False.Include.spk.File "/codecs/rt5672/Speaker.conf"
+}
+
+If.mspk {
+ Condition {
+ Type String
+ Empty "${var:MonoSpeaker}"
+ }
+ True {
+ RenameDevice."Speaker1" "Speaker"
+ RemoveDevice."Speaker2" "Speaker2"
+ }
+ False.Include.mspk.File "/codecs/rt5672/MonoSpeaker.conf"
+}
+
+If.hp {
+ Condition {
+ Type String
+ Empty "${var:Headphones}"
+ }
+ #True.RemoveDevice."Headphones" "Headphones"
+ False.Include.hp.File "/codecs/rt5672/HeadPhones.conf"
+}
+
+If.dmic1 {
+ Condition {
+ Type String
+ Empty "${var:DigitalMic1}"
+ }
+ True.RemoveDevice."Mic1" "Mic1"
+ False {
+ Include.dmic1.File "/codecs/rt5672/DMIC1.conf"
+ If.dmic2 {
+ Condition {
+ Type "String"
+ Empty "${var:DigitalMic2}"
+ }
+ True.RenameDevice."Mic1" "Mic"
+ }
+ }
+}
+
+If.dmic2 {
+ Condition {
+ Type String
+ Empty "${var:DigitalMic2}"
+ }
+ True.RemoveDevice."Mic2" "Mic2"
+ False {
+ Include.dmic2.File "/codecs/rt5672/DMIC2.conf"
+ If.dmic1 {
+ Condition {
+ Type "String"
+ Empty "${var:DigitalMic1}"
+ }
+ True.RenameDevice."Mic2" "Mic"
+ }
+ }
+}
+
+If.hsmic {
+ Condition {
+ Type String
+ Empty "${var:HeadsetMic}"
+ }
+ #True.RemoveDevice."Headset" "Headset"
+ False.Include.hsmic.File "/codecs/rt5672/HeadsetMic.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf
new file mode 100644
index 00000000..426facc8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf
@@ -0,0 +1,14 @@
+# Adapted from https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/cht-bsw-rt5672/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+FixedBootSequence [
+ exec "-/sbin/modprobe snd_ctl_led"
+ sysw "-/class/sound/ctl-led/speaker/card${CardNumber}/attach:DAC1 Playback Switch"
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/attach:ADC Capture Switch"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/HiFi.conf
new file mode 100644
index 00000000..d7f69a91
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/HiFi.conf
@@ -0,0 +1,36 @@
+SectionVerb {
+ Value {
+ TQ "HiFi"
+ }
+
+ Include.e.File "/codecs/max98090/EnableSeq.conf"
+
+ If.platform {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True.Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ }
+
+ If.Quawks {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "GOOGLE-Quawks-1.0"
+ }
+ True {
+ EnableSequence [
+ # volume values modified
+ cset "name='Headphone Volume' 25"
+ cset "name='Speaker Volume' 32"
+ ]
+ }
+ }
+}
+
+Include.hs.File "/codecs/max98090/Headphones.conf"
+Include.spk.File "/codecs/max98090/Speaker.conf"
+Include.mic.File "/codecs/max98090/InternalMic.conf"
+Include.hsmic.File "/codecs/max98090/HeadsetMic.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/chtmax98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/chtmax98090.conf
new file mode 100644
index 00000000..da5966ee
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtmax98090/chtmax98090.conf
@@ -0,0 +1,5 @@
+Syntax 3
+SectionUseCase."HiFi" {
+ File "/Intel/chtmax98090/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/HiFi.conf
new file mode 100644
index 00000000..1a1faf40
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/HiFi.conf
@@ -0,0 +1,90 @@
+Define.Speaker "Speaker"
+Define.Mic "InternalMic"
+Define.SST "yes"
+Define.RightOutputChannel 1
+
+If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ False {
+ Define.SST ""
+ Define.RightOutputChannel 0
+ }
+}
+
+# Figure out which components are in use on the device, we check both the
+# components string (present on newer kernels) as well as checking for DMI
+# strings for compatibility with older kernels. Note DMI matches for new
+# models should only be added to the kernel, this UCM profile will then
+# automatically pick up the info from the components string.
+
+If.components-mono-spk {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-spk:1"
+ }
+ True.Define.Speaker "MonoSpeaker"
+}
+
+If.cfg-mspk {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(cube-i1_TF|PIPO-W2S)"
+ }
+ True {
+ Define.Speaker "MonoSpeaker"
+ }
+}
+
+If.cfg-mic {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ # Medion E22??T models put DMIC in their product version
+ # when using DMICs
+ Regex "(MEDION-E22..T.*-DMIC-)"
+ }
+ True {
+ Define.Mic "DMIC1_2"
+ }
+}
+
+SectionVerb {
+
+ Value {
+ TQ "HiFi"
+ }
+
+ Include.e.File "/codecs/nau8824/EnableSeq.conf"
+
+ If.SST {
+ Condition {
+ Type String
+ Empty "${var:SST}"
+ }
+ False {
+ Include.pe {
+ File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Before.EnableSequence "0"
+ }
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+# The includes using $vars in there path must be conditional otherwise the
+# $var gets expanded before the other If-s above can change the vars.
+If.cfg-includes {
+ Condition { Type String Empty "" }
+ True {
+ Include.spk.File "/codecs/nau8824/${var:Speaker}.conf"
+ Include.hp.File "/codecs/nau8824/HeadPhones.conf"
+
+ Include.mic.File "/codecs/nau8824/${var:Mic}.conf"
+ Include.hsmic.File "/codecs/nau8824/HeadsetMic.conf"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/chtnau8824.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/chtnau8824.conf
new file mode 100644
index 00000000..5bca6d16
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtnau8824/chtnau8824.conf
@@ -0,0 +1,8 @@
+Syntax 3
+
+Comment "chtnau8824 internal card"
+
+SectionUseCase."HiFi" {
+ File "/Intel/chtnau8824/HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/HiFi.conf
new file mode 100644
index 00000000..30fad501
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/HiFi.conf
@@ -0,0 +1,208 @@
+Define.MonoSpeaker ""
+Define.AnalogMic "yes"
+Define.DigitalMic ""
+
+If.cfg-dmic1 {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(ASUSTeK.*T100HAN|ASUSTeK.*T101HA)"
+ }
+ True {
+ Define.AnalogMic ""
+ Define.DigitalMic "DMIC1"
+ }
+}
+
+If.cfg-dmic2 {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(LENOVO.*LenovoMIIX320|MEDION.*Wingman|Standard-EF20EA-1.0)"
+ }
+ True {
+ Define.AnalogMic ""
+ Define.DigitalMic "DMIC2"
+ }
+}
+
+If.cfg-mspk {
+ Condition {
+ Type RegexMatch
+ String "${CardLongName}"
+ Regex "(gpd-win-pocket-rt5645|TECLAST-X80Pro)"
+ }
+ True {
+ Define.MonoSpeaker "yes"
+ }
+}
+
+SectionVerb {
+ # ALSA PCM
+ Value {
+ TQ "HiFi"
+ }
+
+ Include.ce.File "/codecs/rt5645/EnableSeq.conf"
+ Include.cd.File "/codecs/rt5645/DisableSeq.conf"
+
+ EnableSequence [
+ cset "name='Stereo1 ADC1 Mux' 1"
+ cset "name='I2S2 Func Switch' on"
+ # 3/12 the headphone mic tends to be quite loud
+ cset "name='IN1 Boost' 3"
+ # 8/8 the internal analog mic tends to be quite soft
+ cset "name='IN2 Boost' 8"
+ ]
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ Include.e.File "/codecs/rt5645/SpeakerEnableSeq.conf"
+
+ If.mspk {
+ Condition {
+ Type String
+ Empty "${var:MonoSpeaker}"
+ }
+ False {
+ EnableSequence [
+ # Monospeaker: Mix right to left
+ cset "name='Stereo DAC MIXL DAC R1 Switch' 1"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' 0"
+ ]
+ DisableSequence [
+ # Undo monospeaker mixing
+ cset "name='Stereo DAC MIXL DAC R1 Switch' 0"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' 1"
+ ]
+ }
+ }
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ cset "name='Speaker Channel Switch' off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ Include.e.File "/codecs/rt5645/HeadphonesEnableSeq.conf"
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='Headphone Channel Switch' off"
+ ]
+}
+
+If.amic {
+ Condition {
+ Type String
+ Empty "${var:AnalogMic}"
+ }
+ Before.SectionDevice "Headset"
+ False.Include.amic.File "/codecs/rt5645/AnalogMic.conf"
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DigitalMic}"
+ }
+ Before.SectionDevice "Headset"
+ False {
+ SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+
+ Include.e.File "/codecs/rt5645/DigitalMicEnableSeq.conf"
+ Include.d.File "/codecs/rt5645/DigitalMicDisableSeq.conf"
+
+ EnableSequence [
+ cset "name='Stereo1 ADC2 Mux' DMIC"
+ cset "name='Mono ADC L2 Mux' DMIC"
+ cset "name='Mono ADC R2 Mux' DMIC"
+ ]
+
+ If.dmic2 {
+ Condition {
+ Type String
+ String1 "${var:DigitalMic}"
+ String2 "DMIC1"
+ }
+ True {
+ EnableSequence [
+ cset "name='Stereo1 DMIC Mux' DMIC1"
+ ]
+ }
+ False {
+ EnableSequence [
+ cset "name='Stereo1 DMIC Mux' DMIC2"
+ cset "name='Mono DMIC L Mux' DMIC2"
+ cset "name='Mono DMIC R Mux' DMIC2"
+ ]
+ }
+ }
+ }
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+
+ Include.e.File "/codecs/rt5645/HSMicEnableSeq.conf"
+ Include.d.File "/codecs/rt5645/HSMicDisableSeq.conf"
+
+ EnableSequence [
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC2 Switch' off"
+ cset "name='Mono ADC MIXR ADC2 Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/chtrt5645.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/chtrt5645.conf
new file mode 100644
index 00000000..babec879
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5645/chtrt5645.conf
@@ -0,0 +1,11 @@
+Syntax 4
+Comment "Intel SoC Audio Device"
+
+SectionUseCase."HiFi" {
+ File "/Intel/chtrt5645/HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/rt5645/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/HiFi.conf
new file mode 100644
index 00000000..66bf2855
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/HiFi.conf
@@ -0,0 +1,116 @@
+
+SectionVerb {
+ # ALSA PCM
+ Value {
+ TQ "HiFi"
+ }
+
+ Include.e.File "/codecs/rt5645/EnableSeq.conf"
+ Include.d.File "/codecs/rt5645/DisableSeq.conf"
+
+ If.Controls {
+ Condition {
+ Type ControlExists
+ Control "name='media0_in Gain 0 Switch'"
+ }
+ Before.EnableSequence "0"
+ True {
+ Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf"
+ Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf"
+ }
+ }
+
+ EnableSequence [
+ cset "name='Speaker HWEQ' 1,164,237,135,1,165,0,0,1,166,237,135,1,167,0,0,1,192,30,196,1,193,0,0,1,194,30,196,1,195,0,0,1,196,31,180,1,197,0,75,1,198,31,180,1,199,31,180,1,200,0,75,1,201,31,180,0,177,51,224"
+ cset "name='DAC1 Playback Volume' 77,77"
+ cset "name='Speaker ClassD Playback Volume' 4"
+ cset "name='I2S2 Func Switch' off"
+ cset "name='RT5650 IF1 ADC Mux' 0"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackPriority 100
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ Include.spk.File "/codecs/rt5645/SpeakerEnableSeq.conf"
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ cset "name='Speaker Channel Switch' off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackPriority 200
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ Include.hse.File "/codecs/rt5645/HeadphonesEnableSeq.conf"
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='Headphone Channel Switch' off"
+ ]
+}
+
+SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 100
+ }
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Int Mic Switch' off"
+ ]
+}
+
+SectionDevice."Mic2" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 200
+ JackControl "Headset Mic Jack"
+ JackHWMute "Mic1"
+ }
+
+ Include.hsmice.File "/codecs/rt5645/HSMicEnableSeq.conf"
+
+ EnableSequence [
+ cset "name='IN1 Boost' 1"
+ ]
+
+ Include.hsmicd.File "/codecs/rt5645/HSMicDisableSeq.conf"
+
+ DisableSequence [
+ cset "name='IN1 Boost' 0"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/chtrt5650.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/chtrt5650.conf
new file mode 100644
index 00000000..cd2f962e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/chtrt5650/chtrt5650.conf
@@ -0,0 +1,6 @@
+Comment "Intel SoC Audio Device"
+Syntax 3
+SectionUseCase."HiFi" {
+ File "/Intel/chtrt5650/HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi1.conf
new file mode 100644
index 00000000..08fa5ddf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi1.conf
@@ -0,0 +1,24 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel cAVS platforms
+# For Audio in HDA mode
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},10"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=17 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=17 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=17 Jack"
+ }
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi2.conf
new file mode 100644
index 00000000..eb168eac
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/Hdmi2.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI2/Display Port stereo playback on Intel cAVS platforms
+# For Audio in HDA mode
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPriority 400
+ PlaybackPCM "hw:${CardId},11"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=18 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=18 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=18 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/HiFi.conf
new file mode 100644
index 00000000..312dfd31
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/HiFi.conf
@@ -0,0 +1,96 @@
+# Usecase for stereo playback Speaker and Headset, Recording on DMIC and Headset MIC.
+# For Audio in HDA mode on Intel cAVS platforms
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' 1,1"
+ cset "name='Speaker Playback Switch' 0,0"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},7"
+ PlaybackMixerElem "Headphone"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Headphone Playback Volume"
+ PlaybackSwitch "Headphone Playback Switch"
+ JackControl "Front Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' 0,0"
+ cset "name='Speaker Playback Switch' 1,1"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},7"
+ PlaybackMixerElem "Speaker"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Speaker Playback Volume"
+ PlaybackSwitch "Speaker Playback Switch"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},7"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},13"
+ }
+}
+
+Include.hdmi1.File "/Intel/hda-dsp/Hdmi1.conf"
+Include.hdmi2.File "/Intel/hda-dsp/Hdmi2.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/hda-dsp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/hda-dsp.conf
new file mode 100644
index 00000000..899be2b5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/hda-dsp/hda-dsp.conf
@@ -0,0 +1,16 @@
+# UCM for Intel CAVS platforms
+# For Audio in HDA and DMIC mode
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/hda-dsp/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionDefaults [
+ cset "name='Master Playback Switch' 1"
+ cset "name='codec0_out mo media0_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi1.conf
new file mode 100644
index 00000000..561946f1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi1.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel KABYLAKE platforms
+# For Audio in I2S mode
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},2"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=4 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=4 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi2.conf
new file mode 100644
index 00000000..756a3464
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/Hdmi2.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel KABYLAKE platforms
+# For Audio in I2S mode
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},3"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=5 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=5 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/HiFi.conf
new file mode 100644
index 00000000..2a54253d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/HiFi.conf
@@ -0,0 +1,77 @@
+# UCM for Intel Kabylake platforms with RT5660
+# For Audio in I2S mode
+
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='IN1 Boost Volume'" "name='IN1 Boost Capture Volume'"
+ "name='IN2 Boost Volume'" "name='IN2 Boost Capture Volume'"
+ "name='IN3 Boost Volume'" "name='IN3 Boost Capture Volume'"
+ "name='STO1 ADC Boost Gain Volume'" "name='STO1 ADC Boost Capture Volume'"
+ }
+
+}
+
+SectionDevice."Line1" {
+ Comment "Line playback"
+
+ EnableSequence [
+ cset "name='DAC1 Playback Volume' 30"
+ cset "name='OUT Playback Volume' 19"
+ cset "name='OUT Playback Switch' on"
+ cset "name='codec0_out mo media0_in mi Switch' on"
+ cset "name='DAC1 MIXL DAC1 Switch' on"
+ cset "name='DAC1 MIXR DAC1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC L1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='LOUT MIX DAC Switch' on"
+ cset "name='Line Out Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line Out Switch' off"
+ cset "name='DAC1 MIXL DAC1' off"
+ cset "name='DAC1 MIXR DAC1' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackDev "rt5660-jack"
+ JackControl "Line Out Jack"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line capture"
+
+ EnableSequence [
+ cset "name='ADC Capture Volume' 30"
+ cset "name='IN1 Boost Volume' 30"
+ cset "name='IN2 Boost Volume' 30"
+ cset "name='STO1 ADC Boost Gain Volume' 1"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' on"
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' off"
+ cset "name='Line In Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='media0_out mo codec0_in mi Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line In Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ JackDev "rt5660-jack"
+ JackControl "Line In Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/kblrt5660.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/kblrt5660.conf
new file mode 100644
index 00000000..edf491db
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/kblrt5660/kblrt5660.conf
@@ -0,0 +1,19 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Intel/kblrt5660/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionUseCase."Hdmi1" {
+ File "/Intel/kblrt5660/Hdmi1.conf"
+ Comment "Play on Hdmi/DP 1"
+}
+
+SectionUseCase."Hdmi2" {
+ File "/Intel/kblrt5660/Hdmi2.conf"
+ Comment "Play on Hdmi/DP 2"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi1.conf
new file mode 100644
index 00000000..5a569434
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi1.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel SKYLAKE/KABYLAKE platforms
+# For Audio in I2S mode
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},4"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=4 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=4 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi2.conf
new file mode 100644
index 00000000..d2780b6d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/Hdmi2.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI2/Display Port stereo playback on Intel SKYLAKE/KABYLAKE platforms
+# For Audio in I2S mode
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPriority 400
+ PlaybackPCM "hw:${CardId},5"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=5 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=5 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/HiFi.conf
new file mode 100644
index 00000000..dfc73c1a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/HiFi.conf
@@ -0,0 +1,112 @@
+# Usecase for stereo playback Speaker and Headset, Recording on DMIC and Headset MIC.
+# For Audio in I2S mode on Intel SKYLAKE/KABYLAKE platforms
+
+SectionVerb {
+ EnableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HPO L Switch' 1"
+ cset "name='HPO R Switch' 1"
+ cset "name='Headphone Jack Switch' 1"
+ cset "name='Speaker Playback Switch' 0,0"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='SPO Switch' 1"
+ cset "name='Speaker Playback Switch' 1,1"
+ cset "name='Speaker Switch' 1"
+ cset "name='HPO L Switch' 0"
+ cset "name='HPO R Switch' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+ EnableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='ADC0 Capture Switch' 1,1"
+ cset "name='ADC 0 Mux' 0"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 0"
+ ]
+
+ DisableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 0"
+ ]
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Mic Jack"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Digital Stereo Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 0"
+ cset "name='ADC0 Capture Switch' 0,0"
+ cset "name='Mic Jack Switch' 0"
+ cset "name='ADC 0 Mux' 0"
+
+ ]
+
+ DisableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='ADC0 Capture Switch' 1,1"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='ADC 0 Mux' 2"
+ ]
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ }
+}
+
+Include.hdmi1.File "/Intel/skylake-rt286/Hdmi1.conf"
+Include.hdmi2.File "/Intel/skylake-rt286/Hdmi2.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/skylake-rt286.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/skylake-rt286.conf
new file mode 100644
index 00000000..7528d9a4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/skylake-rt286/skylake-rt286.conf
@@ -0,0 +1,44 @@
+# UCM for Intel SKYLAKE/KABYLAKE platforms
+# For Audio in I2S mode
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/skylake-rt286/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+
+SectionDefaults [
+ cset "name='Headphone Jack Switch' 1"
+ cset "name='Speaker Switch' 1"
+ cset "name='Speaker Playback Switch' 0,0"
+ cset "name='Front DAC Switch' 1"
+ cset "name='Front RECMIX Switch' 0"
+ cset "name='Mic Jack Switch' 1"
+ cset "name='ADC 0 Mux' 2"
+ cset "name='ADC 1 Mux' 0"
+ cset "name='ADC0 Capture Volume' 105,105"
+ cset "name='ADC0 Capture Switch' 1,1"
+ cset "name='AMIC Volume' 3"
+ cset "name='DAC0 Playback Volume' 100,100"
+ cset "name='HPO L Switch' 0"
+ cset "name='HPO Mux' 0"
+ cset "name='HPO R Switch' 0"
+ cset "name='Pin 5 Mux' 1"
+ cset "name='Pin 6 Mux' 2"
+ cset "name='Pin 7 Mux' 3"
+ cset "name='RECMIX Beep Switch' 0"
+ cset "name='RECMIX Line1 Switch' 0"
+ cset "name='RECMIX Mic1 Switch' 0"
+ cset "name='SPK Mux' 0"
+ cset "name='SPO Switch' 1"
+ cset "name='codec0_out mo codec0_in mi Switch' 0"
+ cset "name='codec0_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='codec0_out mo media0_in mi Switch' 1"
+ cset "name='codec1_out mo codec0_in mi Switch' 0"
+ cset "name='codec1_out mo dmic01_hifi_in mi Switch' 0"
+ cset "name='codec1_out mo media0_in mi Switch' 0"
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='media0_out mo dmic01_hifi_in mi Switch' 1"
+ cset "name='media0_out mo media0_in mi Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/Hdmi.conf
new file mode 100644
index 00000000..abb6e2cf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/Hdmi.conf
@@ -0,0 +1,85 @@
+# Usecase for device HDMI/Display Port stereo playback on Intel ELKHARTLAKE platforms
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},3"
+ PlaybackPriority 500
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=3 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=3 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=3 Jack"
+ }
+ }
+ }
+}
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},4"
+ PlaybackPriority 600
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=4 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=4 Jack"
+ }
+ }
+ }
+}
+
+SectionDevice."HDMI3" {
+ Comment "HDMI/Display Port 3 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},5"
+ PlaybackPriority 600
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=5 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=5 Jack"
+ }
+ }
+ }
+}
+
+SectionDevice."HDMI4" {
+ Comment "HDMI/Display Port 4 Stereo"
+
+ Value {
+ PlaybackPCM "hw:${CardId},6"
+ PlaybackPriority 600
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=6 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=6 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=6 Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/HiFi.conf
new file mode 100644
index 00000000..0f159382
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/HiFi.conf
@@ -0,0 +1,75 @@
+# Usecase for stereo playback Speaker and Headset, Recording on DMIC and Headset MIC.
+# For Audio in I2S mode on Intel ElkhartLake platforms
+
+SectionVerb {
+
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Lineout"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Lineout" {
+ Comment "Lineout"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Line Out Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Line Out Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='Headset Mic2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ }
+}
+
+Include.hdmi.File "/Intel/sof-ehl-rt5660/Hdmi.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf
new file mode 100644
index 00000000..9466dd28
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf
@@ -0,0 +1,19 @@
+# UCM for Intel ElkhartLake platforms
+# For Audio in I2S mode
+
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Intel/sof-ehl-rt5660/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+
+SectionDefaults [
+ cset "name='DAC1 MIXL DAC1 Switch' on"
+ cset "name='DAC1 MIXR DAC1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='LOUT MIX DAC Switch' on"
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/Hdmi.conf
new file mode 100644
index 00000000..d77b92d8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/Hdmi.conf
@@ -0,0 +1,30 @@
+# Use case Configuration for sof-es8336
+
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi1 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 1
+ Device 5
+ Priority 500
+ }
+}
+
+If.hdmi2 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi2.HDMI {
+ Number 2
+ Device 6
+ Priority 600
+ }
+}
+
+If.hdmi3 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi3.HDMI {
+ Number 3
+ Device 7
+ Priority 700
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/HiFi.conf
new file mode 100644
index 00000000..2be5aa55
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/HiFi.conf
@@ -0,0 +1,152 @@
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ # Disable all inputs / outputs
+ # (may be duplicated with disdevall)
+ cset "name='Headphone Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='DAC Mono Mix Switch' off"
+ ]
+}
+
+If.amic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ True.SectionDevice."Mic" {
+ Comment "Analog Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ }
+ }
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ False.SectionDevice."${var:DeviceDmic}" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ If.chn {
+ Condition {
+ Type RegexMatch
+ Regex "cfg-dmics:[34]"
+ String "${CardComponents}"
+ }
+ True {
+ CaptureChannels 4
+ }
+ }
+ CaptureMixerElem "Dmic0"
+ CaptureVolume "Dmic0 Capture Volume"
+ CaptureSwitch "Dmic0 Capture Switch"
+ }
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # The es8316 only has a HP-amp which is muxed to the speaker
+ # or to the headpones output
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ If.conflict {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ True.ConflictingDevice [
+ "Mic"
+ ]
+ }
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='Digital Mic Mux' 'dmic disable'"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ JackControl "Headset Mic Jack"
+ }
+}
+
+Include.hdmi.File "/Intel/sof-essx8336/Hdmi.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/sof-essx8336.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/sof-essx8336.conf
new file mode 100644
index 00000000..f579a45f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-essx8336/sof-essx8336.conf
@@ -0,0 +1,57 @@
+Syntax 6
+
+BootSequence [
+ # Setup muxes / switches
+ cset "name='Left Headphone Mixer Left DAC Switch' on"
+ cset "name='Right Headphone Mixer Right DAC Switch' on"
+ # Set digital mix mux to "dmic disable"
+ # That doesn't affect dmic, but other values mute headset mic
+ cset "name='Digital Mic Mux' 0"
+
+ # Set HP vol to 0 dB
+ cset "name='Headphone Playback Volume' 100%"
+ cset "name='Headphone Mixer Volume' 100%"
+
+ # Set DAC vol
+ cset "name='DAC Playback Volume' 60%"
+ # LDATA TO LDAC, RDATA TO RDAC
+ cset "name='DAC Source Mux' 0"
+
+ # Disable Auto Level Control
+ cset "name='ALC Capture Switch' off"
+
+ # Set capture vol
+ cset "name='ADC Capture Volume' 60%"
+]
+
+Define.DeviceDmic ""
+
+If.devdmic {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-dmics:"
+ }
+ True.Define.DeviceDmic "Mic"
+}
+
+SectionUseCase."HiFi" {
+ File "/Intel/sof-essx8336/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ False.If.Dmic0 {
+ Condition {
+ Type ControlExists
+ Control "name='Dmic0 Capture Volume'"
+ }
+ True.BootSequence [
+ cset "name='Dmic0 Capture Volume' 70%"
+ ]
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/Hdmi.conf
new file mode 100644
index 00000000..461c2782
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/Hdmi.conf
@@ -0,0 +1,30 @@
+# Use case Configuration for sof-glkda7219max
+
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi1 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 1
+ Device 5
+ Priority 500
+ }
+}
+
+If.hdmi2 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi2.HDMI {
+ Number 2
+ Device 6
+ Priority 600
+ }
+}
+
+If.hdmi3 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi3.HDMI {
+ Number 3
+ Device 7
+ Priority 700
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/HiFi.conf
new file mode 100644
index 00000000..8fc42b21
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/HiFi.conf
@@ -0,0 +1,72 @@
+# command-line sequence to switch playback/capture
+# alsaucm -c sof-glkda7219max set _verb HiFi set _enadev Headphone
+# alsaucm -c sof-glkda7219max set _verb HiFi set _enadev Speaker
+# alsaucm -c sof-glkda7219max set _verb HiFi set _enadev Headset
+# alsaucm -c sof-glkda7219max set _verb HiFi set _enadev InternalMic
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+ EnableSequence [
+ cset "name='Spk Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Spk Switch' off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixerElem "Headphone"
+ JackControl "Headphone Jack"
+ }
+ EnableSequence [
+ cset "name='Headphone Jack Switch' on"
+ cset "name='Headphone Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='Headphone Jack Switch' off"
+ cset "name='Headphone Switch' 0"
+ ]
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},99"
+ CaptureChannels 4
+ #CaptureChannelMap "0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1"
+ #MaxSoftwareGain "2000"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ CaptureMixerElem "Headset Mic"
+ JackControl "Headset Mic Jack"
+ }
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='Mic Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='Mic Switch' off"
+ ]
+}
+
+Include.hdmi.File "/Intel/sof-glkda7219max/Hdmi.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/sof-glkda7219max.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/sof-glkda7219max.conf
new file mode 100644
index 00000000..2e578263
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-glkda7219max/sof-glkda7219max.conf
@@ -0,0 +1,8 @@
+Syntax 6
+
+SectionUseCase."HiFi" {
+ File "/Intel/sof-glkda7219max/HiFi.conf"
+ Comment "Play and record HiFi quality Music"
+}
+
+Include.codec-init.File "/codecs/da7219/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/Hdmi.conf
new file mode 100644
index 00000000..2bf450b3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/Hdmi.conf
@@ -0,0 +1,30 @@
+# Use case Configuration for sof-hda-dsp
+
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi1 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 1
+ Device 3
+ Priority 500
+ }
+}
+
+If.hdmi2 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 2
+ Device 4
+ Priority 600
+ }
+}
+
+If.hdmi3 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 3
+ Device 5
+ Priority 700
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/HiFi.conf
new file mode 100644
index 00000000..2063fc0d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/HiFi.conf
@@ -0,0 +1,56 @@
+# Use case Configuration for sof-hda-dsp
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+Include.hda-analog.File "/HDA/HiFi-analog.conf"
+
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ Before.SectionDevice "${var:DeviceMic}"
+ False.SectionDevice."${var:DeviceDmic}" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},6"
+ CaptureMicInfoFile "${var:LibDir}/dmics-nhlt.json"
+ If.chn {
+ Condition {
+ Type RegexMatch
+ Regex "cfg-dmics:[34]"
+ String "${CardComponents}"
+ }
+ True {
+ CaptureChannels 4
+ }
+ }
+ If.vol {
+ Condition {
+ Type ControlExists
+ Control "name='Dmic0 Capture Switch'"
+ }
+ True {
+ CaptureMixerElem "Dmic0"
+ CaptureVolume "Dmic0 Capture Volume"
+ CaptureSwitch "Dmic0 Capture Switch"
+ }
+ False {
+ # v1.3 SOF firmware
+ CaptureMixerElem "PGA10.0 10 Master"
+ CaptureVolume "PGA10.0 10 Master Capture Volume"
+ }
+ }
+ }
+ }
+}
+
+Include.hdmi.File "/Intel/sof-hda-dsp/Hdmi.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/sof-hda-dsp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/sof-hda-dsp.conf
new file mode 100644
index 00000000..98098e72
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Intel/sof-hda-dsp/sof-hda-dsp.conf
@@ -0,0 +1,117 @@
+Syntax 6
+
+Define.DeviceMic "Mic"
+Define.DeviceDmic ""
+
+Include.card-init.File "/lib/card-init.conf"
+
+If.devdmic {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "cfg-dmics:"
+ }
+ True {
+ Define.DeviceDmic "Mic1"
+ Define.DeviceMic "Mic2"
+ FixedBootSequence [
+ #
+ # users expect to turn the LED on when only internal
+ # mic is off, but it makes sense to turn this LED
+ # when all internal inputs are off
+ #
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/detach:Capture Switch"
+ # dmic array info
+ exec "-nhlt-dmic-info -o ${var:LibDir}/dmics-nhlt.json"
+ ]
+ }
+}
+
+SectionUseCase."HiFi" {
+ File "/Intel/sof-hda-dsp/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+# the kcontrols initial values, which will be set by `alsactl init`
+
+If.amute {
+ Condition {
+ Type ControlExists
+ Control "name='Auto-Mute Mode'"
+ }
+ True.BootSequence [
+ cset "name='Auto-Mute Mode' off"
+ ]
+}
+
+If.master {
+ Condition {
+ Type ControlExists
+ Control "name='Master Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Master Playback Volume' 60%"
+ cset "name='Master Playback Switch' on"
+ ]
+}
+
+If.speaker {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Speaker Playback Volume' 60%"
+ ]
+}
+
+If.DellMuteLed {
+ Condition {
+ Type String
+ Haystack "$${sys:class/leds/platform::mute/device}"
+ Needle "dell-laptop"
+ }
+ True {
+ FixedBootSequence [
+ sysw "-/class/sound/ctl-led/speaker/card${CardNumber}/attach:Master Playback Switch"
+ ]
+ }
+}
+
+If.headphone {
+ Condition {
+ Type ControlExists
+ Control "name='Headphone Playback Volume'"
+ }
+ True.BootSequence [
+ cset "name='Headphone Playback Volume' 60%"
+ ]
+}
+
+If.dmic {
+ Condition {
+ Type String
+ Empty "${var:DeviceDmic}"
+ }
+ False.If.Dmic0 {
+ Condition {
+ Type ControlExists
+ Control "name='Dmic0 Capture Volume'"
+ }
+ True.BootSequence [
+ cset "name='Dmic0 Capture Volume' 70%"
+ cset "name='Dmic0 Capture Switch' on"
+ ]
+ }
+}
+
+If.Capture {
+ Condition {
+ Type ControlExists
+ Control "name='Capture Switch'"
+ }
+ True.BootSequence [
+ cset "name='Capture Volume' 60%"
+ cset "name='Capture Switch' on"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/HiFi.conf
new file mode 100644
index 00000000..cf0d2c16
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/HiFi.conf
@@ -0,0 +1,88 @@
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ EnableSequence [
+ cset "name='Speakers Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Speakers Switch' 0"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackPriority 100
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Jack Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Jack Switch' 0"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId},3"
+ JackControl "Headphone Jack"
+ PlaybackMixerElem "DAC1"
+ PlaybackPriority 200
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ EnableSequence [
+ cset "name='MTKAIF_DMIC Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='MTKAIF_DMIC Switch' 0"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId},10"
+ CapturePriority 100
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' 1"
+ cset "name='STO1 ADC Capture Switch' 1"
+ cset "name='RECMIX1L CBJ Switch' 1"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 1"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='STO1 ADC Capture Switch' 0"
+ cset "name='RECMIX1L CBJ Switch' 0"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 0"
+ cset "name='Headset Mic Switch' 0"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId},11"
+ JackControl "Headset Mic Jack"
+ CapturePriority 200
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/init.conf
new file mode 100644
index 00000000..b53178e3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/init.conf
@@ -0,0 +1,24 @@
+BootSequence [
+ # Speaker
+ cset "name='I2S3_CH1 DL1_CH1' 1"
+ cset "name='I2S3_CH2 DL1_CH2' 1"
+ cset "name='I2S3_HD_Mux' 1"
+
+ # Headphone
+ cset "name='I2S9_CH1 DL3_CH1' 1"
+ cset "name='I2S9_CH2 DL3_CH2' 1"
+ cset "name='I2S9_HD_Mux' 1"
+
+ # Internal Mic
+ cset "name='UL1_CH1 ADDA_UL_CH1' 1"
+ cset "name='UL1_CH2 ADDA_UL_CH2' 1"
+ cset "name='UL_SRC_MUX' DMIC"
+
+ # Headset Mic
+ cset "name='UL2_CH1 I2S8_CH1' 1"
+ cset "name='UL2_CH2 I2S8_CH2' 1"
+ cset "name='I2S8_HD_Mux' 1"
+ cset "name='Stereo1 ADC L1 Mux' 1"
+ cset "name='Stereo1 ADC R1 Mux' 1"
+ cset "name='CBJ Boost Volume' 3"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/mt8192_mt6359_rt1015p_rt5682.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/mt8192_mt6359_rt1015p_rt5682.conf
new file mode 100644
index 00000000..b4e124dc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8192/mt6359-rt1015p-rt5682/mt8192_mt6359_rt1015p_rt5682.conf
@@ -0,0 +1,11 @@
+Comment "MT8192 MT6359 RT1015P RT5682 sound card"
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.init.File "init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/init.conf
new file mode 100644
index 00000000..f2afb731
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/init.conf
@@ -0,0 +1,20 @@
+# mt8195 specific boot sequence
+
+BootSequence [
+ # eTDM
+ cset "name='ETDM_IN1_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_OUT1_Clock_Source' a1sys_a2sys"
+
+ # mt6359 audio
+ cset "name='UL_SRC_MUX' DMIC"
+
+ # AFE
+ cset "name='O048 I070 Switch' 1"
+ cset "name='O049 I071 Switch' 1"
+ cset "name='O072 I020 Switch' 1"
+ cset "name='O073 I021 Switch' 1"
+ cset "name='O036 I012 Switch' 1"
+ cset "name='O037 I013 Switch' 1"
+ cset "name='O034 I168 Switch' 1"
+ cset "name='O035 I169 Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf
new file mode 100644
index 00000000..762c8078
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf
@@ -0,0 +1,94 @@
+# Use case configuration for mt8195-mt6359-rt1019-rt5682
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ EnableSequence [
+ cset "name='Ext Spk Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' 0"
+ ]
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},16"
+ PlaybackPriority 100
+ PlaybackMixerElem "Speaker"
+ PlaybackVolume "Speaker Playback Volume"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ cset "name='HPOL Playback Switch' 1"
+ cset "name='HPOR Playback Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HPOL Playback Switch' 0"
+ cset "name='HPOR Playback Switch' 0"
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},17"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='STO1 ADC Capture Switch' 1"
+ cset "name='RECMIX1L CBJ Switch' 1"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 1"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='STO1 ADC Capture Switch' 0"
+ cset "name='RECMIX1L CBJ Switch' 0"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 0"
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},19"
+ JackControl "Headset Mic Jack"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ EnableSequence [
+ cset "name='MTKAIF_DMIC' On"
+ ]
+
+ DisableSequence [
+ cset "name='MTKAIF_DMIC' Off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId},18"
+ CapturePriority 100
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/init.conf
new file mode 100644
index 00000000..44605c3f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/init.conf
@@ -0,0 +1,22 @@
+# rt1019-rt5682 specific boot sequence
+BootSequence [
+ cset "name='Stereo1 DAC MIXL DAC L1 Switch' 1"
+ cset "name='Stereo1 DAC MIXR DAC R1 Switch' 1"
+ cset "name='DAC L Mux' IF1"
+ cset "name='DAC R Mux' IF1"
+ cset "name='IF1 01 ADC Swap Mux' 2"
+ cset "name='CBJ Boost Volume' 3"
+ cset "name='Stereo1 ADC L Mux' 'ADC1 L'"
+ cset "name='Stereo1 ADC R Mux' 'ADC1 R'"
+ cset "name='Stereo1 ADC L1 Mux' 1"
+ cset "name='Stereo1 ADC R1 Mux' 1"
+
+ cset "name='DAC1 MIXL DAC1 Switch' 1"
+ cset "name='DAC1 MIXR DAC1 Switch' 1"
+
+ cset "name='DAC1 MIXL Stereo ADC Switch' 0"
+ cset "name='DAC1 MIXR Stereo ADC Switch' 0"
+
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/sof-mt8195-mt6359-rt1019-rt5682.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/sof-mt8195-mt6359-rt1019-rt5682.conf
new file mode 100644
index 00000000..1879deee
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/sof-mt8195-mt6359-rt1019-rt5682.conf
@@ -0,0 +1,12 @@
+Comment "MT8195 MT6359 RT1019 RT5682 sound card"
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.init.File "/MediaTek/mt8195-sof/init.conf"
+Include.init-rt1019-rt5682.File "/MediaTek/mt8195-sof/mt6359-rt1019-rt5682/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/HiFi.conf
new file mode 100644
index 00000000..660b4adf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/HiFi.conf
@@ -0,0 +1,117 @@
+SectionVerb {
+
+ EnableSequence [
+ cset "name='HDMI_OUT_MUX' Connect"
+ cset "name='DPTX_OUT_MUX' Connect"
+ cset "name='O176 I070 Switch' on"
+ cset "name='O177 I071 Switch' on"
+ cset "name='O034 I168 Switch' on"
+ cset "name='O035 I169 Switch' on"
+ cset "name='O036 I012 Switch' on"
+ cset "name='O037 I013 Switch' on"
+ cset "name='O072 I022 Switch' on"
+ cset "name='O073 I023 Switch' on"
+ cset "name='O074 I024 Switch' on"
+ cset "name='O075 I025 Switch' on"
+ cset "name='O076 I026 Switch' on"
+ cset "name='O077 I027 Switch' on"
+ cset "name='O078 I028 Switch' on"
+ cset "name='O079 I029 Switch' on"
+ cset "name='O002 I004 Switch' on"
+ cset "name='O003 I005 Switch' on"
+ cset "name='O004 I006 Switch' on"
+ cset "name='O005 I007 Switch' on"
+ cset "name='O006 I008 Switch' on"
+ cset "name='O007 I009 Switch' on"
+ cset "name='O008 I010 Switch' on"
+ cset "name='O009 I011 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI_OUT_MUX' Disconnect"
+ cset "name='DPTX_OUT_MUX' Disconnect"
+ cset "name='O176 I070 Switch' off"
+ cset "name='O177 I071 Switch' off"
+ cset "name='O034 I168 Switch' off"
+ cset "name='O035 I169 Switch' off"
+ cset "name='O036 I012 Switch' off"
+ cset "name='O037 I013 Switch' off"
+ cset "name='O072 I022 Switch' off"
+ cset "name='O073 I023 Switch' off"
+ cset "name='O074 I024 Switch' off"
+ cset "name='O075 I025 Switch' off"
+ cset "name='O076 I026 Switch' off"
+ cset "name='O077 I027 Switch' off"
+ cset "name='O078 I028 Switch' off"
+ cset "name='O079 I029 Switch' off"
+ cset "name='O002 I004 Switch' off"
+ cset "name='O003 I005 Switch' off"
+ cset "name='O004 I006 Switch' off"
+ cset "name='O005 I007 Switch' off"
+ cset "name='O006 I008 Switch' off"
+ cset "name='O007 I009 Switch' off"
+ cset "name='O008 I010 Switch' off"
+ cset "name='O009 I011 Switch' off"
+ ]
+}
+
+SectionDevice."HDMI" {
+ Comment "Hdmi/DP output"
+
+ Value {
+ PlaybackPriority 250
+ PlaybackPCM "hw:${CardId},5"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headset speakers"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackVolume "name='Headset Volume'"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Headset microphone"
+
+ Value {
+ CapturePriority 300
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},10"
+ CaptureVolume "PGA1 Volume"
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "I2S Line In"
+
+ Value {
+ CapturePriority 200
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},11"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "I2S Line out"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackChannels 8
+ PlaybackPCM "hw:${CardId},6"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "PDM microphones"
+
+ Value {
+ CapturePriority 100
+ CaptureChannels 8
+ CapturePCM "hw:${CardId},14"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/mt8195_demo.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/mt8195_demo.conf
new file mode 100644
index 00000000..896b6dc8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8195_demo/mt8195_demo.conf
@@ -0,0 +1,45 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8195_demo/HiFi.conf"
+ Comment "Play high quality music"
+}
+
+BootSequence [
+ cset "name='Headset Volume' 0"
+ cset "name='Lineout Volume' 0"
+ cset "name='HP Mux' Audio\ Playback"
+ cset "name='LOL Mux' Playback"
+ cset "name='MISO0_MUX' UL1_CH1"
+ cset "name='MISO1_MUX' UL1_CH1"
+ cset "name='ADC_L_Mux' Left\ Preamplifier"
+ cset "name='PGA_L_Mux' AIN1"
+ cset "name='HDMI_OUT_MUX' Connect"
+ cset "name='DPTX_OUT_MUX' Connect"
+ # we need to enable all devices before starting PA.
+ # In our driver we use PCM, which means that we have
+ # to route Front End to a BackEnd and then only we can
+ # open a device. Without linking to BE it will fail.
+ cset "name='O176 I070 Switch' on"
+ cset "name='O177 I071 Switch' on"
+ cset "name='O072 I022 Switch' on"
+ cset "name='O073 I023 Switch' on"
+ cset "name='O074 I024 Switch' on"
+ cset "name='O075 I025 Switch' on"
+ cset "name='O076 I026 Switch' on"
+ cset "name='O077 I027 Switch' on"
+ cset "name='O078 I028 Switch' on"
+ cset "name='O079 I029 Switch' on"
+ cset "name='O034 I168 Switch' on"
+ cset "name='O035 I169 Switch' on"
+ cset "name='O036 I012 Switch' on"
+ cset "name='O037 I013 Switch' on"
+ cset "name='O002 I004 Switch' on"
+ cset "name='O003 I005 Switch' on"
+ cset "name='O004 I006 Switch' on"
+ cset "name='O005 I007 Switch' on"
+ cset "name='O006 I008 Switch' on"
+ cset "name='O007 I009 Switch' on"
+ cset "name='O008 I010 Switch' on"
+ cset "name='O009 I011 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/HiFi.conf
new file mode 100644
index 00000000..81f563f6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/HiFi.conf
@@ -0,0 +1,141 @@
+SectionDevice."HDMI" {
+ Comment "Hdmi output"
+
+ Value {
+ PlaybackPriority 250
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},1"
+ }
+
+ EnableSequence [
+ cset "name='O00 I07 Switch' on"
+ cset "name='O01 I08 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='O00 I07 Switch' off"
+ cset "name='O01 I08 Switch' off"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Line-out Jack "
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackVolume "name='Lineout_PGAL_GAIN'"
+ }
+
+ EnableSequence [
+ cset "name='Audio_Amp_L_Switch' Off"
+ cset "name='Audio_Amp_R_Switch' Off"
+ cset "name='Lineout_PGAL_GAIN' 0"
+ cset "name='Speaker_Amp_Switch' On"
+ ]
+
+ DisableSequence [
+ cset "name='Audio_Amp_L_Switch' On"
+ cset "name='Audio_Amp_R_Switch' On"
+ cset "name='Speaker_Amp_Switch' Off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headset speakers"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackVolume "name='Headset_PGAL_GAIN'"
+ }
+
+ EnableSequence [
+ cset "name='Audio_Amp_L_Switch' On"
+ cset "name='Audio_Amp_R_Switch' On"
+ cset "name='Headset_PGAL_GAIN' 1"
+ cset "name='Speaker_Amp_Switch' Off"
+ ]
+
+ DisableSequence [
+ cset "name='Audio_Amp_L_Switch' Off"
+ cset "name='Audio_Amp_R_Switch' Off"
+ cset "name='Speaker_Amp_Switch' On"
+ ]
+}
+
+SectionDevice."Mic1" {
+ Comment "Amic"
+
+ ConflictingDevice [
+ "Mic2"
+ ]
+
+ Value {
+ CapturePriority 300
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},2"
+ }
+
+ EnableSequence [
+ cset "name='Audio_MicSource1_Setting' ADC1"
+ cset "name='Audio_MICBIAS0_Switch' Off"
+ ]
+
+ DisableSequence [
+ cset "name='Audio_MicSource1_Setting' ADC2"
+ cset "name='Audio_MICBIAS0_Switch' On"
+ ]
+}
+
+SectionDevice."Mic2" {
+ Comment "Headset microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ Value {
+ CapturePriority 350
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},2"
+ }
+
+ EnableSequence [
+ cset "name='Audio_MicSource1_Setting' ADC2"
+ cset "name='Audio_MICBIAS0_Switch' On"
+ ]
+
+ DisableSequence [
+ cset "name='Audio_MicSource1_Setting' ADC1"
+ cset "name='Audio_MICBIAS0_Switch' Off"
+ ]
+}
+
+SectionDevice."Mic3" {
+ Comment "PDM microphones"
+
+ Value {
+ CapturePriority 100
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},3"
+ }
+
+ EnableSequence [
+ cset "name='Audio_MICBIAS0_Switch' On"
+ ]
+
+ DisableSequence [
+ cset "name='Audio_MICBIAS0_Switch' Off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf
new file mode 100644
index 00000000..e396f8cf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf
@@ -0,0 +1,39 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8365-evk/HiFi.conf"
+ Comment "Play high quality music"
+}
+
+BootSequence [
+ #Audio volume
+ cset "name='Headset_PGAL_GAIN' 0"
+ cset "name='Lineout_PGAL_GAIN' 0"
+
+ #Audio amp
+ cset "name='Audio_Amp_R_Switch' On"
+ cset "name='Audio_Amp_L_Switch' On"
+
+ #Headset out
+ cset "name='Speaker_Amp_Switch' Off"
+
+ #Dmic
+ cset "name='Audio_MICBIAS0_Switch' On"
+
+ #HDMI audio (I2S3 Out)
+ cset "name='O00 I07 Switch' on"
+ cset "name='O01 I08 Switch' on"
+
+ #jack_mic Headset In
+ cset "name='Audio_MicSource1_Setting' ADC2"
+
+ cset "name='O03 I05 Switch' on"
+ cset "name='O04 I06 Switch' on"
+ cset "name='O05 I03 Switch' on"
+ cset "name='O06 I04 Switch' on"
+ cset "name='O09 I14 Switch' on"
+ cset "name='O10 I15 Switch' on"
+ cset "name='AUD_CLK_BUF_Switch' On"
+ cset "name='Audio_ADC_1_Switch' On"
+ cset "name='INT ADDA O03_O04 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/HiFi.conf
new file mode 100644
index 00000000..42a4582e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/HiFi.conf
@@ -0,0 +1,165 @@
+SectionDevice."HDMI1" {
+ Comment "HDMI output"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "HDMI Jack"
+ }
+
+ EnableSequence [
+ cset "name='HDMI_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."HDMI2" {
+ Comment "DP output"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "DP Jack"
+ }
+
+ EnableSequence [
+ cset "name='DPTX_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='DPTX_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Lineout speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='LOL Mux' Playback_L_DAC"
+ ]
+
+ DisableSequence [
+ cset "name='LOL Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 400
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Earphone speaker"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HP Mux' Audio Playback"
+ ]
+
+ DisableSequence [
+ cset "name='HP Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 500
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Earphone microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN1"
+ ]
+
+ Value {
+ CapturePriority 500
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},10"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Analog microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN0"
+ ]
+
+ Value {
+ CapturePriority 400
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},10"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Digital microphone"
+
+ Value {
+ CapturePriority 300
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},14"
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "PCM input"
+
+ Value {
+ CapturePriority 200
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},8"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "PCM output"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "I2S input"
+
+ Value {
+ CapturePriority 100
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},11"
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "I2S output"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackChannels 8
+ PlaybackPCM "hw:${CardId},6"
+ }
+}
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/mt8370-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/mt8370-evk.conf
new file mode 100644
index 00000000..2d07c46c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8370-evk/mt8370-evk.conf
@@ -0,0 +1,45 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8370-evk/HiFi.conf"
+ Comment "Play high quality music"
+}
+
+BootSequence [
+ cset "name='HP Mux' Audio Playback"
+ cset "name='LOL Mux' Open"
+ cset "name='MISO0_MUX' UL1_CH1"
+ cset "name='MISO1_MUX' UL1_CH1"
+ cset "name='ADC_L_Mux' Left Preamplifier"
+ cset "name='PGA_L_Mux' AIN1"
+ cset "name='HDMI_OUT_MUX' Connect"
+ cset "name='DPTX_OUT_MUX' Disconnect"
+ cset "name='ETDM_OUT1_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_OUT2_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_OUT3_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_IN1_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_IN2_Clock_Source' a1sys_a2sys"
+ cset "name='Lineout Volume' 10"
+ cset "name='Headset Volume' 2"
+ cset "name='PGA1 Volume' 4"
+ cset "name='O000 I000 Switch' on"
+ cset "name='O001 I001 Switch' on"
+ cset "name='O002 I004 Switch' on"
+ cset "name='O003 I006 Switch' on"
+ cset "name='O034 I168 Switch' on"
+ cset "name='O035 I169 Switch' on"
+ cset "name='O036 I012 Switch' on"
+ cset "name='O037 I013 Switch' on"
+ cset "name='O040 I002 Switch' on"
+ cset "name='O041 I003 Switch' on"
+ cset "name='O048 I022 Switch' on"
+ cset "name='O049 I023 Switch' on"
+ cset "name='O050 I024 Switch' on"
+ cset "name='O051 I025 Switch' on"
+ cset "name='O052 I026 Switch' on"
+ cset "name='O053 I027 Switch' on"
+ cset "name='O054 I028 Switch' on"
+ cset "name='O055 I029 Switch' on"
+ cset "name='O176 I070 Switch' on"
+ cset "name='O177 I071 Switch' on"
+]
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/HiFi.conf
new file mode 100644
index 00000000..42a4582e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/HiFi.conf
@@ -0,0 +1,165 @@
+SectionDevice."HDMI1" {
+ Comment "HDMI output"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "HDMI Jack"
+ }
+
+ EnableSequence [
+ cset "name='HDMI_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."HDMI2" {
+ Comment "DP output"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "DP Jack"
+ }
+
+ EnableSequence [
+ cset "name='DPTX_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='DPTX_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Lineout speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='LOL Mux' Playback_L_DAC"
+ ]
+
+ DisableSequence [
+ cset "name='LOL Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 400
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Earphone speaker"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HP Mux' Audio Playback"
+ ]
+
+ DisableSequence [
+ cset "name='HP Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 500
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Earphone microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN1"
+ ]
+
+ Value {
+ CapturePriority 500
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},10"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Analog microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN0"
+ ]
+
+ Value {
+ CapturePriority 400
+ CaptureChannels 1
+ CapturePCM "hw:${CardId},10"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Digital microphone"
+
+ Value {
+ CapturePriority 300
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},14"
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "PCM input"
+
+ Value {
+ CapturePriority 200
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},8"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "PCM output"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "I2S input"
+
+ Value {
+ CapturePriority 100
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},11"
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "I2S output"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackChannels 8
+ PlaybackPCM "hw:${CardId},6"
+ }
+}
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/mt8390-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/mt8390-evk.conf
new file mode 100644
index 00000000..e2d56e2c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8390-evk/mt8390-evk.conf
@@ -0,0 +1,45 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8390-evk/HiFi.conf"
+ Comment "Play high quality music"
+}
+
+BootSequence [
+ cset "name='HP Mux' Audio Playback"
+ cset "name='LOL Mux' Open"
+ cset "name='MISO0_MUX' UL1_CH1"
+ cset "name='MISO1_MUX' UL1_CH1"
+ cset "name='ADC_L_Mux' Left Preamplifier"
+ cset "name='PGA_L_Mux' AIN1"
+ cset "name='HDMI_OUT_MUX' Connect"
+ cset "name='DPTX_OUT_MUX' Disconnect"
+ cset "name='ETDM_OUT1_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_OUT2_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_OUT3_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_IN1_Clock_Source' a1sys_a2sys"
+ cset "name='ETDM_IN2_Clock_Source' a1sys_a2sys"
+ cset "name='Lineout Volume' 10"
+ cset "name='Headset Volume' 2"
+ cset "name='PGA1 Volume' 4"
+ cset "name='O000 I000 Switch' on"
+ cset "name='O001 I001 Switch' on"
+ cset "name='O002 I004 Switch' on"
+ cset "name='O003 I006 Switch' on"
+ cset "name='O034 I168 Switch' on"
+ cset "name='O035 I169 Switch' on"
+ cset "name='O036 I012 Switch' on"
+ cset "name='O037 I013 Switch' on"
+ cset "name='O040 I002 Switch' on"
+ cset "name='O041 I003 Switch' on"
+ cset "name='O048 I022 Switch' on"
+ cset "name='O049 I023 Switch' on"
+ cset "name='O050 I024 Switch' on"
+ cset "name='O051 I025 Switch' on"
+ cset "name='O052 I026 Switch' on"
+ cset "name='O053 I027 Switch' on"
+ cset "name='O054 I028 Switch' on"
+ cset "name='O055 I029 Switch' on"
+ cset "name='O176 I070 Switch' on"
+ cset "name='O177 I071 Switch' on"
+]
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/HiFi.conf
new file mode 100644
index 00000000..5c25cfba
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/HiFi.conf
@@ -0,0 +1,163 @@
+SectionDevice."HDMI1" {
+ Comment "HDMI output"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "HDMI Jack"
+ }
+
+ EnableSequence [
+ cset "name='HDMI_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."HDMI2" {
+ Comment "DP output"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "DP Jack"
+ }
+
+ EnableSequence [
+ cset "name='DPTX_OUT_MUX' 1"
+ ]
+
+ DisableSequence [
+ cset "name='DPTX_OUT_MUX' 0"
+ ]
+}
+
+SectionDevice."HDMI3" {
+ Comment "HDMI RX"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},7"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Lineout speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='LOL Mux' Playback_L_DAC"
+ ]
+
+ DisableSequence [
+ cset "name='LOL Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Earphone speaker"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HP Mux' Audio Playback"
+ ]
+
+ DisableSequence [
+ cset "name='HP Mux' Open"
+ ]
+
+ Value {
+ PlaybackPriority 400
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Earphone microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN1"
+ ]
+
+ Value {
+ CapturePriority 500
+ CaptureChannels 3
+ CapturePCM "hw:${CardId},15"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Analog microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='PGA_L_Mux' AIN0"
+ cset "name='O039 I169 Switch' on"
+ cset "name='O182 I170 Switch' on"
+ cset "name='MISO1_MUX' UL1_CH2"
+ ]
+
+ DisableSequence [
+ cset "name='O039 I169 Switch' off"
+ cset "name='O182 I170 Switch' off"
+ cset "name='MISO1_MUX' UL1_CH1"
+ ]
+
+ Value {
+ CapturePriority 400
+ CaptureChannels 3
+ CapturePCM "hw:${CardId},15"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Digital microphone"
+
+ Value {
+ CapturePriority 300
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},14"
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "PCM input"
+
+ Value {
+ CapturePriority 100
+ CaptureChannels 2
+ CapturePCM "hw:${CardId},8"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "PCM output"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/mt8395-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/mt8395-evk.conf
new file mode 100644
index 00000000..b739ec0f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mt8395-evk/mt8395-evk.conf
@@ -0,0 +1,47 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mt8395-evk/HiFi.conf"
+ Comment "Play high quality music"
+}
+
+BootSequence [
+ cset "name='HP Mux' Audio Playback"
+ cset "name='LOL Mux' Open"
+ cset "name='MISO0_MUX' UL1_CH1"
+ cset "name='MISO1_MUX' UL1_CH1"
+ cset "name='ADC_L_Mux' Left Preamplifier"
+ cset "name='ADC_R_Mux' Right Preamplifier"
+ cset "name='ADC_3_Mux' Preamplifier"
+ cset "name='PGA_L_Mux' AIN1"
+ cset "name='PGA_R_Mux' AIN2"
+ cset "name='PGA_3_Mux' AIN3"
+ cset "name='HDMI_OUT_MUX' Connect"
+ cset "name='DPTX_OUT_MUX' Disconnect"
+ cset "name='MULTI_IN1_MUX' HDMI_RX_I2S"
+ cset "name='Lineout Volume' 10"
+ cset "name='Headset Volume' 2"
+ cset "name='PGA1 Volume' 4"
+ cset "name='PGA2 Volume' 4"
+ cset "name='PGA3 Volume' 4"
+ cset "name='O000 I000 Switch' on"
+ cset "name='O001 I001 Switch' on"
+ cset "name='O002 I004 Switch' on"
+ cset "name='O003 I005 Switch' on"
+ cset "name='O004 I006 Switch' on"
+ cset "name='O005 I007 Switch' on"
+ cset "name='O006 I008 Switch' on"
+ cset "name='O007 I009 Switch' on"
+ cset "name='O008 I010 Switch' on"
+ cset "name='O009 I011 Switch' on"
+ cset "name='O034 I168 Switch' on"
+ cset "name='O035 I169 Switch' on"
+ cset "name='O038 I168 Switch' on"
+ cset "name='O039 I169 Switch' on"
+ cset "name='O040 I002 Switch' on"
+ cset "name='O041 I003 Switch' on"
+ cset "name='O176 I070 Switch' on"
+ cset "name='O177 I071 Switch' on"
+ cset "name='O182 I170 Switch' on"
+ cset "name='O183 I171 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HDMI.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HDMI.conf
new file mode 100644
index 00000000..297840fe
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HDMI.conf
@@ -0,0 +1,9 @@
+SectionDevice."HDMI" {
+ Comment "HDMI Audio"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},2"
+ JackControl "mtk-rt5650 HDMI Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HiFi.conf
new file mode 100644
index 00000000..b4cccf5a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/HiFi.conf
@@ -0,0 +1,83 @@
+# Use case configuration for mtk-rt5650
+
+SectionVerb {
+ Include.e.File "/codecs/rt5645/EnableSeq.conf"
+
+ # ALSA PCM
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ Include.spk.File "/codecs/rt5645/SpeakerEnableSeq.conf"
+
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackPriority 100
+ PlaybackMixerElem "Speaker"
+ PlaybackVolume "Speaker Playback Volume"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ Include.hse.File "/codecs/rt5645/HeadphonesEnableSeq.conf"
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='Headphone Channel Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackPriority 200
+ PlaybackMixerElem "Headphone"
+ PlaybackVolume "Headphone Playback Volume"
+ JackHWMute "Speaker"
+ }
+}
+
+Include.hdmi.File "/MediaTek/mtk-rt5650/HDMI.conf"
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Include.dmice.File "/codecs/rt5645/DigitalMicEnableSeq.conf"
+ Include.dmicd.File "/codecs/rt5645/DigitalMicDisableSeq.conf"
+
+ Value {
+ CapturePCM "hw:${CardId},1"
+ CapturePriority 100
+ CaptureMasterElem "ADC"
+ CaptureMixerElem "IN"
+ CaptureVolume "IN Capture Volume"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Include.hsmice.File "/codecs/rt5645/HSMicEnableSeq.conf"
+ Include.hsmicd.File "/codecs/rt5645/HSMicDisableSeq.conf"
+
+ Value {
+ CapturePCM "hw:${CardId},1"
+ CapturePriority 200
+ CaptureMasterElem "ADC"
+ CaptureMixerElem "IN"
+ CaptureVolume "IN Capture Volume"
+ JackHWMute "Mic"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/init.conf
new file mode 100644
index 00000000..d4c32d89
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/init.conf
@@ -0,0 +1,17 @@
+# mtk-rt5650 specific boot sequence
+
+BootSequence [
+ cset "name='O03 I05 Switch' 1"
+ cset "name='O04 I06 Switch' 1"
+ cset "name='O09 I17 Switch' 1"
+ cset "name='O10 I18 Switch' 1"
+
+ # Internal speaker amplification params
+ cset "name='DAC1 Playback Volume' 69"
+ cset "name='Speaker ClassD Playback Volume' 6"
+
+ # Muxing
+ cset "name='IF2 ADC Mux' IF_ADC1"
+ cset "name='RT5650 IF1 ADC1 Swap Mux' L/R"
+ cset "name='Stereo1 ADC1 Mux' ADC"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/mtk-rt5650.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/mtk-rt5650.conf
new file mode 100644
index 00000000..0b9f8f92
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/MediaTek/mtk-rt5650/mtk-rt5650.conf
@@ -0,0 +1,12 @@
+Comment "ALC5650 sound card on MediaTek SoC"
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/MediaTek/mtk-rt5650/HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/rt5645/init.conf"
+Include.init.File "/MediaTek/mtk-rt5650/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/HiFi.conf
new file mode 100644
index 00000000..55eabe32
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/HiFi.conf
@@ -0,0 +1,151 @@
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+SectionDevice."Handset" {
+ Comment "Handset"
+
+ ConflictingDevice [
+ "Headphones"
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' off,on"
+ cset "name='DAC L/R Swap Switch' on"
+ cset "name='DAC Monomix Switch' on"
+ cset "name='SPKOUTR PGA' DAC"
+ cset "name='Speaker Boost Volume' 2"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off,off"
+ cset "name='DAC L/R Swap Switch' off"
+ cset "name='DAC Monomix Switch' off"
+ cset "name='SPKOUTR PGA' Mixer"
+ ]
+
+ Value {
+ PlaybackPriority "100"
+ PlaybackVolume "name='Speaker Volume'"
+ PlaybackSwitch "name='Speaker Switch'"
+ PlaybackMixerElem "Speaker"
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Handset"
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on,off"
+ cset "name='DAC Monomix Switch' on"
+ cset "name='SPKOUTL PGA' DAC"
+ cset "name='Speaker Boost Volume' 6"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off,off"
+ cset "name='DAC Monomix Switch' off"
+ cset "name='SPKOUTL PGA' Mixer"
+ ]
+
+ Value {
+ PlaybackPriority "500"
+ PlaybackVolume "name='Speaker Volume'"
+ PlaybackSwitch "name='Speaker Switch'"
+ PlaybackMixerElem "Speaker"
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Handset"
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on,on"
+ cset "name='HPOUTL PGA' 0 unmute"
+ cset "name='HPOUTR PGA' 0 unmute"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off off"
+ cset "name='HPOUTL PGA' 0 mute"
+ cset "name='HPOUTR PGA' 0 mute"
+ ]
+
+ Value {
+ PlaybackPriority "1000"
+ PlaybackVolume "name='Headphone Volume'"
+ PlaybackSwitch "name='Headphone Switch'"
+ PlaybackMixerElem "Headphone"
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphones Jack"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='ADC L/R Swap Switch' on"
+ cset "name='Input Mode' Digital"
+ ]
+
+ DisableSequence [
+ cset "name='ADC L/R Swap Switch' off"
+ ]
+
+ Value {
+ CapturePriority "500"
+ CaptureVolume "name='Digital Capture Volume'"
+ CaptureMixerElem "Digital"
+ CapturePCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Input Mode' Analog"
+ cset "name='MIXINR PGA Switch' on,on"
+ cset "name='Capture Switch' on,on"
+ ]
+
+ DisableSequence [
+ cset "name='Capture Switch' off,off"
+ cset "name='MIXINR PGA Switch' off,off"
+ cset "name='Input Mode' Digital"
+ ]
+
+ Value {
+ CapturePriority "100"
+ CaptureVolume "name='Capture Volume'"
+ CaptureMixerElem "Capture"
+ CapturePCM "hw:${CardId}"
+ JackControl "Headphones Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/Librem 5.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/Librem 5.conf
new file mode 100644
index 00000000..4d7dbd65
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5/Librem 5.conf
@@ -0,0 +1,25 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Default"
+}
+
+BootSequence [
+ cset "name='Digital Playback Volume' 100,100"
+ cset "name='MIXINL IN2L Switch' off"
+ cset "name='MIXINL IN3L Switch' off"
+ cset "name='MIXINR IN2R Switch' off"
+ cset "name='MIXINR IN3R Switch' off"
+ cset "name='INPGAR IN1R Switch' off"
+ cset "name='INPGAR IN2R Switch' off"
+ cset "name='INPGAR IN3R Switch' on"
+ cset "name='INPGAR IN4R Switch' off"
+ cset "name='INPGAL IN1L Switch' off"
+ cset "name='INPGAL IN2L Switch' off"
+ cset "name='INPGAL IN3L Switch' off"
+ cset "name='INPGAL IN4L Switch' off"
+ cset "name='Input Mixer Switch' off,on"
+ cset "name='SPKOUTL PGA' Mixer"
+ cset "name='SPKOUTR PGA' Mixer"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/HiFi.conf
new file mode 100644
index 00000000..9ead6a01
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/HiFi.conf
@@ -0,0 +1,74 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='Digital Input Mux' I2S"
+ cset "name='PCM Playback Volume' 144"
+
+ cset "name='AVC Switch' off"
+ cset "name='Headphone Playback ZC Switch' off"
+
+ cset "name='Capture Attenuate Switch (-6dB)' off"
+ cset "name='Capture Mux' MIX_IN"
+ cset "name='Capture ZC Switch' off"
+ cset "name='Capture Switch' On"
+ cset "name='Capture Volume' 15,15"
+ ]
+ DisableSequence [
+ cset "name='PCM Playback Volume' 0"
+ ]
+}
+
+SectionDevice."Handset" {
+ Comment "Handset"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Mux MUX' Input 2"
+ cset "name='Lineout Playback Switch' on"
+ cset "name='Lineout Playback Volume' 18"
+ cset "name='Mic Volume' 2"
+ ]
+ DisableSequence [
+ cset "name='Lineout Playback Switch' off"
+ cset "name='Mic Volume' 0"
+ ]
+ Value {
+ PlaybackPriority "1000"
+ PlaybackPCM "hw:${CardId}"
+ PlaybackVolume "name='Lineout Playback Volume'"
+ PlaybackSwitch "name='Lineout Playback Switch'"
+ PlaybackMixerElem "Lineout"
+ CapturePriority "1000"
+ CapturePCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset"
+
+ ConflictingDevice [
+ "Handset"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Mux MUX' Input 1"
+ cset "name='Headphone Mux' DAC"
+ cset "name='Headphone Playback Volume' 63"
+ cset "name='Headphone Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headphone Playback Switch' off"
+ ]
+ Value {
+ PlaybackPriority "700"
+ PlaybackPCM "hw:${CardId}"
+ PlaybackVolume "name='Headphone Playback Volume'"
+ PlaybackSwitch "name='Headphone Playback Switch'"
+ PlaybackMixerElem "Headphone"
+ CapturePriority "700"
+ CapturePCM "hw:${CardId}"
+ JackControl "Headphones Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/Librem 5 Devkit.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/Librem 5 Devkit.conf
new file mode 100644
index 00000000..9153d3dc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/NXP/iMX8/Librem_5_Devkit/Librem 5 Devkit.conf
@@ -0,0 +1,5 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/FMAnalog.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/FMAnalog.conf
new file mode 100644
index 00000000..fa819771
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/FMAnalog.conf
@@ -0,0 +1,45 @@
+# Use case Configurationfor TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='MUX_UL00' 9"
+ cset "name='MUX_UL01' 10"
+ cset "name='Capture Volume' 4"
+ ]
+
+
+ DisableSequence [
+ cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='MUX_UL00' 0"
+ cset "name='MUX_UL01' 0"
+ cset "name='Capture Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Music"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 2"
+ cset "name='Analog Right Capture Route' 2"
+ cset "name='Capture Preamplifier Volume' 2"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFi.conf
new file mode 100644
index 00000000..597c3262
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFi.conf
@@ -0,0 +1,56 @@
+# Use case Configuration for TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Multimedia' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Media Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+
+ cset "name='Headset Left Playback' 1"
+ cset "name='Headset Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Multimedia' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Media Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+
+ cset "name='Headset Right Playback' 0"
+ cset "name='Headset Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Music"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Headset Left Playback' 1"
+ cset "name='Headset Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Right Playback' 0"
+ cset "name='Headset Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # PlaybackVolume "name='DL1 Media Playback Volume' 90,90"
+ # PlaybackSwitch "name='DL1 PDM Switch' 1"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFiLP.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFiLP.conf
new file mode 100644
index 00000000..481f2384
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/HiFiLP.conf
@@ -0,0 +1,46 @@
+# Use case Configuration for TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Multimedia' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Media Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Multimedia' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Media Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Music"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Headset Left Playback' 1"
+ cset "name='Headset Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Right Playback' 0"
+ cset "name='Headset Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},6"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Pandaboard.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Pandaboard.conf
new file mode 100644
index 00000000..1a19f969
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Pandaboard.conf
@@ -0,0 +1,41 @@
+# UCM configuration for PandaBoard(ES)
+
+SectionUseCase."Record" {
+ File "/OMAP/abe-twl6040/Pandaboard/Record.conf"
+ Comment "Record"
+}
+
+SectionUseCase."HiFi" {
+ File "/OMAP/abe-twl6040/Pandaboard/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionUseCase."HiFi_Low_Power" {
+ File "/OMAP/abe-twl6040/Pandaboard/HiFiLP.conf"
+ Comment "Play HiFi quality Music in Low Power Mode"
+}
+
+SectionUseCase."Voice" {
+ File "/OMAP/abe-twl6040/Pandaboard/Voice.conf"
+ Comment "Playback Voice quality"
+}
+
+SectionUseCase."Voice_Low_Power" {
+ File "/OMAP/abe-twl6040/Pandaboard/Voice.conf"
+ Comment "Playback Voice quality in Low Power Mode"
+}
+
+SectionUseCase."Voice_Call" {
+ File "/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf"
+ Comment "Capture and Playback in Voice quality"
+}
+
+SectionUseCase."Voice_Call_IP" {
+ File "/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf"
+ Comment "Capture and Playback in Voice quality"
+}
+
+SectionUseCase."FM_Analog_Radio" {
+ File "/OMAP/abe-twl6040/Pandaboard/FMAnalog.conf"
+ Comment "Capture FM Analog Radio"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Record.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Record.conf
new file mode 100644
index 00000000..042e5cea
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Record.conf
@@ -0,0 +1,47 @@
+# Use case Configuration for TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ # No more AMIC PDM Switch in current kernels
+ #cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='MUX_UL00' 9"
+ cset "name='MUX_UL01' 10"
+ cset "name='Capture Volume' 4"
+ ]
+
+ DisableSequence [
+ # No more AMIC PDM Switch in current kernels
+ #cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='MUX_UL00' 0"
+ cset "name='MUX_UL01' 0"
+ cset "name='Capture Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Music"
+ }
+
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 0"
+ cset "name='Analog Right Capture Route' 0"
+ cset "name='Capture Preamplifier Volume' 2"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Voice.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Voice.conf
new file mode 100644
index 00000000..3eaffb4f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/Voice.conf
@@ -0,0 +1,46 @@
+# Use case Configuration for TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Voice' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Voice Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Voice' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Voice"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Headset Left Playback' 1"
+ cset "name='Headset Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Right Playback' 0"
+ cset "name='Headset Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf
new file mode 100644
index 00000000..4e82e7af
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/Pandaboard/VoiceCall.conf
@@ -0,0 +1,67 @@
+# Use case Configuration for TI PandaBoard(ES) HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='Sidetone Mixer Capture' 1"
+ cset "name='MUX_VX0' 9"
+ cset "name='MUX_VX1' 10"
+ cset "name='DL1 Mixer Voice' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Voice Playback Volume' 90,90"
+ cset "name='Capture Volume' 4"
+ cset "name='Capture Mixer Voice Capture' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+
+ DisableSequence [
+ cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='Sidetone Mixer Capture' 0"
+ cset "name='MUX_VX0' 0"
+ cset "name='MUX_VX1' 0"
+ cset "name='DL1 Mixer Voice' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='Capture Volume' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ # Optional TQ
+ Value {
+ TQ "Voice"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 0"
+ cset "name='Analog Right Capture Route' 0"
+ cset "name='Capture Preamplifier Volume' 2"
+ cset "name='Headset Left Playback' 1"
+ cset "name='Headset Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ cset "name='Headset Right Playback' 0"
+ cset "name='Headset Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/FMAnalog.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/FMAnalog.conf
new file mode 100644
index 00000000..822f3d8b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/FMAnalog.conf
@@ -0,0 +1,40 @@
+# Use case Configuratio
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='MUX_UL00' 9"
+ cset "name='MUX_UL01' 10"
+ cset "name='Capture Volume' 4"
+ ]
+
+ DisableSequence [
+ cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='MUX_UL00' 0"
+ cset "name='MUX_UL01' 0"
+ cset "name='Capture Volume' 0"
+ ]
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 2"
+ cset "name='Analog Right Capture Route' 2"
+ cset "name='Capture Preamplifier Volume' 2"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFi.conf
new file mode 100644
index 00000000..6d4a8ae5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFi.conf
@@ -0,0 +1,57 @@
+# Use case Configuration for TI SDP4430 HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Multimedia' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Media Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+
+ cset "name='HS Left Playback' 1"
+ cset "name='HS Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Multimedia' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Media Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+
+ cset "name='HS Right Playback' 0"
+ cset "name='HS Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ # Optional TQ and ALSA PCMs
+# Value {
+# TQ "Music"
+# PlaybackPCM "hw:${CardId},0"
+# PlaybackVolume "name='DL1 Media Playback Volume' 90,90"
+# PlaybackSwitch "name='DL1 PDM Switch' 1"
+# }
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='HS Left Playback' 1"
+ cset "name='HS Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='HS Right Playback' 0"
+ cset "name='HS Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFiLP.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFiLP.conf
new file mode 100644
index 00000000..4cb8b1d3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/HiFiLP.conf
@@ -0,0 +1,45 @@
+# Use case Configuration for TI SDP4430 HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Multimedia' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Media Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Multimedia' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Media Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ Value {
+ TQ "Music"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='HS Left Playback' 1"
+ cset "name='HS Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='HS Right Playback' 0"
+ cset "name='HS Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},6"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Record.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Record.conf
new file mode 100644
index 00000000..1763781b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Record.conf
@@ -0,0 +1,45 @@
+# Use case Configuration for TI SDP4430 HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='MUX_UL00' 9"
+ cset "name='MUX_UL01' 10"
+ cset "name='Capture Volume' 4"
+ ]
+
+ DisableSequence [
+ cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='MUX_UL00' 0"
+ cset "name='MUX_UL01' 0"
+ cset "name='Capture Volume' 0"
+ ]
+
+ # Optional TQ and ALSA PCMs
+ Value {
+ TQ "Music"
+ }
+
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 0"
+ cset "name='Analog Right Capture Route' 0"
+ cset "name='Capture Preamplifier Volume' 2"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/SDP4430.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/SDP4430.conf
new file mode 100644
index 00000000..6ffd8746
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/SDP4430.conf
@@ -0,0 +1,41 @@
+# UCM configuration for SDP4430
+
+SectionUseCase."Record" {
+ File "/OMAP/abe-twl6040/SDP4430/Record.conf"
+ Comment "Record"
+}
+
+SectionUseCase."HiFi" {
+ File "/OMAP/abe-twl6040/SDP4430/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionUseCase."HiFi_Low_Power" {
+ File "/OMAP/abe-twl6040/SDP4430/HiFiLP.conf"
+ Comment "Play HiFi quality Music in Low Power Mode"
+}
+
+SectionUseCase."Voice" {
+ File "/OMAP/abe-twl6040/SDP4430/Voice.conf"
+ Comment "Playback Voice quality"
+}
+
+SectionUseCase."Voice_Low_Power" {
+ File "/OMAP/abe-twl6040/SDP4430/Voice.conf"
+ Comment "Playback Voice quality in Low Power Mode."
+}
+
+SectionUseCase."Voice_Call" {
+ File "/OMAP/abe-twl6040/SDP4430/VoiceCall.conf"
+ Comment "Capture and Playback in Voice quality"
+}
+
+SectionUseCase."Voice_Call_IP" {
+ File "/OMAP/abe-twl6040/SDP4430/VoiceCall.conf"
+ Comment "Capture and Playback in Voice quality"
+}
+
+SectionUseCase."FM_Analog_Radio" {
+ File "/OMAP/abe-twl6040/SDP4430/FMAnalog.conf"
+ Comment "Capture FM Analog Radio"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Voice.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Voice.conf
new file mode 100644
index 00000000..57f45549
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/Voice.conf
@@ -0,0 +1,45 @@
+# Use case Configuration for TI SDP4430 HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='DL1 Mixer Voice' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Voice Playback Volume' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+ DisableSequence [
+ cset "name='DL1 Mixer Voice' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ Value {
+ TQ "Voice"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='HS Left Playback' 1"
+ cset "name='HS Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='HS Right Playback' 0"
+ cset "name='HS Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/VoiceCall.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/VoiceCall.conf
new file mode 100644
index 00000000..adf62ea2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/SDP4430/VoiceCall.conf
@@ -0,0 +1,66 @@
+# Use case Configuration for TI SDP4430 HiFi Music
+# By Liam Girdwood
+
+SectionVerb {
+ EnableSequence [
+ cset "name='AMIC_UL PDM Switch' 1"
+ cset "name='Sidetone Mixer Capture' 1"
+ cset "name='MUX_VX0' 9"
+ cset "name='MUX_VX1' 10"
+ cset "name='DL1 Mixer Voice' 1"
+ cset "name='Sidetone Mixer Playback' 1"
+ cset "name='DL1 PDM Switch' 1"
+ cset "name='DL1 Voice Playback Volume' 90,90"
+ cset "name='Capture Volume' 4"
+ cset "name='Capture Mixer Voice Capture' 90,90"
+ cset "name='SDT DL Volume' 120"
+ ]
+
+
+ DisableSequence [
+ cset "name='AMIC_UL PDM Switch' 0"
+ cset "name='Sidetone Mixer Capture' 0"
+ cset "name='MUX_VX0' 0"
+ cset "name='MUX_VX1' 0"
+ cset "name='DL1 Mixer Voice' 0"
+ cset "name='Sidetone Mixer Playback' 0"
+ cset "name='DL1 PDM Switch' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='Capture Volume' 0"
+ cset "name='DL1 Voice Playback Volume' 0,0"
+ cset "name='SDT DL Volume' 0"
+ ]
+
+ Value {
+ TQ "Voice"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "SDP4430 3.5mm Headset"
+
+ EnableSequence [
+ cset "name='Analog Left Capture Route' 0"
+ cset "name='Analog Right Capture Route' 0"
+ cset "name='Capture Preamplifier Volume' 2"
+ cset "name='HS Left Playback' 1"
+ cset "name='HS Right Playback' 1"
+ cset "name='Headset Playback Volume' 13"
+ ]
+
+ DisableSequence [
+ cset "name='Analog Left Capture Route' 3"
+ cset "name='Analog Right Capture Route' 3"
+ cset "name='Capture Preamplifier Volume' 0"
+ cset "name='HS Right Playback' 0"
+ cset "name='HS Left Playback' 0"
+ cset "name='Headset Playback Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/abe-twl6040.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/abe-twl6040.conf
new file mode 100644
index 00000000..5184211f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/OMAP/abe-twl6040/abe-twl6040.conf
@@ -0,0 +1,13 @@
+# UCM configuration for PandaBoard(ES)
+
+Syntax 3
+
+If.sdp4430 {
+ Condition {
+ Type String
+ String1 "${CardName}"
+ String2 "SDP4430"
+ }
+ True.Include.sdp4430.File "/OMAP/abe-twl6040/SDP4430/SDP4430.conf"
+ False.Include.pandaboard.File "/OMAP/abe-twl6040/Pandaboard/Pandaboard.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HDMI.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HDMI.conf
new file mode 100644
index 00000000..e2316fca
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HDMI.conf
@@ -0,0 +1,17 @@
+# Use case configuration for DB410c board.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."HDMI" {
+ # Name "HDMI-stereo"
+ Comment "HDMI Digital Stereo Output"
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HiFi.conf
new file mode 100644
index 00000000..a9c8b104
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/HiFi.conf
@@ -0,0 +1,159 @@
+# Use case configuration for DB410c board.
+# Author: Srinivas Kandagatla
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ ConflictingDevice [
+ "Headphones"
+ "Earpiece"
+ ]
+
+ EnableSequence [
+ cset "name='SPK DAC Switch' 1"
+ cset "name='RX3 MIX1 INP1' RX1"
+ ## gain to 0dB
+ cset "name='RX3 Digital Volume' 128"
+ ]
+
+ DisableSequence [
+ cset "name='SPK DAC Switch' 0"
+ cset "name='RX3 MIX1 INP1' ZERO"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones playback"
+
+ ConflictingDevice [
+ "Speaker"
+ "Earpiece"
+ ]
+ EnableSequence [
+ cset "name='RX1 MIX1 INP1' RX1"
+ cset "name='RX2 MIX1 INP1' RX2"
+ cset "name='RDAC2 MUX' RX2"
+ cset "name='HPHL' 1"
+ cset "name='HPHR' 1"
+ ## gain to 0dB
+ cset "name='RX1 Digital Volume' 128"
+ ## gain to 0dB
+ cset "name='RX2 Digital Volume' 128"
+ ]
+
+ DisableSequence [
+ cset "name='RX1 Digital Volume' 0"
+ cset "name='RX2 Digital Volume' 0"
+ cset "name='HPHL' 0"
+ cset "name='HPHR' 0"
+ cset "name='RDAC2 MUX' ZERO"
+ cset "name='RX1 MIX1 INP1' ZERO"
+ cset "name='RX2 MIX1 INP1' ZERO"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Earpiece" {
+ Comment "Earpiece playback"
+
+ ConflictingDevice [
+ "Speaker"
+ "Headphones"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Handset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='DEC1 MUX' ADC2"
+ cset "name='CIC1 MUX' AMIC"
+ cset "name='ADC2 Volume' 8"
+ cset "name='ADC2 MUX' INP2"
+ ]
+
+ DisableSequence [
+ cset "name='ADC2 MUX' ZERO"
+ cset "name='ADC2 Volume' 0"
+ cset "name='DEC1 MUX' ZERO"
+ ]
+
+ Value {
+ CapturePriority 400
+ CapturePCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Primary Microphone"
+
+ EnableSequence [
+ cset "name='DEC1 MUX' ADC1"
+ cset "name='CIC1 MUX' AMIC"
+ cset "name='ADC1 Volume' 8"
+ ]
+
+ DisableSequence [
+ cset "name='DEC1 MUX' ZERO"
+ cset "name='ADC1 Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Secondary Microphone"
+
+ EnableSequence [
+ cset "name='DEC1 MUX' ADC2"
+ cset "name='CIC1 MUX' AMIC"
+ cset "name='ADC2 Volume' 8"
+ cset "name='ADC2 MUX' INP2"
+ ]
+
+ DisableSequence [
+ cset "name='DEC1 MUX' ZERO"
+ cset "name='ADC2 Volume' 0"
+ cset "name='ADC2 MUX' ZERO"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},2"
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Digital Microphone"
+
+ EnableSequence [
+ cset "name='DEC1 MUX' DMIC1"
+ cset "name='CIC1 MUX' DMIC"
+ ]
+
+ DisableSequence [
+ cset "name='DEC1 MUX' ZERO"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/apq8016-sbc.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/apq8016-sbc.conf
new file mode 100644
index 00000000..a0c37c2b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8016-sbc/apq8016-sbc.conf
@@ -0,0 +1,10 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/apq8016-sbc/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+SectionUseCase."HDMI" {
+ File "/Qualcomm/apq8016-sbc/HDMI.conf"
+ Comment "HDMI output"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HDMI.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HDMI.conf
new file mode 100644
index 00000000..e9967e0e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HDMI.conf
@@ -0,0 +1,33 @@
+# Use case configuration for DB820c board.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+ EnableSequence [
+ cset "name='HDMI Mixer MultiMedia1' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI Mixer MultiMedia1' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."HDMI" {
+ Comment "HDMI Digital Stereo Output"
+
+ EnableSequence [
+ cset "name='HDMI Mixer MultiMedia1' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI Mixer MultiMedia1' 0"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HiFi.conf
new file mode 100644
index 00000000..c60062e1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/HiFi.conf
@@ -0,0 +1,100 @@
+# Use case configuration for DB820c board.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='SLIM RX0 MUX' ZERO"
+ cset "name='SLIM RX1 MUX' ZERO"
+ cset "name='SLIM RX2 MUX' ZERO"
+ cset "name='SLIM RX3 MUX' ZERO"
+ cset "name='SLIM RX4 MUX' ZERO"
+ cset "name='SLIM RX5 MUX' AIF4_PB"
+ cset "name='SLIM RX6 MUX' AIF4_PB"
+ cset "name='SLIM RX7 MUX' ZERO"
+ cset "name='RX INT1_2 MUX' RX5"
+ cset "name='RX INT2_2 MUX' RX6"
+ ## gain to 0dB
+ cset "name='RX5 Digital Volume' 68"
+ ## gain to 0dB
+ cset "name='RX6 Digital Volume' 68"
+ cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 1"
+ cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 1"
+ cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
+ cset "name='RX INT2 DEM MUX' CLSH_DSM_OUT"
+ cset "name='AIF1_CAP Mixer SLIM TX0' 1"
+ cset "name='SLIM TX0 MUX' DEC0"
+ cset "name='ADC2 Volume' 12"
+ cset "name='ADC MUX0' AMIC"
+ cset "name='AMIC MUX0' ADC2"
+ ]
+
+ DisableSequence [
+ cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 0"
+ cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 0"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones playback"
+
+ EnableSequence [
+ cset "name='SLIM RX0 MUX' ZERO"
+ cset "name='SLIM RX1 MUX' ZERO"
+ cset "name='SLIM RX2 MUX' ZERO"
+ cset "name='SLIM RX3 MUX' ZERO"
+ cset "name='SLIM RX4 MUX' ZERO"
+ cset "name='SLIM RX5 MUX' AIF4_PB"
+ cset "name='SLIM RX6 MUX' AIF4_PB"
+ cset "name='SLIM RX7 MUX' ZERO"
+ cset "name='RX INT1_2 MUX' RX5"
+ cset "name='RX INT2_2 MUX' RX6"
+ ## gain to 0dB
+ cset "name='RX5 Digital Volume' 68"
+ ## gain to 0dB
+ cset "name='RX6 Digital Volume' 68"
+ cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 1"
+ cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
+ cset "name='RX INT2 DEM MUX' CLSH_DSM_OUT"
+ ]
+
+ DisableSequence [
+ cset "name='RX5 Digital Volume' 0"
+ cset "name='RX6 Digital Volume' 0"
+ cset "name='SLIM RX5 MUX' ZERO"
+ cset "name='SLIM RX6 MUX' ZERO"
+ cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 0"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 1"
+ cset "name='AIF1_CAP Mixer SLIM TX0' 1"
+ cset "name='SLIM TX0 MUX' DEC0"
+ cset "name='ADC2 Volume' 12"
+ cset "name='ADC MUX0' AMIC"
+ cset "name='AMIC MUX0' ADC2"
+ ]
+
+ DisableSequence [
+ cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 0"
+ cset "name='AIF1_CAP Mixer SLIM TX0' 0"
+ cset "name='AMIC MUX0' ZERO"
+ cset "name='SLIM TX0 MUX' ZERO"
+ cset "name='ADC2 Volume' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ CaptureChannels 1
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/apq8096.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/apq8096.conf
new file mode 100644
index 00000000..3a26c5ed
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/apq8096/apq8096.conf
@@ -0,0 +1,11 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/apq8096/HiFi.conf"
+ Comment "HiFi quality Music"
+}
+
+SectionUseCase."HDMI" {
+ File "/Qualcomm/apq8096/HDMI.conf"
+ Comment "HDMI output"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/HiFi.conf
new file mode 100644
index 00000000..c93b4f7b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/HiFi.conf
@@ -0,0 +1,101 @@
+# Use case configuration for ALC5682+MAX98357A on SC7180
+
+SectionVerb {
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackPriority 100
+ PlaybackMixerElem "Speaker"
+ PlaybackVolume "Speaker Playback Volume"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='HPOL Playback Switch' 1"
+ cset "name='HPOR Playback Switch' 1"
+ cset "name='Stereo1 DAC MIXL DAC L1 Switch' 1"
+ cset "name='Stereo1 DAC MIXR DAC R1 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='HPOL Playback Switch' 0"
+ cset "name='HPOR Playback Switch' 0"
+ cset "name='Stereo1 DAC MIXL DAC L1 Switch' 0"
+ cset "name='Stereo1 DAC MIXR DAC R1 Switch' 0"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackPriority 200
+ PlaybackMasterElem "DAC1"
+ PlaybackMixerElem "Headphone"
+ PlaybackVolume "Headphone Playback Volume"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='IF1 01 ADC Swap Mux' 1"
+ cset "name='Stereo1 ADC L2 Mux' 1"
+ cset "name='Stereo1 ADC R2 Mux' 1"
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' 1"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC L2 Mux' 0"
+ cset "name='Stereo1 ADC R2 Mux' 0"
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' 0"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId},0"
+ CapturePriority 100
+ CaptureMixerElem "STO1 ADC"
+ CaptureVolume "STO1 ADC Capture Volume"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='IF1 01 ADC Swap Mux' 2"
+ cset "name='Stereo1 ADC L1 Mux' 1"
+ cset "name='Stereo1 ADC R1 Mux' 1"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 1"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC L1 Mux' 0"
+ cset "name='Stereo1 ADC R1 Mux' 0"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 0"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId},0"
+ CapturePriority 200
+ CaptureMixerElem "STO1 ADC"
+ CaptureVolume "STO1 ADC Capture Volume"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/init.conf
new file mode 100644
index 00000000..5dee38ab
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/init.conf
@@ -0,0 +1,24 @@
+BootSequence [
+ # Headphone
+ cset "name='HPOL Playback Switch' 0"
+ cset "name='HPOR Playback Switch' 0"
+ cset "name='Stereo1 DAC MIXL DAC L1 Switch' 0"
+ cset "name='Stereo1 DAC MIXR DAC R1 Switch' 0"
+
+ # Headset mic
+ cset "name='Stereo1 ADC L Mux' 0"
+ cset "name='STO1 ADC Capture Switch' on"
+ cset "name='RECMIX1L CBJ Switch' 1"
+ cset "name='CBJ Boost Volume' 3"
+ cset "name='Stereo1 ADC L1 Mux' 0"
+ cset "name='Stereo1 ADC R1 Mux' 0"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' 0"
+
+ # Internal mic on ALC5682
+ cset "name='IF1 01 ADC Swap Mux' 1"
+ cset "name='Stereo1 ADC L2 Mux' 0"
+ cset "name='Stereo1 ADC R2 Mux' 0"
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' 0"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/sc7180-rt5682-max98357a-1mic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/sc7180-rt5682-max98357a-1mic.conf
new file mode 100644
index 00000000..6a2be7ee
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc7180/rt5682-max98357a/sc7180-rt5682-max98357a-1mic.conf
@@ -0,0 +1,11 @@
+Comment "SC7180 RT5682 MAX98357A single microphone sound card"
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sc7180/rt5682-max98357a/HiFi.conf"
+ Comment "Default"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.init.File "/Qualcomm/sc7180/rt5682-max98357a/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/HiFi.conf
new file mode 100644
index 00000000..d0f6fbf4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/HiFi.conf
@@ -0,0 +1,83 @@
+# Use case configuration for LenovoX13s.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+ EnableSequence [
+ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1"
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 1"
+ cset "name='MultiMedia4 Mixer VA_CODEC_DMA_TX_0' 1"
+ cset "name='MultiMedia3 Mixer TX_CODEC_DMA_TX_3' 1"
+ ]
+
+ Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf"
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wsamspke.File "/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf"
+ Include.wsamspkd.File "/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf"
+ Include.wsaspke.File "/codecs/wsa883x/SpeakerEnableSeq.conf"
+ Include.wsaspkd.File "/codecs/wsa883x/SpeakerDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Speakers"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones playback"
+
+ Include.wcdhpe.File "/codecs/wcd938x/HeadphoneEnableSeq.conf"
+ Include.wcdhpd.File "/codecs/wcd938x/HeadphoneDisableSeq.conf"
+ Include.rxmhpe.File "/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf"
+ Include.rxmhpd.File "/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "HP"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Mic"
+
+ Include.wcdmice.File "/codecs/wcd938x/HeadphoneMicEnableSeq.conf"
+ Include.wcdmicd.File "/codecs/wcd938x/HeadphoneMicDisableSeq.conf"
+ Include.txmhpe.File "/codecs/qcom-lpass/tx-macro/HeadphoneMicEnableSeq.conf"
+ Include.txmhpd.File "/codecs/qcom-lpass/tx-macro/HeadphoneMicDisableSeq.conf"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ CaptureMixerElem "ADC2"
+ JackControl "Mic Jack"
+ JackHWMute "DMic01"
+ }
+}
+
+SectionDevice."DMic01" {
+ Comment "DMic01"
+
+ Include.vadm0e.File "/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf"
+ Include.vadm0d.File "/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf"
+ Include.vadm1e.File "/codecs/qcom-lpass/va-macro/DMIC1EnableSeq.conf"
+ Include.vadm1d.File "/codecs/qcom-lpass/va-macro/DMIC1DisableSeq.conf"
+
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},3"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/LENOVO-X13s.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/LENOVO-X13s.conf
new file mode 100644
index 00000000..de6d9c6c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/LENOVO-X13s.conf
@@ -0,0 +1,21 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sc8280xp/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+BootSequence [
+ cset "name='SpkrLeft PA Volume' 12"
+ cset "name='SpkrRight PA Volume' 12"
+ cset "name='HPHL Volume' 2"
+ cset "name='HPHR Volume' 2"
+ cset "name='ADC2 Volume' 10"
+]
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.wcd-init.File "/codecs/wcd938x/init.conf"
+Include.wsa-init.File "/codecs/wsa883x/init.conf"
+Include.wsam-init.File "/codecs/qcom-lpass/wsa-macro/init.conf"
+Include.rxm-init.File "/codecs/qcom-lpass/rx-macro/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/sc8280xp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/sc8280xp.conf
new file mode 100644
index 00000000..cb37c589
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sc8280xp/sc8280xp.conf
@@ -0,0 +1,11 @@
+Syntax 4
+
+If.LENOVOX13s {
+ Condition {
+ Type RegexMatch
+ String "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}"
+ Regex "LENOVO.*ThinkPad X13s.*"
+ }
+ True.Include.x13s.File "/Qualcomm/sc8280xp/LENOVO-X13s.conf"
+ False.Error "SC8280XP - ${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family} model not supported"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HDMI.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HDMI.conf
new file mode 100644
index 00000000..18448837
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HDMI.conf
@@ -0,0 +1,26 @@
+# Use case configuration for DB845c board.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+ EnableSequence [
+ cset "name='QUAT_MI2S_RX Audio Mixer MultiMedia1' 1"
+ ]
+
+ DisableSequence [
+ cset "name='QUAT_MI2S_RX Audio Mixer MultiMedia1' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."HDMI" {
+ #Name "HDMI"
+ Comment "HDMI Digital Stereo Output"
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackPriority 200
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf
new file mode 100644
index 00000000..f477c7ce
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf
@@ -0,0 +1,76 @@
+# Use case configuration for LenovoYOGAC6301.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1"
+ cset "name='SLIMBUS_1_RX Audio Mixer MultiMedia3' 1"
+ cset "name='MultiMedia2 Mixer SLIMBUS_0_TX' 1"
+ ]
+
+ Include.wcde.File "/codecs/wcd934x/DefaultEnableSeq.conf"
+ Include.wsae.File "/codecs/wsa881x/DefaultEnableSeq.conf"
+
+ Include.wcdd {
+ File "/codecs/wcd934x/DefaultDisableSeq.conf"
+ Before.DisableSequence "0"
+ }
+
+ DisableSequence [
+ cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0"
+ cset "name='SLIMBUS_1_RX Audio Mixer MultiMedia3' 0"
+ cset "name='MultiMedia2 Mixer SLIMBUS_0_TX' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wcdspke.File "/codecs/wcd934x/SpeakerEnableSeq.conf"
+ Include.wcdspkd.File "/codecs/wcd934x/SpeakerDisableSeq.conf"
+ Include.wsaspke.File "/codecs/wsa881x/SpeakerEnableSeq.conf"
+ Include.wsaspkd.File "/codecs/wsa881x/SpeakerDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Speaker Digital"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones playback"
+
+ Include.wcdhpe.File "/codecs/wcd934x/HeadphoneEnableSeq.conf"
+ Include.wcdhpd.File "/codecs/wcd934x/HeadphoneDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},2"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "HP Digital"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Mic"
+
+ Include.wcdmice.File "/codecs/wcd934x/HeadphoneMicEnableSeq.conf"
+ Include.wcdmicd.File "/codecs/wcd934x/HeadphoneMicDisableSeq.conf"
+
+ DisableSequence [
+ cset "name='AMIC MUX0' ZERO"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ CaptureMixerElem "ADC2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi.conf
new file mode 100644
index 00000000..0b8a7998
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi.conf
@@ -0,0 +1,40 @@
+# Use case configuration for DB845c.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia2' 1"
+ ]
+
+ Include.wcde.File "/codecs/wcd934x/DefaultEnableSeq.conf"
+ Include.wsae.File "/codecs/wsa881x/DefaultEnableSeq.conf"
+
+ Include.wcdd {
+ File "/codecs/wcd934x/DefaultDisableSeq.conf"
+ Before.DisableSequence "0"
+ }
+
+ DisableSequence [
+ cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia2' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wcde.File "/codecs/wcd934x/SpeakerEnableSeq.conf"
+ Include.wsae.File "/codecs/wsa881x/SpeakerEnableSeq.conf"
+ Include.wsad.File "/codecs/wsa881x/SpeakerDisableSeq.conf"
+ Include.wcdd.File "/codecs/wcd934x/SpeakerDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackVolume "RX2 Digital Volume"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf
new file mode 100644
index 00000000..227a1d0c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf
@@ -0,0 +1,10 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sdm845/HiFi-MM1.conf"
+ Comment "HiFi quality Music."
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/wcd934x/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/sdm845.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/sdm845.conf
new file mode 100644
index 00000000..097c1d4e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/sdm845.conf
@@ -0,0 +1,11 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sdm845/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+SectionUseCase."HDMI" {
+ File "/Qualcomm/sdm845/HDMI.conf"
+ Comment "HDMI output."
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HDMI.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HDMI.conf
new file mode 100644
index 00000000..a9594fd9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HDMI.conf
@@ -0,0 +1,26 @@
+# Use case configuration for RB5 board.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+ EnableSequence [
+ cset "name='TERT_MI2S_RX Audio Mixer MultiMedia1' 1"
+ ]
+
+ DisableSequence [
+ cset "name='TERT_MI2S_RX Audio Mixer MultiMedia1' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."HDMI" {
+ #Name "HDMI"
+ Comment "HDMI Digital Stereo Output"
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackPriority 200
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HiFi.conf
new file mode 100644
index 00000000..631bc063
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/HiFi.conf
@@ -0,0 +1,46 @@
+# Use case configuration for Qualcomm RB5.
+# Author: Srinivas Kandagatla
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 1"
+ cset "name='MultiMedia3 Mixer VA_CODEC_DMA_TX_0' 1"
+ ]
+
+ Include.wsae.File "/codecs/wsa881x/DefaultEnableSeq.conf"
+
+ DisableSequence [
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 0"
+ cset "name='MultiMedia3 Mixer VA_CODEC_DMA_TX_0' 0"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.lpasswsae.File "/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf"
+ Include.wsae.File "/codecs/wsa881x/SpeakerEnableSeq.conf"
+ Include.wsad.File "/codecs/wsa881x/SpeakerDisableSeq.conf"
+ Include.lpasswsad.File "/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Mic"
+ Include.lpassvae.File "/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf"
+ Include.lpassvad.File "/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
new file mode 100644
index 00000000..2fbca311
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
@@ -0,0 +1,11 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sm8250/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+SectionUseCase."HDMI" {
+ File "/Qualcomm/sm8250/HDMI.conf"
+ Comment "HDMI output."
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/HiFi.conf
new file mode 100644
index 00000000..86afbad6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/HiFi.conf
@@ -0,0 +1,26 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 1"
+ ]
+
+ Include.wsae.File "/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf"
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wcdspk1e.File "/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf"
+ Include.wcdspk1d.File "/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf"
+ Include.wsaspkd.File "/codecs/wsa884x/two-speakers/SpeakerSeq.conf"
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixer "default:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/SM8650-MTP.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/SM8650-MTP.conf
new file mode 100644
index 00000000..b8077e1c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/MTP/SM8650-MTP.conf
@@ -0,0 +1,11 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sm8650/MTP/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/wsa884x/two-speakers/init.conf"
+Include.codec-init.File "/codecs/qcom-lpass/wsa-macro/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/HiFi.conf
new file mode 100644
index 00000000..50c16018
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/HiFi.conf
@@ -0,0 +1,99 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1"
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 1"
+ cset "name='MultiMedia3 Mixer TX_CODEC_DMA_TX_3' 1"
+ ]
+
+ Include.wcde.File "/codecs/wcd939x/DefaultEnableSeq.conf"
+ Include.wsae.File "/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf"
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wcdspk1e.File "/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf"
+ Include.wcdspk1d.File "/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf"
+ Include.wsaspkd.File "/codecs/wsa884x/two-speakers/SpeakerSeq.conf"
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixer "default:${CardId}"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Include.wcdhpe.File "/codecs/wcd939x/HeadphoneEnableSeq.conf"
+ Include.wcdhpd.File "/codecs/wcd939x/HeadphoneDisableSeq.conf"
+ Include.rxmhpe.File "/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf"
+ Include.rxmhpd.File "/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf"
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "HP Digital"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Bottom" {
+ Comment "Bottom Microphone"
+
+ Include.wcdmice.File "/codecs/wcd939x/AnalogMic1EnableSeq.conf"
+ Include.wcdmicd.File "/codecs/wcd939x/AnalogMicDisableSeq.conf"
+ Include.txmhpe.File "/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf"
+ Include.txmhpd.File "/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf"
+
+ Value {
+ CaptureChannels 1
+ CapturePriority 200
+ CapturePCM "hw:${CardId},2"
+ CaptureMixerElem "ADC1"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Include.wcdmice.File "/codecs/wcd939x/HeadphoneMicEnableSeq.conf"
+ Include.wcdmicd.File "/codecs/wcd939x/HeadphoneMicDisableSeq.conf"
+ Include.txmhpe.File "/codecs/qcom-lpass/tx-macro/SoundwireMic1EnableSeq.conf"
+ Include.txmhpd.File "/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf"
+
+ Value {
+ CaptureChannels 1
+ CapturePriority 300
+ CapturePCM "hw:${CardId},2"
+ CaptureMixerElem "ADC2"
+ JackControl "Mic Jack"
+ JackHWMute "Bottom"
+ JackHWMute "Back"
+ }
+}
+
+SectionDevice."Back" {
+ Comment "Back Microphone"
+
+ Include.wcdmice.File "/codecs/wcd939x/AnalogMic4EnableSeq.conf"
+ Include.wcdmicd.File "/codecs/wcd939x/AnalogMicDisableSeq.conf"
+ Include.txmhpe.File "/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf"
+ Include.txmhpd.File "/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf"
+
+ Value {
+ CaptureChannels 1
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ CaptureMixerElem "ADC1"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/SM8650-QRD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/SM8650-QRD.conf
new file mode 100644
index 00000000..a1991d56
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/sm8650/QRD/SM8650-QRD.conf
@@ -0,0 +1,13 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/sm8650/QRD/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.codec-init.File "/codecs/wsa884x/two-speakers/init.conf"
+Include.codec-init.File "/codecs/wcd939x/init.conf"
+Include.codec-init.File "/codecs/qcom-lpass/wsa-macro/init.conf"
+Include.codec-init.File "/codecs/qcom-lpass/rx-macro/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/HiFi.conf
new file mode 100644
index 00000000..dcecacf3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/HiFi.conf
@@ -0,0 +1,54 @@
+# Use case configuration for X1E80100.
+# Author: Krzysztof Kozlowski
+
+SectionVerb {
+ EnableSequence [
+ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1"
+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia2' 1"
+ cset "name='MultiMedia3 Mixer TX_CODEC_DMA_TX_3' 1"
+ cset "name='MultiMedia4 Mixer VA_CODEC_DMA_TX_0' 1"
+ ]
+
+ Include.wsae.File "/codecs/wsa884x/four-speakers/DefaultEnableSeq.conf"
+ Include.wsm1e.File "/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf"
+ Include.wsm2e.File "/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf"
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker playback"
+
+ Include.wsmspk1e.File "/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf"
+ Include.wsmspk2e.File "/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf"
+ Include.wsmspk1d.File "/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerDisableSeq.conf"
+ Include.wsmspk2d.File "/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerDisableSeq.conf"
+ Include.wsaspk.File "/codecs/wsa884x/four-speakers/SpeakerSeq.conf"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Speakers"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones playback"
+
+ Include.wcdhpe.File "/codecs/wcd938x/HeadphoneEnableSeq.conf"
+ Include.wcdhpd.File "/codecs/wcd938x/HeadphoneDisableSeq.conf"
+ Include.rxmhpe.File "/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf"
+ Include.rxmhpd.File "/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "HP Digital"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/X1E80100-CRD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/X1E80100-CRD.conf
new file mode 100644
index 00000000..c7331450
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Qualcomm/x1e80100/X1E80100-CRD.conf
@@ -0,0 +1,19 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Qualcomm/x1e80100/HiFi.conf"
+ Comment "HiFi quality Music."
+}
+
+BootSequence [
+ cset "name='HPHL Volume' 20"
+ cset "name='HPHR Volume' 20"
+ cset "name='ADC2 Volume' 10"
+]
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+Include.wcd-init.File "/codecs/wcd938x/init.conf"
+Include.wsa-init.File "/codecs/wsa884x/four-speakers/init.conf"
+Include.wsam-init.File "/codecs/qcom-lpass/wsa-macro/four-speakers/init.conf"
+Include.rxm-init.File "/codecs/qcom-lpass/rx-macro/init.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/README.md b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/README.md
new file mode 100644
index 00000000..012dafec
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/README.md
@@ -0,0 +1,62 @@
+Use Case Configuration files
+----------------------------
+
+Library directories:
+
+ platforms/
+ codecs/
+ dsps/
+
+Those directories are not inspected for the list of available UCM
+configurations. They contain files included from other UCMs.
+
+UCM master configuration path lookup is defined in the top level
+ucm.conf file. This file allows custom directory layout. The new
+ucm2 layout is based on the ALSA driver name with the kernel driver
+name as fallback. The virtual cards (no direct hw bound) lookups are
+placed to the separate conf.virt.d directory.
+
+The lookup configuration:
+
+ https://git.alsa-project.org/?p=alsa-ucm-conf.git;a=blob;f=ucm2/ucm.conf
+
+Example paths - new conf.d scheme:
+
+- conf.d/USB-Audio/Dell-WD15-Dock.conf
+-- special configuration for the Dell docking station with USB soundcard
+- conf.virt.d/TwoCardsMix.conf
+-- virtual UCM from two soundcards
+
+Example paths - no conf.d scheme (may be invalidated):
+
+- USB-Audio/Dell-WD15-Dock.conf
+-- special configuration for the Dell docking station with USB soundcard
+- TwoCardsMix/TwoCardsMix.conf
+-- virtual UCM from two soundcards
+
+Note: For the driver configurations, use always the ALSA driver name or
+the real kernel driver name - not the ucm card name configuration paths!
+
+The kernel driver name is obtained using sysfs like (last
+part of the path is used from the symlink):
+
+````
+ /sys/class/sound/card0/device/driver
+````
+
+The ALSA driver name can be obtained using procfs like:
+
+````
+ cat /proc/asound/cards
+ 1 [NVidia ]: HDA-Intel - HDA NVidia
+ HDA NVidia at 0xb5080000 irq 17
+
+ driver name: HDA-Intel
+ card short name: HDA NVidia
+ card long name: HDA NVidia at 0xb5080000 irq 17
+````
+
+Syntax, value names
+-------------------
+
+https://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=include/use-case.h
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf
new file mode 100644
index 00000000..2124ded7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf
@@ -0,0 +1,66 @@
+# Reference:
+# https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/-/blob/4b4206c57b21044bf9c00848bd1f8b6f710d19eb/asound.state
+# https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-audio/-/blob/1f567db09495acc3beb5405c9ef85c3c07b86785/audio_jack_plugged_in.sh
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Playback Polarity' 'R Invert'"
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ EnableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Playback Polarity' 'Normal'"
+ ]
+ DisableSequence [
+ cset "name='Playback Polarity' 'R Invert'"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ JackControl "Headphones Jack"
+ JackHWMute "Speaker"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/es8316.conf
new file mode 100644
index 00000000..62044e6e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/es8316/es8316.conf
@@ -0,0 +1,29 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Rockchip/es8316/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+BootSequence [
+ # Disable all outputs
+ cset "name='Speaker Switch' off"
+
+ # Set HP vol to 0 dB (3/3)
+ cset "name='Headphone Playback Volume' 3"
+ # Set HP mixer vol to 0 dB
+ cset "name='Headphone Mixer Volume' 11"
+ # Set DAC vol to 0 dB (192/192)
+ cset "name='DAC Playback Volume' 192"
+
+ # Disable Auto Level Control
+ cset "name='ALC Capture Switch' off"
+ # Set ADC vol to 0 dB (192/192)
+ cset "name='ADC Capture Volume' 192"
+ # Set Mic amplifier to +16 dB
+ cset "name='ADC PGA Gain Volume' 7"
+
+ # Setup muxes / switches
+ cset "name='Left Headphone Mixer Left DAC Switch' on"
+ cset "name='Right Headphone Mixer Right DAC Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/HiFi.conf
new file mode 100644
index 00000000..344967cd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/HiFi.conf
@@ -0,0 +1,138 @@
+SectionVerb {
+ Value {
+ MinBufferLevel "512"
+ }
+
+ EnableSequence [
+ cset "name='Left Speaker Mixer Left DAC Switch' on"
+ cset "name='Right Speaker Mixer Right DAC Switch' on"
+ cset "name='Headphone Left Switch' off"
+ cset "name='Headphone Right Switch' off"
+ cset "name='Digital EQ 3 Band Switch' off"
+ cset "name='Digital EQ 5 Band Switch' off"
+ cset "name='Digital EQ 7 Band Switch' off"
+ cset "name='Biquad Switch' off"
+ cset "name='Filter Mode' Music"
+ cset "name='ADC Oversampling Rate' 0"
+
+ cset "name='DMIC Mux' DMIC"
+ cset "name='MIC2 Mux' IN34"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='MIC2 Volume' 20"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Int Mic Switch' on"
+
+ cset "name='ADCR Boost Volume' 4"
+ cset "name='ADCL Boost Volume' 4"
+ cset "name='ADCR Volume' 11"
+ cset "name='ADCL Volume' 11"
+
+ cset "name='Left Speaker Mixer Left DAC Switch' on"
+ cset "name='Right Speaker Mixer Right DAC Switch' on"
+ cset "name='Speaker Left Mixer Volume' 2"
+ cset "name='Speaker Right Mixer Volume' 2"
+ cset "name='Record Path DC Blocking' on"
+ cset "name='Playback Path DC Blocking' on"
+
+ cset "name='Speaker Left Switch' on"
+ cset "name='Speaker Right Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackVolume "Speaker Volume"
+ }
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ PlaybackVolume "Headphone Volume"
+ }
+
+ EnableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Headphone Left Switch' on"
+ cset "name='Headphone Right Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Headphone Left Switch' off"
+ cset "name='Headphone Right Switch' off"
+ cset "name='Speaker Switch' on"
+ ]
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ }
+
+ EnableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='DMIC Mux' ADC"
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='DMIC Mux' DMIC"
+ cset "name='Int Mic Switch' on"
+ ]
+}
+
+SectionDevice."HDMI" {
+ Comment "HDMI Jack"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},1"
+ JackControl "HDMI Jack"
+ }
+
+ EnableSequence [
+ cset "name='HDMI Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='HDMI Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/max98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/max98090.conf
new file mode 100644
index 00000000..9e482a07
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/max98090/max98090.conf
@@ -0,0 +1,8 @@
+Syntax 2
+
+Comment "Rockchip Veyron card"
+
+SectionUseCase."HiFi" {
+ File "/Rockchip/max98090/HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/HiFi.conf
new file mode 100644
index 00000000..4d2d3fa5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/HiFi.conf
@@ -0,0 +1,125 @@
+SectionVerb {
+ Value {
+ MinBufferLevel "512"
+ }
+
+ EnableSequence [
+ cset "name='Stereo1 DMIC Mux' DMIC1"
+ cset "name='Sto1 ADC MIXL DMIC Switch' on"
+ cset "name='Sto1 ADC MIXR DMIC Switch' on"
+
+ cset "name='Mixer Out FilterL DACL Switch' on"
+ cset "name='Mixer Out FilterR DACR Switch' on"
+ cset "name='Playback Digital Switch' on"
+ cset "name='Headphone Switch' on"
+
+ cset "name='Mixin Volume' 11"
+ cset "name='Mixin Switch' on"
+ cset "name='Mixer In Mic Switch' on"
+ cset "name='Out DAIL Mux' ADC"
+ cset "name='Out DAIR Mux' ADC"
+ cset "name='ADC1 Capture Volume' 51"
+ cset "name='Mic Volume' 6"
+ cset "name='Capture Digital Switch' on"
+ cset "name='Mic Switch' on"
+
+ cset "name='Speakers Switch' off"
+ cset "name='Int Mic Switch' off"
+ cset "name='Headphones Switch' off"
+ cset "name='Headset Mic Switch' off"
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Speakers"
+ }
+
+ EnableSequence [
+ cset "name='Speakers Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speakers Switch' off"
+ ]
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},1"
+ CaptureMixerElem "ADC1"
+ }
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ ]
+
+ ConflictingDevice [
+ "Headset"
+ ]
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},2"
+ PlaybackMixerElem "Headphone"
+ JackControl "Headphones Jack"
+ }
+
+ EnableSequence [
+ cset "name='Headphones Switch' on"
+ cset "name='DAC Soft Mute Switch' off"
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='DAC Soft Mute Switch' on"
+ cset "name='Headphones Switch' off"
+ ]
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},2"
+ CaptureMixerElem "Mic"
+ JackControl "Headset Mic Jack"
+ }
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ ConflictingDevice [
+ "Mic"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf
new file mode 100644
index 00000000..afd7ac16
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf
@@ -0,0 +1,8 @@
+Syntax 2
+
+Comment "Rockchip Gru card"
+
+SectionUseCase."HiFi" {
+ File "/Rockchip/rk3399-gru-sound/HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/HiFi.conf
new file mode 100644
index 00000000..181875da
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/HiFi.conf
@@ -0,0 +1,42 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Playback Polarity' 'Normal'"
+ ]
+
+ DisableSequence [
+ cset "name='Playback Polarity' 'R Invert'"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ JackControl "Headphones Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone on IN2"
+
+ EnableSequence [
+ cset "name='Differential Mux' lin2-rin2"
+ cset "name='Left Headphone Mux' lin2-rin2"
+ cset "name='Right Headphone Mux' lin2-rin2"
+ ]
+
+ DisableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ cset "name='Left Headphone Mux' lin1-rin1"
+ cset "name='Right Headphone Mux' lin1-rin1"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/rk3588-es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/rk3588-es8316.conf
new file mode 100644
index 00000000..6aa50ff0
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk3588-es8316/rk3588-es8316.conf
@@ -0,0 +1,26 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+ File "/Rockchip/rk3588-es8316/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+BootSequence [
+ # Set HP vol to 0 dB (3/3)
+ cset "name='Headphone Playback Volume' 3"
+ # Set HP mixer vol to 0 dB
+ cset "name='Headphone Mixer Volume' 11"
+ # Set DAC vol to 0 dB (192/192)
+ cset "name='DAC Playback Volume' 192"
+
+ # Disable Auto Level Control
+ cset "name='ALC Capture Switch' off"
+ # Set ADC vol to 0 dB (192/192)
+ cset "name='ADC Capture Volume' 192"
+ # Set Mic amplifier to +16 dB
+ cset "name='ADC PGA Gain Volume' 7"
+
+ # Setup muxes / switches
+ cset "name='Left Headphone Mixer Left DAC Switch' on"
+ cset "name='Right Headphone Mixer Right DAC Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/HiFi.conf
new file mode 100644
index 00000000..8d905678
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/HiFi.conf
@@ -0,0 +1,68 @@
+Define.pbk_mux "SPK"
+
+If.1 {
+ Condition {
+ Type ControlExists
+ Control "name='Internal Speakers Switch'"
+ }
+
+ True {
+ Define.pbk_mux "HP"
+ SectionDevice."Speaker".EnableSequence [
+ cset "name='Internal Speakers Switch' on"
+ ]
+
+ SectionDevice."Speaker".DisableSequence [
+ cset "name='Internal Speakers Switch' off"
+ ]
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Internal Speaker"
+
+ EnableSequence [
+ cset "name='Playback Mux' ${var:pbk_mux}"
+ ]
+
+ Value {
+ PlaybackMixerElem "Master Playback Volume"
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+}
+
+SectionDevice."Mic" {
+ Comment "Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "Mic Capture Gain"
+ CaptureMasterElem "Master Capture Volume"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Playback Mux' HP"
+ ]
+
+ Value {
+ PlaybackMixerElem "Master Playback Volume"
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphones Jack"
+ JackHWMute "Speaker"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/rk817-sound.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/rk817-sound.conf
new file mode 100644
index 00000000..90ec7946
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Rockchip/rk817-sound/rk817-sound.conf
@@ -0,0 +1,6 @@
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Rockchip/rk817-sound/HiFi.conf"
+ Comment "Play HiFi quality music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/HiFi.conf
new file mode 100644
index 00000000..c278ad66
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/HiFi.conf
@@ -0,0 +1,58 @@
+# It's configuration for DAISY-I2S, update for another hw!
+
+SectionVerb {
+ EnableSequence [
+ cset "name='Left Speaker Mixer Left DAC1 Switch' on"
+ cset "name='Right Speaker Mixer Right DAC1 Switch' on"
+ cset "name='Left Headphone Mixer Left DAC1 Switch' on"
+ cset "name='Right Headphone Mixer Right DAC1 Switch' on"
+ cset "name='DMIC1 Left Capture Switch' on"
+ cset "name='DMIC1 Right Capture Switch' on"
+ cset "name='MIC2 External Mic Switch' on"
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ cset "name='EQ1 Mode' Default"
+ cset "name='DAI1 Filter Mode' Music"
+ ]
+}
+
+SectionDevice."Headphones" {
+ EnableSequence [
+ cset "name='EQ1 Switch' off"
+ cset "name='Left Headphone Mixer Left DAC1 Switch' on"
+ cset "name='Right Headphone Mixer Right DAC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='EQ1 Mode' Default"
+ cset "name='EQ1 Switch' on"
+ cset "name='Left Speaker Mixer Left DAC1 Switch' on"
+ cset "name='Right Speaker Mixer Right DAC1 Switch' on"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic" {
+ EnableSequence [
+ cset "name='DMIC1 Left Capture Switch' off"
+ cset "name='DMIC1 Right Capture Switch' off"
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Left ADC Mixer MIC2 Switch' off"
+ cset "name='Right ADC Mixer MIC2 Switch' off"
+ cset "name='DMIC1 Left Capture Switch' on"
+ cset "name='DMIC1 Right Capture Switch' on"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/snow.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/snow.conf
new file mode 100644
index 00000000..aea4710f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Samsung/snow/snow.conf
@@ -0,0 +1,8 @@
+Syntax 3
+
+Comment "Internal card"
+
+SectionUseCase."HiFi" {
+ File "/Samsung/snow/HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/HiFi.conf
new file mode 100644
index 00000000..e3136a76
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/HiFi.conf
@@ -0,0 +1,39 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Int Spk Switch' on"
+ cset "name='Speaker Mix DAC2SPK Playback Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ cset "name='Int Spk Switch' off"
+ cset "name='Speaker Mix DAC2SPK Playback Switch' off"
+ ]
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ # Internal speaker
+ cset "name='Int Spk Switch' off"
+
+ # Headphones
+ cset "name='Headphone Playback Switch' on"
+ cset "name='HPL Mix DACL2HP Playback Switch' on"
+ cset "name='HPR Mix DACR2HP Playback Switch' on"
+ ]
+ DisableSequence [
+ # Headphones
+ cset "name='Headphone Playback Switch' off"
+ cset "name='HPL Mix DACL2HP Playback Switch' off"
+ cset "name='HPR Mix DACR2HP Playback Switch' off"
+
+ # Internal speaker
+ cset "name='Int Spk Switch' on"
+ ]
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/Record.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/Record.conf
new file mode 100644
index 00000000..15b8164c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/Record.conf
@@ -0,0 +1,59 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Int Spk Switch' on"
+ cset "name='Speaker Mix DAC2SPK Playback Switch' on"
+
+ cset "name='DMICL Mix DMICL2ADC Capture Switch' on"
+ cset "name='DMIC En Capture Switch' on"
+ cset "name='DMIC PreFilter Capture Switch' on"
+ ]
+ DisableSequence [
+ cset "name='Speaker Playback Switch' off"
+ cset "name='Int Spk Switch' off"
+ cset "name='Speaker Mix DAC2SPK Playback Switch' off"
+
+ cset "name='DMICL Mix DMICL2ADC Capture Switch' off"
+ cset "name='DMIC En Capture Switch' off"
+ cset "name='DMIC PreFilter Capture Switch' off"
+ ]
+}
+
+SectionDevice."Headset" {
+ Comment "3.5mm Headset"
+
+ EnableSequence [
+ # Internal speaker
+ cset "name='Int Spk Switch' off"
+
+ # Internal mic
+ cset "name='DMIC En Capture Switch' off"
+
+ # Headphones
+ cset "name='Headphone Playback Switch' on"
+ cset "name='HPL Mix DACL2HP Playback Switch' on"
+ cset "name='HPR Mix DACR2HP Playback Switch' on"
+
+ # External min
+ cset "name='Left Capture Mix MIC12REC_L Capture Switch' on"
+ ]
+ DisableSequence [
+ # Headphones
+ cset "name='Headphone Playback Switch' off"
+ cset "name='HPL Mix DACL2HP Playback Switch' off"
+ cset "name='HPR Mix DACR2HP Playback Switch' off"
+
+ # External mic
+ cset "name='Left Capture Mix MIC12REC_L Capture Switch' on"
+
+ # Internal speaker
+ cset "name='Int Spk Switch' on"
+
+ # Internal mic
+ cset "name='DMIC En Capture Switch' on"
+ ]
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/alc5632.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/alc5632.conf
new file mode 100644
index 00000000..57c64e35
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/alc5632/alc5632.conf
@@ -0,0 +1,44 @@
+Syntax 2
+
+Comment "PAZ00 alc5632"
+
+BootSequence [
+ cset "name='Master Playback Switch' on"
+ cset "name='Master Playback Volume' 44,44"
+ cset "name='Headphone Playback Volume' 21,21"
+ cset "name='Speaker Playback Volume' 21,21"
+ cset "name='SpeakerOut Mux' 2"
+ cset "name='SpeakerOut N Mux' LN/-R"
+ cset "name='AB-D Amp Mux' 0"
+ cset "name='Left Headphone Mux' 1"
+ cset "name='Right Headphone Mux' 1"
+ cset "name='DMIC Boost Capture Volume' 4"
+ cset "name='Rec Capture Volume' 24"
+
+ # Fix external mic record volumes
+ cset "name='Mic 1 Boost Volume' 0"
+ cset "name='Mic 2 Boost Volume' 0"
+ cset "name='Mic1 Playback Volume' 0"
+ cset "name='Mic2 Playback Volume' 0"
+ cset "name='Rec Capture Volume' 0"
+
+ # Enable internal speaker
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Int Spk Switch' on"
+ cset "name='Speaker Mix DAC2SPK Playback Switch' on"
+
+ # Enable DMIC
+ cset "name='DMICL Mix DMICL2ADC Capture Switch' on"
+ cset "name='DMIC En Capture Switch' on"
+ cset "name='DMIC PreFilter Capture Switch' on"
+]
+
+SectionUseCase."HiFi" {
+ File "/Tegra/alc5632/HiFi.conf"
+ Comment "Music playback"
+}
+
+SectionUseCase."Record" {
+ File "/Tegra/alc5632/Record.conf"
+ Comment "Playback and capture"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-HiFi.conf
new file mode 100644
index 00000000..3738d724
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-HiFi.conf
@@ -0,0 +1,148 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ cset "name='Int Spk Switch' on"
+
+ cset "name='Left SPK Mixer Left DAC1 Switch' on"
+ cset "name='Left SPK Mixer Left DAC2 Switch' on"
+ cset "name='Left SPK Mixer Right DAC1 Switch' on"
+ cset "name='Left SPK Mixer Right DAC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Int Spk Switch' off"
+
+ cset "name='Left SPK Mixer Left DAC1 Switch' off"
+ cset "name='Left SPK Mixer Left DAC2 Switch' off"
+ cset "name='Left SPK Mixer Right DAC1 Switch' off"
+ cset "name='Left SPK Mixer Right DAC2 Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 300
+
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+
+ cset "name='Left HP Mixer Left DAC1 Switch' on"
+ cset "name='Left HP Mixer Left DAC2 Switch' on"
+ cset "name='Right HP Mixer Right DAC1 Switch' on"
+ cset "name='Right HP Mixer Right DAC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+
+ cset "name='Left HP Mixer Left DAC1 Switch' off"
+ cset "name='Left HP Mixer Left DAC2 Switch' off"
+ cset "name='Right HP Mixer Right DAC1 Switch' off"
+ cset "name='Right HP Mixer Right DAC2 Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 100
+
+ PlaybackMixerElem "Headphone"
+
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Mic2"
+ ]
+
+ EnableSequence [
+ # Main MIC
+ cset "name='Internal Mic 1 Switch' on"
+ cset "name='DAI1 ADC Filter' fc=258/fs=16k"
+
+ cset "name='Left ADC Mixer MIC1 Switch' on"
+ cset "name='Right ADC Mixer MIC1 Switch' on"
+
+ # Secondary MIC
+ cset "name='Int Mic Switch' on"
+ cset "name='Internal Mic 2 Switch' on"
+
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ ]
+
+ DisableSequence [
+ # Main MIC
+ cset "name='Internal Mic 1 Switch' off"
+ cset "name='DAI1 ADC Filter' off"
+
+ cset "name='Left ADC Mixer MIC1 Switch' off"
+ cset "name='Right ADC Mixer MIC1 Switch' off"
+
+ # Secondary MIC
+ cset "name='Int Mic Switch' off"
+ cset "name='Internal Mic 2 Switch' off"
+
+ cset "name='Left ADC Mixer MIC2 Switch' off"
+ cset "name='Right ADC Mixer MIC2 Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CaptureChannels 2
+ CapturePriority 200
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "External Microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Jack Switch' on"
+
+ cset "name='Left ADC Mixer INA1 Switch' on"
+ cset "name='Right ADC Mixer INA1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic Jack Switch' off"
+
+ cset "name='Left ADC Mixer INA1 Switch' off"
+ cset "name='Right ADC Mixer INA1 Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 100
+
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf
new file mode 100644
index 00000000..1634c7b7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf
@@ -0,0 +1,125 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Earpiece"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ cset "name='Int Spk Switch' on"
+
+ cset "name='Left SPK Mixer Left DAC1 Switch' on"
+ cset "name='Left SPK Mixer Left DAC2 Switch' on"
+ cset "name='Left SPK Mixer Right DAC1 Switch' on"
+ cset "name='Left SPK Mixer Right DAC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Int Spk Switch' off"
+
+ cset "name='Left SPK Mixer Left DAC1 Switch' off"
+ cset "name='Left SPK Mixer Left DAC2 Switch' off"
+ cset "name='Left SPK Mixer Right DAC1 Switch' off"
+ cset "name='Left SPK Mixer Right DAC2 Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 100
+
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Earpiece" {
+ Comment "Earpiece"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Receiver Switch' on"
+ cset "name='Earpiece Switch' on"
+
+ cset "name='Left REC Mixer Left DAC1 Switch' on"
+ cset "name='Left REC Mixer Left DAC2 Switch' on"
+ cset "name='Left REC Mixer Right DAC1 Switch' on"
+ cset "name='Left REC Mixer Right DAC2 Switch' on"
+
+ cset "name='Right REC Mixer Left DAC1 Switch' on"
+ cset "name='Right REC Mixer Left DAC2 Switch' on"
+ cset "name='Right REC Mixer Right DAC1 Switch' on"
+ cset "name='Right REC Mixer Right DAC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Receiver Switch' off"
+ cset "name='Earpiece Switch' off"
+
+ cset "name='Left REC Mixer Left DAC1 Switch' off"
+ cset "name='Left REC Mixer Left DAC2 Switch' off"
+ cset "name='Left REC Mixer Right DAC1 Switch' off"
+ cset "name='Left REC Mixer Right DAC2 Switch' off"
+
+ cset "name='Right REC Mixer Left DAC1 Switch' off"
+ cset "name='Right REC Mixer Left DAC2 Switch' off"
+ cset "name='Right REC Mixer Right DAC1 Switch' off"
+ cset "name='Right REC Mixer Right DAC2 Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 200
+
+ PlaybackMixerElem "Receiver"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+
+ EnableSequence [
+ # Main MIC
+ cset "name='Internal Mic 1 Switch' on"
+ cset "name='DAI1 ADC Filter' fc=258/fs=16k"
+
+ cset "name='Left ADC Mixer MIC1 Switch' on"
+ cset "name='Right ADC Mixer MIC1 Switch' on"
+
+ # Secondary MIC
+ cset "name='Int Mic Switch' on"
+ cset "name='Internal Mic 2 Switch' on"
+
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ ]
+
+ DisableSequence [
+ # Main MIC
+ cset "name='Internal Mic 1 Switch' off"
+ cset "name='DAI1 ADC Filter' off"
+
+ cset "name='Left ADC Mixer MIC1 Switch' off"
+ cset "name='Right ADC Mixer MIC1 Switch' off"
+
+ # Secondary MIC
+ cset "name='Int Mic Switch' off"
+ cset "name='Internal Mic 2 Switch' off"
+
+ cset "name='Left ADC Mixer MIC2 Switch' off"
+ cset "name='Right ADC Mixer MIC2 Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CaptureChannels 2
+ CapturePriority 200
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3.conf
new file mode 100644
index 00000000..994a6065
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98089/lge-x3.conf
@@ -0,0 +1,47 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+Syntax 4
+
+BootSequence [
+ cset "name='MIC1 Volume' 10"
+ cset "name='MIC1 Boost Volume' 1"
+ cset "name='MIC2 Volume' 10"
+ cset "name='MIC2 Boost Volume' 1"
+
+ cset "name='INA Volume' 5"
+ cset "name='INB Volume' 5"
+
+ cset "name='ADCL Volume' 15"
+ cset "name='ADCR Volume' 15"
+
+ cset "name='DAI1 Filter Mode' Music"
+
+ cset "name='EQ1 Switch' off"
+ cset "name='EQ2 Switch' off"
+
+ cset "name='Speaker Switch' off"
+ cset "name='Int Spk Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Earpiece Switch' off"
+ cset "name='Receiver Switch' off"
+
+ cset "name='Int Mic Switch' off"
+ cset "name='Internal Mic 1 Switch' off"
+ cset "name='Internal Mic 2 Switch' off"
+ cset "name='Mic Jack Switch' off"
+
+ cset "name='Right SPK Mixer Left DAC1 Switch' on"
+ cset "name='Right SPK Mixer Left DAC2 Switch' on"
+ cset "name='Right SPK Mixer Right DAC1 Switch' on"
+ cset "name='Right SPK Mixer Right DAC2 Switch' on"
+]
+
+SectionUseCase."HiFi" {
+ File "/Tegra/max98089/lge-x3-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionUseCase."Voice Call" {
+ File "/Tegra/max98089/lge-x3-VoiceCall.conf"
+ Comment "Make a phone call"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/HiFi.conf
new file mode 100644
index 00000000..5a8f8d89
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/HiFi.conf
@@ -0,0 +1,99 @@
+SectionVerb {
+ EnableSequence [
+ cset "name='Speakers Switch' off"
+ cset "name='Headphones Switch' off"
+ cset "name='Mic Jack Switch' off"
+ cset "name='Int Mic Switch' off"
+ ]
+}
+
+SectionDevice."Speakers" {
+ Comment = "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speakers Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speakers Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackVolume "Speaker Volume"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment = "Headphones"
+
+ ConflictingDevice [
+ "Speakers"
+ ]
+
+ EnableSequence [
+ cset "name='Headphones Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphones Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackVolume "Headphone Volume"
+ JackControl "Headphone Jack"
+ }
+
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='DMIC Mux' DMIC"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='DMIC Mux' ADC"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CaptureChannels 2
+ CaptureVolume "MIC2 Volume"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment = "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Jack Switch' on"
+ cset "name='DMIC Mux' ADC"
+ ]
+
+ DisableSequence [
+ cset "name='Mic Jack Switch' off"
+ cset "name='DMIC Mux' DMIC"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ #CaptureControl "MIC2"
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/max98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/max98090.conf
new file mode 100644
index 00000000..c9c7534b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/max98090/max98090.conf
@@ -0,0 +1,43 @@
+Syntax 2
+Comment "Nyan internal card"
+SectionUseCase."HiFi" {
+ File "/Tegra/max98090/HiFi.conf"
+ Comment "Default"
+}
+
+BootSequence [
+ cset "name='Left Speaker Mixer Left DAC Switch' on"
+ cset "name='Right Speaker Mixer Right DAC Switch' on"
+ cset "name='Headphone Left Switch' on"
+ cset "name='Headphone Right Switch' on"
+ cset "name='Digital EQ 3 Band Switch' off"
+ cset "name='Digital EQ 5 Band Switch' off"
+ cset "name='Digital EQ 7 Band Switch' off"
+ cset "name='Biquad Switch' off"
+ cset "name='Filter Mode' Music"
+ cset "name='ADC Oversampling Rate' 0"
+ cset "name='DMIC Mux' DMIC"
+ cset "name='MIC2 Mux' IN34"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='MIC2 Volume' 10"
+ cset "name='MIC2 Boost Volume' 0"
+ cset "name='Mic Jack Switch' off"
+ cset "name='Int Mic Switch' off"
+ cset "name='ADCR Boost Volume' 4"
+ cset "name='ADCL Boost Volume' 4"
+ cset "name='ADCR Volume' 11"
+ cset "name='ADCL Volume' 11"
+ cset "name='Left Speaker Mixer Left DAC Switch' on"
+ cset "name='Right Speaker Mixer Right DAC Switch' on"
+ cset "name='Speaker Left Mixer Volume' 2"
+ cset "name='Speaker Right Mixer Volume' 2"
+ cset "name='Record Path DC Blocking' on"
+ cset "name='Playback Path DC Blocking' on"
+ cset "name='Headphone Left Switch' on"
+ cset "name='Headphone Right Switch' on"
+ cset "name='Headphones Switch' off"
+ cset "name='Speaker Left Switch' on"
+ cset "name='Speaker Right Switch' on"
+ cset "name='Speakers Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer-HiFi.conf
new file mode 100644
index 00000000..adf3f265
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer-HiFi.conf
@@ -0,0 +1,101 @@
+# Use case Configuration for RT5631 based ASUS Transformers
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Playback Switch' on"
+ cset "name='Int Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Spk Switch' off"
+ cset "name='Speaker Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 200
+
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HP Playback Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='HP Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 100
+
+ PlaybackMixerElem "HP"
+
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Mic2"
+ ]
+
+ EnableSequence [
+ cset "name='DMIC Capture Switch' on"
+ cset "name='DMIC Switch' on"
+ cset "name='Int Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='DMIC Capture Switch' off"
+ cset "name='DMIC Switch' off"
+ cset "name='Int Mic Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 200
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "External Microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Jack Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic Jack Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 100
+
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer.conf
new file mode 100644
index 00000000..146e3b45
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5631/Asus-Transformer.conf
@@ -0,0 +1,65 @@
+# Use case Configuration for RT5631 based ASUS Transformers
+
+Syntax 4
+
+BootSequence [
+ cset "name='HP Playback Switch' off"
+ cset "name='Speaker Playback Switch' off"
+
+ cset "name='PCM Playback Switch' on"
+ cset "name='PCM Playback Volume' 255"
+ cset "name='AXI Capture Volume' 23"
+
+ cset "name='AXO2 Playback Switch' on"
+ cset "name='AXO2MIX Mixer OUTVOLL Playback Switch' on"
+
+ cset "name='DMIC Switch' off"
+ cset "name='DMIC Capture Switch' off"
+
+ cset "name='HPL Mux' Left HPVOL"
+ cset "name='HPR Mux' Right HPVOL"
+
+ cset "name='Mic Jack Switch' off"
+ cset "name='Int Mic Switch' off"
+ cset "name='Int Spk Switch' on"
+
+ cset "name='Left HPVOL Mux' OUTMIXL"
+ cset "name='Left OUTVOL Mux' OUTMIXL"
+ cset "name='Left SPKVOL Mux' SPKMIXL"
+
+ cset "name='MIC1 Boost Volume' 6"
+ cset "name='MIC1 Mode Control' Differential"
+ cset "name='MIC2 Boost Volume' 6"
+ cset "name='MIC2 Mode Control' Single ended"
+
+ cset "name='MONO Playback Switch' off"
+ cset "name='MONO Mux' MONOMIX"
+ cset "name='MONOIN Mode Control' Differential"
+ cset "name='MONOIN_RX Capture Volume' 25"
+
+ cset "name='OUTMIXL Mixer DACL Playback Switch' on"
+ cset "name='OUTMIXR Mixer DACR Playback Switch' on"
+
+ cset "name='OUTVOL Channel Switch' on"
+ cset "name='RECMIXL Mixer MIC1_BST1 Capture Switch' on"
+
+ cset "name='Right HPVOL Mux' OUTMIXR"
+ cset "name='Right OUTVOL Mux' OUTMIXR"
+ cset "name='Right SPKVOL Mux' SPKMIXR"
+
+ cset "name='SPK Ratio Control' 1.99x"
+
+ cset "name='SPKMIXL Mixer DACL Playback Switch' on"
+ cset "name='SPKMIXR Mixer DACR Playback Switch' on"
+
+ cset "name='SPOL Mux' SPOLMIX"
+ cset "name='SPOLMIX Mixer SPKVOLL Playback Switch' on"
+
+ cset "name='SPOR Mux' SPORMIX"
+ cset "name='SPORMIX Mixer SPKVOLR Playback Switch' on"
+]
+
+SectionUseCase."HiFi" {
+ File "/Tegra/rt5631/Asus-Transformer-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7-HiFi.conf
new file mode 100644
index 00000000..0cc5f4c2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7-HiFi.conf
@@ -0,0 +1,15 @@
+# Use case Configuration for ASUS Google Nexus 7 (2012)
+
+Define.HaveAif "1"
+Define.HaveSpeaker "2"
+Define.HaveHeadsetMic ""
+Define.HaveInternalMic "dmic"
+Define.StereoADC2Mux "DMIC1"
+
+Include.hp.File "/codecs/rt5640/HeadPhones.conf"
+Include.mspk.File "/codecs/rt5640/Speaker.conf"
+Include.dmic.File "/codecs/rt5640/DigitalMics.conf"
+
+SectionVerb {
+ Include.e.File "/codecs/rt5640/EnableSeq.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7.conf
new file mode 100644
index 00000000..1ec7b92c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/rt5640/Google-Nexus-7.conf
@@ -0,0 +1,8 @@
+# Use case Configuration for ASUS Google Nexus 7 (2012)
+
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Tegra/rt5640/Google-Nexus-7-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda-HiFi.conf
new file mode 100644
index 00000000..3277f6db
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda-HiFi.conf
@@ -0,0 +1,10 @@
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi.HDMI {
+ Number 1
+ Device 3
+ Priority 1100
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda.conf
new file mode 100644
index 00000000..fc6a83a5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/tegra-hda/tegra-hda.conf
@@ -0,0 +1,8 @@
+# UCM for Nvidia Tegra30 HDMI Audio
+
+Syntax 6
+
+SectionUseCase."HiFi" {
+ File "/Tegra/tegra-hda/tegra-hda-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500-HiFi.conf
new file mode 100644
index 00000000..4615fa46
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500-HiFi.conf
@@ -0,0 +1,114 @@
+# Use case Configuration for Acer Iconia Tab A500
+
+SectionVerb {
+ EnableSequence [
+ # WM8903 Output Configuration
+ cset "name='Digital Playback Volume' 80"
+ cset "name='Headphone Volume' 42"
+ cset "name='Line Out Volume' 42"
+ cset "name='DAC Boost Volume' 0"
+
+ # WM8903 Output Routing
+ cset "name='Left Output Mixer DACL Switch' on"
+ cset "name='Left Output Mixer DACR Switch' off"
+ cset "name='Right Output Mixer DACL Switch' off"
+ cset "name='Right Output Mixer DACR Switch' on"
+
+ # WM8903 Input Configuration
+ cset "name='Digital Capture Volume' 120"
+ cset "name='DRC Compressor Threshold Volume' 124"
+ cset "name='DRC Compressor Slope R0' 1"
+ cset "name='DRC Compressor Slope R1' 1"
+ cset "name='DRC Maximum Gain Volume' 1"
+ cset "name='DRC Minimum Gain Volume' 0"
+ cset "name='DRC Volume' 13"
+
+ # WM8903 Input Routing
+ cset "name='Left Input PGA Switch' on"
+ cset "name='Right Input PGA Switch' on"
+
+ # Tegra-specific switches
+ cset "name='Int Spk Switch' on"
+ cset "name='Int Mic Switch' on"
+ ]
+}
+
+SectionDevice."Speakers" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='Line Out Switch' on"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Line Out"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speakers"
+ ]
+
+ EnableSequence [
+ cset "name='Line Out Switch' off"
+ cset "name='Headphone Switch' on"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."InternalMic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "HeadsetMic"
+ ]
+
+ EnableSequence [
+ cset "name='Left Input PGA Volume' 31"
+ cset "name='Right Input PGA Volume' 31"
+ cset "name='Left Input Inverting Mux' IN1L"
+ cset "name='Right Input Inverting Mux' IN1R"
+ cset "name='DRC Switch' on"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "Digital"
+ }
+}
+
+SectionDevice."HeadsetMic" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "InternalMic"
+ ]
+
+ EnableSequence [
+ cset "name='Left Input PGA Volume' 25"
+ cset "name='Right Input PGA Volume' 25"
+ cset "name='Left Input Inverting Mux' IN2L"
+ cset "name='Right Input Inverting Mux' IN2R"
+ cset "name='DRC Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "Digital"
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500.conf
new file mode 100644
index 00000000..e9bd6c45
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Acer-A500.conf
@@ -0,0 +1,8 @@
+# Use case Configuration for Acer Iconia Tab A500
+
+Syntax 4
+
+SectionUseCase."HiFi" {
+ File "/Tegra/wm8903/Acer-A500-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer-HiFi.conf
new file mode 100644
index 00000000..48e7a659
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer-HiFi.conf
@@ -0,0 +1,108 @@
+# Use case Configuration for WM8903 based ASUS Transformers
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ cset "name='Int Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Spk Switch' off"
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 200
+
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPCM "hw:${CardId}"
+ PlaybackChannels 2
+ PlaybackPriority 100
+
+ PlaybackMixerElem "Headphone"
+
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Mic2"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='ADC Input' DMIC"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 200
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "External Microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ ]
+
+ EnableSequence [
+ cset "name='Mic Jack Switch' on"
+ cset "name='ADC Input' ADC"
+
+ cset "name='Left Capture Mux' Left"
+
+ cset "name='Left Input Mux' IN1L"
+ cset "name='Left Input Inverting Mux' IN2L"
+ cset "name='Left Input Mode Mux' Differential Mic"
+
+ cset "name='Left Input PGA Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Mic Jack Switch' off"
+ cset "name='Left Input PGA Switch' off"
+ ]
+
+ Value {
+ CapturePCM "hw:${CardId}"
+ CapturePriority 100
+
+ JackControl "Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer.conf
new file mode 100644
index 00000000..4d62dd2a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/Tegra/wm8903/Asus-Transformer.conf
@@ -0,0 +1,37 @@
+# Use case Configuration for WM8903 based ASUS Transformers
+
+Syntax 4
+
+BootSequence [
+ cset "name='HPF Switch' on"
+ cset "name='HPF Mode' Voice 1"
+
+ cset "name='DRC Switch' on"
+ cset "name='Digital Capture Volume' 127"
+
+ cset "name='Headphone Switch' off"
+ cset "name='Headphone ZC Switch' off"
+ cset "name='Headphone Volume' 45"
+
+ cset "name='Line Out Switch' on"
+ cset "name='Line Out ZC Switch' off"
+ cset "name='Line Out Volume' 57"
+
+ cset "name='Speaker Switch' off"
+ cset "name='Speaker ZC Switch' off"
+ cset "name='Speaker Volume' 60"
+
+ cset "name='Int Spk Switch' on"
+ cset "name='Int Mic Switch' off"
+ cset "name='Mic Jack Switch' off"
+
+ cset "name='ADC Input' DMIC"
+
+ cset "name='Left Speaker Mixer DACL Switch' on"
+ cset "name='Right Speaker Mixer DACR Switch' on"
+]
+
+SectionUseCase."HiFi" {
+ File "/Tegra/wm8903/Asus-Transformer-HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf
new file mode 100644
index 00000000..4bbae150
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf
@@ -0,0 +1,194 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "zedi10_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "zedi10_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "zedi10_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 4
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "USB IN 1-2"
+
+ Value {
+ PlaybackPriority 100
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "USB IN 3-4"
+
+ Value {
+ PlaybackPriority 200
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "M1"
+
+ ConflictingDevice [
+ "Line12"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "M2"
+
+ ConflictingDevice [
+ "Line12"
+ ]
+
+ Value {
+ CapturePriority 101
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "M3"
+
+ ConflictingDevice [
+ "Line34"
+ ]
+
+ Value {
+ CapturePriority 102
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic4" {
+ Comment "M4"
+
+ ConflictingDevice [
+ "Line34"
+ ]
+
+ Value {
+ CapturePriority 103
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line12" {
+ Comment "USB OUT 1-2"
+
+ Value {
+ CapturePriority 104
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line34" {
+ Comment "USB OUT 3-4"
+
+ Value {
+ CapturePriority 105
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "zedi10_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf
new file mode 100644
index 00000000..00d22736
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf
@@ -0,0 +1,12 @@
+Comment "Allen & Heath Zedi10 Recording Mode"
+
+SectionUseCase."Recording" {
+ Comment "Recording Mode (4 chan output, 4 chan input)"
+ File "/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf"
+}
+
+Define.DirectCardName "Zedi10"
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12-HiFi.conf
new file mode 100644
index 00000000..3e57c595
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12-HiFi.conf
@@ -0,0 +1,192 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Define {
+ HasLine3 "y"
+ HasMic1 "y"
+ HasMic2 "y"
+}
+
+If.minifuse1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1c75:af80"
+ }
+ True.Define {
+ HasLine3 ""
+ HasMic2 ""
+ }
+}
+
+Macro [
+ {
+ SplitPCM {
+ Name "minifuse12_stereo_out"
+ Direction Playback
+ Format S32_LE
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "minifuse12_stereo_in"
+ Direction Capture
+ Format S32_LE
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "minifuse12_mono_in"
+ Direction Capture
+ Format S32_LE
+ Channels 1
+ HWChannels 4
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ }
+ }
+]
+
+DefineMacro.ConflictingLine3 {
+ If.0 {
+ Condition {
+ Type String
+ Empty "${var:HasLine3}"
+ }
+ False.ConflictingDevice [
+ "Line3"
+ ]
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "Main Output L/R"
+
+ Value {
+ PlaybackPriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse12_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Loopback L/R"
+
+ Value {
+ PlaybackPriority 200
+ CapturePriority 200
+ }
+ Macro.pcm_split1.SplitPCMDevice {
+ Name "minifuse12_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse12_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+If.line3 {
+ Condition {
+ Type String
+ Empty "${var:HasLine3}"
+ }
+ False.SectionDevice."Line3" {
+ Comment "Stereo Input 1+2 L/R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse12_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+ }
+}
+
+If.mic1 {
+ Condition {
+ Type String
+ Empty "${var:HasMic1}"
+ }
+ False.SectionDevice."Mic1" {
+ Comment "Mic/Line/Inst 1 (L)"
+
+ Macro.conflict.ConflictingLine3 { }
+
+ Value {
+ CapturePriority 400
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse12_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+ }
+}
+
+If.mic2 {
+ Condition {
+ Type String
+ Empty "${var:HasMic2}"
+ }
+ False.SectionDevice."Mic2" {
+ Comment "Mic/Line/Inst 2 (R)"
+
+ Macro.conflict.ConflictingLine3 { }
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse12_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12.conf
new file mode 100644
index 00000000..627ffa95
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-12.conf
@@ -0,0 +1,11 @@
+Comment "Arturia Minifuse 1/2"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/Arturia/Minifuse-12-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4-HiFi.conf
new file mode 100644
index 00000000..3ab91043
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4-HiFi.conf
@@ -0,0 +1,184 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "minifuse4_stereo_out"
+ Direction Playback
+ Format S32_LE
+ Channels 2
+ HWChannels 6
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "minifuse4_stereo_in"
+ Direction Capture
+ Format S32_LE
+ Channels 2
+ HWChannels 6
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "minifuse4_mono_in"
+ Direction Capture
+ Format S32_LE
+ Channels 1
+ HWChannels 6
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ HWChannelPos4 MONO
+ HWChannelPos5 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Main Output 1L/2R"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse4_stereo_out"
+ Direction Playback
+ HWChannels 6
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+
+SectionDevice."Line2" {
+ Comment "Stereo Output 3/4"
+
+ Value {
+ PlaybackPriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse4_stereo_out"
+ Direction Playback
+ HWChannels 6
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+
+SectionDevice."Line3" {
+ Comment "Loopback L/R"
+
+ Value {
+ PlaybackPriority 200
+ CapturePriority 200
+ }
+ Macro.pcm_split1.SplitPCMDevice {
+ Name "minifuse4_stereo_out"
+ Direction Playback
+ HWChannels 6
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse4_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "Stereo Input 1+2 L/R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse4_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Stereo Input 3+4 L/R"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "minifuse4_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic/Line/Inst 1 (L)"
+
+ Value {
+ CapturePriority 400
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse4_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic/Line/Inst 2 (R)"
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split2.SplitPCMDevice {
+ Name "minifuse4_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4.conf
new file mode 100644
index 00000000..fc5a1da1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Arturia/Minifuse-4.conf
@@ -0,0 +1,11 @@
+Comment "Arturia Minifuse 4"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/Arturia/Minifuse-4-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 6
+Define.DirectCaptureChannels 6
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf
new file mode 100644
index 00000000..82dcac3b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf
@@ -0,0 +1,11 @@
+Comment "Audient iD4 USB-Audio"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf"
+}
+
+Define.DirectPlaybackChannels 2
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf
new file mode 100644
index 00000000..ebaf5418
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf
@@ -0,0 +1,11 @@
+Comment "Audient iD4 USB-Audio"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf
new file mode 100644
index 00000000..95c9f110
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf
@@ -0,0 +1,55 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "id4_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ }
+ }
+]
+
+SectionDevice."Headphones" {
+ Comment "Headphones / Monitor"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "XLR Microphone"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line" {
+ Comment "DI Input"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf
new file mode 100644
index 00000000..05a1d1ea
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf
@@ -0,0 +1,100 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "id4_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "id4_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+]
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones / Monitor"
+
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "XLR Microphone"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "Line Input"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "id4_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf
new file mode 100644
index 00000000..7215b9b0
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf
@@ -0,0 +1,289 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "flow8_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "flow8_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 10
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ HWChannelPos6 FL
+ HWChannelPos7 FR
+ HWChannelPos8 FL
+ HWChannelPos9 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "flow8_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 10
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ HWChannelPos4 MONO
+ HWChannelPos5 MONO
+ HWChannelPos6 MONO
+ HWChannelPos7 MONO
+ HWChannelPos8 MONO
+ HWChannelPos9 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "USB-12 L/R"
+
+ Value {
+ PlaybackPriority 100
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "USB-34 L/R"
+
+ Value {
+ PlaybackPriority 200
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic 1"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic 2"
+
+ Value {
+ CapturePriority 101
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Mic 3"
+
+ Value {
+ CapturePriority 102
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic4" {
+ Comment "Mic 4"
+
+ Value {
+ CapturePriority 103
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Line/Inst 5 (L)"
+
+ ConflictingDevice [
+ "Line56"
+ ]
+
+ Value {
+ CapturePriority 104
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 4
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line6" {
+ Comment "Line/Inst(HiZ) 6 (R)"
+
+ ConflictingDevice [
+ "Line56"
+ ]
+
+ Value {
+ CapturePriority 105
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 5
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line7" {
+ Comment "Line/Inst 7 (L)"
+
+ ConflictingDevice [
+ "Line78"
+ ]
+
+ Value {
+ CapturePriority 106
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 6
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line8" {
+ Comment "Line/Inst(HiZ) 8 (R)"
+
+ ConflictingDevice [
+ "Line78"
+ ]
+
+ Value {
+ CapturePriority 107
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_mono_in"
+ Direction Capture
+ HWChannels 10
+ Channels 1
+ Channel0 7
+ ChannelPos0 MONO
+ }
+}
+
+
+SectionDevice."Line56" {
+ Comment "Line-56 L/R"
+
+ Value {
+ CapturePriority 108
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_in"
+ Direction Capture
+ HWChannels 10
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line78" {
+ Comment "Line-78 L/R"
+
+ Value {
+ CapturePriority 109
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_in"
+ Direction Capture
+ HWChannels 10
+ Channels 2
+ Channel0 6
+ Channel1 7
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."LineMaster" {
+ Comment "Master/Monitor L/R"
+
+ Value {
+ CapturePriority 110
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_in"
+ Direction Capture
+ HWChannels 10
+ Channels 2
+ Channel0 8
+ Channel1 9
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording.conf
new file mode 100644
index 00000000..173901ac
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Recording.conf
@@ -0,0 +1,12 @@
+Comment "Behringer Flow8 Recording Mode"
+
+SectionUseCase."Recording" {
+ Comment "Recording Mode (4 chan output, 10 chan input)"
+ File "/USB-Audio/Behringer/Flow8-Recording-Hifi.conf"
+}
+
+Define.DirectCardName "Flow8 Recording"
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 10
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf
new file mode 100644
index 00000000..0b18abde
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf
@@ -0,0 +1,82 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "flow8_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "flow8_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 2
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "USB-12 L/R"
+
+ Value {
+ PlaybackPriority 100
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "USB-34 L/R"
+
+ Value {
+ PlaybackPriority 200
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "Master/Mon L/R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "flow8_stereo_in"
+ Direction Capture
+ HWChannels 2
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf
new file mode 100644
index 00000000..d8152f8e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf
@@ -0,0 +1,12 @@
+Comment "Behringer Flow8 Streaming Mode"
+
+SectionUseCase."Streaming" {
+ Comment "Streaming Mode (4 chan output, 2 chan input)"
+ File "/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf"
+}
+
+Define.DirectCardName "Flow8 Streaming"
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD-HiFi.conf
new file mode 100644
index 00000000..1b4f118c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD-HiFi.conf
@@ -0,0 +1,88 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "umc202hd_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+Define.PCMMixerName "PCM"
+
+If.pcm_controls {
+ Condition {
+ Type ControlExists
+ Control "name='UMC202HD 192k Output Playback Switch'"
+ }
+ True.Define.PCMMixerName "UMC202HD 192k Output"
+}
+
+Include.ctl_remap.File "/common/ctl/remap.conf"
+
+Macro [
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 1 Capture"
+ Src "Mic Capture"
+ Index 0
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 2 Capture"
+ Src "Mic Capture"
+ Index 1
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Line A"
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "${var:PCMMixerName}"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Input 1"
+
+ Value {
+ CapturePriority 200
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 1"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc202hd_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Input 2"
+
+ Value {
+ CapturePriority 100
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 2"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc202hd_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD.conf
new file mode 100644
index 00000000..5f5e5f50
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC202HD.conf
@@ -0,0 +1,11 @@
+Comment "Behringer UMC202HD"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Behringer/UMC202HD-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 2
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD-HiFi.conf
new file mode 100644
index 00000000..19660d21
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD-HiFi.conf
@@ -0,0 +1,148 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "umc204hd_stereo_out"
+ Direction Playback
+ Format S32_LE
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "umc204hd_mono_in"
+ Direction Capture
+ Format S32_LE
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+Define.PCMCTLName "PCM Playback"
+
+If.pcm_controls {
+ Condition {
+ Type ControlExists
+ Control "name='UMC204HD 192k Output Playback Switch'"
+ }
+ True.Define.PCMCTLName "UMC204HD 192k Output Playback"
+}
+
+Include.ctl_remap.File "/common/ctl/remap.conf"
+
+Macro [
+ {
+ CtlRemapStereoVolSw {
+ Dst "Line A Playback"
+ Src "${var:PCMCTLName}"
+ Index0 0
+ Index1 1
+ }
+ }
+ {
+ CtlRemapStereoVolSw {
+ Dst "Line B Playback"
+ Src "${var:PCMCTLName}"
+ Index0 2
+ Index1 3
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 1 Capture"
+ Src "Mic Capture"
+ Index 0
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 2 Capture"
+ Src "Mic Capture"
+ Index 1
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Line A"
+ Value {
+ PlaybackPriority 200
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Line A"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc204hd_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line B"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Line B"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc204hd_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Input 1"
+
+ Value {
+ CapturePriority 200
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 1"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc204hd_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Input 2"
+
+ Value {
+ CapturePriority 100
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 2"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc204hd_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD.conf
new file mode 100644
index 00000000..2ce9b3b6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC204HD.conf
@@ -0,0 +1,11 @@
+Comment "Behringer UMC204HD"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Behringer/UMC204HD-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD-HiFi.conf
new file mode 100644
index 00000000..df45dca9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD-HiFi.conf
@@ -0,0 +1,200 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "umc404hd_stereo_out"
+ Direction Playback
+ Format S32_LE
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "umc404hd_mono_in"
+ Direction Capture
+ Format S32_LE
+ Channels 1
+ HWChannels 4
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ }
+ }
+]
+
+Define.PCMCTLName "PCM Playback"
+
+If.pcm_controls {
+ Condition {
+ Type ControlExists
+ Control "name='UMC404HD 192k Output Playback Switch'"
+ }
+ True.Define.PCMCTLName "UMC404HD 192k Output Playback"
+}
+
+Include.ctl_remap.File "/common/ctl/remap.conf"
+
+Macro [
+ {
+ CtlRemapStereoVolSw {
+ Dst "Line A Playback"
+ Src "${var:PCMCTLName}"
+ Index0 0
+ Index1 1
+ }
+ }
+ {
+ CtlRemapStereoVolSw {
+ Dst "Line B Playback"
+ Src "${var:PCMCTLName}"
+ Index0 2
+ Index1 3
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 1 Capture"
+ Src "Mic Capture"
+ Index 0
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 2 Capture"
+ Src "Mic Capture"
+ Index 1
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 3 Capture"
+ Src "Mic Capture"
+ Index 2
+ }
+ }
+ {
+ CtlRemapMonoVolSw {
+ Dst "Input 4 Capture"
+ Src "Mic Capture"
+ Index 3
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Line A"
+ Value {
+ PlaybackPriority 200
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Line A"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line B"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackMixer "default:${CardId}"
+ PlaybackMixerElem "Line B"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Input 1"
+
+ Value {
+ CapturePriority 400
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 1"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Input 2"
+
+ Value {
+ CapturePriority 300
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 2"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Input 3"
+
+ Value {
+ CapturePriority 200
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 3"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic4" {
+ Comment "Input 4"
+
+ Value {
+ CapturePriority 100
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "Input 4"
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "umc404hd_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD.conf
new file mode 100644
index 00000000..91f231b4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Behringer/UMC404HD.conf
@@ -0,0 +1,11 @@
+Comment "Behringer UMC404HD"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Behringer/UMC404HD-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly-HiFi.conf
new file mode 100644
index 00000000..75e42c60
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly-HiFi.conf
@@ -0,0 +1,7 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackMixerElem "PCM"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly.conf
new file mode 100644
index 00000000..20bb8a66
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Common/HeadphonesOnly.conf
@@ -0,0 +1,6 @@
+Comment "${CardName}"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Common/HeadphonesOnly-HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front-Speaker-Headset.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front-Speaker-Headset.conf
new file mode 100644
index 00000000..f9cfa614
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front-Speaker-Headset.conf
@@ -0,0 +1,32 @@
+SectionDevice."Speaker" {
+ Comment "Built-in Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Speaker - Output Jack"
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headset/Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},1"
+ JackControl "Headphone - Output Jack"
+ PlaybackMixerElem "Headphone"
+ }
+}
+
+SectionDevice."Microphone" {
+ Comment "Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Mic - Input Jack"
+ CaptureMixerElem "Mic"
+ }
+}
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front.conf
new file mode 100644
index 00000000..d5c439ca
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Front.conf
@@ -0,0 +1,6 @@
+Syntax 2
+Comment "USB-audio on the front of Dell Desktop"
+SectionUseCase."HiFi" {
+ Comment "Internal Speaker/Front Headset"
+ File "/USB-Audio/Dell/Desktop-Front-Speaker-Headset.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear-Line.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear-Line.conf
new file mode 100644
index 00000000..f3edfd99
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear-Line.conf
@@ -0,0 +1,10 @@
+SectionDevice."Line" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Line - Output Jack"
+ PlaybackMixerElem "PCM"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear.conf
new file mode 100644
index 00000000..0237379b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/Desktop-Rear.conf
@@ -0,0 +1,6 @@
+Syntax 2
+Comment "USB-audio on the rear of Dell Desktop"
+SectionUseCase."Line" {
+ Comment "Line Out"
+ File "/USB-Audio/Dell/Desktop-Rear-Line.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock-HiFi.conf
new file mode 100644
index 00000000..b031a39e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock-HiFi.conf
@@ -0,0 +1,65 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+
+ If.Headphone_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='Headphone Playback Switch'"
+ }
+ True {
+ PlaybackMixerElem "Headphone"
+ PlaybackVolume "Headphone Playback Volume"
+ PlaybackSwitch "Headphone Playback Switch"
+ }
+ }
+ }
+}
+
+SectionDevice."Line" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},1"
+ JackControl "Line Out Jack"
+
+ If.Line_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='Line Playback Switch'"
+ }
+ True {
+ PlaybackMixerElem "Line"
+ PlaybackVolume "Line Playback Volume"
+ PlaybackSwitch "Line Playback Switch"
+ }
+ }
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+
+ If.Mic_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='Mic Capture Switch'"
+ }
+ True {
+ CaptureMixerElem "Mic"
+ CaptureVolume "Mic Capture Volume"
+ CaptureSwitch "Mic Capture Switch"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock.conf
new file mode 100644
index 00000000..33874e95
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Dell/WD15-Dock.conf
@@ -0,0 +1,6 @@
+Syntax 2
+Comment "USB-audio on Dell WD15 docking station"
+SectionUseCase."HiFi" {
+ File "/USB-Audio/Dell/WD15-Dock-HiFi.conf"
+ Comment "Default"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf
new file mode 100644
index 00000000..7219bea3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf
@@ -0,0 +1,126 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "mbox3_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "mbox3_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "mbox3_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 4
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Main Output L/R"
+
+ Value {
+ PlaybackPriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "mbox3_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+
+SectionDevice."line2SPDIF" {
+ Comment "SPDIF Out"
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "mbox3_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."mic1" {
+ Comment "Mic/Line 1"
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "mbox3_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."mic2" {
+ Comment "Mic/Line 2"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "mbox3_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."mic3SPDIF" {
+ Comment "SPDIF In"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "mbox3_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf
new file mode 100644
index 00000000..d6e19f92
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf
@@ -0,0 +1,11 @@
+Comment "Digidesign Mbox 3"
+
+SectionUseCase."Mixer" {
+ Comment "Stereo Duplex"
+ File "/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i-HiFi.conf
new file mode 100644
index 00000000..0484dc78
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i-HiFi.conf
@@ -0,0 +1,123 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "scarlett2i_mono_in"
+ Direction Capture
+ Format S32_LE
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+If.2i4 {
+ Condition {
+ Type String
+ String1 "${var:PlaybackChannels}"
+ String2 "4"
+ }
+ True.Macro [
+ {
+ SplitPCM {
+ Name "scarlett2i_stereo_out"
+ Direction Playback
+ Format S32_LE
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ ]
+}
+
+SectionDevice."Line1" {
+ Comment "${var:Playback1Name}"
+
+ Value {
+ PlaybackPriority 200
+ }
+ If.2i4 {
+ Condition {
+ Type String
+ String1 "${var:PlaybackChannels}"
+ String2 "4"
+ }
+ True.Macro.pcm_split.SplitPCMDevice {
+ Name "scarlett2i_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+ False.Value {
+ PlaybackPCM "hw:${CardId}"
+ }
+ }
+}
+
+If.2i4 {
+ Condition {
+ Type String
+ String1 "${var:PlaybackChannels}"
+ String2 "4"
+ }
+ True.SectionDevice."Line2" {
+ Comment "${var:Playback2Name}"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "scarlett2i_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "${var:Capture1Name}"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "scarlett2i_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "${var:Capture2Name}"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "scarlett2i_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf
new file mode 100644
index 00000000..7492e574
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf
@@ -0,0 +1,65 @@
+Define {
+ PlaybackChannels 2
+ DirectPlaybackChannels 2
+ DirectCaptureChannels 2
+ Model "2i2"
+ Playback1Name "Headphones / Line 1-2"
+ Playback2Name "Line 3-4"
+ Capture1Name "Input 1 Mic/Inst/Line"
+ Capture2Name "Input 2 Mic/Inst/Line"
+ Generation "1st"
+}
+
+If.solo {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1235:8(01c|2(05|11))"
+ }
+ True.Define {
+ Model "Solo"
+ Capture1Name "Input 1 Mic"
+ Capture2Name "Input 2 Inst/Line"
+ }
+}
+
+If.2i4 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1235:8(00a|200)"
+ }
+ True.Define {
+ PlaybackChannels 4
+ DirectPlaybackChannels 4
+ Model "2i4"
+ Playback1Name "Line 1-2"
+ }
+}
+
+If.gen2 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1235:820[025]"
+ }
+ True.Define.Generation "2nd"
+}
+
+If.gen3 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1235:821[01]"
+ }
+ True.Define.Generation "3rd"
+}
+
+Comment "Focusrite Scarlett ${var:Model} ${var:Generation} Gen"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Focusrite/Scarlett-2i-HiFi.conf"
+}
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio-HiFi.conf
new file mode 100644
index 00000000..7737cddf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio-HiFi.conf
@@ -0,0 +1,61 @@
+Define.SecondaryCardId "$${find-card:field=name,return=id,regex='Aorus Master Front Headphone'}"
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+ Value {
+ PlaybackChannels 8
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Line Out Jack"
+ PlaybackMixerElem "Line Out"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Front Headphones"
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${var:SecondaryCardId}"
+ JackCTL "hw:${var:SecondaryCardId}"
+ JackControl "Headphone - Output Jack"
+ }
+}
+
+SectionDevice."SPDIF" {
+ Comment "S/PDIF Out"
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ # PlaybackMixerElem "IEC958"
+ }
+}
+
+SectionDevice."Line" {
+ Comment "Line In"
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ JackControl "Line Jack"
+ CaptureMixerElem "Line"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Microphone"
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Mic Jack"
+ CaptureMixerElem "Mic"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Front Microphone"
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId},2"
+ JackControl "Front Mic Jack"
+ CaptureMixerElem "Front Mic"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio.conf
new file mode 100644
index 00000000..8f073c67
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Gigabyte/Aorus-Master-Main-Audio.conf
@@ -0,0 +1,5 @@
+Comment "Gigabyte Aorus Integrated Audio"
+SectionUseCase."HiFi" {
+ File "/USB-Audio/Gigabyte/Aorus-Master-Main-Audio-HiFi.conf"
+ Comment "Default Alsa Profile"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf
new file mode 100644
index 00000000..8c12f53d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf
@@ -0,0 +1,197 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 10
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ HWChannelPos6 FL
+ HWChannelPos7 FR
+ HWChannelPos8 FL
+ HWChannelPos9 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "goxlr_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 23
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ HWChannelPos6 FL
+ HWChannelPos7 FR
+ HWChannelPos8 FL
+ HWChannelPos9 FR
+ HWChannelPos10 FL
+ HWChannelPos11 FR
+ HWChannelPos12 FL
+ HWChannelPos13 FR
+ HWChannelPos14 FL
+ HWChannelPos15 FR
+ HWChannelPos16 FL
+ HWChannelPos17 FR
+ HWChannelPos18 FL
+ HWChannelPos19 FR
+ HWChannelPos20 FL
+ HWChannelPos21 FR
+ HWChannelPos22 MONO
+ }
+ }
+]
+
+SectionDevice."Speaker" {
+ Comment "System"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ HWChannels 10
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line1" {
+ Comment "Game"
+
+ Value {
+ PlaybackPriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ HWChannels 10
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Music"
+
+ Value {
+ PlaybackPriority 400
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ HWChannels 10
+ Channels 2
+ Channel0 6
+ Channel1 7
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Chat"
+
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ HWChannels 10
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "Sample"
+
+ Value {
+ PlaybackPriority 500
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_out"
+ Direction Playback
+ HWChannels 10
+ Channels 2
+ Channel0 8
+ Channel1 9
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "Broadcast Stream Mix"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_in"
+ Direction Capture
+ HWChannels 23
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Chat Mic"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_in"
+ Direction Capture
+ HWChannels 23
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Sampler"
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "goxlr_stereo_in"
+ Direction Capture
+ HWChannels 23
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR.conf
new file mode 100644
index 00000000..6f1f2af9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/GoXLR/GoXLR.conf
@@ -0,0 +1,11 @@
+Comment "GoXLR USB-Audio"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/GoXLR/GoXLR-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 10
+Define.DirectCaptureChannels 23
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main-HiFi.conf
new file mode 100644
index 00000000..695dfba2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main-HiFi.conf
@@ -0,0 +1,30 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},1"
+ JackControl "Headphone - Output Jack"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Mic"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Mic - Input Jack"
+ CaptureMixerElem "Mic"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Speaker - Output Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main.conf
new file mode 100644
index 00000000..815a9c28
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Main.conf
@@ -0,0 +1,5 @@
+Comment "USB-audio on Lenovo ThinkStation P620 Main Audio"
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Lenovo/ThinkStation-P620-Main-HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear-HiFi.conf
new file mode 100644
index 00000000..9777a540
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear-HiFi.conf
@@ -0,0 +1,31 @@
+SectionDevice."Line" {
+ Comment "Line In"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ JackControl "Line - Input Jack"
+ CaptureMixerElem "Line"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Mic"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Mic - Input Jack"
+ CaptureMixerElem "Mic"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Speaker - Output Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear.conf
new file mode 100644
index 00000000..371c1d8c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Lenovo/ThinkStation-P620-Rear.conf
@@ -0,0 +1,5 @@
+Comment "USB-audio on Lenovo ThinkStation P620 Rear Audio"
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Lenovo/ThinkStation-P620-Rear-HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2-HiFi.conf
new file mode 100644
index 00000000..bca8ff76
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2-HiFi.conf
@@ -0,0 +1,87 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "m2_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+ {
+ SplitPCM {
+ Name "m2_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 2
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Headphone + Monitor Out"
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic In 1L"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic In 2R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Stereo Mic In 1L+2R"
+
+ ConflictingDevice [
+ "Mic1"
+ "Mic2"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m2_stereo_in"
+ Direction Capture
+ HWChannels 2
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2.conf
new file mode 100644
index 00000000..9c4bc76e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M2.conf
@@ -0,0 +1,12 @@
+Comment "MOTU M2"
+
+SectionUseCase."HiFi" {
+ Comment "Analog Stereo Outputs + Inputs"
+ File "/USB-Audio/MOTU/M2-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 2
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4-HiFi.conf
new file mode 100644
index 00000000..447a940a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4-HiFi.conf
@@ -0,0 +1,186 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "m4_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "m4_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 4
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ }
+ }
+ {
+ SplitPCM {
+ Name "m4_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Headphone + Monitor Out"
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic In 1L"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic In 2R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "Line In L"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "Line In R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_mono_in"
+ Direction Capture
+ HWChannels 4
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Stereo Mic In 1L+2R"
+
+ ConflictingDevice [
+ "Mic1"
+ "Mic2"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Stereo Line In L+R"
+
+ ConflictingDevice [
+ "Line3"
+ "Line4"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m4_stereo_in"
+ Direction Capture
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4.conf
new file mode 100644
index 00000000..f753ac6f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M4.conf
@@ -0,0 +1,12 @@
+Comment "MOTU M4"
+
+SectionUseCase."HiFi" {
+ Comment "Analog Stereo Outputs + Inputs"
+ File "/USB-Audio/MOTU/M4-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 4
+
+Include.dhw.File "/common/direct.conf"
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6-HiFi.conf
new file mode 100644
index 00000000..7c91ddc8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6-HiFi.conf
@@ -0,0 +1,245 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "m6_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "m6_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 6
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ HWChannelPos4 MONO
+ HWChannelPos5 MONO
+ }
+ }
+ {
+ SplitPCM {
+ Name "m6_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 6
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Headphone + Monitor Out"
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_stereo_out"
+ Direction Playback
+ HWChannels 6
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic In 1L"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic In 2R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Mic In 3L"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic4" {
+ Comment "Mic In 4R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Line In L"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 4
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line6" {
+ Comment "Line In R"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 5
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic5" {
+ Comment "Stereo Mic In 1L+2R"
+
+ ConflictingDevice [
+ "Mic1"
+ "Mic2"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Mic6" {
+ Comment "Stereo Mic In 3L+4R"
+
+ ConflictingDevice [
+ "Mic3"
+ "Mic4"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line7" {
+ Comment "Stereo Line In L+R"
+
+ ConflictingDevice [
+ "Line5"
+ "Line6"
+ ]
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "m6_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6.conf
new file mode 100644
index 00000000..df4719e9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/MOTU/M6.conf
@@ -0,0 +1,12 @@
+Comment "MOTU M6"
+
+SectionUseCase."HiFi" {
+ Comment "Analog Stereo Outputs + Inputs"
+ File "/USB-Audio/MOTU/M6-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 6
+
+Include.dhw.File "/common/direct.conf"
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf
new file mode 100644
index 00000000..2199b5df
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf
@@ -0,0 +1,52 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "z1_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+]
+
+SectionDevice."Line" {
+ Comment "Line Out"
+
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "z1_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Headphone" {
+ Comment "Headphone Out"
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "z1_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
new file mode 100644
index 00000000..e88b4eaf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
@@ -0,0 +1,11 @@
+Comment "Traktor Kontrol Z1"
+
+SectionUseCase."Mixer" {
+ Comment "Default"
+ File "/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf"
+}
+
+Define.DirectPlaybackChannels 2
+
+Include.dhw.File "/common/direct.conf"
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1-HiFi.conf
new file mode 100644
index 00000000..5068542e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1-HiFi.conf
@@ -0,0 +1,45 @@
+SectionDevice."Line1" {
+ Comment "Line out 1"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line out 2"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Input 1"
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId},0"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Input 2"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ }
+}
+
+SectionDevice."Mic3" {
+ Comment "Mic"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},2"
+ CaptureChannels 1
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1.conf
new file mode 100644
index 00000000..d2f9f767
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Rane/SL-1.conf
@@ -0,0 +1,6 @@
+Comment "Rane SL-1"
+
+SectionUseCase."HiFi" {
+ Comment "Default Alsa Profile"
+ File "/USB-Audio/Rane/SL-1-HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop-HiFi.conf
new file mode 100644
index 00000000..d45f521d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop-HiFi.conf
@@ -0,0 +1,77 @@
+Define.LineDev 0
+Define.Mic1Dev 1
+Define.Mic2Dev 2
+
+If.trx4-aorus-wifi-rev-1-2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0414:a00d"
+ }
+ True.Define {
+ LineDev 1
+ Mic1Dev 2
+ Mic2Dev 0
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+ Value {
+ PlaybackChannels 8
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Speaker Jack"
+ PlaybackMixerElem "Speaker"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Front Headphones"
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},1"
+ JackControl "Front Headphone Jack"
+ PlaybackMixerElem "Front Headphone"
+ }
+}
+
+SectionDevice."SPDIF" {
+ Comment "S/PDIF Out"
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ PlaybackMixerElem "IEC958"
+ }
+}
+
+SectionDevice."Line" {
+ Comment "Line In"
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},${var:LineDev}"
+ JackControl "Line Jack"
+ CaptureMixerElem "Line"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Microphone"
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},${var:Mic1Dev}"
+ JackControl "Mic Jack"
+ CaptureMixerElem "Mic"
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Front Microphone"
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId},${var:Mic2Dev}"
+ JackControl "Front Mic Jack"
+ CaptureMixerElem "Front Mic"
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop.conf
new file mode 100644
index 00000000..afb34957
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC1220-VB-Desktop.conf
@@ -0,0 +1,5 @@
+Comment "USB-audio on Realtek ALC1220-VB desktop"
+SectionUseCase."HiFi" {
+ File "/USB-Audio/Realtek/ALC1220-VB-Desktop-HiFi.conf"
+ Comment "Default Alsa Profile"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf
new file mode 100644
index 00000000..39cc448e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf
@@ -0,0 +1,323 @@
+Define {
+ SpeakerMixer "PCM"
+ SpeakerMindex "0"
+ SpeakerJack "Speaker - Output Jack"
+ SpeakerPCM "hw:${CardId}"
+
+ HeadphonesName "Front Headphones"
+ HeadphonesMixer "PCM"
+ HeadphonesMindex "1"
+ HeadphonesJack "Headphone - Output Jack"
+ HeadphonesPCM "hw:${CardId},1"
+
+ Mic1Name "Microphone"
+ Mic1Mixer "Mic"
+ Mic1Mindex "0"
+ Mic1Jack "Mic - Input Jack"
+ Mic1PCM "hw:${CardId},2"
+
+ Mic2Name ""
+ Mic2Mixer ""
+ Mic2Mindex "0"
+ Mic2Jack ""
+ Mic2PCM ""
+
+ Line1Name "Line Input"
+ Line1Mixer "Line"
+ Line1Mindex "0"
+ Line1Jack "Line - Input Jack"
+ Line1PCM "hw:${CardId},1"
+
+ SpdifName "S/PDIF Output"
+ SpdifPCM "hw:${CardId},3"
+ SpdifMixer "PCM"
+ SpdifMindex "2"
+}
+
+If.speaker_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='Speaker Playback Switch'"
+ }
+ True.Define.SpeakerMixer "Speaker"
+}
+
+If.front_hp_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='Front Headphone Playback Switch'"
+ }
+ True.Define {
+ HeadphonesMixer "Front Headphone"
+ HeadphonesMindex "0"
+ }
+}
+
+If.spdif_ctl {
+ Condition {
+ Type ControlExists
+ Control "name='IEC958 Playback Switch'"
+ }
+ True.Define {
+ SpdifMixer "IEC958"
+ SpdifMindex "0"
+ }
+}
+
+If.spdif_nodev {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0db0:36e7)"
+ }
+ True.Define.SpdifName ""
+}
+
+If.spdif_dev2 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0b05:(1996|1a5[23c])|0db0:1feb)"
+ }
+ True.Define.SpdifPCM "hw:${CardId},2"
+}
+
+If.gigabyte-aorus-ultra {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0414:a014)"
+ }
+ True.Define {
+ Mic1Name "Front Microphone"
+ Mic1PCM "hw:${CardId},0"
+ SpdifName ""
+ Line1Name ""
+ }
+}
+
+If.asus-rog-usb {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0b05:1996)"
+ }
+ True.Define {
+ Mic1Name "Front Microphone"
+ Mic2Name "Microphone"
+ Mic2Mixer "Analog In"
+ Mic2Jack "Analog In - Input Jack"
+ Mic2PCM "hw:${CardId}"
+ }
+}
+
+If.asrock-taichi {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(26ce:0a0[68])"
+ }
+ True.Define {
+ Line1Name ""
+ Mic1Name "Rear Input"
+ Mic1PCM "hw:${CardId},0"
+ Mic2Name "Front Microphone"
+ Mic2Mixer "Mic"
+ Mic2Jack "Front Mic - Input Jack"
+ Mic2PCM "hw:${CardId},1"
+ }
+}
+
+If.wrx80-sage {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0b05:1984)"
+ }
+ True.Define {
+ Mic2Name "Front Microphone"
+ Mic2Mixer "Analog In"
+ Mic2Jack "Analog In - Input Jack"
+ Mic2PCM "hw:${CardId}"
+ }
+}
+
+If.msi-meg-unify {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0db0:82c7)"
+ }
+ True.Define {
+ HeadphonesName ""
+ SpdifName ""
+ }
+}
+
+If.asus-rog-strix {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB(0b05:1999)"
+ }
+ True.Define {
+ Line1PCM "hw:${CardId},3"
+ HeadphonesName ""
+ SpdifName ""
+ }
+}
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ EnableSequence [
+ cset "name='${var:SpeakerMixer} Playback Switch',index=${var:SpeakerMindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:SpeakerMixer} Playback Switch',index=${var:SpeakerMindex} off"
+ ]
+
+ Value {
+ PlaybackChannels 2
+ PlaybackPriority 200
+ PlaybackPCM "${var:SpeakerPCM}"
+ JackControl "${var:SpeakerJack}"
+ PlaybackMixerElem "${var:SpeakerMixer},${var:SpeakerMindex}"
+ }
+
+ Variant."HiFi 5+1".Value.PlaybackChannels 6
+ Variant."HiFi 7+1".Value.PlaybackChannels 8
+}
+
+If.headphones {
+ Condition {
+ Type String
+ Empty "${var:HeadphonesName}"
+ }
+ False.SectionDevice."Headphones" {
+ Comment "${var:HeadphonesName}"
+
+ EnableSequence [
+ cset "name='${var:HeadphonesMixer} Playback Switch',index=${var:HeadphonesMindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:HeadphonesMixer} Playback Switch',index=${var:HeadphonesMindex} off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "${var:HeadphonesPCM}"
+ JackControl "${var:HeadphonesJack}"
+ PlaybackMixerElem "${var:HeadphonesMixer},${var:HeadphonesMindex}"
+ }
+ }
+}
+
+If.spdif {
+ Condition {
+ Type String
+ Empty "${var:SpdifName}"
+ }
+ False.SectionDevice."SPDIF" {
+ Comment "${var:SpdifName}"
+
+ EnableSequence [
+ cset "name='${var:SpdifMixer} Playback Switch',index=${var:SpdifMindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:SpdifMixer} Playback Switch',index=${var:SpdifMindex} off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "${var:SpdifPCM}"
+ PlaybackMixerElem "${var:SpdifMixer},${var:SpdifMindex}"
+ }
+ }
+}
+
+If.line1 {
+ Condition {
+ Type String
+ Empty "${var:Line1Name}"
+ }
+ False.SectionDevice."Line1" {
+ Comment "${var:Line1Name}"
+
+ EnableSequence [
+ cset "name='${var:Line1Mixer} Capture Switch',index=${var:Line1Mindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:Line1Mixer} Capture Switch',index=${var:Line1Mindex} off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "${var:Line1PCM}"
+ JackControl "${var:Line1Jack}"
+ CaptureMixerElem "${var:Line1Mixer},${var:Line1Mindex}"
+ }
+ }
+}
+
+If.mic1 {
+ Condition {
+ Type String
+ Empty "${var:Mic1Name}"
+ }
+ False.SectionDevice."Mic1" {
+ Comment "${var:Mic1Name}"
+
+ EnableSequence [
+ cset "name='${var:Mic1Mixer} Capture Switch',index=${var:Mic1Mindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:Mic1Mixer} Capture Switch',index=${var:Mic1Mindex} off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "${var:Mic1PCM}"
+ JackControl "${var:Mic1Jack}"
+ CaptureMixerElem "${var:Mic1Mixer},${var:Mic1Mindex}"
+ }
+ }
+}
+
+If.mic2 {
+ Condition {
+ Type String
+ Empty "${var:Mic2Name}"
+ }
+ False.SectionDevice."Mic2" {
+ Comment "${var:Mic2Name}"
+
+ EnableSequence [
+ cset "name='${var:Mic2Mixer} Capture Switch',index=${var:Mic2Mindex} on"
+ ]
+
+ DisableSequence [
+ cset "name='${var:Mic2Mixer} Capture Switch',index=${var:Mic2Mindex} off"
+ ]
+
+ Value {
+ CapturePriority 400
+ CapturePCM "${var:Mic2PCM}"
+ JackControl "${var:Mic2Jack}"
+ CaptureMixerElem "${var:Mic2Mixer},${var:Mic2Mindex}"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf
new file mode 100644
index 00000000..07f76e96
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf
@@ -0,0 +1,13 @@
+Comment "USB-audio on Realtek ALC4080"
+SectionUseCase."HiFi" {
+ File "/USB-Audio/Realtek/ALC4080-HiFi.conf"
+ Variant."HiFi" {
+ Comment "HiFi 2.0 channels"
+ }
+ Variant."HiFi 5+1" {
+ Comment "HiFi 5.1 channels"
+ }
+ Variant."HiFi 7+1" {
+ Comment "HiFi 7.1 channels"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast-Hifi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast-Hifi.conf
new file mode 100644
index 00000000..1812433d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast-Hifi.conf
@@ -0,0 +1,164 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "bc_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 8
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ HWChannelPos6 FL
+ HWChannelPos7 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "bc_stereo_in"
+ Direction Capture
+ Channels 2
+ HWChannels 6
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ HWChannelPos4 FL
+ HWChannelPos5 FR
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Chat L/R"
+
+ Value {
+ PlaybackPriority 100
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_out"
+ Direction Playback
+ HWChannels 8
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Game L/R"
+
+ Value {
+ PlaybackPriority 200
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_out"
+ Direction Playback
+ HWChannels 8
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "Music L/R"
+
+ Value {
+ PlaybackPriority 300
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_out"
+ Direction Playback
+ HWChannels 8
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "System L/R"
+
+ Value {
+ PlaybackPriority 400
+ }
+
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_out"
+ Direction Playback
+ HWChannels 8
+ Channels 2
+ Channel0 6
+ Channel1 7
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "StreamMix"
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line6" {
+ Comment "Mic"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line7" {
+ Comment "SFX"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "bc_stereo_in"
+ Direction Capture
+ HWChannels 6
+ Channels 2
+ Channel0 4
+ Channel1 5
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast.conf
new file mode 100644
index 00000000..6231a723
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Roland/BridgeCast.conf
@@ -0,0 +1,6 @@
+Comment "Roland BridgeCast Hifi-Mode"
+
+SectionUseCase."HiFi" {
+ Comment "BridgeCast MultiChannel"
+ File "/USB-Audio/Roland/BridgeCast-Hifi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf
new file mode 100644
index 00000000..46b2e269
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf
@@ -0,0 +1,55 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "ssl2_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Stereo Line"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mic/Line/Inst 1"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "ssl2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mic/Line/Inst 2"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "ssl2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2.conf
new file mode 100644
index 00000000..55318349
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/SolidStateLabs/SSL2.conf
@@ -0,0 +1,11 @@
+Comment "Solid State Labs SSL 2"
+
+SectionUseCase."HiFi" {
+ Comment "HiFi"
+ File "/USB-Audio/SolidStateLabs/SSL2-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 2
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7-HiFi.conf
new file mode 100644
index 00000000..314455a3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7-HiFi.conf
@@ -0,0 +1,15 @@
+SectionDevice."Headset" {
+ Comment "Chat"
+ Value {
+ PlaybackPCM "hw:${CardId},0"
+ CapturePCM "hw:${CardId},0"
+ CaptureChannels 1
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Game"
+ Value {
+ PlaybackPCM "hw:${CardId},1"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7.conf
new file mode 100644
index 00000000..db43c7dd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Sony/Inzone-H9-H7.conf
@@ -0,0 +1,6 @@
+Comment "Sony Corp. INZONE H9 / INZONE H7"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Sony/Inzone-H9-H7-HiFi.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C-HiFi.conf
new file mode 100644
index 00000000..285b5c41
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C-HiFi.conf
@@ -0,0 +1,94 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "steinberg_ur24c_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "steinberg_ur24c_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+SectionDevice."Line 1" {
+ Comment "Stereo Line (outputs 1 and 2)"
+
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur24c_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line 2" {
+ Comment "Stereo Line (outputs 3 and 4)"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur24c_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line 3" {
+ Comment "Mono Line (input 1)"
+
+ Value {
+ CapturePriority 600
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur24c_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line 4" {
+ Comment "Mono Line (input 2)"
+
+ Value {
+ CapturePriority 500
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur24c_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C.conf
new file mode 100644
index 00000000..29be27c0
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR24C.conf
@@ -0,0 +1,11 @@
+Comment "Steinberg UR24C USB-Audio"
+
+SectionUseCase."HiFi" {
+ Comment "HiFi"
+ File "/USB-Audio/Steinberg/UR24C-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44-HiFi.conf
new file mode 100644
index 00000000..7926a0fe
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44-HiFi.conf
@@ -0,0 +1,162 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "steinberg_ur44_stereo_out"
+ Direction Playback
+ Channels 2
+ HWChannels 4
+ HWChannelPos0 FL
+ HWChannelPos1 FR
+ HWChannelPos2 FL
+ HWChannelPos3 FR
+ }
+ }
+ {
+ SplitPCM {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 6
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ HWChannelPos2 MONO
+ HWChannelPos3 MONO
+ HWChannelPos4 MONO
+ HWChannelPos5 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Line Outputs 1 and 2"
+
+ Value {
+ PlaybackPriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 0
+ Channel1 1
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line2" {
+ Comment "Line Outputs 3 and 4"
+
+ Value {
+ PlaybackPriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_stereo_out"
+ Direction Playback
+ HWChannels 4
+ Channels 2
+ Channel0 2
+ Channel1 3
+ ChannelPos0 FL
+ ChannelPos1 FR
+ }
+}
+
+SectionDevice."Line3" {
+ Comment "Mono Input 1"
+
+ Value {
+ CapturePriority 600
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line4" {
+ Comment "Mono Input 2"
+
+ Value {
+ CapturePriority 500
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line5" {
+ Comment "Mono Input 3"
+
+ Value {
+ CapturePriority 400
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 2
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line6" {
+ Comment "Mono Input 4"
+
+ Value {
+ CapturePriority 300
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 3
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line7" {
+ Comment "Mono Input 5"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 4
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Line8" {
+ Comment "Mono Input 6"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "steinberg_ur44_mono_in"
+ Direction Capture
+ HWChannels 6
+ Channels 1
+ Channel0 5
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44.conf
new file mode 100644
index 00000000..7fde566a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/Steinberg/UR44.conf
@@ -0,0 +1,11 @@
+Comment "Steinberg UR44 USB-Audio"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/Steinberg/UR44-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 4
+Define.DirectCaptureChannels 6
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/USB-Audio.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/USB-Audio.conf
new file mode 100644
index 00000000..c68bbfca
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/USB-Audio.conf
@@ -0,0 +1,413 @@
+Syntax 6
+
+Define.ProfileName ""
+Define.MixerRemap ""
+Define.SplitPCMPeriodTime 10000 # 10ms
+
+If.env1 {
+ Condition {
+ Type String
+ Empty "$${env:UCM_USB_PERIOD_TIME}"
+ }
+ False.Define.SplitPCMPeriodTime "${env:UCM_USB_PERIOD_TIME}"
+}
+
+If.linked {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ # Aorus Master Front Headphone 0414:a000
+ Regex "USB0414:a000"
+ }
+ True.Define.ProfileName "../common/linked"
+}
+
+If.realtek-alc1220-vb {
+
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ # 0414:a002 Gigabyte TRX40 Aorus Pro WiFi
+ # 0414:a00d Gigabyte TRX40 Aorus Pro WiFi Rev 1.2
+ # 0b05:1917 ASUS ROG Strix
+ # 0b05:1918 ASUS PRIME TRX40 PRO-S
+ # 0db0:0d64 MSI TRX40 Creator
+ # 0db0:543d MSI TRX40
+ # 26ce:0a01 Asrock TRX40 Creator
+ Regex "USB((0414:a00[2d])|(0b05:191[78])|(0db0:(0d64|543d))|(26ce:0a01))"
+ }
+ True.Define.ProfileName "Realtek/ALC1220-VB-Desktop"
+}
+
+If.realtek-alc4080 {
+
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ # 0414:a00e Gigabyte Z590 Aorus Pro AX
+ # 0414:a010 Gigabyte Z590 Vision G Intel
+ # 0414:a011 Gigabyte Z690 AORUS ULTRA
+ # 0414:a012 Gigabyte Z690 AERO G DDR4
+ # 0414:a014 Gigabyte Z690I AORUS ULTRA DDR4
+ # 0b05:1984 ASUS Pro WS WRX80E-SAGE SE WIFI
+ # 0b05:1996 ASUS on multiple boards (including ASUS ROG Maximus XIII)
+ # 0b05:1999 ASUS ROG Strix Z590-A Gaming WiFi
+ # 0b05:1a16 ASUS ROG Strix B660-F Gaming WiFi
+ # 0b05:1a20 ASUS ROG STRIX Z690-I Gaming Wifi
+ # 0b05:1a27 ALC4082 on ASUS ROG Maximus Z690 Hero
+ # 0b05:1a52 ASUS ROG Strix X670E-F & Z790-E Gaming Wifi
+ # 0b05:1a53 ALC4082 on ASUS ROG Crosshair X670E Extreme
+ # 0b05:1a5c ASUS ROG Strix B650E-I Gaming WiFi
+ # 0b05:1a97 ASUS ROG Maximus Z790 Apex Encore
+ # 0db0:005a MSI MPG Z690 CARBON WIFI
+ # 0db0:124b MSI MEG Z690 ACE
+ # 0db0:151f MSI X570S EDGE MAX WIFI
+ # 0db0:1feb MSI Edge Wifi Z690
+ # 0db0:3130 MSI PRO X670-P WIFI
+ # 0db0:36e7 MSI MAG B650I Edge WiFi
+ # 0db0:419c MSI MPG X570S Carbon Max Wifi
+ # 0db0:422d MSI Mag B650 Tomahawk Wifi
+ # 0db0:4240 MSI MAG Z590 Tomahawk Wifi
+ # 0db0:62a4 MSI MPG Z790I Edge WiFi
+ # 0db0:6c09 MSI MPG Z790 Carbon Wifi
+ # 0db0:6cc9 MSI MPG Z590 Gaming Plus
+ # 0db0:70d3 MSI MPG B650 Carbon Wifi
+ # 0db0:7696 MSI MAG B650M Mortar Wifi
+ # 0db0:82c7 MSI MEG Z690I Unify
+ # 0db0:8af7 MSI MPG Z590 Gaming Force
+ # 0db0:961e MSI MEG X670E ACE
+ # 0db0:a073 MSI MAG X570S Torpedo Max
+ # 0db0:a228 MSI MPG Z590M GAMING EDGE WIFI
+ # 0db0:a47c MSI MEG X570S Ace Max
+ # 0db0:a74b MSI MPG Z790 Edge Wifi
+ # 0db0:b202 MSI MAG Z690 Tomahawk Wifi
+ # 0db0:d1d7 MSI PRO Z790-A WIFI
+ # 0db0:d6e7 MSI MPG X670E Carbon Wifi
+ # 26ce:0a06 ASRock X670E/Z790 Taichi
+ # 26ce:0a08 ASRock Z790 PG-ITX/TB4
+ Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97)))|(0db0:(005a|124b|151f|1feb|3130|36e7|419c|422d|4240|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|a(073|228|47c|74b)|b202|d1d7|d6e7))|(26ce:0a0[68]))"
+ }
+ True.Define.ProfileName "Realtek/ALC4080"
+}
+
+If.hp_only {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB152a:8750"
+ }
+ True.Define {
+ ProfileName "Common/HeadphonesOnly"
+ }
+}
+
+If.gigabyte-aorus-main {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0414:a001"
+ }
+ True.Define.ProfileName "Gigabyte/Aorus-Master-Main-Audio"
+}
+
+If.steinberg-ur24c {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0499:174d"
+ }
+ True.Define.ProfileName "Steinberg/UR24C"
+}
+
+If.steinberg-ur44 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB0499:17[03]0"
+ }
+ True.Define.ProfileName "Steinberg/UR44"
+}
+
+If.sony-inzone-h9-h7 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB054c:0e53"
+ }
+ True.Define.ProfileName "Sony/Inzone-H9-H7"
+}
+
+If.roland-bridgecast {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0582:02b7"
+ }
+ True.Define.ProfileName "Roland/BridgeCast"
+}
+
+If.motu-m246 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB07fd:000[8b]"
+ }
+ True.If.M6 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "MOTU M6"
+ }
+ True.Define.ProfileName "MOTU/M6"
+ False.If.M4 {
+ Condition {
+ Type String
+ Haystack "${CardLongName}"
+ Needle "MOTU M4"
+ }
+ True.Define.ProfileName "MOTU/M4"
+ False.Define.ProfileName "MOTU/M2"
+ }
+ }
+}
+
+If.dell-wd15 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB0bda:40(14|2e)"
+ }
+ True.Define.ProfileName "Dell/WD15-Dock"
+}
+
+If.dell-desktop-front {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0bda:4c54"
+ }
+ True.Define.ProfileName "Dell/Desktop-Front"
+}
+
+If.dell-desktop-rear {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0bda:4c55"
+ }
+ True.Define.ProfileName "Dell/Desktop-Rear"
+}
+
+If.mbox3 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB0dba:5000"
+ }
+ True.Define.ProfileName "Digidesign/Digidesign-Mbox-3"
+}
+
+If.goxlr {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1220:8fe[04]"
+ }
+ True.Define.ProfileName "GoXLR/GoXLR"
+}
+
+If.focusrite-scarlett-2i {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ # 8006 2i2 1st Gen
+ # 800a 2i4 1st Gen
+ # 801c Solo 1st Gen
+ # 8200 2i4 2nd Gen
+ # 8202 2i2 2nd Gen
+ # 8205 Solo 2nd Gen
+ # 8210 2i2 3rd Gen
+ # 8211 Solo 3rd Gen
+ Regex "USB1235:8(0(0[6a]|1c)|2(0[025]|1[01]))"
+ }
+ True.Define {
+ ProfileName "Focusrite/Scarlett-2i"
+ }
+}
+
+If.behringer-umc202hd {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1397:0507"
+ }
+ True.Define {
+ ProfileName "Behringer/UMC202HD"
+ MixerRemap yes
+ }
+}
+
+If.behringer-umc204hd {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1397:0508"
+ }
+ True.Define {
+ ProfileName "Behringer/UMC204HD"
+ MixerRemap yes
+ }
+}
+
+If.behringer-umc404hd {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1397:0509"
+ }
+ True.Define {
+ ProfileName "Behringer/UMC404HD"
+ MixerRemap yes
+ }
+}
+
+If.behringer-Flow8-Streaming {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1397:050d"
+ }
+ True.Define.ProfileName "Behringer/Flow8-Streaming"
+}
+
+If.behringer-Flow8-Recording {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1397:050c"
+ }
+ True.Define.ProfileName "Behringer/Flow8-Recording"
+}
+
+If.Rane-SL-1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB13e5:0001"
+ }
+ True.Define.ProfileName "Rane/SL-1"
+}
+
+If.lenovo-p620-rear {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB17aa:1046"
+ }
+ True.Define.ProfileName "Lenovo/ThinkStation-P620-Rear"
+}
+
+If.lenovo-p620-main {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB17aa:104d"
+ }
+ True.Define.ProfileName "Lenovo/ThinkStation-P620-Main"
+}
+
+If.kontrolz1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB17cc:1210"
+ }
+ True.Define.ProfileName "NativeInstruments/Traktor-Kontrol-Z1"
+}
+
+If.minifuse4 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB1c75:af70"
+ }
+ True.Define.ProfileName "Arturia/Minifuse-4"
+}
+
+If.minifuse12 {
+ Condition {
+ Type RegexMatch
+ String "${CardComponents}"
+ Regex "USB1c75:af[89]0"
+ }
+ True.Define.ProfileName "Arturia/Minifuse-12"
+}
+
+If.zedi10 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB22f0:0016"
+ }
+ True.Define.ProfileName "AllenAndHeath/Zedi10"
+}
+
+If.id4-0003 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB2708:0003"
+ }
+ True.Define.ProfileName "Audient/Audient-iD4-0003"
+}
+
+If.id4-0009 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB2708:0009"
+ }
+ True.Define.ProfileName "Audient/Audient-iD4-0009"
+}
+
+If.ua-volt2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB2b5a:0021"
+ }
+ True.Define {
+ ProfileName "UniversalAudio/Volt2"
+ }
+}
+
+If.ssl2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "USB31e9:0001"
+ }
+ True.Define {
+ ProfileName "SolidStateLabs/SSL2"
+ }
+}
+
+If.mixremap {
+ Condition {
+ Type String
+ Empty "${var:MixerRemap}"
+ }
+ False {
+ Include.card-init.File "/lib/card-init.conf"
+ Include.ctl-remap.File "/lib/ctl-remap.conf"
+ }
+}
+
+If.inc {
+ Condition {
+ Type String
+ Empty "${var:ProfileName}"
+ }
+ True.Error "UCM is not supported for this USB device (${CardLongName} @ ${CardComponents})"
+ False.Include.prof.File "/USB-Audio/${var:ProfileName}.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2-HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2-HiFi.conf
new file mode 100644
index 00000000..6a79847e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2-HiFi.conf
@@ -0,0 +1,54 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+ {
+ SplitPCM {
+ Name "volt2_mono_in"
+ Direction Capture
+ Channels 1
+ HWChannels 2
+ HWChannelPos0 MONO
+ HWChannelPos1 MONO
+ }
+ }
+]
+
+SectionDevice."Line1" {
+ Comment "Monitor Out"
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Mic1" {
+ Comment "Mono Input 1"
+
+ Value {
+ CapturePriority 200
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "volt2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 0
+ ChannelPos0 MONO
+ }
+}
+
+SectionDevice."Mic2" {
+ Comment "Mono Input 2"
+
+ Value {
+ CapturePriority 100
+ }
+ Macro.pcm_split.SplitPCMDevice {
+ Name "volt2_mono_in"
+ Direction Capture
+ HWChannels 2
+ Channels 1
+ Channel0 1
+ ChannelPos0 MONO
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2.conf
new file mode 100644
index 00000000..7e4a8982
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/USB-Audio/UniversalAudio/Volt2.conf
@@ -0,0 +1,11 @@
+Comment "Universal Audio Volt 2"
+
+SectionUseCase."HiFi" {
+ Comment "Default"
+ File "/USB-Audio/UniversalAudio/Volt2-HiFi.conf"
+}
+
+Define.DirectPlaybackChannels 2
+Define.DirectCaptureChannels 2
+
+Include.dhw.File "/common/direct.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cs42l43/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cs42l43/init.conf
new file mode 100644
index 00000000..10a6e1f3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cs42l43/init.conf
@@ -0,0 +1,14 @@
+# cs42l43 specific control settings
+
+LibraryConfig.remap.Config {
+ ctl.default.map {
+ "name='cs42l43 PDM2 Switch'" {
+ "name='cs42l43 Decimator 3 Switch'".vindex.0 0
+ "name='cs42l43 Decimator 4 Switch'".vindex.1 0
+ }
+ "name='cs42l43 PDM2 Volume'" {
+ "name='cs42l43 Decimator 3 Volume'".vindex.0 0
+ "name='cs42l43 Decimator 4 Volume'".vindex.1 0
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/DisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/DisableSeq.conf
new file mode 100644
index 00000000..ce3ad6dd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/DisableSeq.conf
@@ -0,0 +1,9 @@
+DisableSequence [
+ # Output Configuration
+ cset "name='I2S DAC1L Switch' off"
+ cset "name='I2S DAC1R Switch' off"
+
+ # Input Configuration
+ cset "name='I2S ADC1L Switch' off"
+ cset "name='I2S ADC1R Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/EnableSeq.conf
new file mode 100644
index 00000000..02d918fd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/EnableSeq.conf
@@ -0,0 +1,15 @@
+EnableSequence [
+ # Disable all inputs / outputs
+ cset "name='Ext Spk Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Int Mic Switch' off"
+
+ # Output Configuration
+ cset "name='I2S DAC1L Switch' on"
+ cset "name='I2S DAC1R Switch' on"
+
+ # Input Configuration
+ cset "name='I2S ADC1L Switch' on"
+ cset "name='I2S ADC1R Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadPhones.conf
new file mode 100644
index 00000000..adb70db6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadPhones.conf
@@ -0,0 +1,23 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ cset "name='PortA Out En Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='PortA Out En Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadsetMic.conf
new file mode 100644
index 00000000..5a6643e8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/HeadsetMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='ADC1 Mux' 'PortD Switch'"
+ cset "name='PortD In En Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='PortD In En Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/InternalMic.conf
new file mode 100644
index 00000000..9c083be4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/InternalMic.conf
@@ -0,0 +1,23 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='ADC1 Mux' 'PortC Switch'"
+ cset "name='PortC In En Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='PortC In En Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/Speaker.conf
new file mode 100644
index 00000000..a641ba25
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/cx2072x/Speaker.conf
@@ -0,0 +1,22 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Ext Spk Switch' on"
+ cset "name='PortG Out En Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ cset "name='PortG Out En Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/da7219/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/da7219/init.conf
new file mode 100644
index 00000000..a2f58cc0
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/da7219/init.conf
@@ -0,0 +1,24 @@
+# DA7219 specific volume control settings
+
+BootSequence [
+ cset "name='Playback Digital Volume' 111"
+ cset "name='Playback Digital Switch' 1"
+ cset "name='Out DACL Mux' DAIL"
+ cset "name='Out DACR Mux' DAIR"
+ cset "name='Mixer Out FilterL DACL Switch' 1"
+ cset "name='Mixer Out FilterR DACR Switch' 1"
+ cset "name='ST Mixer Out FilterL Out FilterL Switch' 1"
+ cset "name='ST Mixer Out FilterR Out FilterR Switch' 1"
+ cset "name='Headphone Jack Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Mic Volume' 5"
+ cset "name='Capture Digital Volume' 111"
+ cset "name='Capture Digital Switch' 1"
+ cset "name='Mixin Volume' 10"
+ cset "name='Mixin Switch' 1"
+ cset "name='Mixer In Mic Switch' 1"
+ cset "name='Out DAIL Mux' ADC"
+ cset "name='Out DAIR Mux' ADC"
+ cset "name='Gain Ramp Rate' 1"
+]
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/EnableSeq.conf
new file mode 100644
index 00000000..b75c4a7a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/EnableSeq.conf
@@ -0,0 +1,29 @@
+EnableSequence [
+ # Disable all inputs / outputs
+ cset "name='Speaker Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Internal Mic Switch' off"
+
+ # Set HP vol to 0 dB (3/3)
+ cset "name='Headphone Playback Volume' 3"
+ # Set HP mixer vol to 0 dB
+ cset "name='Headphone Mixer Volume' 11"
+ # Set DAC vol to 0 dB (192/192)
+ cset "name='DAC Playback Volume' 192"
+
+ # Disable Auto Level Control
+ cset "name='ALC Capture Switch' off"
+ # Set ADC vol to 0 dB (192/192)
+ cset "name='ADC Capture Volume' 192"
+ # Set Mic amplifier to +16 dB
+ cset "name='ADC PGA Gain Volume' 7"
+
+ # Setup muxes / switches
+ cset "name='Left Headphone Mixer Left DAC Switch' on"
+ cset "name='Right Headphone Mixer Right DAC Switch' on"
+
+ # Undo MonoSpeaker settings which may have been saved on shutdown
+ cset "name='Playback Polarity' 0"
+ cset "name='DAC Mono Mix Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/HeadPhones.conf
new file mode 100644
index 00000000..57bd4486
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/HeadPhones.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ JackControl "Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-HeadsetMic.conf
new file mode 100644
index 00000000..53958bab
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-HeadsetMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone on IN1"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-InternalMic.conf
new file mode 100644
index 00000000..7e7f75fe
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN1-InternalMic.conf
@@ -0,0 +1,23 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN1"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Differential Mux' lin1-rin1"
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-HeadsetMic.conf
new file mode 100644
index 00000000..9221b24d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-HeadsetMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone on IN2"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Differential Mux' lin2-rin2"
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-InternalMic.conf
new file mode 100644
index 00000000..8b73da4e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/IN2-InternalMic.conf
@@ -0,0 +1,23 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN2"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Differential Mux' lin2-rin2"
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "ADC PGA Gain"
+ CaptureMasterElem "ADC"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/MonoSpeaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/MonoSpeaker.conf
new file mode 100644
index 00000000..2d76413d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/MonoSpeaker.conf
@@ -0,0 +1,41 @@
+SectionDevice."Speaker" {
+ Comment "Mono Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ # BYT/CHT devices with an ES8316 codec use a single speaker
+ # connected between the headhpone LOUT and ROUT pins, expecting
+ # the output to be in a mono differential mode. Presumably this
+ # is done to use the power of both the left and right headphone
+ # amplifier channels to allow the speaker to be louder.
+ #
+ # The ES8316 codec does not have a differential output mode, but
+ # we can emulate one by making both channels output the exact
+ # same signal by setting the "DAC Mono Mix Switch", combined
+ # with setting the "Playback Polarity" control to "R Invert",
+ # which applies a 180 degrees phase inversion to the right chan.
+ cset "name='DAC Mono Mix Switch' on"
+ cset "name='Playback Polarity' 1"
+
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ # DAC settings back to normal for stereo headphones output
+ cset "name='Playback Polarity' 0"
+ cset "name='DAC Mono Mix Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # The es8316 only has a HP-amp which is muxed to the speaker
+ # or to the headpones output
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/Speaker.conf
new file mode 100644
index 00000000..4e977727
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/es8316/Speaker.conf
@@ -0,0 +1,24 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # The es8316 only has a HP-amp which is muxed to the speaker
+ # or to the headpones output
+ PlaybackMixerElem "Headphone Mixer"
+ PlaybackMasterElem "DAC"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/hda/hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/hda/hdmi.conf
new file mode 100644
index 00000000..5bd9f033
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/hda/hdmi.conf
@@ -0,0 +1,35 @@
+#
+# Macro HDMI
+#
+# Arguments:
+#
+# Number HDMI number
+# Device PCM device number
+# Priority UCM device priority
+#
+
+DefineMacro.HDMI.If.hdmi {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=${var:__Device} Jack'"
+ }
+ True {
+ SectionDevice."HDMI${var:__Number}" {
+ Comment "HDMI / DisplayPort ${var:__Number} Output"
+
+ EnableSequence [
+ cset "name='IEC958 Playback Switch',index=${eval:($__Number-1)} on"
+ ]
+
+ DisableSequence [
+ cset "name='IEC958 Playback Switch',index=${eval:($__Number-1)} off"
+ ]
+
+ Value {
+ PlaybackPriority "${var:__Priority}"
+ PlaybackPCM "hw:${CardId},${var:__Device}"
+ JackControl "HDMI/DP,pcm=${var:__Device} Jack"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/EnableSeq.conf
new file mode 100644
index 00000000..23c897bf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/EnableSeq.conf
@@ -0,0 +1,27 @@
+EnableSequence [
+ cset "name='Left Speaker Mixer Left DAC Switch' on"
+ cset "name='Right Speaker Mixer Right DAC Switch' on"
+ cset "name='Digital EQ 3 Band Switch' off"
+ cset "name='Digital EQ 5 Band Switch' off"
+ cset "name='Digital EQ 7 Band Switch' off"
+ cset "name='Biquad Switch' off"
+ cset "name='Filter Mode' Music"
+ cset "name='ADC Oversampling Rate' 0"
+
+ cset "name='DMIC Mux' DMIC"
+ cset "name='MIC2 Mux' IN34"
+ cset "name='MIC2 Volume' 10"
+ cset "name='MIC2 Boost Volume' 0"
+
+ cset "name='ADCR Boost Volume' 4"
+ cset "name='ADCL Boost Volume' 4"
+ cset "name='ADCR Volume' 11"
+ cset "name='ADCL Volume' 11"
+
+ cset "name='Headphone Volume' 10"
+ cset "name='Speaker Volume' 10"
+
+ cset "name='Speaker Left Mixer Volume' 3"
+ cset "name='Speaker Right Mixer Volume' 3"
+ cset "name='Playback Path DC Blocking' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Headphones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Headphones.conf
new file mode 100644
index 00000000..66f99a46
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Headphones.conf
@@ -0,0 +1,25 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Left Switch' on"
+ cset "name='Headphone Right Switch' on"
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Left Switch' off"
+ cset "name='Headphone Right Switch' off"
+ cset "name='Headphone Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/HeadsetMic.conf
new file mode 100644
index 00000000..43f5e9c3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/HeadsetMic.conf
@@ -0,0 +1,32 @@
+# Headset Microphone via MIC2
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='DMIC Mux' ADC"
+ cset "name='Record Path DC Blocking' on"
+
+ cset "name='Left ADC Mixer MIC2 Switch' on"
+ cset "name='Right ADC Mixer MIC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='DMIC Mux' DMIC"
+ cset "name='Record Path DC Blocking' off"
+
+ cset "name='Left ADC Mixer MIC2 Switch' off"
+ cset "name='Right ADC Mixer MIC2 Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/InternalMic.conf
new file mode 100644
index 00000000..25056f5c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/InternalMic.conf
@@ -0,0 +1,25 @@
+# internal microphone via DMIC
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='DMIC Mux' DMIC"
+ cset "name='Record Path DC Blocking' off"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='DMIC Mux' ADC"
+ cset "name='Record Path DC Blocking' on"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Speaker.conf
new file mode 100644
index 00000000..fc65e5e2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/max98090/Speaker.conf
@@ -0,0 +1,24 @@
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Left Switch' on"
+ cset "name='Speaker Right Switch' on"
+ cset "name='Ext Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Left Switch' off"
+ cset "name='Speaker Right Switch' off"
+ cset "name='Ext Spk Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/DMIC1_2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/DMIC1_2.conf
new file mode 100644
index 00000000..f54f6718
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/DMIC1_2.conf
@@ -0,0 +1,30 @@
+# Stereo DMICs on the DMIC1 and DMIC2 inputs
+
+SectionDevice."Mic" {
+ Comment "Internal Digital Microphones"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ # Note needs to be swapped / swap is deliberate!
+ cset "name='ADC CH0 Select' 1"
+ cset "name='ADC CH1 Select' 0"
+
+ cset "name='Int Mic Switch' on"
+ cset "name='DMIC1 Enable Switch' on"
+ cset "name='DMIC2 Enable Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='DMIC1 Enable Switch' off"
+ cset "name='DMIC2 Enable Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/EnableSeq.conf
new file mode 100644
index 00000000..660856fe
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/EnableSeq.conf
@@ -0,0 +1,17 @@
+EnableSequence [
+ # Playback TDM configuration
+ cset "name='DACL Channel Source' 0"
+ cset "name='DACR Channel Source' ${var:RightOutputChannel}"
+ # Input Configuration
+ cset "name='DMIC1 Enable Switch' off"
+ cset "name='DMIC2 Enable Switch' off"
+ cset "name='DMIC3 Enable Switch' off"
+ cset "name='DMIC4 Enable Switch' off"
+ cset "name='MIC1 Volume' 14"
+ cset "name='MIC2 Volume' 14"
+ # Button Configuration
+ cset "name='THD for key media' 10"
+ cset "name='THD for key voice command' 16"
+ cset "name='THD for key volume up' 38"
+ cset "name='THD for key volume down' 115"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadPhones.conf
new file mode 100644
index 00000000..a807f846
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadPhones.conf
@@ -0,0 +1,21 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadsetMic.conf
new file mode 100644
index 00000000..1129a6bc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/HeadsetMic.conf
@@ -0,0 +1,28 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='ADC CH0 Select' 1"
+ cset "name='ADC CH1 Select' 1"
+
+ cset "name='Headset Mic Switch' on"
+ cset "name='Right ADC HSMIC Switch' on"
+ cset "name='Left ADC HSMIC Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='Right ADC HSMIC Switch' off"
+ cset "name='Left ADC HSMIC Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/InternalMic.conf
new file mode 100644
index 00000000..409f01b8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/InternalMic.conf
@@ -0,0 +1,27 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='ADC CH0 Select' 0"
+ cset "name='ADC CH1 Select' 0"
+
+ cset "name='Int Mic Switch' on"
+ cset "name='Right ADC MIC Switch' on"
+ cset "name='Left ADC MIC Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='Right ADC MIC Switch' off"
+ cset "name='Left ADC MIC Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/MonoSpeaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/MonoSpeaker.conf
new file mode 100644
index 00000000..54281332
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/MonoSpeaker.conf
@@ -0,0 +1,26 @@
+SectionDevice."Speaker" {
+ Comment "Mono Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ # Some nau8824 mono speaker boards have the speaker on the right chan
+ # others on the left, enable output of both channels on both speakers
+ cset "name='Speaker Left DACL Volume' 1"
+ cset "name='Speaker Left DACR Volume' 1"
+ cset "name='Speaker Right DACL Volume' 1"
+ cset "name='Speaker Right DACR Volume' 1"
+ cset "name='Ext Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/Speaker.conf
new file mode 100644
index 00000000..a995873e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/nau8824/Speaker.conf
@@ -0,0 +1,24 @@
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Left DACL Volume' 1"
+ cset "name='Speaker Left DACR Volume' 0"
+ cset "name='Speaker Right DACL Volume' 0"
+ cset "name='Speaker Right DACR Volume' 1"
+ cset "name='Ext Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf
new file mode 100644
index 00000000..d2a59886
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneDisableSeq.conf
@@ -0,0 +1,11 @@
+DisableSequence [
+ cset "name='RX_MACRO RX0 MUX' ZERO"
+ cset "name='RX_MACRO RX1 MUX' ZERO"
+ cset "name='RX INT0_1 MIX1 INP0' ZERO"
+ cset "name='RX INT1_1 MIX1 INP0' ZERO"
+ cset "name='RX INT0 DEM MUX' NORMAL_DSM_OUT"
+ cset "name='RX INT1 DEM MUX' NORMAL_DSM_OUT"
+ cset "name='RX_COMP1 Switch' 0"
+ cset "name='RX_COMP2 Switch' 0"
+ cset "name='RX HPH Mode' CLS_H_INVALID"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf
new file mode 100644
index 00000000..0162b6cb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='RX_HPH PWR Mode' LOHIFI"
+ cset "name='RX HPH Mode' CLS_H_ULP"
+ cset "name='RX_MACRO RX0 MUX' AIF1_PB"
+ cset "name='RX_MACRO RX1 MUX' AIF1_PB"
+ cset "name='RX INT0_1 MIX1 INP0' RX0"
+ cset "name='RX INT1_1 MIX1 INP0' RX1"
+ cset "name='RX INT0 DEM MUX' CLSH_DSM_OUT"
+ cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
+ cset "name='RX_COMP1 Switch' 1"
+ cset "name='RX_COMP2 Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/init.conf
new file mode 100644
index 00000000..55b69271
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/init.conf
@@ -0,0 +1,6 @@
+# RX Digital codec specific volume control settings
+
+BootSequence [
+ cset "name='RX_RX0 Digital Volume' 84"
+ cset "name='RX_RX1 Digital Volume' 84"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0DisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0DisableSeq.conf
new file mode 100644
index 00000000..e925a43f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0DisableSeq.conf
@@ -0,0 +1,4 @@
+DisableSequence [
+ cset "name='TX DMIC MUX0' ZERO"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0EnableSeq.conf
new file mode 100644
index 00000000..fdaee349
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/DMIC0EnableSeq.conf
@@ -0,0 +1,9 @@
+EnableSequence [
+ cset "name='TX DEC0 MUX' MSM_DMIC"
+ cset "name='TX DMIC MUX0' DMIC0"
+ cset "name='TX DMIC MUX1' DMIC1"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 1"
+ cset "name='TX_AIF1_CAP Mixer DEC1' 1"
+ cset "name='TX_DEC0 Volume' 100"
+ cset "name='TX_DEC1 Volume' 100"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicDisableSeq.conf
new file mode 100644
index 00000000..97b2762c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicDisableSeq.conf
@@ -0,0 +1,5 @@
+DisableSequence [
+ cset "name='TX SMIC MUX0' ZERO"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 0"
+ cset "name='TX1 MODE' ADC_INVALID"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicEnableSeq.conf
new file mode 100644
index 00000000..631c6e28
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/HeadphoneMicEnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='TX DEC0 MUX' SWR_MIC"
+ cset "name='TX SMIC MUX0' ADC1"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 1"
+ cset "name='TX1 MODE' ADC_NORMAL"
+ cset "name='TX_DEC0 Volume' 110"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf
new file mode 100644
index 00000000..8282b9c8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic0EnableSeq.conf
@@ -0,0 +1,6 @@
+EnableSequence [
+ cset "name='TX DEC0 MUX' SWR_MIC"
+ cset "name='TX SMIC MUX0' SWR_MIC0"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 1"
+ cset "name='TX_DEC0 Volume' 100"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic1EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic1EnableSeq.conf
new file mode 100644
index 00000000..28152bfb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMic1EnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='TX DEC0 MUX' SWR_MIC"
+ cset "name='TX SMIC MUX0' SWR_MIC1"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 1"
+ cset "name='DEC0 MODE' ADC_DEFAULT"
+ cset "name='TX_DEC0 Volume' 110"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf
new file mode 100644
index 00000000..9cee13f4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/tx-macro/SoundwireMicDisableSeq.conf
@@ -0,0 +1,4 @@
+DisableSequence [
+ cset "name='TX SMIC MUX0' ZERO"
+ cset "name='TX_AIF1_CAP Mixer DEC0' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf
new file mode 100644
index 00000000..ec3f45aa
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf
@@ -0,0 +1,5 @@
+DisableSequence [
+ cset "name='VA DMIC MUX0' ZERO"
+ cset "name='VA_DEC0 Volume' 0"
+ cset "name='VA_AIF1_CAP Mixer DEC0' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf
new file mode 100644
index 00000000..cc589ccd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf
@@ -0,0 +1,6 @@
+EnableSequence [
+ cset "name='VA DEC0 MUX' VA_DMIC"
+ cset "name='VA DMIC MUX0' DMIC0"
+ cset "name='VA_AIF1_CAP Mixer DEC0' 1"
+ cset "name='VA_DEC0 Volume' 100"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1DisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1DisableSeq.conf
new file mode 100644
index 00000000..7972a3b4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1DisableSeq.conf
@@ -0,0 +1,5 @@
+DisableSequence [
+ cset "name='VA DMIC MUX1' ZERO"
+ cset "name='VA_DEC1 Volume' 0"
+ cset "name='VA_AIF1_CAP Mixer DEC1' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1EnableSeq.conf
new file mode 100644
index 00000000..b11ddac7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/va-macro/DMIC1EnableSeq.conf
@@ -0,0 +1,6 @@
+EnableSequence [
+ cset "name='VA DEC1 MUX' VA_DMIC"
+ cset "name='VA DMIC MUX1' DMIC1"
+ cset "name='VA_AIF1_CAP Mixer DEC1' 1"
+ cset "name='VA_DEC1 Volume' 100"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf
new file mode 100644
index 00000000..98cf061e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerDisableSeq.conf
@@ -0,0 +1,8 @@
+DisableSequence [
+ cset "name='WSA_COMP1 Switch' 0"
+ cset "name='WSA_COMP2 Switch' 0"
+ cset "name='WSA_RX0 INP0' ZERO"
+ cset "name='WSA_RX1 INP0' ZERO"
+ cset "name='WSA RX0 MUX' ZERO"
+ cset "name='WSA RX1 MUX' ZERO"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf
new file mode 100644
index 00000000..488826b8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/SpeakerEnableSeq.conf
@@ -0,0 +1,8 @@
+EnableSequence [
+ cset "name='WSA RX0 MUX' AIF1_PB"
+ cset "name='WSA RX1 MUX' AIF1_PB"
+ cset "name='WSA_RX0 INP0' RX0"
+ cset "name='WSA_RX1 INP0' RX1"
+ cset "name='WSA_COMP1 Switch' 1"
+ cset "name='WSA_COMP2 Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerDisableSeq.conf
new file mode 100644
index 00000000..c34b50b8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerDisableSeq.conf
@@ -0,0 +1,10 @@
+DisableSequence [
+# cset "name='WSA WSA_RX0 Digital Volume' 0"
+# cset "name='WSA WSA_RX1 Digital Volume' 0"
+ cset "name='WSA WSA_COMP1 Switch' 0"
+ cset "name='WSA WSA_COMP2 Switch' 0"
+ cset "name='WSA WSA_RX0 INP0' ZERO"
+ cset "name='WSA WSA_RX1 INP0' ZERO"
+ cset "name='WSA WSA RX0 MUX' ZERO"
+ cset "name='WSA WSA RX1 MUX' ZERO"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf
new file mode 100644
index 00000000..a619ed68
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa1SpeakerEnableSeq.conf
@@ -0,0 +1,10 @@
+EnableSequence [
+ cset "name='WSA WSA RX0 MUX' AIF1_PB"
+ cset "name='WSA WSA RX1 MUX' AIF1_PB"
+ cset "name='WSA WSA_RX0 INP0' RX0"
+ cset "name='WSA WSA_RX1 INP0' RX1"
+ cset "name='WSA WSA_COMP1 Switch' 1"
+ cset "name='WSA WSA_COMP2 Switch' 1"
+ #cset "name='WSA WSA_RX0 Digital Volume' 68"
+ #cset "name='WSA WSA_RX1 Digital Volume' 68"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerDisableSeq.conf
new file mode 100644
index 00000000..2c8dda70
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerDisableSeq.conf
@@ -0,0 +1,10 @@
+DisableSequence [
+# cset "name='WSA2 WSA_RX0 Digital Volume' 0"
+# cset "name='WSA2 WSA_RX1 Digital Volume' 0"
+ cset "name='WSA2 WSA_COMP1 Switch' 0"
+ cset "name='WSA2 WSA_COMP2 Switch' 0"
+ cset "name='WSA2 WSA_RX0 INP0' ZERO"
+ cset "name='WSA2 WSA_RX1 INP0' ZERO"
+ cset "name='WSA2 WSA RX0 MUX' ZERO"
+ cset "name='WSA2 WSA RX1 MUX' ZERO"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf
new file mode 100644
index 00000000..af1cd665
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/Wsa2SpeakerEnableSeq.conf
@@ -0,0 +1,10 @@
+EnableSequence [
+ cset "name='WSA2 WSA RX0 MUX' AIF1_PB"
+ cset "name='WSA2 WSA RX1 MUX' AIF1_PB"
+ cset "name='WSA2 WSA_RX0 INP0' RX0"
+ cset "name='WSA2 WSA_RX1 INP0' RX1"
+ cset "name='WSA2 WSA_COMP1 Switch' 1"
+ cset "name='WSA2 WSA_COMP2 Switch' 1"
+ #cset "name='WSA2 WSA_RX0 Digital Volume' 68"
+ #cset "name='WSA2 WSA_RX1 Digital Volume' 68"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/four-speakers/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/four-speakers/init.conf
new file mode 100644
index 00000000..3be24079
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/four-speakers/init.conf
@@ -0,0 +1,8 @@
+# WSA Digital codec specific volume control settings
+
+BootSequence [
+ cset "name='WSA WSA_RX0 Digital Volume' 84"
+ cset "name='WSA WSA_RX1 Digital Volume' 84"
+ cset "name='WSA2 WSA_RX0 Digital Volume' 84"
+ cset "name='WSA2 WSA_RX1 Digital Volume' 84"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/init.conf
new file mode 100644
index 00000000..29f7c395
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/init.conf
@@ -0,0 +1,6 @@
+# WSA Digital codec specific volume control settings
+
+BootSequence [
+ cset "name='WSA_RX0 Digital Volume' 84"
+ cset "name='WSA_RX1 Digital Volume' 84"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/DigitalMics.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/DigitalMics.conf
new file mode 100644
index 00000000..188df0a2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/DigitalMics.conf
@@ -0,0 +1,61 @@
+SectionDevice."Mic" {
+ Comment "Internal Digital Microphones"
+
+ If.have-headset {
+ Condition {
+ Type String
+ Empty "${var:HaveHeadsetMic}"
+ }
+ False {
+ ConflictingDevice [
+ "Headset"
+ ]
+ }
+ }
+
+ EnableSequence [
+ cset "name='Stereo ADC2 Mux' ${var:StereoADC2Mux}"
+ cset "name='Mono ADC MIXL ADC2 Switch' on"
+ cset "name='Mono ADC MIXR ADC2 Switch' on"
+ cset "name='Stereo ADC MIXL ADC2 Switch' on"
+ cset "name='Stereo ADC MIXR ADC2 Switch' on"
+
+ ]
+
+ DisableSequence [
+ cset "name='Mono ADC MIXL ADC2 Switch' off"
+ cset "name='Mono ADC MIXR ADC2 Switch' off"
+ cset "name='Stereo ADC MIXL ADC2 Switch' off"
+ cset "name='Stereo ADC MIXR ADC2 Switch' off"
+
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ If.DmicAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True {
+ CaptureMixerElem "ADC"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "ADC Capture Switch"
+ }
+ }
+ If.DmicAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True {
+ CaptureMixerElem "Mono ADC"
+ CaptureVolume "Mono ADC Capture Volume"
+ CaptureSwitch "Mono ADC Capture Switch"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/EnableSeq.conf
new file mode 100644
index 00000000..d9d536c4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/EnableSeq.conf
@@ -0,0 +1,84 @@
+EnableSequence [
+ # RT5640 default output routing
+ cset "name='DAC MIXL INF1 Switch' on"
+ cset "name='DAC MIXR INF1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L2 Switch' on"
+ cset "name='Stereo DAC MIXR DAC R2 Switch' on"
+ cset "name='OUT MIXL DAC L1 Switch' on"
+ cset "name='OUT MIXR DAC R1 Switch' on"
+ cset "name='SPK MIXL DAC L1 Switch' on"
+ cset "name='SPK MIXR DAC R1 Switch' on"
+
+ # uncomment for loopback mic->speakers
+ # cset "name='SPOL MIX BST1 Switch' on"
+ # cset "name='SPOR MIX BST1 Switch' on"
+
+ # uncomment for loopback playback -> capture
+ # cset "name='RECMIXL OUT MIXL Switch' on"
+ # cset "name='RECMIXR OUT MIXR Switch' on"
+
+ # uncomment to enable swap between AIF1 and AIF2
+ # warning: can only work with SSP0 firmware enabled
+ cset "name='SDI select' 0"
+ cset "name='DAI select' 0"
+ #cset "name='SDI select' 1"
+ #cset "name='DAI select' 1"
+
+ cset "name='DAC2 Playback Switch' on"
+
+ # Input Configuration
+ cset "name='Stereo ADC1 Mux' ADC"
+ cset "name='ADC Capture Switch' on"
+
+ cset "name='Mono ADC L1 Mux' ADCL"
+ cset "name='Mono ADC R1 Mux' ADCR"
+ cset "name='Mono ADC L2 Mux' DMIC L1"
+ cset "name='Mono ADC R2 Mux' DMIC R1"
+ cset "name='Mono ADC Capture Switch' on"
+
+ # 47=0dB, 0.375 dB/step, set it to 9 dB to help with soft mics
+ cset "name='ADC Capture Volume' 71"
+ cset "name='Mono ADC Capture Volume' 71"
+
+ # The second 'Mono ADC' path does not have a 'Boost Gain',
+ # set this to 0dB so that the volume of the AIF1 and AIF2 paths is equal.
+ cset "name='ADC Boost Gain' 0"
+
+ # Set IN1/IN3 internal mic boost to 8 (max)
+ # Set IN2 headset-mic boost to 1, headset mics are quite loud
+ cset "name='IN1 Boost' 8"
+ cset "name='IN2 Boost' 1"
+ cset "name='IN3 Boost' 8"
+
+ # Start with all controls which are used by the individual
+ # input/output Enable/DisableSequences off
+
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ cset "name='RECMIXL BST3 Switch' off"
+ cset "name='RECMIXR BST3 Switch' off"
+
+ cset "name='Stereo ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo ADC MIXR ADC1 Switch' off"
+ cset "name='Stereo ADC MIXL ADC2 Switch' off"
+ cset "name='Stereo ADC MIXR ADC2 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC2 Switch' off"
+ cset "name='Mono ADC MIXR ADC2 Switch' off"
+
+ # Turn off playback switches by default, otherwise both Speaker
+ # and headphones are playing audio initially until headphones are
+ # re-inserted.
+ cset "name='HP L Playback Switch' off"
+ cset "name='HP R Playback Switch' off"
+ cset "name='Speaker L Playback Switch' off"
+ cset "name='Speaker R Playback Switch' off"
+
+ cset "name='HP Playback Volume' 29"
+ cset "name='Speaker Playback Volume' 35"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones.conf
new file mode 100644
index 00000000..2be787d1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones.conf
@@ -0,0 +1,53 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ If.have-spk {
+ Condition {
+ Type String
+ Empty "${var:HaveSpeaker}"
+ }
+ False {
+ ConflictingDevice [
+ "Speaker"
+ ]
+ }
+ }
+
+ EnableSequence [
+ cset "name='HPO MIX HPVOL Switch' on"
+ cset "name='HP Channel Switch' on"
+ cset "name='HP L Playback Switch' on"
+ cset "name='HP R Playback Switch' on"
+
+ ]
+
+ DisableSequence [
+ cset "name='HP Channel Switch' off"
+ cset "name='HP L Playback Switch' off"
+ cset "name='HP R Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ PlaybackMixerElem "HP"
+ PlaybackVolume "HP Playback Volume"
+ If.HpAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.PlaybackMasterElem "DAC1"
+ }
+ If.HpAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.PlaybackMasterElem "DAC2"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones2.conf
new file mode 100644
index 00000000..b75e420d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadPhones2.conf
@@ -0,0 +1,46 @@
+# The 2nd headset jack uses lineout with an external HP-amp
+
+SectionDevice."Headphones2" {
+ Comment "Headphones 2"
+
+ ConflictingDevice [
+ "Speaker"
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='LOUT MIX OUTVOL L Switch' on"
+ cset "name='LOUT MIX OUTVOL R Switch' on"
+ cset "name='OUT Channel Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='LOUT MIX OUTVOL L Switch' off"
+ cset "name='LOUT MIX OUTVOL R Switch' off"
+ cset "name='OUT Channel Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 400
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Line Out Jack"
+ PlaybackMixerElem "OUT"
+ PlaybackVolume "OUT Playback Volume"
+ If.HpAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.PlaybackMasterElem "DAC1"
+ }
+ If.HpAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.PlaybackMasterElem "DAC2"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic.conf
new file mode 100644
index 00000000..e009a0c3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic.conf
@@ -0,0 +1,59 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ If.have-mic {
+ Condition {
+ Type String
+ Empty "${var:HaveInternalMic}"
+ }
+ False {
+ ConflictingDevice [
+ "Mic"
+ ]
+ }
+ }
+
+ EnableSequence [
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+
+ cset "name='Stereo ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ CaptureMixerElem "IN2 Boost"
+ CaptureVolume "IN2 Boost"
+ If.HSmicAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.CaptureMasterElem "ADC"
+ }
+ If.HSmicAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.CaptureMasterElem "Mono ADC"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf
new file mode 100644
index 00000000..ff05f822
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf
@@ -0,0 +1,52 @@
+SectionDevice."Headset2" {
+ Comment "Headset Microphone 2"
+
+ ConflictingDevice [
+ "Mic"
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+
+ cset "name='Stereo ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic 2 Jack"
+ CaptureMixerElem "IN1 Boost"
+ CaptureVolume "IN1 Boost"
+ If.In1Aif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.CaptureMasterElem "ADC"
+ }
+ If.In1Aif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.CaptureMasterElem "Mono ADC"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN1-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN1-InternalMic.conf
new file mode 100644
index 00000000..9cafc304
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN1-InternalMic.conf
@@ -0,0 +1,58 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN1"
+
+ If.have-headset {
+ Condition {
+ Type String
+ Empty "${var:HaveHeadsetMic}"
+ }
+ False {
+ ConflictingDevice [
+ "Headset"
+ ]
+ }
+ }
+
+ EnableSequence [
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+
+ cset "name='Stereo ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "IN1 Boost"
+ CaptureVolume "IN1 Boost"
+ If.In1Aif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.CaptureMasterElem "ADC"
+ }
+ If.In1Aif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.CaptureMasterElem "Mono ADC"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN3-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN3-InternalMic.conf
new file mode 100644
index 00000000..f1ce9843
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/IN3-InternalMic.conf
@@ -0,0 +1,58 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN3"
+
+ If.have-headset {
+ Condition {
+ Type String
+ Empty "${var:HaveHeadsetMic}"
+ }
+ False {
+ ConflictingDevice [
+ "Headset"
+ ]
+ }
+ }
+
+ EnableSequence [
+ cset "name='RECMIXL BST3 Switch' on"
+ cset "name='RECMIXR BST3 Switch' on"
+
+ cset "name='Stereo ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+ cset "name='RECMIXL BST3 Switch' off"
+ cset "name='RECMIXR BST3 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ CaptureMixerElem "IN3 Boost"
+ CaptureVolume "IN3 Boost"
+ If.In3Aif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.CaptureMasterElem "ADC"
+ }
+ If.In3Aif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.CaptureMasterElem "Mono ADC"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/MonoSpeaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/MonoSpeaker.conf
new file mode 100644
index 00000000..a236027f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/MonoSpeaker.conf
@@ -0,0 +1,47 @@
+SectionDevice."Speaker" {
+ Comment "Mono Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='SPOL MIX SPKVOL L Switch' on"
+# for mono speaker we apply left on right
+# cset "name='SPOR MIX SPKVOL R Switch' on"
+ cset "name='SPOL MIX SPKVOL R Switch' on"
+ cset "name='Speaker Channel Switch' on"
+ cset "name='Speaker L Playback Switch' on"
+ cset "name='Speaker R Playback Switch' on"
+
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Channel Switch' off"
+ cset "name='Speaker L Playback Switch' off"
+ cset "name='Speaker R Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Speaker"
+ PlaybackVolume "Speaker Playback Volume"
+ If.MonoSpkAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.PlaybackMasterElem "DAC1"
+ }
+ If.MonoSpkAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.PlaybackMasterElem "DAC2"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/Speaker.conf
new file mode 100644
index 00000000..81ee91ff
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/Speaker.conf
@@ -0,0 +1,47 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='SPOL MIX SPKVOL L Switch' on"
+ cset "name='SPOR MIX SPKVOL R Switch' on"
+ # undo MonoSpeaker mixing of right channel to left speaker
+ cset "name='SPOL MIX SPKVOL R Switch' off"
+ cset "name='Speaker Channel Switch' on"
+ cset "name='Speaker L Playback Switch' on"
+ cset "name='Speaker R Playback Switch' on"
+
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Channel Switch' off"
+ cset "name='Speaker L Playback Switch' off"
+ cset "name='Speaker R Playback Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ PlaybackMixerElem "Speaker"
+ PlaybackVolume "Speaker Playback Volume"
+ If.SpkAif1 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "1"
+ }
+ True.PlaybackMasterElem "DAC1"
+ }
+ If.SpkAif2 {
+ Condition {
+ Type String
+ String1 "${var:HaveAif}"
+ String2 "2"
+ }
+ True.PlaybackMasterElem "DAC2"
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/init.conf
new file mode 100644
index 00000000..0756b4ab
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5640/init.conf
@@ -0,0 +1,18 @@
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='ADC Boost Gain'" "name='ADC Boost Capture Volume'"
+ "name='IN1 Boost'" "name='IN1 Boost Capture Volume'"
+ "name='IN2 Boost'" "name='IN2 Boost Capture Volume'"
+ "name='IN3 Boost'" "name='IN3 Boost Capture Volume'"
+ # Rename the 'Headphone Switch' DAPM PIN switch to avoid it getting
+ # grouped with 'Headphone Playback Volume'
+ "name='Headphone Switch'" "name='Headphone Output Switch'"
+ "name='HP Playback Volume'" "name='Headphone Playback Volume'"
+ "name='HP Channel Switch'" "name='Headphone Playback Switch'"
+ # Idem for the 'Speaker Switch'
+ "name='Speaker Switch'" "name='Speaker Output Switch'"
+ "name='Speaker Channel Switch'" "name='Speaker Playback Switch'"
+ }
+
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/AnalogMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/AnalogMic.conf
new file mode 100644
index 00000000..17938802
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/AnalogMic.conf
@@ -0,0 +1,37 @@
+SectionDevice."Mic" {
+ Comment "Internal Analog Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+
+ EnableSequence [
+ cset "name='Int Analog Mic Switch' on"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+
+ cset "name='Mono ADC MIXL ADC1 Switch' on"
+ cset "name='Mono ADC MIXR ADC1 Switch' on"
+ cset "name='Mono ADC MIXL ADC2 Switch' off"
+ cset "name='Mono ADC MIXR ADC2 Switch' off"
+
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+
+ cset "name='Int Analog Mic Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicDisableSeq.conf
new file mode 100644
index 00000000..227cc3ed
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicDisableSeq.conf
@@ -0,0 +1,7 @@
+DisableSequence [
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Mono ADC MIXL ADC2 Switch' off"
+ cset "name='Mono ADC MIXR ADC2 Switch' off"
+ cset "name='Int Mic Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicEnableSeq.conf
new file mode 100644
index 00000000..45510ad4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DigitalMicEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='Int Mic Switch' on"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXR ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC2 Switch' on"
+ cset "name='Mono ADC MIXR ADC2 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DisableSeq.conf
new file mode 100644
index 00000000..5726d8a4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/DisableSeq.conf
@@ -0,0 +1,17 @@
+DisableSequence [
+ # Disable audio output path
+ cset "name='codec_out1 mix 0 pcm0_in Switch' off"
+ cset "name='media0_out mix 0 media1_in Switch' off"
+
+ cset "name='media1_in Gain 0 Switch' off"
+ cset "name='pcm0_in Gain 0 Switch' off"
+ cset "name='codec_out1 Gain 0 Switch' off"
+
+ # Disable audio input path
+ cset "name='pcm1_out mix 0 media_loop2_in Switch' off"
+ cset "name='media_loop2_out mix 0 codec_in0 Switch' off"
+
+ cset "name='media_loop2_out Gain 0 Switch' off"
+ cset "name='pcm1_out Gain 0 Switch' off"
+ cset "name='codec_in0 Gain 0 Switch' off"
+]
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/EnableSeq.conf
new file mode 100644
index 00000000..68fdcbbb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/EnableSeq.conf
@@ -0,0 +1,48 @@
+EnableSequence [
+ # Output Configuration
+ cset "name='DAC1 L Mux' IF1 DAC"
+ cset "name='DAC1 R Mux' IF1 DAC"
+ cset "name='DAC1 MIXL DAC1 Switch' 1"
+ cset "name='DAC1 MIXR DAC1 Switch' 1"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' 1"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' 1"
+
+ cset "name='DAC L2 Mux' IF2 DAC"
+ cset "name='DAC R2 Mux' IF2 DAC"
+ cset "name='Mono DAC MIXL DAC L2 Switch' on"
+ cset "name='Mono DAC MIXR DAC R2 Switch' on"
+ cset "name='DAC2 Playback Switch' on"
+
+ cset "name='HPOVOL MIXL DAC1 Switch' on"
+ cset "name='HPOVOL MIXR DAC1 Switch' on"
+ cset "name='HPOVOL MIXL DAC2 Switch' on"
+ cset "name='HPOVOL MIXR DAC2 Switch' on"
+ cset "name='HPO MIX HPVOL Switch' on"
+ cset "name='HPOVOL L Switch' on"
+ cset "name='HPOVOL R Switch' on"
+
+ cset "name='SPK MIXL DAC L1 Switch' on"
+ cset "name='SPK MIXR DAC R1 Switch' on"
+ cset "name='SPK MIXL DAC L2 Switch' on"
+ cset "name='SPK MIXR DAC R2 Switch' on"
+ cset "name='SPOL MIX SPKVOL L Switch' on"
+ cset "name='SPOR MIX SPKVOL R Switch' on"
+ cset "name='SPKVOL L Switch' on"
+ cset "name='SPKVOL R Switch' on"
+
+ # Input Configuration
+ cset "name='Stereo1 DMIC Mux' 0"
+ cset "name='Stereo1 ADC2 Mux' 1"
+ cset "name='ADC Capture Switch' on"
+
+ # 55/63
+ cset "name='ADC Capture Volume' 55"
+ # set ADC Boost to 0/3, higher vals cause a lot of white noise
+ cset "name='ADC Boost Capture Volume' 0"
+ # 55/63
+ cset "name='Mono ADC Capture Volume' 55"
+ # 0/3
+ cset "name='Mono ADC Boost Capture Volume' 0"
+ # 27/31
+ cset "name='IN Capture Volume' 27"
+]
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicDisableSeq.conf
new file mode 100644
index 00000000..d6944235
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicDisableSeq.conf
@@ -0,0 +1,8 @@
+DisableSequence [
+ cset "name='Headset Mic Switch' off"
+
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicEnableSeq.conf
new file mode 100644
index 00000000..cf806370
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HSMicEnableSeq.conf
@@ -0,0 +1,9 @@
+EnableSequence [
+ cset "name='Headset Mic Switch' on"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HeadphonesEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HeadphonesEnableSeq.conf
new file mode 100644
index 00000000..4406d5aa
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/HeadphonesEnableSeq.conf
@@ -0,0 +1,9 @@
+EnableSequence [
+ cset "name='Ext Spk Switch' off"
+ cset "name='Speaker Channel Switch' off"
+
+ cset "name='Headphone Switch' on"
+ cset "name='Headphone Channel Switch' on"
+ # 25/39 higher values cause crackling on some boards
+ cset "name='Headphone Playback Volume' 25"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/SpeakerEnableSeq.conf
new file mode 100644
index 00000000..7b913875
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/SpeakerEnableSeq.conf
@@ -0,0 +1,8 @@
+EnableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='Headphone Channel Switch' off"
+
+ cset "name='Ext Spk Switch' on"
+ cset "name='Speaker Channel Switch' on"
+ cset "name='Speaker Playback Volume' 31"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/init.conf
new file mode 100644
index 00000000..09de16d5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5645/init.conf
@@ -0,0 +1,10 @@
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='IN1 Boost'" "name='IN1 Boost Capture Volume'"
+ "name='IN2 Boost'" "name='IN2 Boost Capture Volume'"
+ "name='Headphone Channel Switch'" "name='Headphone Playback Switch'"
+ "name='Speaker Channel Switch'" "name='Speaker Playback Switch'"
+ }
+
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/DigitalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/DigitalMic.conf
new file mode 100644
index 00000000..d21b21d1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/DigitalMic.conf
@@ -0,0 +1,22 @@
+SectionDevice."Mic" {
+ Comment "Internal Digital Microphone"
+
+ EnableSequence [
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' on"
+ cset "name='DMIC ASRC Switch' on"
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' off"
+ cset "name='DMIC ASRC Switch' off"
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/EnableSeq.conf
new file mode 100644
index 00000000..3d30e15e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/EnableSeq.conf
@@ -0,0 +1,59 @@
+EnableSequence [
+
+ # default state
+ cset "name='HPO MIX DAC1 Switch' on"
+ cset "name='HPO MIX HPVOL Switch' off"
+ cset "name='HPO L Playback Switch' off"
+ cset "name='HPO R Playback Switch' off"
+ cset "name='HPOVOL L Switch' on"
+ cset "name='HPOVOL R Switch' on"
+ cset "name='LOUT MIX DAC L1 Switch' on"
+ cset "name='LOUT MIX DAC R1 Switch' on"
+ cset "name='IF1 ASRC Switch' on"
+ cset "name='LOUT L Playback Switch' off"
+ cset "name='LOUT R Playback Switch' off"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC L1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXL ADC2 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC2 Switch' off"
+ cset "name='Stereo2 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo2 ADC MIXR ADC1 Switch' off"
+ cset "name='Stereo2 ADC MIXL ADC2 Switch' off"
+ cset "name='Stereo2 ADC MIXR ADC2 Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Speaker Switch' off"
+
+ # volumes
+ cset "name='OUT Playback Volume' 31"
+ cset "name='HP Playback Volume' 31"
+ cset "name='DAC1 Playback Volume' 175"
+ cset "name='IN Capture Volume' 23"
+ # 47=0dB, 0.375 dB/step, set it to 6 dB to help with soft mics
+ cset "name='ADC Capture Volume' 63"
+ cset "name='ADC Capture Switch' on"
+ # Set ADC Boost Gain to 3dB higher vals result in too much noise
+ cset "name='ADC Boost Gain' 1"
+ # Set IN1, IN2 and IN3 internal mic boost to 1
+ cset "name='IN1 Boost' 1"
+ cset "name='IN2 Boost' 1"
+ cset "name='IN3 Boost' 1"
+
+ # input
+ cset "name='Stereo1 ADC L1 Mux' ADC"
+ cset "name='Stereo1 ADC R1 Mux' ADC"
+ cset "name='Stereo1 ADC L2 Mux' DMIC"
+ cset "name='Stereo1 ADC R2 Mux' DMIC"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='RECMIXL BST3 Switch' off"
+ cset "name='RECMIXR BST3 Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='Line In Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones-swapped.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones-swapped.conf
new file mode 100644
index 00000000..595f29c7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones-swapped.conf
@@ -0,0 +1,39 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ # Swap left and right
+ cset "name='Stereo DAC MIXL DAC R1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' off"
+
+ cset "name='Headphone Switch' on"
+ cset "name='HPO L Playback Switch' on"
+ cset "name='HPO R Playback Switch' on"
+ # Done after turning the HP on to keep the bias and clk on
+ cset "name='Speaker Switch' off"
+ cset "name='LOUT L Playback Switch' off"
+ cset "name='LOUT R Playback Switch' off"
+ ]
+
+ DisableSequence [
+ # Disabling the HP switches is done by the Speaker EnableSeq
+
+ # Unswap left and right
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC L1 Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones.conf
new file mode 100644
index 00000000..c7165878
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/HeadPhones.conf
@@ -0,0 +1,30 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ cset "name='HPO L Playback Switch' on"
+ cset "name='HPO R Playback Switch' on"
+ # Done after turning the HP on to keep the bias and clk on
+ cset "name='Speaker Switch' off"
+ cset "name='LOUT L Playback Switch' off"
+ cset "name='LOUT R Playback Switch' off"
+ ]
+
+ # DisableSequence [
+ # This is done by the Speaker EnableSequence, so that the
+ # Platform Clock and BIAS do not temporarily get turned off
+ # as that breaks audio-streams which are playing when
+ # switching between Speaker/Headphone
+ # ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN1-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN1-InternalMic.conf
new file mode 100644
index 00000000..faa0bfa3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN1-InternalMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN1"
+
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN12-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN12-InternalMic.conf
new file mode 100644
index 00000000..79c72a3e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN12-InternalMic.conf
@@ -0,0 +1,28 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphones on IN1 and IN2"
+
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-HeadsetMic.conf
new file mode 100644
index 00000000..86bbacbe
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-HeadsetMic.conf
@@ -0,0 +1,29 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone on IN2"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-InternalMic.conf
new file mode 100644
index 00000000..da15a6d9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN2-InternalMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone on IN2"
+
+ EnableSequence [
+ cset "name='Internal Mic Switch' on"
+ cset "name='RECMIXL BST2 Switch' on"
+ cset "name='RECMIXR BST2 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN3-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN3-HeadsetMic.conf
new file mode 100644
index 00000000..a40fefcc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/IN3-HeadsetMic.conf
@@ -0,0 +1,29 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone on IN3"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='RECMIXL BST3 Switch' on"
+ cset "name='RECMIXR BST3 Switch' on"
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' on"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Stereo1 ADC MIXL ADC1 Switch' off"
+ cset "name='Stereo1 ADC MIXR ADC1 Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='RECMIXL BST3 Switch' off"
+ cset "name='RECMIXR BST3 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/MonoSpeaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/MonoSpeaker.conf
new file mode 100644
index 00000000..a83b4815
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/MonoSpeaker.conf
@@ -0,0 +1,47 @@
+SectionDevice."Speaker" {
+ Comment "Mono Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ # On most (all?) devices with a single / mono speaker an
+ # amplifier with a differential input connected between LOUT
+ # right and left is used. We deal with this by silencing the
+ # right output and mixing left + right to the left output.
+ #
+ # An alternative approach for devices using the differential
+ # setup would be to set bit 15 of register 5 in the codec,
+ # which turns the stereo unbalanced line out into a mono
+ # balanced line out.
+ #
+ # This possibility was discovered after we already shipped the
+ # current solution and the current solution has the advantage
+ # of also working on devices which only use LOUT left in
+ # unbalanced mode. The net result is the same for devices using
+ # the differential setup, so we just stick with what we have.
+ cset "name='Stereo DAC MIXR DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' on"
+
+ cset "name='Speaker Switch' on"
+ cset "name='LOUT L Playback Switch' on"
+ # Done after turning the speaker on to keep the bias and clk on
+ cset "name='Headphone Switch' off"
+ cset "name='HPO L Playback Switch' off"
+ cset "name='HPO R Playback Switch' off"
+ ]
+
+ DisableSequence [
+ # Disabling the switches is done by the Speaker EnableSeq
+
+ # Undo mono mapping
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/Speaker.conf
new file mode 100644
index 00000000..b63390fb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/Speaker.conf
@@ -0,0 +1,29 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ cset "name='LOUT L Playback Switch' on"
+ cset "name='LOUT R Playback Switch' on"
+ # Done after turning the speaker on to keep the bias and clk on
+ cset "name='Headphone Switch' off"
+ cset "name='HPO L Playback Switch' off"
+ cset "name='HPO R Playback Switch' off"
+ ]
+
+ # DisableSequence [
+ # This is done by the Headphones EnableSequence, so that the
+ # Platform Clock and BIAS do not temporarily get turned off
+ # as that breaks audio-streams which are playing when
+ # switching between Speaker/Headphone
+ # ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/init.conf
new file mode 100644
index 00000000..ce77dafa
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5651/init.conf
@@ -0,0 +1,11 @@
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='ADC Boost Gain'" "name='ADC Boost Capture Volume'"
+ "name='IN1 Boost'" "name='IN1 Boost Capture Volume'"
+ "name='IN2 Boost'" "name='IN2 Boost Capture Volume'"
+ "name='IN3 Boost'" "name='IN3 Boost Capture Volume'"
+ "name='HP Playback Volume'" "name='Headphone Playback Volume'"
+ }
+
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC1.conf
new file mode 100644
index 00000000..ca65d28a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC1.conf
@@ -0,0 +1,32 @@
+SectionDevice."Mic1" {
+ Comment "Internal Digital Microphone on DMIC1"
+
+ ConflictingDevice [
+ "Mic2"
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='Stereo1 DMIC Mux' DMIC1"
+ cset "name='Stereo1 ADC 2 Mux' DMIC"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ # The DMIC ofcourse has no analog volume controls
+ # Use the digital ADC master control as MixerElem
+ CaptureMixerElem "ADC"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "ADC Capture Switch"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC2.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC2.conf
new file mode 100644
index 00000000..2a2f9fe4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/DMIC2.conf
@@ -0,0 +1,32 @@
+SectionDevice."Mic2" {
+ Comment "Internal Digital Microphone on DMIC2"
+
+ ConflictingDevice [
+ "Mic1"
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='Int Mic Switch' on"
+ cset "name='Stereo1 DMIC Mux' DMIC2"
+ cset "name='Stereo1 ADC 2 Mux' DMIC"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Int Mic Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ # The DMIC ofcourse has no analog volume controls
+ # Use the digital ADC master control as MixerElem
+ CaptureMixerElem "ADC"
+ CaptureVolume "ADC Capture Volume"
+ CaptureSwitch "ADC Capture Switch"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/EnableSeq.conf
new file mode 100644
index 00000000..e3732750
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/EnableSeq.conf
@@ -0,0 +1,54 @@
+EnableSequence [
+ # Playback (I2S1)
+
+ # common
+ cset "name='DAC1 L Mux' IF1 DAC"
+ cset "name='DAC1 R Mux' IF1 DAC"
+ cset "name='DAC1 MIXL DAC1 Switch' on"
+ cset "name='DAC1 MIXR DAC1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC L1 Switch' on"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ cset "name='Stereo DAC MIXR DAC L1 Switch' off"
+
+ # speaker
+ cset "name='PDM1 L Mux' Stereo DAC"
+ cset "name='PDM1 R Mux' Stereo DAC"
+
+ # headphone
+ cset "name='HPOVOL MIXL DAC1 Switch' on"
+ cset "name='HPOVOL MIXR DAC1 Switch' on"
+ cset "name='HPO MIX HPVOL Switch' on"
+
+ # line out
+ # cset "name='OUT MIXL DAC L1 Switch' on"
+ # cset "name='OUT MIXR DAC R1 Switch' on"
+ # cset "name='LOUT MIX OUTMIX L Switch' on"
+ # cset "name='LOUT MIX OUTMIX R Switch' on"
+
+ # Both the DMICs and the headset mic (even with the 20dB boost below)
+ # are quite soft, set the default capture volume to +12dB
+ # 47=0dB, 0.375dB/step, 79=+12dB
+ cset "name='ADC Capture Volume' 79"
+ cset "name='ADC Capture Switch' on"
+ # 0=0dB
+ cset "name='STO1 ADC Boost Gain Volume' 0"
+
+ # Headset mic is quite soft, boost it a bit, 1 = 20dB which is the first
+ # available boost step
+ cset "name='IN1 Boost Volume' 1"
+
+ # Start with all outputs / inputs disabled
+ cset "name='Ext Spk Switch' off"
+ cset "name='Headphone Switch' off"
+ cset "name='Int Mic Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='RECMIXL BST2 Switch' off"
+ cset "name='RECMIXR BST2 Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadPhones.conf
new file mode 100644
index 00000000..e22d4998
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadPhones.conf
@@ -0,0 +1,25 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker1"
+ "Speaker2"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ PlaybackMixerElem "HP"
+ PlaybackMasterElem "DAC1"
+ PlaybackVolume "HP Playback Volume"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadsetMic.conf
new file mode 100644
index 00000000..103e93da
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/HeadsetMic.conf
@@ -0,0 +1,33 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic1"
+ "Mic2"
+ ]
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='RECMIXL BST1 Switch' on"
+ cset "name='RECMIXR BST1 Switch' on"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ cset "name='RECMIXL BST1 Switch' off"
+ cset "name='RECMIXR BST1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ CaptureMixerElem "IN1 Boost"
+ CaptureMasterElem "ADC"
+ CaptureVolume "IN1 Boost Volume"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/MonoSpeaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/MonoSpeaker.conf
new file mode 100644
index 00000000..e4addf4f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/MonoSpeaker.conf
@@ -0,0 +1,30 @@
+SectionDevice."Speaker2" {
+ Comment "Mono Speaker"
+
+ ConflictingDevice [
+ "Speaker1"
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Stereo DAC MIXR DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' on"
+ cset "name='Ext Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ cset "name='Stereo DAC MIXL DAC R1 Switch' off"
+ cset "name='Stereo DAC MIXR DAC R1 Switch' on"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ # The speaker ampl. path on the 5672 has no speaker vol control
+ # Use the digital DAC1 master control as MixerElem
+ PlaybackMixerElem "DAC1"
+ PlaybackVolume "DAC1 Playback Volume"
+ PlaybackSwitch "DAC1 Playback Switch"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/Speaker.conf
new file mode 100644
index 00000000..9674c6be
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5672/Speaker.conf
@@ -0,0 +1,26 @@
+SectionDevice."Speaker1" {
+ Comment "Stereo Speakers"
+
+ ConflictingDevice [
+ "Speaker2"
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Ext Spk Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Ext Spk Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ # The speaker ampl. path on the 5672 has no speaker vol control
+ # Use the digital DAC1 master control as MixerElem
+ PlaybackMixerElem "DAC1"
+ PlaybackVolume "DAC1 Playback Volume"
+ PlaybackSwitch "DAC1 Playback Switch"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5682/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5682/init.conf
new file mode 100644
index 00000000..fb88a7dc
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt5682/init.conf
@@ -0,0 +1,24 @@
+# RT5682 specific volume control settings
+
+LibraryConfig.remap.Config {
+
+ ctl.default.remap {
+ "name='STO1 ADC Boost Gain Volume'" "name='STO1 ADC Boost Capture Volume'"
+ }
+
+}
+
+BootSequence [
+ cset "name='rt5682 Stereo1 DAC MIXL DAC L1 Switch' 1"
+ cset "name='rt5682 Stereo1 DAC MIXR DAC R1 Switch' 1"
+ cset "name='rt5682 DAC L Mux' 1"
+ cset "name='rt5682 DAC R Mux' 1"
+ cset "name='rt5682 IF1 01 ADC Swap Mux' 2"
+ cset "name='rt5682 CBJ Boost Volume' 3"
+ cset "name='rt5682 Stereo1 ADC L Mux' 0"
+ cset "name='rt5682 Stereo1 ADC R Mux' 0"
+ cset "name='rt5682 Stereo1 ADC L1 Mux' 1"
+ cset "name='rt5682 Stereo1 ADC R1 Mux' 1"
+ cset "name='rt5682 Stereo1 ADC MIXL ADC2 Switch' 0"
+ cset "name='rt5682 Stereo1 ADC MIXR ADC2 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt700/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt700/init.conf
new file mode 100644
index 00000000..406e2cb3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt700/init.conf
@@ -0,0 +1,9 @@
+# RT700 specific volume control settings
+
+BootSequence [
+ cset "name='DAC Front Playback Volume' 87"
+ cset "name='HPO Mux' 'Front'"
+ cset "name='ADC 09 Capture Volume' 63"
+ cset "name='ADC 22 Mux' 'MIC2'"
+ cset "name='AMIC Volume' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711-sdca/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711-sdca/init.conf
new file mode 100644
index 00000000..3149233c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711-sdca/init.conf
@@ -0,0 +1,8 @@
+# RT711-sdca specific volume control settings
+
+BootSequence [
+ cset "name='rt711 FU05 Playback Volume' 87"
+ cset "name='rt711 ADC 22 Mux' 'MIC2'"
+ cset "name='rt711 FU0F Capture Volume' 57"
+ cset "name='rt711 FU0F Capture Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711/init.conf
new file mode 100644
index 00000000..f3cea28c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt711/init.conf
@@ -0,0 +1,9 @@
+# RT711 specific volume control settings
+
+BootSequence [
+ cset "name='rt711 DAC Surr Playback Volume' 87"
+ cset "name='rt711 ADC 08 Capture Volume' 63"
+ cset "name='rt711 ADC 23 Mux' 'MIC2'"
+ cset "name='rt711 ADC 08 Capture Switch' 1"
+ cset "name='rt711 AMIC Volume' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-dmic/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-dmic/init.conf
new file mode 100644
index 00000000..6547a369
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-dmic/init.conf
@@ -0,0 +1,6 @@
+# RT713-dmic specific volume control settings
+
+BootSequence [
+ cset "name='rt713-dmic ADC 25 Mux' 'DMIC1'"
+ cset "name='rt713-dmic FU1E Capture Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-sdca/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-sdca/init.conf
new file mode 100644
index 00000000..df6a7aae
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt713-sdca/init.conf
@@ -0,0 +1,8 @@
+# RT713-sdca specific volume control settings
+
+BootSequence [
+ cset "name='rt713 FU05 Playback Volume' 87"
+ cset "name='rt713 ADC 23 Mux' 'MIC2'"
+ cset "name='rt713 FU0F Capture Volume' 57"
+ cset "name='rt713 FU0F Capture Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715-sdca/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715-sdca/init.conf
new file mode 100644
index 00000000..a3b22898
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715-sdca/init.conf
@@ -0,0 +1,14 @@
+# RT715-sdca (aka RT714) specific volume control settings
+
+BootSequence [
+ cset "name='rt714 FU0A Capture Switch' 0"
+ cset "name='rt714 ADC 22 Mux' 'DMIC3'"
+ cset "name='rt714 ADC 23 Mux' 'DMIC4'"
+ cset "name='rt714 FU02 Capture Switch' 1"
+ cset "name='rt714 FU02 Capture Volume' 47"
+]
+
+FixedBootSequence [
+ exec "-/sbin/modprobe snd_ctl_led"
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/attach:rt714 FU02 Capture Switch"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715/init.conf
new file mode 100644
index 00000000..2bbff073
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/rt715/init.conf
@@ -0,0 +1,31 @@
+# RT715 specific volume control settings
+
+BootSequence [
+ cset "name='rt715 DMIC3 Boost' 2"
+ cset "name='rt715 DMIC4 Boost' 2"
+ cset "name='rt715 ADC 24 Mux' 3"
+ cset "name='rt715 ADC 25 Mux' 4"
+]
+
+If.adcxx {
+ Condition {
+ Type ControlExists
+ Control "name='rt715 ADC 07 Capture Switch'"
+ }
+ True.BootSequence [
+ cset "name='rt715 ADC 27 Capture Switch' 1"
+ cset "name='rt715 ADC 07 Capture Switch' 1"
+ cset "name='rt715 ADC 07 Capture Volume' 58"
+ ]
+}
+
+If.capturesw {
+ Condition {
+ Type ControlExists
+ Control "name='rt715 Capture Switch'"
+ }
+ True.FixedBootSequence [
+ exec "-/sbin/modprobe snd_ctl_led"
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/attach:rt715 Capture Switch"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultDisableSeq.conf
new file mode 100644
index 00000000..9df16641
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultDisableSeq.conf
@@ -0,0 +1,7 @@
+DisableSequence [
+ cset "name='RX INT7_1 MIX1 INP0' ZERO"
+ cset "name='RX INT8_1 MIX1 INP0' ZERO"
+ cset "name='RX INT1_2 MUX' ZERO"
+ cset "name='RX INT2_2 MUX' ZERO"
+ cset "name='CDC_IF TX0 MUX' ZERO"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultEnableSeq.conf
new file mode 100644
index 00000000..2dc5f2ee
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/DefaultEnableSeq.conf
@@ -0,0 +1,10 @@
+EnableSequence [
+ cset "name='SLIM RX0 MUX' AIF1_PB"
+ cset "name='SLIM RX1 MUX' AIF1_PB"
+ cset "name='SLIM RX2 MUX' AIF2_PB"
+ cset "name='SLIM RX3 MUX' AIF2_PB"
+
+
+ cset "name='AIF1_CAP Mixer SLIM TX0' 1"
+ cset "name='CDC_IF TX0 MUX' DEC0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneDisableSeq.conf
new file mode 100644
index 00000000..16b46256
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneDisableSeq.conf
@@ -0,0 +1,8 @@
+DisableSequence [
+ cset "name='COMP1 Switch' 0"
+ cset "name='COMP2 Switch' 0"
+ cset "name='RX INT1_1 MIX1 INP0' ZERO"
+ cset "name='RX INT2_1 MIX1 INP0' ZERO"
+ cset "name='RX INT1 DEM MUX' NORMAL_DSM_OUT"
+ cset "name='RX INT2 DEM MUX' NORMAL_DSM_OUT"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneEnableSeq.conf
new file mode 100644
index 00000000..500527d1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneEnableSeq.conf
@@ -0,0 +1,8 @@
+EnableSequence [
+ cset "name='COMP1 Switch' 1"
+ cset "name='COMP2 Switch' 1"
+ cset "name='RX INT1_1 MIX1 INP0' RX2"
+ cset "name='RX INT2_1 MIX1 INP0' RX3"
+ cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
+ cset "name='RX INT2 DEM MUX' CLSH_DSM_OUT"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicDisableSeq.conf
new file mode 100644
index 00000000..fa87c477
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicDisableSeq.conf
@@ -0,0 +1,4 @@
+DisableSequence [
+ cset "name='AMIC MUX0' ZERO"
+ cset "name='ADC2 Volume' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicEnableSeq.conf
new file mode 100644
index 00000000..a40c580a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/HeadphoneMicEnableSeq.conf
@@ -0,0 +1,4 @@
+EnableSequence [
+ cset "name='AMIC MUX0' ADC2"
+ cset "name='ADC MUX0' AMIC"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerDisableSeq.conf
new file mode 100644
index 00000000..0d2e0115
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerDisableSeq.conf
@@ -0,0 +1,6 @@
+DisableSequence [
+ cset "name='COMP7 Switch' 0"
+ cset "name='COMP8 Switch' 0"
+ cset "name='RX INT7_1 MIX1 INP0' ZERO"
+ cset "name='RX INT8_1 MIX1 INP0' ZERO"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerEnableSeq.conf
new file mode 100644
index 00000000..587e7c21
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/SpeakerEnableSeq.conf
@@ -0,0 +1,6 @@
+EnableSequence [
+ cset "name='COMP7 Switch' 1"
+ cset "name='COMP8 Switch' 1"
+ cset "name='RX INT7_1 MIX1 INP0' RX0"
+ cset "name='RX INT8_1 MIX1 INP0' RX1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/init.conf
new file mode 100644
index 00000000..aa8e46af
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd934x/init.conf
@@ -0,0 +1,25 @@
+# WCD934X specific volume control settings
+
+BootSequence [
+ cset "name='RX1 Digital Volume' 80"
+ cset "name='RX2 Digital Volume' 80"
+ cset "name='RX7 Digital Volume' 80"
+ cset "name='RX8 Digital Volume' 80"
+ cset "name='ADC2 Volume' 12"
+]
+
+LibraryConfig.remap.Config {
+
+ ctl.default.map {
+ # Merge two mono controls into one stereo
+ "name='HP Digital Volume'" {
+ "name='RX1 Digital Volume'".vindex.0 0
+ "name='RX2 Digital Volume'".vindex.1 0
+ }
+ "name='Speaker Digital Volume'" {
+ "name='RX7 Digital Volume'".vindex.0 0
+ "name='RX8 Digital Volume'".vindex.1 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneDisableSeq.conf
new file mode 100644
index 00000000..9b66ccf4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneDisableSeq.conf
@@ -0,0 +1,8 @@
+DisableSequence [
+ cset "name='HPHL_RDAC Switch' 0"
+ cset "name='HPHR_RDAC Switch' 0"
+ cset "name='HPHL Switch' 0"
+ cset "name='HPHR Switch' 0"
+ cset "name='CLSH Switch' 0"
+ cset "name='LO Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneEnableSeq.conf
new file mode 100644
index 00000000..f9969380
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneEnableSeq.conf
@@ -0,0 +1,10 @@
+EnableSequence [
+ cset "name='HPHL_RDAC Switch' 1"
+ cset "name='HPHR_RDAC Switch' 1"
+ cset "name='HPHL Switch' 1"
+ cset "name='HPHR Switch' 1"
+ cset "name='HPHR_COMP Switch' 0"
+ cset "name='HPHL_COMP Switch' 0"
+ cset "name='CLSH Switch' 1"
+ cset "name='LO Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicDisableSeq.conf
new file mode 100644
index 00000000..498b8b38
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicDisableSeq.conf
@@ -0,0 +1,4 @@
+DisableSequence [
+ cset "name='ADC2_MIXER Switch' 0"
+ cset "name='ADC2 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicEnableSeq.conf
new file mode 100644
index 00000000..8ea2472b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/HeadphoneMicEnableSeq.conf
@@ -0,0 +1,6 @@
+EnableSequence [
+ cset "name='ADC2_MIXER Switch' 1"
+ cset "name='HDR12 MUX' NO_HDR12"
+ cset "name='ADC2 MUX' INP2"
+ cset "name='ADC2 Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/init.conf
new file mode 100644
index 00000000..256452bd
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd938x/init.conf
@@ -0,0 +1,13 @@
+# WCD938X specific volume control settings
+
+LibraryConfig.remap.Config {
+
+ ctl.default.map {
+ # Merge two mono controls into one stereo
+ "name='HP Volume'" {
+ "name='HPHL Volume'".vindex.0 0
+ "name='HPHR Volume'".vindex.1 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic1EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic1EnableSeq.conf
new file mode 100644
index 00000000..ed51c685
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic1EnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='ADC1_MIXER Switch' 1"
+ cset "name='ADC1 MUX' CH1_AMIC1"
+ cset "name='ADC1 Switch' 1"
+ cset "name='ADC1 Volume' 10"
+ cset "name='TX0 MODE' ADC_ULP"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic3EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic3EnableSeq.conf
new file mode 100644
index 00000000..b104bd67
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic3EnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='ADC1_MIXER Switch' 1"
+ cset "name='ADC1 MUX' CH1_AMIC3"
+ cset "name='ADC1 Switch' 1"
+ cset "name='ADC1 Volume' 10"
+ cset "name='TX0 MODE' ADC_ULP"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic4EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic4EnableSeq.conf
new file mode 100644
index 00000000..2c5d021a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic4EnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='ADC1_MIXER Switch' 1"
+ cset "name='ADC1 MUX' CH1_AMIC4"
+ cset "name='ADC1 Switch' 1"
+ cset "name='ADC1 Volume' 10"
+ cset "name='TX0 MODE' ADC_ULP"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic5EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic5EnableSeq.conf
new file mode 100644
index 00000000..fd45b6e2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMic5EnableSeq.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='ADC1_MIXER Switch' 1"
+ cset "name='ADC1 MUX' CH1_AMIC5"
+ cset "name='ADC1 Switch' 1"
+ cset "name='ADC1 Volume' 10"
+ cset "name='TX0 MODE' ADC_ULP"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMicDisableSeq.conf
new file mode 100644
index 00000000..e002bb83
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/AnalogMicDisableSeq.conf
@@ -0,0 +1,5 @@
+DisableSequence [
+ cset "name='ADC1_MIXER Switch' 0"
+ cset "name='ADC1 MUX' CH1_AMIC_DISABLE"
+ cset "name='ADC1 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/DefaultEnableSeq.conf
new file mode 100644
index 00000000..5da67174
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/DefaultEnableSeq.conf
@@ -0,0 +1,4 @@
+EnableSequence [
+ cset "name='HPHR Volume' 20"
+ cset "name='HPHL Volume' 20"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneDisableSeq.conf
new file mode 100644
index 00000000..37b1faf8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneDisableSeq.conf
@@ -0,0 +1,9 @@
+DisableSequence [
+ cset "name='HPHL_RDAC Switch' 0"
+ cset "name='HPHR_RDAC Switch' 0"
+ cset "name='HPHL_COMP Switch' 0"
+ cset "name='HPHR_COMP Switch' 0"
+ cset "name='HPHL Switch' 0"
+ cset "name='HPHR Switch' 0"
+ cset "name='CLSH Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneEnableSeq.conf
new file mode 100644
index 00000000..dd8260b1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneEnableSeq.conf
@@ -0,0 +1,9 @@
+EnableSequence [
+ cset "name='HPHL_RDAC Switch' 1"
+ cset "name='HPHR_RDAC Switch' 1"
+ cset "name='HPHR_COMP Switch' 1"
+ cset "name='HPHL_COMP Switch' 1"
+ cset "name='HPHL Switch' 1"
+ cset "name='HPHR Switch' 1"
+ cset "name='CLSH Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicDisableSeq.conf
new file mode 100644
index 00000000..05e3d770
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicDisableSeq.conf
@@ -0,0 +1,6 @@
+DisableSequence [
+ cset "name='MBHC Switch' 0"
+ cset "name='ADC2_MIXER Switch' 0"
+ cset "name='ADC2 MUX' CH2_AMIC_DISABLE"
+ cset "name='ADC2 Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicEnableSeq.conf
new file mode 100644
index 00000000..b421c909
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/HeadphoneMicEnableSeq.conf
@@ -0,0 +1,8 @@
+EnableSequence [
+ cset "name='ADC2_MIXER Switch' 1"
+ cset "name='ADC2 MUX' CH2_AMIC2"
+ cset "name='ADC2 Switch' 1"
+ cset "name='ADC2 Volume' 10"
+ cset "name='TX1 MODE' ADC_LP"
+ cset "name='MBHC Switch' 1"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/init.conf
new file mode 100644
index 00000000..9fb98aa8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wcd939x/init.conf
@@ -0,0 +1,18 @@
+# WCD939X specific volume control settings
+
+BootSequence [
+ cset "name='ADC1 Volume' 12"
+ cset "name='ADC2 Volume' 12"
+]
+
+LibraryConfig.remap.Config {
+
+ ctl.default.map {
+ # Merge two mono controls into one stereo
+ "name='HP Volume'" {
+ "name='HPHL Volume'".vindex.0 0
+ "name='HPHR Volume'".vindex.1 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/EnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/EnableSeq.conf
new file mode 100644
index 00000000..11166c07
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/EnableSeq.conf
@@ -0,0 +1,19 @@
+EnableSequence [
+ # Route AIF1 to the speakers and headphones
+ cset "name='SPKOUTL Input 1' AIF1RX1"
+ cset "name='SPKOUTR Input 1' AIF1RX2"
+ cset "name='HPOUT1L Input 1' AIF1RX1"
+ cset "name='HPOUT1R Input 1' AIF1RX2"
+ cset "name='HPOUT2L Input 1' AIF1RX1"
+ cset "name='HPOUT2R Input 1' AIF1RX2"
+
+ # mics are quite soft by default, boost then
+ cset "name='IN1L Volume' 28"
+ cset "name='IN2L Volume' 28"
+ cset "name='IN3L Volume' 28"
+
+ cset "name='Headphone Switch' off"
+ cset "name='Headset Mic Switch' off"
+ cset "name='Internal Mic Switch' off"
+ cset "name='Speaker Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HPOut2-Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HPOut2-Speaker.conf
new file mode 100644
index 00000000..375f9ba8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HPOut2-Speaker.conf
@@ -0,0 +1,22 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='HPOUT2 Digital Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='HPOUT2 Digital Switch' off"
+ cset "name='Speaker Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HeadPhones.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HeadPhones.conf
new file mode 100644
index 00000000..cb29347b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/HeadPhones.conf
@@ -0,0 +1,23 @@
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='HPOUT1 Digital Switch' on"
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='HPOUT1 Digital Switch' off"
+ cset "name='Headphone Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-HeadsetMic.conf
new file mode 100644
index 00000000..a6074873
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-HeadsetMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='AIF1TX1 Input 1' IN1L"
+ cset "name='AIF1TX2 Input 1' IN1L"
+
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-InternalMic.conf
new file mode 100644
index 00000000..d9a70cec
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN1-InternalMic.conf
@@ -0,0 +1,23 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='AIF1TX1 Input 1' IN1L"
+ cset "name='AIF1TX2 Input 1' IN1L"
+
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN2-HeadsetMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN2-HeadsetMic.conf
new file mode 100644
index 00000000..8fbbcb19
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN2-HeadsetMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='AIF1TX1 Input 1' IN2L"
+ cset "name='AIF1TX2 Input 1' IN2L"
+
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId}"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN3-InternalMic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN3-InternalMic.conf
new file mode 100644
index 00000000..3a03ac3d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/IN3-InternalMic.conf
@@ -0,0 +1,23 @@
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='AIF1TX1 Input 1' IN3L"
+ cset "name='AIF1TX2 Input 1' IN3L"
+
+ cset "name='Internal Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Internal Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/Speaker.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/Speaker.conf
new file mode 100644
index 00000000..9f631f56
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wm5102/Speaker.conf
@@ -0,0 +1,22 @@
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Digital Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Digital Switch' off"
+ cset "name='Speaker Switch' off"
+ ]
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/DefaultEnableSeq.conf
new file mode 100644
index 00000000..98310a9b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/DefaultEnableSeq.conf
@@ -0,0 +1,10 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerDisableSeq.conf
new file mode 100644
index 00000000..9439eb8b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerDisableSeq.conf
@@ -0,0 +1,10 @@
+DisableSequence [
+ cset "name='SpkrLeft COMP Switch' 0"
+ cset "name='SpkrLeft BOOST Switch' 0"
+ cset "name='SpkrLeft DAC Switch' 0"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrRight COMP Switch' 0"
+ cset "name='SpkrRight BOOST Switch' 0"
+ cset "name='SpkrRight DAC Switch' 0"
+ cset "name='SpkrRight VISENSE Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerEnableSeq.conf
new file mode 100644
index 00000000..72a02ec9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa881x/SpeakerEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrLeft PA Volume' 12"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+ cset "name='SpkrRight PA Volume' 12"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/DefaultEnableSeq.conf
new file mode 100644
index 00000000..a079cdc9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/DefaultEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrLeft WSA MODE' 0"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+ cset "name='SpkrRight WSA MODE' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerDisableSeq.conf
new file mode 100644
index 00000000..9439eb8b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerDisableSeq.conf
@@ -0,0 +1,10 @@
+DisableSequence [
+ cset "name='SpkrLeft COMP Switch' 0"
+ cset "name='SpkrLeft BOOST Switch' 0"
+ cset "name='SpkrLeft DAC Switch' 0"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrRight COMP Switch' 0"
+ cset "name='SpkrRight BOOST Switch' 0"
+ cset "name='SpkrRight DAC Switch' 0"
+ cset "name='SpkrRight VISENSE Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerEnableSeq.conf
new file mode 100644
index 00000000..a079cdc9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/SpeakerEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrLeft WSA MODE' 0"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+ cset "name='SpkrRight WSA MODE' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/init.conf
new file mode 100644
index 00000000..ae7d0fb4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa883x/init.conf
@@ -0,0 +1,12 @@
+# WSA883x specific volume control settings
+LibraryConfig.remap.Config {
+
+ ctl.default.map {
+ # Merge two mono controls into one stereo
+ "name='Speakers Volume'" {
+ "name='SpkrLeft PA Volume'".vindex.0 0
+ "name='SpkrRight PA Volume'".vindex.1 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/DefaultEnableSeq.conf
new file mode 100644
index 00000000..a8316bd5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/DefaultEnableSeq.conf
@@ -0,0 +1,26 @@
+EnableSequence [
+ cset "name='WooferLeft COMP Switch' 1"
+ cset "name='WooferLeft BOOST Switch' 1"
+ cset "name='WooferLeft DAC Switch' 1"
+ cset "name='WooferLeft PBR Switch' 1"
+ cset "name='WooferLeft VISENSE Switch' 0"
+ cset "name='WooferLeft WSA MODE' 0"
+ cset "name='TwitterLeft COMP Switch' 1"
+ cset "name='TwitterLeft BOOST Switch' 1"
+ cset "name='TwitterLeft DAC Switch' 1"
+ cset "name='TwitterLeft PBR Switch' 1"
+ cset "name='TwitterLeft VISENSE Switch' 0"
+ cset "name='TwitterLeft WSA MODE' 0"
+ cset "name='WooferRight COMP Switch' 1"
+ cset "name='WooferRight BOOST Switch' 1"
+ cset "name='WooferRight DAC Switch' 1"
+ cset "name='WooferRight PBR Switch' 1"
+ cset "name='WooferRight VISENSE Switch' 0"
+ cset "name='WooferRight WSA MODE' 0"
+ cset "name='TwitterRight COMP Switch' 1"
+ cset "name='TwitterRight BOOST Switch' 1"
+ cset "name='TwitterRight DAC Switch' 1"
+ cset "name='TwitterRight PBR Switch' 1"
+ cset "name='TwitterRight VISENSE Switch' 0"
+ cset "name='TwitterRight WSA MODE' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/SpeakerSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/SpeakerSeq.conf
new file mode 100644
index 00000000..7a370627
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/SpeakerSeq.conf
@@ -0,0 +1,53 @@
+EnableSequence [
+ cset "name='WooferLeft COMP Switch' 1"
+ cset "name='WooferLeft BOOST Switch' 1"
+ cset "name='WooferLeft DAC Switch' 1"
+ cset "name='WooferLeft PBR Switch' 1"
+ cset "name='WooferLeft VISENSE Switch' 0"
+ cset "name='WooferLeft WSA MODE' 0"
+ cset "name='WooferLeft PA Volume' 12"
+ cset "name='TwitterLeft COMP Switch' 1"
+ cset "name='TwitterLeft BOOST Switch' 1"
+ cset "name='TwitterLeft DAC Switch' 1"
+ cset "name='TwitterLeft PBR Switch' 1"
+ cset "name='TwitterLeft VISENSE Switch' 0"
+ cset "name='TwitterLeft WSA MODE' 0"
+ cset "name='TwitterLeft PA Volume' 12"
+ cset "name='WooferRight COMP Switch' 1"
+ cset "name='WooferRight BOOST Switch' 1"
+ cset "name='WooferRight DAC Switch' 1"
+ cset "name='WooferRight PBR Switch' 1"
+ cset "name='WooferRight VISENSE Switch' 0"
+ cset "name='WooferRight WSA MODE' 0"
+ cset "name='WooferRight PA Volume' 12"
+ cset "name='TwitterRight COMP Switch' 1"
+ cset "name='TwitterRight BOOST Switch' 1"
+ cset "name='TwitterRight DAC Switch' 1"
+ cset "name='TwitterRight PBR Switch' 1"
+ cset "name='TwitterRight VISENSE Switch' 0"
+ cset "name='TwitterRight WSA MODE' 0"
+ cset "name='TwitterRight PA Volume' 12"
+]
+
+DisableSequence [
+ cset "name='WooferLeft COMP Switch' 0"
+ cset "name='WooferLeft BOOST Switch' 0"
+ cset "name='WooferLeft DAC Switch' 0"
+ cset "name='WooferLeft PBR Switch' 0"
+ cset "name='WooferLeft VISENSE Switch' 0"
+ cset "name='TwitterLeft COMP Switch' 0"
+ cset "name='TwitterLeft BOOST Switch' 0"
+ cset "name='TwitterLeft DAC Switch' 0"
+ cset "name='TwitterLeft PBR Switch' 0"
+ cset "name='TwitterLeft VISENSE Switch' 0"
+ cset "name='WooferRight COMP Switch' 0"
+ cset "name='WooferRight BOOST Switch' 0"
+ cset "name='WooferRight DAC Switch' 0"
+ cset "name='WooferRight PBR Switch' 0"
+ cset "name='WooferRight VISENSE Switch' 0"
+ cset "name='TwitterRight COMP Switch' 0"
+ cset "name='TwitterRight BOOST Switch' 0"
+ cset "name='TwitterRight DAC Switch' 0"
+ cset "name='TwitterRight PBR Switch' 0"
+ cset "name='TwitterRight VISENSE Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/init.conf
new file mode 100644
index 00000000..22349ea9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/four-speakers/init.conf
@@ -0,0 +1,13 @@
+# WSA884x in four-speaker configuration, specific volume control settings
+LibraryConfig.remap.Config {
+ ctl.default.map {
+ # Merge four mono controls into one
+ "name='Speakers Volume'" {
+ "name='WooferLeft PA Volume'".vindex.0 0
+ "name='TwitterLeft PA Volume'".vindex.1 0
+ "name='WooferRight PA Volume'".vindex.2 0
+ "name='TwitterRight PA Volume'".vindex.3 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf
new file mode 100644
index 00000000..a079cdc9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/DefaultEnableSeq.conf
@@ -0,0 +1,12 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrLeft WSA MODE' 0"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+ cset "name='SpkrRight WSA MODE' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/SpeakerSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/SpeakerSeq.conf
new file mode 100644
index 00000000..e86ea216
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/SpeakerSeq.conf
@@ -0,0 +1,29 @@
+EnableSequence [
+ cset "name='SpkrLeft COMP Switch' 1"
+ cset "name='SpkrLeft BOOST Switch' 1"
+ cset "name='SpkrLeft DAC Switch' 1"
+ cset "name='SpkrLeft PBR Switch' 1"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrLeft WSA MODE' 0"
+ cset "name='SpkrLeft PA Volume' 12"
+ cset "name='SpkrRight COMP Switch' 1"
+ cset "name='SpkrRight BOOST Switch' 1"
+ cset "name='SpkrRight DAC Switch' 1"
+ cset "name='SpkrRight PBR Switch' 1"
+ cset "name='SpkrRight VISENSE Switch' 0"
+ cset "name='SpkrRight WSA MODE' 0"
+ cset "name='SpkrRight PA Volume' 12"
+]
+
+DisableSequence [
+ cset "name='SpkrLeft COMP Switch' 0"
+ cset "name='SpkrLeft BOOST Switch' 0"
+ cset "name='SpkrLeft DAC Switch' 0"
+ cset "name='SpkrLeft PBR Switch' 0"
+ cset "name='SpkrLeft VISENSE Switch' 0"
+ cset "name='SpkrRight COMP Switch' 0"
+ cset "name='SpkrRight BOOST Switch' 0"
+ cset "name='SpkrRight DAC Switch' 0"
+ cset "name='SpkrRight PBR Switch' 0"
+ cset "name='SpkrRight VISENSE Switch' 0"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/init.conf
new file mode 100644
index 00000000..b6477a4c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/codecs/wsa884x/two-speakers/init.conf
@@ -0,0 +1,11 @@
+# WSA884x in two-speaker configuration, specific volume control settings
+LibraryConfig.remap.Config {
+ ctl.default.map {
+ # Merge two mono controls into one stereo
+ "name='Speakers Volume'" {
+ "name='SpkrLeft PA Volume'".vindex.0 0
+ "name='SpkrRight PA Volume'".vindex.1 0
+ }
+ }
+}
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/ctl/remap.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/ctl/remap.conf
new file mode 100644
index 00000000..e19568e3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/ctl/remap.conf
@@ -0,0 +1,50 @@
+#
+# Remap controls
+#
+
+#
+# Macro CtlRemapMonoVolSw
+#
+# Arguments:
+# Dst - Destination control name
+# Src - Source control name
+# Index - hardware index for value 0 (mono)
+#
+
+DefineMacro.CtlRemapMonoVolSw {
+ LibraryConfig.pcm.SubstiConfig {
+ ctl.default.map {
+ "name='${var:__Dst} Volume'"."name='${var:__Src} Volume'" {
+ vindex.0 "${evali:$__Index}"
+ }
+ "name='${var:__Dst} Switch'"."name='${var:__Src} Switch'" {
+ vindex.0 "${evali:$__Index}"
+ }
+ }
+ }
+}
+
+#
+# Macro CtlRemapStereoVolSw
+#
+# Arguments:
+# Dst - Destination control name
+# Src - Source control name
+# Index0 - hardware index for the application index 0
+# Index1 - hardware index for the application index 1
+#
+
+DefineMacro.CtlRemapStereoVolSw {
+ LibraryConfig.pcm.SubstiConfig {
+ ctl.default.map {
+ "name='${var:__Dst} Volume'"."name='${var:__Src} Volume'" {
+ vindex.0 "${evali:$__Index0}"
+ vindex.1 "${evali:$__Index1}"
+ }
+ "name='${var:__Dst} Switch'"."name='${var:__Src} Switch'" {
+ vindex.0 "${evali:$__Index0}"
+ vindex.1 "${evali:$__Index1}"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct-verb.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct-verb.conf
new file mode 100644
index 00000000..d069fc22
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct-verb.conf
@@ -0,0 +1,27 @@
+SectionDevice."Direct" {
+ Comment "Direct ${CardName}"
+ Value {
+ If.p {
+ Condition {
+ Type String
+ Empty "${var:-DirectPlaybackChannels}"
+ }
+ False {
+ PlaybackPriority 1000
+ PlaybackChannels "${var:DirectPlaybackChannels}"
+ PlaybackPCM "hw:${CardId}"
+ }
+ }
+ If.c {
+ Condition {
+ Type String
+ Empty "${var:-DirectCaptureChannels}"
+ }
+ False {
+ CapturePriority 1000
+ CaptureChannels "${var:DirectCaptureChannels}"
+ CapturePCM "hw:${CardId}"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct.conf
new file mode 100644
index 00000000..3bb0dac4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/direct.conf
@@ -0,0 +1,12 @@
+If.direct {
+ Condition {
+ Type String
+ Empty "${var:-DirectCardName}"
+ }
+ True.Define.DirectCardName "${CardName}"
+}
+
+SectionUseCase."Direct" {
+ Comment "Direct ${var:DirectCardName}"
+ File "/common/direct-verb.conf"
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked-card.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked-card.conf
new file mode 100644
index 00000000..a90f20e8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked-card.conf
@@ -0,0 +1,3 @@
+Syntax 3
+
+Include.linked.File "/common/linked.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked.conf
new file mode 100644
index 00000000..d7656a88
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/linked.conf
@@ -0,0 +1,3 @@
+ValueDefaults {
+ Linked 1
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/pcm/split.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/pcm/split.conf
new file mode 100644
index 00000000..9ed2f956
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/common/pcm/split.conf
@@ -0,0 +1,371 @@
+#
+# Split multichannel PCM stream to channel groups
+#
+
+#
+# Macro SplitPCM
+#
+# Application variable:
+# @SplitPCM - defined, return channel description using UCM values
+#
+# Arguments:
+# Name - PCM name (alsa-lib)
+# Direction - "Playback" or "Capture"
+# [Format] - sample format like S16_LE or S32_LE
+# Channels - application channels
+# HWChannels - hardware channels
+# HWChannelPos0 - channel position (MONO FR FL etc. - see alsa-lib's strings)
+# [HWChannelPos1] - channel position (MONO FR FL etc. - see alsa-lib's strings)
+#
+
+DefineMacro.SplitPCM.If.0 {
+ Condition {
+ Type String
+ Empty "${var:@SplitPCM}"
+ }
+ True {
+ If.period_time {
+ Condition {
+ Type String
+ Empty "${var:-SplitPCMPeriodTime}"
+ }
+ True.Define.__period_time 20000
+ False.Define.__period_time "${var:SplitPCMPeriodTime}"
+ }
+ If.buffer_time {
+ Condition {
+ Type String
+ Empty "${var:-SplitPCMBufferTime}"
+ }
+ True.Define.__buffer_time 500000
+ False.Define.__buffer_time "${var:SplitPCMBufferTime}"
+ }
+ If.format {
+ Condition {
+ Type String
+ Empty "${var:-__Format}"
+ }
+ True.Define.__Format S16_LE
+ }
+
+ LibraryConfig.pcm.SubstiConfig.pcm."${var:__Name}" {
+ @args [ CARD DEV CHN0 ]
+ @args {
+ CARD.type string
+ DEV.type integer
+ CHN0.type integer
+ }
+ ipc_key 6678293
+ type dshare
+ slave {
+ pcm {
+ type hw
+ card $CARD
+ device $DEV
+ chmap [ "${var:__HWChannelPos0}" ]
+ }
+ format "${var:__Format}"
+ channels "${evali:$__HWChannels}"
+ period_time "${evali:$__period_time}"
+ buffer_time "${evali:$__buffer_time}"
+ }
+ bindings.0 $CHN0
+ }
+
+ If.pos1 {
+ Condition {
+ Type String
+ Empty "${var:__HWChannelPos1}"
+ }
+ False.LibraryConfig.pos1.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:__HWChannelPos1}" ]
+ }
+ }
+ If.pos2 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos2}"
+ }
+ False.LibraryConfig.pos2.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos2}" ]
+ }
+ }
+ If.pos3 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos3}"
+ }
+ False.LibraryConfig.pos3.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos3}" ]
+ }
+ }
+ If.pos4 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos4}"
+ }
+ False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos4}" ]
+ }
+ }
+ If.pos5 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos5}"
+ }
+ False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos5}" ]
+ }
+ }
+ If.pos6 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos6}"
+ }
+ False.LibraryConfig.pos6.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos6}" ]
+ }
+ }
+ If.pos7 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos7}"
+ }
+ False.LibraryConfig.pos7.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos7}" ]
+ }
+ }
+ If.pos8 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos8}"
+ }
+ False.LibraryConfig.pos8.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos8}" ]
+ }
+ }
+ If.pos9 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos9}"
+ }
+ False.LibraryConfig.pos9.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos9}" ]
+ }
+ }
+ If.pos10 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos10}"
+ }
+ False.LibraryConfig.pos10.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos10}" ]
+ }
+ }
+ If.pos11 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos11}"
+ }
+ False.LibraryConfig.pos11.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos11}" ]
+ }
+ }
+ If.pos12 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos12}"
+ }
+ False.LibraryConfig.pos12.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos12}" ]
+ }
+ }
+ If.pos13 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos13}"
+ }
+ False.LibraryConfig.pos13.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos13}" ]
+ }
+ }
+ If.pos14 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos14}"
+ }
+ False.LibraryConfig.pos14.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos14}" ]
+ }
+ }
+ If.pos15 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos15}"
+ }
+ False.LibraryConfig.pos15.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos15}" ]
+ }
+ }
+ If.pos16 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos16}"
+ }
+ False.LibraryConfig.pos16.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos16}" ]
+ }
+ }
+ If.pos17 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos17}"
+ }
+ False.LibraryConfig.pos17.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos17}" ]
+ }
+ }
+ If.pos18 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos18}"
+ }
+ False.LibraryConfig.pos18.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos18}" ]
+ }
+ }
+ If.pos19 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos19}"
+ }
+ False.LibraryConfig.pos19.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos19}" ]
+ }
+ }
+ If.pos20 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos20}"
+ }
+ False.LibraryConfig.pos20.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos20}" ]
+ }
+ }
+ If.pos21 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos21}"
+ }
+ False.LibraryConfig.pos21.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos21}" ]
+ }
+ }
+ If.pos22 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos22}"
+ }
+ False.LibraryConfig.pos22.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos22}" ]
+ }
+ }
+ If.pos23 {
+ Condition {
+ Type String
+ Empty "${var:-__HWChannelPos23}"
+ }
+ False.LibraryConfig.pos23.SubstiConfig.pcm."${var:__Name}" {
+ slave.pcm.chmap [ "${var:-__HWChannelPos23}" ]
+ }
+ }
+
+ If.ch1 {
+ Condition {
+ Type RegexMatch
+ Regex "^([2-9]|[1-9][0-9])$"
+ String "${var:__Channels}"
+ }
+ True.LibraryConfig.ch1.SubstiConfig.pcm."${var:__Name}" {
+ @args.3 CHN1
+ @args { CHN1.type integer }
+ bindings.1 $CHN1
+ }
+ }
+
+ If.dir {
+ Condition {
+ Type String
+ String1 "${var:__Direction}"
+ String2 "Capture"
+ }
+ True.LibraryConfig.dir.Config.pcm."${var:__Name}".type dsnoop
+ }
+ }
+}
+
+#
+# Macro SplitPCMDevice
+#
+# Application variable:
+# @SplitPCM - defined, return channel description using UCM values
+#
+# Arguments:
+# Name - PCM name (alsa-lib)
+# Direction - "Playback" or "Capture"
+# Device - hardware PCM device number (optional - default 0)
+# Channels - count of application channels
+# HWChannels - total channels (in hardware)
+# Channel0 - channel index in stream for the destination channel 0
+# [Channel1] - channel index in stream for the destination channel 1 (optional)
+# ChannelPos0 - channel position (MONO FR FL etc. - see alsa-lib's strings
+# [ChannelPos1] - channel position (MONO FR FL etc. - see alsa-lib's strings)
+#
+
+DefineMacro.SplitPCMDevice {
+ If.0 {
+ Condition {
+ Type String
+ Empty "${var:-__Device}"
+ }
+ True.Define.__Device "0"
+ }
+ If.1 {
+ Condition {
+ Type String
+ Empty "${var:@SplitPCM}"
+ }
+ False {
+ Value {
+ "${var:__Direction}Channels" "${var:__HWChannels}"
+ "${var:__Direction}PCM" "hw:${CardId},${var:__Device}"
+ "${var:__Direction}Channel0" "${var:__Channel0}"
+ "${var:__Direction}ChannelPos0" "${var:__ChannelPos0}"
+ }
+ If.ch1 {
+ Condition {
+ Type String
+ Empty "${var:-__Channel1}"
+ }
+ False.Value {
+ "${var:__Direction}Channel1" "${var:__Channel1}"
+ "${var:__Direction}ChannelPos1" "${var:__ChannelPos1}"
+ }
+ }
+ }
+ True {
+ Define.__pcmdev "${var:__Name}:${CardId},${var:__Device},${var:__Channel0}"
+ If.ch1 {
+ Condition {
+ Type String
+ Empty "${var:-__Channel1}"
+ }
+ False.Define.__pcmdev "${var:__pcmdev},${var:__Channel1}"
+ }
+ Value {
+ "${var:__Direction}Channels" "${var:__Channels}"
+ "${var:__Direction}PCM" "${var:__pcmdev}"
+ }
+ }
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB410c/DB410c.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB410c/DB410c.conf
new file mode 120000
index 00000000..551122e1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB410c/DB410c.conf
@@ -0,0 +1 @@
+../../Qualcomm/apq8016-sbc/apq8016-sbc.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB820c/DB820c.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB820c/DB820c.conf
new file mode 120000
index 00000000..b8ceeaba
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/DB820c/DB820c.conf
@@ -0,0 +1 @@
+../../Qualcomm/apq8096/apq8096.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/HDA-Intel/HDA-Intel.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/HDA-Intel/HDA-Intel.conf
new file mode 120000
index 00000000..81a584bb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/HDA-Intel/HDA-Intel.conf
@@ -0,0 +1 @@
+../../HDA/HDA.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SC7180/sc7180-rt5682-max98357a-1mic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SC7180/sc7180-rt5682-max98357a-1mic.conf
new file mode 120000
index 00000000..00f3e9e7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SC7180/sc7180-rt5682-max98357a-1mic.conf
@@ -0,0 +1 @@
+../../Qualcomm/sc7180/rt5682-max98357a/sc7180-rt5682-max98357a-1mic.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SOF/SOF.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SOF/SOF.conf
new file mode 120000
index 00000000..3d11c6d4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/SOF/SOF.conf
@@ -0,0 +1 @@
+../../Intel/SOF/SOF.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/USB-Audio/USB-Audio.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/USB-Audio/USB-Audio.conf
new file mode 120000
index 00000000..bb29ced2
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/USB-Audio/USB-Audio.conf
@@ -0,0 +1 @@
+../../USB-Audio/USB-Audio.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/VEYRON-I2S/VEYRON-I2S.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/VEYRON-I2S/VEYRON-I2S.conf
new file mode 120000
index 00000000..d9818adf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/VEYRON-I2S/VEYRON-I2S.conf
@@ -0,0 +1 @@
+../../Rockchip/max98090/max98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp/acp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp/acp.conf
new file mode 120000
index 00000000..7298c244
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp/acp.conf
@@ -0,0 +1 @@
+../../common/linked-card.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3x-es83xx/acp3x-es83xx.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3x-es83xx/acp3x-es83xx.conf
new file mode 120000
index 00000000..35a4deaf
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3x-es83xx/acp3x-es83xx.conf
@@ -0,0 +1 @@
+../../AMD/acp3x-es83xx/acp3x-es83xx.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3xalc5682m98/acp3xalc5682m98.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3xalc5682m98/acp3xalc5682m98.conf
new file mode 120000
index 00000000..6e9eefc5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp3xalc5682m98/acp3xalc5682m98.conf
@@ -0,0 +1 @@
+../../AMD/acp3xalc5682m98/acp3xalc5682m98.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp5x/Valve-Jupiter-1.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp5x/Valve-Jupiter-1.conf
new file mode 120000
index 00000000..dd56fa5a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp5x/Valve-Jupiter-1.conf
@@ -0,0 +1 @@
+../../AMD/acp5x/acp5x.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp62/acp62.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp62/acp62.conf
new file mode 120000
index 00000000..7298c244
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp62/acp62.conf
@@ -0,0 +1 @@
+../../common/linked-card.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp63/acp63.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp63/acp63.conf
new file mode 120000
index 00000000..7298c244
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp63/acp63.conf
@@ -0,0 +1 @@
+../../common/linked-card.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp6x/acp6x.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp6x/acp6x.conf
new file mode 120000
index 00000000..7298c244
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acp6x/acp6x.conf
@@ -0,0 +1 @@
+../../common/linked-card.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acpd7219m98357/acpd7219m98357.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acpd7219m98357/acpd7219m98357.conf
new file mode 120000
index 00000000..34238f04
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/acpd7219m98357/acpd7219m98357.conf
@@ -0,0 +1 @@
+../../AMD/acpd7219m98357/acpd7219m98357.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bdw-rt5677/bdw-rt5677.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bdw-rt5677/bdw-rt5677.conf
new file mode 120000
index 00000000..c614a507
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bdw-rt5677/bdw-rt5677.conf
@@ -0,0 +1 @@
+../../Intel/bdw-rt5677/bdw-rt5677.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broadwell-rt286/broadwell-rt286.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broadwell-rt286/broadwell-rt286.conf
new file mode 120000
index 00000000..c15a3cf6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broadwell-rt286/broadwell-rt286.conf
@@ -0,0 +1 @@
+../../Intel/broadwell-rt286/broadwell-rt286.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broxton-rt298/broxton-rt298.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broxton-rt298/broxton-rt298.conf
new file mode 120000
index 00000000..30b0ba4e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/broxton-rt298/broxton-rt298.conf
@@ -0,0 +1 @@
+../../Intel/broxton-rt298/broxton-rt298.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-cx2072x/bytcht-cx2072x.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-cx2072x/bytcht-cx2072x.conf
new file mode 120000
index 00000000..5d784b5c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-cx2072x/bytcht-cx2072x.conf
@@ -0,0 +1 @@
+../../Intel/bytcht-cx2072x/bytcht-cx2072x.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-es8316/bytcht-es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-es8316/bytcht-es8316.conf
new file mode 120000
index 00000000..647b33eb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcht-es8316/bytcht-es8316.conf
@@ -0,0 +1 @@
+../../Intel/bytcht-es8316/bytcht-es8316.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5640/bytcr-rt5640.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5640/bytcr-rt5640.conf
new file mode 120000
index 00000000..b96aeeb7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5640/bytcr-rt5640.conf
@@ -0,0 +1 @@
+../../Intel/bytcr-rt5640/bytcr-rt5640.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5651/bytcr-rt5651.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5651/bytcr-rt5651.conf
new file mode 120000
index 00000000..31ff3299
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-rt5651/bytcr-rt5651.conf
@@ -0,0 +1 @@
+../../Intel/bytcr-rt5651/bytcr-rt5651.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-wm5102/bytcr-wm5102.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-wm5102/bytcr-wm5102.conf
new file mode 120000
index 00000000..173eefe3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/bytcr-wm5102/bytcr-wm5102.conf
@@ -0,0 +1 @@
+../../Intel/bytcr-wm5102/bytcr-wm5102.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5672/cht-bsw-rt5672.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5672/cht-bsw-rt5672.conf
new file mode 120000
index 00000000..04eb770c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5672/cht-bsw-rt5672.conf
@@ -0,0 +1 @@
+../../Intel/cht-bsw-rt5672/cht-bsw-rt5672.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtmax98090/chtmax98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtmax98090/chtmax98090.conf
new file mode 120000
index 00000000..f3d0cab0
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtmax98090/chtmax98090.conf
@@ -0,0 +1 @@
+../../Intel/chtmax98090/chtmax98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtnau8824/chtnau8824.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtnau8824/chtnau8824.conf
new file mode 120000
index 00000000..ae9a9c47
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtnau8824/chtnau8824.conf
@@ -0,0 +1 @@
+../../Intel/chtnau8824/chtnau8824.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5645/chtrt5645.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5645/chtrt5645.conf
new file mode 120000
index 00000000..bdc42b48
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5645/chtrt5645.conf
@@ -0,0 +1 @@
+../../Intel/chtrt5645/chtrt5645.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5650/chtrt5650.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5650/chtrt5650.conf
new file mode 120000
index 00000000..b82a4e36
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/chtrt5650/chtrt5650.conf
@@ -0,0 +1 @@
+../../Intel/chtrt5650/chtrt5650.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/GXL-P241.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/GXL-P241.conf
new file mode 120000
index 00000000..a05d6573
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/GXL-P241.conf
@@ -0,0 +1 @@
+../../Amlogic/p241/p241.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/LIBRETECH-CC.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/LIBRETECH-CC.conf
new file mode 120000
index 00000000..a05d6573
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/gx-sound-card/LIBRETECH-CC.conf
@@ -0,0 +1 @@
+../../Amlogic/p241/p241.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/hda-dsp/hda-dsp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/hda-dsp/hda-dsp.conf
new file mode 120000
index 00000000..19209f24
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/hda-dsp/hda-dsp.conf
@@ -0,0 +1 @@
+../../Intel/hda-dsp/hda-dsp.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/kblrt5660/kblrt5660.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/kblrt5660/kblrt5660.conf
new file mode 120000
index 00000000..f00fa611
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/kblrt5660/kblrt5660.conf
@@ -0,0 +1 @@
+../../Intel/kblrt5660/kblrt5660.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8192_mt6359/mt8192_mt6359_rt1015p_rt5682.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8192_mt6359/mt8192_mt6359_rt1015p_rt5682.conf
new file mode 120000
index 00000000..4425b199
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8192_mt6359/mt8192_mt6359_rt1015p_rt5682.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8192/mt6359-rt1015p-rt5682/mt8192_mt6359_rt1015p_rt5682.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8195_demo/mt8195_demo.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8195_demo/mt8195_demo.conf
new file mode 120000
index 00000000..fa4f185b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8195_demo/mt8195_demo.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8195_demo/mt8195_demo.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8365-evk/mt8365-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8365-evk/mt8365-evk.conf
new file mode 120000
index 00000000..a46fe74e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8365-evk/mt8365-evk.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8365-evk/mt8365-evk.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8370-evk/mt8370-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8370-evk/mt8370-evk.conf
new file mode 120000
index 00000000..fed8ef18
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8370-evk/mt8370-evk.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8370-evk/mt8370-evk.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8390-evk/mt8390-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8390-evk/mt8390-evk.conf
new file mode 120000
index 00000000..5b5c2b97
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8390-evk/mt8390-evk.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8390-evk/mt8390-evk.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8395-evk/mt8395-evk.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8395-evk/mt8395-evk.conf
new file mode 120000
index 00000000..30557e3f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mt8395-evk/mt8395-evk.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8395-evk/mt8395-evk.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mtk-rt5650/mtk-rt5650.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mtk-rt5650/mtk-rt5650.conf
new file mode 120000
index 00000000..da13fa73
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/mtk-rt5650/mtk-rt5650.conf
@@ -0,0 +1 @@
+../../MediaTek/mtk-rt5650/mtk-rt5650.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3399-gru-soun/rk3399-gru-soun.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3399-gru-soun/rk3399-gru-soun.conf
new file mode 120000
index 00000000..9e7de935
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3399-gru-soun/rk3399-gru-soun.conf
@@ -0,0 +1 @@
+../../Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3588-es8316/rk3588-es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3588-es8316/rk3588-es8316.conf
new file mode 120000
index 00000000..ed1ddfae
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rk3588-es8316/rk3588-es8316.conf
@@ -0,0 +1 @@
+../../Rockchip/rk3588-es8316/rk3588-es8316.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rockchip_es8316/rockchip_es8316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rockchip_es8316/rockchip_es8316.conf
new file mode 120000
index 00000000..6d1864f7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/rockchip_es8316/rockchip_es8316.conf
@@ -0,0 +1 @@
+../../Rockchip/es8316/es8316.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sc8280xp/sc8280xp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sc8280xp/sc8280xp.conf
new file mode 120000
index 00000000..aab068de
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sc8280xp/sc8280xp.conf
@@ -0,0 +1 @@
+../../Qualcomm/sc8280xp/sc8280xp.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/DB845c.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/DB845c.conf
new file mode 120000
index 00000000..fad79da8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/DB845c.conf
@@ -0,0 +1 @@
+../../Qualcomm/sdm845/sdm845.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/LENOVO-81JL-LenovoYOGAC630_13Q50-LNVNB161216.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/LENOVO-81JL-LenovoYOGAC630_13Q50-LNVNB161216.conf
new file mode 120000
index 00000000..6db2236d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/LENOVO-81JL-LenovoYOGAC630_13Q50-LNVNB161216.conf
@@ -0,0 +1 @@
+../../Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5 Devkit.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5 Devkit.conf
new file mode 120000
index 00000000..3bdfe208
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5 Devkit.conf
@@ -0,0 +1 @@
+../../NXP/iMX8/Librem_5_Devkit/Librem 5 Devkit.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5.conf
new file mode 120000
index 00000000..c6879422
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/Librem 5.conf
@@ -0,0 +1 @@
+../../NXP/iMX8/Librem_5/Librem 5.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/PinePhone.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/PinePhone.conf
new file mode 120000
index 00000000..fc21f35d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/PinePhone.conf
@@ -0,0 +1 @@
+../../Allwinner/A64/PinePhone/PinePhone.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_ext.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_ext.conf
new file mode 120000
index 00000000..6fa8db7d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_ext.conf
@@ -0,0 +1 @@
+../../Rockchip/rk817-sound/rk817-sound.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_int.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_int.conf
new file mode 120000
index 00000000..6fa8db7d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rk817_int.conf
@@ -0,0 +1 @@
+../../Rockchip/rk817-sound/rk817-sound.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rockchip,es8316-codec.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rockchip,es8316-codec.conf
new file mode 120000
index 00000000..6d1864f7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/simple-card/rockchip,es8316-codec.conf
@@ -0,0 +1 @@
+../../Rockchip/es8316/es8316.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/skylake-rt286/skylake-rt286.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/skylake-rt286/skylake-rt286.conf
new file mode 120000
index 00000000..79e02f36
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/skylake-rt286/skylake-rt286.conf
@@ -0,0 +1 @@
+../../Intel/skylake-rt286/skylake-rt286.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
new file mode 120000
index 00000000..9f551b74
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
@@ -0,0 +1 @@
+../../Qualcomm/sm8250/Qualcomm-RB5-WSA8815-Speakers-DMIC0.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-MTP.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-MTP.conf
new file mode 120000
index 00000000..418e2a0b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-MTP.conf
@@ -0,0 +1 @@
+../../Qualcomm/sm8650/MTP/SM8650-MTP.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-QRD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-QRD.conf
new file mode 120000
index 00000000..3d71c72f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sm8650/SM8650-QRD.conf
@@ -0,0 +1 @@
+../../Qualcomm/sm8650/QRD/SM8650-QRD.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-ehl-rt5660/sof-ehl-rt5660.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-ehl-rt5660/sof-ehl-rt5660.conf
new file mode 120000
index 00000000..88ed4eb6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-ehl-rt5660/sof-ehl-rt5660.conf
@@ -0,0 +1 @@
+../../Intel/sof-ehl-rt5660/sof-ehl-rt5660.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-essx8336/sof-essx8336.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-essx8336/sof-essx8336.conf
new file mode 120000
index 00000000..10a24186
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-essx8336/sof-essx8336.conf
@@ -0,0 +1 @@
+../../Intel/sof-essx8336/sof-essx8336.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-glkda7219ma/sof-glkda7219ma.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-glkda7219ma/sof-glkda7219ma.conf
new file mode 120000
index 00000000..c6469154
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-glkda7219ma/sof-glkda7219ma.conf
@@ -0,0 +1 @@
+../../Intel/sof-glkda7219max/sof-glkda7219max.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-hda-dsp.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-hda-dsp.conf
new file mode 120000
index 00000000..5ba86cb1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-hda-dsp.conf
@@ -0,0 +1 @@
+../../Intel/sof-hda-dsp/sof-hda-dsp.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-skl_hda_card.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-skl_hda_card.conf
new file mode 120000
index 00000000..5ba86cb1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-hda-dsp/sof-skl_hda_card.conf
@@ -0,0 +1 @@
+../../Intel/sof-hda-dsp/sof-hda-dsp.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-mt8195_r101/sof-mt8195_r1019_5682.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-mt8195_r101/sof-mt8195_r1019_5682.conf
new file mode 120000
index 00000000..bc06786f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-mt8195_r101/sof-mt8195_r1019_5682.conf
@@ -0,0 +1 @@
+../../MediaTek/mt8195-sof/mt6359-rt1019-rt5682/sof-mt8195-mt6359-rt1019-rt5682.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-skl_hda_card b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-skl_hda_card
new file mode 120000
index 00000000..6f0f5a6f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-skl_hda_card
@@ -0,0 +1 @@
+sof-hda-dsp
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-soundwire/sof-soundwire.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-soundwire/sof-soundwire.conf
new file mode 120000
index 00000000..0d00b73f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/sof-soundwire/sof-soundwire.conf
@@ -0,0 +1 @@
+../../sof-soundwire/sof-soundwire.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra-hda/tegra-hda.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra-hda/tegra-hda.conf
new file mode 120000
index 00000000..0b4867c6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra-hda/tegra-hda.conf
@@ -0,0 +1 @@
+../../Tegra/tegra-hda/tegra-hda.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/ASUS Google Nexus 7 ALC5642.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/ASUS Google Nexus 7 ALC5642.conf
new file mode 120000
index 00000000..e598c9ce
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/ASUS Google Nexus 7 ALC5642.conf
@@ -0,0 +1 @@
+../../Tegra/rt5640/Google-Nexus-7.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Acer Iconia Tab A500 WM8903.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Acer Iconia Tab A500 WM8903.conf
new file mode 120000
index 00000000..d000c29f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Acer Iconia Tab A500 WM8903.conf
@@ -0,0 +1 @@
+../../Tegra/wm8903/Acer-A500.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Slider WM8903.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Slider WM8903.conf
new file mode 120000
index 00000000..ab543c4c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Slider WM8903.conf
@@ -0,0 +1 @@
+../../Tegra/wm8903/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Transformer WM8903.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Transformer WM8903.conf
new file mode 120000
index 00000000..ab543c4c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus EeePad Transformer WM8903.conf
@@ -0,0 +1 @@
+../../Tegra/wm8903/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Infinity TF700T RT5631.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Infinity TF700T RT5631.conf
new file mode 120000
index 00000000..5be7edf3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Infinity TF700T RT5631.conf
@@ -0,0 +1 @@
+../../Tegra/rt5631/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300T WM8903.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300T WM8903.conf
new file mode 120000
index 00000000..ab543c4c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300T WM8903.conf
@@ -0,0 +1 @@
+../../Tegra/wm8903/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TG RT5631.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TG RT5631.conf
new file mode 120000
index 00000000..5be7edf3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TG RT5631.conf
@@ -0,0 +1 @@
+../../Tegra/rt5631/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TL RT5631.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TL RT5631.conf
new file mode 120000
index 00000000..5be7edf3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Pad TF300TL RT5631.conf
@@ -0,0 +1 @@
+../../Tegra/rt5631/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Prime TF201 RT5631.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Prime TF201 RT5631.conf
new file mode 120000
index 00000000..5be7edf3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Asus Transformer Prime TF201 RT5631.conf
@@ -0,0 +1 @@
+../../Tegra/rt5631/Asus-Transformer.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Compal PAZ00.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Compal PAZ00.conf
new file mode 120000
index 00000000..99591259
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/Compal PAZ00.conf
@@ -0,0 +1 @@
+../../Tegra/alc5632/alc5632.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBig.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBig.conf
new file mode 120000
index 00000000..272a1fb3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBig.conf
@@ -0,0 +1 @@
+../../Tegra/max98090/max98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBlaze.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBlaze.conf
new file mode 120000
index 00000000..272a1fb3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/GoogleNyanBlaze.conf
@@ -0,0 +1 @@
+../../Tegra/max98090/max98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf
new file mode 120000
index 00000000..e569b859
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf
@@ -0,0 +1 @@
+../../Tegra/max98089/lge-x3.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf
new file mode 120000
index 00000000..e569b859
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf
@@ -0,0 +1 @@
+../../Tegra/max98089/lge-x3.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/x1e80100/X1E80100-CRD.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/x1e80100/X1E80100-CRD.conf
new file mode 120000
index 00000000..00134032
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.d/x1e80100/X1E80100-CRD.conf
@@ -0,0 +1 @@
+../../Qualcomm/x1e80100/X1E80100-CRD.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.virt.d/.gitignore b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/conf.virt.d/.gitignore
new file mode 100644
index 00000000..e69de29b
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/card-init.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/card-init.conf
new file mode 100644
index 00000000..527a5e00
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/card-init.conf
@@ -0,0 +1,10 @@
+#
+# Manage directory for the card specific configuration
+#
+
+Define.LibDir "/var/lib/alsa/card${CardNumber}.conf.d"
+
+FixedBootSequence [
+ exec "/bin/rm -rf ${var:LibDir}"
+ exec "/bin/mkdir -p -m 0755 ${var:LibDir}"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/ctl-remap.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/ctl-remap.conf
new file mode 100644
index 00000000..06e775cb
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/ctl-remap.conf
@@ -0,0 +1,22 @@
+#
+# This is generic UCM configuration for alsa-lib
+# Users are not allowed to overwrite this configuration
+#
+
+LibraryConfig.generic.Config {
+
+ ctl.default {
+ @args [ CARD ]
+ @args.CARD.type string
+ type remap
+ child {
+ type hw
+ card $CARD
+ }
+ }
+
+}
+
+FixedBootSequence [
+ cfg-save "${var:LibDir}/ctl-remap.conf:+ctl.default"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/generic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/generic.conf
new file mode 100644
index 00000000..06f96fb6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/lib/generic.conf
@@ -0,0 +1,29 @@
+#
+# This is generic UCM configuration for alsa-lib
+# Only hw devices are exposed to the UCM application
+# Users are not allowed to overwrite this configuration
+#
+
+LibraryConfig.generic.Config {
+
+ ctl.hw {
+ @args [ CARD ]
+ @args.CARD.type string
+ type hw
+ card $CARD
+ }
+
+ pcm.hw {
+ @args [ CARD DEV SUBDEV ]
+ @args {
+ CARD.type string
+ DEV.type integer
+ SUBDEV.type integer
+ }
+ type hw
+ card $CARD
+ device $DEV
+ subdevice $SUBDEV
+ }
+
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8016_sbc.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8016_sbc.conf
new file mode 120000
index 00000000..c217f6f7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8016_sbc.conf
@@ -0,0 +1 @@
+../Qualcomm/apq8016-sbc/apq8016-sbc.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8096.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8096.conf
new file mode 120000
index 00000000..2470d93f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_apq8096.conf
@@ -0,0 +1 @@
+../Qualcomm/apq8096/apq8096.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_omap_abe_twl6040.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_omap_abe_twl6040.conf
new file mode 120000
index 00000000..0e70a9e3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_omap_abe_twl6040.conf
@@ -0,0 +1 @@
+../OMAP/abe-twl6040/abe-twl6040.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rk3399_gru_sound.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rk3399_gru_sound.conf
new file mode 120000
index 00000000..9116f773
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rk3399_gru_sound.conf
@@ -0,0 +1 @@
+../Rockchip/rk3399-gru-sound/rk3399-gru-sound.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rockchip_max98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rockchip_max98090.conf
new file mode 120000
index 00000000..10efb8a1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_rockchip_max98090.conf
@@ -0,0 +1 @@
+../Rockchip/max98090/max98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_sdm845.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_sdm845.conf
new file mode 120000
index 00000000..ce04e6a9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_sdm845.conf
@@ -0,0 +1 @@
+../Qualcomm/sdm845/sdm845.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_snow.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_snow.conf
new file mode 120000
index 00000000..f6fcdce5
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_snow.conf
@@ -0,0 +1 @@
+../Samsung/snow/snow.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_alc5632.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_alc5632.conf
new file mode 120000
index 00000000..8685001f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_alc5632.conf
@@ -0,0 +1 @@
+../Tegra/alc5632/alc5632.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_max98090.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_max98090.conf
new file mode 120000
index 00000000..406747c1
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/module/snd_soc_tegra_max98090.conf
@@ -0,0 +1 @@
+../Tegra/max98090/max98090.conf
\ No newline at end of file
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformDisableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformDisableSeq.conf
new file mode 100644
index 00000000..cd48dc00
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformDisableSeq.conf
@@ -0,0 +1,23 @@
+# disable audio output path
+
+DisableSequence [
+ cset "name='codec_out0 mix 0 pcm0_in Switch' off"
+ cset "name='modem_out mix 0 pcm0_in Switch' off"
+
+ cset "name='media0_out mix 0 media0_in Switch' off"
+ cset "name='media0_out mix 0 media1_in Switch' off"
+ cset "name='media0_out mix 0 media3_in Switch' off"
+
+ cset "name='media0_in Gain 0 Switch' off"
+ cset "name='media1_in Gain 0 Switch' off"
+ cset "name='media3_in Gain 0 Switch' off"
+
+ cset "name='pcm0_in Gain 0 Switch' off"
+ cset "name='codec_out0 Gain 0 Switch' off"
+ cset "name='modem_out Gain 0 Switch' off"
+
+ # disable audio input path
+ cset "name='pcm1_out Gain 0 Switch' off"
+ cset "name='codec_in0 Gain 0 Switch' off"
+ cset "name='modem_in Gain 0 Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformEnableSeq.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformEnableSeq.conf
new file mode 100644
index 00000000..65de7c2e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/platforms/bytcr/PlatformEnableSeq.conf
@@ -0,0 +1,118 @@
+EnableSequence [
+
+ # media mixer settings
+ # compress
+ cset "name='media0_in Gain 0 Switch' on"
+ cset "name='media0_in Gain 0 Volume' 0"
+
+ # normal
+ cset "name='media1_in Gain 0 Switch' on"
+ cset "name='media1_in Gain 0 Volume' 0"
+ # swm loopback
+ cset "name='media2_in Gain 0 Switch' off"
+ cset "name='media2_in Gain 0 Volume' 0%"
+ # deep buffer
+ cset "name='media3_in Gain 0 Switch' on"
+ cset "name='media3_in Gain 0 Volume' 0"
+
+ cset "name='media0_out mix 0 media0_in Switch' on"
+ cset "name='media0_out mix 0 media1_in Switch' on"
+ cset "name='media0_out mix 0 media2_in Switch' off"
+ cset "name='media0_out mix 0 media3_in Switch' on"
+
+ cset "name='media1_out mix 0 media0_in Switch' off"
+ cset "name='media1_out mix 0 media1_in Switch' off"
+ cset "name='media1_out mix 0 media2_in Switch' off"
+ cset "name='media1_out mix 0 media3_in Switch' off"
+
+ cset "name='pcm0_in Gain 0 Switch' on"
+ cset "name='pcm0_in Gain 0 Volume' 0"
+
+ cset "name='pcm1_in Gain 0 Switch' off"
+ cset "name='pcm1_in Gain 0 Volume' 0%"
+
+ # codec0_out settings (used if SSP2 is connected)
+ cset "name='codec_out0 mix 0 codec_in0 Switch' off"
+ cset "name='codec_out0 mix 0 codec_in1 Switch' off"
+ cset "name='codec_out0 mix 0 media_loop1_in Switch' off"
+ cset "name='codec_out0 mix 0 media_loop2_in Switch' off"
+ cset "name='codec_out0 mix 0 pcm0_in Switch' on"
+ cset "name='codec_out0 mix 0 pcm1_in Switch' off"
+ cset "name='codec_out0 mix 0 sprot_loop_in Switch' off"
+ cset "name='codec_out0 Gain 0 Switch' on"
+ cset "name='codec_out0 Gain 0 Volume' 0"
+
+ # modem_out settings (used if SSP0 is connected)
+ cset "name='modem_out mix 0 codec_in0 Switch' off"
+ cset "name='modem_out mix 0 codec_in1 Switch' off"
+ cset "name='modem_out mix 0 media_loop1_in Switch' off"
+ cset "name='modem_out mix 0 media_loop2_in Switch' off"
+ cset "name='modem_out mix 0 pcm0_in Switch' on"
+ cset "name='modem_out mix 0 pcm1_in Switch' off"
+ cset "name='modem_out mix 0 sprot_loop_in Switch' off"
+ cset "name='modem_out Gain 0 Switch' on"
+ cset "name='modem_out Gain 0 Volume' 0"
+
+ # input settings
+
+ # input used when SSP2 is connected
+ cset "name='codec_in0 Gain 0 Switch' on"
+ cset "name='codec_in0 Gain 0 Volume' 0"
+
+ # input used when SSP0 is connected
+ cset "name='modem_in Gain 0 Switch' on"
+ cset "name='modem_in Gain 0 Volume' 0"
+
+ # pcm1_out settings
+ cset "name='pcm1_out mix 0 codec_in0 Switch' on"
+ cset "name='pcm1_out mix 0 modem_in Switch' on"
+ cset "name='pcm1_out mix 0 codec_in1 Switch' off"
+ cset "name='pcm1_out mix 0 media_loop1_in Switch' off"
+ cset "name='pcm1_out mix 0 media_loop2_in Switch' off"
+ cset "name='pcm1_out mix 0 pcm0_in Switch' off"
+ cset "name='pcm1_out mix 0 pcm1_in Switch' off"
+ cset "name='pcm1_out mix 0 sprot_loop_in Switch' off"
+
+ cset "name='pcm1_out Gain 0 Switch' on"
+ cset "name='pcm1_out Gain 0 Volume' 0"
+
+ # disable codec_out1
+ cset "name='codec_out1 mix 0 codec_in0 Switch' off"
+ cset "name='codec_out1 mix 0 codec_in1 Switch' off"
+ cset "name='codec_out1 mix 0 media_loop1_in Switch' off"
+ cset "name='codec_out1 mix 0 media_loop2_in Switch' off"
+ cset "name='codec_out1 mix 0 pcm0_in Switch' off"
+ cset "name='codec_out1 mix 0 pcm1_in Switch' off"
+ cset "name='codec_out1 mix 0 sprot_loop_in Switch' off"
+ cset "name='codec_out1 Gain 0 Switch' off"
+ cset "name='codec_out1 Gain 0 Volume' 0%"
+
+ # disable codec_in1
+ cset "name='codec_in1 Gain 0 Switch' off"
+ cset "name='codec_in1 Gain 0 Volume' 0%"
+
+ # disable all loops
+ cset "name='media_loop1_out mix 0 codec_in0 Switch' off"
+ cset "name='media_loop1_out mix 0 codec_in1 Switch' off"
+ cset "name='media_loop1_out mix 0 media_loop1_in Switch' off"
+ cset "name='media_loop1_out mix 0 media_loop2_in Switch' off"
+ cset "name='media_loop1_out mix 0 pcm0_in Switch' off"
+ cset "name='media_loop1_out mix 0 pcm1_in Switch' off"
+ cset "name='media_loop1_out mix 0 sprot_loop_in Switch' off"
+
+ cset "name='media_loop2_out mix 0 codec_in0 Switch' off"
+ cset "name='media_loop2_out mix 0 codec_in1 Switch' off"
+ cset "name='media_loop2_out mix 0 media_loop1_in Switch' off"
+ cset "name='media_loop2_out mix 0 media_loop2_in Switch' off"
+ cset "name='media_loop2_out mix 0 pcm0_in Switch' off"
+ cset "name='media_loop2_out mix 0 pcm1_in Switch' off"
+ cset "name='media_loop2_out mix 0 sprot_loop_in Switch' off"
+
+ cset "name='sprot_loop_out mix 0 codec_in0 Switch' off"
+ cset "name='sprot_loop_out mix 0 codec_in1 Switch' off"
+ cset "name='sprot_loop_out mix 0 media_loop1_in Switch' off"
+ cset "name='sprot_loop_out mix 0 media_loop2_in Switch' off"
+ cset "name='sprot_loop_out mix 0 pcm0_in Switch' off"
+ cset "name='sprot_loop_out mix 0 pcm1_in Switch' off"
+ cset "name='sprot_loop_out mix 0 sprot_loop_in Switch' off"
+]
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/Hdmi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/Hdmi.conf
new file mode 100644
index 00000000..0507d8d9
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/Hdmi.conf
@@ -0,0 +1,30 @@
+# Use case Configuration for sof-soundwire
+
+Include.hdmi.File "/codecs/hda/hdmi.conf"
+
+If.hdmi1 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi1.HDMI {
+ Number 1
+ Device 5
+ Priority 500
+ }
+}
+
+If.hdmi2 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi2.HDMI {
+ Number 2
+ Device 6
+ Priority 600
+ }
+}
+
+If.hdmi3 {
+ Condition { Type AlwaysTrue }
+ True.Macro.hdmi2.HDMI {
+ Number 3
+ Device 7
+ Priority 700
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/HiFi.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/HiFi.conf
new file mode 100644
index 00000000..ffea077c
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/HiFi.conf
@@ -0,0 +1,35 @@
+# Use case Configuration for sof-soundwire card
+
+SectionVerb {
+ EnableSequence [
+ disdevall ""
+ ]
+
+ Value.TQ "HiFi"
+}
+
+If.spkdev {
+ Condition {
+ Type String
+ Empty "${var:SpeakerCodec1}"
+ }
+ False.Include.spkdev.File "/sof-soundwire/${var:SpeakerCodec1}.conf"
+}
+
+If.micdev {
+ Condition {
+ Type String
+ Empty "${var:MicCodec1}"
+ }
+ False.Include.micdev.File "/sof-soundwire/${var:MicCodec1}.conf"
+}
+
+If.hsdev {
+ Condition {
+ Type String
+ Empty "${var:HeadsetCodec1}"
+ }
+ False.Include.hsdev.File "/sof-soundwire/${var:HeadsetCodec1}.conf"
+}
+
+
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs35l56.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs35l56.conf
new file mode 100644
index 00000000..f74b99af
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs35l56.conf
@@ -0,0 +1,40 @@
+# Use case Configuration for sof-soundwire card
+
+#
+# Arguments:
+# ForAmps - regex filter for var:SpeakerAmps
+# Amp - amplifier number 1-8
+#
+DefineMacro.cs42l43spk.If.0 {
+ Condition {
+ Type RegexMatch
+ Regex "${var:__ForAmps}"
+ String "${var:SpeakerAmps}"
+ }
+ True {
+ EnableSequence [
+ cset "name='AMP${var:__Amp} Speaker Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='AMP${var:__Amp} Speaker Switch' 0"
+ ]
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Macro.num1.cs42l43spk { ForAmps "[1-8]" Amp 1 }
+ Macro.num2.cs42l43spk { ForAmps "[2-8]" Amp 2 }
+ Macro.num3.cs42l43spk { ForAmps "[3-8]" Amp 3 }
+ Macro.num4.cs42l43spk { ForAmps "[4-8]" Amp 4 }
+ Macro.num5.cs42l43spk { ForAmps "[5-8]" Amp 5 }
+ Macro.num6.cs42l43spk { ForAmps "[6-8]" Amp 6 }
+ Macro.num7.cs42l43spk { ForAmps "[78]" Amp 7 }
+ Macro.num8.cs42l43spk { ForAmps "8" Amp 8 }
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43-dmic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43-dmic.conf
new file mode 100644
index 00000000..d5f895d3
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43-dmic.conf
@@ -0,0 +1,26 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Mic" {
+ Comment "Microphones"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='cs42l43 DP1TX1 Input' 'Decimator 3'"
+ cset "name='cs42l43 DP1TX2 Input' 'Decimator 4'"
+ ]
+
+ DisableSequence [
+ cset "name='cs42l43 DP1TX1 Input' 'None'"
+ cset "name='cs42l43 DP1TX2 Input' 'None'"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ CaptureMixer "default:${CardId}"
+ CaptureMixerElem "cs42l43 PDM2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43.conf
new file mode 100644
index 00000000..1702cf0d
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/cs42l43.conf
@@ -0,0 +1,46 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='cs42l43 Headphone L Input 1' 'DP5RX1'"
+ cset "name='cs42l43 Headphone R Input 1' 'DP5RX2'"
+ ]
+
+ DisableSequence [
+ cset "name='cs42l43 Headphone L Input 1' 'None'"
+ cset "name='cs42l43 Headphone R Input 1' 'None'"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},0"
+ PlaybackVolume "cs42l43 Headphone Digital Volume"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='cs42l43 ADC1 Input' 'IN1'"
+ cset "name='cs42l43 Decimator 1 Mode' 'ADC'"
+
+ cset "name='cs42l43 DP1TX1 Input' 'Decimator 1'"
+ cset "name='cs42l43 DP1TX2 Input' 'Decimator 1'"
+ ]
+
+ DisableSequence [
+ cset "name='cs42l43 DP1TX1 Input' 'None'"
+ cset "name='cs42l43 DP1TX2 Input' 'None'"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},4"
+ CaptureMixerElem "cs42l43 Decimator 1"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/dmic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/dmic.conf
new file mode 100644
index 00000000..c53d381a
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/dmic.conf
@@ -0,0 +1,22 @@
+SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},${find-device:type=pcm,stream=capture,field=id,regex='DMIC '}"
+ If.chn {
+ Condition {
+ Type RegexMatch
+ Regex "[34]"
+ String "${var:Mics1}"
+ }
+ True {
+ CaptureChannels 4
+ }
+ }
+ CaptureMixerElem "Dmic0"
+ CaptureVolume "Dmic0 Capture Volume"
+ CaptureSwitch "Dmic0 Capture Switch"
+ CaptureMicInfoFile "${var:LibDir}/dmics-nhlt.json"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1308.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1308.conf
new file mode 100644
index 00000000..cce3d13f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1308.conf
@@ -0,0 +1,46 @@
+# Use case Configuration for sof-soundwire card
+
+#
+# Arguments:
+# ForAmps - regex filter for var:SpeakerAmps
+# Amp - amplifier number (1,2 etc.)
+# Sel - channel selection (LR LL RL RR)
+#
+DefineMacro.rt1308spk.If.0 {
+ Condition {
+ Type RegexMatch
+ Regex "${var:__ForAmps}"
+ String "${var:SpeakerAmps}"
+ }
+ True {
+ EnableSequence [
+ cset "name='rt1308-${var:__Amp} RX Channel Select' ${var:__Sel}"
+ cset "name='rt1308-${var:__Amp} DAC L Switch' 1"
+ cset "name='rt1308-${var:__Amp} DAC R Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='rt1308-${var:__Amp} DAC L Switch' 0"
+ cset "name='rt1308-${var:__Amp} DAC R Switch' 0"
+ ]
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Macro.num1.rt1308spk { ForAmps "[12]" Amp 1 Sel LL }
+ Macro.num2.rt1308spk { ForAmps "2" Amp 2 Sel RR }
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1316.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1316.conf
new file mode 100644
index 00000000..a8038b61
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1316.conf
@@ -0,0 +1,65 @@
+# Use case Configuration for sof-soundwire card
+
+#
+# Arguments:
+# ForAmps - regex filter for var:SpeakerAmps
+# Amp - amplifier number (1,2 etc.)
+# Sel - channel selection (L,R L,L L,R L,L+R R,L R,R R,L+R L+R,L L+R,R L+R,L+R)
+#
+DefineMacro.rt1316spk.If.0 {
+ Condition {
+ Type RegexMatch
+ Regex "${var:__ForAmps}"
+ String "${var:SpeakerAmps}"
+ }
+ True {
+ EnableSequence [
+ cset "name='rt1316-${var:__Amp} RX Channel Select' ${var:__Sel}"
+ ]
+ If.lrswitch {
+ Condition {
+ Type ControlExists
+ Control "name='rt1316-${var:__Amp} DAC L Switch'"
+ }
+ True {
+ EnableSequence [
+ cset "name='rt1316-${var:__Amp} DAC L Switch' 1"
+ cset "name='rt1316-${var:__Amp} DAC R Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='rt1316-${var:__Amp} DAC L Switch' 0"
+ cset "name='rt1316-${var:__Amp} DAC R Switch' 0"
+ ]
+ }
+ False {
+ EnableSequence [
+ cset "name='rt1316-${var:__Amp} DAC Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt1316-${var:__Amp} DAC Switch' 0"
+ ]
+ }
+ }
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Macro.num1.rt1316spk { ForAmps "[12]" Amp 1 Sel "L,L" }
+ Macro.num2.rt1316spk { ForAmps "2" Amp 2 Sel "R,R" }
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1318.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1318.conf
new file mode 100644
index 00000000..e40c3be6
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt1318.conf
@@ -0,0 +1,44 @@
+# Use case Configuration for sof-soundwire card
+
+#
+# Arguments:
+# ForAmps - regex filter for var:SpeakerAmps
+# Amp - amplifier number (1,2 etc.)
+# Sel - channel selection (L,R L,L L,R L,L+R R,L R,R R,L+R L+R,L L+R,R L+R,L+R)
+#
+DefineMacro.rt1318spk.If.0 {
+ Condition {
+ Type RegexMatch
+ Regex "${var:__RegEx}"
+ String "${var:SpeakerAmps}"
+ }
+ True {
+ EnableSequence [
+ cset "name='rt1308-${var:__Amp} RX Channel Select' ${var:__Sel}"
+ cset "name='rt1308-${var:__Amp} DAC Switch' 1"
+ ]
+ DisableSequence [
+ cset "name='rt1308-${var:__Amp} DAC Switch' 0"
+ ]
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ Macro.num1.rt1318spk { ForAmps "[12]" Amp 1 Sel "L,L" }
+ Macro.num2.rt1318spk { ForAmps "2" Amp 2 Sel "R,R" }
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},2"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt5682.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt5682.conf
new file mode 100644
index 00000000..092ac9c8
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt5682.conf
@@ -0,0 +1,50 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ cset "name='rt5682 HPOL Playback Switch' 1"
+ cset "name='rt5682 HPOR Playback Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt5682 HPOL Playback Switch' 0"
+ cset "name='rt5682 HPOR Playback Switch' 0"
+ cset "name='Headphone Switch' off"
+
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='Headset Mic Switch' on"
+ cset "name='rt5682 STO1 ADC Capture Switch' 1"
+ cset "name='rt5682 RECMIX1L CBJ Switch' 1"
+ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 1"
+ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt5682 STO1 ADC Capture Switch' 0"
+ cset "name='rt5682 RECMIX1L CBJ Switch' 0"
+ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 0"
+ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 0"
+ cset "name='Headset Mic Switch' off"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt700.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt700.conf
new file mode 100644
index 00000000..ab647f7f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt700.conf
@@ -0,0 +1,62 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphones Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphones Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Speaker Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='ADC 09 Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='ADC 09 Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Headset Mic Jack"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711-sdca.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711-sdca.conf
new file mode 100644
index 00000000..a8e555ef
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711-sdca.conf
@@ -0,0 +1,40 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='rt711 FU0F Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt711 FU0F Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Headset Mic Jack"
+ CaptureSwitch "rt711 FU0F Capture Switch"
+ CaptureVolume "rt711 FU0F Capture Volume"
+ CaptureMixerElem "rt711 FU0F"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711.conf
new file mode 100644
index 00000000..63f9d21e
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt711.conf
@@ -0,0 +1,39 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='rt711 ADC 08 Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt711 ADC 08 Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Headset Mic Jack"
+ CaptureSwitch "rt711 ADC 08 Capture Switch"
+ CaptureVolume "rt711 ADC 08 Capture Volume"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-dmic.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-dmic.conf
new file mode 100644
index 00000000..dc5fe0ec
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-dmic.conf
@@ -0,0 +1,21 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Mic" {
+ Comment "SoundWire microphones"
+
+ EnableSequence [
+ cset "name='rt713-dmic FU1E Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt713-dmic FU1E Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ CaptureSwitch "rt713-dmic FU1E Capture Switch"
+ CaptureVolume "rt713-dmic FU1E Capture Volume"
+ CaptureMixerElem "rt713-dmic FU1E"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-sdca.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-sdca.conf
new file mode 100644
index 00000000..f1cee7c7
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt713-sdca.conf
@@ -0,0 +1,40 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ EnableSequence [
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ EnableSequence [
+ cset "name='rt713 FU0F Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt713 FU0F Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},1"
+ JackControl "Headset Mic Jack"
+ CaptureSwitch "rt713 FU0F Capture Switch"
+ CaptureVolume "rt713 FU0F Capture Volume"
+ CaptureMixerElem "rt713 FU0F"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715-sdca.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715-sdca.conf
new file mode 100644
index 00000000..268a247f
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715-sdca.conf
@@ -0,0 +1,22 @@
+# Use case Configuration for sof-soundwire card
+
+SectionDevice."Mic" {
+ Comment "SoundWire microphones"
+
+ EnableSequence [
+ cset "name='rt714 FU02 Capture Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='rt714 FU02 Capture Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ CaptureSwitch "rt714 FU02 Capture Switch"
+ CaptureVolume "rt714 FU02 Capture Volume"
+ CaptureMixerElem "rt714 FU02"
+ CaptureMicInfoFile "${var:LibDir}/dmics-nhlt.json"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715.conf
new file mode 100644
index 00000000..090b6630
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/rt715.conf
@@ -0,0 +1,31 @@
+# Use case Configuration for sof-soundwire card
+
+If.hwctl {
+ Condition {
+ Type ControlExists
+ Control "name='rt715 Capture Volume'"
+ }
+ True.Define.rt715ctl "rt715 Capture"
+ False.Define.rt715ctl "PGA5.0 5 Master Capture"
+}
+
+SectionDevice."Mic" {
+ Comment "SoundWire microphones"
+
+ EnableSequence [
+ cset "name='${var:rt715ctl} Switch' 1"
+ ]
+
+ DisableSequence [
+ cset "name='${var:rt715ctl} Switch' 0"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},4"
+ CaptureSwitch "${var:rt715ctl} Switch"
+ CaptureVolume "${var:rt715ctl} Volume"
+ CaptureMixerElem "${var:rt715ctl}"
+ CaptureMicInfoFile "${var:LibDir}/dmics-nhlt.json"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/sof-soundwire.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/sof-soundwire.conf
new file mode 100644
index 00000000..35a262c4
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/sof-soundwire/sof-soundwire.conf
@@ -0,0 +1,105 @@
+Syntax 6
+
+SectionUseCase."HiFi" {
+ File "/sof-soundwire/HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+Include.card-init.File "/lib/card-init.conf"
+Include.ctl-remap.File "/lib/ctl-remap.conf"
+
+Define {
+ SpeakerCodec1 ""
+ SpeakerChannels1 "2"
+ SpeakerAmps1 "0"
+ HeadsetCodec1 ""
+ MicCodec1 ""
+ Mics1 "0"
+}
+
+DefineRegex {
+ SpeakerCodec {
+ Regex " spk:([a-z0-9]+(-sdca)?)"
+ String "${CardComponents}"
+ }
+ SpeakerChannels {
+ Regex " cfg-spk:([0-9]+)"
+ String "${CardComponents}"
+ }
+ SpeakerAmps {
+ Regex " cfg-amp:([0-9]+)"
+ String "${CardComponents}"
+ }
+ HeadsetCodec {
+ Regex " hs:([a-z0-9]+(-sdca)?)"
+ String "${CardComponents}"
+ }
+ MicCodec {
+ Regex " mic:([a-z0-9]+(-dmic)?+(-sdca)?)"
+ String "${CardComponents}"
+ }
+ Mics {
+ Regex " cfg-mics:([1-9][0-9]*)"
+ String "${CardComponents}"
+ }
+}
+
+If.hs_init {
+ Condition {
+ Type RegexMatch
+ Regex "(cs42l43|rt5682|rt700|rt711|rt713(-sdca)?)"
+ String "${var:HeadsetCodec1}"
+ }
+ True.Include.hs_init.File "/codecs/${var:HeadsetCodec1}/init.conf"
+}
+
+If.mic_init {
+ Condition {
+ Type RegexMatch
+ Regex "(rt713-dmic|rt715(-sdca)?)"
+ String "${var:MicCodec1}"
+ }
+ True.Include.mic_init.File "/codecs/${var:MicCodec1}/init.conf"
+}
+
+If.mic_init_rt715 {
+ Condition {
+ Type String
+ Needle "rt715"
+ Haystack "${var:MicCodec1}"
+ }
+ True.BootSequence [
+ sysw "-/class/sound/ctl-led/mic/card${CardNumber}/detach:PGA5.0 5 Master Capture Switch"
+ ]
+}
+
+If.pga_init_pga2 {
+ Condition {
+ Type ControlExists
+ Control "name='PGA2.0 2 Master Capture Switch'"
+ }
+ True.BootSequence [
+ cset "name='PGA2.0 2 Master Capture Switch' 1"
+ ]
+}
+
+If.pga_init_pga5 {
+ Condition {
+ Type ControlExists
+ Control "name='PGA5.0 5 Master Capture Switch'"
+ }
+ True.BootSequence [
+ cset "name='PGA5.0 5 Master Capture Switch' 1"
+ ]
+}
+
+If.mics-array {
+ Condition {
+ Type String
+ Empty "${var:Mics1}"
+ }
+ False.FixedBootSequence {
+ # dmic array info
+ exec "-nhlt-dmic-info -o ${var:LibDir}/dmics-nhlt.json"
+ }
+}
diff --git a/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/ucm.conf b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/ucm.conf
new file mode 100644
index 00000000..fb1a0bef
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/alsa/ucm2/ucm.conf
@@ -0,0 +1,172 @@
+#
+# This is the toplevel file included from the alsa-lib.
+#
+# It allows to add extra lookups for the old kernels or so.
+#
+# You may specify the directory (relative to the toplevel) and
+# the master configuration file which defines the verbs.
+#
+
+#
+# Syntax version is reset for the master configuration file.
+#
+
+Syntax 4
+
+Define.V1 "" # non-empty string to enable ucm v1 paths
+Define.V2ConfD yes # empty string to disable
+Define.V2Module "" # non-empty string to enable module name lookups (obsolete)
+Define.V2Name "" # non-empty string to enable driver & card name lookups (obsolete)
+
+Include.libgen.File "/lib/generic.conf" # private alsa-lib configuration
+
+If.driver {
+ Condition {
+ Type String
+ Empty "${CardNumber}"
+ }
+ True {
+ #
+ # The probed path for no-hw-card:
+ #
+ # ucm2/conf.virt.d/${OpenName}.conf
+ # ucm2/${OpenName}/${OpenName}.conf
+ #
+ UseCasePath {
+ virt {
+ Directory "conf.virt.d"
+ File "${OpenName}.conf"
+ }
+ legacy {
+ Directory "${OpenName}"
+ File "${OpenName}.conf"
+ }
+ }
+ }
+ False {
+
+ #
+ # The probed path when hw-card is found:
+ #
+ # ucm2/conf.d/[${CardDriver}|${KernelDriver}]/${CardLongName}.conf
+ # ucm2/conf.d/[${CardDriver}|${KernelDriver}]/[${CardDriver}|${KernelDriver}].conf
+ # ucm2/${KernelModule}/${KernelModule}.conf (obsolete)
+ # ucm2/${CardDriver}/${CardLongName}.conf (obsolete)
+ # ucm2/${CardDriver}/${CardDriver}.conf (obsolete)
+ #
+
+ If.V2ConfD {
+ Condition {
+ Type String
+ Empty "${var:V2ConfD}"
+ }
+ False {
+ Define.Driver "${CardDriver}"
+ If.nodrv {
+ Condition {
+ Type String
+ Empty "${var:Driver}"
+ }
+ True.Define {
+ KernelDriverPath "class/sound/card${CardNumber}/device/driver"
+ Driver "${sys:$KernelDriverPath}"
+ }
+ }
+ UseCasePath.confd1 {
+ Directory "conf.d/${var:Driver}"
+ File "${CardLongName}.conf"
+ }
+ UseCasePath.confd2 {
+ Directory "conf.d/${var:Driver}"
+ File "${var:Driver}.conf"
+ }
+ }
+ }
+ If.V2Module {
+ Condition {
+ Type String
+ Empty "${var:V2Module}"
+ }
+ False {
+ Define.KernelModulePath "class/sound/card${CardNumber}/device/driver/module"
+ Define.KernelModule "$${sys:$KernelModulePath}"
+ UseCasePath.module {
+ Directory "module"
+ File "${var:KernelModule}.conf"
+ }
+ }
+ }
+ If.V2Name {
+ Condition {
+ Type String
+ Empty "${var:V2Name}"
+ }
+ False.UseCasePath {
+ longname {
+ Directory "${CardDriver}"
+ File "${CardLongName}.conf"
+ }
+ driver {
+ Directory "${CardDriver}"
+ File "${CardDriver}.conf"
+ }
+ }
+ }
+ }
+}
+
+If.V1 {
+ Condition {
+ Type String
+ Empty "${var:V1}"
+ }
+ False.If.v1_driver {
+ Condition {
+ Type String
+ Empty "${CardNumber}"
+ }
+ True {
+ #
+ # The probed path for no-hw-card:
+ #
+ # ucm/${OpenName}/${OpenName}.conf
+ #
+ UseCasePath.v1_legacy {
+ Version 1
+ Directory "${OpenName}"
+ File "${OpenName}.conf"
+ }
+ }
+ False {
+ #
+ # The ucm v1 probed path when hw-card is found:
+ #
+ # ucm/${CardLongName}/${CardLongName}.conf
+ # ucm/${CardName}/${CardName}.conf or \
+ # ucm/${OpenName}/${OpenName}.conf
+ #
+ UseCasePath.v1_longname {
+ Version 1
+ Directory "${CardLongName}"
+ File "${CardLongName}.conf"
+ }
+ If.v1_hw {
+ Condition {
+ Type String
+ Haystack "${OpenName}"
+ Needle "hw:"
+ }
+ True.UseCasePath.v1_cardnamme {
+ Version 1
+ Directory "${CardName}"
+ File "${CardName}.conf"
+ }
+ False.UseCasePath.v1_openname {
+ Version 1
+ Directory "${OpenName}"
+ File "${OpenName}.conf"
+ }
+ }
+ }
+ }
+}