* [PATCH 0/8] ASoC updates
@ 2008-10-08 9:36 Mark Brown
2008-10-08 9:37 ` [PATCH 1/8] ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec Mark Brown
2008-10-08 9:49 ` [PATCH 0/8] ASoC updates Takashi Iwai
0 siblings, 2 replies; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:36 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
The following changes since commit 691ac84a77b1aebb7e09b4924b4b9c07a0f4f66a:
Takashi Iwai (1):
Merge branch 'asoc-fixes' into topic/asoc
are available in the git repository at:
git://opensource.wolfsonmicro.com/linux-2.6-asoc for-tiwai
This is all 2.6.28ish material.
Arun KS (1):
ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec
Jarkko Nikula (2):
ASoC: tlv320aic3x: Use uniform tlv320aic naming
ASoC: Remove unused AUDIO_NAME define from codec drivers
Mark Brown (4):
ASoC: Add WM8753 SPI support
ASoC: Add WM8510 SPI support
ASoC: Implement WM8510 bias level control
ASoC: Make WM8510 microphone input a DAPM mixer
Richard Zhao (1):
ALSA: ASoC: add new param mux to dapm_mux_update_power
sound/soc/codecs/ak4535.c | 1 -
sound/soc/codecs/ssm2602.c | 1 -
sound/soc/codecs/tlv320aic23.c | 54 ++++++++++++++++++--
sound/soc/codecs/tlv320aic3x.c | 5 +-
sound/soc/codecs/uda1380.c | 1 -
sound/soc/codecs/wm8510.c | 109 ++++++++++++++++++++++++++++++++++-----
sound/soc/codecs/wm8510.h | 1 +
sound/soc/codecs/wm8580.c | 1 -
sound/soc/codecs/wm8731.c | 1 -
sound/soc/codecs/wm8750.c | 1 -
sound/soc/codecs/wm8753.c | 72 +++++++++++++++++++++++++-
sound/soc/codecs/wm8753.h | 1 +
sound/soc/codecs/wm8971.c | 1 -
sound/soc/codecs/wm8990.c | 1 -
sound/soc/soc-dapm.c | 8 ++--
15 files changed, 221 insertions(+), 37 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/8] ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec
2008-10-08 9:36 [PATCH 0/8] ASoC updates Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 2/8] ASoC: Add WM8753 SPI support Mark Brown
2008-10-08 9:49 ` [PATCH 0/8] ASoC updates Takashi Iwai
1 sibling, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Arun KS
From: Arun KS <arunks@mistralsolutions.com>
Replaces SOC_ENUM with custom SOC_SINGLE_TLV for Sidetone volume
Signed-off-by: Arun KS <arunks@mistralsolutions.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/tlv320aic23.c | 53 +++++++++++++++++++++++++++++++++++++---
1 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index c2d35e9..bb7cfb8 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -113,7 +113,6 @@ static int tlv320aic23_write(struct snd_soc_codec *codec, unsigned int reg,
static const char *rec_src_text[] = { "Line", "Mic" };
static const char *deemph_text[] = {"None", "32Khz", "44.1Khz", "48Khz"};
-static const char *sidetone_text[] = {"-6db", "-9db", "-12db", "-18db", "0db"};
static const struct soc_enum rec_src_enum =
SOC_ENUM_SINGLE(TLV320AIC23_ANLG, 2, 2, rec_src_text);
@@ -125,11 +124,56 @@ static const struct soc_enum tlv320aic23_rec_src =
SOC_ENUM_SINGLE(TLV320AIC23_ANLG, 2, 2, rec_src_text);
static const struct soc_enum tlv320aic23_deemph =
SOC_ENUM_SINGLE(TLV320AIC23_DIGT, 1, 4, deemph_text);
-static const struct soc_enum tlv320aic23_sidetone =
- SOC_ENUM_SINGLE(TLV320AIC23_ANLG, 6, 5, sidetone_text);
static const DECLARE_TLV_DB_SCALE(out_gain_tlv, -12100, 100, 0);
static const DECLARE_TLV_DB_SCALE(input_gain_tlv, -1725, 75, 0);
+static const DECLARE_TLV_DB_SCALE(sidetone_vol_tlv, -1800, 300, 0);
+
+static int snd_soc_tlv320aic23_put_volsw(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ u16 val, reg;
+
+ val = (ucontrol->value.integer.value[0] & 0x07);
+
+ /* linear conversion to userspace
+ * 000 = -6db
+ * 001 = -9db
+ * 010 = -12db
+ * 011 = -18db (Min)
+ * 100 = 0db (Max)
+ */
+ val = (val >= 4) ? 4 : (3 - val);
+
+ reg = tlv320aic23_read_reg_cache(codec, TLV320AIC23_ANLG) & (~0x1C0);
+ tlv320aic23_write(codec, TLV320AIC23_ANLG, reg | (val << 6));
+
+ return 0;
+}
+
+static int snd_soc_tlv320aic23_get_volsw(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ u16 val;
+
+ val = tlv320aic23_read_reg_cache(codec, TLV320AIC23_ANLG) & (0x1C0);
+ val = val >> 6;
+ val = (val >= 4) ? 4 : (3 - val);
+ ucontrol->value.integer.value[0] = val;
+ return 0;
+
+}
+
+#define SOC_TLV320AIC23_SINGLE_TLV(xname, reg, shift, max, invert, tlv_array) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
+ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
+ SNDRV_CTL_ELEM_ACCESS_READWRITE,\
+ .tlv.p = (tlv_array), \
+ .info = snd_soc_info_volsw, .get = snd_soc_tlv320aic23_get_volsw,\
+ .put = snd_soc_tlv320aic23_put_volsw, \
+ .private_value = SOC_SINGLE_VALUE(reg, shift, max, invert) }
static const struct snd_kcontrol_new tlv320aic23_snd_controls[] = {
SOC_DOUBLE_R_TLV("Digital Playback Volume", TLV320AIC23_LCHNVOL,
@@ -141,7 +185,8 @@ static const struct snd_kcontrol_new tlv320aic23_snd_controls[] = {
TLV320AIC23_RINVOL, 0, 31, 0, input_gain_tlv),
SOC_SINGLE("Mic Input Switch", TLV320AIC23_ANLG, 1, 1, 1),
SOC_SINGLE("Mic Booster Switch", TLV320AIC23_ANLG, 0, 1, 0),
- SOC_ENUM("Sidetone Gain", tlv320aic23_sidetone),
+ SOC_TLV320AIC23_SINGLE_TLV("Sidetone Volume", TLV320AIC23_ANLG,
+ 6, 4, 0, sidetone_vol_tlv),
SOC_ENUM("Playback De-emphasis", tlv320aic23_deemph),
};
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/8] ASoC: Add WM8753 SPI support
2008-10-08 9:37 ` [PATCH 1/8] ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 3/8] ASoC: Add WM8510 " Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown
Implement SPI support for WM8753, cut'n'pasting from the support for
WM8731 contributed by Cliff Cai and Alan Horstmann since the wire format
is the same for both codecs.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/wm8753.c | 71 +++++++++++++++++++++++++++++++++++++++++++-
sound/soc/codecs/wm8753.h | 1 +
2 files changed, 70 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index 8c4df44..83ba419 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -40,6 +40,7 @@
#include <linux/pm.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
+#include <linux/spi/spi.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
@@ -1719,6 +1720,63 @@ err_driver:
}
#endif
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8753_spi_probe(struct spi_device *spi)
+{
+ struct snd_soc_device *socdev = wm8753_socdev;
+ struct snd_soc_codec *codec = socdev->codec;
+ int ret;
+
+ codec->control_data = spi;
+
+ ret = wm8753_init(socdev);
+ if (ret < 0)
+ dev_err(&spi->dev, "failed to initialise WM8753\n");
+
+ return ret;
+}
+
+static int __devexit wm8753_spi_remove(struct spi_device *spi)
+{
+ return 0;
+}
+
+static struct spi_driver wm8753_spi_driver = {
+ .driver = {
+ .name = "wm8753",
+ .bus = &spi_bus_type,
+ .owner = THIS_MODULE,
+ },
+ .probe = wm8753_spi_probe,
+ .remove = __devexit_p(wm8753_spi_remove),
+};
+
+static int wm8753_spi_write(struct spi_device *spi, const char *data, int len)
+{
+ struct spi_transfer t;
+ struct spi_message m;
+ u8 msg[2];
+
+ if (len <= 0)
+ return 0;
+
+ msg[0] = data[0];
+ msg[1] = data[1];
+
+ spi_message_init(&m);
+ memset(&t, 0, (sizeof t));
+
+ t.tx_buf = &msg[0];
+ t.len = len;
+
+ spi_message_add_tail(&t, &m);
+ spi_sync(spi, &m);
+
+ return len;
+}
+#endif
+
+
static int wm8753_probe(struct platform_device *pdev)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
@@ -1753,8 +1811,14 @@ static int wm8753_probe(struct platform_device *pdev)
codec->hw_write = (hw_write_t)i2c_master_send;
ret = wm8753_add_i2c_device(pdev, setup);
}
-#else
- /* Add other interfaces here */
+#endif
+#if defined(CONFIG_SPI_MASTER)
+ if (setup->spi) {
+ codec->hw_write = (hw_write_t)wm8753_spi_write;
+ ret = spi_register_driver(&wm8753_spi_driver);
+ if (ret != 0)
+ printk(KERN_ERR "can't add spi driver");
+ }
#endif
if (ret != 0) {
@@ -1798,6 +1862,9 @@ static int wm8753_remove(struct platform_device *pdev)
i2c_unregister_device(codec->control_data);
i2c_del_driver(&wm8753_i2c_driver);
#endif
+#if defined(CONFIG_SPI_MASTER)
+ spi_unregister_driver(&wm8753_spi_driver);
+#endif
kfree(codec->private_data);
kfree(codec);
diff --git a/sound/soc/codecs/wm8753.h b/sound/soc/codecs/wm8753.h
index 7defde0..6678379 100644
--- a/sound/soc/codecs/wm8753.h
+++ b/sound/soc/codecs/wm8753.h
@@ -79,6 +79,7 @@
#define WM8753_ADCTL2 0x3f
struct wm8753_setup_data {
+ int spi;
int i2c_bus;
unsigned short i2c_address;
};
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/8] ASoC: Add WM8510 SPI support
2008-10-08 9:37 ` [PATCH 2/8] ASoC: Add WM8753 SPI support Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 4/8] ALSA: ASoC: add new param mux to dapm_mux_update_power Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown
Implement SPI support for WM8510, cut'n'pasting from the support for
WM8731 contributed by Cliff Cai and Alan Horstmann since the wire format
is the same for both codecs.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/wm8510.c | 70 +++++++++++++++++++++++++++++++++++++++++++-
sound/soc/codecs/wm8510.h | 1 +
2 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 9a37c8d..16768a5 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -18,6 +18,7 @@
#include <linux/pm.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
+#include <linux/spi/spi.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
@@ -747,6 +748,62 @@ err_driver:
}
#endif
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8510_spi_probe(struct spi_device *spi)
+{
+ struct snd_soc_device *socdev = wm8510_socdev;
+ struct snd_soc_codec *codec = socdev->codec;
+ int ret;
+
+ codec->control_data = spi;
+
+ ret = wm8510_init(socdev);
+ if (ret < 0)
+ dev_err(&spi->dev, "failed to initialise WM8510\n");
+
+ return ret;
+}
+
+static int __devexit wm8510_spi_remove(struct spi_device *spi)
+{
+ return 0;
+}
+
+static struct spi_driver wm8510_spi_driver = {
+ .driver = {
+ .name = "wm8510",
+ .bus = &spi_bus_type,
+ .owner = THIS_MODULE,
+ },
+ .probe = wm8510_spi_probe,
+ .remove = __devexit_p(wm8510_spi_remove),
+};
+
+static int wm8510_spi_write(struct spi_device *spi, const char *data, int len)
+{
+ struct spi_transfer t;
+ struct spi_message m;
+ u8 msg[2];
+
+ if (len <= 0)
+ return 0;
+
+ msg[0] = data[0];
+ msg[1] = data[1];
+
+ spi_message_init(&m);
+ memset(&t, 0, (sizeof t));
+
+ t.tx_buf = &msg[0];
+ t.len = len;
+
+ spi_message_add_tail(&t, &m);
+ spi_sync(spi, &m);
+
+ return len;
+}
+#endif /* CONFIG_SPI_MASTER */
+
static int wm8510_probe(struct platform_device *pdev)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
@@ -772,8 +829,14 @@ static int wm8510_probe(struct platform_device *pdev)
codec->hw_write = (hw_write_t)i2c_master_send;
ret = wm8510_add_i2c_device(pdev, setup);
}
-#else
- /* Add other interfaces here */
+#endif
+#if defined(CONFIG_SPI_MASTER)
+ if (setup->spi) {
+ codec->hw_write = (hw_write_t)wm8510_spi_write;
+ ret = spi_register_driver(&wm8510_spi_driver);
+ if (ret != 0)
+ printk(KERN_ERR "can't add spi driver");
+ }
#endif
if (ret != 0)
@@ -796,6 +859,9 @@ static int wm8510_remove(struct platform_device *pdev)
i2c_unregister_device(codec->control_data);
i2c_del_driver(&wm8510_i2c_driver);
#endif
+#if defined(CONFIG_SPI_MASTER)
+ spi_unregister_driver(&wm8510_spi_driver);
+#endif
kfree(codec);
return 0;
diff --git a/sound/soc/codecs/wm8510.h b/sound/soc/codecs/wm8510.h
index c536839..bdefcf5 100644
--- a/sound/soc/codecs/wm8510.h
+++ b/sound/soc/codecs/wm8510.h
@@ -94,6 +94,7 @@
#define WM8510_MCLKDIV_12 (7 << 5)
struct wm8510_setup_data {
+ int spi;
int i2c_bus;
unsigned short i2c_address;
};
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 4/8] ALSA: ASoC: add new param mux to dapm_mux_update_power
2008-10-08 9:37 ` [PATCH 3/8] ASoC: Add WM8510 " Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 5/8] ASoC: tlv320aic3x: Use uniform tlv320aic naming Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Richard Zhao
From: Richard Zhao <linuxzsc@gmail.com>
Function dapm_mux_update_power needs enum index mux and register mask value val
as parameters, but it only has a parameter val, and uses it as both val and mux.
snd_soc_test_bits(widget->codec, e->reg, mask, val) val is register mask here,
e->texts[val] but val should be enum index mux here.
This patch adds a new param mux to fix it.
Signed-off-by: Richard Zhao <linuxzsc@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/soc-dapm.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 05ffba2..83fa9c4 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -693,7 +693,7 @@ static void dbg_dump_dapm(struct snd_soc_codec* codec, const char *action)
/* test and update the power status of a mux widget */
static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
struct snd_kcontrol *kcontrol, int mask,
- int val, struct soc_enum* e)
+ int mux, int val, struct soc_enum *e)
{
struct snd_soc_dapm_path *path;
int found = 0;
@@ -709,12 +709,12 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
if (path->kcontrol != kcontrol)
continue;
- if (!path->name || ! e->texts[val])
+ if (!path->name || !e->texts[mux])
continue;
found = 1;
/* we now need to match the string in the enum to the path */
- if (!(strcmp(path->name, e->texts[val])))
+ if (!(strcmp(path->name, e->texts[mux])))
path->connect = 1; /* new connection */
else
path->connect = 0; /* old connection must be powered down */
@@ -1291,7 +1291,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
mutex_lock(&widget->codec->mutex);
widget->value = val;
- dapm_mux_update_power(widget, kcontrol, mask, mux, e);
+ dapm_mux_update_power(widget, kcontrol, mask, mux, val, e);
if (widget->event) {
if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
ret = widget->event(widget,
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 5/8] ASoC: tlv320aic3x: Use uniform tlv320aic naming
2008-10-08 9:37 ` [PATCH 4/8] ALSA: ASoC: add new param mux to dapm_mux_update_power Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 6/8] ASoC: Remove unused AUDIO_NAME define from codec drivers Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Jarkko Nikula
From: Jarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/tlv320aic3x.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 566a427..57fc5af 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -991,7 +991,7 @@ EXPORT_SYMBOL_GPL(aic3x_headset_detected);
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
struct snd_soc_dai aic3x_dai = {
- .name = "aic3x",
+ .name = "tlv320aic3x",
.playback = {
.stream_name = "Playback",
.channels_min = 1,
@@ -1055,7 +1055,7 @@ static int aic3x_init(struct snd_soc_device *socdev)
struct aic3x_setup_data *setup = socdev->codec_data;
int reg, ret = 0;
- codec->name = "aic3x";
+ codec->name = "tlv320aic3x";
codec->owner = THIS_MODULE;
codec->read = aic3x_read_reg_cache;
codec->write = aic3x_write;
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 6/8] ASoC: Remove unused AUDIO_NAME define from codec drivers
2008-10-08 9:37 ` [PATCH 5/8] ASoC: tlv320aic3x: Use uniform tlv320aic naming Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:37 ` [PATCH 7/8] ASoC: Implement WM8510 bias level control Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Jarkko Nikula
From: Jarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/ak4535.c | 1 -
sound/soc/codecs/ssm2602.c | 1 -
sound/soc/codecs/tlv320aic23.c | 1 -
sound/soc/codecs/tlv320aic3x.c | 1 -
sound/soc/codecs/uda1380.c | 1 -
sound/soc/codecs/wm8510.c | 1 -
sound/soc/codecs/wm8580.c | 1 -
sound/soc/codecs/wm8731.c | 1 -
sound/soc/codecs/wm8750.c | 1 -
sound/soc/codecs/wm8753.c | 1 -
sound/soc/codecs/wm8971.c | 1 -
sound/soc/codecs/wm8990.c | 1 -
12 files changed, 0 insertions(+), 12 deletions(-)
diff --git a/sound/soc/codecs/ak4535.c b/sound/soc/codecs/ak4535.c
index 088cf99..2a89b58 100644
--- a/sound/soc/codecs/ak4535.c
+++ b/sound/soc/codecs/ak4535.c
@@ -28,7 +28,6 @@
#include "ak4535.h"
-#define AUDIO_NAME "ak4535"
#define AK4535_VERSION "0.3"
struct snd_soc_codec_device soc_codec_dev_ak4535;
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c
index 940ce1c..44ef0da 100644
--- a/sound/soc/codecs/ssm2602.c
+++ b/sound/soc/codecs/ssm2602.c
@@ -42,7 +42,6 @@
#include "ssm2602.h"
-#define AUDIO_NAME "ssm2602"
#define SSM2602_VERSION "0.1"
struct snd_soc_codec_device soc_codec_dev_ssm2602;
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index bb7cfb8..bac7815 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -35,7 +35,6 @@
#include "tlv320aic23.h"
-#define AUDIO_NAME "tlv320aic23"
#define AIC23_VERSION "0.1"
struct tlv320aic23_srate_reg_info {
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 57fc5af..05336ed 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -48,7 +48,6 @@
#include "tlv320aic3x.h"
-#define AUDIO_NAME "aic3x"
#define AIC3X_VERSION "0.2"
/* codec private data */
diff --git a/sound/soc/codecs/uda1380.c b/sound/soc/codecs/uda1380.c
index d206d7f..a69ee72 100644
--- a/sound/soc/codecs/uda1380.c
+++ b/sound/soc/codecs/uda1380.c
@@ -36,7 +36,6 @@
#include "uda1380.h"
#define UDA1380_VERSION "0.6"
-#define AUDIO_NAME "uda1380"
/*
* uda1380 register cache
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 16768a5..142c49b 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -28,7 +28,6 @@
#include "wm8510.h"
-#define AUDIO_NAME "wm8510"
#define WM8510_VERSION "0.6"
struct snd_soc_codec_device soc_codec_dev_wm8510;
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c
index df1ffbe..056787f 100644
--- a/sound/soc/codecs/wm8580.c
+++ b/sound/soc/codecs/wm8580.c
@@ -36,7 +36,6 @@
#include "wm8580.h"
-#define AUDIO_NAME "wm8580"
#define WM8580_VERSION "0.1"
struct pll_state {
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
index 7b64d9a..7f8a7e3 100644
--- a/sound/soc/codecs/wm8731.c
+++ b/sound/soc/codecs/wm8731.c
@@ -29,7 +29,6 @@
#include "wm8731.h"
-#define AUDIO_NAME "wm8731"
#define WM8731_VERSION "0.13"
struct snd_soc_codec_device soc_codec_dev_wm8731;
diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c
index 4892e39..9b7296e 100644
--- a/sound/soc/codecs/wm8750.c
+++ b/sound/soc/codecs/wm8750.c
@@ -29,7 +29,6 @@
#include "wm8750.h"
-#define AUDIO_NAME "WM8750"
#define WM8750_VERSION "0.12"
/* codec private data */
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index 83ba419..63dbc56 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -52,7 +52,6 @@
#include "wm8753.h"
-#define AUDIO_NAME "wm8753"
#define WM8753_VERSION "0.16"
static int caps_charge = 2000;
diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c
index 974a4cd..f41a578 100644
--- a/sound/soc/codecs/wm8971.c
+++ b/sound/soc/codecs/wm8971.c
@@ -29,7 +29,6 @@
#include "wm8971.h"
-#define AUDIO_NAME "wm8971"
#define WM8971_VERSION "0.9"
#define WM8971_REG_COUNT 43
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c
index 63410d7..572d22b 100644
--- a/sound/soc/codecs/wm8990.c
+++ b/sound/soc/codecs/wm8990.c
@@ -30,7 +30,6 @@
#include "wm8990.h"
-#define AUDIO_NAME "wm8990"
#define WM8990_VERSION "0.2"
/* codec private data */
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 7/8] ASoC: Implement WM8510 bias level control
2008-10-08 9:37 ` [PATCH 6/8] ASoC: Remove unused AUDIO_NAME define from codec drivers Mark Brown
@ 2008-10-08 9:37 ` Mark Brown
2008-10-08 9:38 ` [PATCH 8/8] ASoC: Make WM8510 microphone input a DAPM mixer Mark Brown
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:37 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown
The WM8510 bias level configuration blindly overwrites the power
management registers, interfering with the operation of DAPM.
Only adjust the specific bits required, implementing use of the VMID
resistor string configuration control as we go.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/wm8510.c | 32 ++++++++++++++++++++++++--------
1 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 142c49b..94cab49 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -55,6 +55,9 @@ static const u16 wm8510_reg[WM8510_CACHEREGNUM] = {
0x0001,
};
+#define WM8510_POWER1_BIASEN 0x08
+#define WM8510_POWER1_BUFIOEN 0x10
+
/*
* read wm8510 register cache
*/
@@ -526,23 +529,35 @@ static int wm8510_mute(struct snd_soc_dai *dai, int mute)
static int wm8510_set_bias_level(struct snd_soc_codec *codec,
enum snd_soc_bias_level level)
{
+ u16 power1 = wm8510_read_reg_cache(codec, WM8510_POWER1) & ~0x3;
switch (level) {
case SND_SOC_BIAS_ON:
- wm8510_write(codec, WM8510_POWER1, 0x1ff);
- wm8510_write(codec, WM8510_POWER2, 0x1ff);
- wm8510_write(codec, WM8510_POWER3, 0x1ff);
- break;
case SND_SOC_BIAS_PREPARE:
+ power1 |= 0x1; /* VMID 50k */
+ wm8510_write(codec, WM8510_POWER1, power1);
+ break;
+
case SND_SOC_BIAS_STANDBY:
+ power1 |= WM8510_POWER1_BIASEN | WM8510_POWER1_BUFIOEN;
+
+ if (codec->bias_level == SND_SOC_BIAS_OFF) {
+ /* Initial cap charge at VMID 5k */
+ wm8510_write(codec, WM8510_POWER1, power1 | 0x3);
+ mdelay(100);
+ }
+
+ power1 |= 0x2; /* VMID 500k */
+ wm8510_write(codec, WM8510_POWER1, power1);
break;
+
case SND_SOC_BIAS_OFF:
- /* everything off, dac mute, inactive */
- wm8510_write(codec, WM8510_POWER1, 0x0);
- wm8510_write(codec, WM8510_POWER2, 0x0);
- wm8510_write(codec, WM8510_POWER3, 0x0);
+ wm8510_write(codec, WM8510_POWER1, 0);
+ wm8510_write(codec, WM8510_POWER2, 0);
+ wm8510_write(codec, WM8510_POWER3, 0);
break;
}
+
codec->bias_level = level;
return 0;
}
@@ -640,6 +655,7 @@ static int wm8510_init(struct snd_soc_device *socdev)
}
/* power on device */
+ codec->bias_level = SND_SOC_BIAS_OFF;
wm8510_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
wm8510_add_controls(codec);
wm8510_add_widgets(codec);
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 8/8] ASoC: Make WM8510 microphone input a DAPM mixer
2008-10-08 9:37 ` [PATCH 7/8] ASoC: Implement WM8510 bias level control Mark Brown
@ 2008-10-08 9:38 ` Mark Brown
0 siblings, 0 replies; 12+ messages in thread
From: Mark Brown @ 2008-10-08 9:38 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Mark Brown
The WM8510 microphone input PGA was represented as a DAPM PGA but in
DAPM terms the functionality is that of a mixer since it takes three
switchable inputs and produces one output. Representing it as an input
was causing its controls to be misinterpreted as gain controls and
would cause some required DAPM updates to be missed.
Reported-by: Jukka Hynninen <ext-jukka.hynninen@vaisala.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/wm8510.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 94cab49..ea524c4 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -227,9 +227,9 @@ SND_SOC_DAPM_PGA("SpkN Out", WM8510_POWER3, 5, 0, NULL, 0),
SND_SOC_DAPM_PGA("SpkP Out", WM8510_POWER3, 6, 0, NULL, 0),
SND_SOC_DAPM_PGA("Mono Out", WM8510_POWER3, 7, 0, NULL, 0),
-SND_SOC_DAPM_PGA("Mic PGA", WM8510_POWER2, 2, 0,
- &wm8510_micpga_controls[0],
- ARRAY_SIZE(wm8510_micpga_controls)),
+SND_SOC_DAPM_MIXER("Mic PGA", WM8510_POWER2, 2, 0,
+ &wm8510_micpga_controls[0],
+ ARRAY_SIZE(wm8510_micpga_controls)),
SND_SOC_DAPM_MIXER("Boost Mixer", WM8510_POWER2, 4, 0,
&wm8510_boost_controls[0],
ARRAY_SIZE(wm8510_boost_controls)),
--
1.5.6.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 0/8] ASoC updates
2008-10-08 9:36 [PATCH 0/8] ASoC updates Mark Brown
2008-10-08 9:37 ` [PATCH 1/8] ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec Mark Brown
@ 2008-10-08 9:49 ` Takashi Iwai
1 sibling, 0 replies; 12+ messages in thread
From: Takashi Iwai @ 2008-10-08 9:49 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel
At Wed, 8 Oct 2008 10:36:11 +0100,
Mark Brown wrote:
>
> The following changes since commit 691ac84a77b1aebb7e09b4924b4b9c07a0f4f66a:
> Takashi Iwai (1):
> Merge branch 'asoc-fixes' into topic/asoc
>
> are available in the git repository at:
>
> git://opensource.wolfsonmicro.com/linux-2.6-asoc for-tiwai
>
> This is all 2.6.28ish material.
Thanks. All looks good. Pulled in and pushed out.
Takashi
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/8] ASoC updates
@ 2008-12-10 19:58 Mark Brown
2008-12-10 20:34 ` Takashi Iwai
0 siblings, 1 reply; 12+ messages in thread
From: Mark Brown @ 2008-12-10 19:58 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
The following changes since commit f73f2a6a23e34de9cca9672f727694e5af00e6c7:
Takashi Iwai (1):
ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git for-tiwai
Mark Brown (5):
ASoC: Work around warnings from some build environments
ASoC: Add codec registration API
ASoC: Convert WM8900 to do more work at I2C probe time
ASoC: Convert WM8903 driver to register at I2C probe time
ASoC: Stop WM8903 SYSCLK when suspending
Peter Ujfalusi (3):
ASoC: TWL4030: Add missing Carkit output
ASoC: TWL4030: Small cleanup
ASoC: TWL4030: Change the name for the DACs
include/sound/soc.h | 5 +
sound/soc/codecs/twl4030.c | 27 +++---
sound/soc/codecs/wm8900.c | 159 +++++++++++++++--------------
sound/soc/codecs/wm8900.h | 7 --
sound/soc/codecs/wm8903.c | 241 +++++++++++++++++++-------------------------
sound/soc/codecs/wm8903.h | 5 -
sound/soc/soc-core.c | 43 ++++++++
7 files changed, 247 insertions(+), 240 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/8] ASoC updates
2008-12-10 19:58 Mark Brown
@ 2008-12-10 20:34 ` Takashi Iwai
0 siblings, 0 replies; 12+ messages in thread
From: Takashi Iwai @ 2008-12-10 20:34 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel
At Wed, 10 Dec 2008 19:58:59 +0000,
Mark Brown wrote:
>
> The following changes since commit f73f2a6a23e34de9cca9672f727694e5af00e6c7:
> Takashi Iwai (1):
> ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git for-tiwai
Pulled now. Thanks.
Takashi
> Mark Brown (5):
> ASoC: Work around warnings from some build environments
> ASoC: Add codec registration API
> ASoC: Convert WM8900 to do more work at I2C probe time
> ASoC: Convert WM8903 driver to register at I2C probe time
> ASoC: Stop WM8903 SYSCLK when suspending
>
> Peter Ujfalusi (3):
> ASoC: TWL4030: Add missing Carkit output
> ASoC: TWL4030: Small cleanup
> ASoC: TWL4030: Change the name for the DACs
>
> include/sound/soc.h | 5 +
> sound/soc/codecs/twl4030.c | 27 +++---
> sound/soc/codecs/wm8900.c | 159 +++++++++++++++--------------
> sound/soc/codecs/wm8900.h | 7 --
> sound/soc/codecs/wm8903.c | 241 +++++++++++++++++++-------------------------
> sound/soc/codecs/wm8903.h | 5 -
> sound/soc/soc-core.c | 43 ++++++++
> 7 files changed, 247 insertions(+), 240 deletions(-)
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-12-10 20:34 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-08 9:36 [PATCH 0/8] ASoC updates Mark Brown
2008-10-08 9:37 ` [PATCH 1/8] ASoC: Add custom SOC_SINGLE_TLV for tlv320aic23 codec Mark Brown
2008-10-08 9:37 ` [PATCH 2/8] ASoC: Add WM8753 SPI support Mark Brown
2008-10-08 9:37 ` [PATCH 3/8] ASoC: Add WM8510 " Mark Brown
2008-10-08 9:37 ` [PATCH 4/8] ALSA: ASoC: add new param mux to dapm_mux_update_power Mark Brown
2008-10-08 9:37 ` [PATCH 5/8] ASoC: tlv320aic3x: Use uniform tlv320aic naming Mark Brown
2008-10-08 9:37 ` [PATCH 6/8] ASoC: Remove unused AUDIO_NAME define from codec drivers Mark Brown
2008-10-08 9:37 ` [PATCH 7/8] ASoC: Implement WM8510 bias level control Mark Brown
2008-10-08 9:38 ` [PATCH 8/8] ASoC: Make WM8510 microphone input a DAPM mixer Mark Brown
2008-10-08 9:49 ` [PATCH 0/8] ASoC updates Takashi Iwai
-- strict thread matches above, loose matches on Subject: below --
2008-12-10 19:58 Mark Brown
2008-12-10 20:34 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.