Re: [PATCH] ASoC: max98357a: release GPIO when component removing

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

 



> On Tue, May 07, 2019 at 01:11:40PM +0800, Tzung-Bi Shih wrote:
>
> > +static void max98357a_component_remove(struct snd_soc_component *component)
> > +{
> > +     struct max98357a_priv *max98357a =
> > +                     snd_soc_component_get_drvdata(component);
> > +
> > +     if (max98357a->sdmode)
> > +             devm_gpiod_put(component->dev, max98357a->sdmode);
> > +}
>
> This is an obvious mess, if you're explicitly freeing devm_ allocated
> resources in the common case something is going wrong.  Just move the
> initial allocation to the device level probe so devm can do what it's
> supposed to.

Move the GPIO allocation to max98357a_platform_probe() should work but
I am wondering the difference between device's probe() and component's
probe().  What do we expect to do in component's probe()?
As component's probe() is later than device's, I thought we tend to
put resource allocation in component's probe() for reasons:
- to speed up the booting *maybe* a little
- to allocate resources when really need them

I am using devm_gpiod_put() instead of gpiod_put() so that I suppose
devm_ should take care of the rest of cleanup.  Do you think this is
still a mess?
_______________________________________________
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