[alsa-devel] User-friendly dynamic HDA pin reconfiguration

Takashi Iwai tiwai at suse.de
Wed Oct 31 17:20:59 CET 2018


On Wed, 31 Oct 2018 09:47:27 +0100,
Daniel Drake wrote:
> 
> Hi,
> 
> We are working with a new consumer All-in-One platform with HDA audio
> (Realtek codec).
> 
> Upon plugging in an audio device into one of the audio jacks, under
> Windows, a prompt appears which says: Which device did you plug in?
> And you can select from several options: Mic In / Headphone / Speaker Out
> Screenshot: https://imgur.com/a/mrUolHN
> 
> The system vendor is asking if we can implement the same under Linux.
> 
> At first glance, this sounds quite similar to what happens on other
> models when you plug in a headset under GNOME: a dialog pops up asking
> if you connected a mic, headphones, or a headset. Under the surface,
> such headset jacks seems to correspond to 2 separate HDA pins (one
> input and one output) and this dialog seems to manage which streams
> are enabled or muted.
> 
> However, this case is different. We have experimented, and the jack
> corresponds to just a single HDA pin. We can manually quirk or retask
> this pin to be an input or an output and it works in the direction
> that we choose. But that's a far cry from having a nice GUI that
> automatically comes up asking the user how the pin should be
> configured.
> 
> Is there any current solution or work in progress with the goal of
> offering this functionality?
> 
> If not, brainstorming, possible solutions could include:
> 
> 1. Taking the hdajackretask idea but making it user-accessible and
> user-friendly (currently it goes through debugfs and must be done by
> root). This would require the creation of a new kernel interface to
> expose pin reconfiguration in a nicer way, which would have to be
> plumbed through pulseaudio and GNOME.
> 
> 2. Could ALSA ignore the pin config here and provide both input and
> output streams for this pin? Then pulseaudio + GUI could pick which
> one to use - similar to the existing Headset dialog. This would still
> require some work on pulseaudio and the corresponding UI, but it might
> be a less invasive project.

Actually the generic parser allows to create a "Headphone Mic Jack
Mode" enum control in a certain condition.  This allows user to switch
the headphone jack role via the enum.  Isn't it the case?


Takashi


More information about the Alsa-devel mailing list