summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGarrett D'Amore <gdamore@opensolaris.org>2009-12-22 21:03:06 -0800
committerGarrett D'Amore <gdamore@opensolaris.org>2009-12-22 21:03:06 -0800
commit2be7def9bac9cc5b894988030377b62ee6be9c39 (patch)
tree981b830a09a4df1638257027ba46f6c7573c5e0a /usr/src
parent7f8098eddd24ef5d0d43749a8f4c2c245bdcc077 (diff)
downloadillumos-joyent-2be7def9bac9cc5b894988030377b62ee6be9c39.tar.gz
6912601 audiocmi volume control non-functional on CMI8768
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c7
-rw-r--r--usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h8
2 files changed, 8 insertions, 7 deletions
diff --git a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c
index 79a16dc080..677e5e9c90 100644
--- a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c
+++ b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c
@@ -706,7 +706,11 @@ cmpci_alloc_ctrl(cmpci_dev_t *dev, uint32_t num, uint64_t val)
static void
cmpci_add_controls(cmpci_dev_t *dev)
{
- cmpci_alloc_ctrl(dev, CTL_VOLUME, 75);
+ if (dev->softvol) {
+ (void) audio_dev_add_soft_volume(dev->adev);
+ } else {
+ cmpci_alloc_ctrl(dev, CTL_VOLUME, 75);
+ }
cmpci_alloc_ctrl(dev, CTL_LINEOUT, 90 | (90 << 8));
cmpci_alloc_ctrl(dev, CTL_SPEAKER, 75);
cmpci_alloc_ctrl(dev, CTL_MIC, 32);
@@ -1105,6 +1109,7 @@ cmpci_attach(dev_info_t *dip)
} else if ((val & INTCTRL_MDL_068) == INTCTRL_MDL_068) {
audio_dev_set_version(adev, "CMI-8768");
dev->maxch = 8;
+ dev->softvol = B_TRUE; /* No hardware PCM volume */
} else if ((val & INTCTRL_MDL_055) == INTCTRL_MDL_055) {
audio_dev_set_version(adev, "CMI-8738-055");
dev->maxch = 6;
diff --git a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h
index 5404ff9d35..5c20ab1b09 100644
--- a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h
+++ b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h
@@ -302,17 +302,13 @@ struct cmpci_dev {
ddi_acc_handle_t acch;
caddr_t regs;
+ boolean_t softvol;
+
int pintrs;
int rintrs;
ddi_intr_handle_t ihandle;
kstat_t *ksp;
- int model;
-#define MDL_CM8738 1
-#define MDL_CM8338A 2
-#define MDL_CM8338B 3
-#define MDL_CM8768 4
-
int maxch;
boolean_t suspended;