On 06/08/2012 07:31 PM, Mark Brown wrote:
On Fri, Jun 08, 2012 at 11:37:54AM -0600, Stephen Warren wrote:
This problem can be triggered by fully initializing an audio card, then removing and re-inserting the machine driver module. This would leave mic detection enabled in HW, and mic_jack set to a stale value.
This isn't a good fix for this issue, - the fact that it works is more a sign that nobody got round to moving the interrupt registration to the I2C probe() function than anything else.
...
In terms of the mic detection itself it's really the responsibility of the machine driver to say that the jack doesn't exist any more when it's being removed - it should be calling wm8903_mic_detect() again during unregistration to disable the interrupt. ...
OK, that makes sense. I guess I can do that in the card's .remove() function. I'd shied away from doing that before since the jacks are created in the DAI link's init() function, and there wasn't a symmetrical DAI link remove() function to match that, but the card remove() should be fine.