The wm97xx touchscreen driver will bind itself to the snd_ac97 device registered by CODEC drivers and expects that the device has already been reset by the CODEC driver. Previous to commit 6794f709b712 ("ASoC: ac97: Drop delayed device registration") the snd_ac97 device was only registered after the CODEC driver probe function had finished running, but starting with the commit it is registered within snd_soc_new_ac97_codec(). This breaks the touchscreen driver as the reset is no longer performed before the touchscreen driver probe function runs. This patch series introduces a new function snd_soc_alloc_ac97_codec() which allocates the snd_ac97 device, but does not yet register it yet. This allows the CODEC drivers to perform the reset before the device is registered.
The series is meant to perform a minimum amount of changes while fixing the issue to prevent introducing other regressions. I have a few more patches that consolidate the reset handling in the drivers and puts it into the core in snd_soc_new_ac97_codec() which makes the split in the drivers unnecessary, but that's something for next and not for stable.
Manuel can you give this another round of testing?
Thanks, - Lars
Lars-Peter Clausen (2): ASoC: Add support for allocating AC'97 device before registering it ASoC: wm97xx: Reset AC'97 device before registering it
include/sound/soc.h | 1 + sound/soc/codecs/wm9705.c | 16 ++++++++++------ sound/soc/codecs/wm9712.c | 12 ++++++++---- sound/soc/codecs/wm9713.c | 12 ++++++++---- sound/soc/soc-ac97.c | 34 +++++++++++++++++++++++++++++----- 5 files changed, 56 insertions(+), 19 deletions(-)