[PATCH alsa-ucm-conf 1/2] bytcr-rt5640: Fix 'Headphone Switch' / 'Headset Mic Switch' no longer getting set
Commit 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") moved the setting of the 'Headphone Switch' / 'Headset Mic Switch' into "If.hp" resp "If.hsmic" blocks. But instead of making them part of the True {} block inside that If, the statements where added add the top-level of the If {} block where they are no-ops.
Move them to inside the True blocks so that these Switches again get properly turned on/off. This fixes the Headphones and Headset-mic no longer working on bytcr-rt5640 devices.
Cc: Dmitry Osipenko digetx@gmail.com Fixes: 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") Signed-off-by: Hans de Goede hdegoede@redhat.com --- ucm2/bytcr-rt5640/HiFi.conf | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/ucm2/bytcr-rt5640/HiFi.conf b/ucm2/bytcr-rt5640/HiFi.conf index a5b47df..08127e0 100644 --- a/ucm2/bytcr-rt5640/HiFi.conf +++ b/ucm2/bytcr-rt5640/HiFi.conf @@ -100,16 +100,18 @@ If.mono {
If.hp { Condition { Type String Empty "" } - True.Include.hs.File "/codecs/rt5640/HeadPhones.conf" + True { + Include.hs.File "/codecs/rt5640/HeadPhones.conf"
- SectionDevice."Headphones" { - EnableSequence [ - cset "name='Headphone Switch' on" - ] + SectionDevice."Headphones" { + EnableSequence [ + cset "name='Headphone Switch' on" + ]
- DisableSequence [ - cset "name='Headphone Switch' off" - ] + DisableSequence [ + cset "name='Headphone Switch' off" + ] + } } }
@@ -178,15 +180,17 @@ If.in3 {
If.hsmic { Condition { Type String Empty "" } - True.Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" + True { + Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf"
- SectionDevice."Headset" { - EnableSequence [ - cset "name='Headset Mic Switch' on" - ] + SectionDevice."Headset" { + EnableSequence [ + cset "name='Headset Mic Switch' on" + ]
- DisableSequence [ - cset "name='Headset Mic Switch' off" - ] + DisableSequence [ + cset "name='Headset Mic Switch' off" + ] + } } }
Now that we rename the mutes from their weird 'Channel Switch' postfix to the standard 'Playback Switch' postfix we end up having 2 Switches for the 'Speaker' resp. 'Headphones' volume controls, with 1 of the two getting ignored by the alsa-lib mixer code because it is duplicate.
This is caused by the bytcr-rt5640 machine driver adding DAPM PIN Switches which are named 'Headphone Switch' resp. 'Speaker Switch', rename these to 'Headphone Output Switch' / 'Speaker Output Switch' so that they get seen as separate controls by the alsa-lib mixer code.
Signed-off-by: Hans de Goede hdegoede@redhat.com --- ucm2/codecs/rt5640/init.conf | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/ucm2/codecs/rt5640/init.conf b/ucm2/codecs/rt5640/init.conf index 38baee4..0756b4a 100644 --- a/ucm2/codecs/rt5640/init.conf +++ b/ucm2/codecs/rt5640/init.conf @@ -5,8 +5,13 @@ LibraryConfig.remap.Config { "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'" }
18.07.2021 20:57, Hans de Goede пишет:
Commit 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") moved the setting of the 'Headphone Switch' / 'Headset Mic Switch' into "If.hp" resp "If.hsmic" blocks. But instead of making them part of the True {} block inside that If, the statements where added add the top-level of the If {} block where they are no-ops.
Move them to inside the True blocks so that these Switches again get properly turned on/off. This fixes the Headphones and Headset-mic no longer working on bytcr-rt5640 devices.
Cc: Dmitry Osipenko digetx@gmail.com Fixes: 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") Signed-off-by: Hans de Goede hdegoede@redhat.com
ucm2/bytcr-rt5640/HiFi.conf | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-)
Hi,
I don't see this patch in upstream alsa-ucm, is it still actual?
Hi,
On 9/28/21 10:15 PM, Dmitry Osipenko wrote:
18.07.2021 20:57, Hans de Goede пишет:
Commit 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") moved the setting of the 'Headphone Switch' / 'Headset Mic Switch' into "If.hp" resp "If.hsmic" blocks. But instead of making them part of the True {} block inside that If, the statements where added add the top-level of the If {} block where they are no-ops.
Move them to inside the True blocks so that these Switches again get properly turned on/off. This fixes the Headphones and Headset-mic no longer working on bytcr-rt5640 devices.
Cc: Dmitry Osipenko digetx@gmail.com Fixes: 446d0a71b47f ("codecs/rt5640: Move out BayTrail-specific pin switches") Signed-off-by: Hans de Goede hdegoede@redhat.com
ucm2/bytcr-rt5640/HiFi.conf | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-)
Hi,
I don't see this patch in upstream alsa-ucm, is it still actual?
Yes this patch series is still actual. I also have 3 other patches pending where I was waiting for the mathcing kernel parts to land first. Those have landed now, so I'll send out those now too, including a resend of these 2.
Regards,
Hans
participants (2)
-
Dmitry Osipenko
-
Hans de Goede