提交 d9881208 编写于 作者: V Vinod Koul 提交者: Mark Brown

ASoC: add SND_SOC_BYTES_EXT

we need _EXT version for SND_SOC_BYTES so that DSPs can use this to pass data
for DSP modules
Signed-off-by: NVinod Koul <vinod.koul@intel.com>
Signed-off-by: NMark Brown <broonie@linaro.org>
上级 3dcba280
......@@ -266,6 +266,13 @@
{.base = xbase, .num_regs = xregs, \
.mask = xmask }) }
#define SND_SOC_BYTES_EXT(xname, xcount, xhandler_get, xhandler_put) \
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
.info = snd_soc_bytes_info_ext, \
.get = xhandler_get, .put = xhandler_put, \
.private_value = (unsigned long)&(struct soc_bytes_ext) \
{.max = xcount} }
#define SOC_SINGLE_XR_SX(xname, xregbase, xregcount, xnbits, \
xmin, xmax, xinvert) \
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
......@@ -534,6 +541,8 @@ int snd_soc_bytes_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_bytes_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *ucontrol);
int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo);
int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol,
......@@ -1080,6 +1089,10 @@ struct soc_bytes {
u32 mask;
};
struct soc_bytes_ext {
int max;
};
/* multi register control */
struct soc_mreg_control {
long min, max;
......
......@@ -3107,6 +3107,18 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_GPL(snd_soc_bytes_put);
int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *ucontrol)
{
struct soc_bytes_ext *params = (void *)kcontrol->private_value;
ucontrol->type = SNDRV_CTL_ELEM_TYPE_BYTES;
ucontrol->count = params->max;
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_bytes_info_ext);
/**
* snd_soc_info_xr_sx - signed multi register info callback
* @kcontrol: mreg control
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册