SSP: Properly calculate frame end padding for 24/32 transport.

When calculating frame_end_padding with tdm_per_slot_padding_flag high,
imporper data size was used, yielding configuration errors.

Signed-off-by: ArturX Kloniecki <arturx.kloniecki@linux.intel.com>
This commit is contained in:
ArturX Kloniecki 2019-01-25 13:46:34 +01:00 committed by Liam Girdwood
parent 4405cd4721
commit c098d091ea
1 changed files with 4 additions and 3 deletions

View File

@ -502,7 +502,8 @@ static inline int ssp_set_config(struct dai *dai,
goto out;
}
bdiv_min = config->ssp.tdm_slots * config->ssp.sample_valid_bits;
bdiv_min = config->ssp.tdm_slots * (config->ssp.tdm_per_slot_padding_flag ?
config->ssp.tdm_slot_width : config->ssp.sample_valid_bits);
if (bdiv < bdiv_min) {
trace_ssp_error("ssp_set_config() error: bdiv(%d) < bdiv_min(%d)",
bdiv < bdiv_min);
@ -512,8 +513,8 @@ static inline int ssp_set_config(struct dai *dai,
frame_end_padding = bdiv - bdiv_min;
if (frame_end_padding > SSPSP2_FEP_MASK) {
trace_ssp_error("ssp_set_config() error: "
"frame_end_padding > %d", SSPSP2_FEP_MASK);
trace_ssp_error("ssp_set_config() error: frame_end_padding "
"too big: %u", frame_end_padding);
ret = -EINVAL;
goto out;
}