diff --git a/soc/soundwire.c b/soc/soundwire.c index 51aa43ab2776..fff5c1546145 100644 --- a/soc/soundwire.c +++ b/soc/soundwire.c @@ -245,7 +245,7 @@ int swr_remove_from_group(struct swr_device *dev, u8 dev_num) if (!dev->group_id) return 0; - if (master->gr_sid == dev_num) + if (master->gr_sid != dev_num) return 0; if (master->remove_from_group && master->remove_from_group(master)) diff --git a/soc/swr-wcd-ctrl.c b/soc/swr-wcd-ctrl.c index 729eb3850b2d..ecca5f699fde 100644 --- a/soc/swr-wcd-ctrl.c +++ b/soc/swr-wcd-ctrl.c @@ -1790,6 +1790,8 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data) (swrm->state == SWR_MSTR_UP)) { dev_dbg(swrm->dev, "%s: SWR master is already UP: %d\n", __func__, swrm->state); + list_for_each_entry(swr_dev, &mstr->devices, dev_list) + swr_reset_device(swr_dev); } else { pm_runtime_mark_last_busy(&pdev->dev); mutex_unlock(&swrm->reslock);