[alsa-devel] [PATCH 01/12] ALSA: hdac: Add codec helper library

Subhransu S. Prusty subhransu.s.prusty at intel.com
Tue Aug 30 09:46:10 CEST 2016


On Mon, Aug 29, 2016 at 03:43:27PM +0200, Takashi Iwai wrote:
> On Mon, 29 Aug 2016 15:33:57 +0200,
> Subhransu S. Prusty wrote:
> > 
> > On Mon, Aug 29, 2016 at 03:28:35PM +0200, Takashi Iwai wrote:
> > > On Mon, 29 Aug 2016 15:17:50 +0200,
> > > Subhransu S. Prusty wrote:
> > > > 
> > > > On Mon, Aug 29, 2016 at 02:55:41PM +0200, Takashi Iwai wrote:
> > > > > On Mon, 29 Aug 2016 14:47:33 +0200,
> > > > > Subhransu S. Prusty wrote:
> > > > > > 
> > > > > > On Mon, Aug 29, 2016 at 10:41:22AM +0200, Takashi Iwai wrote:
> > > > > > > On Mon, 29 Aug 2016 08:23:15 +0200,
> > > > > > > Subhransu S. Prusty wrote:
> > > > > > > > 
> > > > > > > > Add hdac helpers to enumerate the HDA widgets and fill connection
> > > > > > > > lists for each.
> > > > > > > > 
> > > > > > > > Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty at intel.com>
> > > > > > > > Signed-off-by: Vinod Koul <vinod.koul at intel.com>
> > > > > > > > ---
> > > > > > > >  include/sound/hdaudio.h    |   1 +
> > > > > > > >  sound/hda/ext/Makefile     |   3 +-
> > > > > > > >  sound/hda/ext/hdac_codec.c | 182 +++++++++++++++++++++++++++++++++++++++++++++
> > > > > > > >  sound/hda/ext/hdac_codec.h |  53 +++++++++++++
> > > > > > > >  4 files changed, 238 insertions(+), 1 deletion(-)
> > > > > > > >  create mode 100644 sound/hda/ext/hdac_codec.c
> > > > > > > >  create mode 100644 sound/hda/ext/hdac_codec.h
> > > > > > > > 
> > > > > > > > diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
> > > > > > > > index 93e63c5..79502dc 100644
> > > > > > > > --- a/include/sound/hdaudio.h
> > > > > > > > +++ b/include/sound/hdaudio.h
> > > > > > > > @@ -71,6 +71,7 @@ struct hdac_device {
> > > > > > > >  			 unsigned int flags, unsigned int *res);
> > > > > > > >  
> > > > > > > >  	/* widgets */
> > > > > > > > +	struct list_head widget_list;
> > > > > > > >  	unsigned int num_nodes;
> > > > > > > >  	hda_nid_t start_nid, end_nid;
> > > > > > > 
> > > > > > > Any reason to add this to hdac_device although it's used only by
> > > > > > > hda/ext?
> > > > > > 
> > > > > > Hi Takashi,
> > > > > > 
> > > > > > Added this in the hdac_device, as this looked to be the more suitable data
> > > > > > structure for the widget_list and is more specific to the hdac device. 
> > > > > 
> > > > > Doesn't struct hdac_ext_device fit better?
> > > > 
> > > > The snd_hdac_parse_widgets helper defined in hdac_codec.c populates members
> > > > of hdac_device structure like num_nodes, start_nid etc. Even though
> > > > widget_list is used in hda/ext, this looked generic to be added in
> > > > hdac_device.
> > > 
> > > If it's used only in hda/ext, why it's generic, i.e. putting to the
> > > place used commonly for legacy drivers?  I don't follow this logic...
> > > 
> > > > I am inclined to add these helpers in hdac_device.c or may be
> > > > move hdac_codec.c to sound/hda if you are ok.
> > > 
> > > Even if we put it in hdac_device, initializing in another function is
> > > wrong.  It must be initialized in snd_hdac_device_init(), if it's a
> > > part of the common struct.
> > 
> > Ok, got it. Will move this to hdac_ext_device.
> 
> Don't get me wrong: I'd like to understand why it's put to
> hdac_device.  If this makes the code easier / simpler, it's a good
> justification.  Without the explanation, placing to the relevant
> struct makes more sense.  That's my point.

I understand what you meant to convey.

In this patch a generic widget structure is created to abstract the
properties of HDA widgets. These widgets are added to the widget_list member
as n when these are enumerated. I am unsure whether this hda_codec_widget
struture and the widget_list can be used through a common library by both
legacy and ASoC drivers. May not be now but in future. So adding this to
hdac_ext_device for now.

Regards
Subhransu

-- 


More information about the Alsa-devel mailing list