Browse Source

Merge "soc: soundwire: Update sample interval configuration"

qctecmdr 5 years ago
parent
commit
ace3a85d2f
4 changed files with 10 additions and 7 deletions
  1. 1 1
      include/soc/soundwire.h
  2. 2 2
      include/soc/swr-common.h
  3. 6 3
      soc/swr-mstr-ctrl.c
  4. 1 1
      soc/swr-mstr-ctrl.h

+ 1 - 1
include/soc/soundwire.h

@@ -106,7 +106,7 @@ struct swr_port_info {
 	u8 slave_port_id;
 	u8 offset1;
 	u8 offset2;
-	u8 sinterval;
+	u16 sinterval;
 	struct list_head list;
 	u8 master_port_id;
 	u8 hstart;

+ 2 - 2
include/soc/swr-common.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * Copyright (c) 2015, 2017-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015, 2017-2020 The Linux Foundation. All rights reserved.
  */
 
 #ifndef _LINUX_SWR_COMMON_H
@@ -17,7 +17,7 @@ enum {
 };
 
 struct port_params {
-	u8 si;
+	u16 si;
 	u8 off1;
 	u8 off2;
 	u8 hstart;/* head start */

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

@@ -1140,7 +1140,7 @@ static void swrm_disable_ports(struct swr_master *master,
 			(SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value);
 
 		if (mport->stream_type == SWR_PCM)
-			swrm_pcm_port_config(swrm, i, mport->dir, false);
+			swrm_pcm_port_config(swrm, (i + 1), mport->dir, false);
 	}
 }
 
@@ -1213,7 +1213,7 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank)
 			continue;
 
 		if (mport->stream_type == SWR_PCM)
-			swrm_pcm_port_config(swrm, i, mport->dir, true);
+			swrm_pcm_port_config(swrm, (i + 1), mport->dir, true);
 
 		list_for_each_entry(port_req, &mport->port_req_list, list) {
 			slv_id = port_req->slave_port_id;
@@ -1303,7 +1303,7 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank)
 					<< SWRM_DP_PORT_CTRL_OFFSET2_SHFT);
 		value |= ((mport->offset1)
 				<< SWRM_DP_PORT_CTRL_OFFSET1_SHFT);
-		value |= mport->sinterval;
+		value |= (mport->sinterval & 0xFF);
 
 
 		reg[len] = SWRM_DP_PORT_CTRL_BANK((i + 1), bank);
@@ -1312,6 +1312,9 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank)
 			__func__, i,
 			(SWRM_DP_PORT_CTRL_BANK((i + 1), bank)), value);
 
+		reg[len] = SWRM_DP_SAMPLECTRL2_BANK((i + 1), bank);
+		val[len++] = ((mport->sinterval >> 8) & 0xFF);
+
 		if (mport->lane_ctrl != SWR_INVALID_PARAM) {
 			reg[len] = SWRM_DP_PORT_CTRL_2_BANK((i + 1), bank);
 			val[len++] = mport->lane_ctrl;

+ 1 - 1
soc/swr-mstr-ctrl.h

@@ -89,7 +89,7 @@ struct swrm_mports {
 	u8 req_ch;
 	u8 offset1;
 	u8 offset2;
-	u8 sinterval;
+	u16 sinterval;
 	u8 hstart;
 	u8 hstop;
 	u8 blk_grp_count;