瀏覽代碼

soc: swr-mstr: Fix port collision during wsa playback

Fix block pack mode parameter in wsa frame params to
to get proper frame allocation avoiding port collision
between DAC port and SMART BOOST port.

Change-Id: I3e552f189a67661d63a6cd0affc1cb233b53bda7
Signed-off-by: Ramprasad Katkam <[email protected]>
Ramprasad Katkam 6 年之前
父節點
當前提交
2a0996bc17
共有 2 個文件被更改,包括 8 次插入5 次删除
  1. 6 3
      soc/swr-mstr-ctrl.c
  2. 2 2
      soc/swrm_port_config.h

+ 6 - 3
soc/swr-mstr-ctrl.c

@@ -843,7 +843,8 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank)
 						port_req->dev_num, 0x00,
 						SWRS_DP_BLOCK_CONTROL_1(slv_id));
 			}
-			if (mport->blk_pack_mode != SWR_INVALID_PARAM) {
+			if (mport->blk_pack_mode != SWR_INVALID_PARAM
+					&& swrm->master_id != MASTER_ID_WSA) {
 				reg[len] = SWRM_CMD_FIFO_WR_CMD;
 				val[len++] =
 					SWR_REG_VAL_PACK(mport->blk_pack_mode,
@@ -871,8 +872,10 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank)
 		}
 		value = ((mport->req_ch)
 				<< SWRM_DP_PORT_CTRL_EN_CHAN_SHFT);
-		value |= ((mport->offset2)
-				<< SWRM_DP_PORT_CTRL_OFFSET2_SHFT);
+
+		if (mport->offset2 != SWR_INVALID_PARAM)
+			value |= ((mport->offset2)
+					<< SWRM_DP_PORT_CTRL_OFFSET2_SHFT);
 		value |= ((mport->offset1)
 				<< SWRM_DP_PORT_CTRL_OFFSET1_SHFT);
 		value |= mport->sinterval;

+ 2 - 2
soc/swrm_port_config.h

@@ -24,10 +24,10 @@
 struct port_params wsa_frame_superset[SWR_MSTR_PORT_LEN] = {
 	{7,  1,  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 	{31, 2,  0,    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-	{63, 12, 31,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+	{63, 12, 31,   0xFF, 0xFF, 0xFF, 0x1, 0xFF, 0xFF},
 	{7,  6,  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 	{31, 18, 0,    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-	{63, 13, 31,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+	{63, 13, 31,   0xFF, 0xFF, 0xFF, 0x1, 0xFF, 0xFF},
 	{15, 7,  0,    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 	{15, 10, 0,    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 };