[alsa-devel] [PATCH 7/7] ALSA: hda/tegra: add driver flag for runtime PM

Takashi Iwai tiwai at suse.de
Tue Jan 22 07:31:57 CET 2019


On Tue, 22 Jan 2019 03:04:21 +0100,
Sameer Pujar wrote:
> 
> 
> On 1/22/2019 3:01 AM, Takashi Iwai wrote:
> > On Mon, 21 Jan 2019 18:41:37 +0100,
> > Sameer Pujar wrote:
> >> AZX_DCAPS_PM_RUNTIME flag is added to indicate support for runtime PM.
> >> azx_has_pm_runtime() can be called to check if above is enabled. The
> >> flag is put under CONFIG_PM check.
> >>
> >> Signed-off-by: Sameer Pujar <spujar at nvidia.com>
> >> Reviewed-by: Ravindra Lokhande <rlokhande at nvidia.com>
> >> Reviewed-by: Mohan Kumar D <mkumard at nvidia.com>
> > This can be more simply done in hda_controller.h.  Namely, a change
> > like:
> >
> > --- a/sound/pci/hda/hda_controller.h
> > +++ b/sound/pci/hda/hda_controller.h
> > @@ -49,7 +49,11 @@
> >   #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23)	/* BDLE in 4k boundary */
> >   /* 24 unused */
> >   #define AZX_DCAPS_COUNT_LPIB_DELAY  (1 << 25)	/* Take LPIB as delay */
> > +#ifdef CONFIG_PM
> >   #define AZX_DCAPS_PM_RUNTIME	(1 << 26)	/* runtime PM support */
> > +#else
> > +#define AZX_DCAPS_PM_RUNTIME	0		/* N/A */
> > +#endif
> >   /* 27 unused */
> >   #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28)	/* CORBRP clears itself after reset */
> >   #define AZX_DCAPS_NO_MSI64      (1 << 29)	/* Stick to 32-bit MSIs */
> 
> In one of the patches in the series, I am using azx_has_pm_runtime()
> to forbid runtime PM calls.
> I can use above as you suggested. Along with this, I would need to
> populate chip->driver_caps with
> above flag. Something like below,
> 
> --- a/sound/pci/hda/hda_tegra.c
> +++ b/sound/pci/hda/hda_tegra.c
> @@ -521,7 +521,8 @@ MODULE_DEVICE_TABLE(of, hda_tegra_match);
> 
>  static int hda_tegra_probe(struct platform_device *pdev)
>  {
> -       unsigned int driver_flags = AZX_DCAPS_CORBRP_SELF_CLEAR;
> +       unsigned int driver_flags = AZX_DCAPS_CORBRP_SELF_CLEAR |
> +                                   AZX_DCAPS_PM_RUNTIME;
>         struct snd_card *card;
>         struct azx *chip;
>         struct hda_tegra *hda;

I see.  On the second thought, the ifdef CONFIG_PM is likely
superfluous.  The whole pm_runtime_*() calls become no-ops without
CONFIG_PM, so the compiler would optimize in anyway.

That said, I'd drop ugly ifdef but unconditionally add
AZX_DCAPS_PM_RUNTIME in an oneliner above.


thanks,

Takashi


More information about the Alsa-devel mailing list