mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
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:
committed by
popcornmix
parent
f58e43e8fa
commit
bc445e2641
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user