Merge remote-tracking branches 'asoc/topic/tas2552', 'asoc/topic/tas5086', 'asoc...
authorMark Brown <broonie@kernel.org>
Sun, 30 Aug 2015 14:57:34 +0000 (15:57 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 30 Aug 2015 14:57:34 +0000 (15:57 +0100)
52 files changed:
include/sound/soc-topology.h
sound/soc/codecs/88pm860x-codec.c
sound/soc/codecs/ab8500-codec.c
sound/soc/codecs/adau1373.c
sound/soc/codecs/alc5623.c
sound/soc/codecs/alc5632.c
sound/soc/codecs/cs42l52.c
sound/soc/codecs/cs42l56.c
sound/soc/codecs/cs42l73.c
sound/soc/codecs/da7210.c
sound/soc/codecs/da7213.c
sound/soc/codecs/da9055.c
sound/soc/codecs/jz4740.c
sound/soc/codecs/max9768.c
sound/soc/codecs/max98088.c
sound/soc/codecs/max98090.c
sound/soc/codecs/max98095.c
sound/soc/codecs/max9850.c
sound/soc/codecs/max9877.c
sound/soc/codecs/rt5631.c
sound/soc/codecs/rt5640.c
sound/soc/codecs/rt5645.c
sound/soc/codecs/rt5651.c
sound/soc/codecs/rt5670.c
sound/soc/codecs/rt5677.c
sound/soc/codecs/sgtl5000.c
sound/soc/codecs/ssm2602.c
sound/soc/codecs/tas2552.c
sound/soc/codecs/tas2552.h
sound/soc/codecs/tas5086.c
sound/soc/codecs/tpa6130a2.c
sound/soc/codecs/twl4030.c
sound/soc/codecs/uda1380.c
sound/soc/codecs/wm8350.c
sound/soc/codecs/wm8400.c
sound/soc/codecs/wm8737.c
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8961.c
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8990.c
sound/soc/codecs/wm8991.c
sound/soc/codecs/wm8993.c
sound/soc/codecs/wm9081.c
sound/soc/codecs/wm9090.c
sound/soc/codecs/wm9713.c
sound/soc/codecs/wm_hubs.c
sound/soc/soc-topology.c
sound/soc/tegra/tegra20_das.c
sound/soc/tegra/tegra20_i2s.c
sound/soc/tegra/tegra20_spdif.c
sound/soc/tegra/tegra30_ahub.c
sound/soc/tegra/tegra30_i2s.c

index 427bc41..086cd7f 100644 (file)
@@ -89,6 +89,13 @@ struct snd_soc_tplg_kcontrol_ops {
                struct snd_ctl_elem_info *uinfo);
 };
 
+/* Bytes ext operations, for TLV byte controls */
+struct snd_soc_tplg_bytes_ext_ops {
+       u32 id;
+       int (*get)(unsigned int __user *bytes, unsigned int size);
+       int (*put)(const unsigned int __user *bytes, unsigned int size);
+};
+
 /*
  * DAPM widget event handlers - used to map handlers onto widgets.
  */
@@ -136,9 +143,13 @@ struct snd_soc_tplg_ops {
        int (*manifest)(struct snd_soc_component *,
                struct snd_soc_tplg_manifest *);
 
-       /* bespoke kcontrol handlers available for binding */
+       /* vendor specific kcontrol handlers available for binding */
        const struct snd_soc_tplg_kcontrol_ops *io_ops;
        int io_ops_count;
+
+       /* vendor specific bytes ext handlers available for binding */
+       const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+       int bytes_ext_ops_count;
 };
 
 #ifdef CONFIG_SND_SOC_TOPOLOGY
index 4d91a6a..e8bed6b 100644 (file)
@@ -156,33 +156,29 @@ static const DECLARE_TLV_DB_SCALE(dpga_tlv, -9450, 150, 1);
 static const DECLARE_TLV_DB_SCALE(adc_tlv, -900, 300, 0);
 
 /* {-23, -17, -13.5, -11, -9, -6, -3, 0}dB */
-static const unsigned int mic_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(mic_tlv,
        0, 0, TLV_DB_SCALE_ITEM(-2300, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(-1700, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(-1350, 0, 0),
        3, 3, TLV_DB_SCALE_ITEM(-1100, 0, 0),
-       4, 7, TLV_DB_SCALE_ITEM(-900, 300, 0),
-};
+       4, 7, TLV_DB_SCALE_ITEM(-900, 300, 0)
+);
 
 /* {0, 0, 0, -6, 0, 6, 12, 18}dB */
-static const unsigned int aux_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(aux_tlv,
        0, 2, TLV_DB_SCALE_ITEM(0, 0, 0),
-       3, 7, TLV_DB_SCALE_ITEM(-600, 600, 0),
-};
+       3, 7, TLV_DB_SCALE_ITEM(-600, 600, 0)
+);
 
 /* {-16, -13, -10, -7, -5.2, -3,3, -2.2, 0}dB, mute instead of -16dB */
-static const unsigned int out_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(out_tlv,
        0, 3, TLV_DB_SCALE_ITEM(-1600, 300, 1),
        4, 4, TLV_DB_SCALE_ITEM(-520, 0, 0),
        5, 5, TLV_DB_SCALE_ITEM(-330, 0, 0),
-       6, 7, TLV_DB_SCALE_ITEM(-220, 220, 0),
-};
+       6, 7, TLV_DB_SCALE_ITEM(-220, 220, 0)
+);
 
-static const unsigned int st_tlv[] = {
-       TLV_DB_RANGE_HEAD(8),
+static const DECLARE_TLV_DB_RANGE(st_tlv,
        0, 1, TLV_DB_SCALE_ITEM(-12041, 602, 0),
        2, 3, TLV_DB_SCALE_ITEM(-11087, 250, 0),
        4, 5, TLV_DB_SCALE_ITEM(-10643, 158, 0),
@@ -190,8 +186,8 @@ static const unsigned int st_tlv[] = {
        8, 9, TLV_DB_SCALE_ITEM(-10133, 92, 0),
        10, 13, TLV_DB_SCALE_ITEM(-9958, 70, 0),
        14, 17, TLV_DB_SCALE_ITEM(-9689, 53, 0),
-       18, 271, TLV_DB_SCALE_ITEM(-9484, 37, 0),
-};
+       18, 271, TLV_DB_SCALE_ITEM(-9484, 37, 0)
+);
 
 /* Sidetone Gain = M * 2^(-5-N) */
 struct st_gain {
index c7d243d..affb192 100644 (file)
@@ -1335,11 +1335,10 @@ static DECLARE_TLV_DB_SCALE(dax_dig_gain_tlv, -6300, 100, 1);
 static DECLARE_TLV_DB_SCALE(hs_ear_dig_gain_tlv, -100, 100, 1);
 /* -1dB = Mute */
 
-static const unsigned int hs_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(hs_gain_tlv,
        0, 3, TLV_DB_SCALE_ITEM(-3200, 400, 0),
-       4, 15, TLV_DB_SCALE_ITEM(-1800, 200, 0),
-};
+       4, 15, TLV_DB_SCALE_ITEM(-1800, 200, 0)
+);
 
 static DECLARE_TLV_DB_SCALE(mic_gain_tlv, 0, 100, 0);
 
index 6c96860..fe1353a 100644 (file)
@@ -320,13 +320,12 @@ static const struct reg_default adau1373_reg_defaults[] = {
        { ADAU1373_DIGEN,               0x00 },
 };
 
-static const unsigned int adau1373_out_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(adau1373_out_tlv,
        0, 7, TLV_DB_SCALE_ITEM(-7900, 400, 1),
        8, 15, TLV_DB_SCALE_ITEM(-4700, 300, 0),
        16, 23, TLV_DB_SCALE_ITEM(-2300, 200, 0),
-       24, 31, TLV_DB_SCALE_ITEM(-700, 100, 0),
-};
+       24, 31, TLV_DB_SCALE_ITEM(-700, 100, 0)
+);
 
 static const DECLARE_TLV_DB_MINMAX(adau1373_digital_tlv, -9563, 0);
 static const DECLARE_TLV_DB_SCALE(adau1373_in_pga_tlv, -1300, 100, 1);
@@ -381,12 +380,11 @@ static const char *adau1373_bass_hpf_cutoff_text[] = {
        "158Hz", "232Hz", "347Hz", "520Hz",
 };
 
-static const unsigned int adau1373_bass_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(adau1373_bass_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-600, 600, 1),
        3, 4, TLV_DB_SCALE_ITEM(950, 250, 0),
-       5, 7, TLV_DB_SCALE_ITEM(1400, 150, 0),
-};
+       5, 7, TLV_DB_SCALE_ITEM(1400, 150, 0)
+);
 
 static SOC_ENUM_SINGLE_DECL(adau1373_bass_lpf_cutoff_enum,
        ADAU1373_BASS1, 5, adau1373_bass_lpf_cutoff_text);
@@ -414,11 +412,10 @@ static SOC_ENUM_SINGLE_DECL(adau1373_3d_level_enum,
 static SOC_ENUM_SINGLE_DECL(adau1373_3d_cutoff_enum,
        ADAU1373_3D_CTRL1, 0, adau1373_3d_cutoff_text);
 
-static const unsigned int adau1373_3d_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(adau1373_3d_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
-       1, 7, TLV_DB_LINEAR_ITEM(-1800, -120),
-};
+       1, 7, TLV_DB_LINEAR_ITEM(-1800, -120)
+);
 
 static const char *adau1373_lr_mux_text[] = {
        "Mute",
index cf99c4e..d2e3a3e 100644 (file)
@@ -82,12 +82,11 @@ static int amp_mixer_event(struct snd_soc_dapm_widget *w,
 static const DECLARE_TLV_DB_SCALE(vol_tlv, -3450, 150, 0);
 static const DECLARE_TLV_DB_SCALE(hp_tlv, -4650, 150, 0);
 static const DECLARE_TLV_DB_SCALE(adc_rec_tlv, -1650, 150, 0);
-static const unsigned int boost_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(boost_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
-       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0),
-};
+       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(dig_tlv, 0, 600, 0);
 
 static const struct snd_kcontrol_new alc5621_vol_snd_controls[] = {
index ef6de51..4d3ba33 100644 (file)
@@ -146,11 +146,10 @@ static const DECLARE_TLV_DB_SCALE(vol_tlv, -3450, 150, 0);
 static const DECLARE_TLV_DB_SCALE(hp_tlv, -4650, 150, 0);
 /* -16.5db min scale, 1.5db steps, no mute */
 static const DECLARE_TLV_DB_SCALE(adc_rec_tlv, -1650, 150, 0);
-static const unsigned int boost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(boost_tlv,
        0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
-       1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0),
-};
+       1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0)
+);
 /* 0db min scale, 6 db steps, no mute */
 static const DECLARE_TLV_DB_SCALE(dig_tlv, 0, 600, 0);
 /* 0db min scalem 0.75db steps, no mute */
index b256424..47b97fc 100644 (file)
@@ -145,11 +145,10 @@ static DECLARE_TLV_DB_SCALE(mix_tlv, -50, 50, 0);
 
 static DECLARE_TLV_DB_SCALE(beep_tlv, -56, 200, 0);
 
-static const unsigned int limiter_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(limiter_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-3000, 600, 0),
-       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0),
-};
+       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0)
+);
 
 static const char * const cs42l52_adca_text[] = {
        "Input1A", "Input2A", "Input3A", "Input4A", "PGA Input Left"};
index 52fe7a5..7cd5f76 100644 (file)
@@ -140,21 +140,18 @@ static DECLARE_TLV_DB_SCALE(tone_tlv, -1050, 150, 0);
 static DECLARE_TLV_DB_SCALE(preamp_tlv, 0, 1000, 0);
 static DECLARE_TLV_DB_SCALE(pga_tlv, -600, 50, 0);
 
-static const unsigned int ngnb_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(ngnb_tlv,
        0, 1, TLV_DB_SCALE_ITEM(-8200, 600, 0),
-       2, 5, TLV_DB_SCALE_ITEM(-7600, 300, 0),
-};
-static const unsigned int ngb_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+       2, 5, TLV_DB_SCALE_ITEM(-7600, 300, 0)
+);
+static const DECLARE_TLV_DB_RANGE(ngb_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-6400, 600, 0),
-       3, 7, TLV_DB_SCALE_ITEM(-4600, 300, 0),
-};
-static const unsigned int alc_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+       3, 7, TLV_DB_SCALE_ITEM(-4600, 300, 0)
+);
+static const DECLARE_TLV_DB_RANGE(alc_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-3000, 600, 0),
-       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0),
-};
+       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0)
+);
 
 static const char * const beep_config_text[] = {
        "Off", "Single", "Multiple", "Continuous"
index a8f4686..42a8fd4 100644 (file)
@@ -161,11 +161,10 @@ static bool cs42l73_readable_register(struct device *dev, unsigned int reg)
        }
 }
 
-static const unsigned int hpaloa_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(hpaloa_tlv,
        0, 13, TLV_DB_SCALE_ITEM(-7600, 200, 0),
-       14, 75, TLV_DB_SCALE_ITEM(-4900, 100, 0),
-};
+       14, 75, TLV_DB_SCALE_ITEM(-4900, 100, 0)
+);
 
 static DECLARE_TLV_DB_SCALE(adc_boost_tlv, 0, 2500, 0);
 
@@ -175,11 +174,10 @@ static DECLARE_TLV_DB_SCALE(ipd_tlv, -9600, 100, 0);
 
 static DECLARE_TLV_DB_SCALE(micpga_tlv, -600, 50, 0);
 
-static const unsigned int limiter_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(limiter_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-3000, 600, 0),
-       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0),
-};
+       3, 7, TLV_DB_SCALE_ITEM(-1200, 300, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(attn_tlv, -6300, 100, 1);
 
index c7b3e92..7dc52fe 100644 (file)
@@ -267,33 +267,29 @@ enum clk_src {
  *
  * Reserved area are considered as "mute".
  */
-static const unsigned int hp_out_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(hp_out_tlv,
        0x0, 0x10, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* -54 dB to +15 dB */
-       0x11, 0x3f, TLV_DB_SCALE_ITEM(-5400, 150, 0),
-};
+       0x11, 0x3f, TLV_DB_SCALE_ITEM(-5400, 150, 0)
+);
 
-static const unsigned int lineout_vol_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(lineout_vol_tlv,
        0x0, 0x10, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* -54dB to 15dB */
        0x11, 0x3f, TLV_DB_SCALE_ITEM(-5400, 150, 0)
-};
+);
 
-static const unsigned int mono_vol_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(mono_vol_tlv,
        0x0, 0x2, TLV_DB_SCALE_ITEM(-1800, 0, 1),
        /* -18dB to 6dB */
        0x3, 0x7, TLV_DB_SCALE_ITEM(-1800, 600, 0)
-};
+);
 
-static const unsigned int aux1_vol_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(aux1_vol_tlv,
        0x0, 0x10, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* -48dB to 21dB */
        0x11, 0x3f, TLV_DB_SCALE_ITEM(-4800, 150, 0)
-};
+);
 
 static const DECLARE_TLV_DB_SCALE(eq_gain_tlv, -1050, 150, 0);
 static const DECLARE_TLV_DB_SCALE(adc_eq_master_gain_tlv, -1800, 600, 1);
index 47fc3be..a9c86ef 100644 (file)
 
 
 /* Gain and Volume */
-static const unsigned int aux_vol_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(aux_vol_tlv,
        /* -54dB */
        0x0, 0x11, TLV_DB_SCALE_ITEM(-5400, 0, 0),
        /* -52.5dB to 15dB */
        0x12, 0x3f, TLV_DB_SCALE_ITEM(-5250, 150, 0)
-};
+);
 
-static const unsigned int digital_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(digital_gain_tlv,
        0x0, 0x07, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* -78dB to 12dB */
        0x08, 0x7f, TLV_DB_SCALE_ITEM(-7800, 75, 0)
-};
+);
 
-static const unsigned int alc_analog_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(alc_analog_gain_tlv,
        0x0, 0x0, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* 0dB to 36dB */
        0x01, 0x07, TLV_DB_SCALE_ITEM(0, 600, 0)
-};
+);
 
 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -600, 600, 0);
 static const DECLARE_TLV_DB_SCALE(mixin_gain_tlv, -450, 150, 0);
index 19635d8..0b2ede8 100644 (file)
@@ -289,26 +289,23 @@ enum clk_src {
 
 /* Gain and Volume */
 
-static const unsigned int aux_vol_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(aux_vol_tlv,
        0x0, 0x10, TLV_DB_SCALE_ITEM(-5400, 0, 0),
        /* -54dB to 15dB */
        0x11, 0x3f, TLV_DB_SCALE_ITEM(-5400, 150, 0)
-};
+);
 
-static const unsigned int digital_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(digital_gain_tlv,
        0x0, 0x07, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* -78dB to 12dB */
        0x08, 0x7f, TLV_DB_SCALE_ITEM(-7800, 75, 0)
-};
+);
 
-static const unsigned int alc_analog_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(alc_analog_gain_tlv,
        0x0, 0x0, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 1),
        /* 0dB to 36dB */
        0x01, 0x07, TLV_DB_SCALE_ITEM(0, 600, 0)
-};
+);
 
 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -600, 600, 0);
 static const DECLARE_TLV_DB_SCALE(mixin_gain_tlv, -450, 150, 0);
index 9363fdb..1f5ab99 100644 (file)
@@ -78,11 +78,10 @@ struct jz4740_codec {
        struct regmap *regmap;
 };
 
-static const unsigned int jz4740_mic_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(jz4740_mic_tlv,
        0, 2, TLV_DB_SCALE_ITEM(0, 600, 0),
-       3, 3, TLV_DB_SCALE_ITEM(2000, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(2000, 0, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(jz4740_out_tlv, 0, 200, 0);
 static const DECLARE_TLV_DB_SCALE(jz4740_in_tlv, -3450, 150, 0);
index bd41128..5b82e26 100644 (file)
@@ -63,8 +63,7 @@ static int max9768_set_gpio(struct snd_kcontrol *kcontrol,
        return 0;
 }
 
-static const unsigned int volume_tlv[] = {
-       TLV_DB_RANGE_HEAD(43),
+static const DECLARE_TLV_DB_RANGE(volume_tlv,
        0, 0, TLV_DB_SCALE_ITEM(-16150, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(-9280, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(-9030, 0, 0),
@@ -107,8 +106,8 @@ static const unsigned int volume_tlv[] = {
        51, 57, TLV_DB_SCALE_ITEM(290, 50, 0),
        58, 58, TLV_DB_SCALE_ITEM(650, 0, 0),
        59, 62, TLV_DB_SCALE_ITEM(700, 60, 0),
-       63, 63, TLV_DB_SCALE_ITEM(950, 0, 0),
-};
+       63, 63, TLV_DB_SCALE_ITEM(950, 0, 0)
+);
 
 static const struct snd_kcontrol_new max9768_volume[] = {
        SOC_SINGLE_TLV("Playback Volume", MAX9768_VOL, 0, 63, 0, volume_tlv),
index 2c2df17..20dcc49 100644 (file)
@@ -425,29 +425,26 @@ static int max98088_mic2pre_get(struct snd_kcontrol *kcontrol,
        return 0;
 }
 
-static const unsigned int max98088_micboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
-       0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
-       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0),
-};
+static const DECLARE_TLV_DB_RANGE(max98088_micboost_tlv,
+       0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
+       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0)
+);
 
-static const unsigned int max98088_hp_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98088_hp_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6700, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-4000, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1700, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(-400, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0)
+);
 
-static const unsigned int max98088_spk_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98088_spk_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6200, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-3500, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1200, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(100, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0)
+);
 
 static const struct snd_kcontrol_new max98088_snd_controls[] = {
 
index cdf534e..584aab8 100644 (file)
@@ -293,22 +293,20 @@ static int max98090_reset(struct max98090_priv *max98090)
        return ret;
 }
 
-static const unsigned int max98090_micboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(max98090_micboost_tlv,
        0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
-       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0),
-};
+       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(max98090_mic_tlv, 0, 100, 0);
 
 static const DECLARE_TLV_DB_SCALE(max98090_line_single_ended_tlv,
        -600, 600, 0);
 
-static const unsigned int max98090_line_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(max98090_line_tlv,
        0, 3, TLV_DB_SCALE_ITEM(-600, 300, 0),
-       4, 5, TLV_DB_SCALE_ITEM(1400, 600, 0),
-};
+       4, 5, TLV_DB_SCALE_ITEM(1400, 600, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(max98090_avg_tlv, 0, 600, 0);
 static const DECLARE_TLV_DB_SCALE(max98090_av_tlv, -1200, 100, 0);
@@ -324,38 +322,34 @@ static const DECLARE_TLV_DB_SCALE(max98090_alccomp_tlv, -3100, 100, 0);
 static const DECLARE_TLV_DB_SCALE(max98090_drcexp_tlv, -6600, 100, 0);
 static const DECLARE_TLV_DB_SCALE(max98090_sdg_tlv, 50, 200, 0);
 
-static const unsigned int max98090_mixout_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(max98090_mixout_tlv,
        0, 1, TLV_DB_SCALE_ITEM(-1200, 250, 0),
-       2, 3, TLV_DB_SCALE_ITEM(-600, 600, 0),
-};
+       2, 3, TLV_DB_SCALE_ITEM(-600, 600, 0)
+);
 
-static const unsigned int max98090_hp_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98090_hp_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6700, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-4000, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1700, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(-400, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0)
+);
 
-static const unsigned int max98090_spk_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98090_spk_tlv,
        0, 4, TLV_DB_SCALE_ITEM(-4800, 400, 0),
        5, 10, TLV_DB_SCALE_ITEM(-2900, 300, 0),
        11, 14, TLV_DB_SCALE_ITEM(-1200, 200, 0),
        15, 29, TLV_DB_SCALE_ITEM(-500, 100, 0),
-       30, 39, TLV_DB_SCALE_ITEM(950, 50, 0),
-};
+       30, 39, TLV_DB_SCALE_ITEM(950, 50, 0)
+);
 
-static const unsigned int max98090_rcv_lout_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98090_rcv_lout_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6200, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-3500, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1200, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(100, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0)
+);
 
 static int max98090_get_enab_tlv(struct snd_kcontrol *kcontrol,
                                struct snd_ctl_elem_value *ucontrol)
index ad4909e..1fedac5 100644 (file)
@@ -398,48 +398,43 @@ static int max98095_mic2pre_get(struct snd_kcontrol *kcontrol,
        return 0;
 }
 
-static const unsigned int max98095_micboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(max98095_micboost_tlv,
        0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
-       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0),
-};
+       2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(max98095_mic_tlv, 0, 100, 0);
 static const DECLARE_TLV_DB_SCALE(max98095_adc_tlv, -1200, 100, 0);
 static const DECLARE_TLV_DB_SCALE(max98095_adcboost_tlv, 0, 600, 0);
 
-static const unsigned int max98095_hp_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98095_hp_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6700, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-4000, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1700, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(-400, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(150, 50, 0)
+);
 
-static const unsigned int max98095_spk_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(max98095_spk_tlv,
        0, 10, TLV_DB_SCALE_ITEM(-5900, 400, 0),
        11, 18, TLV_DB_SCALE_ITEM(-1700, 200, 0),
        19, 27, TLV_DB_SCALE_ITEM(-200, 100, 0),
-       28, 39, TLV_DB_SCALE_ITEM(650, 50, 0),
-};
+       28, 39, TLV_DB_SCALE_ITEM(650, 50, 0)
+);
 
-static const unsigned int max98095_rcv_lout_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(max98095_rcv_lout_tlv,
        0, 6, TLV_DB_SCALE_ITEM(-6200, 400, 0),
        7, 14, TLV_DB_SCALE_ITEM(-3500, 300, 0),
        15, 21, TLV_DB_SCALE_ITEM(-1200, 200, 0),
        22, 27, TLV_DB_SCALE_ITEM(100, 100, 0),
-       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0),
-};
+       28, 31, TLV_DB_SCALE_ITEM(650, 50, 0)
+);
 
-static const unsigned int max98095_lin_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(max98095_lin_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-600, 300, 0),
        3, 3, TLV_DB_SCALE_ITEM(300, 1100, 0),
-       4, 5, TLV_DB_SCALE_ITEM(1400, 600, 0),
-};
+       4, 5, TLV_DB_SCALE_ITEM(1400, 600, 0)
+);
 
 static const struct snd_kcontrol_new max98095_snd_controls[] = {
 
index 7c99052..c14a79d 100644 (file)
@@ -67,13 +67,12 @@ static const struct regmap_config max9850_regmap = {
        .cache_type = REGCACHE_RBTREE,
 };
 
-static const unsigned int max9850_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(max9850_tlv,
        0x18, 0x1f, TLV_DB_SCALE_ITEM(-7450, 400, 0),
        0x20, 0x33, TLV_DB_SCALE_ITEM(-4150, 200, 0),
        0x34, 0x37, TLV_DB_SCALE_ITEM(-150, 100, 0),
-       0x38, 0x3f, TLV_DB_SCALE_ITEM(250, 50, 0),
-};
+       0x38, 0x3f, TLV_DB_SCALE_ITEM(250, 50, 0)
+);
 
 static const struct snd_kcontrol_new max9850_controls[] = {
 SOC_SINGLE_TLV("Headphone Volume", MAX9850_VOLUME, 0, 0x3f, 1, max9850_tlv),
index fb448dd..61cc18e 100644 (file)
@@ -28,19 +28,17 @@ static const struct reg_default max9877_regs[] = {
        { 4, 0x49 },
 };
 
-static const unsigned int max9877_pgain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(max9877_pgain_tlv,
        0, 1, TLV_DB_SCALE_ITEM(0, 900, 0),
-       2, 2, TLV_DB_SCALE_ITEM(2000, 0, 0),
-};
+       2, 2, TLV_DB_SCALE_ITEM(2000, 0, 0)
+);
 
-static const unsigned int max9877_output_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(max9877_output_tlv,
        0, 7, TLV_DB_SCALE_ITEM(-7900, 400, 1),
        8, 15, TLV_DB_SCALE_ITEM(-4700, 300, 0),
        16, 23, TLV_DB_SCALE_ITEM(-2300, 200, 0),
-       24, 31, TLV_DB_SCALE_ITEM(-700, 100, 0),
-};
+       24, 31, TLV_DB_SCALE_ITEM(-700, 100, 0)
+);
 
 static const char *max9877_out_mode[] = {
        "INA -> SPK",
index d877102..1be2bab 100644 (file)
@@ -174,16 +174,15 @@ static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
 static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -95625, 375, 0);
 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52}dB */
-static unsigned int mic_bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(mic_bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 static int rt5631_dmic_get(struct snd_kcontrol *kcontrol,
                struct snd_ctl_elem_value *ucontrol)
index b4139d3..e1ceeb8 100644 (file)
@@ -347,16 +347,15 @@ static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
 static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
 
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
-static unsigned int bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 /* Interface data select */
 static const char * const rt5640_data_select[] = {
index 1e70736..4972bf3 100644 (file)
@@ -459,16 +459,15 @@ static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -1725, 75, 0);
 static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
 
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
-static unsigned int bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 static const struct snd_kcontrol_new rt5645_snd_controls[] = {
        /* Speaker Output Volume */
index 8f7159b..1d40318 100644 (file)
@@ -292,16 +292,15 @@ static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
 static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
 
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
-static unsigned int bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 /* Interface data select */
 static const char * const rt5651_data_select[] = {
index 177748a..49a9e70 100644 (file)
@@ -592,16 +592,15 @@ static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
 static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
 
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
-static unsigned int bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 /* Interface data select */
 static const char * const rt5670_data_select[] = {
index b7de51b..b4cd7e3 100644 (file)
@@ -788,16 +788,15 @@ static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
 static const DECLARE_TLV_DB_SCALE(st_vol_tlv, -4650, 150, 0);
 
 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
-static unsigned int bst_tlv[] = {
-       TLV_DB_RANGE_HEAD(7),
+static const DECLARE_TLV_DB_RANGE(bst_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
        3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
        6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
        7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
-       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0),
-};
+       8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
+);
 
 static int rt5677_dsp_vad_get(struct snd_kcontrol *kcontrol,
                struct snd_ctl_elem_value *ucontrol)
index f3e6467..bfda25e 100644 (file)
@@ -406,11 +406,10 @@ static int dac_put_volsw(struct snd_kcontrol *kcontrol,
 static const DECLARE_TLV_DB_SCALE(capture_6db_attenuate, -600, 600, 0);
 
 /* tlv for mic gain, 0db 20db 30db 40db */
-static const unsigned int mic_gain_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(mic_gain_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
-       1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0),
-};
+       1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0)
+);
 
 /* tlv for hp volume, -51.5db to 12.0db, step .5db */
 static const DECLARE_TLV_DB_SCALE(headphone_volume, -5150, 50, 0);
index 69a773a..4452fea 100644 (file)
@@ -75,11 +75,10 @@ static const struct soc_enum ssm2602_enum[] = {
                        ssm2602_deemph),
 };
 
-static const unsigned int ssm260x_outmix_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(ssm260x_outmix_tlv,
        0, 47, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 0),
-       48, 127, TLV_DB_SCALE_ITEM(-7400, 100, 0),
-};
+       48, 127, TLV_DB_SCALE_ITEM(-7400, 100, 0)
+);
 
 static const DECLARE_TLV_DB_SCALE(ssm260x_inpga_tlv, -3450, 150, 0);
 static const DECLARE_TLV_DB_SCALE(ssm260x_sidetone_tlv, -1500, 300, 0);
index 2f6a65a..e3a0bca 100644 (file)
@@ -493,8 +493,7 @@ static int tas2552_runtime_suspend(struct device *dev)
        regcache_cache_only(tas2552->regmap, true);
        regcache_mark_dirty(tas2552->regmap);
 
-       if (tas2552->enable_gpio)
-               gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value(tas2552->enable_gpio, 0);
 
        return 0;
 }
@@ -503,8 +502,7 @@ static int tas2552_runtime_resume(struct device *dev)
 {
        struct tas2552_data *tas2552 = dev_get_drvdata(dev);
 
-       if (tas2552->enable_gpio)
-               gpiod_set_value(tas2552->enable_gpio, 1);
+       gpiod_set_value(tas2552->enable_gpio, 1);
 
        tas2552_sw_shutdown(tas2552, 0);
 
@@ -585,8 +583,7 @@ static int tas2552_codec_probe(struct snd_soc_codec *codec)
                return ret;
        }
 
-       if (tas2552->enable_gpio)
-               gpiod_set_value(tas2552->enable_gpio, 1);
+       gpiod_set_value(tas2552->enable_gpio, 1);
 
        ret = pm_runtime_get_sync(codec->dev);
        if (ret < 0) {
@@ -610,8 +607,7 @@ static int tas2552_codec_probe(struct snd_soc_codec *codec)
        return 0;
 
 probe_fail:
-       if (tas2552->enable_gpio)
-               gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value(tas2552->enable_gpio, 0);
 
        regulator_bulk_disable(ARRAY_SIZE(tas2552->supplies),
                                        tas2552->supplies);
@@ -624,8 +620,7 @@ static int tas2552_codec_remove(struct snd_soc_codec *codec)
 
        pm_runtime_put(codec->dev);
 
-       if (tas2552->enable_gpio)
-               gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value(tas2552->enable_gpio, 0);
 
        return 0;
 };
index 5746f8f..e34752b 100644 (file)
@@ -42,7 +42,7 @@
 #define TAS2552_BOOST_APT_CTRL         0x14
 #define TAS2552_VER_NUM                        0x16
 #define TAS2552_VBAT_DATA              0x19
-#define TAS2552_MAX_REG                        0x20
+#define TAS2552_MAX_REG                        TAS2552_VBAT_DATA
 
 /* CFG1 Register Masks */
 #define TAS2552_DEV_RESET              (1 << 0)
index 0a49fc8..d49d25d 100644 (file)
@@ -266,10 +266,14 @@ static int tas5086_set_deemph(struct snd_soc_codec *codec)
        struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec);
        int i, val = 0;
 
-       if (priv->deemph)
-               for (i = 0; i < ARRAY_SIZE(tas5086_deemph); i++)
-                       if (tas5086_deemph[i] == priv->rate)
+       if (priv->deemph) {
+               for (i = 0; i < ARRAY_SIZE(tas5086_deemph); i++) {
+                       if (tas5086_deemph[i] == priv->rate) {
                                val = i;
+                               break;
+                       }
+               }
+       }
 
        return regmap_update_bits(priv->regmap, TAS5086_SYS_CONTROL_1,
                                  TAS5086_DEEMPH_MASK, val);
index 265c4c3..11d85c5 100644 (file)
@@ -259,8 +259,7 @@ static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol,
  * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going
  * down in gain.
  */
-static const unsigned int tpa6130_tlv[] = {
-       TLV_DB_RANGE_HEAD(10),
+static const DECLARE_TLV_DB_RANGE(tpa6130_tlv,
        0, 1, TLV_DB_SCALE_ITEM(-5950, 600, 0),
        2, 3, TLV_DB_SCALE_ITEM(-5000, 250, 0),
        4, 5, TLV_DB_SCALE_ITEM(-4550, 160, 0),
@@ -270,8 +269,8 @@ static const unsigned int tpa6130_tlv[] = {
        12, 13, TLV_DB_SCALE_ITEM(-3040, 180, 0),
        14, 20, TLV_DB_SCALE_ITEM(-2710, 110, 0),
        21, 37, TLV_DB_SCALE_ITEM(-1960, 74, 0),
-       38, 63, TLV_DB_SCALE_ITEM(-720, 45, 0),
-};
+       38, 63, TLV_DB_SCALE_ITEM(-720, 45, 0)
+);
 
 static const struct snd_kcontrol_new tpa6130a2_controls[] = {
        SOC_SINGLE_EXT_TLV("TPA6130A2 Headphone Playback Volume",
@@ -280,12 +279,11 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = {
                       tpa6130_tlv),
 };
 
-static const unsigned int tpa6140_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(tpa6140_tlv,
        0, 8, TLV_DB_SCALE_ITEM(-5900, 400, 0),
        9, 16, TLV_DB_SCALE_ITEM(-2500, 200, 0),
-       17, 31, TLV_DB_SCALE_ITEM(-1000, 100, 0),
-};
+       17, 31, TLV_DB_SCALE_ITEM(-1000, 100, 0)
+);
 
 static const struct snd_kcontrol_new tpa6140a2_controls[] = {
        SOC_SINGLE_EXT_TLV("TPA6140A2 Headphone Playback Volume",
index 90f5f04..2713e18 100644 (file)
@@ -524,12 +524,11 @@ static const struct snd_kcontrol_new twl4030_dapm_abypassv_control =
        SOC_DAPM_SINGLE("Switch", TWL4030_REG_VDL_APGA_CTL, 2, 1, 0);
 
 /* Digital bypass gain, mute instead of -30dB */
-static const unsigned int twl4030_dapm_dbypass_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(twl4030_dapm_dbypass_tlv,
        0, 1, TLV_DB_SCALE_ITEM(-3000, 600, 1),
        2, 3, TLV_DB_SCALE_ITEM(-2400, 0, 0),
-       4, 7, TLV_DB_SCALE_ITEM(-1800, 600, 0),
-};
+       4, 7, TLV_DB_SCALE_ITEM(-1800, 600, 0)
+);
 
 /* Digital bypass left (TX1L -> RX2L) */
 static const struct snd_kcontrol_new twl4030_dapm_dbypassl_control =
index 5cafb16..35f0469 100644 (file)
@@ -269,12 +269,11 @@ static DECLARE_TLV_DB_SCALE(amix_tlv, -4950, 150, 1);
  * from -66 dB in 0.5 dB steps (2 dB steps, really) and
  * from -52 dB in 0.25 dB steps
  */
-static const unsigned int mvol_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(mvol_tlv,
        0, 15, TLV_DB_SCALE_ITEM(-8200, 100, 1),
        16, 43, TLV_DB_SCALE_ITEM(-6600, 50, 0),
-       44, 252, TLV_DB_SCALE_ITEM(-5200, 25, 0),
-};
+       44, 252, TLV_DB_SCALE_ITEM(-5200, 25, 0)
+);
 
 /*
  * from -72 dB in 1.5 dB steps (6 dB steps really),
@@ -282,13 +281,12 @@ static const unsigned int mvol_tlv[] = {
  * from -60 dB in 0.5 dB steps (2 dB steps really) and
  * from -46 dB in 0.25 dB steps
  */
-static const unsigned int vc_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(vc_tlv,
        0, 7, TLV_DB_SCALE_ITEM(-7800, 150, 1),
        8, 15, TLV_DB_SCALE_ITEM(-6600, 75, 0),
        16, 43, TLV_DB_SCALE_ITEM(-6000, 50, 0),
-       44, 228, TLV_DB_SCALE_ITEM(-4600, 25, 0),
-};
+       44, 228, TLV_DB_SCALE_ITEM(-4600, 25, 0)
+);
 
 /* from 0 to 6 dB in 2 dB steps if SPF mode != flat */
 static DECLARE_TLV_DB_SCALE(tr_tlv, 0, 200, 0);
index 41c62c1..ffbf3df 100644 (file)
@@ -394,11 +394,10 @@ static DECLARE_TLV_DB_SCALE(dac_pcm_tlv, -7163, 36, 1);
 static DECLARE_TLV_DB_SCALE(adc_pcm_tlv, -12700, 50, 1);
 static DECLARE_TLV_DB_SCALE(out_mix_tlv, -1500, 300, 1);
 
-static const unsigned int capture_sd_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(capture_sd_tlv,
        0, 12, TLV_DB_SCALE_ITEM(-3600, 300, 1),
-       13, 15, TLV_DB_SCALE_ITEM(0, 0, 0),
-};
+       13, 15, TLV_DB_SCALE_ITEM(0, 0, 0)
+);
 
 static const struct snd_kcontrol_new wm8350_snd_controls[] = {
        SOC_ENUM("Playback Deemphasis", wm8350_enum[0]),
index d755508..b1d346a 100644 (file)
@@ -370,10 +370,7 @@ static int outmixer_event (struct snd_soc_dapm_widget *w,
 }
 
 /* INMIX dB values */
-static const unsigned int in_mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0,7, TLV_DB_SCALE_ITEM(-1200, 600, 0),
-};
+static const DECLARE_TLV_DB_SCALE(in_mix_tlv, -1200, 600, 0);
 
 /* Left In PGA Connections */
 static const struct snd_kcontrol_new wm8400_dapm_lin12_pga_controls[] = {
index b54a7b7..e4a03d9 100644 (file)
@@ -79,13 +79,12 @@ static int wm8737_reset(struct snd_soc_codec *codec)
        return snd_soc_write(codec, WM8737_RESET, 0);
 }
 
-static const unsigned int micboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(micboost_tlv,
        0, 0, TLV_DB_SCALE_ITEM(1300, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(1800, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2800, 0, 0),
-       3, 3, TLV_DB_SCALE_ITEM(3300, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(3300, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(pga_tlv, -9750, 50, 1);
 static const DECLARE_TLV_DB_SCALE(adc_tlv, -600, 600, 0);
 static const DECLARE_TLV_DB_SCALE(ng_tlv, -7800, 600, 0);
index b5e50ff..0e946f3 100644 (file)
@@ -276,12 +276,11 @@ static const DECLARE_TLV_DB_SCALE(rec_mix_tlv, -1500, 300, 0);
 static const DECLARE_TLV_DB_SCALE(mic_preamp_tlv, 1200, 600, 0);
 static const DECLARE_TLV_DB_SCALE(adc_tlv, -9750, 50, 1);
 static const DECLARE_TLV_DB_SCALE(dac_tlv, -12750, 50, 1);
-static const unsigned int out_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(out_tlv,
        /* 0000000 - 0101111 = "Analogue mute" */
        0, 48, TLV_DB_SCALE_ITEM(-25500, 0, 0),
-       48, 127, TLV_DB_SCALE_ITEM(-7300, 100, 0),
-};
+       48, 127, TLV_DB_SCALE_ITEM(-7300, 100, 0)
+);
 static const DECLARE_TLV_DB_SCALE(mix_tlv, -1500, 300, 0);
 static const DECLARE_TLV_DB_SCALE(voice_mix_tlv, -1200, 300, 0);
 static const DECLARE_TLV_DB_SCALE(pga_tlv, -1725, 75, 0);
index 20a0103..e30446a 100644 (file)
@@ -331,13 +331,12 @@ static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
 static const DECLARE_TLV_DB_SCALE(hp_sec_tlv, -700, 100, 0);
 static const DECLARE_TLV_DB_SCALE(adc_tlv, -7200, 75, 1);
 static const DECLARE_TLV_DB_SCALE(sidetone_tlv, -3600, 300, 0);
-static unsigned int boost_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(boost_tlv,
        0, 0, TLV_DB_SCALE_ITEM(0,  0, 0),
        1, 1, TLV_DB_SCALE_ITEM(13, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(20, 0, 0),
-       3, 3, TLV_DB_SCALE_ITEM(29, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(29, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(pga_tlv, -2325, 75, 0);
 
 static const struct snd_kcontrol_new wm8961_snd_controls[] = {
index 5c01707..b4eb975 100644 (file)
@@ -1456,14 +1456,13 @@ static int wm8962_reset(struct wm8962_priv *wm8962)
 
 static const DECLARE_TLV_DB_SCALE(inpga_tlv, -2325, 75, 0);
 static const DECLARE_TLV_DB_SCALE(mixin_tlv, -1500, 300, 0);
-static const unsigned int mixinpga_tlv[] = {
-       TLV_DB_RANGE_HEAD(5),
+static const DECLARE_TLV_DB_RANGE(mixinpga_tlv,
        0, 1, TLV_DB_SCALE_ITEM(0, 600, 0),
        2, 2, TLV_DB_SCALE_ITEM(1300, 1300, 0),
        3, 4, TLV_DB_SCALE_ITEM(1800, 200, 0),
        5, 5, TLV_DB_SCALE_ITEM(2400, 0, 0),
-       6, 7, TLV_DB_SCALE_ITEM(2700, 300, 0),
-};
+       6, 7, TLV_DB_SCALE_ITEM(2700, 300, 0)
+);
 static const DECLARE_TLV_DB_SCALE(beep_tlv, -9600, 600, 1);
 static const DECLARE_TLV_DB_SCALE(digital_tlv, -7200, 75, 1);
 static const DECLARE_TLV_DB_SCALE(st_tlv, -3600, 300, 0);
@@ -1471,11 +1470,10 @@ static const DECLARE_TLV_DB_SCALE(inmix_tlv, -600, 600, 0);
 static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0);
 static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
 static const DECLARE_TLV_DB_SCALE(hp_tlv, -700, 100, 0);
-static const unsigned int classd_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(classd_tlv,
        0, 6, TLV_DB_SCALE_ITEM(0, 150, 0),
-       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0),
-};
+       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0);
 
 static int wm8962_dsp2_write_config(struct snd_soc_codec *codec)
index 83d72d8..23ecd30 100644 (file)
@@ -418,10 +418,7 @@ static int outmixer_event(struct snd_soc_dapm_widget *w,
 }
 
 /* INMIX dB values */
-static const unsigned int in_mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 7, TLV_DB_SCALE_ITEM(-1200, 600, 0),
-};
+static const DECLARE_TLV_DB_SCALE(in_mix_tlv, -1200, 600, 0);
 
 /* Left In PGA Connections */
 static const struct snd_kcontrol_new wm8990_dapm_lin12_pga_controls[] = {
index 709d16e..c9ee0ac 100644 (file)
@@ -111,45 +111,14 @@ static bool wm8991_volatile(struct device *dev, unsigned int reg)
        }
 }
 
-static const unsigned int rec_mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 7, TLV_DB_LINEAR_ITEM(-1500, 600),
-};
-
-static const unsigned int in_pga_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 0x1F, TLV_DB_LINEAR_ITEM(-1650, 3000),
-};
-
-static const unsigned int out_mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 7, TLV_DB_LINEAR_ITEM(0, -2100),
-};
-
-static const unsigned int out_pga_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 127, TLV_DB_LINEAR_ITEM(-7300, 600),
-};
-
-static const unsigned int out_omix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 7, TLV_DB_LINEAR_ITEM(-600, 0),
-};
-
-static const unsigned int out_dac_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 255, TLV_DB_LINEAR_ITEM(-7163, 0),
-};
-
-static const unsigned int in_adc_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 255, TLV_DB_LINEAR_ITEM(-7163, 1763),
-};
-
-static const unsigned int out_sidetone_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 31, TLV_DB_LINEAR_ITEM(-3600, 0),
-};
+static const DECLARE_TLV_DB_LINEAR(rec_mix_tlv, -1500, 600);
+static const DECLARE_TLV_DB_LINEAR(in_pga_tlv, -1650, 3000);
+static const DECLARE_TLV_DB_LINEAR(out_mix_tlv, 0, -2100);
+static const DECLARE_TLV_DB_LINEAR(out_pga_tlv, -7300, 600);
+static const DECLARE_TLV_DB_LINEAR(out_omix_tlv, -600, 0);
+static const DECLARE_TLV_DB_LINEAR(out_dac_tlv, -7163, 0);
+static const DECLARE_TLV_DB_LINEAR(in_adc_tlv, -7163, 1763);
+static const DECLARE_TLV_DB_LINEAR(out_sidetone_tlv, -3600, 0);
 
 static int wm899x_outpga_put_volsw_vu(struct snd_kcontrol *kcontrol,
                                      struct snd_ctl_elem_value *ucontrol)
@@ -429,10 +398,7 @@ static int outmixer_event(struct snd_soc_dapm_widget *w,
 }
 
 /* INMIX dB values */
-static const unsigned int in_mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(1),
-       0, 7, TLV_DB_LINEAR_ITEM(-1200, 600),
-};
+static const DECLARE_TLV_DB_LINEAR(in_mix_tlv, -1200, 600);
 
 /* Left In PGA Connections */
 static const struct snd_kcontrol_new wm8991_dapm_lin12_pga_controls[] = {
index ac9efd6..8668c4c 100644 (file)
@@ -628,11 +628,10 @@ static const DECLARE_TLV_DB_SCALE(sidetone_tlv, -3600, 300, 0);
 static const DECLARE_TLV_DB_SCALE(drc_comp_threash, -4500, 75, 0);
 static const DECLARE_TLV_DB_SCALE(drc_comp_amp, -2250, 75, 0);
 static const DECLARE_TLV_DB_SCALE(drc_min_tlv, -1800, 600, 0);
-static const unsigned int drc_max_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(drc_max_tlv,
        0, 2, TLV_DB_SCALE_ITEM(1200, 600, 0),
-       3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(drc_qr_tlv, 1200, 600, 0);
 static const DECLARE_TLV_DB_SCALE(drc_startup_tlv, -1800, 300, 0);
 static const DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0);
index 45223a2..ccb3b15 100644 (file)
@@ -243,13 +243,12 @@ static int wm9081_reset(struct regmap *map)
 static const DECLARE_TLV_DB_SCALE(drc_in_tlv, -4500, 75, 0);
 static const DECLARE_TLV_DB_SCALE(drc_out_tlv, -2250, 75, 0);
 static const DECLARE_TLV_DB_SCALE(drc_min_tlv, -1800, 600, 0);
-static unsigned int drc_max_tlv[] = {
-       TLV_DB_RANGE_HEAD(4),
+static const DECLARE_TLV_DB_RANGE(drc_max_tlv,
        0, 0, TLV_DB_SCALE_ITEM(1200, 0, 0),
        1, 1, TLV_DB_SCALE_ITEM(1800, 0, 0),
        2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
-       3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(drc_qr_tlv, 1200, 600, 0);
 static const DECLARE_TLV_DB_SCALE(drc_startup_tlv, -300, 50, 0);
 
index 12baf72..5d73729 100644 (file)
@@ -162,23 +162,20 @@ static void wait_for_dc_servo(struct snd_soc_codec *codec)
                dev_err(codec->dev, "Timed out waiting for DC Servo\n");
 }
 
-static const unsigned int in_tlv[] = {
-       TLV_DB_RANGE_HEAD(3),
+static const DECLARE_TLV_DB_RANGE(in_tlv,
        0, 0, TLV_DB_SCALE_ITEM(-600, 0, 0),
        1, 3, TLV_DB_SCALE_ITEM(-350, 350, 0),
-       4, 6, TLV_DB_SCALE_ITEM(600, 600, 0),
-};
-static const unsigned int mix_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+       4, 6, TLV_DB_SCALE_ITEM(600, 600, 0)
+);
+static const DECLARE_TLV_DB_RANGE(mix_tlv,
        0, 2, TLV_DB_SCALE_ITEM(-1200, 300, 0),
-       3, 3, TLV_DB_SCALE_ITEM(0, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(0, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(out_tlv, -5700, 100, 0);
-static const unsigned int spkboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(spkboost_tlv,
        0, 6, TLV_DB_SCALE_ITEM(0, 150, 0),
-       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0),
-};
+       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0)
+);
 
 static const struct snd_kcontrol_new wm9090_controls[] = {
 SOC_SINGLE_TLV("IN1A Volume", WM9090_IN1_LINE_INPUT_A_VOLUME, 0, 6, 0,
index 955e651..4083a51 100644 (file)
@@ -119,11 +119,10 @@ SOC_ENUM_SINGLE_VIRT(2, wm9713_micb_select), /* mic selection 19 */
 static const DECLARE_TLV_DB_SCALE(out_tlv, -4650, 150, 0);
 static const DECLARE_TLV_DB_SCALE(main_tlv, -3450, 150, 0);
 static const DECLARE_TLV_DB_SCALE(misc_tlv, -1500, 300, 0);
-static unsigned int mic_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const  DECLARE_TLV_DB_RANGE(mic_tlv,
        0, 2, TLV_DB_SCALE_ITEM(1200, 600, 0),
-       3, 3, TLV_DB_SCALE_ITEM(3000, 0, 0),
-};
+       3, 3, TLV_DB_SCALE_ITEM(3000, 0, 0)
+);
 
 static const struct snd_kcontrol_new wm9713_snd_ac97_controls[] = {
 SOC_DOUBLE_TLV("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1, out_tlv),
index fd86bd1..624b3b9 100644 (file)
@@ -38,11 +38,10 @@ static const DECLARE_TLV_DB_SCALE(earpiece_tlv, -600, 600, 0);
 static const DECLARE_TLV_DB_SCALE(outmix_tlv, -2100, 300, 0);
 static const DECLARE_TLV_DB_SCALE(spkmixout_tlv, -1800, 600, 1);
 static const DECLARE_TLV_DB_SCALE(outpga_tlv, -5700, 100, 0);
-static const unsigned int spkboost_tlv[] = {
-       TLV_DB_RANGE_HEAD(2),
+static const DECLARE_TLV_DB_RANGE(spkboost_tlv,
        0, 6, TLV_DB_SCALE_ITEM(0, 150, 0),
-       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0),
-};
+       7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0)
+);
 static const DECLARE_TLV_DB_SCALE(line_tlv, -600, 600, 0);
 
 static const char *speaker_ref_text[] = {
index f4e92d3..69d01cd 100644 (file)
 #define SOC_TPLG_PASS_VENDOR           1
 #define SOC_TPLG_PASS_MIXER            2
 #define SOC_TPLG_PASS_WIDGET           3
-#define SOC_TPLG_PASS_GRAPH            4
-#define SOC_TPLG_PASS_PINS             5
-#define SOC_TPLG_PASS_PCM_DAI          6
+#define SOC_TPLG_PASS_PCM_DAI          4
+#define SOC_TPLG_PASS_GRAPH            5
+#define SOC_TPLG_PASS_PINS             6
 
 #define SOC_TPLG_PASS_START    SOC_TPLG_PASS_MANIFEST
-#define SOC_TPLG_PASS_END      SOC_TPLG_PASS_PCM_DAI
+#define SOC_TPLG_PASS_END      SOC_TPLG_PASS_PINS
 
 struct soc_tplg {
        const struct firmware *fw;
@@ -66,10 +66,14 @@ struct soc_tplg {
        u32 index;      /* current block index */
        u32 req_index;  /* required index, only loaded/free matching blocks */
 
-       /* kcontrol operations */
+       /* vendor specific kcontrol operations */
        const struct snd_soc_tplg_kcontrol_ops *io_ops;
        int io_ops_count;
 
+       /* vendor specific bytes ext handlers, for TLV bytes controls */
+       const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+       int bytes_ext_ops_count;
+
        /* optional fw loading callbacks to component drivers */
        struct snd_soc_tplg_ops *ops;
 };
@@ -508,38 +512,74 @@ static void remove_pcm_dai(struct snd_soc_component *comp,
 /* bind a kcontrol to it's IO handlers */
 static int soc_tplg_kcontrol_bind_io(struct snd_soc_tplg_ctl_hdr *hdr,
        struct snd_kcontrol_new *k,
-       const struct snd_soc_tplg_kcontrol_ops *ops, int num_ops,
-       const struct snd_soc_tplg_kcontrol_ops *bops, int num_bops)
+       const struct soc_tplg *tplg)
 {
-       int i;
+       const struct snd_soc_tplg_kcontrol_ops *ops;
+       const struct snd_soc_tplg_bytes_ext_ops *ext_ops;
+       int num_ops, i;
+
+       if (hdr->ops.info == SND_SOC_TPLG_CTL_BYTES
+               && k->iface & SNDRV_CTL_ELEM_IFACE_MIXER
+               && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE
+               && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
+               struct soc_bytes_ext *sbe;
+               struct snd_soc_tplg_bytes_control *be;
+
+               sbe = (struct soc_bytes_ext *)k->private_value;
+               be = container_of(hdr, struct snd_soc_tplg_bytes_control, hdr);
+
+               /* TLV bytes controls need standard kcontrol info handler,
+                * TLV callback and extended put/get handlers.
+                */
+               k->info = snd_soc_bytes_info;
+               k->tlv.c = snd_soc_bytes_tlv_callback;
+
+               ext_ops = tplg->bytes_ext_ops;
+               num_ops = tplg->bytes_ext_ops_count;
+               for (i = 0; i < num_ops; i++) {
+                       if (!sbe->put && ext_ops[i].id == be->ext_ops.put)
+                               sbe->put = ext_ops[i].put;
+                       if (!sbe->get && ext_ops[i].id == be->ext_ops.get)
+                               sbe->get = ext_ops[i].get;
+               }
+
+               if (sbe->put && sbe->get)
+                       return 0;
+               else
+                       return -EINVAL;
+       }
 
-       /* try and map standard kcontrols handler first */
+       /* try and map vendor specific kcontrol handlers first */
+       ops = tplg->io_ops;
+       num_ops = tplg->io_ops_count;
        for (i = 0; i < num_ops; i++) {
 
-               if (ops[i].id == hdr->ops.put)
+               if (k->put == NULL && ops[i].id == hdr->ops.put)
                        k->put = ops[i].put;
-               if (ops[i].id == hdr->ops.get)
+               if (k->get == NULL && ops[i].id == hdr->ops.get)
                        k->get = ops[i].get;
-               if (ops[i].id == hdr->ops.info)
+               if (k->info == NULL && ops[i].id == hdr->ops.info)
                        k->info = ops[i].info;
        }
 
-       /* standard handlers found ? */
+       /* vendor specific handlers found ? */
        if (k->put && k->get && k->info)
                return 0;
 
-       /* none found so try bespoke handlers */
-       for (i = 0; i < num_bops; i++) {
+       /* none found so try standard kcontrol handlers */
+       ops = io_ops;
+       num_ops = ARRAY_SIZE(io_ops);
+       for (i = 0; i < num_ops; i++) {
 
-               if (k->put == NULL && bops[i].id == hdr->ops.put)
-                       k->put = bops[i].put;
-               if (k->get == NULL && bops[i].id == hdr->ops.get)
-                       k->get = bops[i].get;
-               if (k->info == NULL && bops[i].id == hdr->ops.info)
-                       k->info = bops[i].info;
+               if (k->put == NULL && ops[i].id == hdr->ops.put)
+                       k->put = ops[i].put;
+               if (k->get == NULL && ops[i].id == hdr->ops.get)
+                       k->get = ops[i].get;
+               if (k->info == NULL && ops[i].id == hdr->ops.info)
+                       k->info = ops[i].info;
        }
 
-       /* bespoke handlers found ? */
+       /* standard handlers found ? */
        if (k->put && k->get && k->info)
                return 0;
 
@@ -609,9 +649,7 @@ static int soc_tplg_create_tlv(struct soc_tplg *tplg,
        if (!(tc->access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE))
                return 0;
 
-       if (tc->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
-               kc->tlv.c = snd_soc_bytes_tlv_callback;
-       } else {
+       if (!(tc->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK)) {
                tplg_tlv = &tc->tlv;
                switch (tplg_tlv->type) {
                case SNDRV_CTL_TLVT_DB_SCALE:
@@ -682,8 +720,7 @@ static int soc_tplg_dbytes_create(struct soc_tplg *tplg, unsigned int count,
                INIT_LIST_HEAD(&sbe->dobj.list);
 
                /* map io handlers */
-               err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc, io_ops,
-                       ARRAY_SIZE(io_ops), tplg->io_ops, tplg->io_ops_count);
+               err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc, tplg);
                if (err) {
                        soc_control_err(tplg, &be->hdr, be->hdr.name);
                        kfree(sbe);
@@ -777,8 +814,7 @@ static int soc_tplg_dmixer_create(struct soc_tplg *tplg, unsigned int count,
                INIT_LIST_HEAD(&sm->dobj.list);
 
                /* map io handlers */
-               err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc, io_ops,
-                       ARRAY_SIZE(io_ops), tplg->io_ops, tplg->io_ops_count);
+               err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc, tplg);
                if (err) {
                        soc_control_err(tplg, &mc->hdr, mc->hdr.name);
                        kfree(sm);
@@ -855,12 +891,12 @@ static int soc_tplg_denum_create_values(struct soc_enum *se,
        if (ec->items > sizeof(*ec->values))
                return -EINVAL;
 
-       se->dobj.control.dvalues =
-               kmalloc(ec->items * sizeof(u32), GFP_KERNEL);
+       se->dobj.control.dvalues = kmemdup(ec->values,
+                                          ec->items * sizeof(u32),
+                                          GFP_KERNEL);
        if (!se->dobj.control.dvalues)
                return -ENOMEM;
 
-       memcpy(se->dobj.control.dvalues, ec->values, ec->items * sizeof(u32));
        return 0;
 }
 
@@ -950,8 +986,7 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                }
 
                /* map io handlers */
-               err = soc_tplg_kcontrol_bind_io(&ec->hdr, &kc, io_ops,
-                       ARRAY_SIZE(io_ops), tplg->io_ops, tplg->io_ops_count);
+               err = soc_tplg_kcontrol_bind_io(&ec->hdr, &kc, tplg);
                if (err) {
                        soc_control_err(tplg, &ec->hdr, ec->hdr.name);
                        kfree(se);
@@ -1093,7 +1128,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dmixer_create(
        struct snd_soc_tplg_mixer_control *mc;
        int i, err;
 
-       kc = kzalloc(sizeof(*kc) * num_kcontrols, GFP_KERNEL);
+       kc = kcalloc(num_kcontrols, sizeof(*kc), GFP_KERNEL);
        if (kc == NULL)
                return NULL;
 
@@ -1137,8 +1172,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dmixer_create(
                INIT_LIST_HEAD(&sm->dobj.list);
 
                /* map io handlers */
-               err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc[i], io_ops,
-                       ARRAY_SIZE(io_ops), tplg->io_ops, tplg->io_ops_count);
+               err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc[i], tplg);
                if (err) {
                        soc_control_err(tplg, &mc->hdr, mc->hdr.name);
                        kfree(sm);
@@ -1235,8 +1269,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_denum_create(
        }
 
        /* map io handlers */
-       err = soc_tplg_kcontrol_bind_io(&ec->hdr, kc, io_ops,
-               ARRAY_SIZE(io_ops), tplg->io_ops, tplg->io_ops_count);
+       err = soc_tplg_kcontrol_bind_io(&ec->hdr, kc, tplg);
        if (err) {
                soc_control_err(tplg, &ec->hdr, ec->hdr.name);
                goto err_se;
@@ -1274,7 +1307,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dbytes_create(
        struct snd_kcontrol_new *kc;
        int i, err;
 
-       kc = kzalloc(sizeof(*kc) * count, GFP_KERNEL);
+       kc = kcalloc(count, sizeof(*kc), GFP_KERNEL);
        if (!kc)
                return NULL;
 
@@ -1297,7 +1330,6 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dbytes_create(
                        "ASoC: adding bytes kcontrol %s with access 0x%x\n",
                        be->hdr.name, be->hdr.access);
 
-               memset(kc, 0, sizeof(*kc));
                kc[i].name = be->hdr.name;
                kc[i].private_value = (long)sbe;
                kc[i].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
@@ -1307,9 +1339,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dbytes_create(
                INIT_LIST_HEAD(&sbe->dobj.list);
 
                /* map standard io handlers and check for external handlers */
-               err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc[i], io_ops,
-                               ARRAY_SIZE(io_ops), tplg->io_ops,
-                               tplg->io_ops_count);
+               err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc[i], tplg);
                if (err) {
                        soc_control_err(tplg, &be->hdr, be->hdr.name);
                        kfree(sbe);
@@ -1737,6 +1767,8 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
        tplg.req_index = id;
        tplg.io_ops = ops->io_ops;
        tplg.io_ops_count = ops->io_ops_count;
+       tplg.bytes_ext_ops = ops->bytes_ext_ops;
+       tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;
 
        return soc_tplg_load(&tplg);
 }
index f52600b..89add13 100644 (file)
@@ -133,7 +133,7 @@ static const struct regmap_config tegra20_das_regmap_config = {
 
 static int tegra20_das_probe(struct platform_device *pdev)
 {
-       struct resource *res, *region;
+       struct resource *res;
        void __iomem *regs;
        int ret = 0;
 
@@ -149,24 +149,9 @@ static int tegra20_das_probe(struct platform_device *pdev)
        das->dev = &pdev->dev;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(&pdev->dev, "No memory resource\n");
-               ret = -ENODEV;
-               goto err;
-       }
-
-       region = devm_request_mem_region(&pdev->dev, res->start,
-                                        resource_size(res), pdev->name);
-       if (!region) {
-               dev_err(&pdev->dev, "Memory region already claimed\n");
-               ret = -EBUSY;
-               goto err;
-       }
-
-       regs = devm_ioremap(&pdev->dev, res->start, resource_size(res));
-       if (!regs) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENOMEM;
+       regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(regs)) {
+               ret = PTR_ERR(regs);
                goto err;
        }
 
index 05f1c6e..14106fa 100644 (file)
@@ -339,7 +339,7 @@ static const struct regmap_config tegra20_i2s_regmap_config = {
 static int tegra20_i2s_platform_probe(struct platform_device *pdev)
 {
        struct tegra20_i2s *i2s;
-       struct resource *mem, *memregion;
+       struct resource *mem;
        void __iomem *regs;
        int ret;
 
@@ -362,24 +362,9 @@ static int tegra20_i2s_platform_probe(struct platform_device *pdev)
        }
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mem) {
-               dev_err(&pdev->dev, "No memory resource\n");
-               ret = -ENODEV;
-               goto err_clk_put;
-       }
-
-       memregion = devm_request_mem_region(&pdev->dev, mem->start,
-                                           resource_size(mem), DRV_NAME);
-       if (!memregion) {
-               dev_err(&pdev->dev, "Memory region already claimed\n");
-               ret = -EBUSY;
-               goto err_clk_put;
-       }
-
-       regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
-       if (!regs) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENOMEM;
+       regs = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(regs)) {
+               ret = PTR_ERR(regs);
                goto err_clk_put;
        }
 
index 9141477..a0c3640 100644 (file)
@@ -265,7 +265,7 @@ static const struct regmap_config tegra20_spdif_regmap_config = {
 static int tegra20_spdif_platform_probe(struct platform_device *pdev)
 {
        struct tegra20_spdif *spdif;
-       struct resource *mem, *memregion, *dmareq;
+       struct resource *mem, *dmareq;
        void __iomem *regs;
        int ret;
 
@@ -273,45 +273,26 @@ static int tegra20_spdif_platform_probe(struct platform_device *pdev)
                             GFP_KERNEL);
        if (!spdif) {
                dev_err(&pdev->dev, "Can't allocate tegra20_spdif\n");
-               ret = -ENOMEM;
-               goto err;
+               return -ENOMEM;
        }
        dev_set_drvdata(&pdev->dev, spdif);
 
-       spdif->clk_spdif_out = clk_get(&pdev->dev, "spdif_out");
+       spdif->clk_spdif_out = devm_clk_get(&pdev->dev, "spdif_out");
        if (IS_ERR(spdif->clk_spdif_out)) {
                pr_err("Can't retrieve spdif clock\n");
                ret = PTR_ERR(spdif->clk_spdif_out);
-               goto err;
+               return ret;
        }
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mem) {
-               dev_err(&pdev->dev, "No memory resource\n");
-               ret = -ENODEV;
-               goto err_clk_put;
-       }
+       regs = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(regs))
+               return PTR_ERR(regs);
 
        dmareq = platform_get_resource(pdev, IORESOURCE_DMA, 0);
        if (!dmareq) {
                dev_err(&pdev->dev, "No DMA resource\n");
-               ret = -ENODEV;
-               goto err_clk_put;
-       }
-
-       memregion = devm_request_mem_region(&pdev->dev, mem->start,
-                                           resource_size(mem), DRV_NAME);
-       if (!memregion) {
-               dev_err(&pdev->dev, "Memory region already claimed\n");
-               ret = -EBUSY;
-               goto err_clk_put;
-       }
-
-       regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
-       if (!regs) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENOMEM;
-               goto err_clk_put;
+               return -ENODEV;
        }
 
        spdif->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
@@ -319,7 +300,7 @@ static int tegra20_spdif_platform_probe(struct platform_device *pdev)
        if (IS_ERR(spdif->regmap)) {
                dev_err(&pdev->dev, "regmap init failed\n");
                ret = PTR_ERR(spdif->regmap);
-               goto err_clk_put;
+               return ret;
        }
 
        spdif->playback_dma_data.addr = mem->start + TEGRA20_SPDIF_DATA_OUT;
@@ -335,7 +316,7 @@ static int tegra20_spdif_platform_probe(struct platform_device *pdev)
        }
 
        ret = snd_soc_register_component(&pdev->dev, &tegra20_spdif_component,
-                                  &tegra20_spdif_dai, 1);
+                                        &tegra20_spdif_dai, 1);
        if (ret) {
                dev_err(&pdev->dev, "Could not register DAI: %d\n", ret);
                ret = -ENOMEM;
@@ -357,16 +338,12 @@ err_suspend:
                tegra20_spdif_runtime_suspend(&pdev->dev);
 err_pm_disable:
        pm_runtime_disable(&pdev->dev);
-err_clk_put:
-       clk_put(spdif->clk_spdif_out);
-err:
+
        return ret;
 }
 
 static int tegra20_spdif_platform_remove(struct platform_device *pdev)
 {
-       struct tegra20_spdif *spdif = dev_get_drvdata(&pdev->dev);
-
        pm_runtime_disable(&pdev->dev);
        if (!pm_runtime_status_suspended(&pdev->dev))
                tegra20_spdif_runtime_suspend(&pdev->dev);
@@ -374,8 +351,6 @@ static int tegra20_spdif_platform_remove(struct platform_device *pdev)
        tegra_pcm_platform_unregister(&pdev->dev);
        snd_soc_unregister_component(&pdev->dev);
 
-       clk_put(spdif->clk_spdif_out);
-
        return 0;
 }
 
index bc94e5d..fef3b9a 100644 (file)
@@ -521,7 +521,7 @@ static int tegra30_ahub_probe(struct platform_device *pdev)
        const struct tegra30_ahub_soc_data *soc_data;
        struct reset_control *rst;
        int i;
-       struct resource *res0, *res1, *region;
+       struct resource *res0, *res1;
        void __iomem *regs_apbif, *regs_ahub;
        int ret = 0;
 
@@ -549,103 +549,67 @@ static int tegra30_ahub_probe(struct platform_device *pdev)
                        dev_err(&pdev->dev, "Can't get reset %s\n",
                                configlink_mods[i].rst_name);
                        ret = PTR_ERR(rst);
-                       goto err;
+                       return ret;
                }
 
                ret = reset_control_deassert(rst);
                reset_control_put(rst);
                if (ret)
-                       goto err;
+                       return ret;
        }
 
        ahub = devm_kzalloc(&pdev->dev, sizeof(struct tegra30_ahub),
                            GFP_KERNEL);
        if (!ahub) {
                dev_err(&pdev->dev, "Can't allocate tegra30_ahub\n");
-               ret = -ENOMEM;
-               goto err;
+               return -ENOMEM;
        }
        dev_set_drvdata(&pdev->dev, ahub);
 
        ahub->soc_data = soc_data;
        ahub->dev = &pdev->dev;
 
-       ahub->clk_d_audio = clk_get(&pdev->dev, "d_audio");
+       ahub->clk_d_audio = devm_clk_get(&pdev->dev, "d_audio");
        if (IS_ERR(ahub->clk_d_audio)) {
                dev_err(&pdev->dev, "Can't retrieve ahub d_audio clock\n");
                ret = PTR_ERR(ahub->clk_d_audio);
-               goto err;
+               return ret;
        }
 
-       ahub->clk_apbif = clk_get(&pdev->dev, "apbif");
+       ahub->clk_apbif = devm_clk_get(&pdev->dev, "apbif");
        if (IS_ERR(ahub->clk_apbif)) {
                dev_err(&pdev->dev, "Can't retrieve ahub apbif clock\n");
                ret = PTR_ERR(ahub->clk_apbif);
-               goto err_clk_put_d_audio;
+               return ret;
        }
 
        res0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res0) {
-               dev_err(&pdev->dev, "No apbif memory resource\n");
-               ret = -ENODEV;
-               goto err_clk_put_apbif;
-       }
+       regs_apbif = devm_ioremap_resource(&pdev->dev, res0);
+       if (IS_ERR(regs_apbif))
+               return PTR_ERR(regs_apbif);
 
-       region = devm_request_mem_region(&pdev->dev, res0->start,
-                                        resource_size(res0), DRV_NAME);
-       if (!region) {
-               dev_err(&pdev->dev, "request region apbif failed\n");
-               ret = -EBUSY;
-               goto err_clk_put_apbif;
-       }
        ahub->apbif_addr = res0->start;
 
-       regs_apbif = devm_ioremap(&pdev->dev, res0->start,
-                                 resource_size(res0));
-       if (!regs_apbif) {
-               dev_err(&pdev->dev, "ioremap apbif failed\n");
-               ret = -ENOMEM;
-               goto err_clk_put_apbif;
-       }
-
        ahub->regmap_apbif = devm_regmap_init_mmio(&pdev->dev, regs_apbif,
                                        &tegra30_ahub_apbif_regmap_config);
        if (IS_ERR(ahub->regmap_apbif)) {
                dev_err(&pdev->dev, "apbif regmap init failed\n");
                ret = PTR_ERR(ahub->regmap_apbif);
-               goto err_clk_put_apbif;
+               return ret;
        }
        regcache_cache_only(ahub->regmap_apbif, true);
 
        res1 = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       if (!res1) {
-               dev_err(&pdev->dev, "No ahub memory resource\n");
-               ret = -ENODEV;
-               goto err_clk_put_apbif;
-       }
-
-       region = devm_request_mem_region(&pdev->dev, res1->start,
-                                        resource_size(res1), DRV_NAME);
-       if (!region) {
-               dev_err(&pdev->dev, "request region ahub failed\n");
-               ret = -EBUSY;
-               goto err_clk_put_apbif;
-       }
-
-       regs_ahub = devm_ioremap(&pdev->dev, res1->start,
-                                resource_size(res1));
-       if (!regs_ahub) {
-               dev_err(&pdev->dev, "ioremap ahub failed\n");
-               ret = -ENOMEM;
-               goto err_clk_put_apbif;
-       }
+       regs_ahub = devm_ioremap_resource(&pdev->dev, res1);
+       if (IS_ERR(regs_ahub))
+               return PTR_ERR(regs_ahub);
 
        ahub->regmap_ahub = devm_regmap_init_mmio(&pdev->dev, regs_ahub,
                                        &tegra30_ahub_ahub_regmap_config);
        if (IS_ERR(ahub->regmap_ahub)) {
                dev_err(&pdev->dev, "ahub regmap init failed\n");
                ret = PTR_ERR(ahub->regmap_ahub);
-               goto err_clk_put_apbif;
+               return ret;
        }
        regcache_cache_only(ahub->regmap_ahub, true);
 
@@ -662,12 +626,7 @@ static int tegra30_ahub_probe(struct platform_device *pdev)
 
 err_pm_disable:
        pm_runtime_disable(&pdev->dev);
-err_clk_put_apbif:
-       clk_put(ahub->clk_apbif);
-err_clk_put_d_audio:
-       clk_put(ahub->clk_d_audio);
-       ahub = NULL;
-err:
+
        return ret;
 }
 
@@ -680,11 +639,6 @@ static int tegra30_ahub_remove(struct platform_device *pdev)
        if (!pm_runtime_status_suspended(&pdev->dev))
                tegra30_ahub_runtime_suspend(&pdev->dev);
 
-       clk_put(ahub->clk_apbif);
-       clk_put(ahub->clk_d_audio);
-
-       ahub = NULL;
-
        return 0;
 }
 
index fe36375..8e55583 100644 (file)
@@ -379,7 +379,7 @@ static int tegra30_i2s_platform_probe(struct platform_device *pdev)
        struct tegra30_i2s *i2s;
        const struct of_device_id *match;
        u32 cif_ids[2];
-       struct resource *mem, *memregion;
+       struct resource *mem;
        void __iomem *regs;
        int ret;
 
@@ -419,24 +419,9 @@ static int tegra30_i2s_platform_probe(struct platform_device *pdev)
        }
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mem) {
-               dev_err(&pdev->dev, "No memory resource\n");
-               ret = -ENODEV;
-               goto err_clk_put;
-       }
-
-       memregion = devm_request_mem_region(&pdev->dev, mem->start,
-                                           resource_size(mem), DRV_NAME);
-       if (!memregion) {
-               dev_err(&pdev->dev, "Memory region already claimed\n");
-               ret = -EBUSY;
-               goto err_clk_put;
-       }
-
-       regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
-       if (!regs) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENOMEM;
+       regs = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(regs)) {
+               ret = PTR_ERR(regs);
                goto err_clk_put;
        }