From 593aff088a23e063fac6acbc6b028c1fc27a84b4 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Mon, 4 Jan 2021 17:01:17 +0800 Subject: [PATCH] ASoC: rockchip: i2s-tdm: Add support for half frame fsync This patch parses property 'rockchip,tdm-fsync-half-frame' from DT to config tdm fsync width. Change-Id: I3254d753a213b7a74462bb85a20ea33d8c3fc3fc Signed-off-by: Sugar Zhang --- sound/soc/rockchip/rockchip_i2s_tdm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c index 2ede0f6fcf30..6f12bd748f4a 100644 --- a/sound/soc/rockchip/rockchip_i2s_tdm.c +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -83,6 +83,7 @@ struct rk_i2s_tdm_dev { bool io_multiplex; bool mclk_calibrate; bool tdm_mode; + bool tdm_fsync_half_frame; unsigned int mclk_rx_freq; unsigned int mclk_tx_freq; unsigned int mclk_root0_freq; @@ -582,7 +583,10 @@ static int rockchip_i2s_tdm_set_fmt(struct snd_soc_dai *cpu_dai, } tdm_val |= TDM_FSYNC_WIDTH_SEL1(1); - tdm_val |= TDM_FSYNC_WIDTH_ONE_FRAME; + if (i2s_tdm->tdm_fsync_half_frame) + tdm_val |= TDM_FSYNC_WIDTH_HALF_FRAME; + else + tdm_val |= TDM_FSYNC_WIDTH_ONE_FRAME; mask = I2S_TXCR_TFS_MASK; regmap_update_bits(i2s_tdm->regmap, I2S_TXCR, mask, val); @@ -1634,6 +1638,9 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev) } } + i2s_tdm->tdm_fsync_half_frame = + of_property_read_bool(node, "rockchip,tdm-fsync-half-frame"); + if (of_property_read_bool(node, "rockchip,playback-only")) soc_dai->capture.channels_min = 0; else if (of_property_read_bool(node, "rockchip,capture-only"))