[alsa-devel] [PATCH v6 1/3] ALSA: hdac_ext: add extended HDA bus

Takashi Iwai tiwai at suse.de
Mon Jun 8 17:37:03 CEST 2015


At Mon, 8 Jun 2015 20:54:23 +0530,
Vinod Koul wrote:
> 
> On Mon, Jun 08, 2015 at 03:40:08PM +0530, Vinod Koul wrote:
> > On Mon, Jun 08, 2015 at 11:03:12AM +0200, Takashi Iwai wrote:
> > > One thing forgot...
> > > 
> > > At Thu,  4 Jun 2015 15:23:20 +0530,
> > > Vinod Koul wrote:
> > > > 
> > > > +/**
> > > > + * snd_hdac_ext_device_init - initialize the HDA extended codec base device
> > > > + * @sbus: hdac extended bus to attach to
> > > > + * @addr: codec address
> > > > + *
> > > > + * Returns zero for success or a negative error code.
> > > > + */
> > > > +int snd_hdac_ext_bus_device_init(struct hdac_ext_bus *sbus, int addr)
> > > > +{
> > > > +	struct hdac_device *hdev = NULL;
> > > > +	struct hdac_bus *bus = hdac_bus(sbus);
> > > > +	char name[15];
> > > > +	int ret;
> > > > +
> > > > +	hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
> > > > +	if (!hdev)
> > > > +		return -ENOMEM;
> > > > +
> > > > +	snprintf(name, sizeof(name), "hda-codec#%03x", addr);
> > > > +
> > > > +	ret  = snd_hdac_device_init(hdev, bus, name, addr);
> > > 
> > > The device name must be unique to the whole system.  Using only the
> > > codec address as an id would conflict if there are multiple cards.
> > > The legacy HDA device consists of "hdaudioC%dD%d" indicating both the
> > > card number and the codec address, for example.
> > Sorry my bad, you did comment on it before as well. I will fix it now, by
> > adding card name here.
> Okay and we have an issue here :(, We actually dont know the card number
> here and card number will be created after this enumeration is complete
> and we register the DAI with ASoC and then ASoC would create card later.
> 
> So how do we solve this?

Instead of the card number, assign some unique index (either a simple
static counter or use idr) to each bus object and use it instead of
the card number.  After all, we just need a unique mapping.

Alternatively, you may rename via dev_set_name() just before
registration.  But, of course, this is inconsistent in some areas,
e.g. dev_err() shows differently before and after registration.


Takashi


More information about the Alsa-devel mailing list