You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/brcm2708/patches-4.19/950-0211-rpi-wm8804-soundca...

129 lines
4.0 KiB
Diff

From c9ea8ea1ead34bfcaf0407498f6431d07272abc0 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 18 Nov 2018 15:24:16 +0100
Subject: [PATCH 211/782] rpi-wm8804-soundcard: drop PWRDN register writes
Since kernel 4.0 the PWRDN register bits are under DAPM
control from the wm8804 driver.
Drop code that modifies that register to avoid interfering
with DAPM.
Signed-off-by: Matthias Reichl <hias@horus.com>
---
sound/soc/bcm/rpi-wm8804-soundcard.c | 55 ----------------------------
1 file changed, 55 deletions(-)
--- a/sound/soc/bcm/rpi-wm8804-soundcard.c
+++ b/sound/soc/bcm/rpi-wm8804-soundcard.c
@@ -54,8 +54,6 @@ struct snd_rpi_wm8804_drvdata {
struct snd_soc_dai_link *dai;
/* Required - snd_soc_card name */
const char *card_name;
- /* Optional- Overrides the module paramter */
- unsigned short auto_shutdown_output;
/* Optional DT node names if card info is defined in DT */
const char *card_name_dt;
const char *dai_name_dt;
@@ -64,51 +62,12 @@ struct snd_rpi_wm8804_drvdata {
int (*probe)(struct platform_device *pdev);
};
-static short int auto_shutdown_output;
-module_param(auto_shutdown_output, short, 0660);
-MODULE_PARM_DESC(auto_shutdown_output, "Shutdown SP/DIF output if playback is stopped");
-
static struct gpio_desc *snd_clk44gpio;
static struct gpio_desc *snd_clk48gpio;
#define CLK_44EN_RATE 22579200UL
#define CLK_48EN_RATE 24576000UL
-static int snd_rpi_wm8804_init(struct snd_soc_pcm_runtime *rtd)
-{
- struct snd_soc_component *component = rtd->codec_dai->component;
- int rc;
-
- pr_debug("%s\n", __func__);
-
- rc = snd_soc_component_update_bits(component, WM8804_PWRDN, 0x4, 0x0);
- return rc < 0 ? rc : 0;
-}
-
-static int snd_rpi_wm8804_digi_startup(struct snd_pcm_substream *substream)
-{
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_component *component = rtd->codec_dai->component;
- int rc;
-
- pr_debug("%s\n", __func__);
-
- rc = snd_soc_component_update_bits(component, WM8804_PWRDN, 0x3c, 0x00);
- return rc < 0 ? rc : 0;
-}
-
-static void snd_rpi_wm8804_digi_shutdown(struct snd_pcm_substream *substream)
-{
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct snd_soc_component *component = rtd->codec_dai->component;
-
- pr_debug("%s %d\n", __func__, auto_shutdown_output);
-
- if (auto_shutdown_output)
- snd_soc_component_update_bits(component, WM8804_PWRDN,
- 0x3c, 0x3c);
-}
-
static unsigned int snd_rpi_wm8804_enable_clock(unsigned int samplerate)
{
switch (samplerate) {
@@ -204,12 +163,6 @@ static int snd_rpi_wm8804_hw_params(stru
return ret;
}
- /* Enable TX output */
- snd_soc_component_update_bits(component, WM8804_PWRDN, 0x4, 0x0);
-
- /* Power on */
- snd_soc_component_update_bits(component, WM8804_PWRDN, 0x9, 0);
-
/* set sampling frequency status bits */
snd_soc_component_update_bits(component, WM8804_SPDTX4, 0x0f,
sampling_freq);
@@ -219,8 +172,6 @@ static int snd_rpi_wm8804_hw_params(stru
static struct snd_soc_ops snd_rpi_wm8804_ops = {
.hw_params = snd_rpi_wm8804_hw_params,
- .startup = snd_rpi_wm8804_digi_startup,
- .shutdown = snd_rpi_wm8804_digi_shutdown,
};
static struct snd_soc_dai_link snd_justboom_digi_dai[] = {
@@ -233,7 +184,6 @@ static struct snd_soc_dai_link snd_justb
static struct snd_rpi_wm8804_drvdata drvdata_justboom_digi = {
.card_name = "snd_rpi_justboom_digi",
.dai = snd_justboom_digi_dai,
- .auto_shutdown_output = 1,
};
static struct snd_soc_dai_link snd_iqaudio_digi_dai[] = {
@@ -335,8 +285,6 @@ static int snd_rpi_wm8804_probe(struct p
snd_soc_card_set_drvdata(&snd_rpi_wm8804, drvdata);
- if (!dai->init)
- dai->init = snd_rpi_wm8804_init;
if (!dai->ops)
dai->ops = &snd_rpi_wm8804_ops;
if (!dai->codec_dai_name)
@@ -348,9 +296,6 @@ static int snd_rpi_wm8804_probe(struct p
SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBM_CFM;
- if (drvdata->auto_shutdown_output)
- auto_shutdown_output = 1;
-
snd_rpi_wm8804.dai_link = dai;
i2s_node = of_parse_phandle(pdev->dev.of_node,
"i2s-controller", 0);