Skip to content
  • Amadeusz Sławiński's avatar
    SoC: rt274: Fix internal jack assignment in set_jack callback · 04268bf2
    Amadeusz Sławiński authored and Mark Brown's avatar Mark Brown committed
    
    
    When we call snd_soc_component_set_jack(component, NULL, NULL) we should
    set rt274->jack to passed jack, so when interrupt is triggered it calls
    snd_soc_jack_report(rt274->jack, ...) with proper value.
    
    This fixes problem in machine where in register, we call
    snd_soc_register(component, &headset, NULL), which just calls
    rt274_mic_detect via callback.
    Now when machine driver is removed "headset" will be gone, so we
    need to tell codec driver that it's gone with:
    snd_soc_register(component, NULL, NULL), but we also need to be able
    to handle NULL jack argument here gracefully.
    If we don't set it to NULL, next time the rt274_irq runs it will call
    snd_soc_jack_report with first argument being invalid pointer and there
    will be Oops.
    
    Signed-off-by: default avatarAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    04268bf2