Alsa-devel
Threads by month
- ----- 2024 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2010
- 112 participants
- 189 discussions
Hi all,
Here are some bugfix patches for the imx-ssi driver. It should also fix
the problems reported in FIQ mode.
Sascha
4
14
Register the WM8750 as a SPI or I2C device. This patch mostly shuffles code
around. Hugely inspired by WM8753 which was already converted.
Signed-off-by: Marek Vasut <marek.vasut(a)gmail.com>
---
sound/soc/codecs/wm8750.c | 295 ++++++++++++++++++---------------------
sound/soc/pxa/spitz.c | 43 +++++-
sound/soc/s3c24xx/jive_wm8750.c | 40 +++++-
3 files changed, 210 insertions(+), 168 deletions(-)
diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c
index 3e440c0..eea7ba6 100644
--- a/sound/soc/codecs/wm8750.c
+++ b/sound/soc/codecs/wm8750.c
@@ -30,11 +30,6 @@
#include "wm8750.h"
-/* codec private data */
-struct wm8750_priv {
- unsigned int sysclk;
-};
-
/*
* wm8750 register cache
* We can't read the WM8750 register space when we
@@ -54,6 +49,13 @@ static const u16 wm8750_reg[] = {
0x0079, 0x0079, 0x0079, /* 40 */
};
+/* codec private data */
+struct wm8750_priv {
+ unsigned int sysclk;
+ struct snd_soc_codec codec;
+ u16 reg_cache[ARRAY_SIZE(wm8750_reg)];
+};
+
#define wm8750_reset(c) snd_soc_write(c, WM8750_RESET, 0)
/*
@@ -696,25 +698,90 @@ static int wm8750_resume(struct platform_device *pdev)
return 0;
}
+static struct snd_soc_codec *wm8750_codec;
+
+static int wm8750_probe(struct platform_device *pdev)
+{
+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+ struct snd_soc_codec *codec;
+ int ret = 0;
+
+ if (!wm8750_codec) {
+ dev_err(&pdev->dev, "WM8750 codec not yet registered\n");
+ return -EINVAL;
+ }
+
+ socdev->card->codec = wm8750_codec;
+ codec = wm8750_codec;
+
+ /* register pcms */
+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
+ if (ret < 0) {
+ printk(KERN_ERR "wm8750: failed to create pcms\n");
+ goto err;
+ }
+
+ snd_soc_add_controls(codec, wm8750_snd_controls,
+ ARRAY_SIZE(wm8750_snd_controls));
+ wm8750_add_widgets(codec);
+
+ return 0;
+
+err:
+ return ret;
+}
+
+/* power down chip */
+static int wm8750_remove(struct platform_device *pdev)
+{
+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+
+ snd_soc_free_pcms(socdev);
+ snd_soc_dapm_free(socdev);
+
+ return 0;
+}
+
+struct snd_soc_codec_device soc_codec_dev_wm8750 = {
+ .probe = wm8750_probe,
+ .remove = wm8750_remove,
+ .suspend = wm8750_suspend,
+ .resume = wm8750_resume,
+};
+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8750);
+
/*
* initialise the WM8750 driver
* register the mixer and dsp interfaces with the kernel
*/
-static int wm8750_init(struct snd_soc_device *socdev,
- enum snd_soc_control_type control)
+static int wm8750_register(struct wm8750_priv *wm8750,
+ enum snd_soc_control_type control)
{
- struct snd_soc_codec *codec = socdev->card->codec;
+ struct snd_soc_codec *codec = &wm8750->codec;
int reg, ret = 0;
+ if (wm8750_codec) {
+ dev_err(codec->dev, "Multiple WM8750 devices not supported\n");
+ ret = -EINVAL;
+ goto err;
+ }
+
+ mutex_init(&codec->mutex);
+ INIT_LIST_HEAD(&codec->dapm_widgets);
+ INIT_LIST_HEAD(&codec->dapm_paths);
+
codec->name = "WM8750";
codec->owner = THIS_MODULE;
+ codec->bias_level = SND_SOC_BIAS_STANDBY;
codec->set_bias_level = wm8750_set_bias_level;
codec->dai = &wm8750_dai;
codec->num_dai = 1;
- codec->reg_cache_size = ARRAY_SIZE(wm8750_reg);
- codec->reg_cache = kmemdup(wm8750_reg, sizeof(wm8750_reg), GFP_KERNEL);
- if (codec->reg_cache == NULL)
- return -ENOMEM;
+ codec->private_data = wm8750;
+ codec->reg_cache_size = ARRAY_SIZE(wm8750->reg_cache) + 1;
+ codec->reg_cache = &wm8750->reg_cache;
+ codec->private_data = wm8750;
+
+ memcpy(codec->reg_cache, wm8750_reg, sizeof(wm8750->reg_cache));
ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
if (ret < 0) {
@@ -728,13 +795,6 @@ static int wm8750_init(struct snd_soc_device *socdev,
goto err;
}
- /* register pcms */
- ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
- if (ret < 0) {
- printk(KERN_ERR "wm8750: failed to create pcms\n");
- goto err;
- }
-
/* charge output caps */
wm8750_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
@@ -756,19 +816,37 @@ static int wm8750_init(struct snd_soc_device *socdev,
reg = snd_soc_read(codec, WM8750_RINVOL);
snd_soc_write(codec, WM8750_RINVOL, reg | 0x0100);
- snd_soc_add_controls(codec, wm8750_snd_controls,
- ARRAY_SIZE(wm8750_snd_controls));
- wm8750_add_widgets(codec);
- return ret;
+ wm8750_codec = codec;
+ ret = snd_soc_register_codec(codec);
+ if (ret != 0) {
+ dev_err(codec->dev, "Failed to register codec: %d\n", ret);
+ goto err;
+ }
+
+ ret = snd_soc_register_dais(&wm8750_dai, 1);
+ if (ret != 0) {
+ dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
+ goto err_codec;
+ }
+
+ return 0;
+
+err_codec:
+ snd_soc_unregister_codec(codec);
err:
- kfree(codec->reg_cache);
+ kfree(wm8750);
return ret;
}
-/* If the i2c layer weren't so broken, we could pass this kind of data
- around */
-static struct snd_soc_device *wm8750_socdev;
+static void wm8750_unregister(struct wm8750_priv *wm8750)
+{
+ wm8750_set_bias_level(&wm8750->codec, SND_SOC_BIAS_OFF);
+ snd_soc_unregister_dais(&wm8750_dai, 1);
+ snd_soc_unregister_codec(&wm8750->codec);
+ kfree(wm8750);
+ wm8750_codec = NULL;
+}
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
@@ -782,24 +860,26 @@ static struct snd_soc_device *wm8750_socdev;
static int wm8750_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
- struct snd_soc_device *socdev = wm8750_socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- int ret;
+ struct snd_soc_codec *codec;
+ struct wm8750_priv *wm8750;
- i2c_set_clientdata(i2c, codec);
+ wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
+ if (wm8750 == NULL)
+ return -ENOMEM;
+
+ codec = &wm8750->codec;
codec->control_data = i2c;
+ i2c_set_clientdata(i2c, wm8750);
- ret = wm8750_init(socdev, SND_SOC_I2C);
- if (ret < 0)
- pr_err("failed to initialise WM8750\n");
+ codec->dev = &i2c->dev;
- return ret;
+ return wm8750_register(wm8750, SND_SOC_I2C);
}
static int wm8750_i2c_remove(struct i2c_client *client)
{
- struct snd_soc_codec *codec = i2c_get_clientdata(client);
- kfree(codec->reg_cache);
+ struct wm8750_priv *wm8750 = i2c_get_clientdata(client);
+ wm8750_unregister(wm8750);
return 0;
}
@@ -818,66 +898,31 @@ static struct i2c_driver wm8750_i2c_driver = {
.remove = wm8750_i2c_remove,
.id_table = wm8750_i2c_id,
};
-
-static int wm8750_add_i2c_device(struct platform_device *pdev,
- const struct wm8750_setup_data *setup)
-{
- struct i2c_board_info info;
- struct i2c_adapter *adapter;
- struct i2c_client *client;
- int ret;
-
- ret = i2c_add_driver(&wm8750_i2c_driver);
- if (ret != 0) {
- dev_err(&pdev->dev, "can't add i2c driver\n");
- return ret;
- }
-
- memset(&info, 0, sizeof(struct i2c_board_info));
- info.addr = setup->i2c_address;
- strlcpy(info.type, "wm8750", I2C_NAME_SIZE);
-
- adapter = i2c_get_adapter(setup->i2c_bus);
- if (!adapter) {
- dev_err(&pdev->dev, "can't get i2c adapter %d\n",
- setup->i2c_bus);
- goto err_driver;
- }
-
- client = i2c_new_device(adapter, &info);
- i2c_put_adapter(adapter);
- if (!client) {
- dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
- (unsigned int)info.addr);
- goto err_driver;
- }
-
- return 0;
-
-err_driver:
- i2c_del_driver(&wm8750_i2c_driver);
- return -ENODEV;
-}
#endif
#if defined(CONFIG_SPI_MASTER)
static int __devinit wm8750_spi_probe(struct spi_device *spi)
{
- struct snd_soc_device *socdev = wm8750_socdev;
- struct snd_soc_codec *codec = socdev->card->codec;
- int ret;
+ struct snd_soc_codec *codec;
+ struct wm8750_priv *wm8750;
+ wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
+ if (wm8750 == NULL)
+ return -ENOMEM;
+
+ codec = &wm8750->codec;
codec->control_data = spi;
+ codec->dev = &spi->dev;
- ret = wm8750_init(socdev, SND_SOC_SPI);
- if (ret < 0)
- dev_err(&spi->dev, "failed to initialise WM8750\n");
+ dev_set_drvdata(&spi->dev, wm8750);
- return ret;
+ return wm8750_register(wm8750, SND_SOC_SPI);
}
static int __devexit wm8750_spi_remove(struct spi_device *spi)
{
+ struct wm8750_priv *wm8750 = dev_get_drvdata(&spi->dev);
+ wm8750_unregister(wm8750);
return 0;
}
@@ -892,93 +937,31 @@ static struct spi_driver wm8750_spi_driver = {
};
#endif
-static int wm8750_probe(struct platform_device *pdev)
+static int __init wm8750_modinit(void)
{
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct wm8750_setup_data *setup = socdev->codec_data;
- struct snd_soc_codec *codec;
- struct wm8750_priv *wm8750;
int ret;
-
- codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
- if (codec == NULL)
- return -ENOMEM;
-
- wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
- if (wm8750 == NULL) {
- kfree(codec);
- return -ENOMEM;
- }
-
- codec->private_data = wm8750;
- socdev->card->codec = codec;
- mutex_init(&codec->mutex);
- INIT_LIST_HEAD(&codec->dapm_widgets);
- INIT_LIST_HEAD(&codec->dapm_paths);
- wm8750_socdev = socdev;
-
- ret = -ENODEV;
-
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
- ret = wm8750_add_i2c_device(pdev, setup);
- }
+ ret = i2c_add_driver(&wm8750_i2c_driver);
+ if (ret != 0)
+ pr_err("Failed to register WM8750 I2C driver: %d\n", ret);
#endif
#if defined(CONFIG_SPI_MASTER)
- if (setup->spi) {
- ret = spi_register_driver(&wm8750_spi_driver);
- if (ret != 0)
- printk(KERN_ERR "can't add spi driver");
- }
+ ret = spi_register_driver(&wm8750_spi_driver);
+ if (ret != 0)
+ pr_err("Failed to register WM8750 SPI driver: %d\n", ret);
#endif
-
- if (ret != 0) {
- kfree(codec->private_data);
- kfree(codec);
- }
- return ret;
+ return 0;
}
+module_init(wm8750_modinit);
-/* power down chip */
-static int wm8750_remove(struct platform_device *pdev)
+static void __exit wm8750_exit(void)
{
- struct snd_soc_device *socdev = platform_get_drvdata(pdev);
- struct snd_soc_codec *codec = socdev->card->codec;
-
- if (codec->control_data)
- wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF);
- snd_soc_free_pcms(socdev);
- snd_soc_dapm_free(socdev);
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- i2c_unregister_device(codec->control_data);
i2c_del_driver(&wm8750_i2c_driver);
#endif
#if defined(CONFIG_SPI_MASTER)
spi_unregister_driver(&wm8750_spi_driver);
#endif
- kfree(codec->private_data);
- kfree(codec);
-
- return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8750 = {
- .probe = wm8750_probe,
- .remove = wm8750_remove,
- .suspend = wm8750_suspend,
- .resume = wm8750_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8750);
-
-static int __init wm8750_modinit(void)
-{
- return snd_soc_register_dai(&wm8750_dai);
-}
-module_init(wm8750_modinit);
-
-static void __exit wm8750_exit(void)
-{
- snd_soc_unregister_dai(&wm8750_dai);
}
module_exit(wm8750_exit);
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index c4cd2ac..1941a35 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -322,19 +322,44 @@ static struct snd_soc_card snd_soc_spitz = {
.num_links = 1,
};
-/* spitz audio private data */
-static struct wm8750_setup_data spitz_wm8750_setup = {
- .i2c_bus = 0,
- .i2c_address = 0x1b,
-};
-
/* spitz audio subsystem */
static struct snd_soc_device spitz_snd_devdata = {
.card = &snd_soc_spitz,
.codec_dev = &soc_codec_dev_wm8750,
- .codec_data = &spitz_wm8750_setup,
};
+/*
+ * FIXME: This is a temporary bodge to avoid cross-tree merge issues.
+ * New drivers should register the wm8750 I2C device in the machine
+ * setup code (under arch/arm for ARM systems).
+ */
+static int wm8750_i2c_register(void)
+{
+ struct i2c_board_info info;
+ struct i2c_adapter *adapter;
+ struct i2c_client *client;
+
+ memset(&info, 0, sizeof(struct i2c_board_info));
+ info.addr = 0x1b;
+ strlcpy(info.type, "wm8750", I2C_NAME_SIZE);
+
+ adapter = i2c_get_adapter(0);
+ if (!adapter) {
+ printk(KERN_ERR "can't get i2c adapter 0\n");
+ return -ENODEV;
+ }
+
+ client = i2c_new_device(adapter, &info);
+ i2c_put_adapter(adapter);
+ if (!client) {
+ printk(KERN_ERR "can't add i2c device at 0x%x\n",
+ (unsigned int)info.addr);
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
static struct platform_device *spitz_snd_device;
static int __init spitz_init(void)
@@ -344,6 +369,10 @@ static int __init spitz_init(void)
if (!(machine_is_spitz() || machine_is_borzoi() || machine_is_akita()))
return -ENODEV;
+ ret = wm8750_i2c_setup();
+ if (ret != 0)
+ return ret;
+
spitz_snd_device = platform_device_alloc("soc-audio", -1);
if (!spitz_snd_device)
return -ENOMEM;
diff --git a/sound/soc/s3c24xx/jive_wm8750.c b/sound/soc/s3c24xx/jive_wm8750.c
index 59dc2c6..b9d85c6 100644
--- a/sound/soc/s3c24xx/jive_wm8750.c
+++ b/sound/soc/s3c24xx/jive_wm8750.c
@@ -152,17 +152,43 @@ static struct snd_soc_card snd_soc_machine_jive = {
.num_links = 1,
};
-/* jive audio private data */
-static struct wm8750_setup_data jive_wm8750_setup = {
-};
-
/* jive audio subsystem */
static struct snd_soc_device jive_snd_devdata = {
.card = &snd_soc_machine_jive,
.codec_dev = &soc_codec_dev_wm8750,
- .codec_data = &jive_wm8750_setup,
};
+/*
+ * FIXME: This is a temporary bodge to avoid cross-tree merge issues.
+ * New drivers should register the wm8750 I2C device in the machine
+ * setup code (under arch/arm for ARM systems).
+ */
+static int wm8750_i2c_register(void)
+{
+ struct i2c_board_info info;
+ struct i2c_adapter *adapter;
+ struct i2c_client *client;
+
+ memset(&info, 0, sizeof(struct i2c_board_info));
+ strlcpy(info.type, "wm8750", I2C_NAME_SIZE);
+
+ adapter = i2c_get_adapter(0);
+ if (!adapter) {
+ printk(KERN_ERR "can't get i2c adapter 0\n");
+ return -ENODEV;
+ }
+
+ client = i2c_new_device(adapter, &info);
+ i2c_put_adapter(adapter);
+ if (!client) {
+ printk(KERN_ERR "can't add i2c device at 0x%x\n",
+ (unsigned int)info.addr);
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
static struct platform_device *jive_snd_device;
static int __init jive_init(void)
@@ -172,6 +198,10 @@ static int __init jive_init(void)
if (!machine_is_jive())
return 0;
+ ret = wm8750_i2c_setup();
+ if (ret != 0)
+ return ret;
+
printk("JIVE WM8750 Audio support\n");
jive_snd_device = platform_device_alloc("soc-audio", -1);
--
1.7.0
2
1
[alsa-devel] [PATCH 10/16] ASoC: wm2000: remove unused #include <linux/version.h>
by Huang Weiyi 08 Apr '10
by Huang Weiyi 08 Apr '10
08 Apr '10
Remove unused #include <linux/version.h>('s) in
sound/soc/codecs/wm2000.c
Signed-off-by: Huang Weiyi <weiyi.huang(a)gmail.com>
---
sound/soc/codecs/wm2000.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/sound/soc/codecs/wm2000.c b/sound/soc/codecs/wm2000.c
index a34cbcf..002e289 100644
--- a/sound/soc/codecs/wm2000.c
+++ b/sound/soc/codecs/wm2000.c
@@ -23,7 +23,6 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
-#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/firmware.h>
--
1.6.1.3
3
2
07 Apr '10
This adds support for the Medion WIM2160 soundcard.
There's no PCI quirk added because it has the same PCI id as the
Medion MD2.
Signed-off-by: Maurus Cuelenaere <mcuelenaere(a)gmail.com>
---
sound/pci/hda/patch_realtek.c | 53 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index da34095..79833e6 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -226,6 +226,7 @@ enum {
ALC888_ACER_ASPIRE_7730G,
ALC883_MEDION,
ALC883_MEDION_MD2,
+ ALC883_MEDION_WIM2160,
ALC883_LAPTOP_EAPD,
ALC883_LENOVO_101E_2ch,
ALC883_LENOVO_NB0763,
@@ -8247,6 +8248,42 @@ static struct snd_kcontrol_new
alc883_medion_md2_mixer[] = {
{ } /* end */
};
+static struct snd_kcontrol_new alc883_medion_wim2160_mixer[] = {
+ HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
+ HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
+ HDA_CODEC_MUTE("Speaker Playback Switch", 0x15, 0x0, HDA_OUTPUT),
+ HDA_CODEC_MUTE("Headphone Playback Switch", 0x1a, 0x0, HDA_OUTPUT),
+ HDA_CODEC_VOLUME("Line Playback Volume", 0x08, 0x0, HDA_INPUT),
+ HDA_CODEC_MUTE("Line Playback Switch", 0x08, 0x0, HDA_INPUT),
+ { } /* end */
+};
+
+static struct hda_verb alc883_medion_wim2160_verbs[] = {
+ /* Unmute front mixer */
+ {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+ {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+
+ /* Set speaker pin to front mixer */
+ {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
+
+ /* Init headphone pin */
+ {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
+ {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+ {0x1a, AC_VERB_SET_CONNECT_SEL, 0x00},
+ {0x1a, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
+
+ { } /* end */
+};
+
+/* toggle speaker-output according to the hp-jack state */
+static void alc883_medion_wim2160_setup(struct hda_codec *codec)
+{
+ struct alc_spec *spec = codec->spec;
+
+ spec->autocfg.hp_pins[0] = 0x1a;
+ spec->autocfg.speaker_pins[0] = 0x15;
+}
+
static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = {
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
@@ -8956,6 +8993,7 @@ static const char *alc882_models[ALC882_MODEL_LAST] = {
[ALC888_ACER_ASPIRE_7730G] = "acer-aspire-7730g",
[ALC883_MEDION] = "medion",
[ALC883_MEDION_MD2] = "medion-md2",
+ [ALC883_MEDION_WIM2160] = "medion-wim2160",
[ALC883_LAPTOP_EAPD] = "laptop-eapd",
[ALC883_LENOVO_101E_2ch] = "lenovo-101e",
[ALC883_LENOVO_NB0763] = "lenovo-nb0763",
@@ -9578,6 +9616,21 @@ static struct alc_config_preset alc882_presets[] = {
.setup = alc883_medion_md2_setup,
.init_hook = alc_automute_amp,
},
+ [ALC883_MEDION_WIM2160] = {
+ .mixers = { alc883_medion_wim2160_mixer },
+ .init_verbs = { alc883_init_verbs, alc883_medion_wim2160_verbs },
+ .num_dacs = ARRAY_SIZE(alc883_dac_nids),
+ .dac_nids = alc883_dac_nids,
+ .dig_out_nid = ALC883_DIGOUT_NID,
+ .num_adc_nids = ARRAY_SIZE(alc883_adc_nids),
+ .adc_nids = alc883_adc_nids,
+ .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
+ .channel_mode = alc883_3ST_2ch_modes,
+ .input_mux = &alc883_capture_source,
+ .unsol_event = alc_automute_amp_unsol_event,
+ .setup = alc883_medion_wim2160_setup,
+ .init_hook = alc_automute_amp,
+ },
[ALC883_LAPTOP_EAPD] = {
.mixers = { alc883_base_mixer },
.init_verbs = { alc883_init_verbs, alc882_eapd_verbs },
--
1.7.0.3
2
10
Hi,
I´m having an external PCM plugin that should do some processing on the audio. That part works fine. Now I´d like to have some way to modify the way to give some parameters to the plugin to tell it how the processing is done (eg. set delay time, pan, attack time, ...).
I´ve searched the web for days and hours, but could not really find something.
On the alsa mailing list there was a similiar question three years ago, and the answer was, that one could create user-space control elements in the plugin. How is that done? I could not find examples or good documentation about it. Did I miss something out? Can anyone give me a hint, maybe a link to some docs about it or source of a PCM plugin creating/using user space control elements? Thanks a lot.
Marcus
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
3
4
[alsa-devel] USB HID gadget driver (was: Re: USB transfer_buffer allocations on 64bit systems)
by Daniel Mack 07 Apr '10
by Daniel Mack 07 Apr '10
07 Apr '10
On Wed, Apr 07, 2010 at 06:20:53PM +0900, suman wrote:
> I am sorry if this is a lame question, I am in Ignorance. I have little time
> to make a USB driver.
1. Please do not hijack email threads for unrelated subjects. Your
question has nothing to do with the original topic and you copy the
wrong people for your question. Start a new thread for that.
2. Do not reply on top.
> I need to make a board work in device mode which acts as a keyboard and
> mouse device, So when my device is connected to a windows system it
> will recognize as a keyboard and a mouse device. I need a pointer for it. I
> do not find much documentation on it other than gadget driver which belongs
> to bulk class driver.
> I know my USB controller supports OTG and supports both device and host
> mode.
You need to write your own gadget driver for that. See the ones that
already exist in the tree and see which parts you can recycle for your
purpose. The protocol you want to talk is HID.
Daniel
> If you have any pointer can you please give. I'm all ears.
>
> On Wed, Apr 7, 2010 at 6:06 PM, Daniel Mack <daniel(a)caiaq.de> wrote:
>
> > Hi,
> >
> > I was pointed to https://bugzilla.kernel.org/show_bug.cgi?id=15580 by
> > Pedro Ribeiro, and unfortunately I'm pretty late in the game. I wasn't
> > aware of that thread until yesterday.
> >
> > While the report is quite confusing, the reason seams pretty clear to me
> > as I've been thru quite some time-demanding debugging of a very similar
> > issue on Mac OS X. But I'm not totally sure whether we really hit the
> > same issue here, so I'd like to have your opinions first.
> >
> > The problem is appearantly the way the transfer buffer is allocated in
> > the drivers. In the snd-usb-caiaq driver, I used kzalloc() to get memory
> > which works fine on 32bit systems. On x86_64, however, it seems that
> > kzalloc() hands out memory beyond the 32bit addressable boundary, which
> > the DMA controller of the 32bit PCI-connected EHCI controller is unable
> > to write to or read from. Am I correct on this conclusion?
> >
> > Depending on the condition of the memory management, things might work
> > or not, and especially right after a reboot, there's a better chance to
> > get lower memory.
> >
> > The fix is to use usb_buffer_alloc() for that purpose which ensures
> > memory that is suitable for DMA. And on x86_64, this also means that the
> > upper 32 bits of the address returned are all 0's.
> >
> > If what I've stated is true, there are quite some more drivers affected
> > by this issue. I collected a list of places where similar fixes are
> > needed, and I can send patches if I get a thumbs-up.
> >
> > Pedro is currently testing a patch I sent out yesterday.
> >
> > Thanks,
> > Daniel
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > the body of a message to majordomo(a)vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
>
>
> --
> Rgds
> Vijayendra Suman
>
> The only basis for a true and lasting unity of all humanity is the religion
> of the heart. The religion of the heart is the religion of love. People can
> only be united if they are free from jealousy, hatred and petty-mindedness.
> Purify your heart first. Meet hatred with love and malice with goodwill. The
> purer you make your heart, the greater will be the power of your love.
1
0
Hello,
My laptop suspends and resumes find, but sound is not working after computer is
suspended and resumed. I can fix sound
by running as root "alsa force-reload". This bug has been some time
ago reported to alsa bug tracker:
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=959
I compiled vanilla kernel 2.6.33.2 from kernel.org,
after suspending sound fails similarly with this kernel also.
I looked my alsa-info logs (they are somewhere down there) before and
after suspend, and files differ much at where it says "Current setup".
--
Rami Autiomäki
-- Package-specific info:
** Version:
Linux version 2.6.32-3-686 (Debian 2.6.32-9) (maks(a)debian.org) (gcc
version 4.3.4 (Debian 4.3.4-8) ) #1 SMP Thu Feb 25 06:14:20 UTC 2010
** Command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32-3-686
root=UUID=d58ac20c-4ecb-4cc6-91b5-acad8448af76 ro quiet noapic nolapic
** Tainted: P (1)
* Proprietary module has been loaded.
** Kernel log:
[ 732.060050] ali_stimer_read: stimer is not ready.
[ 732.316048] ali_stimer_read: stimer is not ready.
[ 732.572049] ali_stimer_read: stimer is not ready.
[ 732.828049] ali_stimer_read: stimer is not ready.
[ 733.084080] ali_stimer_read: stimer is not ready.
[ 733.340048] ali_stimer_read: stimer is not ready.
[ 733.596050] ali_stimer_read: stimer is not ready.
[ 733.852459] ali_stimer_read: stimer is not ready.
[ 734.108050] ali_stimer_read: stimer is not ready.
[ 734.364048] ali_stimer_read: stimer is not ready.
[ 734.620048] ali_stimer_read: stimer is not ready.
[ 734.876053] ali_stimer_read: stimer is not ready.
[ 735.132051] ali_stimer_read: stimer is not ready.
[ 735.388049] ali_stimer_read: stimer is not ready.
[ 735.644051] ali_stimer_read: stimer is not ready.
[ 735.900050] ali_stimer_read: stimer is not ready.
[ 736.156202] ali_stimer_read: stimer is not ready.
[ 736.412074] ali_stimer_read: stimer is not ready.
[ 736.668060] ali_stimer_read: stimer is not ready.
[ 786.632050] ali_stimer_read: stimer is not ready.
[ 786.888049] ali_stimer_read: stimer is not ready.
[ 787.144051] ali_stimer_read: stimer is not ready.
[ 787.400048] ali_stimer_read: stimer is not ready.
[ 787.656097] ali_stimer_read: stimer is not ready.
[ 787.912048] ali_stimer_read: stimer is not ready.
[ 788.168049] ali_stimer_read: stimer is not ready.
[ 788.424049] ali_stimer_read: stimer is not ready.
[ 788.680049] ali_stimer_read: stimer is not ready.
[ 788.936068] ali_stimer_read: stimer is not ready.
[ 789.192047] ali_stimer_read: stimer is not ready.
[ 789.448049] ali_stimer_read: stimer is not ready.
[ 789.704049] ali_stimer_read: stimer is not ready.
[ 789.960071] ali_stimer_read: stimer is not ready.
[ 790.216049] ali_stimer_read: stimer is not ready.
[ 790.472071] ali_stimer_read: stimer is not ready.
[ 790.728049] ali_stimer_read: stimer is not ready.
[ 790.984048] ali_stimer_read: stimer is not ready.
[ 791.240053] ali_stimer_read: stimer is not ready.
[ 791.496072] ali_stimer_read: stimer is not ready.
[ 791.752059] ali_stimer_read: stimer is not ready.
[ 792.008049] ali_stimer_read: stimer is not ready.
[ 792.264082] ali_stimer_read: stimer is not ready.
[ 792.520080] ali_stimer_read: stimer is not ready.
[ 792.776110] ali_stimer_read: stimer is not ready.
[ 793.032050] ali_stimer_read: stimer is not ready.
[ 793.288138] ali_stimer_read: stimer is not ready.
[ 793.544111] ali_stimer_read: stimer is not ready.
[ 793.800114] ali_stimer_read: stimer is not ready.
[ 794.056049] ali_stimer_read: stimer is not ready.
[ 794.312049] ali_stimer_read: stimer is not ready.
[ 794.568049] ali_stimer_read: stimer is not ready.
[ 794.824049] ali_stimer_read: stimer is not ready.
[ 795.080048] ali_stimer_read: stimer is not ready.
[ 795.336073] ali_stimer_read: stimer is not ready.
[ 795.592064] ali_stimer_read: stimer is not ready.
[ 795.848049] ali_stimer_read: stimer is not ready.
[ 796.104080] ali_stimer_read: stimer is not ready.
[ 796.360068] ali_stimer_read: stimer is not ready.
[ 796.616209] ali_stimer_read: stimer is not ready.
[ 796.872049] ali_stimer_read: stimer is not ready.
[ 797.128049] ali_stimer_read: stimer is not ready.
[ 797.384049] ali_stimer_read: stimer is not ready.
[ 797.640052] ali_stimer_read: stimer is not ready.
[ 797.896113] ali_stimer_read: stimer is not ready.
[ 798.152048] ali_stimer_read: stimer is not ready.
[ 798.408048] ali_stimer_read: stimer is not ready.
[ 798.664213] ali_stimer_read: stimer is not ready.
[ 798.920083] ali_stimer_read: stimer is not ready.
[ 799.176054] ali_stimer_read: stimer is not ready.
[ 799.433427] ali_stimer_read: stimer is not ready.
[ 799.688051] ali_stimer_read: stimer is not ready.
[ 799.944082] ali_stimer_read: stimer is not ready.
[ 800.200047] ali_stimer_read: stimer is not ready.
[ 800.456050] ali_stimer_read: stimer is not ready.
[ 800.712082] ali_stimer_read: stimer is not ready.
[ 800.968109] ali_stimer_read: stimer is not ready.
[ 801.224049] ali_stimer_read: stimer is not ready.
[ 801.480090] ali_stimer_read: stimer is not ready.
[ 801.736051] ali_stimer_read: stimer is not ready.
[ 801.992071] ali_stimer_read: stimer is not ready.
[ 802.248052] ali_stimer_read: stimer is not ready.
[ 802.504109] ali_stimer_read: stimer is not ready.
[ 802.760048] ali_stimer_read: stimer is not ready.
[ 803.016049] ali_stimer_read: stimer is not ready.
[ 803.272049] ali_stimer_read: stimer is not ready.
[ 803.528052] ali_stimer_read: stimer is not ready.
[ 803.784080] ali_stimer_read: stimer is not ready.
[ 804.040048] ali_stimer_read: stimer is not ready.
[ 804.296050] ali_stimer_read: stimer is not ready.
[ 804.552049] ali_stimer_read: stimer is not ready.
[ 804.808050] ali_stimer_read: stimer is not ready.
[ 805.064049] ali_stimer_read: stimer is not ready.
[ 805.320048] ali_stimer_read: stimer is not ready.
[ 805.576049] ali_stimer_read: stimer is not ready.
[ 805.832048] ali_stimer_read: stimer is not ready.
[ 806.088049] ali_stimer_read: stimer is not ready.
[ 806.344049] ali_stimer_read: stimer is not ready.
[ 806.600077] ali_stimer_read: stimer is not ready.
[ 1337.820270] reportbug[3574]: segfault at 78 ip b66212ab sp b5fc9460
error 4 in libpango-1.0.so.0.2600.2[b6602000+41000]
[ 1370.688336] reportbug[3629]: segfault at 7c ip b65ea6f5 sp b5f905b0
error 4 in libpango-1.0.so.0.2600.2[b65c9000+41000]
** Loaded modules:
Module Size Used by
radeon 398727 2
ttm 26172 1 radeon
drm_kms_helper 17247 1 radeon
drm 107671 5 radeon,ttm,drm_kms_helper
i2c_algo_bit 3497 1 radeon
ppdev 4058 0
lp 5570 0
parport 22554 2 ppdev,lp
sco 5837 2
bridge 32983 0
stp 996 1 bridge
bnep 7444 2
rfcomm 25131 0
l2cap 21677 4 bnep,rfcomm
crc16 1027 1 l2cap
bluetooth 36327 6 sco,bnep,rfcomm,l2cap
cisco_ipsec 572479 0
acpi_cpufreq 4943 0
speedstep_lib 2468 0
cpufreq_conservative 4018 0
cpufreq_stats 1940 0
cpufreq_powersave 602 0
cpufreq_userspace 1476 0
binfmt_misc 4907 1
uinput 4796 1
fuse 43750 1
loop 9753 0
arc4 974 2
ecb 1405 2
rt61pci 15720 0
snd_ali5451 11793 1
crc_itu_t 1035 1 rt61pci
snd_ac97_codec 79140 1 snd_ali5451
ac97_bus 710 1 snd_ac97_codec
rt2x00pci 3773 1 rt61pci
snd_pcm_oss 28671 0
rt2x00lib 19025 2 rt61pci,rt2x00pci
snd_mixer_oss 10461 1 snd_pcm_oss
led_class 1757 1 rt2x00lib
snd_pcm 47362 3 snd_ali5451,snd_ac97_codec,snd_pcm_oss
mac80211 122750 2 rt2x00pci,rt2x00lib
snd_seq_midi 3576 0
snd_rawmidi 12505 1 snd_seq_midi
cfg80211 87581 2 rt2x00lib,mac80211
rfkill 10260 4 bluetooth,cfg80211
snd_seq_midi_event 3684 1 snd_seq_midi
eeprom_93cx6 963 1 rt61pci
snd_seq 35459 2 snd_seq_midi,snd_seq_midi_event
snd_timer 12258 2 snd_pcm,snd_seq
i2c_ali1535 3974 0
i2c_ali15x3 4202 0
i2c_core 12648 5 radeon,drm,i2c_algo_bit,i2c_ali1535,i2c_ali15x3
snd_seq_device 3673 3 snd_seq_midi,snd_rawmidi,snd_seq
pcmcia 17442 0
snd 34363 11
snd_ali5451,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
container 1833 0
joydev 6771 0
ac 1640 0
battery 3782 0
shpchp 21220 0
alim1535_wdt 2110 0
soundcore 3450 1 snd
processor 26571 1 acpi_cpufreq
yenta_socket 16403 2
pci_hotplug 18065 1 shpchp
snd_page_alloc 5041 1 snd_pcm
rsrc_nonstatic 7057 1 yenta_socket
pcmcia_core 20446 3 pcmcia,yenta_socket,rsrc_nonstatic
pcspkr 1207 0
evdev 5609 23
psmouse 44413 0
serio_raw 2916 0
ext3 94192 2
jbd 32161 1 ext3
mbcache 3762 1 ext3
ide_cd_mod 21076 0
cdrom 26487 1 ide_cd_mod
ide_gd_mod 17171 4
ide_pci_generic 1924 0
ata_generic 2015 0
libata 114408 1 ata_generic
scsi_mod 101297 1 libata
8139cp 13417 0
ohci_hcd 16904 0
ehci_hcd 27574 0
alim15x3 4280 3
8139too 14945 0
video 14605 0
ali_agp 3046 1
usbcore 98126 3 ohci_hcd,ehci_hcd
floppy 40923 0
output 1204 1 video
mii 2714 2 8139cp,8139too
ide_core 64146 4 ide_cd_mod,ide_gd_mod,ide_pci_generic,alim15x3
nls_base 4541 1 usbcore
agpgart 19516 3 ttm,drm,ali_agp
button 3598 0
thermal 9206 0
fan 2586 0
thermal_sys 9378 4 processor,video,thermal,fan
** PCI devices:
00:00.0 Host bridge [0600]: ALi Corporation M1671 Super P4 Northbridge
[AGP4X,PCI and SDR/DDR] [10b9:1671] (rev 02)
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR+ INTx-
Latency: 0
Region 0: Memory at f0000000 (32-bit, prefetchable) [size=128M]
Capabilities: <access denied>
Kernel driver in use: agpgart-ali
00:01.0 PCI bridge [0604]: ALi Corporation PCI to AGP Controller
[10b9:5247] (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00009000-00009fff
Memory behind bridge: e0100000-e01fffff
Prefetchable memory behind bridge: e8000000-efffffff
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
00:02.0 USB Controller [0c03]: ALi Corporation USB 1.1 Controller
[10b9:5237] (rev 03) (prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (20000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 10
Region 0: Memory at e0000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <access denied>
Kernel driver in use: ohci_hcd
00:04.0 Multimedia audio controller [0401]: ALi Corporation M5451 PCI
AC-Link Controller Audio Device [10b9:5451] (rev 02)
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR+ <PERR+ INTx-
Latency: 64 (500ns min, 6000ns max)
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at 1000 [size=256]
Region 1: Memory at e0001000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <access denied>
Kernel driver in use: ALI 5451
00:06.0 Bridge [0680]: ALi Corporation M7101 Power Management
Controller [PMU] [10b9:7101]
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Kernel driver in use: ali1535_smbus
00:07.0 ISA bridge [0601]: ALi Corporation M1533/M1535/M1543 PCI to
ISA Bridge [Aladdin IV/V/V+] [10b9:1533]
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Capabilities: <access denied>
00:08.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+ INTx-
Latency: 64 (8000ns min, 16000ns max)
Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at 1400 [size=256]
Region 1: Memory at e0002000 (32-bit, non-prefetchable) [size=256]
Capabilities: <access denied>
Kernel driver in use: 8139too
00:0a.0 CardBus bridge [0607]: Texas Instruments PCI1410 PC card
Cardbus Controller [104c:ac50] (rev 02)
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 168, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 28000000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=02, subordinate=05, sec-latency=176
Memory window 0: 20000000-23fff000 (prefetchable)
Memory window 1: 24000000-27fff000
I/O window 0: 00001c00-00001cff
I/O window 1: 00002000-000020ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+
16-bit legacy interface ports at 0001
Kernel driver in use: yenta_cardbus
00:0f.0 IDE interface [0101]: ALi Corporation M5229 IDE [10b9:5229]
(rev c4) (prog-if fa)
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 1000ns max)
Interrupt: pin A routed to IRQ 255
Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
Region 4: I/O ports at 1800 [size=16]
Capabilities: <access denied>
Kernel driver in use: ALI15x3_IDE
01:00.0 VGA compatible controller [0300]: ATI Technologies Inc Radeon
Mobility M6 LY [1002:4c59] (prog-if 00 [VGA controller])
Subsystem: Hewlett-Packard Company Device [103c:0027]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping+ SERR+ FastB2B+ DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 66 (2000ns min), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e8000000 (32-bit, prefetchable) [size=128M]
Region 1: I/O ports at 9000 [size=256]
Region 2: Memory at e0100000 (32-bit, non-prefetchable) [size=64K]
[virtual] Expansion ROM at e0120000 [disabled] [size=128K]
Capabilities: <access denied>
02:00.0 Network controller [0280]: RaLink RT2561/RT61 802.11g PCI [1814:0301]
Subsystem: RaLink EW-7108PCg [1814:2561]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64, Cache Line Size: 128 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 24000000 (32-bit, non-prefetchable) [size=32K]
Capabilities: <access denied>
Kernel driver in use: rt61pci
** USB devices:
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-3-686 (SMP w/1 CPU core)
Locale: LANG=fi_FI.UTF-8, LC_CTYPE=fi_FI.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
*** /home/rami/Desktop/alsa-info_before_suspend.txt
upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.59
!!################################
!!Script ran on: Mon Apr 5 16:31:34 UTC 2010
!!Linux Distribution
!!------------------
Debian GNU/Linux squeeze/sid \n \l
!!DMI Information
!!---------------
Manufacturer: Hewlett-Packard
Product Name: HP OmniBook PC
!!Kernel Information
!!------------------
Kernel release: 2.6.32-3-686
Operating System: GNU/Linux
Architecture: i686
Processor: unknown
SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: 1.0.21
Library version: 1.0.22
Utilities version: 1.0.22
!!Loaded ALSA modules
!!-------------------
snd_ali5451
!!Sound Servers on this system
!!----------------------------
No sound servers found.
!!Soundcards recognised by ALSA
!!-----------------------------
0 [A5451 ]: ALI5451 - ALI 5451
ALI 5451 at 0x1000, irq 11
!!PCI Soundcards installed in the system
!!--------------------------------------
00:04.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link
Controller Audio Device (rev 02)
!!Advanced information - PCI Vendor/Device/Susbsystem ID's
!!--------------------------------------------------------
00:04.0 0401: 10b9:5451 (rev 02)
Subsystem: 103c:0027
!!Modprobe options (Sound related)
!!--------------------------------
snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-pcsp: index=-2
snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-pcsp: index=-2
!!Loaded sound module options
!!--------------------------
!!Module: snd_ali5451
enable : N
id : <NULL>
index : -1
pcm_channels : 32
spdif : N
!!AC97 Codec information
!!---------------------------
--startcollapse--
0-0/0: Realtek ALC200,200P rev 0
PCI Subsys Vendor: 0x0000
PCI Subsys Device: 0x0000
Flags: 0
Capabilities : -headphone out-
DAC resolution : 18-bit
ADC resolution : 18-bit
3D enhancement : Realtek 3D Stereo Enhancement
Current setup
Mic gain : +0dB [+0dB]
POP path : pre 3D
Sim. stereo : off
3D enhancement : off
Loudness : off
Mono output : MIX
Mic select : Mic2
ADC/DAC loopback : off
Extended ID : codec=0 rev=1 AMAP DSA=0 SPDIF VRA
Extended status : SPCV SPDIF=3/4 VRA
PCM front DAC : 48000Hz
PCM ADC : 48000Hz
SPDIF Control : Consumer PCM Category=0x2 Generation=1 Rate=48kHz
0:00 = 5950
0:02 = 0a0a
0:04 = 0000
0:06 = 000e
0:08 = 0000
0:0a = 000e
0:0c = 801f
0:0e = 801f
0:10 = 9f1f
0:12 = 8808
0:14 = 9f1f
0:16 = 9f1f
0:18 = 0808
0:1a = 0000
0:1c = 8000
0:1e = 0000
0:20 = 0100
0:22 = 0000
0:24 = 0000
0:26 = 800f
0:28 = 0605
0:2a = 0401
0:2c = bb80
0:2e = 0000
0:30 = 0000
0:32 = bb80
0:34 = 0000
0:36 = 0000
0:38 = 0000
0:3a = 2824
0:3c = 0000
0:3e = 0000
0:40 = 0000
0:42 = 0000
0:44 = 0000
0:46 = 0000
0:48 = 0000
0:4a = 0000
0:4c = 0000
0:4e = 0000
0:50 = 0000
0:52 = 0000
0:54 = 0000
0:56 = 0000
0:58 = 0000
0:5a = 0000
0:5c = 0000
0:5e = 0000
0:60 = 0000
0:62 = 0000
0:64 = 0000
0:66 = 0000
0:68 = 0000
0:6a = 0000
0:6c = 0000
0:6e = 0013
0:70 = 8210
0:72 = 6aa9
0:74 = 0062
0:76 = 1f0f
0:78 = 0000
0:7a = 57c2
0:7c = 414c
0:7e = 4710
--endcollapse--
!!ALSA Device nodes
!!-----------------
crw-rw----+ 1 root audio 116, 6 Apr 5 19:22 /dev/snd/controlC0
crw-rw----+ 1 root audio 116, 5 Apr 5 19:22 /dev/snd/pcmC0D0c
crw-rw----+ 1 root audio 116, 4 Apr 5 19:22 /dev/snd/pcmC0D0p
crw-rw----+ 1 root audio 116, 3 Apr 5 19:22 /dev/snd/seq
crw-rw----+ 1 root audio 116, 2 Apr 5 19:22 /dev/snd/timer
/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 60 Apr 5 19:22 .
drwxr-xr-x 3 root root 160 Apr 5 19:22 ..
lrwxrwxrwx 1 root root 12 Apr 5 19:22 pci-0000:00:04.0 -> ../controlC0
!!Aplay/Arecord output
!!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
card 0: A5451 [ALI 5451], device 0: ALI 5451 [ALI 5451]
Subdevices: 32/32
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
Subdevice #8: subdevice #8
Subdevice #9: subdevice #9
Subdevice #10: subdevice #10
Subdevice #11: subdevice #11
Subdevice #12: subdevice #12
Subdevice #13: subdevice #13
Subdevice #14: subdevice #14
Subdevice #15: subdevice #15
Subdevice #16: subdevice #16
Subdevice #17: subdevice #17
Subdevice #18: subdevice #18
Subdevice #19: subdevice #19
Subdevice #20: subdevice #20
Subdevice #21: subdevice #21
Subdevice #22: subdevice #22
Subdevice #23: subdevice #23
Subdevice #24: subdevice #24
Subdevice #25: subdevice #25
Subdevice #26: subdevice #26
Subdevice #27: subdevice #27
Subdevice #28: subdevice #28
Subdevice #29: subdevice #29
Subdevice #30: subdevice #30
Subdevice #31: subdevice #31
ARECORD
**** List of CAPTURE Hardware Devices ****
card 0: A5451 [ALI 5451], device 0: ALI 5451 [ALI 5451]
Subdevices: 1/1
Subdevice #0: subdevice #0
!!Amixer output
!!-------------
!!-------Mixer controls for card 0 [A5451]
Card hw:0 'A5451'/'ALI 5451 at 0x1000, irq 11'
Mixer name : 'Realtek ALC200,200P rev 0'
Components : 'AC97a:414c4710'
Controls : 37
Simple ctrls : 23
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 21 [68%] [-15.00dB] [on]
Front Right: Playback 21 [68%] [-15.00dB] [on]
Simple mixer control 'Master Mono',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 17 [55%] [-21.00dB] [on]
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [0.00dB] [on]
Front Right: Playback 31 [100%] [0.00dB] [on]
Simple mixer control '3D Control - Center',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 15
Mono: 0 [0%]
Simple mixer control '3D Control - Depth',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 15
Mono: 0 [0%]
Simple mixer control '3D Control - Switch',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 23 [74%] [0.00dB] [on]
Front Right: Playback 23 [74%] [0.00dB] [on]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'CD',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 23 [74%] [0.00dB] [off] Capture [off]
Front Right: Playback 23 [74%] [0.00dB] [off] Capture [off]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch
cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Mono
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-34.50dB] [off]
Front Left: Capture [on]
Front Right: Capture [on]
Simple mixer control 'Mic Boost (+20dB)',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'Mic Select',0
Capabilities: enum
Items: 'Mic1' 'Mic2'
Item0: 'Mic2'
Simple mixer control 'Video',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'Phone',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch
cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Mono
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-34.50dB] [off]
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'IEC958 Playback AC97-SPSA',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 3
Mono: 0 [0%]
Simple mixer control 'PC Speaker',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 15
Mono: Playback 8 [53%] [-21.00dB] [on]
Simple mixer control 'Aux',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'Mono Output Select',0
Capabilities: enum
Items: 'Mix' 'Mic'
Item0: 'Mix'
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch cswitch-joined penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 15
Front Left: Capture 0 [0%] [0.00dB] [off]
Front Right: Capture 0 [0%] [0.00dB] [off]
Simple mixer control 'Mix',0
Capabilities: cswitch cswitch-exclusive penum
Capture exclusive group: 0
Capture channels: Front Left - Front Right
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'Mix Mono',0
Capabilities: cswitch cswitch-exclusive penum
Capture exclusive group: 0
Capture channels: Front Left - Front Right
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'External Amplifier',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
!!Alsactl output
!!-------------
--startcollapse--
state.A5451 {
control.1 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Playback Switch'
value true
}
control.2 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Master Playback Volume'
value.0 21
value.1 21
}
control.3 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Headphone Playback Switch'
value true
}
control.4 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Headphone Playback Volume'
value.0 31
value.1 31
}
control.5 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Mono Playback Switch'
value true
}
control.6 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Master Mono Playback Volume'
value 17
}
control.7 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PC Speaker Playback Switch'
value true
}
control.8 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
comment.dbmin -4500
comment.dbmax 0
iface MIXER
name 'PC Speaker Playback Volume'
value 8
}
control.9 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Phone Playback Switch'
value false
}
control.10 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Phone Playback Volume'
value 0
}
control.11 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Playback Switch'
value false
}
control.12 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Mic Playback Volume'
value 0
}
control.13 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Boost (+20dB)'
value false
}
control.14 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Line Playback Switch'
value false
}
control.15 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Line Playback Volume'
value.0 0
value.1 0
}
control.16 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'CD Playback Switch'
value false
}
control.17 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'CD Playback Volume'
value.0 23
value.1 23
}
control.18 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Video Playback Switch'
value false
}
control.19 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Video Playback Volume'
value.0 0
value.1 0
}
control.20 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Aux Playback Switch'
value false
}
control.21 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Aux Playback Volume'
value.0 0
value.1 0
}
control.22 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PCM Playback Switch'
value true
}
control.23 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'PCM Playback Volume'
value.0 23
value.1 23
}
control.24 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 2
comment.item.0 Mic
comment.item.1 CD
comment.item.2 Video
comment.item.3 Aux
comment.item.4 Line
comment.item.5 Mix
comment.item.6 'Mix Mono'
comment.item.7 Phone
iface MIXER
name 'Capture Source'
value.0 Mic
value.1 Mic
}
control.25 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Capture Switch'
value false
}
control.26 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 15'
comment.dbmin 0
comment.dbmax 2250
iface MIXER
name 'Capture Volume'
value.0 0
value.1 0
}
control.27 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name '3D Control - Switch'
value false
}
control.28 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mix
comment.item.1 Mic
iface MIXER
name 'Mono Output Select'
value Mix
}
control.29 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic1
comment.item.1 Mic2
iface MIXER
name 'Mic Select'
value Mic2
}
control.30 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Center'
value 0
}
control.31 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Depth'
value 0
}
control.32 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.33 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Pro Mask'
value cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
}
control.34 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Default'
value '0082000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.35 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Playback Switch'
value false
}
control.36 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 3'
iface MIXER
name 'IEC958 Playback AC97-SPSA'
value 0
}
control.37 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'External Amplifier'
value false
}
}
--endcollapse--
!!All Loaded Modules
!!------------------
Module
radeon
ttm
drm_kms_helper
drm
i2c_algo_bit
ppdev
lp
parport
sco
bridge
stp
bnep
rfcomm
l2cap
crc16
bluetooth
cisco_ipsec
acpi_cpufreq
speedstep_lib
cpufreq_conservative
cpufreq_stats
cpufreq_powersave
cpufreq_userspace
binfmt_misc
uinput
fuse
loop
arc4
ecb
rt61pci
snd_ali5451
crc_itu_t
snd_ac97_codec
ac97_bus
rt2x00pci
snd_pcm_oss
rt2x00lib
snd_mixer_oss
led_class
snd_pcm
mac80211
snd_seq_midi
snd_rawmidi
cfg80211
rfkill
snd_seq_midi_event
eeprom_93cx6
snd_seq
snd_timer
i2c_ali1535
i2c_ali15x3
i2c_core
snd_seq_device
pcmcia
snd
container
joydev
ac
battery
shpchp
alim1535_wdt
soundcore
processor
yenta_socket
pci_hotplug
snd_page_alloc
rsrc_nonstatic
pcmcia_core
pcspkr
evdev
psmouse
serio_raw
ext3
jbd
mbcache
ide_cd_mod
cdrom
ide_gd_mod
ide_pci_generic
ata_generic
libata
scsi_mod
8139cp
ohci_hcd
ehci_hcd
alim15x3
8139too
video
ali_agp
usbcore
floppy
output
mii
ide_core
nls_base
agpgart
button
thermal
fan
thermal_sys
!!ALSA/HDA dmesg
!!------------------
*** /home/rami/Desktop/alsa-info_after_suspend.txt
upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.59
!!################################
!!Script ran on: Mon Apr 5 16:35:46 UTC 2010
!!Linux Distribution
!!------------------
Debian GNU/Linux squeeze/sid \n \l
!!DMI Information
!!---------------
Manufacturer: Hewlett-Packard
Product Name: HP OmniBook PC
!!Kernel Information
!!------------------
Kernel release: 2.6.32-3-686
Operating System: GNU/Linux
Architecture: i686
Processor: unknown
SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: 1.0.21
Library version: 1.0.22
Utilities version: 1.0.22
!!Loaded ALSA modules
!!-------------------
snd_ali5451
!!Sound Servers on this system
!!----------------------------
No sound servers found.
!!Soundcards recognised by ALSA
!!-----------------------------
0 [A5451 ]: ALI5451 - ALI 5451
ALI 5451 at 0x1000, irq 11
!!PCI Soundcards installed in the system
!!--------------------------------------
00:04.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link
Controller Audio Device (rev 02)
!!Advanced information - PCI Vendor/Device/Susbsystem ID's
!!--------------------------------------------------------
00:04.0 0401: 10b9:5451 (rev 02)
Subsystem: 103c:0027
!!Modprobe options (Sound related)
!!--------------------------------
snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-pcsp: index=-2
snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-pcsp: index=-2
!!Loaded sound module options
!!--------------------------
!!Module: snd_ali5451
enable : N
id : <NULL>
index : -1
pcm_channels : 32
spdif : N
!!AC97 Codec information
!!---------------------------
--startcollapse--
0-0/0: Realtek ALC200,200P rev 0
PCI Subsys Vendor: 0x0000
PCI Subsys Device: 0x0000
Flags: 0
Capabilities : -headphone out-
DAC resolution : 18-bit
ADC resolution : 18-bit
3D enhancement : Realtek 3D Stereo Enhancement
Current setup
Mic gain : +20dB [+0dB]
POP path : post 3D
Sim. stereo : on
3D enhancement : on
Loudness : on
Mono output : Mic
Mic select : Mic2
ADC/DAC loopback : on
Extended ID : codec=3 rev=3 AMAP LDAC SDAC CDAC DSA=3 VRM SPDIF DRA VRA
Extended status : PRL PRK PRJ PRI SPCV MADC LDAC SDAC CDAC
SPDIF=10/11 VRM SPDIF DRA VRA
PCM front DAC : 65535Hz
PCM Surr DAC : 65535Hz
PCM LFE DAC : 65535Hz
PCM ADC : 65535Hz
PCM MIC ADC : 65535Hz
SPDIF Control : PRO Non-audio Preemph50/15 Category=0x7f
Generation=1 Rate=32kHz DRS Validity
Extended modem ID: codec=3 CID2 CID1 HSET LIN2 LIN1
Modem status : GPIO MREF ADC1 DAC1 ADC2 DAC2 HADC HDAC PRA(GPIO)
PRB(res) PRC(ADC1) PRD(DAC1) PRE(ADC2) PRF(DAC2) PRG(HADC) PRH(HDAC)
Line1 rate : 65535Hz
Line2 rate : 65535Hz
Headset rate : 65535Hz
0:00 = ffff
0:02 = ffff
0:04 = ffff
0:06 = ffff
0:08 = ffff
0:0a = ffff
0:0c = ffff
0:0e = ffff
0:10 = ffff
0:12 = ffff
0:14 = ffff
0:16 = ffff
0:18 = ffff
0:1a = ffff
0:1c = ffff
0:1e = ffff
0:20 = ffff
0:22 = ffff
0:24 = ffff
0:26 = ffff
0:28 = ffff
0:2a = ffff
0:2c = ffff
0:2e = ffff
0:30 = ffff
0:32 = ffff
0:34 = ffff
0:36 = ffff
0:38 = ffff
0:3a = ffff
0:3c = ffff
0:3e = ffff
0:40 = ffff
0:42 = ffff
0:44 = ffff
0:46 = ffff
0:48 = ffff
0:4a = ffff
0:4c = ffff
0:4e = ffff
0:50 = ffff
0:52 = ffff
0:54 = ffff
0:56 = ffff
0:58 = ffff
0:5a = ffff
0:5c = ffff
0:5e = ffff
0:60 = ffff
0:62 = ffff
0:64 = ffff
0:66 = ffff
0:68 = ffff
0:6a = ffff
0:6c = ffff
0:6e = ffff
0:70 = ffff
0:72 = ffff
0:74 = ffff
0:76 = ffff
0:78 = ffff
0:7a = ffff
0:7c = ffff
0:7e = ffff
--endcollapse--
!!ALSA Device nodes
!!-----------------
crw-rw----+ 1 root audio 116, 6 Apr 5 19:22 /dev/snd/controlC0
crw-rw----+ 1 root audio 116, 5 Apr 5 19:22 /dev/snd/pcmC0D0c
crw-rw----+ 1 root audio 116, 4 Apr 5 19:33 /dev/snd/pcmC0D0p
crw-rw----+ 1 root audio 116, 3 Apr 5 19:22 /dev/snd/seq
crw-rw----+ 1 root audio 116, 2 Apr 5 19:22 /dev/snd/timer
/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 60 Apr 5 19:22 .
drwxr-xr-x 3 root root 160 Apr 5 19:22 ..
lrwxrwxrwx 1 root root 12 Apr 5 19:22 pci-0000:00:04.0 -> ../controlC0
!!Aplay/Arecord output
!!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
card 0: A5451 [ALI 5451], device 0: ALI 5451 [ALI 5451]
Subdevices: 32/32
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
Subdevice #8: subdevice #8
Subdevice #9: subdevice #9
Subdevice #10: subdevice #10
Subdevice #11: subdevice #11
Subdevice #12: subdevice #12
Subdevice #13: subdevice #13
Subdevice #14: subdevice #14
Subdevice #15: subdevice #15
Subdevice #16: subdevice #16
Subdevice #17: subdevice #17
Subdevice #18: subdevice #18
Subdevice #19: subdevice #19
Subdevice #20: subdevice #20
Subdevice #21: subdevice #21
Subdevice #22: subdevice #22
Subdevice #23: subdevice #23
Subdevice #24: subdevice #24
Subdevice #25: subdevice #25
Subdevice #26: subdevice #26
Subdevice #27: subdevice #27
Subdevice #28: subdevice #28
Subdevice #29: subdevice #29
Subdevice #30: subdevice #30
Subdevice #31: subdevice #31
ARECORD
**** List of CAPTURE Hardware Devices ****
card 0: A5451 [ALI 5451], device 0: ALI 5451 [ALI 5451]
Subdevices: 1/1
Subdevice #0: subdevice #0
!!Amixer output
!!-------------
!!-------Mixer controls for card 0 [A5451]
Card hw:0 'A5451'/'ALI 5451 at 0x1000, irq 11'
Mixer name : 'Realtek ALC200,200P rev 0'
Components : 'AC97a:414c4710'
Controls : 37
Simple ctrls : 23
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 21 [68%] [-15.00dB] [on]
Front Right: Playback 21 [68%] [-15.00dB] [on]
Simple mixer control 'Master Mono',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 17 [55%] [-21.00dB] [on]
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [0.00dB] [on]
Front Right: Playback 31 [100%] [0.00dB] [on]
Simple mixer control '3D Control - Center',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 15
Mono: 0 [0%]
Simple mixer control '3D Control - Depth',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 15
Mono: 0 [0%]
Simple mixer control '3D Control - Switch',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 23 [74%] [0.00dB] [on]
Front Right: Playback 23 [74%] [0.00dB] [on]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'CD',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 23 [74%] [0.00dB] [off] Capture [off]
Front Right: Playback 23 [74%] [0.00dB] [off] Capture [off]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch
cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Mono
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-34.50dB] [off]
Front Left: Capture [on]
Front Right: Capture [on]
Simple mixer control 'Mic Boost (+20dB)',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'Mic Select',0
Capabilities: enum
Items: 'Mic1' 'Mic2'
Item0: 'Mic2'
Simple mixer control 'Video',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'Phone',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch
cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Mono
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-34.50dB] [off]
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'IEC958 Playback AC97-SPSA',0
Capabilities: volume volume-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 3
Mono: 0 [0%]
Simple mixer control 'PC Speaker',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 15
Mono: Playback 8 [53%] [-21.00dB] [on]
Simple mixer control 'Aux',0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive penum
Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'Mono Output Select',0
Capabilities: enum
Items: 'Mix' 'Mic'
Item0: 'Mix'
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch cswitch-joined penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 15
Front Left: Capture 0 [0%] [0.00dB] [off]
Front Right: Capture 0 [0%] [0.00dB] [off]
Simple mixer control 'Mix',0
Capabilities: cswitch cswitch-exclusive penum
Capture exclusive group: 0
Capture channels: Front Left - Front Right
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'Mix Mono',0
Capabilities: cswitch cswitch-exclusive penum
Capture exclusive group: 0
Capture channels: Front Left - Front Right
Front Left: Capture [off]
Front Right: Capture [off]
Simple mixer control 'External Amplifier',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [off]
!!Alsactl output
!!-------------
--startcollapse--
state.A5451 {
control.1 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Playback Switch'
value true
}
control.2 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Master Playback Volume'
value.0 21
value.1 21
}
control.3 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Headphone Playback Switch'
value true
}
control.4 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Headphone Playback Volume'
value.0 31
value.1 31
}
control.5 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Mono Playback Switch'
value true
}
control.6 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -4650
comment.dbmax 0
iface MIXER
name 'Master Mono Playback Volume'
value 17
}
control.7 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PC Speaker Playback Switch'
value true
}
control.8 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
comment.dbmin -4500
comment.dbmax 0
iface MIXER
name 'PC Speaker Playback Volume'
value 8
}
control.9 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Phone Playback Switch'
value false
}
control.10 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Phone Playback Volume'
value 0
}
control.11 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Playback Switch'
value false
}
control.12 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Mic Playback Volume'
value 0
}
control.13 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Boost (+20dB)'
value false
}
control.14 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Line Playback Switch'
value false
}
control.15 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Line Playback Volume'
value.0 0
value.1 0
}
control.16 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'CD Playback Switch'
value false
}
control.17 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'CD Playback Volume'
value.0 23
value.1 23
}
control.18 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Video Playback Switch'
value false
}
control.19 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Video Playback Volume'
value.0 0
value.1 0
}
control.20 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Aux Playback Switch'
value false
}
control.21 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'Aux Playback Volume'
value.0 0
value.1 0
}
control.22 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PCM Playback Switch'
value true
}
control.23 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
comment.dbmin -3450
comment.dbmax 1200
iface MIXER
name 'PCM Playback Volume'
value.0 23
value.1 23
}
control.24 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 2
comment.item.0 Mic
comment.item.1 CD
comment.item.2 Video
comment.item.3 Aux
comment.item.4 Line
comment.item.5 Mix
comment.item.6 'Mix Mono'
comment.item.7 Phone
iface MIXER
name 'Capture Source'
value.0 Mic
value.1 Mic
}
control.25 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Capture Switch'
value false
}
control.26 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 15'
comment.dbmin 0
comment.dbmax 2250
iface MIXER
name 'Capture Volume'
value.0 0
value.1 0
}
control.27 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name '3D Control - Switch'
value false
}
control.28 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mix
comment.item.1 Mic
iface MIXER
name 'Mono Output Select'
value Mix
}
control.29 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic1
comment.item.1 Mic2
iface MIXER
name 'Mic Select'
value Mic2
}
control.30 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Center'
value 0
}
control.31 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Depth'
value 0
}
control.32 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.33 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Pro Mask'
value cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
}
control.34 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Default'
value '0082000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.35 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Playback Switch'
value false
}
control.36 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 3'
iface MIXER
name 'IEC958 Playback AC97-SPSA'
value 0
}
control.37 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'External Amplifier'
value false
}
}
--endcollapse--
!!All Loaded Modules
!!------------------
Module
radeon
ttm
drm_kms_helper
drm
i2c_algo_bit
ppdev
lp
parport
sco
bridge
stp
bnep
rfcomm
l2cap
crc16
bluetooth
cisco_ipsec
acpi_cpufreq
speedstep_lib
cpufreq_conservative
cpufreq_stats
cpufreq_powersave
cpufreq_userspace
binfmt_misc
uinput
fuse
loop
arc4
ecb
rt61pci
snd_ali5451
crc_itu_t
snd_ac97_codec
ac97_bus
rt2x00pci
snd_pcm_oss
rt2x00lib
snd_mixer_oss
led_class
snd_pcm
mac80211
snd_seq_midi
snd_rawmidi
cfg80211
rfkill
snd_seq_midi_event
eeprom_93cx6
snd_seq
snd_timer
i2c_ali1535
i2c_ali15x3
i2c_core
snd_seq_device
pcmcia
snd
container
joydev
ac
battery
shpchp
alim1535_wdt
soundcore
processor
yenta_socket
pci_hotplug
snd_page_alloc
rsrc_nonstatic
pcmcia_core
pcspkr
evdev
psmouse
serio_raw
ext3
jbd
mbcache
ide_cd_mod
cdrom
ide_gd_mod
ide_pci_generic
ata_generic
libata
scsi_mod
8139cp
ohci_hcd
ehci_hcd
alim15x3
8139too
video
ali_agp
usbcore
floppy
output
mii
ide_core
nls_base
agpgart
button
thermal
fan
thermal_sys
!!ALSA/HDA dmesg
!!------------------
1
0
Hi, Takashi
I developed the hdmi audio driver for new chipset MCP89 and GT21x.
The new HAD controller and codec support standard HDMI operation.
I attached the patch file, please check it.
Thanks
Wei.
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
6
50
Use usb_buffer_alloc() and usb_buffer_free() for transfer buffers.
We need DMA-coherent memory in this case as buffer contents are likely
to be modified after the URB was submitted, because the URB buffers
are mapped to the audio streams.
On x86_64, buffers allocated with kmalloc() may be beyond the boundaries
of 32bit accessible memory, and DMA bounce buffers will live at other
locations, unaccessible by the driver, and hence outside of the audio
buffer mapping.
Signed-off-by: Daniel Mack <daniel(a)caiaq.de>
Tested-by: Pedro Ribeiro <pedrib(a)gmail.com>
Cc: Takashi Iwai <tiwai(a)suse.de>
Cc: Alan Stern <stern(a)rowland.harvard.edu>
Cc: Chris Wright <chrisw(a)sous-sol.org>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: Andi Kleen <andi(a)firstfloor.org>
Cc: Andrew Morton <akpm(a)linux-foundation.org>
Cc: Greg KH <gregkh(a)suse.de>
Cc: iommu(a)lists.linux-foundation.org
Cc: Kernel development list <linux-kernel(a)vger.kernel.org>
Cc: USB list <linux-usb(a)vger.kernel.org>
Cc: stable(a)kernel.org
---
sound/usb/caiaq/audio.c | 57 ++++++++++++++++++++++++++--------------------
1 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
index 4328cad..adbeefd 100644
--- a/sound/usb/caiaq/audio.c
+++ b/sound/usb/caiaq/audio.c
@@ -552,46 +552,47 @@ static struct urb **alloc_urbs(struct snd_usb_caiaqdev *dev, int dir, int *ret)
}
for (i = 0; i < N_URBS; i++) {
- urbs[i] = usb_alloc_urb(FRAMES_PER_URB, GFP_KERNEL);
- if (!urbs[i]) {
+ struct urb *u = usb_alloc_urb(FRAMES_PER_URB, GFP_KERNEL);
+ if (!u) {
log("unable to usb_alloc_urb(), OOM!?\n");
*ret = -ENOMEM;
return urbs;
}
- urbs[i]->transfer_buffer =
- kmalloc(FRAMES_PER_URB * BYTES_PER_FRAME, GFP_KERNEL);
- if (!urbs[i]->transfer_buffer) {
- log("unable to kmalloc() transfer buffer, OOM!?\n");
+ urbs[i] = u;
+ u->dev = usb_dev;
+ u->pipe = pipe;
+ u->transfer_buffer_length =
+ FRAMES_PER_URB * BYTES_PER_FRAME;
+ u->context = &dev->data_cb_info[i];
+ u->interval = 1;
+ u->transfer_flags = URB_ISO_ASAP;
+ u->number_of_packets = FRAMES_PER_URB;
+ u->complete = (dir == SNDRV_PCM_STREAM_CAPTURE) ?
+ read_completed : write_completed;
+ u->transfer_buffer = usb_alloc_coherent(usb_dev,
+ u->transfer_buffer_length,
+ GFP_KERNEL, &u->transfer_dma);
+ if (!u->transfer_buffer) {
+ log("usb_alloc_coherent() failed, OOM!?\n");
*ret = -ENOMEM;
return urbs;
}
for (frame = 0; frame < FRAMES_PER_URB; frame++) {
struct usb_iso_packet_descriptor *iso =
- &urbs[i]->iso_frame_desc[frame];
+ &u->iso_frame_desc[frame];
iso->offset = BYTES_PER_FRAME * frame;
iso->length = BYTES_PER_FRAME;
}
-
- urbs[i]->dev = usb_dev;
- urbs[i]->pipe = pipe;
- urbs[i]->transfer_buffer_length = FRAMES_PER_URB
- * BYTES_PER_FRAME;
- urbs[i]->context = &dev->data_cb_info[i];
- urbs[i]->interval = 1;
- urbs[i]->transfer_flags = URB_ISO_ASAP;
- urbs[i]->number_of_packets = FRAMES_PER_URB;
- urbs[i]->complete = (dir == SNDRV_PCM_STREAM_CAPTURE) ?
- read_completed : write_completed;
}
*ret = 0;
return urbs;
}
-static void free_urbs(struct urb **urbs)
+static void free_urbs(struct usb_device *usb_dev, struct urb **urbs)
{
int i;
@@ -603,7 +604,10 @@ static void free_urbs(struct urb **urbs)
continue;
usb_kill_urb(urbs[i]);
- kfree(urbs[i]->transfer_buffer);
+ usb_free_coherent(usb_dev,
+ urbs[i]->transfer_buffer_length,
+ urbs[i]->transfer_buffer,
+ urbs[i]->transfer_dma);
usb_free_urb(urbs[i]);
}
@@ -613,6 +617,7 @@ static void free_urbs(struct urb **urbs)
int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev)
{
int i, ret;
+ struct usb_device *usb_dev = dev->chip.dev;
dev->n_audio_in = max(dev->spec.num_analog_audio_in,
dev->spec.num_digital_audio_in) /
@@ -689,15 +694,15 @@ int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev)
dev->data_urbs_in = alloc_urbs(dev, SNDRV_PCM_STREAM_CAPTURE, &ret);
if (ret < 0) {
kfree(dev->data_cb_info);
- free_urbs(dev->data_urbs_in);
+ free_urbs(usb_dev, dev->data_urbs_in);
return ret;
}
dev->data_urbs_out = alloc_urbs(dev, SNDRV_PCM_STREAM_PLAYBACK, &ret);
if (ret < 0) {
kfree(dev->data_cb_info);
- free_urbs(dev->data_urbs_in);
- free_urbs(dev->data_urbs_out);
+ free_urbs(usb_dev, dev->data_urbs_in);
+ free_urbs(usb_dev, dev->data_urbs_out);
return ret;
}
@@ -706,10 +711,12 @@ int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev)
void snd_usb_caiaq_audio_free(struct snd_usb_caiaqdev *dev)
{
+ struct usb_device *usb_dev = dev->chip.dev;
+
debug("%s(%p)\n", __func__, dev);
stream_stop(dev);
- free_urbs(dev->data_urbs_in);
- free_urbs(dev->data_urbs_out);
+ free_urbs(usb_dev, dev->data_urbs_in);
+ free_urbs(usb_dev, dev->data_urbs_out);
kfree(dev->data_cb_info);
}
--
1.7.1
1
0
On Thu, Apr 01, 2010 at 06:01:38PM +0200, Valentin Longchamp wrote:
> Hi Sascha,
>
> Sascha Hauer wrote:
>>
>> Find the latest version of my code here:
>>
>> The following changes since commit 01e77706cdde7c0b47e5ca1f4284a795504c7c40:
>> Linus Torvalds (1):
>> Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux
>>
>> are available in the git repository at:
>>
>> git://git.pengutronix.de/git/sha/linux-2.6.git mc13783
>>
>> Sascha Hauer (3):
>> add a mc13783 codec driver
>> add phycore-mc13783 sound support
>> pcm038: add sound support
>>
>> arch/arm/mach-mx2/mach-pcm038.c | 23 ++-
>> sound/soc/codecs/Kconfig | 4 +
>> sound/soc/codecs/Makefile | 2 +
>> sound/soc/codecs/mc13783.c | 727 +++++++++++++++++++++++++++++++++++++++
>> sound/soc/codecs/mc13783.h | 32 ++
>> sound/soc/imx/Kconfig | 9 +
>> sound/soc/imx/Makefile | 3 +
>> sound/soc/imx/phycore-mc13783.c | 160 +++++++++
>> 8 files changed, 959 insertions(+), 1 deletions(-)
>> create mode 100644 sound/soc/codecs/mc13783.c
>> create mode 100644 sound/soc/codecs/mc13783.h
>> create mode 100644 sound/soc/imx/phycore-mc13783.c
>>
>>> And do you know if your initial mc13783 codec support coupled with
>>> mx31 had some limitations ? Our setup is quite straightforward, we
>>> have direct connection from the mx31 to the mc13783 on a single SSI.
>>
>> Our board uses both SSI channels of the MC13783 which we then mux into
>> one channel in the DAM unit. I don't know how this affects you.
>>
>
> I have struggled with the DAM unit (this thing is an awful bulk of
> wires) and now I get some sound on the loudspeaker.
>
> The thing is that I get a less than a second sound loop (I use aplay to
> test, so userspace app should be ok), as if the buffer that the fiq asm
> interrupt (from ssi_fiq.S) copies to the SSI hardware never was updated.
>
> If I have understood the fiq behaviour correctly, you have a asm fiq
> interrupt that does copy a larger tx buffer into the SSI hardware.
> Besides it, you have the imx_ssi_timer_callback that checks when the tx
> buffer was completely copied. If it is the case, then a new buffer tx
> buffer is "issued" with the snd_pcm_period_elapsed call (and then
> snd_pcm_update_hw_ptr0). Is this behaviour correct ?
Yes.
>
> If then it looks like on my system, I have a problem with the
> snd_pcm_update_hw_ptr0 call.
You could try reverting b4e82b5b785670b68136765059d1afc65c0ae023. Though
I have tested it on my boards it may have some implications.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
3
4