[Sound-open-firmware] [PATCH 6/6] uapi: ipc: move sample_valid_bits to SSP definitions

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Apr 5 03:43:17 CEST 2018


This field doesn't mean anything for DMIC or HDaudio, move it
where it makes sense (I2S/TDM modes)

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
---
 src/audio/dai.c        | 2 +-
 src/drivers/apl-ssp.c  | 6 +++---
 src/drivers/byt-ssp.c  | 2 +-
 src/include/uapi/ipc.h | 3 +--
 4 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/audio/dai.c b/src/audio/dai.c
index 1c50c08..7905665 100644
--- a/src/audio/dai.c
+++ b/src/audio/dai.c
@@ -628,7 +628,7 @@ static int dai_config(struct comp_dev *dev, struct sof_ipc_dai_config *config)
 		dd->config.burst_elems = config->ssp.tdm_slots;
 
 		/* calc frame bytes */
-		switch (config->sample_valid_bits) {
+		switch (config->ssp.sample_valid_bits) {
 		case 16:
 			dev->frame_bytes = 2 * config->ssp.tdm_slots;
 			break;
diff --git a/src/drivers/apl-ssp.c b/src/drivers/apl-ssp.c
index 0153b7c..a02d934 100644
--- a/src/drivers/apl-ssp.c
+++ b/src/drivers/apl-ssp.c
@@ -406,7 +406,7 @@ static inline int ssp_set_config(struct dai *dai,
 	sspsp |= SSPSP_STRTDLY(start_delay);
 	sspsp |= SSPSP_SFRMWDTH(frame_len);
 
-	bdiv_min = config->ssp.tdm_slots * config->sample_valid_bits;
+	bdiv_min = config->ssp.tdm_slots * config->ssp.sample_valid_bits;
 	if (bdiv < bdiv_min) {
 		trace_ssp_error("ecc");
 		ret = -EINVAL;
@@ -422,7 +422,7 @@ static inline int ssp_set_config(struct dai *dai,
 
 	sspsp2 |= (frame_end_padding & SSPSP2_FEP_MASK);
 
-	data_size = config->sample_valid_bits;
+	data_size = config->ssp.sample_valid_bits;
 
 	if (data_size > 16)
 		sscr0 |= (SSCR0_EDSS | SSCR0_DSIZE(data_size - 16));
@@ -438,7 +438,7 @@ static inline int ssp_set_config(struct dai *dai,
 	mdivr = 0x00000fff;
 
 	/* setting TFT and RFT */
-	switch (config->sample_valid_bits) {
+	switch (config->ssp.sample_valid_bits) {
 	case 16:
 		/* use 2 bytes for each slot */
 		tft = active_tx_slots * 2;
diff --git a/src/drivers/byt-ssp.c b/src/drivers/byt-ssp.c
index a9e77df..758f211 100644
--- a/src/drivers/byt-ssp.c
+++ b/src/drivers/byt-ssp.c
@@ -431,7 +431,7 @@ static inline int ssp_set_config(struct dai *dai,
 	sspsp |= SSPSP_SFRMWDTH(frame_len);
 	sscr5 |= SSCR5_FRM_ASRT_CLOCKS(frame_len);
 
-	data_size = config->sample_valid_bits;
+	data_size = config->ssp.sample_valid_bits;
 
 	if (data_size > 16)
 		sscr0 |= (SSCR0_EDSS | SSCR0_DSIZE(data_size - 16));
diff --git a/src/include/uapi/ipc.h b/src/include/uapi/ipc.h
index a2e0199..fbf1c07 100644
--- a/src/include/uapi/ipc.h
+++ b/src/include/uapi/ipc.h
@@ -242,6 +242,7 @@ struct sof_ipc_dai_ssp_params {
 	uint32_t tx_slots;
 
 	/* data */
+	uint32_t sample_valid_bits;
 	uint16_t tdm_slot_width;
 	uint16_t reserved2;	/* alignment */
 
@@ -279,8 +280,6 @@ struct sof_ipc_dai_config {
 	uint16_t format;	/* SOF_DAI_FMT_ */
 	uint16_t reserved;	/* alignment */
 
-	uint32_t sample_valid_bits;
-
 	/* HW specific data */
 	union {
 		struct sof_ipc_dai_ssp_params ssp;
-- 
2.14.1



More information about the Sound-open-firmware mailing list