[alsa-devel] [PATCH v9 0/7] ALSA: jack: Refactoring for jack kctls

Takashi Iwai tiwai at suse.de
Thu Apr 23 14:47:21 CEST 2015


At Thu, 23 Apr 2015 10:32:39 +0800,
Jie Yang wrote:
> 
> Currently only hda will create kctls for hda jacks, for asoc, people
> may need create jack kctls in specific driver.
> 
> Here we are introducing kctls for each jack, by creating kctls and add
> them to jack controls list (considering exist of combo jack). At the
> same time, we will report events for each control in the list.
> 
> With this new implementation, both HDA and soc jack kctls works fine,
> they are compatible for old HDA jack kctls, too.
> 
> For soc,
> a. snd_jack_new() with NULL jack_kctl;
> b. for each pin, call snd_jack_add_kctls() to add one kctl(it will
> call snd_ctl_add() to add kctl to card);
> 
> For HDA,
> With snd_jack_new(), we can use phantom_jack = true for phantom jack
> creating, and the jack kctl pointer will be filled with the new
> created kcontrol.
> 
> Changes in v9:
> 1. move struct snd_jack_kctl definition to jack.c, to hides the
> internal implementation details;
> 2. some small code fixing;
> 3. update documentation file.
> 
> Changes in v8:
> 1. remove snd_jack_kctl from HDA part, change snd_jack_new param
> to use bool for creating kcontrol at jack creating stage;
> 2. create jack for phantom jack, with no input device;
> 3. remove HDA jack get_unique_index() and index related code.
> 
> Changes in v7:
> 1. move name generating and index getting part into ctljack.c;
> 2. remove exposing private_data and destructor to hda, then jack
> core can handle kctls by itself totally.
> 3. some small code fixing.
> 
> Changes in v6:
> 1. refine kctl name generating function;
> 2. integrate HDA jack kctl more deeply, support phantom jack in
> snd_jack_new();
> 3. add documentation for Jack kcontrols to explain how to use it.
> 
> Changes in v5:
> 1. remove SND_KCTL_JACK config item, we need jack kctl once
> CONFIG_SND_JACK is selected.
> 
> Changes in v4:
> 1. use snd_ctl_find_id() to get avaliable index;
> 2. add initial kctl for snd_jack_new(compatible for HDA);
> 3. add struct snd_jack_kctl * field to struct hda_jack_tbl;
> 4. new kctls for soc jack during jack pins creating.
> 5. add a patch to remove exporting snd_kctl_jack_new().
> 
> Changes in v3:
> 1. replace bit index with bit mask in jack_kctl;
> 2. add exception for SND_JACK_HEADSET and SND_JACK_AVOUT, only create
> one jack kctl for these two combo jacks, respectively.
> 3. add NULL check, mem kfree, and fix some potential risk.
> 
> Change in v2:
> 1. define jack_kctl struct, and put jack kctl related stuff there;
> 2. add a patch to remove the existing controls for HDA jack.
> 
> Jie Yang (7):
>   ALSA: jack: implement kctl creating for jack device
>   ALSA: Jack: handle jack embedded kcontrol creating within ctljack
>   ALSA: jack: extend snd_jack_new to support phantom jack
>   ALSA: hda - Update to use the new jack kctls method
>   ASoC: jack: create kctls according to jack pins info
>   ALSA: jack: remove exporting ctljack functions
>   ALSA: Docs: Add documentation for Jack kcontrols

Thanks, now the series look almost good, but still a few things to be
fixed:

- Please rebase it on top of for-linus branch (or Linus tree).
  Some patches can't be applied cleanly due to recent HD-audio
  reworks.

- Fix typos and syntax errors in comments and descriptions.
  A spell checker is your friend.

- The kerneldoc comment doesn't have to be applied to static
  functions.  Drop an asterisk from "/**" from snd_jack_kctl_new().

- For ASoC change, I'd like to have an ack from Mark.
  It's a trivial addition but I'm not sure whether he is satisfied
  with this new style.


Takashi


More information about the Alsa-devel mailing list