All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Bard Liao <bardliao@realtek.com>,
	Oder Chiou <oder_chiou@realtek.com>
Cc: alsa-devel@alsa-project.org, Takashi Iwai <tiwai@suse.com>
Subject: Re: [PATCH 19/19] ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks
Date: Fri, 18 May 2018 17:55:29 +0200	[thread overview]
Message-ID: <d86138d1-deb6-80bc-2654-f0ed251b4cfc@redhat.com> (raw)
In-Reply-To: <1fd841b6-1e05-2cd9-8b0e-44524503a3fa@redhat.com>

Hi Pierre-Louis,

On 10-05-18 17:48, Hans de Goede wrote:
> Hi,
> 
> On 10-05-18 17:00, Pierre-Louis Bossart wrote:
>> On 5/10/18 5:27 AM, Hans de Goede wrote:
>>> Hi,
>>>
>>> On 08-05-18 20:35, Pierre-Louis Bossart wrote:
>>>> On 5/8/18 10:36 AM, Hans de Goede wrote:
>>>>> Many X86 devices using a BYT SoC + RT5640 codec are cheap devices with
>>>>> generic DMI strings, causing snd_soc_set_dmi_name() to fail to set a
>>>>> long_name, making it impossible for userspace to have a correct UCM
>>>>> profile which only uses inputs / outputs which are actually hooked up
>>>>> on the device.
>>>>>
>>>>> Our quirks already specify which input the internal mic is connected to
>>>>> and if a single (mono) speaker is used or if the device has stereo
>>>>> speakers.
>>>>>
>>>>> This commit sets a long_name based on the quirks so that userspace can
>>>>> have UCM profiles doing the right thing based on the long_name.
>>>>
>>>> Isn't this going to be complicated to manage for UCM? Just with this patch alone, you'd need 8 UCM files to cover all the combinations. 16 if you add the 'sof-' prefix.
>>>>
>>>> seems like UCM should become more 'dynamic' and get quirk information somehow (sysfs?) to enable/disable endpoints rather than rely on name encoding to select the right profile?
>>>
>>> I agree that this is not ideal, but this is an improvement from the
>>> current state where we would need 1 UCM profile per board
>>> (assuming valid DMI data and thus a proper long-name being set),
>>> 6 profiles (dmic2 is not used anywhere sofar) is a whole lot easier
>>> to manage then 1 profile per board. So as said I believe this is
>>> a step in the right direction.
>>>
>>> And looking at the foreseeable future I simply don't see any of us
>>> having the time to implement an ideal solution for this. I would
>>> really like for end users to be able to run the latest upstream
>>> kernel + alsa-lib and have things just work, before this hardware
>>> becomes obsolete. I know that no-one having time to work on reworking
>>> UCM to make it more dynamic is not the best of arguments but it
>>> is something to take into consideration.
>>>
>>> Thinking more about this on the alsa-lib / UCM profile side we
>>> could have something like this:
>>>
>>> /usr/share/alsa/ucm/bytcr-rt5640-mono-spk-in1-mic/bytcr-rt5640-mono-spk-in1-mic.conf:
>>>
>>> SectionUseCase."HiFi" {
>>>          File "../bytcr-rt5640/Generic.conf"
>>>      File "../bytcr-rt5640/MonoSpeaker.conf"
>>>      File "../bytcr-rt5640/In1Mic.conf"
>>>          Comment "Play HiFi quality Music"
>>> }
>>>
>>> SectionDefaults [
>>>          cdev "hw:bytcrrt5640"
>>> ]
>>>
>>> The only problem I can see with that is that the "ConflictingDevice"
>>> sections for the various inputs / outputs then would refer to not
>>> present SectionDevice sections. I have not tested this suggestion yet,
>>> but I'm willing to write an alsa-lib patch to ignore non present
>>> ConflictingDevice references, to make my suggestion work.
>>>
>>> I think doing things this way, thus avoiding the need to copy and
>>> paste a whole lot of UCM code for the 6 profiles it will not be
>>> a problem to maintain 6 profiles, as we're really just maintaining
>>> 6 config snippets such as the above example and only one complete
>>> profile.
>>>
>>> Would the solution I outlined above be acceptable to you?
>>
>> The includes and disabling conflicting devices that aren't present make sense. I have another issue though: for SOF integration I already prepared a set of files, which are mostly identical to the regular ones except that the platform-side mixer controls are removed (or different) and the name of the card/device is different (sof- prefix). See on github.
> 
> Hmm, it might make sense to split the includes in platform and codec includes, so
> to pick my example again we would get:
> 
> /usr/share/alsa/ucm/bytcr-rt5640-mono-spk-in1-mic/bytcr-rt5640-mono-spk-in1-mic.conf:
> 
> SectionUseCase."HiFi" {
>      SectionVerb {
>           EnableSequence [
>               cdev "hw:bytcrrt5640"
> 
>               File "../bytcr-rt5640/EnableSeq.conf" # This contains the platform mixer settings
>               File "../rt5640/EnableSeq.conf"
>           ]
> 
>           DisableSequence [
>           ]
> 
>           Value {
>               PlaybackPCM "hw:bytcrrt5640"
>               CapturePCM "hw:bytcrrt5640"
>           }
>        }
> 
>        File "../rt5640/Headset.conf"
>        File "../rt5640/MonoSpeaker.conf"
>        File "../rt5640/In1Mic.conf"
>        Comment "Play HiFi quality Music"
> }
> 
> SectionDefaults [
>        cdev "hw:bytcrrt5640"
> ]
> 
> And then for sof you would just need to
> offer a sof-rt5640/EnableSeq.conf, or
> maybe even leave it out completely.
> 
> And we might also be able to merge the platform
> enable sequences into a generic:
> 
> bytcr/EnableSeq.conf
> 
> I think that will at least fly for bytcr-rt5640 and
> butcr-rt5651, leading us being able to remove more
> duplicated UCM config. >
> How does this sound?

I've implemented the above scheme, see:
https://github.com/jwrdegoede/alsa-lib/commits/master

This seems to work well (I still need to test a
bit more, but so far the generic and one long-name
based profile work fine) and Mark has merged the
"ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks"
patch in his for-next branch, so I plan to submit
the matching alsa-lib patches from my github for
upstream alsa-lib inclusion soon.

Regards,

Hans
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  parent reply	other threads:[~2018-05-18 15:55 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-08 15:35 [PATCH 00/19] ASoC: rt5640: Add jack-detect and button-press support Hans de Goede
2018-05-08 15:35 ` [PATCH 01/19] ASoC: rt5640: Remove is_sys_clk_from_pll, it has ordering issues Hans de Goede
2018-05-08 15:35 ` [PATCH 02/19] ASoC: rt5640: Add devicetree-bindings for dmic, jack-detect Hans de Goede
2018-05-08 15:35 ` [PATCH 03/19] ASoC: rt5640: Remove unused rt5640_platform_data Hans de Goede
2018-05-11  2:16   ` Mark Brown
2018-05-11  2:52   ` Applied "ASoC: rt5640: Remove unused rt5640_platform_data" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 04/19] ASoC: rt5640: Move checking of device-properties to component probe callback Hans de Goede
2018-05-11  2:51   ` Applied "ASoC: rt5640: Move checking of device-properties to component probe callback" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 05/19] ASoC: rt5640: Allow specifying dmic data pins through device-properties Hans de Goede
2018-05-11  2:51   ` Applied "ASoC: rt5640: Allow specifying dmic data pins through device-properties" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 06/19] ASoC: rt5640: Add jack-detect support Hans de Goede
2018-05-11  2:50   ` Applied "ASoC: rt5640: Add jack-detect support" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 07/19] ASoC: rt5640: Add button press support Hans de Goede
2018-05-11  2:50   ` Applied "ASoC: rt5640: Add button press support" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 08/19] ASoC: Intel: bytcr_rt5640: Configure PLL1 before using it Hans de Goede
2018-05-11  2:48   ` Applied "ASoC: Intel: bytcr_rt5640: Configure PLL1 before using it" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 09/19] ASoC: Intel: bytcr_rt5640: Use device-property for differential mics Hans de Goede
2018-05-11  2:48   ` Applied "ASoC: Intel: bytcr_rt5640: Use device-property for differential mics" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 10/19] ASoC: Intel: bytcr_rt5640: Use device properties for setting up dmic Hans de Goede
2018-05-11  2:25   ` Mark Brown
2018-05-08 15:35 ` [PATCH 11/19] ASoC: Intel: bytcr_rt5640: Fix Dell Venue 8 5830 Pro quirk Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Fix Dell Venue 8 5830 Pro quirk" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 12/19] ASoC: Intel: bytcr_rt5640: Enable jack detection Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Enable jack detection" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 13/19] ASoC: Intel: bytcr_rt5640: Change BYTCR default input to IN3 Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Change BYTCR default input to IN3" to the asoc tree Mark Brown
2018-05-08 15:35 ` [PATCH 14/19] ASoC: Intel: bytcr_rt5640: Unify BYTCR input defaults Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Unify BYTCR input defaults" to the asoc tree Mark Brown
2018-05-08 15:36 ` [PATCH 15/19] ASoC: Intel: bytcr_rt5640: Add default jack-detect settings Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Add default jack-detect settings" to the asoc tree Mark Brown
2018-05-08 15:36 ` [PATCH 16/19] ASoC: Intel: bytcr_rt5640: Sort DMI quirk list alphabetically Hans de Goede
2018-05-17 16:39   ` Applied "ASoC: Intel: bytcr_rt5640: Sort DMI quirk list alphabetically" to the asoc tree Mark Brown
2018-05-08 15:36 ` [PATCH 17/19] ASoC: Intel: bytcr_rt5640: Use dmi_first_match() for DMI quirk handling Hans de Goede
2018-05-17 16:38   ` Applied "ASoC: Intel: bytcr_rt5640: Use dmi_first_match() for DMI quirk handling" to the asoc tree Mark Brown
2018-05-08 15:36 ` [PATCH 18/19] ASoC: Intel: bytcr_rt5640: Add quirks for various devices Hans de Goede
2018-05-08 15:36 ` [PATCH 19/19] ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks Hans de Goede
2018-05-08 18:35   ` Pierre-Louis Bossart
2018-05-10 10:27     ` Hans de Goede
2018-05-10 15:00       ` Pierre-Louis Bossart
2018-05-10 15:48         ` Hans de Goede
2018-05-10 17:46           ` Pierre-Louis Bossart
2018-05-10 18:01             ` Hans de Goede
2018-05-12 21:21               ` Pierre-Louis Bossart
2018-05-13  7:11                 ` Takashi Iwai
2018-05-13  7:28                   ` Hans de Goede
2018-05-18 15:55           ` Hans de Goede [this message]
2018-05-18 16:21             ` Pierre-Louis Bossart
2018-05-17 16:38   ` Applied "ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks" to the asoc tree Mark Brown
2018-05-08 18:42 ` [PATCH 00/19] ASoC: rt5640: Add jack-detect and button-press support Pierre-Louis Bossart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d86138d1-deb6-80bc-2654-f0ed251b4cfc@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=bardliao@realtek.com \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=oder_chiou@realtek.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.