Re: [PATCH] ASoC: snd-sof-pci - add model parameter and pass it to HDA codec driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 03 Dec 2019 19:57:30 +0100,
Pierre-Louis Bossart wrote:
> 
> 
> 
> On 12/3/19 10:19 AM, Jaroslav Kysela wrote:
> > It may be useful to pass the specific model to the generic HDA codec
> > routines like the legacy HDA driver (snd-hda-intel) allows.
> > The model name "sofbus" is tricky anyway.
> 
> Humm, I must admit I have never looked at this for the legacy driver,
> and I am a bit confused on what this would be used for?
> The legacy driver uses codec->modelname but I can't figure out this
> part in hda_codec.c
> 
> if (codec->bus->modelname) {
> 	codec->modelname = kstrdup(codec->bus->modelname, GFP_KERNEL);
> 
> In theory there can be multiple codecs per bus (with different SDIs)
> so using the bus->modelname for the codec->modelname looks odd.

That's true.  However, basically the model name is specific to the
whole device, hence it's usually OK to pass to all codecs.  The
mismatched model name is just ignored (that's why the current code
with model="sofbus" works).  So you can think it a kind of quirk
lookup with a system name given explicitly by user.

> Is there an example of this being used for my education?

You can find the list in Documentation/sound/hd-audio/models.rst
and the usage in Documentation/sound/hd-audio/notes.rst.  The
documents are a bit outdated, though.


Takashi

> Also it'd make more sense to me to have this parameter in an
> intel-specific module, not the top level PCI one?
> 
> >
> > Signed-off-by: Jaroslav Kysela <perex@xxxxxxxx>
> > Cc: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
> > Cc: Mark Brown <broonie@xxxxxxxxxx>
> > ---
> >   include/sound/sof.h         | 1 +
> >   sound/soc/sof/intel/hda.c   | 2 +-
> >   sound/soc/sof/sof-pci-dev.c | 5 +++++
> >   3 files changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/sound/sof.h b/include/sound/sof.h
> > index 479101736ee0..a62686baa95d 100644
> > --- a/include/sound/sof.h
> > +++ b/include/sound/sof.h
> > @@ -25,6 +25,7 @@ struct snd_sof_pdata {
> >   	const char *drv_name;
> >   	const char *name;
> >   	const char *platform;
> > +	const char *modelname;
> >     	struct device *dev;
> >   diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
> > index 91bd88fddac7..ccb640bacc99 100644
> > --- a/sound/soc/sof/intel/hda.c
> > +++ b/sound/soc/sof/intel/hda.c
> > @@ -271,7 +271,7 @@ static int hda_init(struct snd_sof_dev *sdev)
> >   	mutex_init(&hbus->prepare_mutex);
> >   	hbus->pci = pci;
> >   	hbus->mixer_assigned = -1;
> > -	hbus->modelname = "sofbus";
> > +	hbus->modelname = sdev->pdata->modelname;
> >     	/* initialise hdac bus */
> >   	bus->addr = pci_resource_start(pci, 0);
> > diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c
> > index bbeffd932de7..c01ad85aad2a 100644
> > --- a/sound/soc/sof/sof-pci-dev.c
> > +++ b/sound/soc/sof/sof-pci-dev.c
> > @@ -34,6 +34,10 @@ static int sof_pci_debug;
> >   module_param_named(sof_pci_debug, sof_pci_debug, int, 0444);
> >   MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)");
> >   +static char *model;
> > +module_param(model, charp, 0444);
> > +MODULE_PARM_DESC(model, "Use the given HDA board model.");
> > +
> >   #define SOF_PCI_DISABLE_PM_RUNTIME BIT(0)
> >     #if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE)
> > @@ -326,6 +330,7 @@ static int sof_pci_probe(struct pci_dev *pci,
> >   	sof_pdata->desc = (struct sof_dev_desc *)pci_id->driver_data;
> >   	sof_pdata->dev = dev;
> >   	sof_pdata->platform = dev_name(dev);
> > +	sof_pdata->modelname = model;
> >     	/* alternate fw and tplg filenames ? */
> >   	if (fw_path)
> >
> 
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux