Loading drivers/soundwire/swr-wcd-ctrl.c +28 −1 Original line number Diff line number Diff line Loading @@ -1209,6 +1209,33 @@ exit: } #endif /* CONFIG_PM_RUNTIME */ static int swrm_device_down(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev); int ret = 0; struct swr_master *mstr = &swrm->master; struct swr_device *swr_dev; dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state); mutex_lock(&swrm->reslock); if ((swrm->state == SWR_MSTR_RESUME) || (swrm->state == SWR_MSTR_UP)) { list_for_each_entry(swr_dev, &mstr->devices, dev_list) { ret = swr_device_down(swr_dev); if (ret) dev_err(dev, "%s: failed to shutdown swr dev %d\n", __func__, swr_dev->dev_num); } dev_dbg(dev, "%s: Shutting down SWRM\n", __func__); pm_runtime_set_suspended(dev); swrm_clk_request(swrm, false); } mutex_unlock(&swrm->reslock); return ret; } /** * swrm_wcd_notify - parent device can notify to soundwire master through * this function Loading Loading @@ -1251,7 +1278,7 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data) dev_dbg(swrm->dev, "%s: SWR master is already Down: %d\n", __func__, swrm->state); else swrm_runtime_suspend(&pdev->dev); swrm_device_down(&pdev->dev); mutex_unlock(&swrm->mlock); break; case SWR_DEVICE_UP: Loading Loading
drivers/soundwire/swr-wcd-ctrl.c +28 −1 Original line number Diff line number Diff line Loading @@ -1209,6 +1209,33 @@ exit: } #endif /* CONFIG_PM_RUNTIME */ static int swrm_device_down(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev); int ret = 0; struct swr_master *mstr = &swrm->master; struct swr_device *swr_dev; dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state); mutex_lock(&swrm->reslock); if ((swrm->state == SWR_MSTR_RESUME) || (swrm->state == SWR_MSTR_UP)) { list_for_each_entry(swr_dev, &mstr->devices, dev_list) { ret = swr_device_down(swr_dev); if (ret) dev_err(dev, "%s: failed to shutdown swr dev %d\n", __func__, swr_dev->dev_num); } dev_dbg(dev, "%s: Shutting down SWRM\n", __func__); pm_runtime_set_suspended(dev); swrm_clk_request(swrm, false); } mutex_unlock(&swrm->reslock); return ret; } /** * swrm_wcd_notify - parent device can notify to soundwire master through * this function Loading Loading @@ -1251,7 +1278,7 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data) dev_dbg(swrm->dev, "%s: SWR master is already Down: %d\n", __func__, swrm->state); else swrm_runtime_suspend(&pdev->dev); swrm_device_down(&pdev->dev); mutex_unlock(&swrm->mlock); break; case SWR_DEVICE_UP: Loading