On Thu, Dec 15, 2016 at 08:42:22AM +0100, Takashi Iwai wrote:
Pierre-Louis Bossart wrote:
dev_err(&pdev->dev, "Failed to get MCLK from pmc_plt_clk_3: %ld\n", PTR_ERR(priv->mclk));
return PTR_ERR(priv->mclk);
/* Fall back to bitclock only */
byt_rt5640_quirk &= ~BYT_RT5640_MCLK_EN;
This is broken for probe deferral, I'd expect this to be explicitly checking for a no clock mapped error code (probably -ENOENT) rather than just ignoring all errors.
I don't understand the probe deferral concept here. Are you saying fall back to the bit clock mode if the status is -ENOENT and fail otherwise?
The clk driver may return -EPROBE_DEFER, and in that case, the intel driver should also defer the probe as well. Or, like -ENOMEM, it indicates a serious error, and then better bail out.
So, we need to figure out which error code should fall back to the legacy mode. (Or vice versa, which error code shouldn't be ignored.)
Exactly. -ENOENT is what other subsystems return, I've not specifically checked the clock API.