From 2be7def9bac9cc5b894988030377b62ee6be9c39 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Tue, 22 Dec 2009 21:03:06 -0800 Subject: [PATCH] 6912601 audiocmi volume control non-functional on CMI8768 --- usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.c | 7 ++++++- usr/src/uts/common/io/audio/drv/audiocmi/audiocmi.h | 8 ++------ 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; -- 2.11.4.GIT