X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0192-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch;fp=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0192-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch;h=7edd25f9eb687974826f9819aa5fe75f6f758e6c;hb=67dcc43f3a22dc3a7ac07a7065971b426feeb043;hp=0000000000000000000000000000000000000000;hpb=47a93a810f78adce5a130d287f82b28e9b54313c;p=openwrt%2Fstaging%2Fchunkeey.git diff --git a/target/linux/brcm2708/patches-4.19/950-0192-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch b/target/linux/brcm2708/patches-4.19/950-0192-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch new file mode 100644 index 0000000000..7edd25f9eb --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0192-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch @@ -0,0 +1,46 @@ +From f6b133a056e8fde7f4707e2874e204c7d5d671a2 Mon Sep 17 00:00:00 2001 +From: Matthias Reichl +Date: Sun, 18 Nov 2018 15:32:28 +0100 +Subject: [PATCH] rpi-wm8804-soundcard: configure wm8804 clocks only on + rate change + +This should avoid clicks when stopping and immediately afterwards +starting a stream with the same samplerate as before. + +Signed-off-by: Matthias Reichl +--- + sound/soc/bcm/rpi-wm8804-soundcard.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/sound/soc/bcm/rpi-wm8804-soundcard.c ++++ b/sound/soc/bcm/rpi-wm8804-soundcard.c +@@ -64,6 +64,7 @@ struct snd_rpi_wm8804_drvdata { + + static struct gpio_desc *snd_clk44gpio; + static struct gpio_desc *snd_clk48gpio; ++static int wm8804_samplerate = 0; + + #define CLK_44EN_RATE 22579200UL + #define CLK_48EN_RATE 24576000UL +@@ -117,6 +118,12 @@ static int snd_rpi_wm8804_hw_params(stru + struct wm8804_clk_cfg clk_cfg; + int samplerate = params_rate(params); + ++ if (samplerate == wm8804_samplerate) ++ return 0; ++ ++ /* clear until all clocks are setup properly */ ++ wm8804_samplerate = 0; ++ + snd_rpi_wm8804_clk_cfg(samplerate, &clk_cfg); + + pr_debug("%s samplerate: %d mclk_freq: %u mclk_div: %u sysclk: %u\n", +@@ -163,6 +170,8 @@ static int snd_rpi_wm8804_hw_params(stru + return ret; + } + ++ wm8804_samplerate = samplerate; ++ + /* set sampling frequency status bits */ + snd_soc_component_update_bits(component, WM8804_SPDTX4, 0x0f, + sampling_freq);