ASoC: max98090: Add recovery for PLL lock failure

All MAX98090 input clocks MCLK, LRCLK and BCLK must be running and stable
before powering on the device in slave mode. Otherwise the PLL may not lock
to LRCLK causing silence in playback and capture. How often that happens is
somewhat hardware and clock configuration specific.

Now if wanting to follow strictly this clocks must be active before
powering the codec requirement we should have a notification from DAI driver
to codec driver when clocks are activated and take codec out of shutdown
only after that. Plus take care of possible active bypass paths.

However, when PLL unlock occurs, MAX98090 asserts the PLL Unlock Flag which
can be configured as an IRQ source. This allows to workaround around the
issue by toggling the codec power shortly in case of PLL lock failure.

Original PLL unlock interrupt and max98090_pll_work() implementation comes
from Liam Girdwood <liam.r.girdwood@linux.intel.com>. I wrote the commit
log, moved interrupt enable/disable to max98090_dai_set_fmt(), reduced
logging a little, shortened toggling time to 10 ms and added
cancel_work_sync() to max98090_remove().

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
---
For normal development cycle. We have observed this on a byt-max98090 based
machine when another MCLK rate was showing silent audio occasionally but
with current 25 MHz MCLK it either doesn't occur or is much more rare.