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 <sugar.zhang@rock-chips.com>
This commit is contained in:
Sugar Zhang
2021-01-04 17:01:17 +08:00
committed by Tao Huang
parent b6a8de0be6
commit 593aff088a

View File

@@ -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"))