Skip to content

Commit 323fb7b

Browse files
Sylwester Nawrockibroonie
authored andcommitted
ASoC: samsung: i2s: Fix prescaler setting for the secondary DAI
Make sure i2s->rclk_srcrate is properly initialized also during playback through the secondary DAI. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 860b454 commit 323fb7b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

sound/soc/samsung/i2s.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,7 @@ static int i2s_set_fmt(struct snd_soc_dai *dai,
604604
unsigned int fmt)
605605
{
606606
struct i2s_dai *i2s = to_info(dai);
607+
struct i2s_dai *other = get_other_dai(i2s);
607608
int lrp_shift, sdf_shift, sdf_mask, lrp_rlow, mod_slave;
608609
u32 mod, tmp = 0;
609610
unsigned long flags;
@@ -661,7 +662,8 @@ static int i2s_set_fmt(struct snd_soc_dai *dai,
661662
* CLK_I2S_RCLK_SRC clock is not exposed so we ensure any
662663
* clock configuration assigned in DT is not overwritten.
663664
*/
664-
if (i2s->rclk_srcrate == 0 && i2s->clk_data.clks == NULL)
665+
if (i2s->rclk_srcrate == 0 && i2s->clk_data.clks == NULL &&
666+
other->clk_data.clks == NULL)
665667
i2s_set_sysclk(dai, SAMSUNG_I2S_RCLKSRC_0,
666668
0, SND_SOC_CLOCK_IN);
667669
break;
@@ -699,6 +701,7 @@ static int i2s_hw_params(struct snd_pcm_substream *substream,
699701
struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
700702
{
701703
struct i2s_dai *i2s = to_info(dai);
704+
struct i2s_dai *other = get_other_dai(i2s);
702705
u32 mod, mask = 0, val = 0;
703706
struct clk *rclksrc;
704707
unsigned long flags;
@@ -784,6 +787,9 @@ static int i2s_hw_params(struct snd_pcm_substream *substream,
784787
i2s->frmclk = params_rate(params);
785788

786789
rclksrc = i2s->clk_table[CLK_I2S_RCLK_SRC];
790+
if (!rclksrc || IS_ERR(rclksrc))
791+
rclksrc = other->clk_table[CLK_I2S_RCLK_SRC];
792+
787793
if (rclksrc && !IS_ERR(rclksrc))
788794
i2s->rclk_srcrate = clk_get_rate(rclksrc);
789795

0 commit comments

Comments
 (0)