summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/max98090.h
Commit message (Collapse)AuthorAgeFilesLines
* ASoC: max98090: Fix sequencing when starting additional routesFang, Yang A2015-08-101-0/+1
| | | | | | | | | | | | | | | | | | | | | Enforce correct device sequencing when configuring a new audio route when there is an existing active audio route(s). This patch fixed recording noise issue while playback is active. We have some registers which require the device to be in full shutdown or to enter full shutdown before the register settings will take effect. Currently the driver is not shutting down the device when a new audio route is created. If a new audio route is made active while there is already an active audio route, then the required register sequencing is violated. A hardware shutdown toggle when creating a new audio route corrects the sequencing error. The device must remain in hardware shutdown for 40ms to allow the internal hardware core to fully shutdown. Signed-off-by: Fang, Yang A <yang.a.fang@intel.com> Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com> Acked-by: Anish Kumar <anish.kumar@maximintegrated.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Different comp tables for different pclksDylan Reid2014-11-041-0/+8
| | | | | | | | | | | | | | | | In addtion expand the table to handle other values of sysclk. Instead of making the table 3D, expand it to a more descriptive struct. The divisors are specified in Table 19 of the 98090 data sheet version 0p94. The dmic frequency was previously assumed. Instead make it explicit and configurable through device tree. This now handles independently set pclk and dmic frequency. Based on downstream work by Ralph Birt. Signed-off-by: Dylan Reid <dgreid@chromium.org> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Remove unused byte access macrosJarkko Nikula2014-09-241-3/+0
| | | | | Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Remove unused version defineJarkko Nikula2014-09-241-5/+0
| | | | | Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Remove structure member extmic_mux from private dataJarkko Nikula2014-09-241-1/+0
| | | | | | | There is no other use for extmic_mux than setting it to zero so remove it. Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Remove structure member irq from private dataJarkko Nikula2014-09-241-1/+0
| | | | | | | | struct max98090_priv member irq is now used only locally in max98090_i2c_probe() and can be removed. Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Add recovery for PLL lock failureJarkko Nikula2014-09-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | All MAX98090 input clocks MCLK, LRCLK and BCLK must be running and stable before powering on the codec 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 on 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. In order to prevent needlessly toggling codec power in case of short PLL unlocks at the beginning of stream this patch implements delayed activation for PLL unlock interrupt. Then workaround is run only when the PLL doesn't lock at all. Power toggling workaround for PLL unlock comes originally from Liam Girdwood <liam.r.girdwood@linux.intel.com> and delayed activation from me. Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: max98090: Add master clock handlingTushar Behera2014-05-261-0/+1
| | | | | | | | | | If master clock is provided through device tree, then update the master clock frequency during set_sysclk. Documentation has been updated to reflect the change. Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: max98090: Make sure we configure BCLK in one placeLiam Girdwood2014-05-161-0/+1
| | | | | | | | | BCL is being configured in two places producing a warning message. Make sure we only configure BCLK once and when we are master. Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com> Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: max98090: Remove unused control_data fieldLars-Peter Clausen2014-03-141-1/+0
| | | | | | | | The driver assigns a value to the control_data field of the driver's state struct, but never reads it again. Which means it is unused and can be removed. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC:: max98090: Remove executable bitJoe Perches2013-03-201-0/+0
| | | | | | | Source files shouldn't have the executable bit set. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Replace max98090 Device DriverJerry Wong2013-02-071-0/+1549
This patch completes the replacement of the existing max98090 driver, by installing a more complete driver. Signed-off-by: Jerry Wong <jerry.wong@maximintegrated.com> Tested-by: Matthew Mowdy <matthew.mowdy@maximintegrated.com> Reviewed-by: Ralph Birt <ralph.birt@maximintegrated.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
OpenPOWER on IntegriCloud