Source-Changes-HG archive

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

[src/trunk]: src/sys/dev/pci/hdaudio be less spammy when dumping assocs. extr...



details:   https://anonhg.NetBSD.org/src/rev/b6f26678998d
branches:  trunk
changeset: 757125:b6f26678998d
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Sun Aug 15 19:39:56 2010 +0000

description:
be less spammy when dumping assocs. extra details can be had with boot -x

diffstat:

 sys/dev/pci/hdaudio/hdaudio_afg.c |  156 ++++++++++++++++++++++++-------------
 sys/dev/pci/hdaudio/hdaudiovar.h  |    4 +-
 2 files changed, 102 insertions(+), 58 deletions(-)

diffs (231 lines):

diff -r d073efe47c76 -r b6f26678998d sys/dev/pci/hdaudio/hdaudio_afg.c
--- a/sys/dev/pci/hdaudio/hdaudio_afg.c Sun Aug 15 19:34:50 2010 +0000
+++ b/sys/dev/pci/hdaudio/hdaudio_afg.c Sun Aug 15 19:39:56 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: hdaudio_afg.c,v 1.23 2010/08/15 16:21:46 jmcneill Exp $ */
+/* $NetBSD: hdaudio_afg.c,v 1.24 2010/08/15 19:39:56 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2009 Precedence Technologies Ltd <support%precedence.co.uk@localhost>
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hdaudio_afg.c,v 1.23 2010/08/15 16:21:46 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hdaudio_afg.c,v 1.24 2010/08/15 19:39:56 jmcneill Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -94,6 +94,8 @@
 
 #define        hda_debug(sc, ...)              \
        if (hdaudio_afg_debug) hda_print(sc, __VA_ARGS__)
+#define        hda_debug1(sc, ...)             \
+       if (hdaudio_afg_debug) hda_print1(sc, __VA_ARGS__)
 
 #define HDAUDIO_MIXER_CLASS_OUTPUTS    0
 #define        HDAUDIO_MIXER_CLASS_INPUTS      1
@@ -700,49 +702,123 @@
        }
 }
 
+static int
+hdaudio_afg_assoc_count_channels(struct hdaudio_afg_softc *sc,
+    struct hdaudio_assoc *as, enum hdaudio_pindir dir)
+{
+       struct hdaudio_widget *w;
+       int *dacmap;
+       int i, dacmapsz = sizeof(*dacmap) * sc->sc_endnode;
+       int nchans = 0;
+
+       if (as->as_enable == false || as->as_dir != dir)
+               return 0;
+
+       dacmap = kmem_zalloc(dacmapsz, KM_SLEEP);
+       if (dacmap == NULL)
+               return 0;
+
+       for (i = 0; i < HDAUDIO_MAXPINS; i++)
+               if (as->as_dacs[i])
+                       dacmap[as->as_dacs[i]] = 1;
+
+       for (i = 1; i < sc->sc_endnode; i++) {
+               if (!dacmap[i])
+                       continue;
+               w = hdaudio_afg_widget_lookup(sc, i);
+               if (w == NULL || w->w_enable == false)
+                       continue;
+               nchans += (w->w_p.aw_cap & COP_AWCAP_STEREO) ? 2 : 1;
+       }
+
+       kmem_free(dacmap, dacmapsz);
+
+       return nchans;
+}
+
 static void
 hdaudio_afg_assoc_dump(struct hdaudio_afg_softc *sc)
 {
        struct hdaudio_assoc *as = sc->sc_assocs;
        struct hdaudio_widget *w;
-       uint32_t conn, color, defdev;
+       uint32_t conn, color, defdev, curdev, curport;
        int maxassocs = sc->sc_nassocs;
        int i, j;
 
        for (i = 0; i < maxassocs; i++) {
-               int ndacs = 0;
+               uint32_t devmask = 0, portmask = 0;
+               bool firstdev = true;
+               int nchan;
 
                if (as[i].as_enable == false)
                        continue;
 
+               hda_print(sc, "%s%02X",
+                   as[i].as_dir == HDAUDIO_PINDIR_IN ? "ADC" : "DAC", i);
+               hda_trace1(sc, " %s",
+                   as[i].as_digital ? "[DIGITAL]" : "[ANALOG]");
+
+               nchan = hdaudio_afg_assoc_count_channels(sc, &as[i],
+                   as[i].as_dir);
+               hda_print1(sc, " %dch:", nchan);
+
                for (j = 0; j < HDAUDIO_MAXPINS; j++) {
                        if (as[i].as_dacs[j] == 0)
                                continue;
-                       ++ndacs;
-                       hda_print(sc, "%s%d:%02X, %s ",
-                           as[i].as_dir == HDAUDIO_PINDIR_IN ? "ADC" : "DAC",
-                           i, as[i].as_dacs[j],
-                           as[i].as_digital ? "Digital" : "Analog");
-
                        w = hdaudio_afg_widget_lookup(sc, as[i].as_pins[j]);
-                       if (w == NULL) {
-                               hda_print1(sc, "<none>\n");
+                       if (w == NULL)
                                continue;
-                       }
                        conn = COP_CFG_PORT_CONNECTIVITY(w->w_pin.config);
-                       color = COP_CFG_COLOR(w->w_pin.config);
                        defdev = COP_CFG_DEFAULT_DEVICE(w->w_pin.config);
-                       if (conn != 1) {
-                               hda_print1(sc, "%s: %s (%s, %02X)\n",
-                                   hdaudio_afg_default_device[defdev],
-                                   hdaudio_afg_port_connectivity[conn],
-                                   hdaudio_afg_color[color], w->w_nid);
-                       } else {
-                               hda_print1(sc, "<unknown>\n");
+                       if (conn != COP_PORT_NONE) {
+                               devmask |= (1 << defdev);
+                               portmask |= (1 << conn);
                        }
                }
-               if (ndacs == 0)
-                       hda_print1(sc, "<none>\n");
+               for (curdev = 0; curdev < 16; curdev++) {
+                       bool firstport = true;
+                       if ((devmask & (1 << curdev)) == 0)
+                               continue;
+
+                       if (firstdev == false)
+                               hda_print1(sc, ",");
+                       firstdev = false;
+                       hda_print1(sc, " %s",
+                           hdaudio_afg_default_device[curdev]);
+
+                       for (curport = 0; curport < 4; curport++) {
+                               if ((portmask & (1 << curport)) == 0)
+                                       continue;
+
+                               hda_print1(sc, " [%s",
+                                   hdaudio_afg_port_connectivity[curport]);
+                               for (j = 0; j < HDAUDIO_MAXPINS; j++) {
+                                       if (as[i].as_dacs[j] == 0)
+                                               continue;
+
+                                       w = hdaudio_afg_widget_lookup(sc,
+                                           as[i].as_pins[j]);
+                                       if (w == NULL)
+                                               continue;
+                                       conn = COP_CFG_PORT_CONNECTIVITY(w->w_pin.config);
+                                       color = COP_CFG_COLOR(w->w_pin.config);
+                                       defdev = COP_CFG_DEFAULT_DEVICE(w->w_pin.config);
+                                       if (conn != curport || defdev != curdev)
+                                               continue;
+
+                                       if (firstport == false)
+                                               hda_trace1(sc, ",");
+                                       else
+                                               hda_trace1(sc, " ");
+                                       firstport = false;
+                                       hda_trace1(sc, "%s",
+                                           hdaudio_afg_color[color]);
+                                       hda_trace1(sc, "(%02X)", w->w_nid);
+                               }
+                               hda_print1(sc, "]");
+                       }
+               }
+               hda_print1(sc, "\n");
        }
 }
 
@@ -2766,40 +2842,6 @@
        return handled;
 }
 
-static int
-hdaudio_afg_assoc_count_channels(struct hdaudio_afg_softc *sc,
-    struct hdaudio_assoc *as, enum hdaudio_pindir dir)
-{
-       struct hdaudio_widget *w;
-       int *dacmap;
-       int i, dacmapsz = sizeof(*dacmap) * sc->sc_endnode;
-       int nchans = 0;
-
-       if (as->as_enable == false || as->as_dir != dir)
-               return 0;
-
-       dacmap = kmem_zalloc(dacmapsz, KM_SLEEP);
-       if (dacmap == NULL)
-               return 0;
-
-       for (i = 0; i < HDAUDIO_MAXPINS; i++)
-               if (as->as_dacs[i])
-                       dacmap[as->as_dacs[i]] = 1;
-
-       for (i = 1; i < sc->sc_endnode; i++) {
-               if (!dacmap[i])
-                       continue;
-               w = hdaudio_afg_widget_lookup(sc, i);
-               if (w == NULL || w->w_enable == false)
-                       continue;
-               nchans += (w->w_p.aw_cap & COP_AWCAP_STEREO) ? 2 : 1;
-       }
-
-       kmem_free(dacmap, dacmapsz);
-
-       return nchans;
-}
-
 static bool
 hdaudio_afg_rate_supported(struct hdaudio_afg_softc *sc, u_int frequency)
 {
diff -r d073efe47c76 -r b6f26678998d sys/dev/pci/hdaudio/hdaudiovar.h
--- a/sys/dev/pci/hdaudio/hdaudiovar.h  Sun Aug 15 19:34:50 2010 +0000
+++ b/sys/dev/pci/hdaudio/hdaudiovar.h  Sun Aug 15 19:39:56 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: hdaudiovar.h,v 1.5 2009/10/11 08:50:12 sborrill Exp $ */
+/* $NetBSD: hdaudiovar.h,v 1.6 2010/08/15 19:39:56 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2009 Precedence Technologies Ltd <support%precedence.co.uk@localhost>
@@ -56,6 +56,8 @@
        aprint_error_dev((sc)->sc_dev, __VA_ARGS__)
 #define        hda_trace(sc, ...)              \
        aprint_debug_dev((sc)->sc_dev, __VA_ARGS__)
+#define        hda_trace1(sc, ...)             \
+       aprint_debug(__VA_ARGS__)
 #define        hda_delay(us)                   \
        delay((us))
 



Home | Main Index | Thread Index | Old Index