Avoid use of the ASoC-specific register I/O functions by converting to
use the MMIO regmap provided the core MFD.
Signed-off-by: Mark Brown <broonie@linaro.org>
Support future refactoring by using the core I/O functions rather than
calling the driver provided I/O functions directly.
Signed-off-by: Mark Brown <broonie@linaro.org>
This is slightly more complex than a standard regmap conversion due to
the moderately detailed cache control and the open coding of a register
patch for the class D speaker on the TLV320AIC3007.
Although the device supports paging this is not currently implemented as
the additional pages are only used during the application of the patch
for the TLV320AIC3007.
Signed-off-by: Mark Brown <broonie@linaro.org>
Rather than referencing the cache directly read back the values we are
going to restore, supporting refactoring to use regmap.
Signed-off-by: Mark Brown <broonie@linaro.org>
Every statement in this comment is incorrect either through bitrot or
(mostly) through never having corresponded to reality in the first place.
Signed-off-by: Mark Brown <broonie@linaro.org>
The only control interface supported by this driver is I2C so there is no
need for conditional compilation around the control interface.
Signed-off-by: Mark Brown <broonie@linaro.org>
Saves code and moves us towards being able to remove the duplicate ASoC
level register I/O functionality.
Signed-off-by: Mark Brown <broonie@linaro.org>
The registers that are being kept uncached are marked as volatile anyway
so the call has no practical impact.
Signed-off-by: Mark Brown <broonie@linaro.org>
We do some I/O in probe so we need to ensure the I/O operations are fully
set up then.
Reported-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Mark Brown <broonie@linaro.org>
This saves code and moves us towards removing the redundant register I/O
implementation in ASoC.
Tested-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
As part of a general push to eliminate the duplicated register I/O support
in ASoC convert ab8500 to use regmap.
Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
In preparation for moving away from implementing the ASoC level register
I/O functionality change direct calls to the ab8500 implementation of that
to use snd_soc_write()
Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
As part of a move to remove the duplication of regmap functionality in ASoC
convert the 88pm860x driver to use the regmap from the MFD. This means that
we no longer cache the registers so performance will be slightly reduced
on I/O operations.
Signed-off-by: Mark Brown <broonie@linaro.org>
In preparation for using the regmap directly in the CODEC driver replace
references to the I2C client using control_data with references to the
driver private data.
Signed-off-by: Mark Brown <broonie@linaro.org>
The ACPI_PTR() macro evaluates to NULL if ACPI is disabled and hence the
ACPI match table won't be used, causing the compiler to complain. Avoid
this by protecting the table using an #ifdef CONFIG_ACPI.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
'break' after return statement is redundant. Remove it.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
Provide a module device table for the SPI subsystem, so the driver can
be autoloaded by the SPI core.
While at it, get rid of an unnecessary #define.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
This patch suppresses calculation of REFCLK parameters when the REFCLK
source frequency is set to zero, additionally it will consider a source
frequency of zero as the REFCLK being disabled and switch to using the
SYNCCLK.
Reported-by: Kyung Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Allow the RT5640 to be probed as an ACPI I2C device.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
'hp_amp_power_on' is used only in this file. Make it static.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
The platform data is being used to obtain the core driver data for the
device (which is a bit of an abuse but not the issue at hand) so reference
it directly in order to support refactoring to use regmap.
Signed-off-by: Mark Brown <broonie@linaro.org>
This is called from snd_ctl_elem_write() with user supplied data so we
need to add some bounds checking.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
If the user passes an invalid value it leads to an info leak when we
print the error message or it could oops. This is called with user
supplied data from snd_ctl_elem_write().
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
The ->put() function are called from snd_ctl_elem_write() with user
supplied data. The limit checks here could underflow leading to a
crash.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
After the last architecture switched to generic hard irqs the config
options HAVE_GENERIC_HARDIRQS & GENERIC_HARDIRQS and the related code
for !CONFIG_GENERIC_HARDIRQS can be removed.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
The MC13783 Chip Errata, Rev. 4 says, that depending on SPI clock
and main audio clock speed, the Audio Codec or Stereo DAC do sometimes
not start when programmed to do so. This is due to an internal clock
timing issue related to the loading of the SPI bits into the audio block.
On an i.MX27 based system, this issue lead to switched audio channels under
certain circumstances: RTC + Touch + Audio are used and loaded at startup.
The mentioned workaround of writing registers 40 and 41 two times is implemented
here.
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Mark Brown <broonie@linaro.org>
The ssm2602 uses regmap for caching not soc-cache, so we need to use
regcache_sync() instead of snd_soc_cache_sync().
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>