Commit f2a5ded3 authored by Nicolas Boichat's avatar Nicolas Boichat Committed by Mark Brown

ASoC: rt5645: Check if codec is initialized in workqueue handler

This fixes kernel panic on boot, if rt5645->codec is NULL when
rt5645_jack_detect_work is first called.

rt5645_jack_detect_work needs rt5645->codec to be initialized to setup
dapm pins. Also, reporting jack events is useless, as the jacks cannot
be set before the codec is ready.

Since we manually call the interrupt handler in
rt5645_set_jack_detect, the initial jack state will be reported
correctly, and dapm pins will be setup at that time.
Signed-off-by: default avatarNicolas Boichat <drinkcat@chromium.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent d770e558
...@@ -2943,6 +2943,9 @@ static int rt5645_irq_detection(struct rt5645_priv *rt5645) ...@@ -2943,6 +2943,9 @@ static int rt5645_irq_detection(struct rt5645_priv *rt5645)
{ {
int val, btn_type, gpio_state = 0, report = 0; int val, btn_type, gpio_state = 0, report = 0;
if (!rt5645->codec)
return -EINVAL;
switch (rt5645->pdata.jd_mode) { switch (rt5645->pdata.jd_mode) {
case 0: /* Not using rt5645 JD */ case 0: /* Not using rt5645 JD */
if (rt5645->gpiod_hp_det) { if (rt5645->gpiod_hp_det) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment