alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec
@ 2021-02-09 19:08 Hans de Goede
  2021-02-09 19:56 ` Jaroslav Kysela
  2021-02-11 19:16 ` Jaroslav Kysela
  0 siblings, 2 replies; 4+ messages in thread
From: Hans de Goede @ 2021-02-09 19:08 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: Hans de Goede, alsa-devel, Pierre-Louis Bossart

Add new UCM profile for BYT boards with a WM5102 codec. This has been
tested with both the SST and the SOF driver on a
Lenovo Yoga Tablet 2 1051L.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 ucm2/SOF/HiFi.conf                      |  9 +++++++++
 ucm2/bytcr-wm5102/HiFi.conf             | 27 +++++++++++++++++++++++++
 ucm2/bytcr-wm5102/bytcr-wm5102.conf     |  6 ++++++
 ucm2/codecs/wm5102/EnableSeq.conf       | 16 +++++++++++++++
 ucm2/codecs/wm5102/HeadPhones.conf      | 23 +++++++++++++++++++++
 ucm2/codecs/wm5102/IN1-HeadsetMic.conf  | 24 ++++++++++++++++++++++
 ucm2/codecs/wm5102/IN3-InternalMic.conf | 23 +++++++++++++++++++++
 ucm2/codecs/wm5102/Speaker.conf         | 22 ++++++++++++++++++++
 8 files changed, 150 insertions(+)
 create mode 100644 ucm2/bytcr-wm5102/HiFi.conf
 create mode 100644 ucm2/bytcr-wm5102/bytcr-wm5102.conf
 create mode 100644 ucm2/codecs/wm5102/EnableSeq.conf
 create mode 100644 ucm2/codecs/wm5102/HeadPhones.conf
 create mode 100644 ucm2/codecs/wm5102/IN1-HeadsetMic.conf
 create mode 100644 ucm2/codecs/wm5102/IN3-InternalMic.conf
 create mode 100644 ucm2/codecs/wm5102/Speaker.conf

diff --git a/ucm2/SOF/HiFi.conf b/ucm2/SOF/HiFi.conf
index af0d8c9..adf8cc5 100644
--- a/ucm2/SOF/HiFi.conf
+++ b/ucm2/SOF/HiFi.conf
@@ -79,6 +79,15 @@ If.bytcht_max98090 {
 	True.Include.main.File "/chtmax98090/HiFi.conf"
 }
 
+If.bytcht_wm5102 {
+	Condition {
+		Type String
+		Haystack "${CardName}"
+		Needle "bytcht wm5102"
+	}
+	True.Include.main.File "/bytcr-wm5102/HiFi.conf"
+}
+
 If.bdw_rt286 {
 	Condition {
 		Type String
diff --git a/ucm2/bytcr-wm5102/HiFi.conf b/ucm2/bytcr-wm5102/HiFi.conf
new file mode 100644
index 0000000..1269868
--- /dev/null
+++ b/ucm2/bytcr-wm5102/HiFi.conf
@@ -0,0 +1,27 @@
+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"
+		}
+	}
+}
+
+Include.spk.File "/codecs/wm5102/Speaker.conf"
+Include.hp.File "/codecs/wm5102/HeadPhones.conf"
+Include.mic.File "/codecs/wm5102/IN3-InternalMic.conf"
+Include.headset.File "/codecs/wm5102/IN1-HeadsetMic.conf"
diff --git a/ucm2/bytcr-wm5102/bytcr-wm5102.conf b/ucm2/bytcr-wm5102/bytcr-wm5102.conf
new file mode 100644
index 0000000..af966ef
--- /dev/null
+++ b/ucm2/bytcr-wm5102/bytcr-wm5102.conf
@@ -0,0 +1,6 @@
+Syntax 3
+
+SectionUseCase."HiFi" {
+	File "HiFi.conf"
+	Comment "Play HiFi quality Music"
+}
diff --git a/ucm2/codecs/wm5102/EnableSeq.conf b/ucm2/codecs/wm5102/EnableSeq.conf
new file mode 100644
index 0000000..6a857a2
--- /dev/null
+++ b/ucm2/codecs/wm5102/EnableSeq.conf
@@ -0,0 +1,16 @@
+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"
+
+	# Both mics are quite soft by default, boost then
+	cset "name='IN1L 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/ucm2/codecs/wm5102/HeadPhones.conf b/ucm2/codecs/wm5102/HeadPhones.conf
new file mode 100644
index 0000000..cb29347
--- /dev/null
+++ b/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/ucm2/codecs/wm5102/IN1-HeadsetMic.conf b/ucm2/codecs/wm5102/IN1-HeadsetMic.conf
new file mode 100644
index 0000000..a607487
--- /dev/null
+++ b/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/ucm2/codecs/wm5102/IN3-InternalMic.conf b/ucm2/codecs/wm5102/IN3-InternalMic.conf
new file mode 100644
index 0000000..3a03ac3
--- /dev/null
+++ b/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/ucm2/codecs/wm5102/Speaker.conf b/ucm2/codecs/wm5102/Speaker.conf
new file mode 100644
index 0000000..9f631f5
--- /dev/null
+++ b/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"
+	]
+}
-- 
2.30.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec
  2021-02-09 19:08 [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec Hans de Goede
@ 2021-02-09 19:56 ` Jaroslav Kysela
  2021-02-09 20:47   ` Hans de Goede
  2021-02-11 19:16 ` Jaroslav Kysela
  1 sibling, 1 reply; 4+ messages in thread
From: Jaroslav Kysela @ 2021-02-09 19:56 UTC (permalink / raw)
  To: Hans de Goede; +Cc: alsa-devel, Pierre-Louis Bossart

Dne 09. 02. 21 v 20:08 Hans de Goede napsal(a):
> Add new UCM profile for BYT boards with a WM5102 codec. This has been
> tested with both the SST and the SOF driver on a
> Lenovo Yoga Tablet 2 1051L.

Hans,

	could you also add the configuration for the hardware volume mixer controls?

			Thank you,
				Jaroslav

-- 
Jaroslav Kysela <perex@perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec
  2021-02-09 19:56 ` Jaroslav Kysela
@ 2021-02-09 20:47   ` Hans de Goede
  0 siblings, 0 replies; 4+ messages in thread
From: Hans de Goede @ 2021-02-09 20:47 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: alsa-devel, Pierre-Louis Bossart

Hi Jaroslav,

On 2/9/21 8:56 PM, Jaroslav Kysela wrote:
> Dne 09. 02. 21 v 20:08 Hans de Goede napsal(a):
>> Add new UCM profile for BYT boards with a WM5102 codec. This has been
>> tested with both the SST and the SOF driver on a
>> Lenovo Yoga Tablet 2 1051L.
> 
> Hans,
> 
> 	could you also add the configuration for the hardware volume mixer controls?

I definitely plan to look into those, but that is going to be a
codec by codec thing.

I want to start with the codecs which are used in devices with mute LEDs,
to see if I can get the LEDs to work in combination with testing the kernel
generic alsa led-trigger kernel-patch you send.

So I would prefer for you to merge this as is for now. Together with the
wm5102 kernel bits which just landed in -next for 5.12, this will result
in working audio at the same level as all the other Intel ASoC using
devices.

There are only so much hours in a day... I do want to add HW volume
control support to all the codecs used on Intel BYT/CHT boards but this
will be something which I need to do on a case by case bases and in
my spare time, so this will take a while.

My priority ordering for upcoming UCM work roughly is:

1. Finish testing all codecs with SOF and fix any SOF only UCM
   (or kernel) issues
2. Add hw volume control for codecs used on devices with mute LEDs
3. Add hw volume control for the most popular codecs
   (all the rt56?? codecs, which also overlaps with 2.)
4. Deal with the remaining codecs

The wm5102 firmly falls under 4. it is only used in 1 Lenovo design
and I only ended up working on it at all because I happen to have
such a Lenovo tablet and Pierre-Louis pointed out to me that there
already was a machine-driver available in some Android kernels.

Regards,

Hans


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec
  2021-02-09 19:08 [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec Hans de Goede
  2021-02-09 19:56 ` Jaroslav Kysela
@ 2021-02-11 19:16 ` Jaroslav Kysela
  1 sibling, 0 replies; 4+ messages in thread
From: Jaroslav Kysela @ 2021-02-11 19:16 UTC (permalink / raw)
  To: Hans de Goede; +Cc: alsa-devel, Pierre-Louis Bossart

Dne 09. 02. 21 v 20:08 Hans de Goede napsal(a):
> Add new UCM profile for BYT boards with a WM5102 codec. This has been
> tested with both the SST and the SOF driver on a
> Lenovo Yoga Tablet 2 1051L.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

The patch was applied to the alsa-ucm-conf repository.

					Jaroslav

-- 
Jaroslav Kysela <perex@perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-02-11 19:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-09 19:08 [PATCH alsa-ucm-conf] bytcr-wm5102: Add new UCM profile for BYT boards with a WM5102 codec Hans de Goede
2021-02-09 19:56 ` Jaroslav Kysela
2021-02-09 20:47   ` Hans de Goede
2021-02-11 19:16 ` Jaroslav Kysela

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).