ALSA: hda - show ICT/KAE control bits
authorWang Xingchao <xingchao.wang@intel.com>
Mon, 13 Aug 2012 07:43:49 +0000 (15:43 +0800)
committerTakashi Iwai <tiwai@suse.de>
Mon, 13 Aug 2012 08:01:29 +0000 (10:01 +0200)
Enable two debug options for S/PDIF Converter Control.
KAE: Keep Alive Enable; ICT: IEC Coding Type.

Signed-off-by: Wang Xingchao <xingchao.wang@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_proc.c

index 39e4375..d772c25 100644 (file)
@@ -386,6 +386,10 @@ enum {
 /* DIGITAL2 bits */
 #define AC_DIG2_CC                     (0x7f<<0)
 
+/* DIGITAL3 bits */
+#define AC_DIG3_ICT                    (0xf<<0)
+#define AC_DIG3_KAE                    (1<<7)
+
 /* Pin widget control - 8bit */
 #define AC_PINCTL_EPT                  (0x3<<0)
 #define AC_PINCTL_EPT_NATIVE           0
index 7e46258..32bb3d9 100644 (file)
@@ -402,6 +402,9 @@ static void print_digital_conv(struct snd_info_buffer *buffer,
 {
        unsigned int digi1 = snd_hda_codec_read(codec, nid, 0,
                                                AC_VERB_GET_DIGI_CONVERT_1, 0);
+       unsigned char digi2 = digi1 >> 8;
+       unsigned char digi3 = digi1 >> 16;
+
        snd_iprintf(buffer, "  Digital:");
        if (digi1 & AC_DIG1_ENABLE)
                snd_iprintf(buffer, " Enabled");
@@ -419,9 +422,13 @@ static void print_digital_conv(struct snd_info_buffer *buffer,
                snd_iprintf(buffer, " Pro");
        if (digi1 & AC_DIG1_LEVEL)
                snd_iprintf(buffer, " GenLevel");
+       if (digi3 & AC_DIG3_KAE)
+               snd_iprintf(buffer, " KAE");
        snd_iprintf(buffer, "\n");
        snd_iprintf(buffer, "  Digital category: 0x%x\n",
-                   (digi1 >> 8) & AC_DIG2_CC);
+                   digi2 & AC_DIG2_CC);
+       snd_iprintf(buffer, "  IEC Coding Type: 0x%x\n",
+                       digi3 & AC_DIG3_ICT);
 }
 
 static const char *get_pwr_state(u32 state)