History log of /linux-master/sound/soc/codecs/wm8994.c
Revision Date Author Comments
# e13b63c4 23-Oct-2023 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

ASoC: codecs: wm8994: Handle component name prefix

Use snd_soc_dapm_widget_name_cmp() helper when comparing widget names,
to include also the component's name prefix.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231023095428.166563-11-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>


# 586685f1 08-Aug-2023 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: codecs/wm*: merge DAI call back functions into ops

ALSA SoC merges DAI call backs into .ops.
This patch merge these into one.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87jzu59m5f.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# a350c556 08-Aug-2023 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: codecs/wm*: merge DAI call back functions into ops

ALSA SoC merges DAI call backs into .ops.
This patch merge these into one.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87jzu59m5f.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 63d3f580 15-Mar-2023 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

ASoC: codecs: wm8994: Convert to platform remove callback returning void

The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-60-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>


# 9529dc16 09-Dec-2022 Marek Szyprowski <m.szyprowski@samsung.com>

ASoC: wm8994: Fix potential deadlock

Fix this by dropping wm8994->accdet_lock while calling
cancel_delayed_work_sync(&wm8994->mic_work) in wm1811_jackdet_irq().

Fixes: c0cc3f166525 ("ASoC: wm8994: Allow a delay between jack insertion and microphone detect")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20221209091657.1183-1-m.szyprowski@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 02004449 23-Jun-2022 Charles Keepax <ckeepax@opensource.cirrus.com>

ASoC: wm*: Remove now redundant non_legacy_dai_naming flag

The ASoC core has now been changed to default to the non-legacy DAI
naming, as such drivers using the new scheme no longer need to specify
the non_legacy_dai_naming flag.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220623125250.2355471-66-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 07695752 14-Jan-2021 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: wm*: sync parameter naming (rate/sample_bits)

This patch syncs naming rule.

- xxx_rates;
+ xxx_rate;

- xxx_samplebits;
+ xxx_sample_bits;

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87czy6olh0.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# b8161cbe 10-Nov-2020 Zhang Qilong <zhangqilong3@huawei.com>

ASoC: wm8994: Fix PM disable depth imbalance on error

The pm_runtime_enable will increase power disable depth. Thus
a pairing decrement is needed on the error handling path to
keep it balanced according to context.

Fixes: 57e265c8d71fb ("ASoC: wm8994: Move runtime PM init to platform device init")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20201111041326.1257558-2-zhangqilong3@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# f5a2cda4 27-Aug-2020 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions

When the wm8958_mic_detect, wm8994_mic_detect functions get called from
the machine driver, e.g. from the card's late_probe() callback, the CODEC
device may be PM runtime suspended and any regmap writes have no effect.
Add PM runtime calls to these functions to ensure the device registers
are updated as expected.
This suppresses an error during boot
"wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec"
caused by the regmap access error due to the cache_only flag being set.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200827173357.31891-2-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 811c5494 27-Aug-2020 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811

The WM8994_MICBIAS register is not available in the WM1811 CODEC so skip
initialization of that register for that device.
This suppresses an error during boot:
"wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec"

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200827173357.31891-1-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 314213c1 04-Aug-2020 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Prevent access to invalid VU register bits on WM1811

The ADC2 and DAC2 are not available on WM1811 device. This patch moves
the ADC2, DAC2 VU bitfields to a separate array so we can skip accessing
them and avoid unreadable register access on WM1811.

This allows to get rid of warnings during boot like:
wm8994-codec: ASoC: error at soc_component_read_no_lock on wm8994-codec: -5

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Link: https://lore.kernel.org/r/20200804141043.11425-1-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 26d3c16e 08-Jul-2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: codecs: wm*: merge .digital_mute() into .mute_stream()

snd_soc_dai_digital_mute() is internally using both
mute_stream() (1) or digital_mute() (2), but the difference between
these 2 are only handling direction.
We can merge digital_mute() into mute_stream

int snd_soc_dai_digital_mute(xxx, int direction)
{
...
else if (dai->driver->ops->mute_stream)
(1) return dai->driver->ops->mute_stream(xxx, direction);
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
dai->driver->ops->digital_mute)
(2) return dai->driver->ops->digital_mute(xxx);
...
}

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/87v9ixwiwr.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 3e146b55 08-Jul-2020 Gustavo A. R. Silva <gustavoars@kernel.org>

ASoC: codecs: Use fallthrough pseudo-keyword

Replace the existing /* fall through */ comments and its variants with
the new pseudo-keyword macro fallthrough[1].

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/20200709010359.GA18971@embeddedor
Signed-off-by: Mark Brown <broonie@kernel.org>


# 7c4084e1 01-Jul-2020 Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>

ASoC: codecs: wm8994: fix kernel-doc

Fix W=1 warning

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200701181320.80848-7-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 6d75dfc3 15-Jun-2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: codecs: wm*: rename to snd_soc_component_read()

We need to use snd_soc_component_read()
instead of snd_soc_component_read32()

This patch renames _read32() to _read()

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87eeqf4mcl.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# e8ec193e 07-Apr-2020 Jason Yan <yanaijie@huawei.com>

ASoC: wm8994: remove wm1811_snd_controls and mixin_boost_tlv

Fix the following gcc warning:

sound/soc/codecs/wm8994.c:736:38: warning: ‘wm1811_snd_controls’ defined
but not used [-Wunused-const-variable=]
static const struct snd_kcontrol_new wm1811_snd_controls[] = {
^~~~~~~~~~~~~~~~~~~

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Jason Yan <yanaijie@huawei.com>
Link: https://lore.kernel.org/r/20200407082932.41511-2-yanaijie@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 001b83d3 20-Sep-2019 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Add support for MCLKn clock gating

As an intermediate step before covering the clocking subsystem
of the CODEC entirely by the clk API add handling of external CODEC's
master clocks in DAPM events when the AIFn clocks are sourced directly
from MCLKn; when FLLn are used we enable/disable respective MCLKn
before/after FLLn is enabled/disabled.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20190920130218.32690-5-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# 419e2f50 20-Sep-2019 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Add support for setting MCLK clock rate

Extend the set_sysclk() handler so we also set frequency of the MCLK1,
MCLK2 clocks through clk API when those clocks are specified in DT.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20190920130218.32690-4-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# ca234719 20-Sep-2019 Sylwester Nawrocki <s.nawrocki@samsung.com>

ASoC: wm8994: Do not register inapplicable controls for WM1811

In case of WM1811 device there are currently being registered controls
referring to registers not existing on that device.
It has been noticed when getting values of "AIF1ADC2 Volume", "AIF1DAC2
Volume" controls was failing during ALSA state restoring at boot time:
"amixer: Mixer hw:0 load error: Device or resource busy"

Reading some registers through I2C was failing with EBUSY error and
indeed these registers were not available according to the datasheet.

To fix this controls not available on WM1811 are moved to a separate
array and registered only for WM8994 and WM8958.

There are some further differences between WM8994 and WM1811,
e.g. registers 603h, 604h, 605h, which are not covered in this patch.

Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Link: https://lore.kernel.org/r/20190920130218.32690-2-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>


# d2912cb1 04-Jun-2019 Thomas Gleixner <tglx@linutronix.de>

treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500

Based on 2 normalized pattern(s):

this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license version 2 as
published by the free software foundation

this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license version 2 as
published by the free software foundation #

extracted by the scancode license scanner the SPDX license identifier

GPL-2.0-only

has been chosen to replace the boilerplate/reference in 4122 file(s).

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Enrico Weigelt <info@metux.net>
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Allison Randal <allison@lohutok.net>
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


# ad0eaee6 06-Aug-2018 Gustavo A. R. Silva <gustavo@embeddedor.com>

ASoC: wm8994: Fix missing break in switch

Add missing break statement in order to prevent the code from falling
through to the default case.

Addresses-Coverity-ID: 115050 ("Missing break in switch")
Reported-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org


# 2cea1542 01-Aug-2018 Gustavo A. R. Silva <gustavo@embeddedor.com>

ASoC: wm8994: Mark expected switch fall-through

In preparation to enabling -Wimplicit-fallthrough, mark switch cases
where we are expecting to fall through.

Addresses-Coverity-ID: 115050 ("Missing break in switch")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# a86854d0 12-Jun-2018 Kees Cook <keescook@chromium.org>

treewide: devm_kzalloc() -> devm_kcalloc()

The devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
This patch replaces cases of:

devm_kzalloc(handle, a * b, gfp)

with:
devm_kcalloc(handle, a * b, gfp)

as well as handling cases of:

devm_kzalloc(handle, a * b * c, gfp)

with:

devm_kzalloc(handle, array3_size(a, b, c), gfp)

as it's slightly less ugly than:

devm_kcalloc(handle, array_size(a, b), c, gfp)

This does, however, attempt to ignore constant size factors like:

devm_kzalloc(handle, 4 * 1024, gfp)

though any constants defined via macros get caught up in the conversion.

Any factors with a sizeof() of "unsigned char", "char", and "u8" were
dropped, since they're redundant.

Some manual whitespace fixes were needed in this patch, as Coccinelle
really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".

The Coccinelle script used for this was:

// Fix redundant parens around sizeof().
@@
expression HANDLE;
type TYPE;
expression THING, E;
@@

(
devm_kzalloc(HANDLE,
- (sizeof(TYPE)) * E
+ sizeof(TYPE) * E
, ...)
|
devm_kzalloc(HANDLE,
- (sizeof(THING)) * E
+ sizeof(THING) * E
, ...)
)

// Drop single-byte sizes and redundant parens.
@@
expression HANDLE;
expression COUNT;
typedef u8;
typedef __u8;
@@

(
devm_kzalloc(HANDLE,
- sizeof(u8) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(__u8) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(char) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(unsigned char) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(u8) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(__u8) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(char) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(unsigned char) * COUNT
+ COUNT
, ...)
)

// 2-factor product with sizeof(type/expression) and identifier or constant.
@@
expression HANDLE;
type TYPE;
expression THING;
identifier COUNT_ID;
constant COUNT_CONST;
@@

(
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (COUNT_ID)
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * COUNT_ID
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (COUNT_CONST)
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * COUNT_CONST
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (COUNT_ID)
+ COUNT_ID, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * COUNT_ID
+ COUNT_ID, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (COUNT_CONST)
+ COUNT_CONST, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * COUNT_CONST
+ COUNT_CONST, sizeof(THING)
, ...)
)

// 2-factor product, only identifiers.
@@
expression HANDLE;
identifier SIZE, COUNT;
@@

- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- SIZE * COUNT
+ COUNT, SIZE
, ...)

// 3-factor product with 1 sizeof(type) or sizeof(expression), with
// redundant parens removed.
@@
expression HANDLE;
expression THING;
identifier STRIDE, COUNT;
type TYPE;
@@

(
devm_kzalloc(HANDLE,
- sizeof(TYPE) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
)

// 3-factor product with 2 sizeof(variable), with redundant parens removed.
@@
expression HANDLE;
expression THING1, THING2;
identifier COUNT;
type TYPE1, TYPE2;
@@

(
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(TYPE2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
)

// 3-factor product, only identifiers, with redundant parens removed.
@@
expression HANDLE;
identifier STRIDE, SIZE, COUNT;
@@

(
devm_kzalloc(HANDLE,
- (COUNT) * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
)

// Any remaining multi-factor products, first at least 3-factor products,
// when they're not all constants...
@@
expression HANDLE;
expression E1, E2, E3;
constant C1, C2, C3;
@@

(
devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
|
devm_kzalloc(HANDLE,
- (E1) * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- (E1) * (E2) * E3
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- (E1) * (E2) * (E3)
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- E1 * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
)

// And then all remaining 2 factors products when they're not all constants,
// keeping sizeof() as the second factor argument.
@@
expression HANDLE;
expression THING, E1, E2;
type TYPE;
constant C1, C2, C3;
@@

(
devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
|
devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
|
devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
|
devm_kzalloc(HANDLE, C1 * C2, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (E2)
+ E2, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * E2
+ E2, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (E2)
+ E2, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * E2
+ E2, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- (E1) * E2
+ E1, E2
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- (E1) * (E2)
+ E1, E2
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- E1 * E2
+ E1, E2
, ...)
)

Signed-off-by: Kees Cook <keescook@chromium.org>


# 00a6941c 28-Jan-2018 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: wm8993/wm8994/wm8958: replace codec to component

Now we can replace Codec to Component. Let's do it.

Becase wm8993/wm8994/wm8958 are using wm_hubs feature,
we need to update these all related drivers in same time.
Otherwise compile error/warning happen

wm8993:
xxx_codec_xxx() -> xxx_component_xxx()
.idle_bias_off = 0 -> .idle_bias_on = 1
.ignore_pmdown_time = 0 -> .use_pmdown_time = 1
- -> .endianness = 1
- -> .non_legacy_dai_naming = 1

wm8994:
xxx_codec_xxx() -> xxx_component_xxx()
.idle_bias_off = 0 -> .idle_bias_on = 1
.ignore_pmdown_time = 0 -> .use_pmdown_time = 1
- -> .endianness = 1
- -> .non_legacy_dai_naming = 1

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 5a81eb53 27-Nov-2017 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: use snd_soc_component_init_regmap() on wm8994

To setup regmap, ALSA SoC has snd_soc_component_init_regmap() and
.get_regmap. But these are duplicated feature.
Let's use snd_soc_component_init_regmap() and remove .get_regmap

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 9d94305a 08-Nov-2017 Gustavo A. R. Silva <garsilva@embeddedor.com>

ASoC: wm8994: mark expected switch fall-throughs

In preparation to enabling -Wimplicit-fallthrough, mark switch cases
where we are expecting to fall through.

Addresses-Coverity-ID: 402005
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# f802d6c0 31-Aug-2016 Julia Lawall <Julia.Lawall@lip6.fr>

ASoC: constify snd_soc_codec_driver structures

Check for snd_soc_codec_driver structures that are only passed to
snd_soc_register_codec or memcpy (2nd arg), for which the corresponding
parameters are declared const. Declare as const snd_soc_codec_driver
structures that have these properties.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r disable optional_qualifier@
identifier i;
position p;
@@
static struct snd_soc_codec_driver i@p = { ... };

@ok@
identifier r.i;
expression e1,e2,e3;
position p;
@@
(
snd_soc_register_codec(e1,&i@p,e2,e3)
|
memcpy(e1,&i@p,e2)
)

@bad@
position p != {r.p,ok.p};
identifier r.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r.i;
@@
static
+const
struct snd_soc_codec_driver i = { ... };
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 8019c0b3 29-Feb-2016 Takashi Iwai <tiwai@suse.de>

ASoC: wm8994: Fix enum ctl accesses in a wrong type

The DRC Mode like "AIF1DRC1 Mode" and EQ Mode like "AIF1.1 EQ Mode" in
wm8994 codec driver are enum ctls, while the current driver accesses
wrongly via value.integer.value[]. They have to be via
value.enumerated.item[] instead.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org


# e134cb204 13-Aug-2015 Zidan Wang <zidan.wang@freescale.com>

ASoC: wm8994: fix add dynamic path error

If there don't exist dynamic sink or source widget, it will failed to
add dynamic path.

"AIF3ADCDAT" is snd_soc_dapm_aif_out, can't be dynamic sink widget. So
change the audio route to fix this issue.

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 8e09bac7 01-Jun-2015 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8994: Replace direct snd_soc_codec dapm field access

The dapm field of the snd_soc_codec struct is eventually going to be
removed, in preparation for this replace all manual access to
codec->dapm.bias_level with snd_soc_codec_get_bias_level() and replace all
other manual access to codec->dapm with snd_soc_codec_get_dapm().

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 17fc2e0a 12-May-2015 Zidan Wang <zidan.wang@freescale.com>

ASoC: wm8994: correct BCLK DIV 348 to 384

According to the RM of wm8958, BCLK DIV 348 doesn't exist, correct it
to 384.

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org


# d78395ce 11-May-2015 Fabio Estevam <fabio.estevam@freescale.com>

ASoC: wm8994: Pass the IRQF_ONESHOT flag

Since commit 1c6c69525b40eb76de8adf039409722015927dc3 ("genirq: Reject
bogus threaded irq requests") threaded IRQs without a primary handler
need to be requested with IRQF_ONESHOT, otherwise the request will fail.

So pass the IRQF_ONESHOT flag in this case.

The semantic patch that makes this change is available
in scripts/coccinelle/misc/irqf_oneshot.cocci.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# f4bf8d77 27-Apr-2015 Lars-Peter Clausen <lars@metafoo.de>

ASoC: Move bias level update to the core

All drivers have the same line at the end of the set_bias_level callback to
update the bias_level state. Move this update into
snd_soc_dapm_force_bias_level() and remove them from the drivers.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>


# bd1204cb 27-Apr-2015 Lars-Peter Clausen <lars@metafoo.de>

ASoC: Route all bias level updates through the core

Use the new snd_soc_codec_force_bias_level() helper function to invoke the
bias_level callback of a driver instead of calling the callback by hand.
Currently the effect of this is the same, but having all bias level updates
go through a central place will allow us to move more of the bias level
management into the DAPM core.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 12e3080c 13-Jan-2015 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8995: Replace w->codec snd_soc_dapm_to_codec(w->dapm)

The codec field of the snd_soc_widget struct is eventually going to be
removed, use snd_soc_dapm_to_codec(w->dapm) instead.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# 49d9ac38 23-Nov-2014 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8994: Cleanup manual bias level transitions

Since the ASoC core now takes care of setting the bias level to
SND_SOC_BIAS_OFF when removing the CODEC there is no need to do it manually
anymore either.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# fabfad2f 09-Nov-2014 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8958: Move DSP firmware lock to driver level

The wm8958 driver uses the snd_soc_codec mutex to protect the various
firmware pointers from concurrent assignment. This patch moves this lock to
the driver level. This will allow us to eventually remove the snd_soc_codec
mutex.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>


# c756e83d 20-Oct-2014 Wolfram Sang <wsa@kernel.org>

ASoC: codecs: drop owner assignment from platform_drivers

A platform_driver does not need to set an owner, it will be populated by the
driver core.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>


# dfe8f1f3 13-Aug-2014 Nikesh Oswal <nikesh@opensource.wolfsonmicro.com>

ASoC: wm8994: Demux the microphone detection IRQ

Current code only allows direct routing of the WM8994 microphone
detection signal to a GPIO this change adds support to demux the
interrupt from the main interrupt line of the codec.

Signed-off-by: Nikesh Oswal <nikesh@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# e29fe496 30-Jul-2014 Mark Brown <broonie@linaro.org>

ASoC: wm8994: Convert to params_width()

The CODEC doesn't care how data is laid out in memory.

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>


# 549f66e0 20-Jun-2014 Sachin Kamat <sachin.kamat@samsung.com>

ASoC: wm8994: Remove redundant OOM message

Let memory subsystem handle the error logging.

Signed-off-by: Sachin Kamat <sachin.kamat@samsung.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# b3831417 16-Jun-2014 Charles Keepax <ckeepax@opensource.wolfsonmicro.com>

ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811

wm1811_micd_stop takes the accdet_lock mutex, and is called from two
places, one of which is already holding the accdet_lock. This obviously
causes a lock up.

This patch fixes this issue by removing the lock from wm1811_micd_stop
and ensuring that it is always locked externally.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org


# 37d20305 14-Apr-2014 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8994: Replace usage deprecated MUX/ENUM macros

SND_SOC_DAPM_VIRT_MUX, SND_SOC_DAPM_VIRT_MUX_E and SOC_DAPM_ENUM_VIRT are
deprecated and merely an alias for SND_SOC_DAPM_MUX, SND_SOC_DAPM_MUX_E and
SOC_DAPM_ENUM. Replace the deprecated macros so we can eventually remove their
definition.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>


# ea53bf77 18-Mar-2014 Lars-Peter Clausen <lars@metafoo.de>

ASoC: Add snd_soc_kcontrol_codec() helper function

For CODEC controls snd_kcontrol_chip() currently returns a pointer to the
CODEC that registered the control. With the upcoming consolidation of
platform and CODEC controls this will change. Prepare for this by introducing
the snd_soc_kcontrol_codec() helper function that will hide the implementation
details of how the CODEC for a control can be obtained. This will allow us to
change this easily in the future.

The patch also updates all CODEC drivers to use the new helper function.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 7a34b1c1 02-Apr-2014 Xiubo Li <Li.Xiubo@freescale.com>

ASoC: codec: fix the sparse check warnings.

Some thing Likes:

reproduce: make C=1 CF=-D__CHECK_ENDIAN__

sparse warnings: (new ones prefixed by >>)

>> sound/soc/codecs/wm8997.c:1084:15: sparse: symbol \
'wm8997_get_regmap' was not declared. Should it be static?

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# c0b6f59b 25-Mar-2014 Xiubo Li <Li.Xiubo@freescale.com>

ASoC: wm8994: Remove the set_cache_io() entirely from ASoC probe.

As we can set the CODEC I/O while snd_soc_register_codec(), so the
calling of set_cache_io() from CODEC ASoC probe could be removed
entirely.

And then we can set the CODEC I/O in the device probe instead of
CODEC ASoC probe as earily as possible.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 092eba93 10-Mar-2014 Xiubo Li <Li.Xiubo@freescale.com>

ASoC: io: New signature for snd_soc_codec_set_cache_io()

Now that all users have been converted to regmap and the config.reg_bits
and config.val_bits can be setted by each user through regmap core API.
So these two params are redundant here.

Since the only control type that left is SND_SOC_REGMAP, so remove it. Drop
the control params and add struct regmap *regmap to simplify the code.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 86d4c9ab 28-Feb-2014 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8994: Use SOC_ENUM_SINGLE_VIRT_DECL()

For the upcoming consolidation for MUXs and virtual MUXs we need to mark virtual
enums as such.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# babce821 18-Feb-2014 Charles Keepax <ckeepax@opensource.wolfsonmicro.com>

ASoC: wm8994: Update locking around use of DAPM pin API

The pin updates in this driver look like they are intended to be done
atomically, update to do so.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 9a8d38db 18-Feb-2014 Takashi Iwai <tiwai@suse.de>

ASoC: Rename soc_enum.max field with items

The name "max" in struct soc_enum is rather confusing since it
actually takes the number of items. With "max", one might try to
assign (nitems - 1) value.

Rename the field to a more appropriate one, "items", which is also
used in struct snd_ctl_elem_info, too.

This patch also rewrites some code like "if (x > e->nitems - 1)" with
"if (x >= e->nitems)". Not only the latter improves the readability,
it also fixes a potential bug when e->items is zero.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>


# e61a35b7 18-Feb-2014 Takashi Iwai <tiwai@suse.de>

ASoC: wm8994: Fix the wrong number of enum items

wm8994 codec driver has a few places wrongly defining the number of
enum items.

Use SOC_ENUM_SINGLE_DECL() macro and they are automatically fixed.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>


# b888edbc 21-Nov-2013 wangbiao <biao.wang@intel.com>

ASoC: wm8994: Move DCS done IRQ request later

once code return from request_threaded_irq, irq was setup enabled by
default, but completion var dcs_done not got initialized yet, if then a
dcs done irq was raised, system will got hung as the sync mechanism is
invalid now.

so this patch move dcs done irq request to the end of initialization
of completion.

Signed-off-by: wang, biao <biao.wang@intel.com>
Signed-off-by: Zhang, Di <di.zhang@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>


# ed6a2772 05-Aug-2013 Mark Brown <broonie@linaro.org>

ASoC: wm8994: Fix class W controls

Commit 6e0650 (ASoC: wm8994: Use SOC_SINGLE_EXT() instead of open-coding
it) went too far and converted a DAPM control to use SOC_SINGLE_EXT()
which crashes. Revert that portion of the patch.

Signed-off-by: Mark Brown <broonie@linaro.org>


# eee5d7f9 29-Jul-2013 Lars-Peter Clausen <lars@metafoo.de>

ASoC: dapm: Add a helper to get the CODEC for DAPM kcontrol

We use the same 3 lines to get the CODEC for a kcontrol in a quite a few places.
This patch puts them into a common helper function. Having this encapsulated in
a helper function will also make it more easier to eventually change the data
layout of the kcontrol's private data.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 68defe58 18-Jul-2013 Mark Brown <broonie@linaro.org>

ASoC: wm8994: Use power efficient workqueue

The accessory detect debounce work is not performance sensitive so let
the scheduler run it wherever is most efficient rather than in a per CPU
workqueue by using the system power efficient workqueue.

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>


# 57e265c8 01-Jul-2013 Mark Brown <broonie@linaro.org>

ASoC: wm8994: Move runtime PM init to platform device init

As well as being better style this allows the device to idle when there is
no audio card instantaited which is probably what we want.

Signed-off-by: Mark Brown <broonie@linaro.org>


# 82e414fa 04-Jul-2013 Mark Brown <broonie@linaro.org>

ASoC: wm8994: Remove overly noisy debug logging

This was committed in error.

Signed-off-by: Mark Brown <broonie@linaro.org>


# 6e06509c 19-Jun-2013 Lars-Peter Clausen <lars@metafoo.de>

ASoC: wm8994: Use SOC_SINGLE_EXT() instead of open-coding it

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>


# 2da1c4bf 30-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Allow debounce before MICDET identification

For systems which do not have a jack detection feature allow some debounce
to be specified before we perform accessory identification, improving
robustness without impacting button detection responsiveness.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 2d01e39b 30-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Remove unused variable

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 50941968 30-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Add digital loopback paths

There is loopback control within the audio interfaces, provide control of
this as there are some obscure scenarios where this could be used in
production.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7afce3f5 30-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Ensure microphone detection state is reset on removal

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 9e43088b 29-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Avoid leaking pm_runtime reference on removed jack race

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 70bd3b29 29-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Defer declaration of open circuit microphones

Provide a bit of debounce to handle pathological cases with slow input
better by allowing the microphone detection to run for a bit longer.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f7dbd399 27-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Ensure lambda is zeroed for WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 287d03e9 27-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Remove restore of DAC enable state

It's not been needed since the regmap conversion.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7d6898be 28-May-2013 Vinod Koul <vkoul@kernel.org>

ASoC: wm8994: check for array index returned

The array 'drc_cfg' of size 3 may use index value -22 (EINVAL)
The array 'retune_mobile_cfg' of size 3 may use index value -22 (EINVAL)

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 9767a58b 27-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix reporting of accessory removal on WM8958

During recent refactoring the code to report removal when MICDET reports
an absent microphone was removed, causing problems for systems which rely
solely on the MICDET for this functionality. Restore it.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d3134e21 28-May-2013 Vinod Koul <vkoul@kernel.org>

ASoC: wm8994: use the correct pointer to get the control value

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 435705e8 20-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Handle LRCLK inversion for WM8958 and WM1811A

On WM8958 and WM1811A separate control of the LRCLK inversion bit is
available for the DAC and ADC LRCLKs which for compatibility reasons is
done in a new register bit.

Since writes to each scheme have no effect on parts using the other just
always write to both for simplicity.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Tested-by: Samreen Nilofer <samreen.nilofer@intel.com>


# 571ab6c6 15-May-2013 Dan Carpenter <dan.carpenter@oracle.com>

ASoC: wm8994: missing break in wm8994_get_fll_config()

Smatch complains that:

sound/soc/codecs/wm8994.c:2087 wm8994_get_fll_config()
warn: missing break? reassigning 'fll->k'

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d1a0a299 10-May-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Support EFS mode for FLL

Later WM8994 devices support an enhanced accuracy FLL divisor mode called
EFS which allows more precise selection of fractional source to output
ratios. Support this on relevant devices.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4495e46f 30-Apr-2013 Dan Carpenter <dan.carpenter@oracle.com>

ASoC: wm8994: missing break in wm8994_aif3_hw_params()

The missing break here means that we always return early and the
function is a no-op.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# da445afe 12-Mar-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Remove duplicate revision cache

There's already a device revision stored in the core data structure,
don't duplicate it in the CODEC driver.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d3725761 29-Jan-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Restore AIFnCLK after reducing it for low clock rates

This helps to ensure a smooth startup when we restore.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 3cf956ee 20-Mar-2013 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Support constraining the maximum number of channels clocked

Some systems use the audio CODEC to clock a DAI with multiple data lines
in parallel, meaning that bit clocks are only required for a smaller number
of channels than data is sent for. In some cases providing the extra bit
clocks can take the other devices on the audio bus out of spec.

Support such systems by allowing a maximum number of channels to be
specified.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7a79e94e 07-Dec-2012 Bill Pemberton <wfp5p@virginia.edu>

ASoC: codecs: remove __dev* attributes

CONFIG_HOTPLUG is going away as an option. As result the __dev*
markings will be going away.

Remove use of __devinit, __devexit_p, __devinitdata, __devinitconst,
and __devexit.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 8afd0ef2 07-Dec-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix variable double use

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 98869f68 03-Dec-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Allow microphone identification callback to be overridden

Allow custom accessory identification mechanisms to make use of the MICDET
support in the device.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e874de43 02-Dec-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Check jack is inserted when handling mic IRQ

If we've got jack detection support then check that the jack is still
inserted when handling a mic IRQ in order to avoid transient reports
caused by shorts during the removal process as the two interrupts race
with each other.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 63dd5452 22-Nov-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Support custom accessory identification for WM1811A

Allow the user to override the accessory identification code with their
own implementation if the system provides an alternative method.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 78b76dbe 22-Nov-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Simplify button detection code

Currently the WM8994 driver allows the WM8958 microphone detection code to
be replaced in its entirety, providing a default implementation. This
doesn't actually reflect the needs of users well. They generally wish to
replace only the accessory identification parts of the algorithm (eg,
using an external GPIO to provide the equivalent of the JACKDET support in
the WM1811A).

In preparation for supporting these users better refactor the existing code
so that we have separate identification and button detection callbacks,
selecting between them rather than using the mic_detecting flag in the
existing callback. This also simplifies the code by introducing a more
explicit state machine for the detecting and button states.

In anticipation of future refactoring the callback is left in the signature
for wm8958_mic_detect(), it will be removed at a later stage.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f02b0de0 01-Oct-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Stop mic detection whenever we detect an open circuit

Jack detection will not do anything to help us detect a microphone when
there is a fault in the cable and the debounce we have is enough to avoid
getting an intermediate result so halt microphone detection when we detect
that one is not present.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 72222be3 28-Nov-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Use the same DCS codes for all WM1811 variants

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# d9dd4ada 08-Oct-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Use pdata cached in MFD driver

This is better style and facilitates implementation of device tree support
for the driver.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# cd22000a 24-Oct-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Lower AIFnCLK divisor when dropping to 32kHz

When lowering SYSCLK to 50kHz for accessory detection also lower the
AIFnCLK divisor to normalise the clocking configuration within the
device. This will not disrupt audio as we cannot support active audio
with such a low SYSCLK.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# ec8f53fb 01-Nov-2012 Masanari Iida <standby24x7@gmail.com>

ALSA: Fix typo in drivers sound

Correct spelling typo in debug messages within drivers/sound

Signed-off-by: Masanari Iida <standby24x7@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# 79748cdb 01-Oct-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Only enable extra BCLK cycles when required

Rather than always assuming the maximum possible BCLK rate will be
required generate BCLKs for stereo if either one or two channels is
enabled. In order to support this we also need to ensure that only
the relevant channels are enabled.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 6730049a 24-Oct-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Lower AIFnCLK divisor when dropping to 32kHz

When lowering SYSCLK to 50kHz for accessory detection also lower the
AIFnCLK divisor to normalise the clocking configuration within the
device. This will not disrupt audio as we cannot support active audio
with such a low SYSCLK.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f95be9d6 22-Aug-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Tune VMID power down sequence

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# a3a1d9d2 22-Aug-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Tune VMID power up sequence

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c0cc3f16 28-Sep-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Allow a delay between jack insertion and microphone detect

This can be used to provide some additional settling time to ensure that
we don't start microphone detection while the microphone pin is connected
to one of the headphone pins.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 52ca1138 23-Aug-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Update for new WM1811 variants

There are some new WM1811 variants distinguished by both revision and
cust_id which need slightly different handling.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 02e79476 21-Aug-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Allow configuration of MICBIAS power up delay via pdata

Sometimes the analogue circuitry connected to the microphone needs some
time to settle after power up. Allow systems to configure this delay in
the platform data, the driver will then insert the required delay during
power up of paths that involve the microphone.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 45a690f6 15-Aug-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Add bytes controls for DRC

If DRC coefficients are not configured via platform data then add bytes
controls for them instead so they can be configured by applications. This
is the normal means of controlling things like this for newer systems, we
maintain compatibility with platform data to avoid disruption to existing
systems.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 15676937 09-Aug-2012 Chris Rattray <crattray@opensource.wolfsonmicro.com>

ASoC: wm8994: Add missing dapm routes for WM8958 rev A

Signed-off-by: Chris Rattray <crattray@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d9f34df7 31-Jul-2012 Chris Rattray <crattray@opensource.wolfsonmicro.com>

ASoC: wm8994: enable mic and short detect debounce.

Signed-off-by: Chris Rattray <crattray@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7435d4ee 26-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix some indentation issues

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 99af79df 25-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Ensure we get a notification on startup for jackdet

Since jackdet only reports deltas it won't generate an interrupt on startup
when a jack is not present. This doesn't make a difference to userspace
but does mean we don't generate a notification via the internal notifier
chains. Fix that by scheduling a work to poll the chip after the clock is
enabled. Use an extremely large timeout since there's no urgency and we
don't want to report a false negative.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 8cb8e83b 25-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Move CODEC stored in private data into wm_hubs

Further wm_hubs code will use this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# fbfe6983 23-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Implement support for self-oscillation mode in the FLL

The FLLs in the WM8994 series devices can be started without any reference
being supplied, mainly for use in analogue bypass cases. Implement support
for this mode.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b8176627 24-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Hold runtime PM reference while handling mic and jack IRQs

Ensures that we don't interact badly with the power management framework,
especially in the cases where we're doing deferred work or we're using a
direct GPIO for these signals.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b8edf3e5 22-Jun-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Ensure there are enough BCLKs for four channels

Otherwise if someone tries to use all four channels on AIF1 with the
device in master mode we won't be able to clock out all the data.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# b4046d01 18-Jul-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Update micdet for irqdomain conversion

The conversion of the core driver to irqdomains means that we don't need
and irq_base to have working interrupts so use wm8994_request_irq() to
deal with looking up the interrupt number for the micdet IRQ.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 2974d6b1 26-Jun-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't suspend accessory detection

Leave it up to the machine driver to disable accessory detection if
desired, the common pattern is to have accessory detection be a wake
source.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 6cab3e1e 28-May-2012 Jaroslav Kysela <perex@perex.cz>

ASoC: wm8994: remove duplicate code

It seems that the code duplication was added at a merge operation.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>


# bfd37bb5 04-Jun-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Apply volume updates with clocks enabled

Volume updates may not be acted upon if there is no clock applied when
the volume update is written. Ensure this doesn't happen by writing out
registers with volume updates after we enable each of the clocks.

There are more registers updated than before as previously we were
relying on wm_hubs to set those for controls it manages.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# c8fdc1b5 04-Jun-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Ensure all AIFnCLK events are run from the _late variants

Ensure that all the actions get taken at appropriate times by calling the
_PRE and _POST events for the aifNclk_ev functions explicitly.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# 656baaeb 22-May-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: codecs: Refresh copyrights for Wolfson drivers

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c7f5f238 15-May-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix AIF2ADC power down

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# fdfc4f3e 09-May-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Use regmap directly for wm8994_mic_work

Make it clearer what context we're operating in.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e9b54de4 09-May-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Add debounce to wm8994 mic detection

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# cbd71f30 09-May-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix sparse warning due to use of 0 as NULL

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c340304d 26-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Factor out class W management

Since the analogue portions of the checks for class W are the same over
all the devices factor out these checks into wm_hubs and while we're at
it also use wm_hubs_dac_hp_direct() to enable class W optimisations on
more paths.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# af31a227 26-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Special case headphones for digital paths in more use cases

The optimisations which we can do with caching the headphone DCS result in
wm_hubs have only been enabled in cases where class W is enabled. However,
there are more use cases which can benefit from the cache, especially with
WM8994 series devices with their more advanced digital routing.

Rather than keying off the class W information from the CODECs have a
check in wm_hubs for a suitable path and use that to determine if we can
deploy our headphone optimisations.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 3a334ada 26-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Add trace showing wm8958_micd_set_rate()

This can be helpful to users when tuning their systems.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# fcdc4de7 26-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Allow rate configuration with custom mic callback

If a driver using a custom mic detection callback has provided a table
of mic detection rates via platform data then use it.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e9d9a968 26-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Tune debounce rates for jack detect mode

Use a slightly larger debounce when identifying accessory type and a
slightly smaller one when detecting buttons in response to user feedback
from large scale testing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e05854dd 24-Apr-2012 Kyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>

ASoC: wm8994: Make sure we disable FLL bypass when stopping the FLL

If FLL bypass is left enabled when we disable the CODEC then the output
clock will be left running which consumes a small amount of additional
current. Only enable bypass when there is an output.

Signed-off-by: Kyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c1a4ecd9 08-Apr-2012 Jesper Juhl <jj@chaosbits.net>

ASoC: wm8994: Delete trailing whitespace from sound/soc/codecs/wm8994.c

While reading through sound/soc/codecs/wm8994.c I noticed a fair
amount of trailing whitespace. This patch gets rid of it.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 1a38336b 12-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Improve sequencing of AIF channel enables

This ensures a clean startup of the channels, without this change some
use cases could result in issues in a small proportion of cases.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# 8c5b842b 17-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Keep AIF3 tristated when not in use

Since AIF3 shares clock signals with other audio interfaces in order to
ensure it doesn't drive undesirable clocks we need to tristate it. Rather
than forcing the machine driver to do so have the driver do this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 20dc24a9 04-Apr-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Implement FLL bypass support

Later WM8994 class devices can bypass the FLL from BCLK. Do this
automatically when the FLL input and output frequencies match up.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 34ff0f95 09-Apr-2012 Jesper Juhl <jj@chaosbits.net>

ASoC: wm8994: Don't test for NULL before release_firmware()

release_firmware() does its own NULL ptr testing, it's redundant to
also test before calling it.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 149c53b5 02-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't bother updating the jackdet mode needlessly

If we're not doing jackdet it's not needed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 1947dadf 30-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't bother lowering clock dividers inside idle AIFs

This increases the chances we'll manage to hit a partially configured
state on restart and the power savings are extremely small.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e413ba88 29-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't allow reconfiguration of FLL when it provides SYSCLK

Rather than trying to work around machine drivers which try to reprogram
the FLL while it is providing SYSCLK just return an error if they try.
This will avoid audio glitches during FLL reconfiguration, or at least
move the introduction of the glitches to the machine driver.

Since disabling the source for an active SYSCLK is not supported in the
first place systems shouldn't be doing this in the first place.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# ecd1732f 12-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't lock CODEC mutex to do DAPM sync

DAPM now has a DAPM-level lock which it manages itself so we don't need
to take the CODEC mutex to call DAPM any more. Also remove a redundant
call to snd_soc_dapm_sync(), jack reporting also triggers a DAPM sync.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e1660585 21-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Update WM8994 DCS calibration

Based on latest production information.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# 22f8d055 19-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Provide VMID mode control and fix default sequence

The optimal management of VMID depends on a number of factors which vary
dynamically at runtime, for example the connection to a system docking
station. In some circumstances it is desirable to keep VMID enabled all
the time, in others it is desirable to aggressively power it up and down.

Provide a callback allowing machine driver to configure either the normal
power up/down mode (WM8994_VMID_MODE_NORMAL) or to maintain VMID even
when idle (WM8994_VMID_MODE_FORCE). This callback, wm8994_vmid_mode(),
should be called with the CODEC lock.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 6f8270cc 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Add missing break in resume

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c986564b 12-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Prevent ABBA deadlock with CODEC and accdet mutexes

Currently we can the accdet mutex from within DAPM when updating the device
state which means we take accdet then the CODEC mutex but we also do the
locking the other way around when responding to the jackdet IRQ. Move all
the jackdet use of the CODEC mutex out of the accdet lock to avoid this.
Since all the DAPM interactions depend only on a single threaded IRQ this
is still serialised.

The locking improvements in 3.5 allow a better solution there.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4752a887 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Use audio mode for jack detection when system is active

When we are out of system sleep always use audio mode for jack detection
in order to avoid potential performance issues handing off between modes.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 1defde2a 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Factor out WM1811A detection mode setting

Push everything through one function for active use cases, should be
no practical effect.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 28e33269 02-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't bother updating the jackdet mode needlessly

If we're not doing jackdet it's not needed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# afaf1591 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Disable JACKDET when disabling detecton

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7d464b20 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Make sure we sync DAPM on WM8958 detection mode changes

Normally this will have no effect as we set detection up at system startup
before DAPM syncs take effect, this will only be useful if the system
enables and disables detection at runtime.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 67109cbe 29-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Disable cache of the DC servo calibration for WM1811

The WM1811 DC servo is able to run much faster than previous devices so
the benefit of skipping calibration is not useful.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b16db745 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Suppress noop updates of FLL K

Using snd_soc_write() means we always write to the register even if it
already contains the newly calculated value.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 2bc16ed8 03-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Push wm8994 private data allocation out into device probe

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 378ec0ca 01-Mar-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Disable debounce of jack detection on inserted jack

Don't debounce jack detection for inserted jacks, giving improved
responsiveness.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 62172f4a 29-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Remove stub of register access code

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b9e67e5e 28-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Make sure we don't have MICBIAS on during jackdet mode

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 462835e4 20-Jan-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

mfd/ASoC: Convert WM8994 driver to use regmap patches

Early revisions of several of the WM8994 variants have register updates
to improve performance. Move these over to using the regmap patch system
instead of open coding them in the audio driver. Since the regmap init
is done by the MFD the code is moved there.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>


# f7085641 21-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Move wm_hubs callback before we start ramping VMID

Allows the generic code to set up for that.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 07fb9d9e 21-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Support external capacitors on MICBIAS2 with jack detection

When an external capacitor is connected to MICBIAS2 on devices with
jack detection (which is not required but may be done in some systems)
then the loading may mean that better performance is obtained when
the microphone bias is enabled normally rather than using the low power
mode. Provide platform data allowing systems to indicate if they require
this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 55a27786 21-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Actively discharge idle MICBIAS with jack detect

This minimises the chance of any external capacitors that are fitted
being discharged into headphones as they insert.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 29fdc360 21-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Enable headphone startup mode 1 for WM1811 and WM8958

The latest recommendation for optimal performance.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5567d8c6 16-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Convert to use DAI widget routing rather than streams

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


# 65f01ef0 14-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Use slow start for VMID

Improves performance on power up.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# e85b26ce 11-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Actively discharge VMID when not in use

Ensure we're in a known state when we restart.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# cc6d5a8c 11-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: VMID management improvements

Raise the ramp time to 50ms to cover corner cases, use the startup bias
generator, explicitly reset the ramp circuit when complete and reorder
things all of which should improve performance somewhat for systems that
are sensitive to noise from VMID.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5f2f3890 08-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Improve single ended line output enable performance

The enable of the single ended line outputs on wm_hubs devices performs
better if the output is enabled prior to starting VMID. Since inactive
outputs are held at VMID anyway there is little cost to doing this for
unused outputs. Add callbacks into wm_hubs and keep track of which outputs
are really active so we can disable them once we're active.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# a7c4183b 07-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Disable line output discharge prior to ramping VMID

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f647e152 07-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Fix typo in VMID ramp setting

The VMID ramp rate is supposed to be 0x3, not 11b. Fix that.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# 87092e3c 06-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Bring WM8994 accessory detection up to date

Make the mechanism used for WM8994 more like that for WM1811 and WM8958:
provide the logic to distinguish between headphone and headset and hard
code the reporting of sensible SND_JACK values. Should integration with
other detection mechanisms be required we can add appropriate callbacks
(though some integrations should be able to use the subsystem ones).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 27060b3c 06-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Unsuspend the device while reading GPIO statuses

Otherwise we might get an error if the GPIO is configured as an input
since that makes the register volatile and a suspended device can't be
read from.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5fab5174 06-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: We don't need to runtime resume by default

This is the default state that the runtime PM infrastructure expects so
instead just kick the runtime PM core to suspend us if we're not doing
anything (as is default).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 839e5fad 03-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Don't bring up to STANDBY by default

In cases where we should enter STANDBY DAPM will power us up, otherwise
there is no need to power up and we can remain in OFF.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# db966f8a 05-Feb-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Enabling VMID should take a runtime PM reference

We can enable VMID independently of the bias in some use cases so we need
to ensure that the core device is powered up.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org


# 022658be 03-Feb-2012 Liam Girdwood <lrg@ti.com>

ASoC: core: Add support for DAI and machine kcontrols.

Currently ASoC can only add kcontrols using codec and platform component device
handles. It's also desirable to add kcontrols for DAIs (i.e. McBSP) and for
SoC card machine drivers too. This allows the kcontrol to have a direct handle to
the parent ASoC component DAI/SoC Card/Platform/Codec device and hence easily
get it's private data.

This change makes snd_soc_add_controls() static and wraps it in the folowing
calls (card and dai are new) :-

snd_soc_add_card_controls()
snd_soc_add_codec_controls()
snd_soc_add_dai_controls()
snd_soc_add_platform_controls()

This patch also does a lot of small mechanical changes in individual codec drivers
to replace snd_soc_add_controls() with snd_soc_add_codec_controls().

It also updates the McBSP DAI driver to use snd_soc_add_dai_controls().

Finally, it updates the existing machine drivers that register controls to either :-

1) Use snd_soc_add_card_controls() where no direct codec control is required.
2) Use snd_soc_add_codec_controls() where there is direct codec control.

In the case of 1) above we also update the machine drivers to get the correct
component data pointers from the kcontrol (rather than getting the machine pointer
via the codec pointer).

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


# f959dee9 31-Jan-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm_hubs: Push check for idle_bias_off out into drivers

For later wm_hubs devices we have much less need to keep the biases up
even when using single ended line outputs so flag idle_bias_off for
everything except the WM8993 and WM8994.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 67f97f5c 31-Jan-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Remove ASoC level register cache sync

Now we've switched over to regmap the ASoC level cache sync will be
ineffectual and potentially harmful as there is no longer an ASoC level
cache.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7c08b51f 26-Jan-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: wm8994: Report any low impedance accessory as a headphone

Report any accessory with a low impedance as a headphone, previously
anything other than a short or microphone would not be reported at all.
The most likely reason is a microphone with incorrect polarity.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 99b0292d 17-Jan-2012 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: 24 bits are significant on wm_hubs DAIs

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 1b39bf34 28-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Enable ASoC register map dump for some regmap CODECs

It's still useful to be able to poke around in the register map at
runtime.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# a421a0e4 29-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Remove unused label from wm8994 probe()

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# cae59c7b 25-Oct-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Remove WM8994 register cache

Now that the mfd is using the register map cache there's no need for the
CODEC driver to do any register cache management or any funny dances to
interact with the other drivers using the device so just remove the cache
initialisation and volatility information.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d9a7666f 23-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Remove ASoC-specific WM8994 I/O code

Just go directly to the regmap API, saving code and making integration
that bit more direct.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4105ab84 05-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Rely on core enabling the wm8994 with runtime PM

No need to do this in the driver now.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 87b86ade 13-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Mark WM8994 ADC muxes as virtual

Since they don't actually have power bits but do have events associated
with them it's important that we bootstrap their state properly which
making them virtual does.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 3631e8d4 02-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add missing err label

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 84b315ee 02-Dec-2011 Lars-Peter Clausen <lars@metafoo.de>

ASoC: Drop unused state parameter from CODEC suspend callback

The existence of this parameter is purely historical. None of the CODEC drivers
uses it and we always pass in the same value anyway, so it should be safe to
remove 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>


# 7270cebe 01-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Convert WM8994 to devm_kzalloc()

Still have a manual free in there for some realloc()ed memory as there's
no devm version of that.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# cd1707a9 01-Dec-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add platform data for WM8958/WM1811 microphone detection rates

Allow systems to override the default microphone detection rates using
platform data in case the settings are not suitable (eg, due to an
unusually noisy jack).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 52ac7ab2 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Ensure we reconfigure WM8958 microphone detection on rate changes

We don't need to rerun DAPM if the clock source is the same but we do
need to adjust the microphone detection rate in case we are moving from
an audio to a non-audio rate.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# af6b6fe4 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement support for WM1811A jack detection

The WM1811A features an advanced low power accessory detection subsystem
which allows the device to be maintained in a very low power state while
the system is idle without sacrificing any accessory detection features.

Implement software support for this, automatically managing the power
configuration of the device depending on the detected accessory.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 157a75e6 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Rename WM8994 detecting flag to mic_detecting

More specific and avoids confusion with a following change.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4585790d 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Allow more WM8958/WM1811 button levels with default handler

The WM8958 and WM1811 support detecting a range of buttons. Allow the
user to provide platform data enabling more of these levels without
having to write a custom detection handler.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 604533de 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Tune down active mode detection rate for WM8958 mic detection

Saves a little power.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 2a8a856d 23-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Don't use control_data to get struct wm8994

This will support refactoring to make use of the regmap API more directly
in the core.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# a1691343 30-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Provide debug log of accessory status on WM8958

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b00adf76 12-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Enhance default WM8958 microphone detection

Actively manage the detection rate for microphones with WM8958, providing
improved power consumption and maximising the benefit from the hardware
debounce.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 500fa30e 29-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Put WM8958 and WM1811 MICBIAS into bypass mode when no audio

When we don't have any active audio we can put the microphone biases into
bypass mode to save power at the expense of performance.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4cdf5e49 29-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Ensure SYSCLK is enabled for WM8958 accessory detection

Ensure SYSCLK is enabled while running accessory detection on WM8958.
It is always required so there is no sense in requiring machine drivers
to individually do this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# fc8e6e86 28-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Supply dcs_codes for newer WM1811 revisions

Based on initial data.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# fc07ecd8 28-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Error out if we can't generate a LRCLK at all for WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5bbcc3c0 23-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Convert CODEC drivers to module_platform_driver

Factors out a bit of boilerplate.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 85e7652d 23-Nov-2011 Lars-Peter Clausen <lars@metafoo.de>

ASoC: Constify snd_soc_dai_ops structs

Commit 1ee46ebd("ASoC: Make the DAI ops constant in the DAI structure")
introduced the possibility to have constant DAI ops structures, yet this is
barley used in both existing drivers and also new drivers being submitted,
although none of them modifies its DAI ops structure. The later is not
surprising since existing drivers are often used as templates for new drivers.
So this patch just constifies all existing snd_soc_dai_ops structs to eliminate
the issue altogether.

The patch was generated with the following coccinelle semantic patch:
// <smpl>
@@
identifier ops;
@@
-struct snd_soc_dai_ops ops =
+const struct snd_soc_dai_ops ops =
{ ... };
// </smpl>

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 19940b3d 19-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Ensure we get an impedence reported for WM8958 jack detect

Occasionally we may see an accessory reported before we have a stable
impedance for the accessory. If this happens then reread the status in
order to ensure that the handler can take the appropriate action for the
status change.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5a3ad6bd 04-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Don't use wm8994->control_data when requesting IRQs

The field is no longer initialised so this will crash if running on
wm8958.

Reported-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 8eeea521 04-Nov-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Don't use wm8994->control_data in wm8994_readable_register()

The field is no longer initialised so this will crash if running on
wm8958.

Reported-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 35024f49 19-Oct-2011 Axel Lin <axel.lin@gmail.com>

ASoC: wm8994: Use SND_SOC_DAPM_AIF_OUT for AIF3 Capture

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 6473a148 17-Oct-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Update WM1811 DCS codes for latest evaluation results

Evaluation of larger quantities of material has provided new DCS codes
values to be applied for WM1811.

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


# 48df93d4 11-Oct-2011 Axel Lin <axel.lin@gmail.com>

ASoC: Remove impossible case from wm8994_hw_params

We set hw_params callback for wm8994_aif3_dai_ops to wm8994_aif3_hw_params.
Thus no need to check wm8994-aif3 in wm8994_hw_params.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c527e6aa 04-Oct-2011 Axel Lin <axel.lin@gmail.com>

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


# 04f45c49 04-Oct-2011 Axel Lin <axel.lin@gmail.com>

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>


# 81204c84 24-May-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

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>


# 60e3ee62 17-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix backport of WM8994 thermal warning

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>


# f0b182b0 15-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994 thermal warning and shutdown interrupt support

ALSA doesn't really have good mechanisms for dealing with these so we just
log them - the hardware already has automatic shutdown support.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 1ddc07d0 15-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8958 noise gate support

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d09f3ecf 14-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Disable pulls on WM8994 AIF2 when starting it

Pull control is availalbe for WM8994 AIF2, generally disabled as part of
the GPIO configuration in order to save power after system startup. As on
newer devices in the series there is no GPIO functionality on these pins
this will happen less naturally so have the driver disable the pulls as the
AIF is probed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 4b7ed83a 10-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Disable WM8994 VMID for digital only paths

On WM8994 class devices only the analogue portions of the CODEC require
VMID so when running digital only paths we can leave VMID disabled.
On some earlier devices the FLL uses VMID so we don't use DAPM reference
counting alone, we maintain an internal reference count which is also
enabled and disabled by the FLL startup.

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


# 4e04adaf 15-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add VMID widget for wm_hubs devices

Currently this does not actually do anything, it is being introduced in
order to facilitate additional power optimisations for current generation
devices.

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


# 280ec8b7 10-Aug-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add missing break in WM8994 probe

This error would have no effect on current silicon revisions, the fall
through case has the same behaviour.

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


# 4537c4e7 31-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support separate left and right channel dcs_codes values

Some devices can have performance optimized by setting different offsets
for left and right channels.

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


# 79ef0abc 31-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement new DC servo readback mode for late WM8994 revisions

Later WM8994 devices implement a new DC servo readback mode with the
register used to access the offset moved to register 0x59. Implement
support for this and enable it on the appropriate devices.

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


# b793eb60 14-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Correct WM8994 MICBIAS supply widget hookup

The WM8994 and WM8958 series of devices have two MICBIAS supplies rather
than one, the current widget actually manages the microphone detection
control register bit (which is managed separately by the relevant API).

Fix this, hooking the relevant supplies up to the MICBIAS1 and MICBIAS2
widgets.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 7d02173c 14-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Reduce power consumption for idle DAIs in WM8994

If DAIs are idle but their clocks are in use for some reason (eg, as
SYSCLK or for accessory detect) then set the clock dividers to the maximum
to reduce slightly the power consumption of the unclocked circuits.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f0f5039c 15-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Handle failed WM8994 FLL lock waits

Try the completion before we start the FLL so that if an interrupt was
delayed long enough for us to miss it we don't wait for the completion
it signalled.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b35e160a 15-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix shift in WM8958 accessory detection default implementation

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 3b1af3f8 13-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Log WM8994 FIFO errors from the interrupt

We should spot them anyway on state changes but logging them gives us
better time information about when the misconfiguration happened.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f05bdb8b 13-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Don't warn on low WM8994/58 AIFnCLKs

We can have valid but very low clocks in accessory detection modes.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# c7ebf932 12-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Use WM8994 FLL lock interrupt

If we have interrupts then wait for the FLL lock interrupt rather than
using dead reckoning when waiting for the FLL to start.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b30ead5f 12-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Hook up DC servo completion IRQ for WM8994 and WM8958

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b70a51ba 29-Jun-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Use late enable handling for direct voice, speaker and headphone

This ensures appropriate clocking for bypass paths to speaker and
headphone and direct voice paths on affected revisions.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 5b739670 06-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Conditionalize the enable of WM8994 ADC TDM mode

Future devices will not benefit from this.

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


# 8e9ddf81 01-Jul-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Ensure we delay long enough for WM8994 FLL to lock when starting

This delay is very conservative.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org


# f9acf9fe 07-Jun-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Trigger wm_hubs series update startup off a separate flag

Allowing the two to be used independently.

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


# 9d03545d 13-May-2011 Jarkko Nikula <jhnikula@gmail.com>

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>


# ca629928 11-May-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

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>


# baa81603 05-Apr-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Set left channel volume update bits for WM8994

Ensures that we apply volume updates that don't affect the right channel.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 25985edc 30-Mar-2011 Lucas De Marchi <lucas.demarchi@profusion.mobi>

Fix common misspellings

Fixes generated by 'codespell' and manually reviewed.

Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>


# 31215871 17-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8958 enhanced EQ support

DSP2 in the WM8958 can be used to support an upgraded EQ for use in
demanding applications.

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


# 09e10d7f 16-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8958 VSS support

With appropriate firmware the WM8958 can support Virtual Surround Sound or
VSS, widening the stereo audio image for improved user experience. Enable
support for this mode of operation when the appropriate firmware can be
loaded at runtime.

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


# fbbf5920 11-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support download of WM8958 MBC firmware

Allow userspace to supply an update to the ROM firmware. The firmware
request is non-blocking so userspace can load the firmware at its
leisure without delaying startup, the driver will begin using the
firmware the next time MBC is started after it has been supplied.

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


# af9af866 16-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Mark WM8958 DSP2 registers readable

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# c6b7b570 11-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Handle startup sequencing of WM8958 DSP2 with deferred clocking

The DSP2 startup requires that the clock be enable so if we've deferred
clock startup we need to defer DSP2 startup

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# f701a2e5 09-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Factor WM8958 DSP2 handling into separate file

DSP2 on the WM8958 has a default ROM which provides a multi-band
compressor for enhanced performance on mobile devices but can also
support runtime download of alternative firmware. In preparation for
more exploiting this functionality refactor the code to split the
handling of DSP2 into a separate file.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 780e2806 11-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Treat WM8958 revision A as WM8994 revision D

The first WM8958 revision requires similar treatment.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 7c2de633 09-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Ensure WM8958 gets all WM8994 late revision widgets

Without this fix the driver won't instantiate properly on relevant
devices.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org


# 0627bd25 09-Mar-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix typo in late revision WM8994 DAC2R name

Without this fix the driver won't instantiate properly on relevant
devices.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org


# 8959c910 28-Feb-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Ensure MICBIAS is provided with a clock

The patch 'ASoC: WM8994: Improve Playback Robustness' did not handle
this case properly.

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


# b462c6e6 28-Feb-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Ensure MICBIAS is provided with a clock

The patch 'ASoC: WM8994: Improve Playback Robustness' did not handle
this case properly.

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


# 04d28681 01-Mar-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Ensure late enable events are processed for the ADCs

Ensure that the ADCs are provided with a clock as the previous patch
"ASoC: WM8994: Improve playback robustness" did not handle this case
properly.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# a3cff81a 28-Feb-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Don't disable the AIF[1|2]CLK_ENA unconditionaly

Since we began using the late clock disable functionality, ensure that
we don't disable the clock if any of the ADC or DAC paths are still
enabled. This happens when we have simultaneous playback and recording.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 864c4bd2 21-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Simplify default WM8958 jack detection code

The default WM8958 jack detection handler implements a full set of buttons
and also support for video detection. Support for multi-button jacks is
fairly system specific and will usually require some tuning for headsets
so simplify the implementation to only report a simple short to ground
button, leaving multi-button headsets to be handled by system specific
code.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 48e028ec 21-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support configuration of WM8958 microphone bias analogue parameters

The WM8958 has a different microphone bias architecture to WM8994 so needs
different configuration to WM8994. Support this in platform data.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 9b7c525d 17-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support WM8958 direct microphone detection IRQ

Allow direct routing of the WM8958 microphone detection signal to a GPIO
to be used, saving the need to demux the interrupt.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 406e56c9 21-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix WM8958 default microphone detection argument ordering

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 4a8d929d 16-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix missing space in WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# c52fd021 11-Feb-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Improve playback robustness

On WM8994 revision D and earlier ensure proper playback robustness
as some rare use cases can trigger issues.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 173efa09 11-Feb-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: WM8994: Improve robustness in some use cases

Ensure that on disabling certain registers such as AIF1DAC1L,
AIF1DAC1R etc. the AIF1CLK and AIF2CLK remain enabled. Similarly
when enabling those registers, AIF1CLK and AIF2CLK will remain
disabled.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# 6ed8f148 03-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Improve WM8994 digital power sequencing

On WM8994 revision D and earlier ensure optimal sequencing with
simultaneous usage of AIF1 and AIF2 by tying the signals together
so if paths through both are connected the streams are started
simultaneously.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Cc: stable@kernel.org


# 7f94de48 03-Feb-2011 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Create an AIF1ADCDAT signal widget to match AIF2

Due to the different routing for AIF1 and AIF2 we weren't using a
single widget to represent the ADCDAT signal. For consistency add
one.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Cc: stable@kernel.org


# 78b3fb46 19-Jan-2011 Qiao Zhou <zhouqiao@marvell.com>

ASoC: WM8994: fix wrong value in tristate function

fix wrong value in wm8994_set_tristate func. when updating reg bits,
it should use "value", not "reg".

Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org


# d4754ec9 12-Jan-2011 Dimitris Papastamos <dp@opensource.wolfsonmicro.com>

ASoC: Update users of readable_register()/volatile_register()

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


# 7116f452 29-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Yet more x86 tracepoint workarounds

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 2bbb5d66 04-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Trace Wolfson jack detection IRQs

Add jack detection interrupt trace to Wolfson CODEC drivers.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 458350b3 20-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix WM8994/58 3D stereo control definitions

Cut'n'paste in the register names.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 49db7e7b 08-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix widgets for WM8994/58 AIF2 source control

The compiler really ought to have been warning about unreferenced
variables...

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 154b26aa 08-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994/58 DAC and ADC oversampling control

The oversampling rate of the DAC and ADC can be controlled to optimise
for either low power consumption or maximum performance.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 146fd574 07-Dec-2010 Uk Kim <w0806.kim@samsung.com>

ASoC: Add ADC high pass filter support to WM8994

Signed-off-by: Uk Kim <w0806.kim@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b1e43d93 07-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support WM8994 mono AIF configurations

The WM8994 supports mono signals - enable this in the driver. With DSP
mode an automatic data channel selector is available, activate this
when in mono mode.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 4514e899 03-Dec-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: When disabling WM8994 FLL force a source selection

When we disable the WM8994 FLL code path sharing means that we end up
writing out a configuration. Currently this is the currently active
input and output frequency (which causes snd_soc_update_bits() to
suppress actual writes both immediately and in the common case where
we reenable the same configuration later) but we allow machine drivers
to pass through a source of zero. Since the register values written
are one less than the source constants this causes corruption of other
bitfields in the register.

Fix this by using the most recently configured FLL source when none is
provided.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Cc: stable@kernel.org


# 8bc3c2c2 30-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Tune performance of WM8958 revision A

Update some of the default configuration for the device to improve
the performance.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 131d8106 30-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Allow user-specified WM8958 multiband compressor configurations

The paramters of the WM8958 multiband compressor can be tuned by the
user for their system using a graphical configuration tool on the host.
Allow the user to specify a set of such paramters in platform data and
select between them at runtime.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# b2822a8c 30-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Correct event flags for WM8958 AIF DACs

We need a post notification as we need to shut down the MBC after the
data stops flowing rather than before.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 39fb51a1 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement runtime PM for WM8994/58

This allows us to communicate our power management state back to the
parent device, allowing it to do a full power down when the device is
idle.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 2e19b0c8 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Enable rbtree compression for WM8994/58 register cache

The WM8994 and WM8958 register map is relatively sparse so benefits
from compression. The rbtree compression gives better results than
LZO for both memory and CPU consumption on a map as sparse as this.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# ca9aef50 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Convert WM8994 to use soc-cache.c cache functions

In the process we convert the driver to read registers one at a time
when initialising the cache. This has the effect of working around
limitations in the sizes of I2C transactions which can be done by some
CPUs. Due to the sparseness of the register map the overhead from this
should be minimual unless I2C transactions are very expensive to start.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 821edd2f 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8958 microphone detection support

The WM8958 contains an advanced accessory detection feature which allows
detection of up to seven different impedence levels on the microphone
bias output, including detection of video outputs. Since some of the
more involved accessory interfaces may involve noticable interactions
with external components a simple detection scheme is provided by
default with the option to provide custom handling of accessory detect.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# d6addcc9 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8958 Multi-band compressor support

The WM8958 features a multi-band compressor which can be enabled on
any of the AIF inputs. The MBC allows different gains to be applied to
differnt audio bands, providing an improvement in perceived loudness
of the signal by avoiding overdriving the output transducers. This
patch enables support for the MBC.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# c4431df0 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement support for enhanced AIF3 on WM8958

Additional audio routing options are available on the WM8958 audio
interface 3. Add support for these.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 3a423157 26-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Initial WM8958 audio configuration

The WM8958 is a WM8994 derivative. This patch merely ensures that some
revision specific configuration for WM8994 is not enabled on WM8994,
additional patches will add support for the new features introduced on
the WM8958.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 24fb2b11 23-Nov-2010 Axel Lin <axel.lin@gmail.com>

ASoC: wm8994 - fix memory leaks

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# eba19fdd 19-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Restore WM8994 volatile and readable register operations

They went AWOL during the multi-component merge.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 505fb824 21-Nov-2010 Jarkko Nikula <jhnikula@gmail.com>

ASoC: Do not include soc-dapm.h

There is no need to include soc-dapm.h since soc.h includes it.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7b306dae 16-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Move WM8994 read/write access data into separate file

Makes the WM8994 driver file itself substantially smaller.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 96b101ef 18-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Provide ADC left/right channel source selection on WM8994

Allow the application to choose if the ADC data presented on the left
and right channels is sourced from the internal left or right channel.
This allows a mono recording to be presented as stereo on the external
bus.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 11e713a0 16-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix register cache setup WM8994 for multi-component

During the multi-component conversion the WM8994 register cache init
got lost.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# ce6120cc 05-Nov-2010 Liam Girdwood <lrg@slimlogic.co.uk>

ASoC: Decouple DAPM from CODECs

Decoupling Dynamic Audio Power Management (DAPM) from codec devices is
required when developing ASoC further. Such as for other ASoC components to
have DAPM widgets or when extending DAPM to handle cross-device paths.

This patch decouples DAPM related variables from struct snd_soc_codec and
moves them to new struct snd_soc_dapm_context that is used to encapsulate
DAPM context of a device. ASoC core and API of DAPM functions are modified
to use DAPM context instead of codec.

This patch does not change current functionality and a large part of changes
come because of structure and internal API changes.

Core implementation is from Liam Girdwood <lrg@slimlogic.co.uk> with some
minor core changes, codecs and machine driver conversions from
Jarkko Nikula <jhnikula@gmail.com>.

Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Manuel Lauss <manuel.lauss@googlemail.com>
Cc: Mike Frysinger <vapier.adi@gmail.com>
Cc: Cliff Cai <cliff.cai@analog.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Ryan Mallon <ryan@bluewatersys.com>
Cc: Timur Tabi <timur@freescale.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org>
Cc: Wan ZongShun <mcuos.com@gmail.com>
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Jassi Brar <jassi.brar@samsung.com>
Cc: Daniel Gloeckner <dg@emlix.com>
Cc: Kuninori Morimoto <morimoto.kuninori@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7b0f42b5 03-Nov-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Remove register write trace from WM8994

We now have trace in the ASoC core so we don't need to our own trace in
the driver.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# fec6dd83 27-Oct-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Store DC offset correction for wm_hubs devices in class W mode

Providing the analogue configuration of the output path remains the same
the DC offset corrected by the DC servo will remain identical so we can
skip the callibration, reducing the startup time for the headphone output.
Implement this for the wm_hubs devices as has been done for several other
CODECs.

Don't do this if we have any analogue paths enabled since offsets may be
being introduced by the analogue paths which could vary outside the
control of the driver.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# c14c05c1 13-Oct-2010 Joe Perches <joe@perches.com>

ASoC: Remove unused vol field from WM8994 access mask table

Remove unused vol from struct access_mask

Reduces object size ~3kb.

$ size sound/soc/codecs/wm8994.o*
text data bss dec hex filename
40727 4384 4480 49591 c1b7 sound/soc/codecs/wm8994.o.new
43879 4384 4480 52743 ce07 sound/soc/codecs/wm8994.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 8c7f78b3 12-Oct-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Restore DAI ID specification for WM8994

WM8994 relies on the DAIs having IDs that match the AIF numbers.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 5ab230a7 06-Sep-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Fix cut'n'paste comment in WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 3079aed5 31-Aug-2010 Ian Lartey <ian@opensource.wolfsonmicro.com>

ASoC: Added a missing 32-bit PCM format, to the wm8994 codec.

Signed-off-by: Ian Lartey <ian@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# f554885f 31-Aug-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994 DAC data source muxes

Allow selection of the channel used for input to the AIFnDAC signals.
This isn't integrated into DAPM since we treat the data as a single
mono channel until just beyond this selection so it ends up having
no visible effect on the routing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 7d83d213 23-Aug-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Log WM8994 separate ADC LRCLKs every time we configure

This makes it that little bit easier to spot the diagnostics in the
logs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# b6b05691 12-Aug-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Only tweak WM8994 chip configuration on devices up to rev D

Any subsequent revisions will have these configuration changes applied
by default.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 0c17b393 11-Aug-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Optimise DSP performance for WM8994

Change the chip defaults to optimise performance of some of the DSP
functionality.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# f0fba2ad 17-Mar-2010 Liam Girdwood <lrg@slimlogic.co.uk>

ASoC: multi-component - ASoC Multi-Component Support

This patch extends the ASoC API to allow sound cards to have more than one
CODEC and more than one platform DMA controller. This is achieved by dividing
some current ASoC structures that contain both driver data and device data into
structures that only either contain device data or driver data. i.e.

struct snd_soc_codec ---> struct snd_soc_codec (device data)
+-> struct snd_soc_codec_driver (driver data)

struct snd_soc_platform ---> struct snd_soc_platform (device data)
+-> struct snd_soc_platform_driver (driver data)

struct snd_soc_dai ---> struct snd_soc_dai (device data)
+-> struct snd_soc_dai_driver (driver data)

struct snd_soc_device ---> deleted

This now allows ASoC to be more tightly aligned with the Linux driver model and
also means that every ASoC codec, platform and (platform) DAI is a kernel
device. ASoC component private data is now stored as device private data.

The ASoC sound card struct snd_soc_card has also been updated to store lists
of it's components rather than a pointer to a codec and platform. The PCM
runtime struct soc_pcm_runtime now has pointers to all its components.

This patch adds DAPM support for ASoC multi-component and removes struct
snd_soc_socdev from DAPM core. All DAPM calls are now made on a card, codec
or runtime PCM level basis rather than using snd_soc_socdev.

Other notable multi-component changes:-

* Stream operations now de-reference less structures.
* close_delayed work() now runs on a DAI basis rather than looping all DAIs
in a card.
* PM suspend()/resume() operations can now handle N CODECs and Platforms
per sound card.
* Added soc_bind_dai_link() to bind the component devices to the sound card.
* Added soc_dai_link_probe() and soc_dai_link_remove() to probe and remove
DAI link components.
* sysfs entries can now be registered per component per card.
* snd_soc_new_pcms() functionailty rolled into dai_link_probe().
* snd_soc_register_codec() now does all the codec list and mutex init.

This patch changes the probe() and remove() of the CODEC drivers as follows:-

o Make CODEC driver a platform driver
o Moved all struct snd_soc_codec list, mutex, etc initialiasation to core.
o Removed all static codec pointers (drivers now support > 1 codec dev)
o snd_soc_register_pcms() now done by core.
o snd_soc_register_dai() folded into snd_soc_register_codec().

CS4270 portions:
Acked-by: Timur Tabi <timur@freescale.com>

Some TLV320aic23 and Cirrus platform fixes.
Signed-off-by: Ryan Mallon <ryan@bluewatersys.com>

TI CODEC and OMAP fixes
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>

Samsung platform and misc fixes :-
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Seungwhan Youn <sw.youn@samsung.com>

MPC8610 and PPC fixes.
Signed-off-by: Timur Tabi <timur@freescale.com>

i.MX fixes and some core fixes.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>

J4740 platform fixes:-
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

CC: Tony Lindgren <tony@atomide.com>
CC: Nicolas Ferre <nicolas.ferre@atmel.com>
CC: Kevin Hilman <khilman@deeprootsystems.com>
CC: Sascha Hauer <s.hauer@pengutronix.de>
CC: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC: Kuninori Morimoto <morimoto.kuninori@renesas.com>
CC: Daniel Gloeckner <dg@emlix.com>
CC: Manuel Lauss <mano@roarinelk.homelinux.net>
CC: Mike Frysinger <vapier.adi@gmail.com>
CC: Arnaud Patard <apatard@mandriva.com>
CC: Wan ZongShun <mcuos.com@gmail.com>

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>


# d1ce6b20 20-Jul-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Unconditionally enable WM8994 AIF1ADC TDM mode

AIF1ADC TDM mode has no effect other than causing the ADCDAT line to
be tristated rather than driven low on clock cycles where there is no
data to be transmitted. If the clock cycle is idle then there should
be no devices using the data so tristating should have no adverse
effects.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# a3257ba8 19-Jul-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994 AIF1ADC2 paths

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 66b47fdb 07-Jul-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994 OPCLK support

The WM8994 can output a clock derived from its internal SYSCLK, called
OPCLK. The rate can be selected as a sysclk, with a division from the
SYSCLK rate specified (multiplied by 10 since a division of 5.5 is
supported) and the clock can be disabled by specifying a divisor of
zero.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# e88ff1e6 08-Jul-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Include WM8994 GPIO and interrupt registers in codec_reg

Very handy for debug.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 6a2f1ee1 10-May-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Don't restart unconfigured WM8994 FLLs

If the FLL is not configured attempting to resume it will produce a
warning message so skip the resume.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# fd5722e5 10-May-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add register write logging for WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 5e5e2bef 24-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Warn on low WM8994 AIFCLK

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 7add84aa 21-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Allow unspecified source when stopping WM8994 FLLs

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# ee839a21 19-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Tone down debugging for WM8994 class W

It's a little verbose during path changes.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 7d48a6ac 19-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Set full range of WM8994 FLL Fratio values

Use all the available Fratio values when configuring the WM8994 FLL, not
just 0 and 3, following more complete characterisation of the device
performance.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 136ff2a2 19-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support FLL input clock selection on WM8994

The WM8994 FLL can be clocked from one of four inputs, the two MCLKs and
the LRCLK and BCLK of the AIF associated with the FLL. Allow all four
inputs to be used rather than defaulting to MCLK1.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# b2c812e2 14-Apr-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add indirection for CODEC private data

One of the features of the multi CODEC work is that it embeds a struct
device in the CODEC to provide diagnostics via a sysfs class rather than
via the device tree, at which point it's much better to use the struct
device private data rather than having two places to store it. Provide
an accessor function to allow this change to be made more easily, and
update all the CODEC drivers are updated.

To ensure use of the accessor the private data structure member is
renamed, meaning that if code developed with older an older core that
still uses private_data is merged it will fail to build.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 88766984 29-Mar-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement interrupt based WM8994 microphone detection

Support interrupt based microphone bias detection. The WM8994 has two
microphone bias supplies, with detection supported on both. Detection
using GPIOs together with the standard GPIO based jack framework is
already supported via the platform data for the WM8994 core driver.

Note that as well as the microphone bias itself the system clock and
whichever AIF clock is supplying the system clock will need to be
enabled for detection to function.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# d522ffbf 30-Mar-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Only do WM8994 bias off transition from standby

Otherwise we may try to power down multiple times when the using
idle bias off and the driver is removed.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 8437f700 29-Mar-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Support second DC servo readback method for wm_hubs

More recent Wolfson hubs devices add the ability to read back the DC
servo calibration information from the register used to write offsets,
and later still ones remove the old readback registers. Add support
for the new scheme, and use it for WM8994 device revisions that
support it.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 5a0e3ad6 24-Mar-2010 Tejun Heo <tj@kernel.org>

include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h

percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files. percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.

percpu.h -> slab.h dependency is about to be removed. Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability. As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.

http://userweb.kernel.org/~tj/misc/slabh-sweep.py

The script does the followings.

* Scan files for gfp and slab usages and update includes such that
only the necessary includes are there. ie. if only gfp is used,
gfp.h, if slab is used, slab.h.

* When the script inserts a new include, it looks at the include
blocks and try to put the new include such that its order conforms
to its surrounding. It's put in the include block which contains
core kernel includes, in the same order that the rest are ordered -
alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
doesn't seem to be any matching order.

* If the script can't find a place to put a new include (mostly
because the file doesn't have fitting include block), it prints out
an error message indicating which .h file needs to be added to the
file.

The conversion was done in the following steps.

1. The initial automatic conversion of all .c files updated slightly
over 4000 files, deleting around 700 includes and adding ~480 gfp.h
and ~3000 slab.h inclusions. The script emitted errors for ~400
files.

2. Each error was manually checked. Some didn't need the inclusion,
some needed manual addition while adding it to implementation .h or
embedding .c file was more appropriate for others. This step added
inclusions to around 150 files.

3. The script was run again and the output was compared to the edits
from #2 to make sure no file was left behind.

4. Several build tests were done and a couple of problems were fixed.
e.g. lib/decompress_*.c used malloc/free() wrappers around slab
APIs requiring slab.h to be added manually.

5. The script was run on all .h files but without automatically
editing them as sprinkling gfp.h and slab.h inclusions around .h
files could easily lead to inclusion dependency hell. Most gfp.h
inclusion directives were ignored as stuff from gfp.h was usually
wildly available and often used in preprocessor macros. Each
slab.h inclusion directive was examined and added manually as
necessary.

6. percpu.h was updated not to include slab.h.

7. Build test were done on the following configurations and failures
were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
distributed build env didn't work with gcov compiles) and a few
more options had to be turned off depending on archs to make things
build (like ipr on powerpc/64 which failed due to missing writeq).

* x86 and x86_64 UP and SMP allmodconfig and a custom test config.
* powerpc and powerpc64 SMP allmodconfig
* sparc and sparc64 SMP allmodconfig
* ia64 SMP allmodconfig
* s390 SMP allmodconfig
* alpha SMP allmodconfig
* um on x86_64 SMP allmodconfig

8. percpu.h modifications were reverted so that it could be applied as
a separate patch and serve as bisection point.

Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.

Signed-off-by: Tejun Heo <tj@kernel.org>
Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>


# a8462bde 24-Mar-2010 Dan Carpenter <error27@gmail.com>

ASoC: wm8994: playback => capture

Sparse caught that initialize "playback" two times instead of
initializing "capture".

Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 778a76e2 22-Mar-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Implement WM8994 DAI tristate support

This also adds the first DAI operation for AIF3 so fill out the ID and
the ops for that too.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>


# 07cd8ada 02-Feb-2010 Joonyoung Shim <jy0922.shim@samsung.com>

ASoC: Fix BCLK calculation of WM8994

This fixes BCLK calculation and removes unnecessary check code.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>


# 9e6e96a1 29-Jan-2010 Mark Brown <broonie@opensource.wolfsonmicro.com>

ASoC: Add WM8994 CODEC driver

The WM8994 is a highly integrated ultra-low power hi-fi audio subsystem
designed for smartphones and other portable devices rich in multimedia
features. It provides advanced digital mixing facilities enabling low
power high quality interconnection of CPU, baseband and other audio
sources through flexible digital and analogue routing, and integrates
a class W headphone driver and stereo class D speaker drivers.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>