If you need to change and update a control in the interrupt
routine, you can call snd_ctl_notify()
. For
example,
snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE, id_pointer);
This function takes the card pointer, the event-mask, and the
control id pointer for the notification. The event-mask
specifies the types of notification, for example, in the above
example, the change of control values is notified.
The id pointer is the pointer of struct snd_ctl_elem_id
to be notified.
You can find some examples in es1938.c
or
es1968.c
for hardware volume interrupts.