Commit Graph

320 Commits

Author SHA1 Message Date
Mark Brown
c2aef4ffd2 ASoC: Support CLK_DSP in WM8903
CLK_DSP provides a master clock for the DAC and ADC related functionality
on the device.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-22 21:37:24 +01:00
Mark Brown
42768a1282 ASoC: Use DAPM supply widget for WM8903 charge pump
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-22 21:37:02 +01:00
Joonyoung Shim
7154b3e802 ASoC: TWL4030: Add support Voice DAI
Add Voice DAI to support the PCM voice interface of the twl4030 codec.

The PCM voice interface can be used with 8-kHz(voice narrowband) or
16-kHz(voice wideband) sampling rates, and 16bits, and mono RX and mono
TX or stereo TX.

The PCM voice interface has two modes
 - PCM mode1 : This uses the normal FS polarity and the rising edge of
               the clock signal.
 - PCM mode2 : This uses the FS polarity inverted and the falling edge
               of the clock signal.

If the system master clock is not 26MHz or the twl4030 codec mode is not
option2, the voice PCM interface is not available.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-20 12:44:24 +01:00
Peter Ujfalusi
6b87a91f54 ASoC: TWL4030: Fix for the constraint handling
The original implementation of the constraints were good against sane
applications.
If the opening sequence is:
stream1_open, stream1_hw_params, stream2_open, stream2_hw_params -> the
constraints are set correctly for stream2.

But if the sequence is:
stream1_open, stream2_open, stream2_hw_params, stream1_hw_params -> than stream2
would receive constraint rate = 0, sample_bits = 0, since the stream1 has not
yet called hw_params...

The command to trigger this event:
gst-launch-0.10 alsasrc device=hw:0 ! alsasink device=hw:0 sync=false

This patch does some 'black magic' in order to always set the correct
constraints and sets it only when it is needed for the other stream.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-17 16:02:23 +01:00
Mark Brown
0d960e8891 ASoC: Request shared rates for WM8903
It has a shared LRCLK.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-16 11:03:11 +01:00
Mark Brown
9b1a88c710 Merge branch 'for-2.6.30' into for-2.6.31 2009-04-13 15:12:48 +01:00
Mark Brown
f2644a2c00 ASoC: Add WM8960 CODEC driver
The WM8960 is a low power, high quality stereo codec designed for
portable digital audio applications.

Stereo class D speaker drivers provide 1W per channel into 8W loads.
Guaranteed low leakage, excellent PSRR and pop/click suppression
mechanisms enable direct battery connection for the speaker supply.

The device also integrates a complete microphone interface and a stereo
headphone driver. External component requirements are drastically
reduced as no separate microphone, speaker or headphone amplifiers are
required. Advanced on-chip digital signal processing performs automatic
level control for the microphone or line input.

Stereo 24-bit sigma-delta ADCs and DACs are used with low power
over-sampling digital interpolation and decimation filters and a
flexible digital audio interface.

The master clock can be input directly or generated internally by an
onboard PLL, supporting most commonly-used clocking schemes.

This driver was originally written by Liam Girdwood, with substantial
subsequent additions and updates for feature completeness and changes in
the ASoC framework from me.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-13 15:11:46 +01:00
Mark Brown
6bbcb459cd ASoC: Move the WM9713 voice DAC powerdown to a DAPM event
This ensures that we sync with the DAPM powerdown sequencing properly
and don't need to bounce the power on the voice DAC so often.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-13 11:59:01 +01:00
Mark Brown
f4976116a9 ASoC: WM9713 requires symmetric rates on the voice DAI
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-13 11:59:01 +01:00
Peter Ujfalusi
894bf92fde ASoC: tlv320aic23: add DSP_A format support
Add DSP_A interface format support by setting the LRP bit in
DSP mode.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-09 13:36:54 +01:00
Mark Brown
5409fb4e32 ASoC: Add WM8988 CODEC driver
The WM8988 is a low power, high quality stereo CODEC designed for
portable digital audio applications.

The device integrates complete interfaces to 2 stereo headphone or line
out ports. External component requirements are drastically reduced as no
separate headphone amplifiers are required. Advanced on-chip digital
signal processing performs graphic equaliser, 3-D sound enhancement and
automatic level control for the microphone or line input.

The WM8988 can operate as a master or a slave, with various master clock
frequencies including 12 or 24MHz for USB devices, or standard 256fs
rates like 12.288MHz and 24.576MHz. Different audio sample rates such as
96kHz, 48kHz, 44.1kHz are generated directly from the master clock
without the need for an external PLL.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-07 18:51:23 +01:00
Peter Ujfalusi
d6648da122 ASoC: TWL4030: Compillation error fix
Fix for compillation error introduced by the constrain patch.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-07 10:52:00 +01:00
Dan Carpenter
09318c47b6 ASoC: Fix null dereference in ak4535_remove()
ak4535_remove() from sound/soc/codecs/ak4535.c calls
i2c_unregister_device() with a possibly null pointer.

This bug was found by smatch (http://repo.or.cz/w/smatch.git/).

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-06 10:53:37 +01:00
Peter Ujfalusi
103f211d0b ASoC: TWL4030: Add actual support for 96KHz playback support
Adds the needed code to be able to use 96KHz playback.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-03 12:48:40 +01:00
Mark Brown
0a11b16853 ASoC: Implement suspend and resume operations for WM9705
Without this the WM9705 driver fails badly when resuming.

Tested-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-02 16:34:37 +01:00
Peter Ujfalusi
7220b9f4bd ASoC: TWL4030: Add constrains for second stream
In case of duplex mode (capture and playback at the same time), the second
stream has to have the same parameters (rate, sample size) as the already
running stream.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-02 16:34:16 +01:00
Peter Ujfalusi
31ad0f31c3 ASoC: TWL4030: 96KHz playback support
TWL4030 supports 96KHz sample playback, but only playback.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-04-02 16:34:16 +01:00
Mark Brown
e8523b641c ASoC: Add FLL support for WM8400
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-19 11:56:11 +00:00
Mark Brown
24a51029fc ASoC: Add separate AVDD for WM8400
There is an AVDD supply as well, normally one or more of the other
upplies would be tied to it.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-18 18:31:54 +00:00
Mark Brown
e3598f6e42 ASoC: Further optimise WM8400 bias configuration sequence
The active discharge does not bring sufficient benefit to justify the
lengthy times involved so don't do that.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-18 18:31:53 +00:00
Joonyoung Shim
10d9e3d99e ASoC: twl4030 - Fix build error
CC      sound/soc/codecs/twl4030.o
sound/soc/codecs/twl4030.c:1400: warning: braces around scalar initializer
sound/soc/codecs/twl4030.c:1400: warning: (near initialization for 'twl4030_dai.ops')
sound/soc/codecs/twl4030.c:1401: error: field name not in record or union initializer
sound/soc/codecs/twl4030.c:1401: error: (near initialization for 'twl4030_dai.ops')
sound/soc/codecs/twl4030.c:1401: warning: initialization from incompatible pointer type
sound/soc/codecs/twl4030.c:1402: error: field name not in record or union initializer
sound/soc/codecs/twl4030.c:1402: error: (near initialization for 'twl4030_dai.ops')
sound/soc/codecs/twl4030.c:1402: warning: excess elements in scalar initializer
sound/soc/codecs/twl4030.c:1402: warning: (near initialization for 'twl4030_dai.ops')
sound/soc/codecs/twl4030.c:1403: error: field name not in record or union initializer
sound/soc/codecs/twl4030.c:1403: error: (near initialization for 'twl4030_dai.ops')
sound/soc/codecs/twl4030.c:1403: warning: excess elements in scalar initializer
sound/soc/codecs/twl4030.c:1403: warning: (near initialization for 'twl4030_dai.ops')

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-16 14:13:56 +00:00
Philipp Zabel
eb5f6d753e ASoC: Replace remaining uses of snd_soc_cnew with snd_soc_add_controls.
The drivers are basically duplicating the same code over and over.
As snd_soc_cnew is going to be made static some time after the next
merge window, we might as well convert them now.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-12 15:43:30 +00:00
Mark Brown
6f7cb44ba1 ASoC: Move WM8580 to normal I2C device probe
Refactor the WM8580 device registration to probe via standard I2C device
registration, registering the DAIs once the device has probed via I2C.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-12 15:43:24 +00:00
Mark Brown
65ec1cd1e2 ASoC: Merge dai_ops factor out
Merge Eric Maio's patch to merge snd_soc_dai_ops out of line.  Fixed
merge issues and updated drivers, plus an issue with the ops for the two
s3c2443 AC97 DAIs having been merged.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-11 16:51:31 +00:00
Mark Brown
02b7cbc399 ASoC: Remove version display from WM8580 driver
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-11 14:40:41 +00:00
Mark Brown
aaf1e176fa ASoC: Add initial driver for the WM8400 CODEC
The WM8400 is a highly integrated audio CODEC and power management unit
intended for mobile multimedia application.  This driver supports the
primary audio CODEC features, including:

 - 1W speaker driver
 - Fully differential headphone output
 - Up to 4 differential microphone inputs

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-11 13:49:46 +00:00
Daniel Mack
a381934e5f ASoC: Add a driver for AK4104 S/PDIF transmitter
This adds a driver for the SPI connected AK4104 S/PDIF transmitter
device. Its features are fairly simple, but as there is need to set up
certain bits in the IEC958 information, this better goes into a real
driver.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Mark Brown <broonie@sirena.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-09 10:46:17 +00:00
Mark Brown
055a49b0c9 ASoC: Remove unneeded forward reference to WM8753 SPI implementation
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-08 20:43:33 +00:00
Daniel Mack
b191f63c4f ASoC: bring cs4270 feature/limitations list in sync
Removes numbers from the list of features/limitations and makes it
reflect recent changes to the code.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-08 18:27:36 +00:00
Mike Frysinger
67a9c573b5 ASoC: Blackfin: fix typo in MUTE definition
Reported-by: Rob Maris <maris.rob@vdi.de>
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-06 13:37:18 +00:00
Peter Ujfalusi
89492be886 ASoC: TWL4030: Make the HS ramp delay configurable
Enum type for selecting the desired ramp delay for the headset output.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-06 13:37:11 +00:00
Eric Miao
6335d05548 ASoC: make ops a pointer in 'struct snd_soc_dai'
Considering the fact that most cpu_dai or codec_dai are using a same
'snd_soc_dai_ops' for several similar interfaces, 'ops' would be better
made a pointer instead, to make sharing easier and code a bit cleaner.

The patch below is rather preliminary since the asoc tree is being
actively developed, and this touches almost every piece of code,
(and possibly many others in development need to be changed as
well). Building of all codecs are OK, yet to every SoC, I didn't test
that.

Signed-off-by: Eric Miao <eric.miao@marvell.com>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-04 22:29:47 +00:00
Jonas Andersson
86027ae78c ASoC: wm8510 pll settings
When setting WM8510_MCLKDIV the pll was turned off.

When setting pll frequency you got twice the expected freq, because
the  code calculated  with postscaler of 8,  but  the hardware divide by 4.

Signed-off-by: Jonas Andersson <jonas@microbit.se>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-04 14:47:39 +00:00
Philipp Zabel
5f2a9384a9 ASoC: UDA1380: DATAI is slave only
Only allow SND_SOC_DAIFMT_CBS_CFS for the playback DAI.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-03 15:58:51 +00:00
Philipp Zabel
ef9e5e5c31 ASoC: UDA1380: change decimator/interpolator register handling
If the UDA1380's interpolator or decimator are set to be clocked from
the WSPLL (which syncs to the WSI signal), the DAI link must be running
to change the interpolator/decimator registers (which include volume
controls and digital mute setting).

* Queue work in the alsa PCM_START .trigger to flush registers
  as soon as the link is running. This replaces the .prepare
  and .digital_mute callbacks.
* Use the SILENCE override instead of MTM for muting and remove
  its alsa control to avoid confusion.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-03 15:54:10 +00:00
Philipp Zabel
a3c7729e6c ASoC: Remove version display from the UDA1380 driver
Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-03 15:54:10 +00:00
Daniel Mack
ff09d49ad0 ASoC: fix typo and removed unneeded switch case for cs4270
This removes a misspelled comment and got rid of superfluous switch
case.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-03-02 14:39:23 +00:00
Daniel Mack
4eae080dda ASoC: Add cs4270 support for slave mode configurations
Added support for scenarios where the Cirrus CS4270 audio codec is slave
to the bitclk and lrclk. Mixed setups are unsupported.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-28 17:18:25 +00:00
Takashi Iwai
6d5643455c ASoC: wm8753 - Fix build error
sound/soc/codecs/wm8753.c: In function 'wm8753_probe':
sound/soc/codecs/wm8753.c:1577: error: implicit declaration of function 'wm8753_add_controls'

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-26 11:29:58 +01:00
Mark Brown
e611bd8244 ASoC: Only write back non-default registers when resuming WM8753
This will reduce the number of writes done on resume, allowing that to
complete faster (especially on systems with very slow I2C like the
current Samsung driver).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-24 23:49:56 +00:00
Mark Brown
c2bac1606a ASoC: Convert WM8753 to register via normal device probe
The base support for the only in-tree user, the GTA01, is out of tree
and will be updated separately.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-24 23:49:53 +00:00
Mark Brown
69e169da5a ASoC: Shuffle WM8753 device registration code
This patch should be pure code motion, separating that out from the
functional changes to move to new style device registration.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-24 23:48:14 +00:00
Mark Brown
8056d9bbb5 ASoC: Improve WM9713 voice DAC shutdown procedure
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-24 23:48:11 +00:00
Mark Brown
93e051d277 ASoC: Only unregister drivers we registered for WM8753
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-22 14:24:00 +00:00
Mark Brown
eeb1080b29 ASoC: Report I/O errors from WM8753 reset
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-22 14:19:23 +00:00
Mark Brown
ce3bdaa871 ASoC: Disable WM8731 line bypass by default
This avoids temporarily enabling the ouput stages during startup which
can cause audible effets in the output stages.

Reported-by: Fredrik Redgård <rik@svep.se>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-19 14:30:57 +00:00
Mark Brown
c6f2981170 ASoC: Add device init/exit annotations to new-style Wolfson CODEC drivers
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-18 21:26:58 +00:00
Mark Brown
519cf2df5f ASoC: Check for errors when writing WM8731 reset register
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-18 21:06:01 +00:00
Peter Ujfalusi
6bab83fd88 ASoC: TWL4030: Add digital loopback support
This patch adds the digital loopback/bypass support for twl4030 codec.

The digital loopback will let the digimic0 (routed in the TX1 capture path
inside of TWL4030) data to be routed back to the RX2 playback path
(I2S stereo). It can also route the analog capture date routed through the
TX1 back to RX2.

Effectively the digital loopback is routing the audio from the TX1 capture path
to the RX2 playback path.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-18 17:14:23 +00:00
Mark Brown
93b760b707 ASoC: Implement SPI device unregistration for WM8731
Completely untested.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2009-02-18 14:47:20 +00:00