ASoC: adau1372: fixes after debugging custom board
[platform/kernel/linux-starfive.git] / sound / soc / codecs / adau1372.c
index fbb6bf6..d9bde7e 100644 (file)
@@ -24,7 +24,6 @@
 #include "adau-utils.h"
 
 struct adau1372 {
-       struct clk *clk;
        struct regmap *regmap;
        void (*switch_mode)(struct device *dev);
        bool use_pll;
@@ -206,10 +205,10 @@ static const struct snd_kcontrol_new adau1372_controls[] = {
                       2, 1, 0, adau1372_pga_boost_tlv),
        SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST,
                       3, 1, 0, adau1372_pga_boost_tlv),
-       SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 1),
-       SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 1),
-       SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 1),
-       SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 1),
+       SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 0),
+       SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 0),
+       SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 0),
+       SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 0),
 
        SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0),
                       0, 0xff, 1, adau1372_digital_tlv),
@@ -369,10 +368,10 @@ static const struct snd_soc_dapm_widget adau1372_dapm_widgets[] = {
        SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0),
        SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0),
 
-       SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 0, NULL, 0),
-       SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 0, NULL, 0),
-       SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 0, NULL, 0),
-       SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 0, NULL, 0),
+       SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 1, NULL, 0),
+       SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 1, NULL, 0),
+       SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 1, NULL, 0),
+       SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 1, NULL, 0),
        SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0),
        SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0),
        SND_SOC_DAPM_ADC("ADC2", NULL, ADAU1372_REG_ADC_CTRL3, 0, 0),
@@ -662,6 +661,7 @@ static int adau1372_hw_params(struct snd_pcm_substream *substream,
        case 16:
                sai1 = ADAU1372_SAI1_BCLKRATE;
                break;
+       case 24:
        case 32:
                sai1 = 0;
                break;
@@ -699,6 +699,7 @@ static int adau1372_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
        case 16:
                sai1 = ADAU1372_SAI1_BCLK_TDMC;
                break;
+       case 24:
        case 32:
                sai1 = 0;
                break;
@@ -869,7 +870,9 @@ static const struct snd_soc_dai_ops adau1372_dai_ops = {
        .startup = adau1372_startup,
 };
 
-#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |    SNDRV_PCM_FMTBIT_S32_LE)
+#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
+                         SNDRV_PCM_FMTBIT_S24_LE | \
+                         SNDRV_PCM_FMTBIT_S32_LE)
 
 static struct snd_soc_dai_driver adau1372_dai_driver = {
        .name = "adau1372",
@@ -924,9 +927,9 @@ int adau1372_probe(struct device *dev, struct regmap *regmap,
        if (!adau1372)
                return -ENOMEM;
 
-       adau1372->clk = devm_clk_get(dev, "mclk");
-       if (IS_ERR(adau1372->clk))
-               return PTR_ERR(adau1372->clk);
+       adau1372->mclk = devm_clk_get(dev, "mclk");
+       if (IS_ERR(adau1372->mclk))
+               return PTR_ERR(adau1372->mclk);
 
        adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);
        if (IS_ERR(adau1372->pd_gpio))
@@ -946,7 +949,7 @@ int adau1372_probe(struct device *dev, struct regmap *regmap,
         * 12.288MHz. Automatically choose a valid configuration from the
         * external clock.
         */
-       rate = clk_get_rate(adau1372->clk);
+       rate = clk_get_rate(adau1372->mclk);
 
        switch (rate) {
        case 12288000: