Skip to content

Commit 9fe51a4

Browse files
committed
drivers: apl-ssp: code optimization for DSP_A/B
The only difference between DSP_A and DSP_B modes is FSRT bit in sspsp register and start delay set to 1 in DSP_A mode. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
1 parent 86610e0 commit 9fe51a4

1 file changed

Lines changed: 4 additions & 35 deletions

File tree

src/drivers/apl-ssp.c

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ static inline int ssp_set_config(struct dai *dai,
137137
uint32_t i2s_m;
138138
uint32_t i2s_n;
139139
uint32_t data_size;
140-
uint32_t start_delay;
140+
uint32_t start_delay = 0;
141141
uint32_t frame_end_padding;
142142
uint32_t slot_end_padding;
143143
uint32_t frame_len = 0;
@@ -536,45 +536,14 @@ static inline int ssp_set_config(struct dai *dai,
536536
break;
537537
case SOF_DAI_FMT_DSP_A:
538538

539-
start_delay = 0;
540-
541-
sscr0 |= SSCR0_MOD | SSCR0_FRDC(config->ssp.tdm_slots);
542-
543-
/* set asserted frame length */
544-
frame_len = 1; /* default */
545-
546-
if (cfs && ssp->params.frame_pulse_width > 0 &&
547-
ssp->params.frame_pulse_width <=
548-
SOF_DAI_INTEL_SSP_FRAME_PULSE_WIDTH_MAX) {
549-
frame_len = ssp->params.frame_pulse_width;
550-
}
551-
552-
/* frame_pulse_width must less or equal 38 */
553-
if (ssp->params.frame_pulse_width >
554-
SOF_DAI_INTEL_SSP_FRAME_PULSE_WIDTH_MAX) {
555-
trace_ssp_error("efa");
556-
ret = -EINVAL;
557-
goto out;
558-
}
559-
560-
/*
561-
* handle frame polarity, DSP_A default is rising/active high,
562-
* non-inverted(inverted_frame=0) -- active high(SFRMP=1),
563-
* inverted(inverted_frame=1) -- falling/active low(SFRMP=0),
564-
* so, we should set SFRMP to !inverted_frame.
565-
*/
566-
sspsp |= SSPSP_SFRMP(!inverted_frame);
539+
start_delay = 1;
567540
sspsp |= SSPSP_FSRT;
568541

569-
active_tx_slots = hweight_32(config->ssp.tx_slots);
570-
active_rx_slots = hweight_32(config->ssp.rx_slots);
571-
572-
sspsp2 |= (frame_end_padding & SSPSP2_FEP_MASK);
542+
/* fallthrough */
573543

574-
break;
575544
case SOF_DAI_FMT_DSP_B:
576545

577-
start_delay = 0;
546+
/* default start_delay value is set to 0 */
578547

579548
sscr0 |= SSCR0_MOD | SSCR0_FRDC(config->ssp.tdm_slots);
580549

0 commit comments

Comments
 (0)