summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm_hubs.c
Commit message (Collapse)AuthorAgeFilesLines
...
* ASoC: Consolidate use of controls with custom get/put functionPeter Ujfalusi2011-10-051-13/+5
| | | | | | | | | | | Use the macros for controls require custom get/put function. This is to make sure that the soc_mixer_control is used consistently among the drivers. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Arun KS <arunks@mistralsolutions.com> Cc: Misael Lopez Cruz <misael.lopez@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Add VMID widget for wm_hubs devicesMark Brown2011-08-141-0/+16
| | | | | | | | | Currently this does not actually do anything, it is being introduced in order to facilitate additional power optimisations for current generation devices. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* Merge branch 'for-3.1' into for-3.2Mark Brown2011-08-081-2/+1
|\ | | | | | | | | | | | | | | Conflict due to the fix for the register map failure - taken the for-3.1 version. Conflicts: sound/soc/codecs/sgtl5000.c
| * ASoC: Disable wm_hubs periodic DC servo updateMark Brown2011-07-291-2/+1
| | | | | | | | | | | | | | | | | | This does not function correctly in all circumstances so disable the periodic updates unconditionally for stable; a future patch will reenable where appropriate. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* | ASoC: Support separate left and right channel dcs_codes valuesMark Brown2011-08-011-6/+7
| | | | | | | | | | | | | | | | Some devices can have performance optimized by setting different offsets for left and right channels. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* | ASoC: Implement new DC servo readback mode for late WM8994 revisionsMark Brown2011-08-011-4/+15
|/ | | | | | | | | Later WM8994 devices implement a new DC servo readback mode with the register used to access the offset moved to register 0x59. Implement support for this and enable it on the appropriate devices. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* ASoC: Handle spurious wm_hubs DC servo done interruptsMark Brown2011-07-151-14/+16
| | | | | | Don't assume the first fire indicates that we're done. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Implement DC servo completion IRQ handling for wm_hubs devicesMark Brown2011-07-141-5/+29
| | | | | | | | The individual devices should set the flag dcs_done_irq in the hubs shared data structure to indicate that they will flag the interrupt by calling wm_hubs_dcs_done(). Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Use late enable handling for direct voice, speaker and headphoneMark Brown2011-07-141-3/+0
| | | | | | | This ensures appropriate clocking for bypass paths to speaker and headphone and direct voice paths on affected revisions. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Correct left/right swap in wm_hubs DC offset correctionMark Brown2011-06-291-8/+8
| | | | | | | | It was consistently wrong for everything except WM8993 so should be no functional change. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.comm>
* ASoC: Allow suppression of series updates on wm_hubs devicesMark Brown2011-06-231-1/+1
| | | | | | | Some devices do not support manual updates of the DC servo. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* ASoC: Trigger wm_hubs series update startup off a separate flagMark Brown2011-06-231-2/+1
| | | | | | | Allowing the two to be used independently. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* ASoC: Fix wm_hubs input PGA ZC bitsMark Brown2011-05-271-4/+4
| | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
* ASoC: Add some missing volume update bit sets for wm_hubs devicesMark Brown2011-05-161-2/+6
| | | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com> Cc: stable@kernel.org
* ASoC: Ensure output PGA is enabled for line outputs in wm_hubsMark Brown2011-05-161-8/+8
| | | | | | | | Also fix a left/right typo while we're at it. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com. Cc: stable@kernel.org
* ASoC: Fix output PGA enabling in wm_hubs CODECsMark Brown2011-04-111-4/+4
| | | | | | | | | | The output PGA was not being powered up in headphone and speaker paths, removing the ability to offer volume control and mute with the output PGA. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Cc: stable@kernel.org
* ASoC: Hook wm_hubs micbiases up to CLK_SYSMark Brown2011-02-181-0/+3
| | | | | | | | The microphone detection functionality requires a clock to work. In any non-detection case where the MICBIAS is enabled CLK_SYS will be needed anyway so there is no negative impact on power consumption. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Log wm_hubs DC servo operation code when reporting a timeoutMark Brown2011-02-181-1/+2
| | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Handle low measured DC offsets for wm_hubs devicesMark Brown2011-01-211-8/+7
| | | | | | | | | The DC servo codes are actually signed numbers so need to be treated as such. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Cc: stable@kernel.org
* Merge branch 'for-2.6.37' into for-2.6.38Mark Brown2010-12-061-1/+1
|\ | | | | | | | | Conflicts: include/linux/mfd/wm8994/pdata.h
| * ASoC: Fix swap of left and right channels for WM8993/4 speaker boost gainUk Kim2010-12-061-1/+1
| | | | | | | | | | | | | | | | | | SPKOUTL_BOOST start from third bit, SPKOUTLR_BOOST start from 0 bit. Signed-off-by: Uk Kim <w0806.kim@samsung.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@kernel.org
* | ASoC: Use DC servo startup mode when not doing DCS correctionMark Brown2010-11-271-6/+14
| | | | | | | | | | | | | | | | | | Devices which do not have a DCS correction applied can use the explicit DC servo startup mode for optimal startup performance. This most immediately affects the WM8958. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* | ASoC: Do not include soc-dapm.hJarkko Nikula2010-11-221-1/+0
| | | | | | | | | | | | | | | | There is no need to include soc-dapm.h since soc.h includes it. Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ASoC: Remove unnecessary semicolonsJoe Perches2010-11-151-1/+1
| | | | | | | | | | | | Signed-off-by: Joe Perches <joe@perches.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ASoC: Decouple DAPM from CODECsLiam Girdwood2010-11-061-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Decoupling Dynamic Audio Power Management (DAPM) from codec devices is required when developing ASoC further. Such as for other ASoC components to have DAPM widgets or when extending DAPM to handle cross-device paths. This patch decouples DAPM related variables from struct snd_soc_codec and moves them to new struct snd_soc_dapm_context that is used to encapsulate DAPM context of a device. ASoC core and API of DAPM functions are modified to use DAPM context instead of codec. This patch does not change current functionality and a large part of changes come because of structure and internal API changes. Core implementation is from Liam Girdwood <lrg@slimlogic.co.uk> with some minor core changes, codecs and machine driver conversions from Jarkko Nikula <jhnikula@gmail.com>. Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Manuel Lauss <manuel.lauss@googlemail.com> Cc: Mike Frysinger <vapier.adi@gmail.com> Cc: Cliff Cai <cliff.cai@analog.com> Cc: Kevin Hilman <khilman@deeprootsystems.com> Cc: Ryan Mallon <ryan@bluewatersys.com> Cc: Timur Tabi <timur@freescale.com> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Lars-Peter Clausen <lars@metafoo.de> Cc: Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org> Cc: Wan ZongShun <mcuos.com@gmail.com> Cc: Eric Miao <eric.y.miao@gmail.com> Cc: Jassi Brar <jassi.brar@samsung.com> Cc: Daniel Gloeckner <dg@emlix.com> Cc: Kuninori Morimoto <morimoto.kuninori@renesas.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | Merge branch 'for-2.6.37' into HEADMark Brown2010-11-021-1/+1
|\| | | | | | | | | | | | | WARN() fix from Joe moved. Conflicts: sound/soc/codecs/wm_hubs.c
| * ASoC: Update WARN uses in wm_hubsJoe Perches2010-11-011-1/+1
| | | | | | | | | | | | | | | | Add missing newlines. Signed-off-by: Joe Perches <joe@perches.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | ASoC: Store DC offset correction for wm_hubs devices in class W modeMark Brown2010-10-281-23/+46
|/ | | | | | | | | | | | | | | Providing the analogue configuration of the output path remains the same the DC offset corrected by the DC servo will remain identical so we can skip the callibration, reducing the startup time for the headphone output. Implement this for the wm_hubs devices as has been done for several other CODECs. Don't do this if we have any analogue paths enabled since offsets may be being introduced by the analogue paths which could vary outside the control of the driver. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Explicitly disable DC servo on WM hubs headphone powerdownMark Brown2010-07-201-0/+2
| | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Reorder power down sequence for WM hubs devicesMark Brown2010-05-111-4/+4
| | | | | | | | | Disable the output stage prior to the delay stage rather than the other way around. Fixes merge issue with previous headphone output path corrections. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Add additional WM hubs DC servo traceMark Brown2010-05-111-0/+4
| | | | | | | | Log the values we're getting back from the DC servo and the values we write to it. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Add indirection for CODEC private dataMark Brown2010-04-171-3/+3
| | | | | | | | | | | | | | | | One of the features of the multi CODEC work is that it embeds a struct device in the CODEC to provide diagnostics via a sysfs class rather than via the device tree, at which point it's much better to use the struct device private data rather than having two places to store it. Provide an accessor function to allow this change to be made more easily, and update all the CODEC drivers are updated. To ensure use of the accessor the private data structure member is renamed, meaning that if code developed with older an older core that still uses private_data is merged it will fail to build. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Don't use DCS_DATAPATH_BUSY for WM hubs devicesMark Brown2010-04-051-23/+15
| | | | | | | | | | | | The DCS_DATAPATH_BUSY bit used to monitor the completion of DC servo operations has been deprecated and with some more recente revisions may perform incorrectly, especially when only analogue bypass paths are in use. Switch to using readback from the DC servo command register instead, which is supported for all devices. Without this unacceptably long timeouts may be observed in some circumstances. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Don't do runtime wm_hubs DC servo updates if using offset correctionMark Brown2010-04-051-0/+6
| | | | | | | | | If we need to offset correct the DC servo then don't use runtime recalibration since that is likely to introduce further offsets which will be evident on powerdown. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Support second DC servo readback method for wm_hubsMark Brown2010-04-051-11/+30
| | | | | | | | | | | More recent Wolfson hubs devices add the ability to read back the DC servo calibration information from the register used to write offsets, and later still ones remove the old readback registers. Add support for the new scheme, and use it for WM8994 device revisions that support it. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Avoid wraparound in wm_hubs DC servo correctionMark Brown2010-04-051-2/+4
| | | | | | | | If the correction wraps around then a substantial offset would be introduced. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Bail out of wm_hubs DC servo if calibration failsMark Brown2010-03-191-1/+1
| | | | | | | | We're keeping track of the number of times we've iterated but never actually using this to bail out if the chip looks stuck. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Improved wm_hubs headphone handlingMark Brown2010-02-011-26/+116
| | | | | | | | | | | | | | | Perform DC servo offset calibration using a series update sequence rather than startup update sequence, tuning the configuration of the WM8993 DC servo to make best use of this. Also introduce currently unused data allowing us to correct for any systematic errors in the DC servo calibration results and an alternative startup path for the headphone output which performs better with some chip revisions. The alternative setup sequence is enabled for WM8993. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Use BIAS_OFF when idle for wm_hubs devicesMark Brown2010-01-211-0/+6
| | | | | | | This provides a small power saving when audio is inactive. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
* ASoC: Rename controls with a / in wm_hubsJoonyoung Shim2009-12-041-8/+8
| | | | | | | | | | | | This renames from a character / to : of controls. A / occurs below error messages. ASoC: Failed to create IN2RP/VXRP debugfs file ASoC: Failed to create IN2LP/VXRN debugfs file Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Factor out analogue platform data from WM8993Mark Brown2009-09-301-0/+35
| | | | | | This is also shared with newer CODECs. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Fully specify DC servo bits to update in wm_hubsMark Brown2009-09-021-10/+2
| | | | | | | Avoids potential issues if we read back unexpected values during a read/modify/write cycle. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Remove unneeded inclusion of linux/regulator/consumer.hTakashi Iwai2009-08-241-1/+0
| | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ASoC: Remove duplicate ADC/DAC widgets from wm_hubs.cMark Brown2009-08-181-6/+0
| | | | | | | These need to be in the CODEC since the DAIs supported by the CODECs aren't static. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Factor out shared code from WM8993Mark Brown2009-08-131-0/+758
The WM8993 analogue control is shared with other devices in the same product line. Since this is a very substantial proportion of the driver move the definitions of these controls into a new wm_hubs module which allows them to be shared between the two. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>