Blob Blame History Raw
From 108a2f43791fe769fd58726881b12ad908ebd2e0 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Thu, 18 Apr 2019 20:40:18 +0200
Subject: [PATCH 07/25] ucm: Add UCM profile for CX2072X codec on
 Baytrail/Cherrytrail profiles

Adding a new Conexant CX2072X codec profile and reusing the existing
BYT/CHT platform snippets.

Currently tested only on ASUS E200HA laptop.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 configure.ac                                    |  2 ++
 src/conf/ucm/Makefile.am                        |  1 +
 src/conf/ucm/bytcht-cx2072x/HiFi.conf           | 24 ++++++++++++++++++++++++
 src/conf/ucm/bytcht-cx2072x/Makefile.am         |  4 ++++
 src/conf/ucm/bytcht-cx2072x/bytcht-cx2072x.conf |  8 ++++++++
 src/conf/ucm/codecs/Makefile.am                 |  1 +
 src/conf/ucm/codecs/cx2072x/DisableSeq.conf     |  7 +++++++
 src/conf/ucm/codecs/cx2072x/EnableSeq.conf      | 13 +++++++++++++
 src/conf/ucm/codecs/cx2072x/HeadPhones.conf     | 24 ++++++++++++++++++++++++
 src/conf/ucm/codecs/cx2072x/HeadsetMic.conf     | 25 +++++++++++++++++++++++++
 src/conf/ucm/codecs/cx2072x/InternalMic.conf    | 24 ++++++++++++++++++++++++
 src/conf/ucm/codecs/cx2072x/Makefile.am         |  6 ++++++
 src/conf/ucm/codecs/cx2072x/Speaker.conf        | 23 +++++++++++++++++++++++
 13 files changed, 162 insertions(+)
 create mode 100644 src/conf/ucm/bytcht-cx2072x/HiFi.conf
 create mode 100644 src/conf/ucm/bytcht-cx2072x/Makefile.am
 create mode 100644 src/conf/ucm/bytcht-cx2072x/bytcht-cx2072x.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/DisableSeq.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/EnableSeq.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/HeadPhones.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/HeadsetMic.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/InternalMic.conf
 create mode 100644 src/conf/ucm/codecs/cx2072x/Makefile.am
 create mode 100644 src/conf/ucm/codecs/cx2072x/Speaker.conf

diff --git a/configure.ac b/configure.ac
index 0fb34de4fb65..2e955760a6c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -720,6 +720,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
 	  src/conf/ucm/ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN/Makefile \
 	  src/conf/ucm/broadwell-rt286/Makefile \
 	  src/conf/ucm/broxton-rt298/Makefile \
+	  src/conf/ucm/bytcht-cx2072x/Makefile \
 	  src/conf/ucm/bytcht-es8316/Makefile \
 	  src/conf/ucm/bytcht-es8316-mono-spk-in1-mic/Makefile \
 	  src/conf/ucm/bytcht-es8316-mono-spk-in2-mic/Makefile \
@@ -765,6 +766,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
 	  src/conf/ucm/tegraalc5632/Makefile \
 	  src/conf/ucm/VEYRON-I2S/Makefile \
 	  src/conf/ucm/codecs/Makefile \
+	  src/conf/ucm/codecs/cx2072x/Makefile \
 	  src/conf/ucm/codecs/es8316/Makefile \
 	  src/conf/ucm/codecs/nau8824/Makefile \
 	  src/conf/ucm/codecs/rt5640/Makefile \
diff --git a/src/conf/ucm/Makefile.am b/src/conf/ucm/Makefile.am
index e9f88ed683a2..02257048860f 100644
--- a/src/conf/ucm/Makefile.am
+++ b/src/conf/ucm/Makefile.am
@@ -4,6 +4,7 @@ platforms \
 ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN \
 broadwell-rt286 \
 broxton-rt298 \
+bytcht-cx2072x \
 bytcht-es8316 \
 bytcht-es8316-mono-spk-in1-mic \
 bytcht-es8316-mono-spk-in2-mic \
diff --git a/src/conf/ucm/bytcht-cx2072x/HiFi.conf b/src/conf/ucm/bytcht-cx2072x/HiFi.conf
new file mode 100644
index 000000000000..e9c1f7573d50
--- /dev/null
+++ b/src/conf/ucm/bytcht-cx2072x/HiFi.conf
@@ -0,0 +1,24 @@
+SectionVerb {
+	EnableSequence [
+		cdev "hw:bytchtcx2072x"
+		<platforms/bytcr/PlatformEnableSeq.conf>
+		<codecs/cx2072x/EnableSeq.conf>
+	]
+
+	DisableSequence [
+		cdev "hw:bytchtcx2072x"
+		<codecs/cx2072x/DisableSeq.conf>
+		<platforms/bytcr/PlatformDisableSeq.conf>
+	]
+
+	Value {
+		PlaybackPCM "hw:bytchtcx2072x"
+		CapturePCM "hw:bytchtcx2072x"
+	}
+}
+
+<codecs/cx2072x/Speaker.conf>
+<codecs/cx2072x/HeadPhones.conf>
+
+<codecs/cx2072x/InternalMic.conf>
+<codecs/cx2072x/HeadsetMic.conf>
diff --git a/src/conf/ucm/bytcht-cx2072x/Makefile.am b/src/conf/ucm/bytcht-cx2072x/Makefile.am
new file mode 100644
index 000000000000..373b2a77079a
--- /dev/null
+++ b/src/conf/ucm/bytcht-cx2072x/Makefile.am
@@ -0,0 +1,4 @@
+alsaconfigdir = @ALSA_CONFIG_DIR@
+ucmdir = $(alsaconfigdir)/ucm/bytcht-cx2072x
+ucm_DATA = bytcht-cx2072x.conf HiFi.conf
+EXTRA_DIST = $(ucm_DATA)
diff --git a/src/conf/ucm/bytcht-cx2072x/bytcht-cx2072x.conf b/src/conf/ucm/bytcht-cx2072x/bytcht-cx2072x.conf
new file mode 100644
index 000000000000..fce04456c678
--- /dev/null
+++ b/src/conf/ucm/bytcht-cx2072x/bytcht-cx2072x.conf
@@ -0,0 +1,8 @@
+SectionUseCase."HiFi" {
+	File "HiFi.conf"
+	Comment "Play HiFi quality Music"
+}
+
+SectionDefaults [
+	cdev "hw:bytchtcx2072x"
+]
diff --git a/src/conf/ucm/codecs/Makefile.am b/src/conf/ucm/codecs/Makefile.am
index f78fd0817f75..5987b9cf89a4 100644
--- a/src/conf/ucm/codecs/Makefile.am
+++ b/src/conf/ucm/codecs/Makefile.am
@@ -1,4 +1,5 @@
 SUBDIRS=\
+cx2072x \
 es8316 \
 rt5640 \
 rt5645 \
diff --git a/src/conf/ucm/codecs/cx2072x/DisableSeq.conf b/src/conf/ucm/codecs/cx2072x/DisableSeq.conf
new file mode 100644
index 000000000000..1e3d5489da3f
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/DisableSeq.conf
@@ -0,0 +1,7 @@
+# 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/src/conf/ucm/codecs/cx2072x/EnableSeq.conf b/src/conf/ucm/codecs/cx2072x/EnableSeq.conf
new file mode 100644
index 000000000000..fb8e3fe23c4d
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/EnableSeq.conf
@@ -0,0 +1,13 @@
+# 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/src/conf/ucm/codecs/cx2072x/HeadPhones.conf b/src/conf/ucm/codecs/cx2072x/HeadPhones.conf
new file mode 100644
index 000000000000..4e3ff950c130
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/HeadPhones.conf
@@ -0,0 +1,24 @@
+SectionDevice."Headphones" {
+	Comment "Headphones"
+
+	ConflictingDevice [
+		"Speaker"
+	]
+
+	EnableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Headphone Switch' on"
+		cset "name='PortA Out En Switch' on"
+	]
+
+	DisableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Headphone Switch' off"
+		cset "name='PortA Out En Switch' off"
+	]
+
+	Value {
+		PlaybackChannels "2"
+		JackControl "Headphone Jack"
+	}
+}
diff --git a/src/conf/ucm/codecs/cx2072x/HeadsetMic.conf b/src/conf/ucm/codecs/cx2072x/HeadsetMic.conf
new file mode 100644
index 000000000000..26b8df160385
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/HeadsetMic.conf
@@ -0,0 +1,25 @@
+SectionDevice."HeadsetMic" {
+	Comment "Headset Microphone"
+
+	ConflictingDevice [
+		"InternalMic"
+	]
+
+	EnableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Headset Mic Switch' on"
+		cset "name='ADC1 Mux' 'PortD Switch'"
+		cset "name='PortD In En Switch' on"
+	]
+
+	DisableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Headset Mic Switch' off"
+		cset "name='PortD In En Switch' off"
+	]
+
+	Value {
+		CaptureChannels "2"
+		JackControl "Headset Mic Jack"
+	}
+}
diff --git a/src/conf/ucm/codecs/cx2072x/InternalMic.conf b/src/conf/ucm/codecs/cx2072x/InternalMic.conf
new file mode 100644
index 000000000000..a3e14538fe58
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/InternalMic.conf
@@ -0,0 +1,24 @@
+SectionDevice."InternalMic" {
+	Comment "Internal Microphone"
+
+	ConflictingDevice [
+		"HeadsetMic"
+	]
+
+	EnableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Int Mic Switch' on"
+		cset "name='ADC1 Mux' 'PortC Switch'"
+		cset "name='PortC In En Switch' on"
+	]
+
+	DisableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Int Mic Switch' off"
+		cset "name='PortC In En Switch' off"
+	]
+
+	Value {
+		CaptureChannels "2"
+	}
+}
diff --git a/src/conf/ucm/codecs/cx2072x/Makefile.am b/src/conf/ucm/codecs/cx2072x/Makefile.am
new file mode 100644
index 000000000000..2990fd096178
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/Makefile.am
@@ -0,0 +1,6 @@
+alsaconfigdir = @ALSA_CONFIG_DIR@
+ucmdir = $(alsaconfigdir)/ucm/codecs/cx2072x
+ucm_DATA = EnableSeq.conf DisableSeq.conf \
+	HeadPhones.conf Speaker.conf \
+	InternalMic.conf HeadsetMic.conf
+EXTRA_DIST = $(ucm_DATA)
diff --git a/src/conf/ucm/codecs/cx2072x/Speaker.conf b/src/conf/ucm/codecs/cx2072x/Speaker.conf
new file mode 100644
index 000000000000..55e2b2ba33e4
--- /dev/null
+++ b/src/conf/ucm/codecs/cx2072x/Speaker.conf
@@ -0,0 +1,23 @@
+SectionDevice."Speaker" {
+	Comment "Speakers"
+
+	ConflictingDevice [
+		"Headphones"
+	]
+
+	EnableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Ext Spk Switch' on"
+		cset "name='PortG Out En Switch' on"
+	]
+
+	DisableSequence [
+		cdev "hw:bytchtcx2072x"
+		cset "name='Ext Spk Switch' off"
+		cset "name='PortG Out En Switch' off"
+	]
+
+	Value {
+		PlaybackChannels "2"
+	}
+}
-- 
2.16.4