Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d486fea6 authored by Michal Bachraty's avatar Michal Bachraty Committed by Mark Brown
Browse files

ASoC: davinci-mcasp: Add Support BCLK-to-LRCLK ratio for TDM modes



For TDM mode, BCLK-to-LCLK ratio is computed as (tdm_slots) x (word_length).
I2S mode is only subset of TDM mode with specific tdm_slots = 2 channels.
Also bclk_lrclk_ratio can be greater than 255, therefore u16 need to be used.

Signed-off-by: default avatarMichal Bachraty <michal.bachraty@streamunlimited.com>
Acked-by: default avatarDaniel Mack <zonque@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 7c21a781
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -636,11 +636,12 @@ static int davinci_config_channel_size(struct davinci_audio_dev *dev,
	 * callback, take it into account here. That allows us to for example
	 * send 32 bits per channel to the codec, while only 16 of them carry
	 * audio payload.
	 * The clock ratio is given for a full period of data (both left and
	 * right channels), so it has to be divided by 2.
	 * The clock ratio is given for a full period of data (for I2S format
	 * both left and right channels), so it has to be divided by number of
	 * tdm-slots (for I2S - divided by 2).
	 */
	if (dev->bclk_lrclk_ratio)
		word_length = dev->bclk_lrclk_ratio / 2;
		word_length = dev->bclk_lrclk_ratio / dev->tdm_slots;

	/* mapping of the XSSZ bit-field as described in the datasheet */
	fmt = (word_length >> 1) - 1;
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ struct davinci_audio_dev {
	u8	num_serializer;
	u8	*serial_dir;
	u8	version;
	u8	bclk_lrclk_ratio;
	u16	bclk_lrclk_ratio;

	/* McASP FIFO related */
	u8	txnumevt;