I've got some questions concerning the ALSA control interface...
1. What is a "simple" control? I would like to use the control interface to set more than just volume (e.g. I would like to set input gain, output attenuation, input channel selection, output channel selection, output channel activation...), so I am wondering if I should use SNDRV_CTL_ELEM_IFACE_CARD or SNDRV_CTL_ELEM_IFACE_MIXER, as they are obviously in context with "simple" control...
2. The more interesting question: as written in "Writing an alsa driver" callbacks are basically not atomic, but I am getting BUG: scheduling while atomic: amixer/0x00000001/430 Call Trace: .[..] in "put" callback?? So what is meant with "basically not atomic"?? What is allowed and what is not allowed, am I able to get hardware interrupts in this context?