On 11/17/20 11:18 AM, Mark Brown wrote:
On Thu, Nov 12, 2020 at 04:38:17PM -0600, Pierre-Louis Bossart wrote:
+ /* set pm ops */
+ if (sof_parent)
+ pdev->dev.driver->pm = &snd_soc_pm_ops;
This might need revisiting in future since we should be able to have the
driver PM ops be static const and hence unwritable but that's more of a
robustness thing for the time being given that only a limited set of
systems have this hardware and we know that there can't be multiple
devices.
FWIW it's been done in other places, e.g.
drivers/net/wireless/ti/wlcore/main.c: wl->dev->driver->pm =
&wlcore_pm_ops;
drivers/net/wireless/ti/wlcore/main.c: wl->dev->driver->pm = NULL;
The alternative would be to add an .ops whose callbacks conditionally
call snd_soc_suspend/resume/poweroff. Not much cleaner, is it?
The check on the 'sof_parent' was not present in initial versions, I had
an additional 'machine parameter' set by the SOF driver. But early
reviewers suggested a check on the parent name was enough. It achieves
the same thing in the end, make sure that we don't change anything for
power management when the Atom/SST driver is used.