]> git.karo-electronics.de Git - linux-beck.git/log
linux-beck.git
13 years agoASoC: OMAP: Update Makefile and Kconfig for HDMI audio
Ricardo Neri [Thu, 2 Jun 2011 20:44:47 +0000 (15:44 -0500)]
ASoC: OMAP: Update Makefile and Kconfig for HDMI audio

Update Makefile and Kconfig to build HDMI audio support for
OMAP4 SDP and Panda boards.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: OMAP4: Add HDMI Audio machine driver for OMAP4 boards
Ricardo Neri [Thu, 2 Jun 2011 20:44:46 +0000 (15:44 -0500)]
ASoC: OMAP4: Add HDMI Audio machine driver for OMAP4 boards

Add machine driver for HDMI audio on OMAP4 boards. This driver is
in charge of putting together the HDMI audio codec and the CPU DAI
and register the HDMI sound card with ALSA.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: OMAP: Add CPU DAI driver for HDMI
Ricardo Neri [Thu, 2 Jun 2011 20:44:45 +0000 (15:44 -0500)]
ASoC: OMAP: Add CPU DAI driver for HDMI

Addition of the HDMI CPU DAI driver for OMAP4. This driver is in
charge of configuring DMA settings for HDMI. Also, it finds
the HDMI video device and determines if audio playback can proceed.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoMerge branch 'for-2.6.40' into for-2.6.41
Mark Brown [Mon, 30 May 2011 02:54:18 +0000 (10:54 +0800)]
Merge branch 'for-2.6.40' into for-2.6.41

13 years agoASoC: Remove redundant freq assignment for max98095->sysclk/max98088->sysclk
Axel Lin [Fri, 27 May 2011 15:30:53 +0000 (23:30 +0800)]
ASoC: Remove redundant freq assignment for max98095->sysclk/max98088->sysclk

Current implementation set max98095->sysclk/max98088->sysclk to freq twice.
Set it once is enough, this patch removes the first assignment in case
we may set invalid clock frequency to max98095->sysclk/max98088->sysclk.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Peter Hsiang <peter.hsiang@maxim-ic.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix wm_hubs input PGA ZC bits
Mark Brown [Fri, 27 May 2011 13:56:16 +0000 (21:56 +0800)]
ASoC: Fix wm_hubs input PGA ZC bits

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Tegra: Enable Kaen HP_MUTE at boot
Stephen Warren [Thu, 26 May 2011 18:46:50 +0000 (12:46 -0600)]
ASoC: Tegra: Enable Kaen HP_MUTE at boot

We want the default state of the HP_MUTE signal to be asserted, so that
the headphones are muted before the first audio playback. Without this,
the headphones are left unmuted until shortly after the first audio
playback completes.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Use explicit endianness conversion in snd_soc_16_8_write()
Mark Brown [Wed, 11 May 2011 13:15:56 +0000 (15:15 +0200)]
ASoC: Use explicit endianness conversion in snd_soc_16_8_write()

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Use cpu_to_be16() in 8x16 write
Mark Brown [Wed, 11 May 2011 09:18:00 +0000 (11:18 +0200)]
ASoC: Use cpu_to_be16() in 8x16 write

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Convert 7x9 write to use cpu_to_be16()
Mark Brown [Tue, 10 May 2011 22:56:13 +0000 (00:56 +0200)]
ASoC: Convert 7x9 write to use cpu_to_be16()

Run the data through cpu_to_be16() so it's at least clear what we're up to.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Fix dapm_is_shared_kcontrol so everything isn't shared
Stephen Warren [Thu, 26 May 2011 15:57:33 +0000 (09:57 -0600)]
ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared

Commit af46800 ("ASoC: Implement mux control sharing") introduced
function dapm_is_shared_kcontrol.

When this function returns true, the naming of DAPM controls is derived
from the kcontrol_new. Otherwise, the name comes from the widget (and
possibly a widget's naming prefix).

A bug in the implementation of dapm_is_shared_kcontrol made it return 1
in all cases. Hence, that commit caused a change in control naming for
all controls instead of just shared controls.

Specifically, a control is always considered shared because it is always
compared against itself. Solve this by never comparing against the widget
containing the control being created.

Equally, controls should never be shared between DAPM contexts; when the
same codec is instantiated multiple times, the same kcontrol_new will be
used. However, the control should no be shared between the multiple
instances.

I tested that with the Tegra WM8903 driver:
* Shared is now mostly 0 as expected, and sometimes 1.
* The expected controls are still generated after this change.

However, I don't have any systems that have a widget/control naming
prefix, so I can't test that aspect.

Thanks for Jarkko Nikula for pointing out how to fix this.

Reported-by: Liam Girdwood <lrg@ti.com>
Tested-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix power down for widgetless per-card DAPM context case
Jarkko Nikula [Thu, 26 May 2011 13:32:18 +0000 (16:32 +0300)]
ASoC: Fix power down for widgetless per-card DAPM context case

Commit 52ba67b ("ASoC: Force all DAPM contexts into the same bias state")
powers up all the DAPM contexts in a card if any DAPM context becomes
active. Unfortunately power down newer happens if per-card DAPM context
doesn't have any widgets.

Reason for this is that power state of per-card DAPM context without
widgets is never cleared and thus all the DAPM contexts remain permanently
active. Test for widgetless calling DAPM context in dapm_power_widgets()
doesn't work for per-card DAPM context since power change is never
originating from widgetless per-card DAPM context.

Fix this by pre-clearing power state flag of non-codec DAPM context at the
beginning of power sequence.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm1250-ev1: Define "WM1250 Output" with SND_SOC_DAPM_OUTPUT
Axel Lin [Thu, 26 May 2011 02:54:12 +0000 (10:54 +0800)]
ASoC: wm1250-ev1: Define "WM1250 Output" with SND_SOC_DAPM_OUTPUT

Codec output pin should be defined with SND_SOC_DAPM_OUTPUT.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove duplicate linux/delay.h inclusion.
Jesper Juhl [Thu, 26 May 2011 08:32:41 +0000 (10:32 +0200)]
ASoC: Remove duplicate linux/delay.h inclusion.

It's enough to include linux/delay.h just once in
sound/soc/codecs/wm8915.c, so remove the duplicate.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sam9g20_wm8731: use the proper SYSCKL value
Nicolas Ferre [Tue, 24 May 2011 09:51:16 +0000 (11:51 +0200)]
ASoC: sam9g20_wm8731: use the proper SYSCKL value

at91sam9g20 is providing master clock to wm8731: not using a crystal but an
external MCLK. We can avoid conflict and save power using WM8731_SYSCLK_MCLK as
we do not need oscillator to be powered.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8731: fix wm8731_check_osc() connected condition
Nicolas Ferre [Tue, 24 May 2011 09:50:57 +0000 (11:50 +0200)]
ASoC: wm8731: fix wm8731_check_osc() connected condition

The crystal oscillator is only enabled if the WM8731_SYSCLK_XTAL master clock
is specified. Fix the connected() struct snd_soc_dapm_route function to take
this into account. Oscillator is not enabled on machine that need it otherwise.

Machine drivers have to make sure that they use the proper SYSCLK value.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: atmel_ssc_dai: fix ssc error path
Nicolas Ferre [Thu, 26 May 2011 11:44:12 +0000 (13:44 +0200)]
ASoC: atmel_ssc_dai: fix ssc error path

We do not have to free a resource that is not allocated yet.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: trivial: typo in atmel_pcm_dma_params strucutre comment
Nicolas Ferre [Thu, 26 May 2011 11:44:11 +0000 (13:44 +0200)]
ASoC: trivial: typo in atmel_pcm_dma_params strucutre comment

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: trivial: typo in debug comment
Nicolas Ferre [Thu, 26 May 2011 11:44:10 +0000 (13:44 +0200)]
ASoC: trivial: typo in debug comment

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Don't schedule deferred_resume_work twice
Stephen Warren [Wed, 25 May 2011 20:06:41 +0000 (14:06 -0600)]
ASoC: core: Don't schedule deferred_resume_work twice

For cards that have two or more DAIs, snd_soc_resume's loop over all
DAIs ends up calling schedule_work(deferred_resume_work) once per DAI.
Since this is the same work item each time, the 2nd and subsequent
calls return 0 (work item already queued), and trigger the dev_err
message below stating that a work item may have been lost.

Solve this by adjusting the loop to simply calculate whether to run the
resume work immediately or defer it, and then call schedule work (or not)
one time based on that.

Note: This has not been tested in mainline, but only in chromeos-2.6.38;
mainline doesn't support suspend/resume on Tegra, nor does the mainline
Tegra ASoC driver contain multiple DAIs. It has been compile-checked in
mainline.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix comment in cs4270 codec driver
Daniel Mack [Wed, 25 May 2011 07:53:12 +0000 (09:53 +0200)]
ASoC: Fix comment in cs4270 codec driver

The comment does not reflect reality anymore since the multi-component
monster patch landed. Things are matched by names now, and not by
exporting and referencing a struct. Fix it to avoid confusion.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: comments for the conversion to BATCH mode
Ben Gardiner [Wed, 25 May 2011 13:27:22 +0000 (09:27 -0400)]
ASoC: davinci-pcm: comments for the conversion to BATCH mode

In the previous commit 'ASoC: davinci-pcm: convert to BATCH mode', the phase
offset of 2 was mentioned in the commit message but not well commented in the
source.

Add descriptive comments of the phase offset with and without ping-pong
buffers enabled.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: convert to BATCH mode
Ben Gardiner [Tue, 24 May 2011 18:50:20 +0000 (14:50 -0400)]
ASoC: davinci-pcm: convert to BATCH mode

The davinci-pcm driver's snd_pcm_ops pointer function currently calls into
the edma controller driver to read the current positions of the edma channels
to determine pos to return to the ALSA framework. In particular,
davinci_pcm_pointer() calls edma_get_position() and the latter has a comment
indicating that "Its channel should not be active when this is called" whereas
the channel is surely active when snd_pcm_ops.pointer is called.

The operation of davinci-pcm in capture and playback appears to follow close
the other pcm drivers who export SNDRV_PCM_INFO_BATCH except that davinci-pcm
does not report it's positions from pointer() using the last transferred
chunk. Instead it peeks directly into the edma controller to determine the
current position as discussed above.

Convert the davinci-pcm driver to BATCH mode: count the periods elapsed in the
prtd->period member and use its value to report the 'pos' to the alsa
framework in the davinci_pcm_pointer function.

There is a phase offset of 2 periods between the position used by dma setup
and the position reported in the pointer function. Either +2 in the dma
setup or -2 in the pointer function (with wrapping, both) accounts for this
offset -- I opted for the latter since it makes the first-time setup clearer.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: extract period elapsed functions
Ben Gardiner [Tue, 24 May 2011 18:50:19 +0000 (14:50 -0400)]
ASoC: davinci-pcm: extract period elapsed functions

Extract functions that modify the prtd->period member in preparation for
conversion to BATCH mode playback.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: fix audible glitch on 2nd ping-pong playback
Ben Gardiner [Tue, 24 May 2011 18:50:18 +0000 (14:50 -0400)]
ASoC: davinci-pcm: fix audible glitch on 2nd ping-pong playback

The release of the dma channels was being performed in prepare and there was a
edma_resume call for the asp-channel only being executed on START, RESUME and
PAUSE_RELEASE.

The mcasp on da850evm with ping-pong buffers enabled was exhibiting an audible
glitch on every playback after the first. It was determined through trial and
error that the following two changes fix this problem:

1) Move the edma_start calls from prepare to trigger and 2) reverse the order
of starting the asp and ram channels.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: increase the maximum channels
Ben Gardiner [Tue, 24 May 2011 18:50:17 +0000 (14:50 -0400)]
ASoC: davinci-pcm: increase the maximum channels

Based on the registration of davinci-mcasp.1 in the davinci-evm platform
setup for da830 and dm6467, davinci-pcm can handle more than the currently
reported maximum channels of 2.

Increase the maximum channels to 384 to match the maximum reported by
davinci-mcasp.1.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: expand the .formats
Ben Gardiner [Tue, 24 May 2011 18:50:16 +0000 (14:50 -0400)]
ASoC: davinci-pcm: expand the .formats

Based on the data_type test in ping_pong_dma_setup, davinci-pcm is capable of
handling data of width up to and including 32bits.

"
if ((data_type == 0) || (data_type > 4)) {
printk(KERN_ERR "%s: data_type=%i\n", __func__, data_type);
return -EINVAL;
}
"

Update the .format member of the snd_pcm_hardware instances it registers to
reflect this capability.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: davinci-pcm: trivial: make ping-pong params setup symmetrical
Ben Gardiner [Tue, 24 May 2011 18:50:15 +0000 (14:50 -0400)]
ASoC: davinci-pcm: trivial: make ping-pong params setup symmetrical

The setup of the pong channel uses EDMA_CHAN_SLOT instead of & 0x3f as the
setup of the ping channel does.

Make the setup of ping and pong symmetric. There is no functional change
introduced by this patch.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core - remove superfluous new line.
Liam Girdwood [Tue, 24 May 2011 16:38:52 +0000 (17:38 +0100)]
ASoC: core - remove superfluous new line.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core - fix module reference counting for CPU DAIs
Liam Girdwood [Tue, 24 May 2011 12:57:43 +0000 (13:57 +0100)]
ASoC: core - fix module reference counting for CPU DAIs

Currently CODEC and platform drivers have their module reference count
incremented soc_probe_dai_link() whilst CPU DAI drivers have their reference
count incremented in soc_bind_dai_link().

CPU DAIs should have their reference count incremented in soc_probe_dai_link()
just like the CODEC and platform drivers.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: fix raumfeld platform
Daniel Mack [Tue, 24 May 2011 12:10:32 +0000 (14:10 +0200)]
ASoC: fix raumfeld platform

Commit f0fba2ad (ASoC: multi-component - ASoC Multi-Component Support)
broke support for Raumfeld platforms as it didn't take into account the
different hardware features on individual devices.

In particular, Raumfeld speakers have no S/PDIF output, so the members
of the snd_soc_card struct must be set dynamically.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: sh: fsi: add fsi_hw_startup/shutdown
Kuninori Morimoto [Mon, 23 May 2011 11:46:26 +0000 (20:46 +0900)]
ASoC: sh: fsi: add fsi_hw_startup/shutdown

This patch is preparation of cleanup suspend/resume patch.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: cleanup suspend/resume
Kuninori Morimoto [Mon, 23 May 2011 11:46:35 +0000 (20:46 +0900)]
ASoC: sh: fsi: cleanup suspend/resume

Current FSI driver was using saved_xxx variable for suspend/resume.
OTOH, the start and stop of power/clock are controlled by
fsi_hw_startup/fsi_hw_shutdown in current FSI driver.
The all necessary registers value are set by fsi_hw_startup.

So, if fsi_hw_shutdown is called when "suspend" is generated,
and fsi_hw_startup is called at "resume",
the saved_xxx are not needed.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: remove fsi_module_init/kill
Kuninori Morimoto [Mon, 23 May 2011 11:46:30 +0000 (20:46 +0900)]
ASoC: sh: fsi: remove fsi_module_init/kill

FSIA/B ports is enabled by default when power-on,
and current FSI is supporting RuntimePM.
In addition, current fsi_module_init/kill doesn't care
simultaneous playback/recorde.
This mean FSI port control is not needed.
This patch remove fsi_module_init/kill

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: make sure fsi_stream_push/pop access by spin lock
Kuninori Morimoto [Mon, 23 May 2011 11:46:13 +0000 (20:46 +0900)]
ASoC: sh: fsi: make sure fsi_stream_push/pop access by spin lock

fsi_stream_push/pop might be called in same time.
This patch protect it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: remove pm_runtime from fsi_dai_set_fmt.
Kuninori Morimoto [Mon, 23 May 2011 11:46:07 +0000 (20:46 +0900)]
ASoC: sh: fsi: remove pm_runtime from fsi_dai_set_fmt.

pm_runtime_get/put_sync were used to access FSI register in fsi_dai_set_fmt
which is called when ALSA probe.
But this register value will disappear after pm_runtime_put_sync
if platform is supporting RuntimePM.
To solve this issue, this patch adds new variable for format,
and remove pm_runtime_get/put_sync from fsi_dai_set_fmt.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: tidyup unclear variable naming
Kuninori Morimoto [Mon, 23 May 2011 11:46:03 +0000 (20:46 +0900)]
ASoC: sh: fsi: tidyup unclear variable naming

Some variables on this driver were a unclear naming,
and were different unit (byte, frame, sample).
And some functions had wrong name
(ex. it returned "sample width" but name was "fsi_get_frame_width").
This patch tidy-up this issue, and the minimum unit become "sample".
Special thanks to Takashi YOSHII.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: irq control moves to fsi_port_start/stop
Kuninori Morimoto [Mon, 23 May 2011 11:46:23 +0000 (20:46 +0900)]
ASoC: sh: fsi: irq control moves to fsi_port_start/stop

Using fsi_irq_enable/disable in fsi_port_start/stop is very natural.
This patch is preparation of cleanup suspend/resume patch.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: add fsi_set_master_clk
Kuninori Morimoto [Mon, 23 May 2011 11:46:18 +0000 (20:46 +0900)]
ASoC: sh: fsi: add fsi_set_master_clk

Current FSI driver is using set_rate call back function which is for
master mode.
By this patch, it is used from fsi_set_master_clk.
This patch is preparation of cleanup suspend/resume patch.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: fsi: tidyup parameter of fsi_stream_push
Kuninori Morimoto [Mon, 23 May 2011 11:45:57 +0000 (20:45 +0900)]
ASoC: sh: fsi: tidyup parameter of fsi_stream_push

It is possible to create buff_len and period_len
from substream->runtime.
This patch is preparation of tidyup unclear variable naming patch.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Convert 16x16 write to use cpu_to_be16()
Mark Brown [Tue, 10 May 2011 23:02:35 +0000 (01:02 +0200)]
ASoC: Convert 16x16 write to use cpu_to_be16()

Make it clear what we're doing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoMerge branch 'topic/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
Mark Brown [Sun, 22 May 2011 02:31:51 +0000 (10:31 +0800)]
Merge branch 'topic/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 into for-2.6.40

13 years agoASoC: core: Don't set "(null)" as a driver name
Jarkko Nikula [Fri, 20 May 2011 12:47:40 +0000 (15:47 +0300)]
ASoC: core: Don't set "(null)" as a driver name

Commit 22de71b ("ASoC: core - allow ASoC more flexible machine name")
writes "(null)" to driver name string in struct snd_card if card->driver_name
is NULL. This causes segmentation faults with some user space ALSA utilities
like aplay and arecord.

Fix this by using the card->name if no driver name is specified.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: soc-cache: Cache a pointer to the last accessed rbnode
Dimitris Papastamos [Thu, 19 May 2011 12:45:30 +0000 (13:45 +0100)]
ASoC: soc-cache: Cache a pointer to the last accessed rbnode

Whenever we are doing a read or a write through the rbtree code, we'll
cache a pointer to the rbnode.  To avoid looking up the register
everytime we do a read or a write, we first check if it can be found in
the cached register block, otherwise we traverse the rbtree and finally
cache the rbnode for future use.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: soc-cache: Block based rbtree compression
Dimitris Papastamos [Thu, 19 May 2011 12:45:29 +0000 (13:45 +0100)]
ASoC: soc-cache: Block based rbtree compression

This patch prepares the ground for the actual rbtree optimization patch
which will save a pointer to the last accessed rbnode that was used
in either the read() or write() functions.

Each rbnode manages a variable length block of registers.  There can be no
two nodes with overlapping blocks.  Each block has a base register and a
currently top register, all the other registers, if any, lie in between these
two and in ascending order.

The reasoning behind the construction of this rbtree is simple.  In the
snd_soc_rbtree_cache_init() function, we iterate over the register defaults
provided by the driver.  For each register value that is non-zero we
insert it in the rbtree.  In order to determine in which rbnode we need
to add the register, we first look if there is another register already
added that is adjacent to the one we are about to add.  If that is the case
we append it in that rbnode block, otherwise we create a new rbnode
with a single register in its block and add it to the tree.

In the next patch, where a cached rbnode is used by both the write() and the
read() functions, we also check if the register we are about to add is in the
cached rbnode (the least recently accessed one) and if so we append it in that
rbnode block.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Tegra: Fix compile when debugfs not enabled
Stephen Warren [Mon, 16 May 2011 20:19:27 +0000 (14:19 -0600)]
ASoC: Tegra: Fix compile when debugfs not enabled

The prototype of the inline dummy version of tegra_i2s_debug_add
was not consistent with the real version.

Reported-by: Rhyland-Klein <rklein@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: spdif-dit: Add missing MODULE_*
Stephen Warren [Thu, 19 May 2011 23:44:46 +0000 (17:44 -0600)]
ASoC: spdif-dit: Add missing MODULE_*

MODULE_ALIAS is required so that the module will auto-load based on a
platform_device registration in the board file.

While we're at it, add some other MODULE_*.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc...
Takashi Iwai [Fri, 20 May 2011 09:25:32 +0000 (11:25 +0200)]
Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc-2.6 into topic/asoc

13 years agoASoC: davinci-mcasp: enable ping-pong SRAM buffers
Ben Gardiner [Wed, 18 May 2011 13:27:45 +0000 (09:27 -0400)]
ASoC: davinci-mcasp: enable ping-pong SRAM buffers

The davinci-i2s driver copies the platform data for playback and capture
sram sizes which is in turn used by davinci-pcm to allocate ping-pong
buffers.

Copy also the platform data in davinci-mcasp probe.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: add iPAQ hx4700 machine driver
Dmitry Artamonow [Wed, 18 May 2011 15:25:10 +0000 (19:25 +0400)]
ASoC: add iPAQ hx4700 machine driver

AK4641 connected via I2S and I2C, jack detection via GPIO.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Asahi Kasei AK4641 codec driver
Dmitry Artamonow [Wed, 18 May 2011 15:25:09 +0000 (19:25 +0400)]
ASoC: Asahi Kasei AK4641 codec driver

A driver for the AK4641 codec used in iPAQ hx4700 and Glofiish M800
among others.

Signed-off-by: Harald Welte <laforge@gnumonks.org>
Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Max98095: Move existing NULL check before pointer dereference.
Taylor Hutt [Wed, 18 May 2011 01:03:54 +0000 (18:03 -0700)]
ASoC: Max98095: Move existing NULL check before pointer dereference.

Visual inspection shows that max98095_put_eq_enum() and
max98095_put_bq_enum() each have a possible NULL deref of 'pdata'.

This change moves the NULL check above the use.

Signed-off-by: Taylor Hutt <thutt@chromium.org>
Acked-by: Peter Hsiang <Peter.Hsiang@maxim-ic.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Silence DEBUG_STRICT_USER_COPY_CHECKS=y warning
Stephen Boyd [Thu, 12 May 2011 23:50:10 +0000 (16:50 -0700)]
ASoC: Silence DEBUG_STRICT_USER_COPY_CHECKS=y warning

Enabling DEBUG_STRICT_USER_COPY_CHECKS causes the following
warning:

In file included from arch/x86/include/asm/uaccess.h:573,
                 from include/linux/poll.h:14,
                 from include/sound/pcm.h:29,
                 from include/sound/ac97_codec.h:31,
                 from sound/soc/soc-core.c:34:
In function 'copy_from_user',
    inlined from 'codec_reg_write_file' at
    sound/soc/soc-core.c:252:
arch/x86/include/asm/uaccess_64.h:65:
warning: call to 'copy_from_user_overflow' declared with
attribute warning: copy_from_user() buffer size is not provably
correct

presumably due to buf_size being signed causing GCC to fail to
see that buf_size can't become negative.

Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix wrong data type access in a few codec drivers
Jarkko Nikula [Fri, 13 May 2011 16:16:52 +0000 (19:16 +0300)]
ASoC: Fix wrong data type access in a few codec drivers

Commit fafd217 ("ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol")
changed the control private data type that is passed to snd_soc_cnew when
creating dapm mixer and mux controls. Commit did not update a few codec
drivers that are using their own put callbacks and thus are accessing a
wrong data type.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Don't restart an already running WM8958 DSP2
Mark Brown [Mon, 16 May 2011 01:18:56 +0000 (18:18 -0700)]
ASoC: Don't restart an already running WM8958 DSP2

Don't want to upset the DSP.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org
13 years agoASoC: Skip noop reconfiguration of WM8958 DSP2 algorithms
Mark Brown [Mon, 16 May 2011 01:02:53 +0000 (18:02 -0700)]
ASoC: Skip noop reconfiguration of WM8958 DSP2 algorithms

If we're setting the currently applied value for one of the DSP algorithm
configurations we can just skip all the handling as the control set is a
noop. This ensures we do not disrupt a running DSP.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org
13 years agoASoC: Add some missing volume update bit sets for wm_hubs devices
Mark Brown [Sun, 15 May 2011 19:18:38 +0000 (12:18 -0700)]
ASoC: Add some missing volume update bit sets for wm_hubs devices

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org
13 years agoASoC: Ensure output PGA is enabled for line outputs in wm_hubs
Mark Brown [Sun, 15 May 2011 00:21:28 +0000 (17:21 -0700)]
ASoC: Ensure output PGA is enabled for line outputs in wm_hubs

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
13 years agoASoC: codecs: max98088: Added digital mute function in DAI1 and DAI2
Jin Park [Thu, 12 May 2011 05:58:38 +0000 (14:58 +0900)]
ASoC: codecs: max98088: Added digital mute function in DAI1 and DAI2

Added digital mute function in DAI1 and DAI2.

Signed-off-by: Jin Park <jinyoungp@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: codecs: max98088: Moved the EX Limiter Mode from dapm widget to control
Jin Park [Thu, 12 May 2011 05:58:37 +0000 (14:58 +0900)]
ASoC: codecs: max98088: Moved the EX Limiter Mode from dapm widget to control

Moved the EX Limiter Mode from dapm widget to control, because it was not
required DAPM route.

Signed-off-by: Jin Park <jinyoungp@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: codecs: max98088: Fixed invalid register definitions in mixer controls
Jin Park [Thu, 12 May 2011 05:58:36 +0000 (14:58 +0900)]
ASoC: codecs: max98088: Fixed invalid register definitions in mixer controls

Fixed invalid register definitions in mixer controls such as left
speaker mixer, left hp mixer and left rec mixer.

Signed-off-by: Jin Park <jinyoungp@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Reintroduce do_spi_write()
Mark Brown [Wed, 11 May 2011 17:25:42 +0000 (19:25 +0200)]
ASoC: Reintroduce do_spi_write()

There is an unfortunate difference in return values between spi_write()
and i2c_master_send() so we need an adaptor function to translate.

Reported-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: omap-mcbsp: Remove restrictive checks for cpu type
Sanjeev Premi [Wed, 11 May 2011 13:55:35 +0000 (19:25 +0530)]
ASoC: omap-mcbsp: Remove restrictive checks for cpu type

Current checks for cpu type were too restrictive leading
to failures for other silicons in same family.

The problem was found while testing audio playback on
AM37x and AM35x processors. But should exist on OMAP36xx
as well.

Signed-off-by: Sanjeev Premi <premi@ti.com>
cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
cc: Liam Girdwood <lrg@ti.com>
cc: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: omap-pcm: Period wakeup disabling on OMAP2+
Peter Ujfalusi [Thu, 12 May 2011 10:04:55 +0000 (13:04 +0300)]
ASoC: omap-pcm: Period wakeup disabling on OMAP2+

Allow disabling ALSA period wakeup interrupts.
This can only be done on OMAP2+ (2/3/4), since there
we can chain the DMA.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoMAINTAINERS: ASoC and Regulator email address change.
Liam Girdwood [Thu, 12 May 2011 17:49:15 +0000 (18:49 +0100)]
MAINTAINERS: ASoC and Regulator email address change.

Update my email address to new employer.

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: twl6040 - fix LINEGAIN volume control
Liam Girdwood [Mon, 28 Mar 2011 18:23:23 +0000 (19:23 +0100)]
ASoC: twl6040 - fix LINEGAIN volume control

Fix the TWL6040 LINEGAIN volume control to match the TRM.

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: DMIC codec - Add input widget
Misael Lopez Cruz [Thu, 12 May 2011 15:26:20 +0000 (16:26 +0100)]
ASoC: DMIC codec - Add input widget

Digital microphones can have some additional elements in their
audio path (like microphone bias). An input widget is required
for digital microphone CODEC driver to allow external connections
in machine drivers.

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core - allow ASoC more flexible machine name
Liam Girdwood [Thu, 12 May 2011 15:14:04 +0000 (16:14 +0100)]
ASoC: core - allow ASoC more flexible machine name

Allow ASoC machine drivers to register a driver name
and a longname. This allows user space to determine
the flavour of machine driver.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: fix wm8958-dsp2 printk format warnings
Randy Dunlap [Sun, 8 May 2011 16:48:24 +0000 (09:48 -0700)]
ASoC: fix wm8958-dsp2 printk format warnings

Fix printk format warnings in wm8958-dsp2.c:

sound/soc/codecs/wm8958-dsp2.c:103: warning: format '%d' expects type 'int', but argument 4 has type 'size_t'
sound/soc/codecs/wm8958-dsp2.c:111: warning: format '%d' expects type 'int', but argument 3 has type 'size_t'
sound/soc/codecs/wm8958-dsp2.c:144: warning: format '%d' expects type 'int', but argument 5 has type 'size_t'

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMAINTAINERS: Update e-mail address for asoc/twl4030
Peter Ujfalusi [Mon, 2 May 2011 11:16:29 +0000 (14:16 +0300)]
MAINTAINERS: Update e-mail address for asoc/twl4030

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: RX51: Update e-mail address
Peter Ujfalusi [Tue, 3 May 2011 15:15:10 +0000 (18:15 +0300)]
ASoC: RX51: Update e-mail address

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: omap-pcm: Update e-mail address
Peter Ujfalusi [Tue, 3 May 2011 15:14:43 +0000 (18:14 +0300)]
ASoC: omap-pcm: Update e-mail address

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: omap-mcbsp: Update e-mail address
Peter Ujfalusi [Tue, 3 May 2011 15:14:06 +0000 (18:14 +0300)]
ASoC: omap-mcbsp: Update e-mail address

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: tpa6130a2: Update e-mail address
Peter Ujfalusi [Tue, 3 May 2011 15:12:41 +0000 (18:12 +0300)]
ASoC: tpa6130a2: Update e-mail address

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: tlv320dac33: Update e-mail address
Peter Ujfalusi [Tue, 3 May 2011 15:11:36 +0000 (18:11 +0300)]
ASoC: tlv320dac33: Update e-mail address

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Disable WM8994/58 microphone detection over suspend
Mark Brown [Wed, 11 May 2011 12:34:53 +0000 (14:34 +0200)]
ASoC: Disable WM8994/58 microphone detection over suspend

It will be non-functional with the basises and clocks off anyway, if the
system needs microphone detection enabled over suspend then it should be
causing the CODEC to ignore suspend using the APIs for that to prevent
the biases being disabled.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Use spi_write() for SPI writes
Mark Brown [Tue, 10 May 2011 21:33:48 +0000 (23:33 +0200)]
ASoC: Use spi_write() for SPI writes

do_spi_write() is just an open coded copy of do_spi_write() so we can
delete it and just call spi_write() directly.  Indeed, as a result of
recent refactoring all the SPI write functions are just very long
wrappers around spi_write() which don't add anything except for some
pointless copies so we can just use spi_write() as the hw_write
operation directly. It should be as type safe to do this as it is to do
the same thing with I2C and it saves us a bunch of code.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Remove byte swap in 4x12 SPI write
Mark Brown [Tue, 10 May 2011 21:55:21 +0000 (23:55 +0200)]
ASoC: Remove byte swap in 4x12 SPI write

snd_soc_4_12_spi_write() contains a byte swap. Since this code was written
for an Analog CODEC on a Blackfin reference board it appears that this is
done because while Blackfin is little endian the CODEC is big endian (as
are most CODECs).

Push this up into the generic 4x12 write function and use cpu_to_be16() to
do the byte swap so things are more regular and things work on both CPU
endiannesses.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Don't squash 16x8 registers down to 8 bits
Mark Brown [Wed, 11 May 2011 11:47:47 +0000 (13:47 +0200)]
ASoC: Don't squash 16x8 registers down to 8 bits

Currently we'll force all registers to fit in 8 bits before passing
down to the I/O function. Looks like a cut'n'paste bug.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoASoC: Fix NULL vs. 0 warning in SSM2602
Mark Brown [Tue, 10 May 2011 22:01:58 +0000 (00:01 +0200)]
ASoC: Fix NULL vs. 0 warning in SSM2602

sparse complains if 0 is used as a NULL pointer constant.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Liam Girdwood <lrg@ti.com>
13 years agoMerge branch 'for-2.6.39' into for-2.6.40
Mark Brown [Tue, 10 May 2011 13:58:17 +0000 (15:58 +0200)]
Merge branch 'for-2.6.39' into for-2.6.40

13 years agoASoC: WM8903: Fix Digital Capture Volume range
Stephen Warren [Mon, 9 May 2011 22:32:03 +0000 (16:32 -0600)]
ASoC: WM8903: Fix Digital Capture Volume range

Increase the range of the Digital Capture Volume control to be 120 steps.
Each step is 0.75dB, and the range starts at -72dB, giving a max setting
of 18dB, which matches the latest datasheet, to the precision of the step
size.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Takashi Iwai [Tue, 10 May 2011 07:24:50 +0000 (09:24 +0200)]
Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc

13 years agoMerge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc...
Takashi Iwai [Tue, 10 May 2011 07:20:19 +0000 (09:20 +0200)]
Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc-2.6 into topic/asoc

13 years agoASoC: SSM2602: Provide dB ranges for the volume controls
Lars-Peter Clausen [Sun, 8 May 2011 16:24:46 +0000 (09:24 -0700)]
ASoC: SSM2602: Provide dB ranges for the volume controls

Also fix the maximum value for the capture volume control.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Model power supply for the digital core as a DAPM widget
Lars-Peter Clausen [Sun, 8 May 2011 16:24:45 +0000 (09:24 -0700)]
ASoC: SSM2602: Model power supply for the digital core as a DAPM widget

Model the power supply for the digital core as a DAPM_SUPPLY widget. This allows
to cleanup the code a bit.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Add entry for the ssm2603 to the device id table
Lars-Peter Clausen [Sun, 8 May 2011 16:24:44 +0000 (09:24 -0700)]
ASoC: SSM2602: Add entry for the ssm2603 to the device id table

The SSM2603 is mostly register compatible with the SSM2602 and can be supported
by the current driver without any changes.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Add SSM2604 support
Lars-Peter Clausen [Sun, 8 May 2011 16:24:43 +0000 (09:24 -0700)]
ASoC: SSM2602: Add SSM2604 support

The SSM2604 is basically a lightweight variant of the SSM2602 with a compatible
register layout. Thus we can easily support both devices by the same driver,
by providing a slightly set of controls, widgets and routes.

Compared to the SSM2602 the SSM2604 has no microphone input and no headphone
output.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Do not power the codec up in probe
Lars-Peter Clausen [Sun, 8 May 2011 16:24:42 +0000 (09:24 -0700)]
ASoC: SSM2602: Do not power the codec up in probe

It is not required to have the codec powered at this stage and DAPM will power
the ADC and DAC down again after probe has run anyway.
Thus we avoid some unnecessary writes by this change.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Fix default register cache
Lars-Peter Clausen [Sun, 8 May 2011 16:24:41 +0000 (09:24 -0700)]
ASoC: SSM2602: Fix default register cache

Some of the values in the default register cache did not represent the codecs
state after reset. This patch fixes it.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-2.6.39' into for-2.6.40
Mark Brown [Sun, 8 May 2011 14:33:41 +0000 (15:33 +0100)]
Merge branch 'for-2.6.39' into for-2.6.40

13 years agoASoC: UDA134x: Remove POWER_OFF_ON_STANDBY define.
Marek Belisko [Tue, 3 May 2011 12:46:32 +0000 (14:46 +0200)]
ASoC: UDA134x: Remove POWER_OFF_ON_STANDBY define.

Define POWER_OFF_ON_STANDBY cause trobles when trying to get some
sound from codec because code for bias setup was not compiled
(define wasn't defined). This define was removed in commit:
cc3202f5 but again introduced by commit: f0fba2ad1 which then
completely break codec functionality so remove it again.

Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: SSM2602: Remove unused struct and define
Lars-Peter Clausen [Thu, 5 May 2011 14:59:13 +0000 (16:59 +0200)]
ASoC: SSM2602: Remove unused struct and define

Those are leftovers from a pre-multicomponent era.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Remove duplicate control
Lars-Peter Clausen [Thu, 5 May 2011 14:59:11 +0000 (16:59 +0200)]
ASoC: SSM2602: Remove duplicate control

There are currently two controls which allow selecting the capture source, one
as a normal control, the other as part of a DAPM_MUX widget.
Remove the normal control.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Cleanup coeff handling
Lars-Peter Clausen [Thu, 5 May 2011 14:59:10 +0000 (16:59 +0200)]
ASoC: SSM2602: Cleanup coeff handling

Drop unused field from the coeff struct, precalculate the srate register at
compile-time and cleanup up the naming.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-2.6.39' into for-2.6.40
Mark Brown [Sun, 8 May 2011 13:43:18 +0000 (14:43 +0100)]
Merge branch 'for-2.6.39' into for-2.6.40

13 years agoASoC: SSM2602: Fix reg_cache_size
Lars-Peter Clausen [Thu, 5 May 2011 14:59:14 +0000 (16:59 +0200)]
ASoC: SSM2602: Fix reg_cache_size

reg_cache_size is supposed to be the number of elements in the register cache,
not the size in bytes.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: SSM2602: Fix 'Mic Boost2' control
Lars-Peter Clausen [Thu, 5 May 2011 14:59:16 +0000 (16:59 +0200)]
ASoC: SSM2602: Fix 'Mic Boost2' control

The 'Mic Boost2' control's shift was off by one and thus was not working.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: SSM2602: Properly annotate i2c probe and remove functions
Lars-Peter Clausen [Thu, 5 May 2011 14:59:12 +0000 (16:59 +0200)]
ASoC: SSM2602: Properly annotate i2c probe and remove functions

Annotate the i2c probe and remove functions with __devinit and __devexit.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: soc-cache: Allow codec->cache_bypass to be used with snd_soc_hw_bulk_write_raw()
Dimitris Papastamos [Thu, 5 May 2011 13:18:11 +0000 (14:18 +0100)]
ASoC: soc-cache: Allow codec->cache_bypass to be used with snd_soc_hw_bulk_write_raw()

If we specifically want to write a block of data to the hw bypassing the
cache, then allow this to happen inside snd_soc_hw_bulk_write_raw().

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>