This bitfield indicates the codec is frame master (CFM), set it as needed. The existing code could only deal with the SoC frame master (CFS)
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- src/drivers/apl-ssp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/drivers/apl-ssp.c b/src/drivers/apl-ssp.c index fdd40bd..c9f8a7c 100644 --- a/src/drivers/apl-ssp.c +++ b/src/drivers/apl-ssp.c @@ -206,13 +206,11 @@ static inline int ssp_set_config(struct dai *dai, /* ssrsa dynamic setting is RTSA, default 2 slots */ ssrsa = config->ssp.rx_slots;
- /* clock masters */ - sscr1 &= ~SSCR1_SFRMDIR; - trace_value(config->format); switch (config->format & SOF_DAI_FMT_MASTER_MASK) { case SOF_DAI_FMT_CBM_CFM: sscr1 |= SSCR1_SCLKDIR; + sscr1 |= SSCR1_SFRMDIR; /* * FIXME: does SSRC1.SCFR need to be set * when codec is master ? @@ -231,6 +229,7 @@ static inline int ssp_set_config(struct dai *dai, break; case SOF_DAI_FMT_CBS_CFM: ssioc |= SSIOC_SCOE; + sscr1 |= SSCR1_SFRMDIR; /* FIXME: this mode has not been tested */ break; default: