]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge remote-tracking branch 'asoc/topic/core' into asoc-next
authorMark Brown <broonie@kernel.org>
Thu, 18 Jan 2018 11:55:31 +0000 (11:55 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 18 Jan 2018 11:55:31 +0000 (11:55 +0000)
include/sound/soc.h
sound/soc/soc-core.c
sound/soc/soc-io.c
sound/soc/soc-ops.c

index 1a7323238c495d7d51313f6ccd8780291ff3e9e5..6e865c2bcffe4219782b03b1fa166013074bf65f 100644 (file)
@@ -802,6 +802,9 @@ struct snd_soc_component_driver {
        int (*suspend)(struct snd_soc_component *);
        int (*resume)(struct snd_soc_component *);
 
+       unsigned int (*read)(struct snd_soc_component *, unsigned int);
+       int (*write)(struct snd_soc_component *, unsigned int, unsigned int);
+
        /* pcm creation and destruction */
        int (*pcm_new)(struct snd_soc_pcm_runtime *);
        void (*pcm_free)(struct snd_pcm *);
index c0edac80df34e683291cff5fb86c560ee8e22ffd..9b79c2199781a7fc171a2bb1eac02989e2f1b3b5 100644 (file)
@@ -213,7 +213,7 @@ static umode_t soc_dev_attr_is_visible(struct kobject *kobj,
 
        if (attr == &dev_attr_pmdown_time.attr)
                return attr->mode; /* always visible */
-       return rtd->codec ? attr->mode : 0; /* enabled only with codec */
+       return rtd->num_codecs ? attr->mode : 0; /* enabled only with codec */
 }
 
 static const struct attribute_group soc_dapm_dev_group = {
@@ -598,6 +598,7 @@ struct snd_soc_component *snd_soc_rtdcom_lookup(struct snd_soc_pcm_runtime *rtd,
 
        return NULL;
 }
+EXPORT_SYMBOL_GPL(snd_soc_rtdcom_lookup);
 
 struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
                const char *dai_link, int stream)
@@ -1945,7 +1946,9 @@ int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd,
        }
 
        /* Flip the polarity for the "CPU" end of a CODEC<->CODEC link */
-       if (cpu_dai->codec) {
+       /* the component which has non_legacy_dai_naming is Codec */
+       if (cpu_dai->codec ||
+           cpu_dai->component->driver->non_legacy_dai_naming) {
                unsigned int inv_dai_fmt;
 
                inv_dai_fmt = dai_fmt & ~SND_SOC_DAIFMT_MASTER_MASK;
index 20340ade20a789803c7ec02d9bf3ad569db1e68d..2bc1c4c17896d6c946baf584656f4fdca2bc25e8 100644 (file)
@@ -34,6 +34,10 @@ int snd_soc_component_read(struct snd_soc_component *component,
                ret = regmap_read(component->regmap, reg, val);
        else if (component->read)
                ret = component->read(component, reg, val);
+       else if (component->driver->read) {
+               *val = component->driver->read(component, reg);
+               ret = 0;
+       }
        else
                ret = -EIO;
 
@@ -70,6 +74,8 @@ int snd_soc_component_write(struct snd_soc_component *component,
                return regmap_write(component->regmap, reg, val);
        else if (component->write)
                return component->write(component, reg, val);
+       else if (component->driver->write)
+               return component->driver->write(component, reg, val);
        else
                return -EIO;
 }
index 500f98c730b964e6aee457d91ea21e29020a5334..7144a51ddfa9aaa49c917461e1aa9293f26955a4 100644 (file)
@@ -378,7 +378,7 @@ int snd_soc_get_volsw_sx(struct snd_kcontrol *kcontrol,
        unsigned int rshift = mc->rshift;
        int max = mc->max;
        int min = mc->min;
-       int mask = (1 << (fls(min + max) - 1)) - 1;
+       unsigned int mask = (1 << (fls(min + max) - 1)) - 1;
        unsigned int val;
        int ret;
 
@@ -423,7 +423,7 @@ int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol,
        unsigned int rshift = mc->rshift;
        int max = mc->max;
        int min = mc->min;
-       int mask = (1 << (fls(min + max) - 1)) - 1;
+       unsigned int mask = (1 << (fls(min + max) - 1)) - 1;
        int err = 0;
        unsigned int val, val_mask, val2 = 0;