openwrt/target/linux/brcm2708/patches-4.19/950-0404-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch

59 lines
2.0 KiB
Diff
Raw Normal View History

From a2d8d212b986e4a4ae52c748d246e4c28ebaf1bc Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:50 -0700
Subject: [PATCH 404/806] ASoC: tlv320aic32x4: Move aosr and dosr setting to
separate functions
commit fbafbf6517274a797e6e6508c18dd8dba5920c89 upstream.
Move these to separate helper functions. This looks cleaner and fits
better with the new clock setting in CCF.
Signed-off-by: Annaliese McDermond <nh6z@nh6z.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/codecs/tlv320aic32x4.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -720,6 +720,20 @@ static int aic32x4_set_dai_fmt(struct sn
return 0;
}
+static int aic32x4_set_aosr(struct snd_soc_component *component, u8 aosr)
+{
+ return snd_soc_component_write(component, AIC32X4_AOSR, aosr);
+}
+
+static int aic32x4_set_dosr(struct snd_soc_component *component, u16 dosr)
+{
+ snd_soc_component_write(component, AIC32X4_DOSRMSB, dosr >> 8);
+ snd_soc_component_write(component, AIC32X4_DOSRLSB,
+ (dosr & 0xff));
+
+ return 0;
+}
+
static int aic32x4_set_processing_blocks(struct snd_soc_component *component,
u8 r_block, u8 p_block)
{
@@ -765,14 +779,10 @@ static int aic32x4_setup_clocks(struct s
clk_set_rate(clocks[4].clk, aic32x4_divs[i].mdac_rate);
clk_set_rate(clocks[5].clk, aic32x4_divs[i].bdiv_rate);
- aic32x4_set_processing_blocks(component, aic32x4_divs[i].r_block, aic32x4_divs[i].p_block);
+ aic32x4_set_aosr(component, aic32x4_divs[i].aosr);
+ aic32x4_set_dosr(component, aic32x4_divs[i].dosr);
- /* DOSR MSB & LSB values */
- snd_soc_component_write(component, AIC32X4_DOSRMSB, aic32x4_divs[i].dosr >> 8);
- snd_soc_component_write(component, AIC32X4_DOSRLSB, (aic32x4_divs[i].dosr & 0xff));
-
- /* AOSR value */
- snd_soc_component_write(component, AIC32X4_AOSR, aic32x4_divs[i].aosr);
+ aic32x4_set_processing_blocks(component, aic32x4_divs[i].r_block, aic32x4_divs[i].p_block);
return 0;
}