--- a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c Tue Dec 22 20:59:01 2009 -0800
+++ b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c Tue Dec 22 21:03:06 2009 -0800
@@ -706,7 +706,11 @@
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 @@
} 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;
--- a/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h Tue Dec 22 20:59:01 2009 -0800
+++ b/usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h Tue Dec 22 21:03:06 2009 -0800
@@ -302,17 +302,13 @@
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;