]> asedeno.scripts.mit.edu Git - linux.git/commit
ASoC: adau17x1: Add support for specifying the MCLK using the CCF
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 15 Jun 2016 13:07:27 +0000 (15:07 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 15 Jun 2016 13:42:40 +0000 (14:42 +0100)
commit5d76de61dd8cb89b7189ef7456fba921c547c398
tree3d85cae578faa5a1137227bad4ad2eb355c30728
parent0eadaa9ce2aacdcc3cf050d98c25aacabadc557f
ASoC: adau17x1: Add support for specifying the MCLK using the CCF

The devices from the ADAU17X1 family all have a MCLK clock input which
supplies the master clock for the device. The master clock is used as the
input clock for the PLL. Currently the MCLK rate as well as the desired PLL
output frequency need to be supplied by calling snd_soc_dai_set_pll() form
a machine driver.

Add support for specifying the MCLK using the common clock framework. In
addition to that also automatically configure the PLL to a suitable rate
if the master clock was provided using the CCW. This allows to use the
CODEC driver without any special configuration requirements from the
machine driver.

While the PLL output frequency can be configured over a (more or less)
continuous range the narrowness of the range and the other constraints of
the clocking tree usually only result in two output frequencies that will
actually be chosen. One for 44.1kHz based rates and one for 48kHz based
rates, these are the rates that the automatic PLL configuration will use.
For the rare case where a non-standard setup is required a machine driver
can disable the auto-configuration and configure a custom frequency using
the existing mechanisms.

If the common clock framework is not enabled clk_get() will return NULL and
the driver will function as before and the clock rate needs to be
configured manually.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/devicetree/bindings/sound/adi,adau17x1.txt
sound/soc/codecs/adau1761-i2c.c
sound/soc/codecs/adau1761-spi.c
sound/soc/codecs/adau1781-i2c.c
sound/soc/codecs/adau1781-spi.c
sound/soc/codecs/adau17x1.c
sound/soc/codecs/adau17x1.h