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.