linux-4.4.1/snd_soc_get_volsw()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c450f499]
#backlinks
*説明 [#a2cdae9b]
-パス: [[linux-4.4.1/sound/soc/soc-ops.c]]
-FIXME: これは何?
--説明
**引数 [#d2ff9146]
-struct snd_kcontrol *kcontrol
--
--[[linux-4.4.1/snd_kcontrol]]
-struct snd_ctl_elem_value *ucontrol
--
--[[linux-4.4.1/snd_ctl_elem_value]]
**返り値 [#p3ec70ae]
-int
--
**参考 [#o67efc35]
*実装 [#m886338a]
/**
* snd_soc_get_volsw - single mixer get callback
* @kcontrol: mixer control
* @ucontrol: control element information
*
* Callback to get the value of a single mixer control, ...
* control that spans 2 registers.
*
* Returns 0 for success.
*/
int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct snd_soc_component *component = snd_kcontr...
struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->pr...
unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg;
unsigned int shift = mc->shift;
unsigned int rshift = mc->rshift;
int max = mc->max;
int min = mc->min;
int sign_bit = mc->sign_bit;
unsigned int mask = (1 << fls(max)) - 1;
unsigned int invert = mc->invert;
int val;
int ret;
-
--[[linux-4.4.1/snd_soc_component]]
--[[linux-4.4.1/snd_kcontrol_chip()]]
--[[linux-4.4.1/soc_mixer_control]]
--[[linux-4.4.1/fls()]]
if (sign_bit)
mask = BIT(sign_bit + 1) - 1;
-
--[[linux-4.4.1/BIT()]]
ret = snd_soc_read_signed(component, reg, mask, ...
if (ret)
return ret;
-
--[[linux-4.4.1/snd_soc_read_signed()]]
ucontrol->value.integer.value[0] = val - min;
if (invert)
ucontrol->value.integer.value[0] =
max - ucontrol->value.integer.va...
if (snd_soc_volsw_is_stereo(mc)) {
-
--[[linux-4.4.1/snd_soc_volsw_is_stereo()]]
if (reg == reg2)
ret = snd_soc_read_signed(compon...
sign_bit, &val);
else
ret = snd_soc_read_signed(compon...
sign_bit, &val);
if (ret)
return ret;
ucontrol->value.integer.value[1] = val -...
if (invert)
ucontrol->value.integer.value[1] =
max - ucontrol->value.in...
}
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_get_volsw);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#r0c8b935]
終了行:
*参照元 [#c450f499]
#backlinks
*説明 [#a2cdae9b]
-パス: [[linux-4.4.1/sound/soc/soc-ops.c]]
-FIXME: これは何?
--説明
**引数 [#d2ff9146]
-struct snd_kcontrol *kcontrol
--
--[[linux-4.4.1/snd_kcontrol]]
-struct snd_ctl_elem_value *ucontrol
--
--[[linux-4.4.1/snd_ctl_elem_value]]
**返り値 [#p3ec70ae]
-int
--
**参考 [#o67efc35]
*実装 [#m886338a]
/**
* snd_soc_get_volsw - single mixer get callback
* @kcontrol: mixer control
* @ucontrol: control element information
*
* Callback to get the value of a single mixer control, ...
* control that spans 2 registers.
*
* Returns 0 for success.
*/
int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct snd_soc_component *component = snd_kcontr...
struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->pr...
unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg;
unsigned int shift = mc->shift;
unsigned int rshift = mc->rshift;
int max = mc->max;
int min = mc->min;
int sign_bit = mc->sign_bit;
unsigned int mask = (1 << fls(max)) - 1;
unsigned int invert = mc->invert;
int val;
int ret;
-
--[[linux-4.4.1/snd_soc_component]]
--[[linux-4.4.1/snd_kcontrol_chip()]]
--[[linux-4.4.1/soc_mixer_control]]
--[[linux-4.4.1/fls()]]
if (sign_bit)
mask = BIT(sign_bit + 1) - 1;
-
--[[linux-4.4.1/BIT()]]
ret = snd_soc_read_signed(component, reg, mask, ...
if (ret)
return ret;
-
--[[linux-4.4.1/snd_soc_read_signed()]]
ucontrol->value.integer.value[0] = val - min;
if (invert)
ucontrol->value.integer.value[0] =
max - ucontrol->value.integer.va...
if (snd_soc_volsw_is_stereo(mc)) {
-
--[[linux-4.4.1/snd_soc_volsw_is_stereo()]]
if (reg == reg2)
ret = snd_soc_read_signed(compon...
sign_bit, &val);
else
ret = snd_soc_read_signed(compon...
sign_bit, &val);
if (ret)
return ret;
ucontrol->value.integer.value[1] = val -...
if (invert)
ucontrol->value.integer.value[1] =
max - ucontrol->value.in...
}
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_get_volsw);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#r0c8b935]
ページ名: