[ALSA] Control API - more robust TLV implementation
- added callback option - added READ/WRITE/COMMAND flags to access member - added WRITE/COMMAND ioctls - added SNDRV_CTL_EVENT_MASK_TLV for TLV change notifications - added TLV support to ELEM_ADD ioctl Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
@@ -30,6 +30,11 @@ struct snd_kcontrol;
|
||||
typedef int (snd_kcontrol_info_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_info * uinfo);
|
||||
typedef int (snd_kcontrol_get_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol);
|
||||
typedef int (snd_kcontrol_put_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol);
|
||||
typedef int (snd_kcontrol_tlv_rw_t)(struct snd_kcontrol *kcontrol,
|
||||
int op_flag, /* 0=read,1=write,-1=command */
|
||||
unsigned int size,
|
||||
unsigned int __user *tlv);
|
||||
|
||||
|
||||
struct snd_kcontrol_new {
|
||||
snd_ctl_elem_iface_t iface; /* interface identifier */
|
||||
@@ -42,7 +47,10 @@ struct snd_kcontrol_new {
|
||||
snd_kcontrol_info_t *info;
|
||||
snd_kcontrol_get_t *get;
|
||||
snd_kcontrol_put_t *put;
|
||||
unsigned int *tlv;
|
||||
union {
|
||||
snd_kcontrol_tlv_rw_t *c;
|
||||
unsigned int *p;
|
||||
} tlv;
|
||||
unsigned long private_value;
|
||||
};
|
||||
|
||||
@@ -59,7 +67,11 @@ struct snd_kcontrol {
|
||||
snd_kcontrol_info_t *info;
|
||||
snd_kcontrol_get_t *get;
|
||||
snd_kcontrol_put_t *put;
|
||||
unsigned int *tlv;
|
||||
snd_kcontrol_tlv_rw_t *tlv_rw;
|
||||
union {
|
||||
snd_kcontrol_tlv_rw_t *c;
|
||||
unsigned int *p;
|
||||
} tlv;
|
||||
unsigned long private_value;
|
||||
void *private_data;
|
||||
void (*private_free)(struct snd_kcontrol *kcontrol);
|
||||
|
Reference in New Issue
Block a user