Merge tag 'asoc-fix-4.17-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v4.17 A small batch of fixes collected since the merge window, none of which are particularly large or remarkable. They've all been cooking in -next for a while.
This commit is contained in:
@@ -144,6 +144,13 @@ static int fsl_esai_divisor_cal(struct snd_soc_dai *dai, bool tx, u32 ratio,
|
||||
|
||||
psr = ratio <= 256 * maxfp ? ESAI_xCCR_xPSR_BYPASS : ESAI_xCCR_xPSR_DIV8;
|
||||
|
||||
/* Do not loop-search if PM (1 ~ 256) alone can serve the ratio */
|
||||
if (ratio <= 256) {
|
||||
pm = ratio;
|
||||
fp = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Set the max fluctuation -- 0.1% of the max devisor */
|
||||
savesub = (psr ? 1 : 8) * 256 * maxfp / 1000;
|
||||
|
||||
|
@@ -217,6 +217,7 @@ struct fsl_ssi_soc_data {
|
||||
* @dai_fmt: DAI configuration this device is currently used with
|
||||
* @streams: Mask of current active streams: BIT(TX) and BIT(RX)
|
||||
* @i2s_net: I2S and Network mode configurations of SCR register
|
||||
* (this is the initial settings based on the DAI format)
|
||||
* @synchronous: Use synchronous mode - both of TX and RX use STCK and SFCK
|
||||
* @use_dma: DMA is used or FIQ with stream filter
|
||||
* @use_dual_fifo: DMA with support for dual FIFO mode
|
||||
@@ -829,16 +830,23 @@ static int fsl_ssi_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
|
||||
if (!fsl_ssi_is_ac97(ssi)) {
|
||||
/*
|
||||
* Keep the ssi->i2s_net intact while having a local variable
|
||||
* to override settings for special use cases. Otherwise, the
|
||||
* ssi->i2s_net will lose the settings for regular use cases.
|
||||
*/
|
||||
u8 i2s_net = ssi->i2s_net;
|
||||
|
||||
/* Normal + Network mode to send 16-bit data in 32-bit frames */
|
||||
if (fsl_ssi_is_i2s_cbm_cfs(ssi) && sample_size == 16)
|
||||
ssi->i2s_net = SSI_SCR_I2S_MODE_NORMAL | SSI_SCR_NET;
|
||||
i2s_net = SSI_SCR_I2S_MODE_NORMAL | SSI_SCR_NET;
|
||||
|
||||
/* Use Normal mode to send mono data at 1st slot of 2 slots */
|
||||
if (channels == 1)
|
||||
ssi->i2s_net = SSI_SCR_I2S_MODE_NORMAL;
|
||||
i2s_net = SSI_SCR_I2S_MODE_NORMAL;
|
||||
|
||||
regmap_update_bits(regs, REG_SSI_SCR,
|
||||
SSI_SCR_I2S_NET_MASK, ssi->i2s_net);
|
||||
SSI_SCR_I2S_NET_MASK, i2s_net);
|
||||
}
|
||||
|
||||
/* In synchronous mode, the SSI uses STCCR for capture */
|
||||
|
Verwijs in nieuw issue
Block a user