It is quite important to keep qemu working, really. Debugging early boot on hardware is very hard, for example.
I understand, but looking at the history of the driver, if it fails now with the jack-detection GPIO, it should have been failing in the past as well. What triggered this sudden qemu does not like jack-detection GPIO? Before the devm_gpiod_get() conversion the driver should have failed in snd_soc_jack_add_gpios() phase.
With 3.12 kernel rx51-audio driver loads without any problem. So there is some regression. Here is dmesg log from 3.12 kernel:
[ 1.123779] rx51-audio rx51-audio: tlv320aic3x-hifi <-> omap- mcbsp.2 mapping ok [ 1.130737] tlv320aic3x-codec 2-0019: ASoC: mux b Right Line1L Mux has no paths [ 1.131347] tlv320aic3x-codec 2-0019: ASoC: mux b Left Line1R Mux has no paths [ 1.133697] tlv320aic3x-codec 2-0018: ASoC: mux Right Line1L Mux has no paths [ 1.134307] tlv320aic3x-codec 2-0018: ASoC: mux Left Line1R Mux has no paths [ 1.137451] input: RX-51 AV Jack as /devices/platform/rx51- audio/sound/card0/input2
I will try to investigate where is problem...
Ok, problem found and solved. Please drop my patch and sorry for a noise.
As is visible in above lines AV Jack is working fine on non DT kernel (3.12) and fails on DT kernel.
Reason is because I have another non-mainline driver which is using GPIOs and in non DT kernel is initialized *after* audio. And in DT kernel is initialized *before* audio.
Once I changed my non-mainline driver to not request av jack gpio, rx51-audio driver loads fine in qemu.