[alsa-devel] [PATCH] ASoC: Intel: Add Baytrail byt-max98090 machine driver
Jarkko Nikula
jarkko.nikula at linux.intel.com
Mon May 19 09:56:11 CEST 2014
Hi
On 05/16/2014 09:54 PM, Mark Brown wrote:
>> +
>> + /*
>> + * ASoC still uses legacy GPIOs so we look both GPIOs using
>> + * descriptors here, convert them to numbers and release the
>> + * acquired descriptors. Once ASoC switches over to GPIO descriptor
>> + * APIs we can pass them directly.
>> + */
> You could just add the required support to the framework... it seems
> quicker and simpler.
Looks like Mika was already proposing it :-)
>> + hp_desc = gpiod_get_index(card->dev->parent, NULL, 0);
>> + if (IS_ERR(hp_desc))
>> + return 0;
> This just eats errors, it's broken for deferred probe.
Indeed yes.
>> + snd_soc_jack_report(jack, SND_JACK_LINEOUT | SND_JACK_LINEIN,
>> + SND_JACK_HEADSET | SND_JACK_LINEOUT |
>> + SND_JACK_LINEIN);
> Why is this here?
Hmm.. I'd guess either a left over from a test code or attempt to send a
wrong initial jack state. I'll check.
>> +static int byt_max98090_remove(struct platform_device *pdev)
>> +{
>> + struct snd_soc_card *soc_card = platform_get_drvdata(pdev);
>> + struct byt_max98090_private *drv = snd_soc_card_get_drvdata(soc_card);
>> +
>> + snd_soc_jack_free_gpios(&drv->jack, ARRAY_SIZE(hs_jack_gpios),
>> + hs_jack_gpios);
>> + snd_soc_card_set_drvdata(soc_card, NULL);
>> + snd_soc_unregister_card(soc_card);
>> + platform_set_drvdata(pdev, NULL);
> Setting the data to NULL on removal is just a waste of time and is done
> by the core anyway.
>
> You're freeing these in the device level remove path but allocating them
> in the ASoC level probe path. They should be managed consistently.
Right, thanks for pointing, I was blind to see this.
Your other comments are valid to byt-rt5640 too. I'll update it also
accordingly.
--
Jarkko
More information about the Alsa-devel
mailing list