diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c index 8859302876e0..c4ac918426ee 100644 --- a/soc/swr-mstr-ctrl.c +++ b/soc/swr-mstr-ctrl.c @@ -1031,7 +1031,7 @@ static void swrm_disable_ports(struct swr_master *master, bank)); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x\n", __func__, i, - (SWRM_DP_PORT_CTRL_BANK(i + 1, bank))); + (SWRM_DP_PORT_CTRL_BANK((i + 1), bank))); } value = ((mport->req_ch) << SWRM_DP_PORT_CTRL_EN_CHAN_SHFT); @@ -1042,11 +1042,11 @@ static void swrm_disable_ports(struct swr_master *master, value |= mport->sinterval; swr_master_write(swrm, - SWRM_DP_PORT_CTRL_BANK(i+1, bank), + SWRM_DP_PORT_CTRL_BANK((i + 1), bank), value); dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, - (SWRM_DP_PORT_CTRL_BANK(i+1, bank)), value); + (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->stream_type == SWR_PCM) swrm_pcm_port_config(swrm, i, mport->dir, false); @@ -1203,37 +1203,37 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank) value |= mport->sinterval; - reg[len] = SWRM_DP_PORT_CTRL_BANK(i + 1, bank); + reg[len] = SWRM_DP_PORT_CTRL_BANK((i + 1), bank); val[len++] = value; dev_dbg(swrm->dev, "%s: mport :%d, reg: 0x%x, val: 0x%x\n", __func__, i, - (SWRM_DP_PORT_CTRL_BANK(i + 1, bank)), value); + (SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value); if (mport->lane_ctrl != SWR_INVALID_PARAM) { - reg[len] = SWRM_DP_PORT_CTRL_2_BANK(i + 1, bank); + reg[len] = SWRM_DP_PORT_CTRL_2_BANK((i + 1), bank); val[len++] = mport->lane_ctrl; } if (mport->word_length != SWR_INVALID_PARAM) { - reg[len] = SWRM_DP_BLOCK_CTRL_1(i + 1); + reg[len] = SWRM_DP_BLOCK_CTRL_1((i + 1)); val[len++] = mport->word_length; } if (mport->blk_grp_count != SWR_INVALID_PARAM) { - reg[len] = SWRM_DP_BLOCK_CTRL2_BANK(i + 1, bank); + reg[len] = SWRM_DP_BLOCK_CTRL2_BANK((i + 1), bank); val[len++] = mport->blk_grp_count; } if (mport->hstart != SWR_INVALID_PARAM && mport->hstop != SWR_INVALID_PARAM) { - reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); + reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (mport->hstop << 4) | mport->hstart; val[len++] = hparams; } else { - reg[len] = SWRM_DP_PORT_HCTRL_BANK(i + 1, bank); + reg[len] = SWRM_DP_PORT_HCTRL_BANK((i + 1), bank); hparams = (SWR_HSTOP_MAX_VAL << 4) | SWR_HSTART_MIN_VAL; val[len++] = hparams; } if (mport->blk_pack_mode != SWR_INVALID_PARAM) { - reg[len] = SWRM_DP_BLOCK_CTRL3_BANK(i + 1, bank); + reg[len] = SWRM_DP_BLOCK_CTRL3_BANK((i + 1), bank); val[len++] = mport->blk_pack_mode; } mport->ch_en = mport->req_ch; @@ -2585,6 +2585,7 @@ static int swrm_runtime_resume(struct device *dev) bool aud_core_err = false; struct swr_master *mstr = &swrm->master; struct swr_device *swr_dev; + u32 temp = 0; dev_dbg(dev, "%s: pm_runtime: resume, state:%d\n", __func__, swrm->state); @@ -2664,6 +2665,11 @@ static int swrm_runtime_resume(struct device *dev) mutex_lock(&swrm->reslock); } } else { + if (swrm->swrm_hctl_reg) { + temp = ioread32(swrm->swrm_hctl_reg); + temp &= 0xFFFFFFFD; + iowrite32(temp, swrm->swrm_hctl_reg); + } /*wake up from clock stop*/ swr_master_write(swrm, SWRM_MCP_BUS_CTRL, 0x2); /* clear and enable bus clash interrupt */