mirror of https://gitee.com/openkylin/linux.git
[ALSA] Add dB scale information to mixart driver
Added the dB scale information to mixart driver. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
parent
2fd53a7e9b
commit
35a49934a7
|
@ -31,6 +31,7 @@
|
||||||
#include "mixart_core.h"
|
#include "mixart_core.h"
|
||||||
#include "mixart_hwdep.h"
|
#include "mixart_hwdep.h"
|
||||||
#include <sound/control.h>
|
#include <sound/control.h>
|
||||||
|
#include <sound/tlv.h>
|
||||||
#include "mixart_mixer.h"
|
#include "mixart_mixer.h"
|
||||||
|
|
||||||
static u32 mixart_analog_level[256] = {
|
static u32 mixart_analog_level[256] = {
|
||||||
|
@ -388,12 +389,17 @@ static int mixart_analog_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_e
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DECLARE_TLV_DB_SCALE(db_scale_analog, -9600, 50, 0);
|
||||||
|
|
||||||
static struct snd_kcontrol_new mixart_control_analog_level = {
|
static struct snd_kcontrol_new mixart_control_analog_level = {
|
||||||
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
||||||
|
.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |
|
||||||
|
SNDRV_CTL_ELEM_ACCESS_TLV_READ),
|
||||||
/* name will be filled later */
|
/* name will be filled later */
|
||||||
.info = mixart_analog_vol_info,
|
.info = mixart_analog_vol_info,
|
||||||
.get = mixart_analog_vol_get,
|
.get = mixart_analog_vol_get,
|
||||||
.put = mixart_analog_vol_put,
|
.put = mixart_analog_vol_put,
|
||||||
|
.tlv = { .p = db_scale_analog },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* shared */
|
/* shared */
|
||||||
|
@ -866,14 +872,19 @@ static int mixart_pcm_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DECLARE_TLV_DB_SCALE(db_scale_digital, -10950, 50, 0);
|
||||||
|
|
||||||
static struct snd_kcontrol_new snd_mixart_pcm_vol =
|
static struct snd_kcontrol_new snd_mixart_pcm_vol =
|
||||||
{
|
{
|
||||||
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
||||||
|
.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |
|
||||||
|
SNDRV_CTL_ELEM_ACCESS_TLV_READ),
|
||||||
/* name will be filled later */
|
/* name will be filled later */
|
||||||
/* count will be filled later */
|
/* count will be filled later */
|
||||||
.info = mixart_digital_vol_info, /* shared */
|
.info = mixart_digital_vol_info, /* shared */
|
||||||
.get = mixart_pcm_vol_get,
|
.get = mixart_pcm_vol_get,
|
||||||
.put = mixart_pcm_vol_put,
|
.put = mixart_pcm_vol_put,
|
||||||
|
.tlv = { .p = db_scale_digital },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -984,10 +995,13 @@ static int mixart_monitor_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
||||||
|
|
||||||
static struct snd_kcontrol_new mixart_control_monitor_vol = {
|
static struct snd_kcontrol_new mixart_control_monitor_vol = {
|
||||||
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
||||||
|
.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |
|
||||||
|
SNDRV_CTL_ELEM_ACCESS_TLV_READ),
|
||||||
.name = "Monitoring Volume",
|
.name = "Monitoring Volume",
|
||||||
.info = mixart_digital_vol_info, /* shared */
|
.info = mixart_digital_vol_info, /* shared */
|
||||||
.get = mixart_monitor_vol_get,
|
.get = mixart_monitor_vol_get,
|
||||||
.put = mixart_monitor_vol_put,
|
.put = mixart_monitor_vol_put,
|
||||||
|
.tlv = { .p = db_scale_digital },
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue