The kernel oops is caused by a race condition, see logs below:
[ 7.109294] CHT_MAX98090_HEADSET_INIT
[ 7.109312] jack is NULL, detection not enabled
[ 7.109434] cht-bsw-max98090 cht-bsw-max98090: snd-soc-dummy-dai <-> media-cpu-dai mapping ok
[ 7.109499] cht-bsw-max98090 cht-bsw-max98090: snd-soc-dummy-dai <-> deepbuffer-cpu-dai mapping ok
[ 7.109542] compress asoc: snd-soc-dummy-dai <-> compress-cpu-dai mapping ok
[ 7.109549] CHT_CODEC_INIT
[ 7.112443] cht-bsw-max98090 cht-bsw-max98090: HiFi <-> ssp2-port mapping ok
Basically the ..init = cht_max98090_headset_init is called before .init = cht_codec_init, but the latter initializes the jack.
I think the soc-core framework should have a notion that an aux_dev should be initialized after the codec DAIs? The ChromeOs code is pre-component so it's really hard to figure out what needs to be done here.
The kernel oops is caused by a race condition, see logs below:
[ 7.109294] CHT_MAX98090_ HEADSET_ INIT
[ 7.109312] jack is NULL, detection not enabled
[ 7.109434] cht-bsw-max98090 cht-bsw-max98090: snd-soc-dummy-dai <-> media-cpu-dai mapping ok
[ 7.109499] cht-bsw-max98090 cht-bsw-max98090: snd-soc-dummy-dai <-> deepbuffer-cpu-dai mapping ok
[ 7.109542] compress asoc: snd-soc-dummy-dai <-> compress-cpu-dai mapping ok
[ 7.109549] CHT_CODEC_INIT
[ 7.112443] cht-bsw-max98090 cht-bsw-max98090: HiFi <-> ssp2-port mapping ok
Basically the ..init = cht_max98090_ headset_ init is called before .init = cht_codec_init, but the latter initializes the jack.
I think the soc-core framework should have a notion that an aux_dev should be initialized after the codec DAIs? The ChromeOs code is pre-component so it's really hard to figure out what needs to be done here.
Vinod, any thoughts?