aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/oxygen/oxygen.c
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2011-01-10 15:59:38 +0100
committerTakashi Iwai <tiwai@suse.de>2011-01-10 16:45:53 +0100
commit1f4d7be7293aecd5f8469a46f606f62f0f05d84c (patch)
treed0caf037ec00a8684b18e8d413990c82cfc5f48a /sound/pci/oxygen/oxygen.c
parentALSA: Don't leak in sound/core/oss/pcm_oss.c::snd_pcm_hw_param_near() (diff)
downloadlinux-dev-1f4d7be7293aecd5f8469a46f606f62f0f05d84c.tar.xz
linux-dev-1f4d7be7293aecd5f8469a46f606f62f0f05d84c.zip
ALSA: oxygen: allow different number of PCM and mixer channels
For cards like the Xonar HDAV1.3, differentiate between the number of PCM channels that can be played and the number of channels whose volume can be adjusted. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/oxygen/oxygen.c')
-rw-r--r--sound/pci/oxygen/oxygen.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c
index dc47977becae..fe7ed4fc9f46 100644
--- a/sound/pci/oxygen/oxygen.c
+++ b/sound/pci/oxygen/oxygen.c
@@ -185,7 +185,7 @@ static void ak4396_init(struct oxygen *chip)
{
struct generic_data *data = chip->model_data;
- data->dacs = chip->model.dac_channels / 2;
+ data->dacs = chip->model.dac_channels_pcm / 2;
data->ak4396_regs[0][AK4396_CONTROL_2] =
AK4396_SMUTE | AK4396_DEM_OFF | AK4396_DFS_NORMAL;
ak4396_registers_init(chip);
@@ -583,7 +583,8 @@ static const struct oxygen_model model_generic = {
CAPTURE_1_FROM_SPDIF |
CAPTURE_2_FROM_AC97_1 |
AC97_CD_INPUT,
- .dac_channels = 8,
+ .dac_channels_pcm = 8,
+ .dac_channels_mixer = 8,
.dac_volume_min = 0,
.dac_volume_max = 255,
.function_flags = OXYGEN_FUNCTION_SPI |
@@ -643,7 +644,8 @@ static int __devinit get_oxygen_model(struct oxygen *chip,
PLAYBACK_1_TO_SPDIF;
if (id->driver_data == MODEL_FANTASIA)
chip->model.device_config |= CAPTURE_0_FROM_I2S_1;
- chip->model.dac_channels = 2;
+ chip->model.dac_channels_pcm = 2;
+ chip->model.dac_channels_mixer = 2;
break;
}
if (id->driver_data == MODEL_MERIDIAN ||