mirror of https://gitee.com/openkylin/linux.git
Merge remote-tracking branch 'asoc/topic/core' into asoc-next
This commit is contained in:
commit
49fdfe3655
|
@ -802,6 +802,9 @@ struct snd_soc_component_driver {
|
||||||
int (*suspend)(struct snd_soc_component *);
|
int (*suspend)(struct snd_soc_component *);
|
||||||
int (*resume)(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 */
|
/* pcm creation and destruction */
|
||||||
int (*pcm_new)(struct snd_soc_pcm_runtime *);
|
int (*pcm_new)(struct snd_soc_pcm_runtime *);
|
||||||
void (*pcm_free)(struct snd_pcm *);
|
void (*pcm_free)(struct snd_pcm *);
|
||||||
|
|
|
@ -213,7 +213,7 @@ static umode_t soc_dev_attr_is_visible(struct kobject *kobj,
|
||||||
|
|
||||||
if (attr == &dev_attr_pmdown_time.attr)
|
if (attr == &dev_attr_pmdown_time.attr)
|
||||||
return attr->mode; /* always visible */
|
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 = {
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(snd_soc_rtdcom_lookup);
|
||||||
|
|
||||||
struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
|
struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
|
||||||
const char *dai_link, int stream)
|
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 */
|
/* 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;
|
unsigned int inv_dai_fmt;
|
||||||
|
|
||||||
inv_dai_fmt = dai_fmt & ~SND_SOC_DAIFMT_MASTER_MASK;
|
inv_dai_fmt = dai_fmt & ~SND_SOC_DAIFMT_MASTER_MASK;
|
||||||
|
|
|
@ -34,6 +34,10 @@ int snd_soc_component_read(struct snd_soc_component *component,
|
||||||
ret = regmap_read(component->regmap, reg, val);
|
ret = regmap_read(component->regmap, reg, val);
|
||||||
else if (component->read)
|
else if (component->read)
|
||||||
ret = component->read(component, reg, val);
|
ret = component->read(component, reg, val);
|
||||||
|
else if (component->driver->read) {
|
||||||
|
*val = component->driver->read(component, reg);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
|
|
||||||
|
@ -70,6 +74,8 @@ int snd_soc_component_write(struct snd_soc_component *component,
|
||||||
return regmap_write(component->regmap, reg, val);
|
return regmap_write(component->regmap, reg, val);
|
||||||
else if (component->write)
|
else if (component->write)
|
||||||
return component->write(component, reg, val);
|
return component->write(component, reg, val);
|
||||||
|
else if (component->driver->write)
|
||||||
|
return component->driver->write(component, reg, val);
|
||||||
else
|
else
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,7 +378,7 @@ int snd_soc_get_volsw_sx(struct snd_kcontrol *kcontrol,
|
||||||
unsigned int rshift = mc->rshift;
|
unsigned int rshift = mc->rshift;
|
||||||
int max = mc->max;
|
int max = mc->max;
|
||||||
int min = mc->min;
|
int min = mc->min;
|
||||||
int mask = (1 << (fls(min + max) - 1)) - 1;
|
unsigned int mask = (1 << (fls(min + max) - 1)) - 1;
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -423,7 +423,7 @@ int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol,
|
||||||
unsigned int rshift = mc->rshift;
|
unsigned int rshift = mc->rshift;
|
||||||
int max = mc->max;
|
int max = mc->max;
|
||||||
int min = mc->min;
|
int min = mc->min;
|
||||||
int mask = (1 << (fls(min + max) - 1)) - 1;
|
unsigned int mask = (1 << (fls(min + max) - 1)) - 1;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
unsigned int val, val_mask, val2 = 0;
|
unsigned int val, val_mask, val2 = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue