Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic Correct codec id of VT1611A.



details:   https://anonhg.NetBSD.org/src/rev/e30511744c60
branches:  trunk
changeset: 538551:e30511744c60
user:      kent <kent%NetBSD.org@localhost>
date:      Tue Oct 22 13:48:30 2002 +0000

description:
Correct codec id of VT1611A.
Add codec id of VT1616.

ALC650 codec specific chagne:
 Add outputs.surround.mixtofront,
 outputs.center.mixtofront, and outputs.lfe.mixtofront.

VT1616 codec specific change:
 Add outputs.surround.mixtofront,
 outputs.center.mixtofront, and outputs.lfe.mixtofront.
 (Not tested)

XXX: We should provide ac97(4) manual page and describe
codec-specific features.

diffstat:

 sys/dev/ic/ac97.c |  99 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 75 insertions(+), 24 deletions(-)

diffs (161 lines):

diff -r 8b59143bd1ac -r e30511744c60 sys/dev/ic/ac97.c
--- a/sys/dev/ic/ac97.c Tue Oct 22 13:47:40 2002 +0000
+++ b/sys/dev/ic/ac97.c Tue Oct 22 13:48:30 2002 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: ac97.c,v 1.34 2002/10/16 16:38:25 kent Exp $ */
+/*      $NetBSD: ac97.c,v 1.35 2002/10/22 13:48:30 kent Exp $ */
 /*     $OpenBSD: ac97.c,v 1.8 2000/07/19 09:01:35 csapuntz Exp $       */
 
 /*
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ac97.c,v 1.34 2002/10/16 16:38:25 kent Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ac97.c,v 1.35 2002/10/22 13:48:30 kent Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -325,6 +325,7 @@
 int ac97_add_port(struct ac97_softc *as, const struct ac97_source_info *src);
 
 static void ac97_alc650_init(struct ac97_softc *);
+static void ac97_vt1616_init(struct ac97_softc *);
 
 struct ac97_codec_if_vtbl ac97civ = {
        ac97_mixer_get_port,
@@ -454,10 +455,18 @@
        { AC97_CODEC_ID('H', 'R', 'S', 0),
          AC97_VENDOR_ID_MASK,          "Intersil unknown",     },
 
+       /*
+        * IC Ensemble (VIA)
+        *      http://www.viatech.com/en/datasheet/DS1616.pdf
+        */
        { AC97_CODEC_ID('I', 'C', 'E', 0x01),
-         0xffffffff,                   "ICEnsemble ICE1230",   },
+         0xffffffff,                   "ICEnsemble ICE1230/VT1611",    },
        { AC97_CODEC_ID('I', 'C', 'E', 0x11),
-         0xffffffff,                   "ICEnsemble ICE1232",   },
+         0xffffffff,                   "ICEnsemble ICE1232/VT1611A",   },
+       { AC97_CODEC_ID('I', 'C', 'E', 0x14),
+         0xffffffff,                   "ICEnsemble ICE1232A",  },
+       { AC97_CODEC_ID('I', 'C', 'E', 0x51),
+         0xffffffff,                   "VIA Technologies VT1616", ac97_vt1616_init },
        { AC97_CODEC_ID('I', 'C', 'E', 0),
          AC97_VENDOR_ID_MASK,          "ICEnsemble unknown",   },
 
@@ -495,13 +504,8 @@
 
        /*
         * VIA
-        * No datasheets are available.
         * http://www.viatech.com/en/multimedia/audio.jsp
-        *
-        * What about VT1616?
         */
-       { AC97_CODEC_ID('V', 'I', 'A', 0x43),
-         0xffffffff,                   "VIA Technologies VT1611A", },
        { AC97_CODEC_ID('V', 'I', 'A', 0x61),
          0xffffffff,                   "VIA Technologies VT1612A", },
        { AC97_CODEC_ID('V', 'I', 'A', 0),
@@ -1421,27 +1425,31 @@
 
 #define ALC650_REG_MULTI_CHANNEL_CONTROL       0x6a
 #define                ALC650_MCC_SLOT_MODIFY_MASK             0xc000
-#define                ALC650_MCC_FRONTDAC_FROM_SPDIFIN        0x2000
-#define                ALC650_MCC_SPDIFOUT_FROM_ADC            0x1000
-#define                ALC650_MCC_PCM_FROM_SPDIFIN             0x0800
-#define                ALC650_MCC_MIC_OR_CENTERLFE             0x0400
-#define                ALC650_MCC_LINEIN_OR_SURROUND           0x0200
-#define                ALC650_MCC_INDEPENDENT_MASTER_L         0x0080
-#define                ALC650_MCC_INDEPENDENT_MASTER_R         0x0040
-#define                ALC650_MCC_ANALOG_TO_CENTERLFE          0x0020
-#define                ALC650_MCC_ANALOG_TO_SURROUND           0x0010
-#define                ALC650_MCC_EXCHANGE_CENTERLFE           0x0008
-#define                ALC650_MCC_CENTERLFE_DOWNMIX            0x0004
-#define                ALC650_MCC_SURROUND_DOWNMIX             0x0002
-#define                ALC650_MCC_LINEOUT_TO_SURROUND          0x0001
+#define                ALC650_MCC_FRONTDAC_FROM_SPDIFIN        0x2000 /* 13 */
+#define                ALC650_MCC_SPDIFOUT_FROM_ADC            0x1000 /* 12 */
+#define                ALC650_MCC_PCM_FROM_SPDIFIN             0x0800 /* 11 */
+#define                ALC650_MCC_MIC_OR_CENTERLFE             0x0400 /* 10 */
+#define                ALC650_MCC_LINEIN_OR_SURROUND           0x0200 /* 9 */
+#define                ALC650_MCC_INDEPENDENT_MASTER_L         0x0080 /* 7 */
+#define                ALC650_MCC_INDEPENDENT_MASTER_R         0x0040 /* 6 */
+#define                ALC650_MCC_ANALOG_TO_CENTERLFE          0x0020 /* 5 */
+#define                ALC650_MCC_ANALOG_TO_SURROUND           0x0010 /* 4 */
+#define                ALC650_MCC_EXCHANGE_CENTERLFE           0x0008 /* 3 */
+#define                ALC650_MCC_CENTERLFE_DOWNMIX            0x0004 /* 2 */
+#define                ALC650_MCC_SURROUND_DOWNMIX             0x0002 /* 1 */
+#define                ALC650_MCC_LINEOUT_TO_SURROUND          0x0001 /* 0 */
 static void
 ac97_alc650_init(struct ac97_softc *as)
 {
-       static const struct ac97_source_info sources[3] = {
+       static const struct ac97_source_info sources[6] = {
                { AudioCoutputs, AudioNsurround, "lineinjack",
                  AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
                  ALC650_REG_MULTI_CHANNEL_CONTROL,
                  0x0000, 1, 9, 0, 0, CHECK_SURROUND },
+               { AudioCoutputs, AudioNsurround, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 ALC650_REG_MULTI_CHANNEL_CONTROL,
+                 0x0000, 1, 1, 0, 0, CHECK_SURROUND },
                { AudioCoutputs, AudioNcenter, "micjack",
                  AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
                  ALC650_REG_MULTI_CHANNEL_CONTROL,
@@ -1449,9 +1457,52 @@
                { AudioCoutputs, AudioNlfe, "micjack",
                  AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
                  ALC650_REG_MULTI_CHANNEL_CONTROL,
-                 0x0000, 1, 10, 0, 0, CHECK_LFE }};
+                 0x0000, 1, 10, 0, 0, CHECK_LFE },
+               { AudioCoutputs, AudioNcenter, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 ALC650_REG_MULTI_CHANNEL_CONTROL,
+                 0x0000, 1, 2, 0, 0, CHECK_CENTER },
+               { AudioCoutputs, AudioNlfe, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 ALC650_REG_MULTI_CHANNEL_CONTROL,
+                 0x0000, 1, 2, 0, 0, CHECK_LFE },
+       };
+
+       ac97_add_port(as, &sources[0]);
+       ac97_add_port(as, &sources[1]);
+       ac97_add_port(as, &sources[2]);
+       ac97_add_port(as, &sources[3]);
+       ac97_add_port(as, &sources[4]);
+       ac97_add_port(as, &sources[5]);
+}
+
+#define VT1616_REG_IO_CONTROL  0x5a
+#define                VT1616_IC_LVL                   (1 << 15)
+#define                VT1616_IC_LFECENTER_TO_FRONT    (1 << 12)
+#define                VT1616_IC_SURROUND_TO_FRONT     (1 << 11)
+#define                VT1616_IC_BPDC                  (1 << 10)
+#define                VT1616_IC_DC                    (1 << 9)
+#define                VT1616_IC_IB_MASK               0x000c
+static void
+ac97_vt1616_init(struct ac97_softc *as)
+{
+       static const struct ac97_source_info sources[3] = {
+               { AudioCoutputs, AudioNsurround, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 VT1616_REG_IO_CONTROL,
+                 0x0000, 1, 11, 0, 0, CHECK_SURROUND },
+               { AudioCoutputs, AudioNcenter, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 VT1616_REG_IO_CONTROL,
+                 0x0000, 1, 12, 0, 0, CHECK_CENTER },
+               { AudioCoutputs, AudioNlfe, "mixtofront",
+                 AUDIO_MIXER_ENUM, WRAP(ac97_on_off),
+                 VT1616_REG_IO_CONTROL,
+                 0x0000, 1, 12, 0, 0, CHECK_LFE },
+       };
 
        ac97_add_port(as, &sources[0]);
        ac97_add_port(as, &sources[1]);
        ac97_add_port(as, &sources[2]);
 }
+



Home | Main Index | Thread Index | Old Index