I'm working on implementing support for a MEMS microphone with an I2S connection. Since the microphone has no controls but simply outputs I2S data from the word go, this means that any gain must be applied later. (Microphones of this type are generally specified at outputting 0 dB FS at some rediculously high SPL, 120 dB SPL being typical).
Since we use 16 bit audio in our (SOC) system, I'm trying to apply gain using the softvol ALSA plugin, before converting to 16 bit audio (the microphone outputs 24 bit audio).
One thing though, the 'softvol' plugin very correctly creates a mixer control and it all works fine, but only after the device has been opened. Before that the mixer control doesn't seem to exist, which means that we cannot adjust the gain until the device is opened by some application.
Is this intentional, a bug, or something that is misconfigured on my part?
/Ricard