Index: alsa-driver/alsa-kernel/include/asound.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/include/asound.h,v retrieving revision 1.55 diff -u -r1.55 asound.h --- alsa-driver/alsa-kernel/include/asound.h 16 Aug 2005 10:32:04 -0000 1.55 +++ alsa-driver/alsa-kernel/include/asound.h 18 Sep 2005 13:21:42 -0000 @@ -844,6 +844,16 @@ } bytes; struct sndrv_aes_iec958 iec958; } value; /* RO */ + union { + union { + long scale[128]; /* Index into conversion to dB function. */ + long *scale_ptr; + } integer; + union { + long long scale[64]; /* Index into conversion to dB function. */ + long long *scale_ptr; + } integer64; + } scale; /* RO */ struct timespec tstamp; unsigned char reserved[128-sizeof(struct timespec)]; }; Index: alsa-driver/alsa-kernel/pci/ca0106/ca0106_mixer.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ca0106/ca0106_mixer.c,v retrieving revision 1.7 diff -u -r1.7 ca0106_mixer.c --- alsa-driver/alsa-kernel/pci/ca0106/ca0106_mixer.c 30 Aug 2005 20:00:46 -0000 1.7 +++ alsa-driver/alsa-kernel/pci/ca0106/ca0106_mixer.c 18 Sep 2005 13:21:42 -0000 @@ -331,7 +331,9 @@ value = snd_ca0106_ptr_read(emu, reg, channel_id); ucontrol->value.integer.value[0] = 0xff - ((value >> 24) & 0xff); /* Left */ + ucontrol->scale.integer.scale[0] = 1; ucontrol->value.integer.value[1] = 0xff - ((value >> 16) & 0xff); /* Right */ + ucontrol->scale.integer.scale[1] = 1; return 0; }