]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge remote-tracking branches 'asoc/topic/kirkwood', 'asoc/topic/max9867', 'asoc...
authorMark Brown <broonie@kernel.org>
Fri, 1 Sep 2017 11:12:44 +0000 (12:12 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 1 Sep 2017 11:12:44 +0000 (12:12 +0100)
1  2  3  4  5 
sound/soc/codecs/max98926.c
sound/soc/codecs/max98927.c

index 59d03d036945bcbdac936e936e7f87e633693fed,1eff7e0b092e1f5773fc88f7110cb71e37d80e44,1eff7e0b092e1f5773fc88f7110cb71e37d80e44,13d2708657e1658044cb1b49bdd3fbd63d4c4b56,1eff7e0b092e1f5773fc88f7110cb71e37d80e44..03d07bf4d942198af925cb33fe5d65de9883f3bf
@@@@@@ -213,8 -213,8 -213,8 -213,8 -213,8 +213,8 @@@@@@ static bool max98926_readable_register(
        }
     };
     
--- -DECLARE_TLV_DB_SCALE(max98926_spk_tlv, -600, 100, 0);
--- -DECLARE_TLV_DB_RANGE(max98926_current_tlv,
+++ +static DECLARE_TLV_DB_SCALE(max98926_spk_tlv, -600, 100, 0);
+++ +static DECLARE_TLV_DB_RANGE(max98926_current_tlv,
        0, 11, TLV_DB_SCALE_ITEM(20, 20, 0),
        12, 15, TLV_DB_SCALE_ITEM(320, 40, 0),
     );
@@@@@@ -459,7 -459,7 -459,7 -459,7 -459,7 +459,7 @@@@@@ static int max98926_dai_hw_params(struc
     #define MAX98926_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
                SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
     
 -- -static struct snd_soc_dai_ops max98926_dai_ops = {
 ++ +static const struct snd_soc_dai_ops max98926_dai_ops = {
        .set_fmt = max98926_dai_set_fmt,
        .hw_params = max98926_dai_hw_params,
     };
@@@@@@ -496,7 -496,7 -496,7 -496,7 -496,7 +496,7 @@@@@@ static int max98926_probe(struct snd_so
        return 0;
     }
     
 ----static struct snd_soc_codec_driver soc_codec_dev_max98926 = {
 ++++static const struct snd_soc_codec_driver soc_codec_dev_max98926 = {
        .probe  = max98926_probe,
        .component_driver = {
                .controls               = max98926_snd_controls,
index b0380b560bf538ecfd686154ee3bc0ebc9457b10,b5ee29499e166d887f6e62e3b2dfcfc05ef3aa4c,b5ee29499e166d887f6e62e3b2dfcfc05ef3aa4c,b5ee29499e166d887f6e62e3b2dfcfc05ef3aa4c,926871e361321833b635c6dcea5c01cd011d6ac5..d9dbbe72f8ad4cb9cfbbccba06153359cc1529bc
@@@@@@ -44,9 -44,9 -44,9 -44,9 -44,9 +44,9 @@@@@@ static struct reg_default max98927_reg[
        {MAX98927_R0011_CLK_MON,  0x00},
        {MAX98927_R0012_WDOG_CTRL,  0x00},
        {MAX98927_R0013_WDOG_RST,  0x00},
----    {MAX98927_R0014_MEAS_ADC_THERM_WARN_THRESH,  0x00},
----    {MAX98927_R0015_MEAS_ADC_THERM_SHDN_THRESH,  0x00},
----    {MAX98927_R0016_MEAS_ADC_THERM_HYSTERESIS,  0x00},
++++    {MAX98927_R0014_MEAS_ADC_THERM_WARN_THRESH,  0x75},
++++    {MAX98927_R0015_MEAS_ADC_THERM_SHDN_THRESH,  0x8c},
++++    {MAX98927_R0016_MEAS_ADC_THERM_HYSTERESIS,  0x08},
        {MAX98927_R0017_PIN_CFG,  0x55},
        {MAX98927_R0018_PCM_RX_EN_A,  0x00},
        {MAX98927_R0019_PCM_RX_EN_B,  0x00},
        {MAX98927_R003A_AMP_EN,  0x00},
        {MAX98927_R003B_SPK_SRC_SEL,  0x00},
        {MAX98927_R003C_SPK_GAIN,  0x00},
----    {MAX98927_R003D_SSM_CFG,  0x01},
++++    {MAX98927_R003D_SSM_CFG,  0x04},
        {MAX98927_R003E_MEAS_EN,  0x00},
        {MAX98927_R003F_MEAS_DSP_CFG,  0x04},
        {MAX98927_R0040_BOOST_CTRL0,  0x00},
        {MAX98927_R0041_BOOST_CTRL3,  0x00},
        {MAX98927_R0042_BOOST_CTRL1,  0x00},
        {MAX98927_R0043_MEAS_ADC_CFG,  0x00},
----    {MAX98927_R0044_MEAS_ADC_BASE_MSB,  0x00},
++++    {MAX98927_R0044_MEAS_ADC_BASE_MSB,  0x01},
        {MAX98927_R0045_MEAS_ADC_BASE_LSB,  0x00},
        {MAX98927_R0046_ADC_CH0_DIVIDE,  0x00},
        {MAX98927_R0047_ADC_CH1_DIVIDE,  0x00},
@@@@@@ -159,7 -159,7 -159,7 -159,7 -159,7 +159,7 @@@@@@ static int max98927_dai_set_fmt(struct 
                mode = MAX98927_PCM_MASTER_MODE_MASTER;
                break;
        default:
----            dev_err(codec->dev, "DAI clock mode unsupported");
++++            dev_err(codec->dev, "DAI clock mode unsupported\n");
                return -EINVAL;
        }
     
                invert = MAX98927_PCM_MODE_CFG_PCM_BCLKEDGE;
                break;
        default:
----            dev_err(codec->dev, "DAI invert mode unsupported");
++++            dev_err(codec->dev, "DAI invert mode unsupported\n");
                return -EINVAL;
        }
     
@@@@@@ -311,7 -311,7 -311,7 -311,7 -311,7 +311,7 @@@@@@ static int max98927_dai_hw_params(struc
                chan_sz = MAX98927_PCM_MODE_CFG_CHANSZ_32;
                break;
        default:
----            dev_err(codec->dev, "format unsupported %d",
++++            dev_err(codec->dev, "format unsupported %d\n",
                        params_format(params));
                goto err;
        }
@@@@@@ -418,11 -418,11 -418,11 -418,11 -418,6 +418,6 @@@@@@ static int max98927_dac_event(struct sn
                regmap_update_bits(max98927->regmap,
                        MAX98927_R003A_AMP_EN,
                        MAX98927_AMP_EN_MASK, 1);
----            /* enable VMON and IMON */
----            regmap_update_bits(max98927->regmap,
----                    MAX98927_R003E_MEAS_EN,
----                    MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN,
----                    MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN);
                regmap_update_bits(max98927->regmap,
                        MAX98927_R00FF_GLOBAL_SHDN,
                        MAX98927_GLOBAL_EN_MASK, 1);
                regmap_update_bits(max98927->regmap,
                        MAX98927_R003A_AMP_EN,
                        MAX98927_AMP_EN_MASK, 0);
----            /* disable VMON and IMON */
----            regmap_update_bits(max98927->regmap,
----                    MAX98927_R003E_MEAS_EN,
----                    MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN, 0);
                break;
        default:
                return 0;
@@@@@@ -456,14 -456,14 -456,14 -456,14 -447,24 +447,24 @@@@@@ static const struct soc_enum dai_sel_en
     static const struct snd_kcontrol_new max98927_dai_controls =
        SOC_DAPM_ENUM("DAI Sel", dai_sel_enum);
     
++++ static const struct snd_kcontrol_new max98927_vi_control =
++++    SOC_DAPM_SINGLE("Switch", MAX98927_R003F_MEAS_DSP_CFG, 2, 1, 0);
++++ 
     static const struct snd_soc_dapm_widget max98927_dapm_widgets[] = {
----    SND_SOC_DAPM_AIF_IN("DAI_OUT", "HiFi Playback", 0, SND_SOC_NOPM, 0, 0),
        SND_SOC_DAPM_DAC_E("Amp Enable", "HiFi Playback", MAX98927_R003A_AMP_EN,
                0, 0, max98927_dac_event,
                SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
        SND_SOC_DAPM_MUX("DAI Sel Mux", SND_SOC_NOPM, 0, 0,
                &max98927_dai_controls),
        SND_SOC_DAPM_OUTPUT("BE_OUT"),
++++    SND_SOC_DAPM_AIF_OUT("Voltage Sense", "HiFi Capture",  0,
++++            MAX98927_R003E_MEAS_EN, 0, 0),
++++    SND_SOC_DAPM_AIF_OUT("Current Sense", "HiFi Capture",  0,
++++            MAX98927_R003E_MEAS_EN, 1, 0),
++++    SND_SOC_DAPM_SWITCH("VI Sense", SND_SOC_NOPM, 0, 0,
++++            &max98927_vi_control),
++++    SND_SOC_DAPM_SIGGEN("VMON"),
++++    SND_SOC_DAPM_SIGGEN("IMON"),
     };
     
     static DECLARE_TLV_DB_SCALE(max98927_spk_tlv, 300, 300, 0);
@@@@@@ -495,6 -495,6 -495,6 -495,6 -496,13 +496,13 @@@@@@ static bool max98927_volatile_reg(struc
     {
        switch (reg) {
        case MAX98927_R0001_INT_RAW1 ... MAX98927_R0009_INT_FLAG3:
++++    case MAX98927_R004C_MEAS_ADC_CH0_READ:
++++    case MAX98927_R004D_MEAS_ADC_CH1_READ:
++++    case MAX98927_R004E_MEAS_ADC_CH2_READ:
++++    case MAX98927_R0051_BROWNOUT_STATUS:
++++    case MAX98927_R0087_ENV_TRACK_BOOST_VOUT_READ:
++++    case MAX98927_R01FF_REV_ID:
++++    case MAX98927_R0100_SOFT_RESET:
                return true;
        default:
                return false;
@@@@@@ -543,11 -543,11 -543,11 -543,11 -551,16 +551,16 @@@@@@ static const struct snd_kcontrol_new ma
     };
     
     static const struct snd_soc_dapm_route max98927_audio_map[] = {
----    {"Amp Enable", NULL, "DAI_OUT"},
++++    /* Plabyack */
        {"DAI Sel Mux", "Left", "Amp Enable"},
        {"DAI Sel Mux", "Right", "Amp Enable"},
        {"DAI Sel Mux", "LeftRight", "Amp Enable"},
        {"BE_OUT", NULL, "DAI Sel Mux"},
++++    /* Capture */
++++    { "VI Sense", "Switch", "VMON" },
++++    { "VI Sense", "Switch", "IMON" },
++++    { "Voltage Sense", NULL, "VI Sense" },
++++    { "Current Sense", NULL, "VI Sense" },
     };
     
     static struct snd_soc_dai_driver max98927_dai[] = {
@@@@@@ -577,6 -577,7 -577,7 -577,7 -590,7 +590,6 @@@@@@ static int max98927_probe(struct snd_so
     
        max98927->codec = codec;
        codec->control_data = max98927->regmap;
 ----   codec->cache_bypass = 1;
     
        /* Software Reset */
        regmap_write(max98927->regmap,
        return 0;
     }
     
++++ #ifdef CONFIG_PM_SLEEP
++++ static int max98927_suspend(struct device *dev)
++++ {
++++    struct max98927_priv *max98927 = dev_get_drvdata(dev);
++++ 
++++    regcache_cache_only(max98927->regmap, true);
++++    regcache_mark_dirty(max98927->regmap);
++++    return 0;
++++ }
++++ static int max98927_resume(struct device *dev)
++++ {
++++    struct max98927_priv *max98927 = dev_get_drvdata(dev);
++++ 
++++    regmap_write(max98927->regmap,
++++            MAX98927_R0100_SOFT_RESET, MAX98927_SOFT_RESET);
++++    regcache_cache_only(max98927->regmap, false);
++++    regcache_sync(max98927->regmap);
++++    return 0;
++++ }
++++ #endif
++++ 
++++ static const struct dev_pm_ops max98927_pm = {
++++    SET_SYSTEM_SLEEP_PM_OPS(max98927_suspend, max98927_resume)
++++ };
++++ 
     static const struct snd_soc_codec_driver soc_codec_dev_max98927 = {
        .probe = max98927_probe,
        .component_driver = {
@@@@@@ -720,14 -721,14 -721,14 -721,14 -759,14 +758,14 @@@@@@ static void max98927_slot_config(struc
        struct max98927_priv *max98927)
     {
        int value;
++++    struct device *dev = &i2c->dev;
     
----    if (!of_property_read_u32(i2c->dev.of_node,
----            "vmon-slot-no", &value))
++++    if (!device_property_read_u32(dev, "vmon-slot-no", &value))
                max98927->v_l_slot = value & 0xF;
        else
                max98927->v_l_slot = 0;
----    if (!of_property_read_u32(i2c->dev.of_node,
----            "imon-slot-no", &value))
++++ 
++++    if (!device_property_read_u32(dev, "imon-slot-no", &value))
                max98927->i_l_slot = value & 0xF;
        else
                max98927->i_l_slot = 1;
@@@@@@ -826,7 -827,7 -827,7 -827,7 -865,7 +864,7 @@@@@@ static struct i2c_driver max98927_i2c_d
                .name = "max98927",
                .of_match_table = of_match_ptr(max98927_of_match),
                .acpi_match_table = ACPI_PTR(max98927_acpi_match),
----            .pm = NULL,
++++            .pm = &max98927_pm,
        },
        .probe  = max98927_i2c_probe,
        .remove = max98927_i2c_remove,