soundwire: bus: test read status
In the existing code we may read a negative error value but still mask it and write it back. Make sure all reads are tested and errors not propagated further. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://lore.kernel.org/r/20210302091122.13952-3-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
Родитель
0196b52b83
Коммит
665cf215bc
|
@ -875,8 +875,12 @@ static int sdw_slave_clk_stop_prepare(struct sdw_slave *slave,
|
|||
if (wake_en)
|
||||
val |= SDW_SCP_SYSTEMCTRL_WAKE_UP_EN;
|
||||
} else {
|
||||
val = sdw_read_no_pm(slave, SDW_SCP_SYSTEMCTRL);
|
||||
|
||||
ret = sdw_read_no_pm(slave, SDW_SCP_SYSTEMCTRL);
|
||||
if (ret < 0) {
|
||||
dev_err(&slave->dev, "SDW_SCP_SYSTEMCTRL read failed:%d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
val = ret;
|
||||
val &= ~(SDW_SCP_SYSTEMCTRL_CLK_STP_PREP);
|
||||
}
|
||||
|
||||
|
@ -895,8 +899,12 @@ static int sdw_bus_wait_for_clk_prep_deprep(struct sdw_bus *bus, u16 dev_num)
|
|||
int val;
|
||||
|
||||
do {
|
||||
val = sdw_bread_no_pm(bus, dev_num, SDW_SCP_STAT) &
|
||||
SDW_SCP_STAT_CLK_STP_NF;
|
||||
val = sdw_bread_no_pm(bus, dev_num, SDW_SCP_STAT);
|
||||
if (val < 0) {
|
||||
dev_err(bus->dev, "SDW_SCP_STAT bread failed:%d\n", val);
|
||||
return val;
|
||||
}
|
||||
val &= SDW_SCP_STAT_CLK_STP_NF;
|
||||
if (!val) {
|
||||
dev_info(bus->dev, "clock stop prep/de-prep done slave:%d",
|
||||
dev_num);
|
||||
|
|
Загрузка…
Ссылка в новой задаче