summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/audio
diff options
context:
space:
mode:
authorZhao Edgar Liu - Sun Microsystems <Edgar.Liu@Sun.COM>2010-01-28 13:19:17 +0800
committerZhao Edgar Liu - Sun Microsystems <Edgar.Liu@Sun.COM>2010-01-28 13:19:17 +0800
commit70feb41c25b515ebed2e578ae48c2bd8966a3e5a (patch)
tree9d416d26838bcb02beac1f4626352ee7b29f7daf /usr/src/uts/common/io/audio
parent1ed53a3f65abecaadc1b967e341970ad0f6b2aeb (diff)
downloadillumos-gate-70feb41c25b515ebed2e578ae48c2bd8966a3e5a.tar.gz
6917585 Microphone again enabled
Diffstat (limited to 'usr/src/uts/common/io/audio')
-rw-r--r--usr/src/uts/common/io/audio/drv/audiohd/audiohd.c17
-rw-r--r--usr/src/uts/common/io/audio/drv/audiohd/audiohd.h1
2 files changed, 8 insertions, 10 deletions
diff --git a/usr/src/uts/common/io/audio/drv/audiohd/audiohd.c b/usr/src/uts/common/io/audio/drv/audiohd/audiohd.c
index b02325540a..40bde09e62 100644
--- a/usr/src/uts/common/io/audio/drv/audiohd/audiohd.c
+++ b/usr/src/uts/common/io/audio/drv/audiohd/audiohd.c
@@ -239,6 +239,10 @@ audiohd_set_chipset_info(audiohd_state_t *statep)
name = "ATI HD Audio";
vers = "SB600";
break;
+ case 0x10029442:
+ name = "ATI HD Audio";
+ vers = "Radeon HD 4850";
+ break;
case 0x1002aa38:
name = "ATI HD Audio";
vers = "Radeon HD 4670";
@@ -557,7 +561,6 @@ audiohd_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
/*
* Add the h/w interrupt handler and initialise mutexes
*/
-
if ((intr_types & DDI_INTR_TYPE_MSI) && statep->msi_enable) {
if (audiohd_add_intrs(statep, DDI_INTR_TYPE_MSI) ==
DDI_SUCCESS) {
@@ -1969,7 +1972,7 @@ audiohd_set_mongain(void *arg, uint64_t val)
mutex_enter(&statep->hda_mutex);
pc->val = val;
- audiohd_configure_input(statep);
+ audiohd_set_monitor_gain(statep);
mutex_exit(&statep->hda_mutex);
return (0);
@@ -4347,13 +4350,11 @@ audiohd_finish_input_path(hda_codec_t *codec)
*
* Arguments:
* hda_codec_t *codec where the monitor path exists
- * audiohd_ostream_t *ostream output ostream
* wid_t id no. of widget being searched
* int mixer share or not
*/
static int
-audiohd_find_inpin_for_monitor(hda_codec_t *codec,
- audiohd_path_t *path, wid_t id, int mixer)
+audiohd_find_inpin_for_monitor(hda_codec_t *codec, wid_t id, int mixer)
{
wid_t wid;
audiohd_widget_t *widget;
@@ -4407,7 +4408,6 @@ audiohd_find_inpin_for_monitor(hda_codec_t *codec,
AUDIOHD_PATH_DAC)
continue;
if (audiohd_find_inpin_for_monitor(codec,
- path,
widget->avail_conn[i], mixer) ==
DDI_SUCCESS) {
widget->selmon[widget->used++] = i;
@@ -4422,7 +4422,6 @@ audiohd_find_inpin_for_monitor(hda_codec_t *codec,
AUDIOHD_PATH_DAC)
continue;
if (audiohd_find_inpin_for_monitor(codec,
- path,
widget->avail_conn[i],
mixer) ==
DDI_SUCCESS) {
@@ -4507,7 +4506,6 @@ audiohd_build_monitor_path(hda_codec_t *codec)
find = 0;
if (audiohd_find_inpin_for_monitor(
codec,
- path,
widget->avail_conn[k], 0) ==
DDI_SUCCESS) {
path->mon_wid[j][l] = wid;
@@ -4519,7 +4517,6 @@ audiohd_build_monitor_path(hda_codec_t *codec)
} else if (
audiohd_find_inpin_for_monitor(
codec,
- path,
widget->avail_conn[k], 1) ==
DDI_SUCCESS) {
path->mon_wid[j][l] = wid;
@@ -4540,7 +4537,7 @@ audiohd_build_monitor_path(hda_codec_t *codec)
* be NULL connection.
*/
if (!find) {
- path->mon_wid[i][l] = 0;
+ path->mon_wid[j][l] = 0;
widget->path_flags |=
AUDIOHD_PATH_NOMON;
}
diff --git a/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h b/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h
index c0f42ab8ec..b61d66ccad 100644
--- a/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h
+++ b/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h
@@ -36,6 +36,7 @@ extern "C" {
#define AUDIOHD_VID_CIRRUS 0x1013
#define AUDIOHD_VID_NVIDIA 0x10de
#define AUDIOHD_VID_REALTEK 0x10ec
+#define AUDIOHD_VID_CREATIVE 0x1102
#define AUDIOHD_VID_IDT 0x111d
#define AUDIOHD_VID_ANALOG 0x11d4
#define AUDIOHD_VID_CONEXANT 0x14f1