Merge remote-tracking branches 'asoc/topic/ad1980', 'asoc/topic/adsp', 'asoc/topic...
authorMark Brown <broonie@linaro.org>
Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)
committerMark Brown <broonie@linaro.org>
Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)
1  2  3  4  5  6  7  8  9 
sound/soc/codecs/Kconfig
sound/soc/codecs/alc5623.c
sound/soc/codecs/wm5110.c
sound/soc/codecs/wm_adsp.c

diff --combined sound/soc/codecs/Kconfig
index c7b853f520cf17454a80d0ab81e671cccf972609,f0e8401378873721f0e69e7fe338fe00afe29fb5,f0e8401378873721f0e69e7fe338fe00afe29fb5,f0e8401378873721f0e69e7fe338fe00afe29fb5,f0e8401378873721f0e69e7fe338fe00afe29fb5,5fefaa8c50ef7bb7ee58830d53a52a857fae02ea,f0e8401378873721f0e69e7fe338fe00afe29fb5,f0e8401378873721f0e69e7fe338fe00afe29fb5,f0e8401378873721f0e69e7fe338fe00afe29fb5..6735435cccb9e4c9698673e18b816df5edbb19d3
@@@@@@@@@@ -80,7 -80,6 -80,6 -80,6 -80,6 -80,6 -80,6 -80,6 -80,6 +80,7 @@@@@@@@@@ config SND_SOC_ALL_CODEC
                select SND_SOC_SSM2602_SPI if SPI_MASTER
                select SND_SOC_SSM2602_I2C if I2C
                select SND_SOC_STA32X if I2C
 ++++++++       select SND_SOC_STA350 if I2C
                select SND_SOC_STA529 if I2C
                select SND_SOC_STAC9766 if SND_SOC_AC97_BUS
                select SND_SOC_TAS5086 if I2C
@@@@@@@@@@ -270,7 -269,7 -269,7 -269,7 -269,7 -269,7 -269,7 -269,7 -269,7 +270,7 @@@@@@@@@@ config SND_SOC_AK538
                tristate "AKM AK5638 CODEC"
         
         config SND_SOC_ALC5623
----- ---       tristate
+++++ +++       tristate "Realtek ALC5623 CODEC"
         
         config SND_SOC_ALC5632
                tristate
@@@@@@@@@@ -436,10 -435,6 -435,6 -435,6 -435,6 -435,6 -435,6 -435,6 -435,6 +436,10 @@@@@@@@@@ config SND_SOC_SSM2602_I2
         config SND_SOC_STA32X
                tristate
         
 ++++++++config SND_SOC_STA350
 ++++++++       tristate "STA350 speaker amplifier"
 ++++++++       depends on I2C
 ++++++++
         config SND_SOC_STA529
                tristate
         
index 2acf82f4a08a8bed4db26c6c444a0eabec688412,f500905e9373510d2bcfdb583b0569cec5994708,f500905e9373510d2bcfdb583b0569cec5994708,f500905e9373510d2bcfdb583b0569cec5994708,f500905e9373510d2bcfdb583b0569cec5994708,50a4825c8e4b216a8de1587e1c611c4cf29b7ca0,f500905e9373510d2bcfdb583b0569cec5994708,f500905e9373510d2bcfdb583b0569cec5994708,f500905e9373510d2bcfdb583b0569cec5994708..9d0755aa1d16929e970ef6e51792b2d39efba494
         #include <linux/i2c.h>
         #include <linux/regmap.h>
         #include <linux/slab.h>
+++++ +++#include <linux/of.h>
         #include <sound/core.h>
         #include <sound/pcm.h>
         #include <sound/pcm_params.h>
@@@@@@@@@@ -998,8 -998,8 -998,8 -998,8 -998,8 -999,10 -998,8 -998,8 -998,8 +999,10 @@@@@@@@@@ static int alc5623_i2c_probe(struct i2c
         {
                struct alc5623_platform_data *pdata;
                struct alc5623_priv *alc5623;
+++++ +++       struct device_node *np;
                unsigned int vid1, vid2;
                int ret;
+++++ +++       u32 val32;
         
                alc5623 = devm_kzalloc(&client->dev, sizeof(struct alc5623_priv),
                                       GFP_KERNEL);
                        dev_err(&client->dev, "failed to read vendor ID1: %d\n", ret);
                        return ret;
                }
 --------       vid1 = ((vid1 & 0xff) << 8) | (vid1 >> 8);
         
                ret = regmap_read(alc5623->regmap, ALC5623_VENDOR_ID2, &vid2);
                if (ret < 0) {
                        dev_err(&client->dev, "failed to read vendor ID2: %d\n", ret);
                        return ret;
                }
 ++++++++       vid2 >>= 8;
         
                if ((vid1 != 0x10ec) || (vid2 != id->driver_data)) {
                        dev_err(&client->dev, "unknown or wrong codec\n");
                if (pdata) {
                        alc5623->add_ctrl = pdata->add_ctrl;
                        alc5623->jack_det_ctrl = pdata->jack_det_ctrl;
+++++ +++       } else {
+++++ +++               if (client->dev.of_node) {
+++++ +++                       np = client->dev.of_node;
+++++ +++                       ret = of_property_read_u32(np, "add-ctrl", &val32);
+++++ +++                       if (!ret)
+++++ +++                               alc5623->add_ctrl = val32;
+++++ +++                       ret = of_property_read_u32(np, "jack-det-ctrl", &val32);
+++++ +++                       if (!ret)
+++++ +++                               alc5623->jack_det_ctrl = val32;
+++++ +++               }
                }
         
                alc5623->id = vid2;
@@@@@@@@@@ -1081,11 -1081,11 -1081,11 -1081,11 -1081,11 -1094,18 -1081,11 -1081,11 -1081,11 +1094,18 @@@@@@@@@@ static const struct i2c_device_id alc56
         };
         MODULE_DEVICE_TABLE(i2c, alc5623_i2c_table);
         
+++++ +++static const struct of_device_id alc5623_of_match[] = {
+++++ +++       { .compatible = "realtek,alc5623", },
+++++ +++       { }
+++++ +++};
+++++ +++MODULE_DEVICE_TABLE(of, alc5623_of_match);
+++++ +++
         /*  i2c codec control layer */
         static struct i2c_driver alc5623_i2c_driver = {
                .driver = {
                        .name = "alc562x-codec",
                        .owner = THIS_MODULE,
+++++ +++               .of_match_table = of_match_ptr(alc5623_of_match),
                },
                .probe = alc5623_i2c_probe,
                .remove =  alc5623_i2c_remove,
index 20527c4098ce5c02ae4fd603d70f11b2aade3e2c,df5a38dd8328db5922a4db96758b50d81e6255ee,df5a38dd8328db5922a4db96758b50d81e6255ee,df5a38dd8328db5922a4db96758b50d81e6255ee,df5a38dd8328db5922a4db96758b50d81e6255ee,df5a38dd8328db5922a4db96758b50d81e6255ee,83a7e2f91ecef492bdb558e7444ceb75a5e09f83,df5a38dd8328db5922a4db96758b50d81e6255ee,97eb1bc5bea70f367b5e3200c7f75a2296ef5760..2e5fcb559e9000892c59dea01b3b6ee54c1a166a
@@@@@@@@@@ -324,13 -324,13 -324,13 -324,13 -324,13 -324,13 -324,13 -324,13 -324,13 +324,13 @@@@@@@@@@ SOC_ENUM("LHPF2 Mode", arizona_lhpf2_mo
         SOC_ENUM("LHPF3 Mode", arizona_lhpf3_mode),
         SOC_ENUM("LHPF4 Mode", arizona_lhpf4_mode),
         
 --------SOC_VALUE_ENUM("ISRC1 FSL", arizona_isrc_fsl[0]),
 --------SOC_VALUE_ENUM("ISRC2 FSL", arizona_isrc_fsl[1]),
 --------SOC_VALUE_ENUM("ISRC3 FSL", arizona_isrc_fsl[2]),
 --------SOC_VALUE_ENUM("ISRC1 FSH", arizona_isrc_fsh[0]),
 --------SOC_VALUE_ENUM("ISRC2 FSH", arizona_isrc_fsh[1]),
 --------SOC_VALUE_ENUM("ISRC3 FSH", arizona_isrc_fsh[2]),
 --------SOC_VALUE_ENUM("ASRC RATE 1", arizona_asrc_rate1),
 ++++++++SOC_ENUM("ISRC1 FSL", arizona_isrc_fsl[0]),
 ++++++++SOC_ENUM("ISRC2 FSL", arizona_isrc_fsl[1]),
 ++++++++SOC_ENUM("ISRC3 FSL", arizona_isrc_fsl[2]),
 ++++++++SOC_ENUM("ISRC1 FSH", arizona_isrc_fsh[0]),
 ++++++++SOC_ENUM("ISRC2 FSH", arizona_isrc_fsh[1]),
 ++++++++SOC_ENUM("ISRC3 FSH", arizona_isrc_fsh[2]),
 ++++++++SOC_ENUM("ASRC RATE 1", arizona_asrc_rate1),
         
         ARIZONA_MIXER_CONTROLS("DSP1L", ARIZONA_DSP1LMIX_INPUT_1_SOURCE),
         ARIZONA_MIXER_CONTROLS("DSP1R", ARIZONA_DSP1RMIX_INPUT_1_SOURCE),
@@@@@@@@@@ -367,6 -367,6 -367,6 -367,6 -367,6 -367,6 -367,11 -367,6 -367,6 +367,11 @@@@@@@@@@ SOC_SINGLE("HPOUT2 SC Protect Switch", 
         SOC_SINGLE("HPOUT3 SC Protect Switch", ARIZONA_HP3_SHORT_CIRCUIT_CTRL,
                   ARIZONA_HP3_SC_ENA_SHIFT, 1, 0),
         
++++++ ++SOC_SINGLE("SPKDAT1 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_5L,
++++++ ++          ARIZONA_OUT5_OSR_SHIFT, 1, 0),
++++++ ++SOC_SINGLE("SPKDAT2 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_6L,
++++++ ++          ARIZONA_OUT6_OSR_SHIFT, 1, 0),
++++++ ++
         SOC_DOUBLE_R("HPOUT1 Digital Switch", ARIZONA_DAC_DIGITAL_VOLUME_1L,
                     ARIZONA_DAC_DIGITAL_VOLUME_1R, ARIZONA_OUT1L_MUTE_SHIFT, 1, 1),
         SOC_DOUBLE_R("HPOUT2 Digital Switch", ARIZONA_DAC_DIGITAL_VOLUME_2L,
@@@@@@@@@@ -592,7 -592,7 -592,7 -592,7 -592,7 -592,7 -597,7 -592,7 -592,7 +597,7 @@@@@@@@@@ static const struct soc_enum wm5110_aec
                                      wm5110_aec_loopback_values);
         
         static const struct snd_kcontrol_new wm5110_aec_loopback_mux =
 --------       SOC_DAPM_VALUE_ENUM("AEC Loopback", wm5110_aec_loopback);
 ++++++++       SOC_DAPM_ENUM("AEC Loopback", wm5110_aec_loopback);
         
         static const struct snd_soc_dapm_widget wm5110_dapm_widgets[] = {
         SND_SOC_DAPM_SUPPLY("SYSCLK", ARIZONA_SYSTEM_CLOCK_1, ARIZONA_SYSCLK_ENA_SHIFT,
@@@@@@@@@@ -774,7 -774,7 -774,7 -774,7 -774,7 -774,7 -779,7 -774,7 -774,7 +779,7 @@@@@@@@@@ SND_SOC_DAPM_PGA("ISRC3DEC3", ARIZONA_I
         SND_SOC_DAPM_PGA("ISRC3DEC4", ARIZONA_ISRC_3_CTRL_3,
                         ARIZONA_ISRC3_DEC3_ENA_SHIFT, 0, NULL, 0),
         
 --------SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1,
 ++++++++SND_SOC_DAPM_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1,
                               ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0,
                               &wm5110_aec_loopback_mux),
         
@@@@@@@@@@ -1589,6 -1589,10 -1589,10 -1589,10 -1589,10 -1589,10 -1594,10 -1589,10 -1589,6 +1594,6 @@@@@@@@@@ static int wm5110_codec_probe(struct sn
         
                priv->core.arizona->dapm = &codec->dapm;
         
 -------        ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap);
 -------        if (ret != 0)
 -------                return ret;
 ------- 
                arizona_init_spk(codec);
                arizona_init_gpio(codec);
         
@@@@@@@@@@ -1629,17 -1633,9 -1633,9 -1633,9 -1633,9 -1633,9 -1638,9 -1633,9 -1629,17 +1634,17 @@@@@@@@@@ static unsigned int wm5110_digital_vu[
                ARIZONA_DAC_DIGITAL_VOLUME_6R,
         };
         
 +++++++ static struct regmap *wm5110_get_regmap(struct device *dev)
 +++++++ {
 +++++++        struct wm5110_priv *priv = dev_get_drvdata(dev);
 +++++++ 
 +++++++        return priv->core.arizona->regmap;
 +++++++ }
 +++++++ 
         static struct snd_soc_codec_driver soc_codec_dev_wm5110 = {
                .probe = wm5110_codec_probe,
                .remove = wm5110_codec_remove,
 +++++++        .get_regmap = wm5110_get_regmap,
         
                .idle_bias_off = true,
         
index d9686dcd024c756e3efd8db5596d2c3e8d37adba,bb5f7b4e3ebbfe016146343c9c1178f568c93517,53e3ab5fa0de5f88d4a18e8da5fb766716148a42,bb5f7b4e3ebbfe016146343c9c1178f568c93517,bb5f7b4e3ebbfe016146343c9c1178f568c93517,bb5f7b4e3ebbfe016146343c9c1178f568c93517,bb5f7b4e3ebbfe016146343c9c1178f568c93517,bb5f7b4e3ebbfe016146343c9c1178f568c93517,bb5f7b4e3ebbfe016146343c9c1178f568c93517..ff15eec3ab2fc8ebe6f5b674ae5b386997eeffad
@@@@@@@@@@ -242,7 -242,7 -242,7 -242,7 -242,7 -242,7 -242,7 -242,7 -242,7 +242,7 @@@@@@@@@@ struct wm_coeff_ctl 
         static int wm_adsp_fw_get(struct snd_kcontrol *kcontrol,
                                  struct snd_ctl_elem_value *ucontrol)
         {
 --------       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
 ++++++++       struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
                struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
                struct wm_adsp *adsp = snd_soc_codec_get_drvdata(codec);
         
         static int wm_adsp_fw_put(struct snd_kcontrol *kcontrol,
                                  struct snd_ctl_elem_value *ucontrol)
         {
 --------       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
 ++++++++       struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
                struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
                struct wm_adsp *adsp = snd_soc_codec_get_drvdata(codec);
         
@@@@@@@@@@ -1625,7 -1625,7 -1625,7 -1625,7 -1625,7 -1625,7 -1625,7 -1625,7 -1625,7 +1625,7 @@@@@@@@@@ int wm_adsp2_early_event(struct snd_soc
                        break;
                default:
                        break;
-- ------       };
++ ++++++       }
         
                return 0;
         }