summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/wm8962.c
AgeCommit message (Collapse)Author
2012-02-04ASoC: core: Add support for DAI and machine kcontrols.Liam Girdwood
Currently ASoC can only add kcontrols using codec and platform component device handles. It's also desirable to add kcontrols for DAIs (i.e. McBSP) and for SoC card machine drivers too. This allows the kcontrol to have a direct handle to the parent ASoC component DAI/SoC Card/Platform/Codec device and hence easily get it's private data. This change makes snd_soc_add_controls() static and wraps it in the folowing calls (card and dai are new) :- snd_soc_add_card_controls() snd_soc_add_codec_controls() snd_soc_add_dai_controls() snd_soc_add_platform_controls() This patch also does a lot of small mechanical changes in individual codec drivers to replace snd_soc_add_controls() with snd_soc_add_codec_controls(). It also updates the McBSP DAI driver to use snd_soc_add_dai_controls(). Finally, it updates the existing machine drivers that register controls to either :- 1) Use snd_soc_add_card_controls() where no direct codec control is required. 2) Use snd_soc_add_codec_controls() where there is direct codec control. In the case of 1) above we also update the machine drivers to get the correct component data pointers from the kcontrol (rather than getting the machine pointer via the codec pointer). Signed-off-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-27ASoC: wm8962: Enable idle_bias_offMark Brown
The WM8962 has ground referenced and class D outputs so can happily go down to BIAS_OFF without a large startup time. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-24ASoC: wm8962: Optimise power consumption for IN4 DC measurement usageMark Brown
When the hardware is configured with one or both of the IN4 inputs used for DC measurement (with no DC blocking capacitor connected) then we can improve power consumption slightly in idle modes by applying a register write sequence. Provide platform data to enable this, implemented using a regmap patch. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-20ASoC: Add WM8962 DAC and ADC L/R swap supportMark Brown
Simple switches since there's no per-channel control. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-20ASoC: Convert WM8962 register access map to modern styleMark Brown
Much more compact, both in terms of source and especially in terms of RAM used at runtime. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-20ASoC: Make WM8962 I2C usage unconditionalMark Brown
We only support I2C so no need to ifdef. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-01-02ASoC: Fix return value of wm8962_gpio_direction_out()Axel Lin
We can't just pass back the return value of snd_soc_update_bits() as it will be 1 if a bit changed rather than zero. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-12-30ASoC: Enable ASoC register map dump for some regmap CODECsMark Brown
It's still useful to be able to poke around in the register map at runtime. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-12-02ASoC: Make WM8962 beep a signal generatorMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-11-27ASoC: Convert WM8962 to devm_kzalloc()Mark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-27ASoC: Remove unneeded platform_device.h inclusions from CODECsMark Brown
They've not been needed for a long time if they were ever required. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-23ASoC: Constify snd_soc_dai_ops structsLars-Peter Clausen
Commit 1ee46ebd("ASoC: Make the DAI ops constant in the DAI structure") introduced the possibility to have constant DAI ops structures, yet this is barley used in both existing drivers and also new drivers being submitted, although none of them modifies its DAI ops structure. The later is not surprising since existing drivers are often used as templates for new drivers. So this patch just constifies all existing snd_soc_dai_ops structs to eliminate the issue altogether. The patch was generated with the following coccinelle semantic patch: // <smpl> @@ identifier ops; @@ -struct snd_soc_dai_ops ops = +const struct snd_soc_dai_ops ops = { ... }; // </smpl> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-21Merge branch 'for-3.2' into for-3.3Mark Brown
2011-11-20ASoC: wm8962: fix DB_RANGE sizeClemens Ladisch
Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent reading more data than actually is in the arrays. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2011-11-08ASoC: Disable debounce on some WM8962 interruptsMark Brown
Allow them to work when the device is unclocked. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-08ASoC: Convert WM8962 to direct regmap usageMark Brown
This initial conversion just moves the register init, regulator acquisition and device verification out to the I2C probe(). Movement of other parts of the driver like the GPIO and beep generation code will follow. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-08Merge branch 'for-3.2' into for-3.3Mark Brown
Conflicts: sound/soc/codecs/wm8940.c
2011-11-04ASoC: Manage thermal shutdown for WM8962Mark Brown
Disable the thermal shutdown circuits for headphone and speaker when the relevant outputs are not enabled in order to save current in idle modes. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-01ASoC: Disable MICBIAS and SYSCLK when stopping WM8962 accessory detectionMark Brown
They aren't needed any more. If machines need them for other purposes then further changes will be required. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-01ASoC: WM8962 accessory detection requires MICBIASMark Brown
Force MICBIAS on as well as SYSCLK as the WM8962 accessory detection can't function without both. No point in making machine drivers manually enable it. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-01ASoC: Enable SYSCLK last when enabling WM8962 mic detectionMark Brown
Ensure everything is set up before we start detecting. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-01ASoC: Start WM8962 FLL if SYSCLK is enabledMark Brown
Since we have code to automatically manage the start and stop of the FLL based on the SYSCLK widget if SYSCLK is already enabled and the FLL is configured then we need to start it up. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-11-01ASoC: Ensure we always delay for WM8962 FLL when starting from SYSCLKMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
2011-11-01ASoC: Ensure the WM8962 oscillator and PLLs start up disabledMark Brown
Since there is no current software control for these they would otherwise be left enabled, consuming power. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
2011-11-01ASoC: Ensure WM8962 PLL registers are resetMark Brown
The WM8962 has a separate software reset for the PLL registers. Ensure that these are reset also on startup. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
2011-10-04ASoC: Remove direct register cache accesses from WM8962 driverMark Brown
Also fix return values for speaker switch updates. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
2011-09-29ASoC: Fix a bug in WM8962 DSP_A and DSP_B settingsSusan Gao
Signed-off-by: Susan Gao <sgao@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmico.com> Cc: stable@kernel.org
2011-09-23ASoC: Convert WM8962 MICBIAS to a supply widgetMark Brown
A supply widget is generally clearer than a MICBIAS widget and a mic bias is just a type of supply so use a supply widget for the MICBIAS. This also avoids confusion with the routing when connected to multiple inputs. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-09-23ASoC: Rename WM8962 DMIC widget to DMIC_ENAMark Brown
Matches the register name and avoids confusion with board widgets. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-09-20Merge branch 'for-3.1' into for-3.2Mark Brown
2011-09-20ASoC: Remove bitrotted wm8962_resume()Mark Brown
This functionality is now subsumed within the bias management, using the standard cache management functionality, without assuming the cache type. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-22Merge branch 'for-3.1' into for-3.2Mark Brown
2011-08-22ASoC: Provide more detail on WM8962 thermal shutdown statusMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-22ASoC: Clear any outstanding WM8962 FLL lock completions before waitingMark Brown
Ensure that we don't spuriously trigger early. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-22ASoC: Report IRQ_NONE when we don't see an interrupt from WM8962Mark Brown
This should never happen with level triggered IRQs. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-22ASoC: Initial WM8962 DSP2 supportMark Brown
The WM8962 features a DSP providing a number of signal processing features including HD Bass and Virtual Surround Sound (VSS). Enable initial support for this, allowing users to enable and disable the algorithms using the default coefficient sets. Further patches will add support for runtime configuration of the DSP coefficients. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-22ASoC: Add basic WM8962 capture low/high pass filter controlMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-08-14ASoC: Move WM8962 CLKREG_OVD earlierMark Brown
When the clocking registers are not overriden some of the registers are not writable. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com> Cc: stable@kernel.org
2011-07-20ASoC: Acknowledge WM8962 interrupts before acting on themMark Brown
This closes the small race between a status being read in response to an interrupt and clearing the interrupt, meaning that if the status changes between those periods we might not get a reassertion of the interrupt. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-06-08Merge branch 'for-3.0' into for-3.1Mark Brown
2011-06-08ASoC: Defer all WM8962 clocking configuration until power upMark Brown
Don't require an audio rate SYSCLK in hw_params() in order to better support microphone detection use cases. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-06-08ASoC: Implement base 5 band EQ control for WM8962Mark Brown
ReTune Mobile modes are not currently supported. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-06-08ASoC: Report errors when we have a WM8962 IRQ and don't get FLL lockMark Brown
We really should be getting the interrupt - if we don't get one it's very likely that the configuration is incorrect and audio will fail. Also increase the timeout substantially in this case for safety. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-06-08ASoC: Factor out I2C usage in WM8962 driverMark Brown
The chip can actually support SPI so we shouldn't assume we've got an I2C device even though that's the most common configuration. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-06-08ASoC: Fix WM8962 headphone volume update for use of advanced cachesMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com> Cc: stable@kernel.org
2011-04-27ASoC: Implement WM8962 ADC high pass filter configurationMark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-04-26ASoC: Don't warn if the WM8962 SYSCLK FLL setting doesn't match realityMark Brown
When bringing up audio low power modes boards may configure SYSCLK before they actually start the FLL as we do much of the clocking setup prior to the power up sequence. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-04-26ASoC: Implement WM8962 DMIC supportMark Brown
DMIC support is automatically disabled when none of the GPIOs are set up to bring out the DMICCLK and DMICDAT pins at startup. Note that there's no support for controlling DMIC routing except the power control so the board DAPM configuration will need to manage DMIC enable and disable if analogue mics (eg, a headset) also exist. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-04-26ASoC: Move WM8962 FLL configuration to CODECMark Brown
There's only one DAI anyway. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
2011-04-26ASoC: Support FLL lock interrupt on WM8962Mark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>