brcm2708: organize kernel patches
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0366-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0366-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch b/target/linux/brcm2708/patches-4.19/950-0366-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch
new file mode 100644 (file)
index 0000000..5caebcb
--- /dev/null
@@ -0,0 +1,51 @@
+From 5ec6ed3e423878cf975a955c8796c2cdb10b5ca7 Mon Sep 17 00:00:00 2001
+From: Annaliese McDermond <nh6z@nh6z.net>
+Date: Thu, 21 Mar 2019 17:58:52 -0700
+Subject: [PATCH] ASoC: tlv320aic32x4: Restructure set_dai_sysclk
+
+commit aa6a60f7be925210d5156f0e8025f3afe1f4f54d upstream.
+
+The sysclk is now managed by the CCF.  Change this function
+to merely find the system clock and set it using
+clk_set_rate.
+
+Signed-off-by: Annaliese McDermond <nh6z@nh6z.net>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+---
+ sound/soc/codecs/tlv320aic32x4.c | 17 ++++++-----------
+ 1 file changed, 6 insertions(+), 11 deletions(-)
+
+--- a/sound/soc/codecs/tlv320aic32x4.c
++++ b/sound/soc/codecs/tlv320aic32x4.c
+@@ -49,7 +49,6 @@
+ struct aic32x4_priv {
+       struct regmap *regmap;
+-      u32 sysclk;
+       u32 power_cfg;
+       u32 micpga_routing;
+       bool swapdacs;
+@@ -569,17 +568,13 @@ static int aic32x4_set_dai_sysclk(struct
+                                 int clk_id, unsigned int freq, int dir)
+ {
+       struct snd_soc_component *component = codec_dai->component;
+-      struct aic32x4_priv *aic32x4 = snd_soc_component_get_drvdata(component);
++      struct clk *mclk;
++      struct clk *pll;
+-      switch (freq) {
+-      case 12000000:
+-      case 24000000:
+-      case 25000000:
+-              aic32x4->sysclk = freq;
+-              return 0;
+-      }
+-      printk(KERN_ERR "aic32x4: invalid frequency to set DAI system clock\n");
+-      return -EINVAL;
++      pll = devm_clk_get(component->dev, "pll");
++      mclk = clk_get_parent(pll);
++
++      return clk_set_rate(mclk, freq);
+ }
+ static int aic32x4_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)