The hierarchy of soundwire devices is platform device -> M device -> S
device. A S device is physically attached on the platform device. So the
platform device should be resumed when a S device is resumed. As the
bridge of platform device and S device, we have to implement runtime pm
on M driver. We have set runtime pm ops in M driver already, but still
need to enable runtime pm.

Signed-off-by: Bard Liao <[email protected]>

---

Changes in v2:
 - Edit the commit message to explain why we need the patch. 
---
 drivers/soundwire/master.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/soundwire/master.c b/drivers/soundwire/master.c
index 5f0b2189defe..3488bb824e84 100644
--- a/drivers/soundwire/master.c
+++ b/drivers/soundwire/master.c
@@ -154,6 +154,7 @@ int sdw_master_device_add(struct sdw_bus *bus, struct 
device *parent,
        bus->dev = &md->dev;
        bus->md = md;
 
+       pm_runtime_enable(&bus->md->dev);
 device_register_err:
        return ret;
 }
@@ -166,6 +167,7 @@ int sdw_master_device_add(struct sdw_bus *bus, struct 
device *parent,
  */
 int sdw_master_device_del(struct sdw_bus *bus)
 {
+       pm_runtime_disable(&bus->md->dev);
        device_unregister(bus->dev);
 
        return 0;
-- 
2.17.1

Reply via email to