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>
This commit is contained in:
Matthias Reichl
2018-11-18 15:24:16 +01:00
committed by popcornmix
parent f58e43e8fa
commit bc445e2641

View File

@@ -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(struct snd_pcm_substream *substream,
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(struct snd_pcm_substream *substream,
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_justboom_digi_dai[] = {
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 platform_device *pdev)
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 platform_device *pdev)
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);