]> Git Repo - linux.git/commitdiff
Merge remote-tracking branches 'asoc/topic/sun4i-i2s', 'asoc/topic/sunxi', 'asoc...
authorMark Brown <[email protected]>
Fri, 5 Jan 2018 12:44:06 +0000 (12:44 +0000)
committerMark Brown <[email protected]>
Fri, 5 Jan 2018 12:44:06 +0000 (12:44 +0000)
1  2  3  4  5  6 
include/sound/soc-dai.h
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/sunxi/sun4i-i2s.c

diff --combined include/sound/soc-dai.h
index d970879944fc32e94175a8dfc8652f6c14cda889,58acd00cae1967bc6ebb7851aab9b12aea49f782,58acd00cae1967bc6ebb7851aab9b12aea49f782,e05d05b5a7909ec4cfe978c2c4ae0410adeb4e54,58acd00cae1967bc6ebb7851aab9b12aea49f782,58acd00cae1967bc6ebb7851aab9b12aea49f782..8ad11669e4d8f346ae3e654587386af88d08281e
@@@@@@@ -102,8 -102,6 -102,6 -102,6 -102,6 -102,6 +102,8 @@@@@@@ struct snd_compr_stream
                               SNDRV_PCM_FMTBIT_S16_BE |\
                               SNDRV_PCM_FMTBIT_S20_3LE |\
                               SNDRV_PCM_FMTBIT_S20_3BE |\
 +++++                         SNDRV_PCM_FMTBIT_S20_LE |\
 +++++                         SNDRV_PCM_FMTBIT_S20_BE |\
                               SNDRV_PCM_FMTBIT_S24_3LE |\
                               SNDRV_PCM_FMTBIT_S24_3BE |\
                                     SNDRV_PCM_FMTBIT_S32_LE |\
@@@@@@@ -296,9 -294,9 -294,9 -294,6 -294,9 -294,9 +296,6 @@@@@@@ struct snd_soc_dai 
        /* DAI runtime info */
        unsigned int capture_active:1;          /* stream is in use */
        unsigned int playback_active:1;         /* stream is in use */
--- --  unsigned int symmetric_rates:1;
--- --  unsigned int symmetric_channels:1;
--- --  unsigned int symmetric_samplebits:1;
        unsigned int probed:1;
      
        unsigned int active;
diff --combined sound/soc/codecs/Kconfig
index 89ac249f6e24f1fd338626cfd25bdb2c2a6f8a80,a42ddbc93f3df1e52bd3f8f188779ddfe198ed1b,a42ddbc93f3df1e52bd3f8f188779ddfe198ed1b,a42ddbc93f3df1e52bd3f8f188779ddfe198ed1b,a42ddbc93f3df1e52bd3f8f188779ddfe198ed1b,6c2e0d5426f7ff9571aab4d018963ed3d40c1a5f..62c3a18b59d4f54d809c1eeb2be8414fe7e19254
@@@@@@@ -95,7 -95,6 -95,6 -95,6 -95,6 -95,6 +95,7 @@@@@@@ config SND_SOC_ALL_CODEC
        select SND_SOC_MAX98925 if I2C
        select SND_SOC_MAX98926 if I2C
        select SND_SOC_MAX98927 if I2C
 +++++  select SND_SOC_MAX98373 if I2C
        select SND_SOC_MAX9850 if I2C
        select SND_SOC_MAX9860 if I2C
        select SND_SOC_MAX9768 if I2C
        select SND_SOC_PCM1681 if I2C
        select SND_SOC_PCM179X_I2C if I2C
        select SND_SOC_PCM179X_SPI if SPI_MASTER
 +++++  select SND_SOC_PCM186X_I2C if I2C
 +++++  select SND_SOC_PCM186X_SPI if SPI_MASTER
        select SND_SOC_PCM3008
        select SND_SOC_PCM3168A_I2C if I2C
        select SND_SOC_PCM3168A_SPI if SPI_MASTER
        select SND_SOC_TAS5086 if I2C
        select SND_SOC_TAS571X if I2C
        select SND_SOC_TAS5720 if I2C
+++++   select SND_SOC_TAS6424 if I2C
        select SND_SOC_TFA9879 if I2C
        select SND_SOC_TLV320AIC23_I2C if I2C
        select SND_SOC_TLV320AIC23_SPI if SPI_MASTER
@@@@@@@ -626,10 -623,6 -623,6 -623,6 -623,6 -624,6 +627,10 @@@@@@@ config SND_SOC_MAX9892
        tristate "Maxim Integrated MAX98927 Speaker Amplifier"
        depends on I2C
      
 +++++config SND_SOC_MAX98373
 +++++  tristate "Maxim Integrated MAX98373 Speaker Amplifier"
 +++++  depends on I2C
 +++++
      config SND_SOC_MAX9850
        tristate
      
@@@@@@@ -668,21 -661,6 -661,6 -661,6 -661,6 -662,6 +669,21 @@@@@@@ config SND_SOC_PCM179X_SP
          Enable support for Texas Instruments PCM179x CODEC.
          Select this if your PCM179x is connected via an SPI bus.
      
 +++++config SND_SOC_PCM186X
 +++++  tristate
 +++++
 +++++config SND_SOC_PCM186X_I2C
 +++++  tristate "Texas Instruments PCM186x CODECs - I2C"
 +++++  depends on I2C
 +++++  select SND_SOC_PCM186X
 +++++  select REGMAP_I2C
 +++++
 +++++config SND_SOC_PCM186X_SPI
 +++++  tristate "Texas Instruments PCM186x CODECs - SPI"
 +++++  depends on SPI_MASTER
 +++++  select SND_SOC_PCM186X
 +++++  select REGMAP_SPI
 +++++
      config SND_SOC_PCM3008
             tristate
      
@@@@@@@ -905,6 -883,6 -883,6 -883,6 -883,6 -884,13 +906,13 @@@@@@@ config SND_SOC_TAS572
          Enable support for Texas Instruments TAS5720L/M high-efficiency mono
          Class-D audio power amplifiers.
      
+++++ config SND_SOC_TAS6424
+++++   tristate "Texas Instruments TAS6424 Quad-Channel Audio amplifier"
+++++   depends on I2C
+++++   help
+++++     Enable support for Texas Instruments TAS6424 high-efficiency
+++++     digital input quad-channel Class-D audio power amplifiers.
+++++ 
      config SND_SOC_TFA9879
        tristate "NXP Semiconductors TFA9879 amplifier"
        depends on I2C
index cc25c6a41052a9133c8467ef71f45a0005d01a0f,0001069ce2a7e2f346cd7775f144864282d622e8,0001069ce2a7e2f346cd7775f144864282d622e8,0001069ce2a7e2f346cd7775f144864282d622e8,0001069ce2a7e2f346cd7775f144864282d622e8,154abd758c304ced09abfb013797ea9f89b1b1bc..49db8e93a11f2725c4db766d9e2ffc1bb0ed87ca
@@@@@@@ -90,7 -90,6 -90,6 -90,6 -90,6 -90,6 +90,7 @@@@@@@ snd-soc-max9867-objs := max9867.
      snd-soc-max98925-objs := max98925.o
      snd-soc-max98926-objs := max98926.o
      snd-soc-max98927-objs := max98927.o
 +++++snd-soc-max98373-objs := max98373.o
      snd-soc-max9850-objs := max9850.o
      snd-soc-max9860-objs := max9860.o
      snd-soc-mc13783-objs := mc13783.o
@@@@@@@ -106,9 -105,6 -105,6 -105,6 -105,6 -105,6 +106,9 @@@@@@@ snd-soc-pcm1681-objs := pcm1681.
      snd-soc-pcm179x-codec-objs := pcm179x.o
      snd-soc-pcm179x-i2c-objs := pcm179x-i2c.o
      snd-soc-pcm179x-spi-objs := pcm179x-spi.o
 +++++snd-soc-pcm186x-objs := pcm186x.o
 +++++snd-soc-pcm186x-i2c-objs := pcm186x-i2c.o
 +++++snd-soc-pcm186x-spi-objs := pcm186x-spi.o
      snd-soc-pcm3008-objs := pcm3008.o
      snd-soc-pcm3168a-objs := pcm3168a.o
      snd-soc-pcm3168a-i2c-objs := pcm3168a-i2c.o
@@@@@@@ -160,6 -156,6 -156,6 -156,6 -156,6 -156,7 +160,7 @@@@@@@ snd-soc-sti-sas-objs := sti-sas.
      snd-soc-tas5086-objs := tas5086.o
      snd-soc-tas571x-objs := tas571x.o
      snd-soc-tas5720-objs := tas5720.o
+++++ snd-soc-tas6424-objs := tas6424.o
      snd-soc-tfa9879-objs := tfa9879.o
      snd-soc-tlv320aic23-objs := tlv320aic23.o
      snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o
@@@@@@@ -334,7 -330,6 -330,6 -330,6 -330,6 -331,6 +335,7 @@@@@@@ obj-$(CONFIG_SND_SOC_MAX9867)  += snd-so
      obj-$(CONFIG_SND_SOC_MAX98925)    += snd-soc-max98925.o
      obj-$(CONFIG_SND_SOC_MAX98926)    += snd-soc-max98926.o
      obj-$(CONFIG_SND_SOC_MAX98927)    += snd-soc-max98927.o
 +++++obj-$(CONFIG_SND_SOC_MAX98373)    += snd-soc-max98373.o
      obj-$(CONFIG_SND_SOC_MAX9850)     += snd-soc-max9850.o
      obj-$(CONFIG_SND_SOC_MAX9860)     += snd-soc-max9860.o
      obj-$(CONFIG_SND_SOC_MC13783)     += snd-soc-mc13783.o
@@@@@@@ -350,9 -345,6 -345,6 -345,6 -345,6 -346,6 +351,9 @@@@@@@ obj-$(CONFIG_SND_SOC_PCM1681)  += snd-so
      obj-$(CONFIG_SND_SOC_PCM179X)     += snd-soc-pcm179x-codec.o
      obj-$(CONFIG_SND_SOC_PCM179X_I2C) += snd-soc-pcm179x-i2c.o
      obj-$(CONFIG_SND_SOC_PCM179X_SPI) += snd-soc-pcm179x-spi.o
 +++++obj-$(CONFIG_SND_SOC_PCM186X)     += snd-soc-pcm186x.o
 +++++obj-$(CONFIG_SND_SOC_PCM186X_I2C) += snd-soc-pcm186x-i2c.o
 +++++obj-$(CONFIG_SND_SOC_PCM186X_SPI) += snd-soc-pcm186x-spi.o
      obj-$(CONFIG_SND_SOC_PCM3008)     += snd-soc-pcm3008.o
      obj-$(CONFIG_SND_SOC_PCM3168A)    += snd-soc-pcm3168a.o
      obj-$(CONFIG_SND_SOC_PCM3168A_I2C)        += snd-soc-pcm3168a-i2c.o
@@@@@@@ -403,6 -395,6 -395,6 -395,6 -395,6 -396,7 +404,7 @@@@@@@ obj-$(CONFIG_SND_SOC_TAS2552)  += snd-so
      obj-$(CONFIG_SND_SOC_TAS5086)     += snd-soc-tas5086.o
      obj-$(CONFIG_SND_SOC_TAS571X)     += snd-soc-tas571x.o
      obj-$(CONFIG_SND_SOC_TAS5720)     += snd-soc-tas5720.o
+++++ obj-$(CONFIG_SND_SOC_TAS6424)     += snd-soc-tas6424.o
      obj-$(CONFIG_SND_SOC_TFA9879)     += snd-soc-tfa9879.o
      obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o
      obj-$(CONFIG_SND_SOC_TLV320AIC23_I2C)     += snd-soc-tlv320aic23-i2c.o
index 04f92583a9696569aeac2a92084643a94cbe57d6,bc147e2dcff50f5c02e757bb96492a3bd7a15744,13d7ecabe1b63e978f4799d7ae0d98b666203734,04f92583a9696569aeac2a92084643a94cbe57d6,04f92583a9696569aeac2a92084643a94cbe57d6,04f92583a9696569aeac2a92084643a94cbe57d6..dca1143c1150ac58aa148a49db54c33226e366c8
@@@@@@@ -269,10 -269,11 -269,10 -269,10 -269,10 -269,10 +269,11 @@@@@@@ static bool sun4i_i2s_oversample_is_val
        return false;
      }
      
- ----static int sun4i_i2s_set_clk_rate(struct sun4i_i2s *i2s,
+ ++++static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai,
                                  unsigned int rate,
                                  unsigned int word_size)
      {
+ ++++  struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai);
        unsigned int oversample_rate, clk_rate;
        int bclk_div, mclk_div;
        int ret;
                break;
      
        default:
+ ++++          dev_err(dai->dev, "Unsupported sample rate: %u\n", rate);
                return -EINVAL;
        }
      
                return ret;
      
        oversample_rate = i2s->mclk_freq / rate;
- ----  if (!sun4i_i2s_oversample_is_valid(oversample_rate))
+ ++++  if (!sun4i_i2s_oversample_is_valid(oversample_rate)) {
+ ++++          dev_err(dai->dev, "Unsupported oversample rate: %d\n",
+ ++++                  oversample_rate);
                return -EINVAL;
+ ++++  }
      
        bclk_div = sun4i_i2s_get_bclk_div(i2s, oversample_rate,
                                          word_size);
- ----  if (bclk_div < 0)
+ ++++  if (bclk_div < 0) {
+ ++++          dev_err(dai->dev, "Unsupported BCLK divider: %d\n", bclk_div);
                return -EINVAL;
+ ++++  }
      
        mclk_div = sun4i_i2s_get_mclk_div(i2s, oversample_rate,
                                          clk_rate, rate);
- ----  if (mclk_div < 0)
+ ++++  if (mclk_div < 0) {
+ ++++          dev_err(dai->dev, "Unsupported MCLK divider: %d\n", mclk_div);
                return -EINVAL;
+ ++++  }
      
        /* Adjust the clock division values if needed */
        bclk_div += i2s->variant->bclk_offset;
@@@@@@@ -349,8 -358,11 -349,8 -349,8 -349,8 -349,8 +358,11 @@@@@@@ static int sun4i_i2s_hw_params(struct s
        u32 width;
      
        channels = params_channels(params);
- ----  if (channels != 2)
+ ++++  if (channels != 2) {
+ ++++          dev_err(dai->dev, "Unsupported number of channels: %d\n",
+ ++++                  channels);
                return -EINVAL;
+ ++++  }
      
        if (i2s->variant->has_chcfg) {
                regmap_update_bits(i2s->regmap, SUN8I_I2S_CHAN_CFG_REG,
                width = DMA_SLAVE_BUSWIDTH_2_BYTES;
                break;
        default:
+ ++++          dev_err(dai->dev, "Unsupported physical sample width: %d\n",
+ ++++                  params_physical_width(params));
                return -EINVAL;
        }
        i2s->playback_dma_data.addr_width = width;
                break;
      
        default:
+ ++++          dev_err(dai->dev, "Unsupported sample width: %d\n",
+ ++++                  params_width(params));
                return -EINVAL;
        }
      
        regmap_field_write(i2s->field_fmt_sr,
                           sr + i2s->variant->fmt_offset);
      
- ----  return sun4i_i2s_set_clk_rate(i2s, params_rate(params),
+ ++++  return sun4i_i2s_set_clk_rate(dai, params_rate(params),
                                      params_width(params));
      }
      
@@@@@@@ -426,6 -442,8 -426,6 -426,6 -426,6 -426,6 +442,8 @@@@@@@ static int sun4i_i2s_set_fmt(struct snd
                val = SUN4I_I2S_FMT0_FMT_RIGHT_J;
                break;
        default:
+ ++++          dev_err(dai->dev, "Unsupported format: %d\n",
+ ++++                  fmt & SND_SOC_DAIFMT_FORMAT_MASK);
                return -EINVAL;
        }
      
        case SND_SOC_DAIFMT_NB_NF:
                break;
        default:
+ ++++          dev_err(dai->dev, "Unsupported clock polarity: %d\n",
+ ++++                  fmt & SND_SOC_DAIFMT_INV_MASK);
                return -EINVAL;
        }
      
                        val = SUN4I_I2S_CTRL_MODE_SLAVE;
                        break;
                default:
+ ++++                  dev_err(dai->dev, "Unsupported slave setting: %d\n",
+ ++++                          fmt & SND_SOC_DAIFMT_MASTER_MASK);
                        return -EINVAL;
                }
                regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG,
                        val = 0;
                        break;
                default:
+ ++++                  dev_err(dai->dev, "Unsupported slave setting: %d\n",
+ ++++                          fmt & SND_SOC_DAIFMT_MASTER_MASK);
                        return -EINVAL;
                }
                regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG,
@@@@@@@ -897,6 -921,6 -897,23 -897,6 -897,6 -897,6 +921,23 @@@@@@@ static const struct sun4i_i2s_quirks su
        .field_rxchansel        = REG_FIELD(SUN4I_I2S_RX_CHAN_SEL_REG, 0, 2),
      };
      
++ +++static const struct sun4i_i2s_quirks sun8i_a83t_i2s_quirks = {
++ +++  .has_reset              = true,
++ +++  .reg_offset_txdata      = SUN8I_I2S_FIFO_TX_REG,
++ +++  .sun4i_i2s_regmap       = &sun4i_i2s_regmap_config,
++ +++  .field_clkdiv_mclk_en   = REG_FIELD(SUN4I_I2S_CLK_DIV_REG, 7, 7),
++ +++  .field_fmt_wss          = REG_FIELD(SUN4I_I2S_FMT0_REG, 2, 3),
++ +++  .field_fmt_sr           = REG_FIELD(SUN4I_I2S_FMT0_REG, 4, 5),
++ +++  .field_fmt_bclk         = REG_FIELD(SUN4I_I2S_FMT0_REG, 6, 6),
++ +++  .field_fmt_lrclk        = REG_FIELD(SUN4I_I2S_FMT0_REG, 7, 7),
++ +++  .has_slave_select_bit   = true,
++ +++  .field_fmt_mode         = REG_FIELD(SUN4I_I2S_FMT0_REG, 0, 1),
++ +++  .field_txchanmap        = REG_FIELD(SUN4I_I2S_TX_CHAN_MAP_REG, 0, 31),
++ +++  .field_rxchanmap        = REG_FIELD(SUN4I_I2S_RX_CHAN_MAP_REG, 0, 31),
++ +++  .field_txchansel        = REG_FIELD(SUN4I_I2S_TX_CHAN_SEL_REG, 0, 2),
++ +++  .field_rxchansel        = REG_FIELD(SUN4I_I2S_RX_CHAN_SEL_REG, 0, 2),
++ +++};
++ +++
      static const struct sun4i_i2s_quirks sun8i_h3_i2s_quirks = {
        .has_reset              = true,
        .reg_offset_txdata      = SUN8I_I2S_FIFO_TX_REG,
@@@@@@@ -1120,6 -1144,6 -1137,10 -1120,6 -1120,6 -1120,6 +1161,10 @@@@@@@ static const struct of_device_id sun4i_
                .compatible = "allwinner,sun6i-a31-i2s",
                .data = &sun6i_a31_i2s_quirks,
        },
++ +++  {
++ +++          .compatible = "allwinner,sun8i-a83t-i2s",
++ +++          .data = &sun8i_a83t_i2s_quirks,
++ +++  },
        {
                .compatible = "allwinner,sun8i-h3-i2s",
                .data = &sun8i_h3_i2s_quirks,
This page took 0.150843 seconds and 4 git commands to generate.