[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171216031738.GA220575@google.com>
Date: Fri, 15 Dec 2017 19:17:39 -0800
From: Brian Norris <briannorris@...omium.org>
To: Oder Chiou <oder_chiou@...ltek.com>,
Bard Liao <bardliao@...ltek.com>,
Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>
Cc: Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>,
alsa-devel@...a-project.org, linux-kernel@...r.kernel.org,
Matthias Kaehlcke <mka@...omium.org>,
Jeffy Chen <jeffy.chen@...k-chips.com>,
linux-rockchip@...ts.infradead.org,
Jimmy Cheng-Yi Chiang <cychiang@...gle.com>
Subject: Re: [PATCH for-4.15] ASoC: rt5514: don't assume rt5514 component was
"attached"
+ others
On Fri, Dec 15, 2017 at 05:12:30PM -0800, Brian Norris wrote:
> I've found that on Google's "Kevin" Chromebook, the rt5514 codec might
> not be set up completely, yet its device is still present, and therefore
> its PM suspend/resume is called. This hits a NULL pointer exception,
> since we never had the chance to set our drvdata pointer.
>
> This resolves crashes seen when trying to resume my system.
>
> Fixes: e9c50aa6bd39 ("ASoC: rt5514-spi: check irq status to schedule data copy in resume function")
> Signed-off-by: Brian Norris <briannorris@...omium.org>
> ---
> This is a v4.15-rc1 regression
I see that this is probably a bug on its own, which should be fixed on
its own (e.g., with the $subject patch), but FYI I was also pointed at
this patch, which also "resolves" this problem by fixing the rt5514 DAI
setup:
https://patchwork.kernel.org/patch/10067725/
[PATCH] ASoC: rockchip: Use dummy_dai for rt5514 dsp dailink
Would be nice to see it get handled too, possibly in 4.15 as well (I
think that's a regression too?).
Brian
>
> sound/soc/codecs/rt5514-spi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c
> index 2df91db765ac..9255afcf2c3a 100644
> --- a/sound/soc/codecs/rt5514-spi.c
> +++ b/sound/soc/codecs/rt5514-spi.c
> @@ -482,7 +482,7 @@ static int __maybe_unused rt5514_resume(struct device *dev)
> if (device_may_wakeup(dev))
> disable_irq_wake(irq);
>
> - if (rt5514_dsp->substream) {
> + if (rt5514_dsp && rt5514_dsp->substream) {
> rt5514_spi_burst_read(RT5514_IRQ_CTRL, (u8 *)&buf, sizeof(buf));
> if (buf[0] & RT5514_IRQ_STATUS_BIT)
> rt5514_schedule_copy(rt5514_dsp);
> --
> 2.15.1.504.g5279b80103-goog
>
Powered by blists - more mailing lists