openwrt/staging/blogic.git
13 years agoASoC: wm8731: Convert to snd_soc_cache_sync
Axel Lin [Fri, 7 Oct 2011 13:39:09 +0000 (21:39 +0800)]
ASoC: wm8731: Convert to snd_soc_cache_sync

Convert to snd_soc_cache_sync for sync reg_cache with the hardware.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8711: Convert to snd_soc_cache_sync
Axel Lin [Fri, 7 Oct 2011 13:37:54 +0000 (21:37 +0800)]
ASoC: wm8711: Convert to snd_soc_cache_sync

Convert to snd_soc_cache_sync for sync reg_cache with the hardware.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8510: Convert to snd_soc_cache_sync
Axel Lin [Fri, 7 Oct 2011 13:36:27 +0000 (21:36 +0800)]
ASoC: wm8510: Convert to snd_soc_cache_sync

Convert to snd_soc_cache_sync for sync reg_cache with the hardware.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix DAPM sync for TLV320AIC3x custom DAPM widget
Mark Brown [Sat, 8 Oct 2011 12:36:03 +0000 (13:36 +0100)]
ASoC: Fix DAPM sync for TLV320AIC3x custom DAPM widget

We really should be doing this in the core, not in a driver...

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
13 years agoASoC: Squash error codes from regmap down to -1 on read
Mark Brown [Sun, 9 Oct 2011 13:06:13 +0000 (14:06 +0100)]
ASoC: Squash error codes from regmap down to -1 on read

The ASoC code always uses -1 as the error code due to reporting errors in
band with the value. Ensure we don't confuse anything by making sure we
don't pass actual error codes back into the rest of the code on read.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Cache connected input and output recursions
Mark Brown [Sun, 9 Oct 2011 10:52:05 +0000 (11:52 +0100)]
ASoC: Cache connected input and output recursions

The number of connected input and output endpoints for a given widgets
can't change during a DAPM run so there is no need to redo the recursion
through branches of the tree we've already visited. Doing this on one of
my test systems gives an improvement of:

         Power    Path   Neighbour
Before:  63       607    731
After:   63       141    181

which scales up well as more widgets are involved in paths.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Assign power_check when we allocate DAPM widgets
Mark Brown [Sat, 8 Oct 2011 13:04:50 +0000 (14:04 +0100)]
ASoC: Assign power_check when we allocate DAPM widgets

This ensures none of the rest of the code ever encounters a widget which
does not have a power check function.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Ensure all DAPM widgets are instantiated with the card
Mark Brown [Sat, 8 Oct 2011 12:59:44 +0000 (13:59 +0100)]
ASoC: Ensure all DAPM widgets are instantiated with the card

Specifically for the widgets added by machine driver late probe functions.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove redundant snd_soc_dapm_sync() calls from machine drivers
Mark Brown [Sat, 8 Oct 2011 12:29:18 +0000 (13:29 +0100)]
ASoC: Remove redundant snd_soc_dapm_sync() calls from machine drivers

The core will sync DAPM as part of the card initialization, there is no
need for machine drivers to do so during their setup.

OMAP drivers are omitted as I know Peter already has patches for them.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Suppress early calls to snd_soc_dapm_sync()
Mark Brown [Fri, 7 Oct 2011 13:29:19 +0000 (14:29 +0100)]
ASoC: Suppress early calls to snd_soc_dapm_sync()

Ensure we only have one sync during the initial startup of the card by
making snd_soc_dapm_sync() a noop on non-instantiated cards. This avoids
any bounces due to things like jacks reporting their initial state on
partially initialised cards. The callers that don't also get called at
runtime should just be removed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoregulator: Add WM1811 support
Mark Brown [Sun, 24 Jul 2011 11:40:48 +0000 (12:40 +0100)]
regulator: Add WM1811 support

The WM1811 has a slightly different range on LDO2 to other WM8994 class
devices.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-3.1' into for-3.2
Mark Brown [Thu, 6 Oct 2011 19:03:18 +0000 (20:03 +0100)]
Merge branch 'for-3.1' into for-3.2

13 years agoASoC: Return early with -EINVAL if invalid dai format is detected
Axel Lin [Wed, 5 Oct 2011 23:29:56 +0000 (07:29 +0800)]
ASoC: Return early with -EINVAL if invalid dai format is detected

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8990: Remove incorrect comments
Axel Lin [Thu, 6 Oct 2011 03:44:56 +0000 (11:44 +0800)]
ASoC: wm8990: Remove incorrect comments

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8990: Convert to snd_soc_cache_sync for sync reg_cache with the hardware
Axel Lin [Thu, 6 Oct 2011 03:00:19 +0000 (11:00 +0800)]
ASoC: wm8990: Convert to snd_soc_cache_sync for sync reg_cache with the hardware

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: fix codec breakage caused by the volsw/volsw_2r merger
Peter Ujfalusi [Thu, 6 Oct 2011 04:43:21 +0000 (07:43 +0300)]
ASoC: fix codec breakage caused by the volsw/volsw_2r merger

By accident few places still uses the _2r calls from
the core.
This is a quick fix, the drivers using the old callbacks
going to be changed.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: tlv320aic32x4 fix initialization of micpga routing
Wolfram Sang [Thu, 6 Oct 2011 18:53:36 +0000 (20:53 +0200)]
ASoC: tlv320aic32x4 fix initialization of micpga routing

Checking the pdata-flags used 'or', so the check is always true. Use 'and' to
correctly mask the flags.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Javier Martin <javier.martin@vista-silicon.com>
Cc: Liam Girdwood <lrg@ti.com>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Ensure DAPM widgets are set up before we sync jacks
Mark Brown [Thu, 6 Oct 2011 12:30:55 +0000 (13:30 +0100)]
ASoC: Ensure DAPM widgets are set up before we sync jacks

We synchronise jack state on startup - when we do that make sure that we
have set up all the DAPM widgets first in case we end up touching any of
the partially set up widgets when syncing the jack pins.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
13 years agoASoC: Replace remaining use of *_volsw_2r with *_volsw
Peter Ujfalusi [Thu, 6 Oct 2011 06:59:12 +0000 (09:59 +0300)]
ASoC: Replace remaining use of *_volsw_2r with *_volsw

The snd_soc_*_volsw_2r functionality has been merged to
*volsw callbacks.
Few places still used the get, or put variant of volsw_2r,
replace those with the corresponding *_volsw.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove references to linux@wolfsonmicro.com
Mark Brown [Thu, 6 Oct 2011 10:10:01 +0000 (11:10 +0100)]
ASoC: Remove references to linux@wolfsonmicro.com

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unused variable 'wm9090' in wm9090_probe
Axel Lin [Wed, 5 Oct 2011 06:47:15 +0000 (14:47 +0800)]
ASoC: Remove unused variable 'wm9090' in wm9090_probe

Eliminate below build warning:
  CC      sound/soc/codecs/wm9090.o
sound/soc/codecs/wm9090.c: In function 'wm9090_probe':
sound/soc/codecs/wm9090.c:550: warning: unused variable 'wm9090'

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: imx: Remove unused variable 'dai'
Axel Lin [Wed, 5 Oct 2011 06:41:35 +0000 (14:41 +0800)]
ASoC: imx: Remove unused variable 'dai'

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unused function declaration in imx-ssi.h
Axel Lin [Wed, 5 Oct 2011 06:40:46 +0000 (14:40 +0800)]
ASoC: Remove unused function declaration in imx-ssi.h

These functions are removed in commit f0fba2ad
"ASoC: multi-component - ASoC Multi-Component Support".
Let's remove the leftover function declaration in header file.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Warn user in twl6040_put_volsw for error case
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:28 +0000 (10:29 +0300)]
ASoC: twl6040: Warn user in twl6040_put_volsw for error case

Let the user know, that the callback has been called with unexpected
register parameter.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Remove snd_soc_put_volsw_2r definition
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:27 +0000 (10:29 +0300)]
ASoC: core: Remove snd_soc_put_volsw_2r definition

We do not have users for snd_soc_put_volsw_2r anymore.
It can be removed.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Simply call snd_soc_put_volsw form the custom code
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:26 +0000 (10:29 +0300)]
ASoC: twl6040: Simply call snd_soc_put_volsw form the custom code

The ASoC core now have one callback function, which can handle
single, and double register mixer controls.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Combine snd_soc_put_volsw/put_volsw_2r functions
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:25 +0000 (10:29 +0300)]
ASoC: core: Combine snd_soc_put_volsw/put_volsw_2r functions

Handle the put_volsw/put_volsw_2r in one function.

To avoid build breakage in twl6040 keep the
snd_soc_put_volsw_2r as define, and map it snd_soc_put_volsw.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Combine snd_soc_get_volsw/get_volsw_2r functions
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:24 +0000 (10:29 +0300)]
ASoC: core: Combine snd_soc_get_volsw/get_volsw_2r functions

Handle the get_volsw/get_volsw_2r in one function.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Combine snd_soc_info_volsw/info_volsw_2r functions
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:23 +0000 (10:29 +0300)]
ASoC: core: Combine snd_soc_info_volsw/info_volsw_2r functions

Handle the info_volsw/info_volsw_2r in one function.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Change SOC_SINGLE/DOUBLE_VALUE representation
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:22 +0000 (10:29 +0300)]
ASoC: core: Change SOC_SINGLE/DOUBLE_VALUE representation

SOC_SINGLE/DOUBLE_VALUE is used for mixer controls, where the
bits are within one register.

Assign .rreg to be the same as .reg for these types.

With this change we can tell if the mixer in question:
is mono:
mc->reg == mc->rreg && mc->shift == mc->rshift

is stereo, within single register:
mc->reg == mc->rreg && mc->shift != mc->rshift

is stereo, in two registers:
mc->reg != mc->rreg

The patch provide a small inline function to query, if the mixer
is stereo, or mono.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Prepare for core put_volsw/volsw_2r merger
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:21 +0000 (10:29 +0300)]
ASoC: twl6040: Prepare for core put_volsw/volsw_2r merger

Avoid using the mc->rreg to identify the 2r type of gain control.
Introduce a variable to track this.
This change is needed to avoid breakage with the upcoming volsw volsw_2r
merger.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Simplify custom get_volsw callback
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:20 +0000 (10:29 +0300)]
ASoC: twl6040: Simplify custom get_volsw callback

The custom get_volsw does not need to call any core get_volsw calls,
since we are returning the shadow values for the gains.
Return -EINVAL in the unlikely event, if the function has been called
for unhandled control. This way we can remove one check in the code.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Consolidate use of controls with custom get/put function
Peter Ujfalusi [Wed, 5 Oct 2011 07:29:19 +0000 (10:29 +0300)]
ASoC: Consolidate use of controls with custom get/put function

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>
13 years agoASoC: Use dapm_mark_dirty() for new DAPM widgets for consistency
Mark Brown [Wed, 5 Oct 2011 11:09:12 +0000 (12:09 +0100)]
ASoC: Use dapm_mark_dirty() for new DAPM widgets for consistency

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Stop checking for supplied widgets after we find the first
Mark Brown [Tue, 4 Oct 2011 21:57:50 +0000 (22:57 +0100)]
ASoC: Stop checking for supplied widgets after we find the first

We don't really care how many widgets a supply is supplying, we just care
if the number is non-zero. This didn't actually produce any improvement
in the test cases I've been using but seems obviously sensible enough that
I'm pushing it out anyway.

We could do a similar thing for other widgets but this may be unhelpful
for further refactorings Liam was working on aiming to allow us to
identify connected audio paths.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Don't mark the outputs of supplies as dirty on state changes
Mark Brown [Tue, 4 Oct 2011 21:43:31 +0000 (22:43 +0100)]
ASoC: Don't mark the outputs of supplies as dirty on state changes

The whole point of supply widgets is that they aren't inputs to their
sinks so a state change in a supply should never affect the state of the
widget being supplied and we don't need to mark them as dirty.

           Power    Path   Neighbour
Before:    69       727    905
After:     63       607    731

This is particularly useful where supplies affect large portions of the
chip (eg, a bandgap supplying the analogue sections).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Only run power_check() on a widget once per run
Mark Brown [Tue, 4 Oct 2011 21:15:59 +0000 (22:15 +0100)]
ASoC: Only run power_check() on a widget once per run

Some widgets will get power_check() run on them more than once during a
DAPM run, most commonly due to supply widgets checking to see if their
consumers are powered up. It's wasteful to do this so cache the result
of power_check() during a run. For one system I tested this on I got an
improvement of:

           Power    Path   Neighbour
Before:    106      970    1186
After:     69       727    905

from this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Add verbose debugging showing why widgets get marked dirty
Mark Brown [Tue, 4 Oct 2011 21:28:08 +0000 (22:28 +0100)]
ASoC: Add verbose debugging showing why widgets get marked dirty

Help diagnose why we're checking widgets by providing some logging when
we first dirty them. This should possibly be a trace point if it's useful
but can be absurdly verbose if enabled, we can always change it later if
desired.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Reduce the number of neigbours we mark dirty when updating power
Mark Brown [Mon, 3 Oct 2011 21:36:57 +0000 (22:36 +0100)]
ASoC: Reduce the number of neigbours we mark dirty when updating power

If two widgets are not currently connected then there is no need to
propagate a power state change between them as we mark the affected
widgets when we change a connection. Similarly if a neighbour widget is
already in the state being set for the current widget then there is no
need to recheck.

On one system I tested this gave:

           Power    Path   Neighbour
Before:    114      1066   1327
After:     106      970    1186

which is an improvement, although relatively small.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Do DAPM power checks only for widgets changed since last run
Mark Brown [Mon, 3 Oct 2011 20:06:40 +0000 (21:06 +0100)]
ASoC: Do DAPM power checks only for widgets changed since last run

In order to reduce the number of DAPM power checks we run keep a list of
widgets which have been changed since the last DAPM run and iterate over
that rather than the full widget list. Whenever we change the power state
for a widget we add all the source and sink widgets it has to the dirty
list, ensuring that all widgets in the path are checked.

This covers more widgets than we need to as some of the neighbour widgets
won't be connected but it's simpler as a first step. On one system I tried
this gave:

           Power    Path   Neighbour
Before:    207      1939   2461
After:     114      1066   1327

which seems useful.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Mark headphone, mic, speaker and line widgets as always connected
Mark Brown [Mon, 3 Oct 2011 21:41:09 +0000 (22:41 +0100)]
ASoC: Mark headphone, mic, speaker and line widgets as always connected

We're not actually doing any dynamic power management based on connection
and output drivers (which are pretty much the same thing) are marked as
unconditionally connected already.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Factor out widget power check operation
Mark Brown [Wed, 28 Sep 2011 17:28:23 +0000 (18:28 +0100)]
ASoC: Factor out widget power check operation

We've got the same code in two different places, let's have it in a single
place instead.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Ensure all DAPM widgets have a power check callback
Mark Brown [Wed, 28 Sep 2011 17:23:53 +0000 (18:23 +0100)]
ASoC: Ensure all DAPM widgets have a power check callback

Makes the code simpler.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Move bias level decision into main dapm_power_widgets()
Mark Brown [Wed, 28 Sep 2011 16:19:47 +0000 (17:19 +0100)]
ASoC: Move bias level decision into main dapm_power_widgets()

Future patches will try to reduce the number of widgets we check on each
DAPM run but we're still going to need to look and see if the devices is
on at all so we can manage the overall device bias. Move these checks out
into the main dapm_power_widgets() function so we don't have to think about
them for now.

Once we're doing more incremental updates it'll probably be worth using
refcounts for each bias level to avoid having to do the sweep over all
widgets but that's not going to be where the big performance wins are.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Factor write of widget power out into a separate function
Mark Brown [Wed, 28 Sep 2011 16:02:31 +0000 (17:02 +0100)]
ASoC: Factor write of widget power out into a separate function

Split the decision about what the new power should be out from the
implementation of that decision.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoregulator: Fix return code from regulator_disable_deferred()
Mark Brown [Mon, 3 Oct 2011 21:42:43 +0000 (22:42 +0100)]
regulator: Fix return code from regulator_disable_deferred()

schedule_delayed_work() returns a bool indicating if the work was already
queued when it succeeds so we need to squash a true down to zero.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove direct register cache accesses from WM8962 driver
Mark Brown [Fri, 23 Sep 2011 20:26:33 +0000 (21:26 +0100)]
ASoC: Remove direct register cache accesses from WM8962 driver

Also fix return values for speaker switch updates.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: twl6040: Simplify custom put_volsw callback
Peter Ujfalusi [Tue, 4 Oct 2011 11:39:42 +0000 (14:39 +0300)]
ASoC: twl6040: Simplify custom put_volsw callback

Return -EINVAL in the unlikely event, if the function has been called
for unhandled control. This way we can remove one check in the code.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Introduce SOC_DOUBLE_R_VALUE macro
Peter Ujfalusi [Tue, 4 Oct 2011 11:39:39 +0000 (14:39 +0300)]
ASoC: core: Introduce SOC_DOUBLE_R_VALUE macro

With the new macro we can remove duplicated code
for the SOC_DOUBLE_R type of controls.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: core: Introduce SOC_DOUBLE_VALUE macro
Peter Ujfalusi [Tue, 4 Oct 2011 11:39:38 +0000 (14:39 +0300)]
ASoC: core: Introduce SOC_DOUBLE_VALUE macro

With the new macro we can remove duplicated code
for the SOC_DOUBLE type of controls.
We can also remap the SOC_SINGLE_VALUE macro to
SOC_DOUBLE_VALUE

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unneeded hw_write initialisation in wm8523
Axel Lin [Tue, 4 Oct 2011 03:45:41 +0000 (11:45 +0800)]
ASoC: Remove unneeded hw_write initialisation in wm8523

It is not required after commit 8d50e447
"ASoC: Factor out I/O for Wolfson 8 bit data 16 bit register CODECs"

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unneeded hw_write initialisation in ak4671
Axel Lin [Tue, 4 Oct 2011 03:44:42 +0000 (11:44 +0800)]
ASoC: Remove unneeded hw_write initialisation in ak4671

It is not required now.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8711: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 03:15:30 +0000 (11:15 +0800)]
ASoC: wm8711: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8988: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 03:18:59 +0000 (11:18 +0800)]
ASoC: wm8988: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8750: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 03:17:24 +0000 (11:17 +0800)]
ASoC: wm8750: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Avoid writing to WM8971_RESET in wm8971_resume
Axel Lin [Mon, 3 Oct 2011 23:44:22 +0000 (07:44 +0800)]
ASoC: Avoid writing to WM8971_RESET in wm8971_resume

Writing to WM8971_RESET resets all registers to the default state.
Thus we should avoid writing to WM8971_RESET on resume.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-3.1' into for-3.2
Mark Brown [Tue, 4 Oct 2011 14:44:43 +0000 (15:44 +0100)]
Merge branch 'for-3.1' into for-3.2

13 years agoASoC: wm8994: Fix setting rate_reg for wm8994-aif2
Axel Lin [Tue, 4 Oct 2011 14:07:18 +0000 (22:07 +0800)]
ASoC: wm8994: Fix setting rate_reg for wm8994-aif2

For wm8994-aif2, the rate_reg should be WM8994_AIF2_RATE.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: wm8995: Slightly optimize configure_clock
Axel Lin [Tue, 4 Oct 2011 12:08:04 +0000 (20:08 +0800)]
ASoC: wm8995: Slightly optimize configure_clock

snd_soc_update_bits() will only write new register value
if the old value is different from the new value.
In additional, snd_soc_update_bits() returns 0 for no change.
No need to read WM8995_CLOCKING_1 register before calling snd_soc_update_bits().

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8994: Slightly optimize configure_clock
Axel Lin [Tue, 4 Oct 2011 12:07:03 +0000 (20:07 +0800)]
ASoC: wm8994: Slightly optimize configure_clock

snd_soc_update_bits() will only write new register value
if the old value is different from the new value.
In additional, snd_soc_update_bits() returns 0 for no change.
No need to read WM8994_CLOCKING_1 register before calling snd_soc_update_bits().

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: omap-pcm: Fix the no period wakeup implementation
Peter Ujfalusi [Tue, 4 Oct 2011 08:09:52 +0000 (11:09 +0300)]
ASoC: omap-pcm: Fix the no period wakeup implementation

After omap_request_dma the BLOCK_IRQ is enabled as default
configuration for the channel.
If we are requested for no period wakeup, we need to disable
the BLOCK_IRQ in order to not receive any interrupts.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8988: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 01:59:26 +0000 (09:59 +0800)]
ASoC: wm8988: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8971: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 01:58:28 +0000 (09:58 +0800)]
ASoC: wm8971: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8711: Use snd_soc_update_bits for read-modify-write
Axel Lin [Tue, 4 Oct 2011 01:55:45 +0000 (09:55 +0800)]
ASoC: wm8711: Use snd_soc_update_bits for read-modify-write

Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: max98095 codec: Catch driver bugs for biquad channel name
Ryan Mallon [Mon, 3 Oct 2011 22:55:41 +0000 (09:55 +1100)]
ASoC: max98095 codec: Catch driver bugs for biquad channel name

Move the biquad channel names to a separate array and iterate over it in
max98095_get_bq_channel rather than duplicating the hardcoded channel
names. Add an error message if an invalid channel is passed and check
the error in the callers.

Also added a BUILD_BUG_ON to ensure that the bq_mode_name and controls
arrays are the same size.

Signed-off-by: Ryan Mallon <rmallon@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: max98088 codec: Catch driver bugs for eq channel name
Ryan Mallon [Mon, 3 Oct 2011 22:55:40 +0000 (09:55 +1100)]
ASoC: max98088 codec: Catch driver bugs for eq channel name

Move the EQ channel names to a separate array and iterate over it in
max98088_get_channel rather than duplicating the hardcoded channel
names. Add an error message if an invalid channel is passed and check
the error in the callers.

Also added a BUILD_BUG_ON to ensure that the eq_mode_name and controls
arrays are the same size.

Signed-off-by: Ryan Mallon <rmallon@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Add WM1811 support
Mark Brown [Tue, 24 May 2011 09:35:53 +0000 (17:35 +0800)]
ASoC: Add WM1811 support

The WM1811 is mostly register compatible with the WM8994 and WM8958,
providing a high performance audio hub CODEC in a small form factor
suitable for ultra compact system designs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agomfd: Add WM1811 support
Mark Brown [Tue, 24 May 2011 09:35:40 +0000 (17:35 +0800)]
mfd: Add WM1811 support

The WM1811 is mostly register compatible with the WM8994 and WM8958,
providing a high performance audio hub CODEC in a small form factor
suitable for ultra compact system designs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
13 years agoASoC: Fix typo in 24.576MHz rate in WM5100
Mark Brown [Mon, 3 Oct 2011 20:07:06 +0000 (21:07 +0100)]
ASoC: Fix typo in 24.576MHz rate in WM5100

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Instantiate DAPM widgets before we do the DAI link init
Mark Brown [Wed, 28 Sep 2011 19:12:01 +0000 (20:12 +0100)]
ASoC: Instantiate DAPM widgets before we do the DAI link init

The DAI init function may want to do something that needs the widgets to
be instantiated.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: samsung: s3c-i2s-v2.c needs module.h
Axel Lin [Sun, 2 Oct 2011 13:34:26 +0000 (21:34 +0800)]
ASoC: samsung: s3c-i2s-v2.c needs module.h

Include <linux/module.h> to fix below build error:

  CC      sound/soc/samsung/s3c-i2s-v2.o
sound/soc/samsung/s3c-i2s-v2.c:573: warning: data definition has no type or storage class
sound/soc/samsung/s3c-i2s-v2.c:573: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
sound/soc/samsung/s3c-i2s-v2.c:573: warning: parameter names (without types) in function declaration
sound/soc/samsung/s3c-i2s-v2.c:638: warning: data definition has no type or storage class
sound/soc/samsung/s3c-i2s-v2.c:638: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
sound/soc/samsung/s3c-i2s-v2.c:638: warning: parameter names (without types) in function declaration
sound/soc/samsung/s3c-i2s-v2.c:677: warning: data definition has no type or storage class
sound/soc/samsung/s3c-i2s-v2.c:677: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
sound/soc/samsung/s3c-i2s-v2.c:677: warning: parameter names (without types) in function declaration
sound/soc/samsung/s3c-i2s-v2.c: In function 's3c_i2sv2_register_dai':
sound/soc/samsung/s3c-i2s-v2.c:736: warning: initialization discards qualifiers from pointer target type
sound/soc/samsung/s3c-i2s-v2.c: At top level:
sound/soc/samsung/s3c-i2s-v2.c:754: warning: data definition has no type or storage class
sound/soc/samsung/s3c-i2s-v2.c:754: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
sound/soc/samsung/s3c-i2s-v2.c:754: warning: parameter names (without types) in function declaration
sound/soc/samsung/s3c-i2s-v2.c:756: error: expected declaration specifiers or '...' before string constant
sound/soc/samsung/s3c-i2s-v2.c:756: warning: data definition has no type or storage class
sound/soc/samsung/s3c-i2s-v2.c:756: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'
sound/soc/samsung/s3c-i2s-v2.c:756: warning: function declaration isn't a prototype
make[3]: *** [sound/soc/samsung/s3c-i2s-v2.o] Error 1
make[2]: *** [sound/soc/samsung] Error 2
make[1]: *** [sound/soc] Error 2
make: *** [sound] Error 2

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: samsung: WM8994 depends on MFD_WM8994
Arnd Bergmann [Mon, 3 Oct 2011 14:35:46 +0000 (16:35 +0200)]
ASoC: samsung: WM8994 depends on MFD_WM8994

Any driver that selects SND_SOC_WM8994 should also make sure that
MFD_WM8994 is set, since the codec relies on the mfd code:

  sound/built-in.o: In function `wm8994_read':
  last.c:(.text+0x20160): undefined reference to `wm8994_reg_read'
  sound/built-in.o: In function `wm8994_write':
  last.c:(.text+0x20e68): undefined reference to `wm8994_reg_write'

This solves the problem by selecting the MFD driver directly
and adding extra 'depends on' statements to make sure that we
respect the dependencies of that driver.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix setting update bits for WM8741_DACRMSB_ATTENUATION
Axel Lin [Mon, 3 Oct 2011 03:09:01 +0000 (11:09 +0800)]
ASoC: Fix setting update bits for WM8741_DACRMSB_ATTENUATION

After checking the code and datasheet, I think what we want in the second
snd_soc_update_bits call is to update WM8741_DACRMSB_ATTENUATION register
instead of WM8741_DACRLSB_ATTENUATION.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: txx9: Add __exit_p at necessary place
Axel Lin [Mon, 3 Oct 2011 01:38:32 +0000 (09:38 +0800)]
ASoC: txx9: Add __exit_p at necessary place

We have __exit annotation for txx9aclc_generic_remove(),
thus add __devexit_p to wrap it.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Staticise ep93xx_ac97_dai
Axel Lin [Mon, 3 Oct 2011 03:33:05 +0000 (11:33 +0800)]
ASoC: Staticise ep93xx_ac97_dai

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Mika Westerberg <mika.westerberg@iki.fi>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Staticise simtec_audio_resume()
Axel Lin [Mon, 3 Oct 2011 08:11:52 +0000 (16:11 +0800)]
ASoC: Staticise simtec_audio_resume()

It is exported via resume callback of struct dev_pm_ops rather than referenced
directly and so should be staticised.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove needless codec->dapm.bias_level assignment to SND_SOC_BIAS_OFF
Axel Lin [Mon, 3 Oct 2011 12:17:16 +0000 (20:17 +0800)]
ASoC: Remove needless codec->dapm.bias_level assignment to SND_SOC_BIAS_OFF

This assignment is done by the snd_soc_register_codec so there is no need
to redo it in probe function of a codec driver.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: sh: use correct __iomem annotations
Arnd Bergmann [Sun, 2 Oct 2011 20:28:02 +0000 (22:28 +0200)]
ASoC: sh: use correct __iomem annotations

This removes a few unnecessary type casts and avoids
sparse warnings.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: imx: eukrea_tlv320 needs i2c
Arnd Bergmann [Sun, 2 Oct 2011 20:28:01 +0000 (22:28 +0200)]
ASoC: imx: eukrea_tlv320 needs i2c

Add a missing dependency that is required for random configurations.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-3.1' into for-3.2
Mark Brown [Sun, 2 Oct 2011 19:20:35 +0000 (20:20 +0100)]
Merge branch 'for-3.1' into for-3.2

Conflicts:
sound/soc/omap/mcpdm.c
sound/soc/omap/mcpdm.h

13 years agoASoC: omap_mcpdm_remove cannot be __devexit
Arnd Bergmann [Sun, 2 Oct 2011 14:45:31 +0000 (16:45 +0200)]
ASoC: omap_mcpdm_remove cannot be __devexit

omap_mcpdm_remove is used from asoc_mcpdm_probe, which is an
initcall, and must not be discarded when HOTPLUG is disabled.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unused srate variable in tegra_spdif_hw_params
Axel Lin [Sun, 2 Oct 2011 13:07:02 +0000 (21:07 +0800)]
ASoC: Remove unused srate variable in tegra_spdif_hw_params

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Remove unused rate variable in magician_playback_hw_params
Axel Lin [Sun, 2 Oct 2011 13:05:56 +0000 (21:05 +0800)]
ASoC: Remove unused rate variable in magician_playback_hw_params

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Staticise sh4_ssi_dai
Axel Lin [Sun, 2 Oct 2011 09:43:16 +0000 (17:43 +0800)]
ASoC: Staticise sh4_ssi_dai

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Staticise samsung_spdif_dai
Axel Lin [Sun, 2 Oct 2011 09:42:30 +0000 (17:42 +0800)]
ASoC: Staticise samsung_spdif_dai

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: tegra: Staticise tegra_i2s_dai and tegra_spdif_dai
Axel Lin [Sun, 2 Oct 2011 09:41:40 +0000 (17:41 +0800)]
ASoC: tegra: Staticise tegra_i2s_dai and tegra_spdif_dai

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: samsung: Add __devexit_p at necessary places
Axel Lin [Sun, 2 Oct 2011 03:20:13 +0000 (11:20 +0800)]
ASoC: samsung: Add __devexit_p at necessary places

According to the comments in include/linux/init.h:

"Pointers to __devexit functions must use __devexit_p(function_name), the
wrapper will insert either the function_name or NULL, depending on the confi
options."

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Cc: Jaswinder Singh <jassi.brar@samsung.com>
Cc: Ben Dooks <ben@simtec.co.uk>
Cc: Seungwhan Youn <sw.youn@samsung.com>
Cc: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: kirkwood-i2s: Add __devexit_p at necessary place
Axel Lin [Sun, 2 Oct 2011 01:18:17 +0000 (09:18 +0800)]
ASoC: kirkwood-i2s: Add __devexit_p at necessary place

According to the comments in include/linux/init.h:

"Pointers to __devexit functions must use __devexit_p(function_name), the
wrapper will insert either the function_name or NULL, depending on the config
options."

We have __devexit annotation for kirkwood_i2s_dev_remove(), thus add __devexit_p
at necessary place.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: wm8782: Add __devexit_p at necessary place
Axel Lin [Sun, 2 Oct 2011 00:55:02 +0000 (08:55 +0800)]
ASoC: wm8782: Add __devexit_p at necessary place

According to the comments in include/linux/init.h:

"Pointers to __devexit functions must use __devexit_p(function_name), the
wrapper will insert either the function_name or NULL, depending on the config
options."

We have __devexit annotation for wm8782_remove(), thus add __devexit_p at
necessary place.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoMerge branch 'for-3.1' into for-3.2
Mark Brown [Sun, 2 Oct 2011 18:57:19 +0000 (19:57 +0100)]
Merge branch 'for-3.1' into for-3.2

13 years agoASoC: omap: Use single hw_params callback in sdp3430 and zoom2
Jarkko Nikula [Fri, 30 Sep 2011 13:07:46 +0000 (16:07 +0300)]
ASoC: omap: Use single hw_params callback in sdp3430 and zoom2

There is no need to use two hw_params callbacks in sdp3430 and zoom2 as
thet are now identical. Use instead the same snd_soc_ops structure and
hw_params callback for both DAI links.

Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: omap: Convert bunch of machine drivers to use init time DAI format
Jarkko Nikula [Fri, 30 Sep 2011 13:07:45 +0000 (16:07 +0300)]
ASoC: omap: Convert bunch of machine drivers to use init time DAI format

Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: omap-mcbsp: Prepare for init time DAI format setting
Jarkko Nikula [Fri, 30 Sep 2011 13:07:44 +0000 (16:07 +0300)]
ASoC: omap-mcbsp: Prepare for init time DAI format setting

Before commit 75d9ac4 ("ASoC: Allow DAI formats to be specified in the
dai_link") expectation for omap-mcbsp was that snd_soc_dai_set_fmt is to be
called first in machine hw_params callback before other CPU DAI functions.
Thus it was enough that only omap_mcbsp_dai_set_dai_fmt cleared the
mcbsp->regs structure.  [Note that this was pure convention, it's always
been OK to set things on init -- broonie]

Now this doesn't hold anymore since machine drivers can set the DAI format
only once on init time and thus mcbsp->regs may get out of sync when other
CPU DAI functions are modifying them dynamically with different values
between the calls. Therefore clear the accessed mcbsp->regs bits and
bitfields in other functions too.

Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: Fix setting update bits for WM8753_LADC and WM8753_RADC
Axel Lin [Sun, 2 Oct 2011 12:41:04 +0000 (20:41 +0800)]
ASoC: Fix setting update bits for WM8753_LADC and WM8753_RADC

Current code set update bits for WM8753_LDAC and WM8753_RDAC twice,
but missed setting update bits for WM8753_LADC and WM8753_RADC.

I think it is a copy-paste bug in commit 776065
"ASoC: codecs: wm8753: Fix register cache incoherency".

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: use a valid device for dev_err() in Zylonite
Arnd Bergmann [Sat, 1 Oct 2011 20:03:34 +0000 (22:03 +0200)]
ASoC: use a valid device for dev_err() in Zylonite

A recent conversion has introduced references to &pdev->dev, which does
not actually exist in all the contexts it's used in.

Replace this with card->dev where necessary, in order to let
the driver build again.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
13 years agoASoC: tlv320aic3x: Use driver_data field of struct i2c_device_id to identify models
Axel Lin [Wed, 28 Sep 2011 13:56:48 +0000 (21:56 +0800)]
ASoC: tlv320aic3x: Use driver_data field of struct i2c_device_id to identify models

Save model information in driver_data so we can simplify the implementation.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Simplify code in out_drv_event for pending work check
Peter Ujfalusi [Thu, 29 Sep 2011 12:22:37 +0000 (15:22 +0300)]
ASoC: twl6040: Simplify code in out_drv_event for pending work check

Instead of checking, if the work is pending, it is safer to cancel
the pending work, or wait till the scheduled work finishes.
This way we can avoid modifying the variables used by the work
function.
Since we know that no work is pending, we can remove the two additional
checks in POST_PMU, and PRE_PMD for non pending works.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: Shift 2 identifies the HS output in out_drv_event
Peter Ujfalusi [Thu, 29 Sep 2011 12:22:36 +0000 (15:22 +0300)]
ASoC: twl6040: Shift 2 identifies the HS output in out_drv_event

None of the driver handled by out_drv_event have it's power
bit shifted by 3.
Remove the case for shift 3, and also add comment for the cases.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: correct loop counters for HS/HF ramp code
Peter Ujfalusi [Thu, 29 Sep 2011 12:22:35 +0000 (15:22 +0300)]
ASoC: twl6040: correct loop counters for HS/HF ramp code

The Headset gain range is 0 - 0xf (4 bit resolution)
The Handsfree gain range is 0 - 0x1d (5 bit resolution,
0x1e, and 0x1f values are invalid)

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13 years agoASoC: twl6040: One workqueue should be enough
Peter Ujfalusi [Thu, 29 Sep 2011 12:22:34 +0000 (15:22 +0300)]
ASoC: twl6040: One workqueue should be enough

It is a bit overkill to have three (3) separate
workqueue for a single driver.
We can manage things with one workqueue nicely.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>