[alsa-devel] ASUS Phoebus (CMI8888) HDA Support

Takashi Iwai tiwai at suse.de
Thu Aug 7 10:01:27 CEST 2014


At Wed, 6 Aug 2014 10:07:49 -0700,
Vincent Lejeune wrote:
> 
> It looks like GPIO mask is frozen, I don't know why :
> 
> [vlj at localhost alsa]$ hda-verb /dev/snd/hwC1D1  0x1 SET_GPIO_MASK 1
> nid = 0x1, verb = 0x716, param = 0x1
> value = 0x0
> [vlj at localhost alsa]$ hda-verb /dev/snd/hwC1D1  0x1 GET_GPIO_MASK 1
> nid = 0x1, verb = 0xf16, param = 0x1
> value = 0x0
> [vlj at localhost alsa]$ 

What about other bits, e.g. 0x02, 0x04, 0x08, ... 0x80?

> 
> hwC1D1 is the phoebus  according to hda-verb /dev/snd/hwC1D1  0x1 PARAMETERS SUBSYSTEM_ID
> and it reports 8 input gpio
> 
> [vlj at localhost alsa]$ hda-verb /dev/snd/hwC1D1  0x1 PARAMETERS GPIO_CAP
> nid = 0x1, verb = 0xf00, param = 0x11
> value = 0x80000

I thought of the false value (-1), but the GPIO_COUNT mask is 0xff, so
0x0f must be a valid response from the codec.

> but with mask set to 0, I can't pass any data to them...

Yep.

Another thing to check is to listen from the headphone output jack.
The line out jacks are set up without the headphone amp bit while the
HP jack is set up with it.  It might be that the HP amp bit is
mandatory on this board.


Takashi

> 
> 
> Le Mercredi 6 août 2014 18h08, Takashi Iwai <tiwai at suse.de> a écrit :
>  
> 
> >
> >
> >At Wed, 6 Aug 2014 09:05:59 -0700,
> >Vincent Lejeune wrote:
> >> 
> >> Ok thank.
> >> 
> >> How can I change GPIOs value ? It looks like the option is not present anymore as hints string option in kernel 3.17. Looking in the realtek patch code suggest to use snd_hda_sequence_write in the patch_cmi8888 function.
> >
> >Just use hda-verb or such to manipulate GPIO bits on the fly.
> >
> >
> >Takashi
> >
> >> 
> >> 
> >> 
> >> Le Mercredi 6 août 2014 14h39, Takashi Iwai <tiwai at suse.de> a écrit :
> >>  
> >> 
> >> >
> >> >
> >> >At Wed, 06 Aug 2014 08:30:56 +0200,
> >> >Takashi Iwai wrote:
> >> >> 
> >> >> At Tue, 5 Aug 2014 15:26:20 -0700,
> >> >> Vincent Lejeune wrote:
> >> >> > 
> >> >> > With this patch, volume is still low but the error message in dmesg disappeared.
> >> >> > I attached an updated alsa-info.txt report. I removed the probe_mask in modprobe.conf.d file so the hdmi output of my video card also appears now.
> >> >> 
> >> >> Is the volume also low from the headphone output?
> >> >> There is no EAPD control found in the codec pins, so the rest
> >> >> possibility is either GPIO or vendor-specific verbs.  Try to adjust
> >> >> each GPIO pin on/off at first.
> >> >
> >> >In anyway, I'm going to merge the fix patch as is.  It's much better
> >> >than nothing.  Let's handle the too-low-volume problem separately.
> >> >
> >> >
> >> >
> >> >Takashi
> >> >
> >> >> 
> >> >> 
> >> >> Takashi
> >> >> 
> >> >> > 
> >> >> > 
> >> >> > 
> >> >> > 
> >> >> > Le Mardi 5 août 2014 9h25, Takashi Iwai <tiwai at suse.de> a écrit :
> >> >> >  
> >> >> > 
> >> >> > >
> >> >> > >
> >> >> > >At Mon, 4 Aug 2014 12:44:00 -0700,
> >> >> > >Vincent Lejeune wrote:
> >> >> > >> 
> >> >> > >> Here it is.
> >> >> > >
> >> >> > >OK, blow is an untested fix patch, based on the latest sound git
> >> >> > >tree.  For applying to the older kernels, you may need some manual
> >> >> > >adjustment.
> >> >> > >
> >> >> > >
> >> >> > >Takashi
> >> >> > >
> >> >> > >---
> >> >> > >diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> >> >> > >index 5db1948699d8..aa302fb03fc5 100644
> >> >> > >--- a/sound/pci/hda/hda_intel.c
> >> >> > >+++ b/sound/pci/hda/hda_intel.c
> >> >> > >@@ -265,6 +265,7 @@ enum {
> >> >> > >    AZX_DRIVER_TERA,
> >> >> > >    AZX_DRIVER_CTX,
> >> >> > >    AZX_DRIVER_CTHDA,
> >> >> > >+    AZX_DRIVER_CMEDIA,
> >> >> > >    AZX_DRIVER_GENERIC,
> >> >> > >    AZX_NUM_DRIVERS, /* keep this as last entry */
> >> >> > >};
> >> >> > >@@ -330,6 +331,7 @@ static char *driver_short_names[] = {
> >> >> > >    [AZX_DRIVER_TERA] = "HDA Teradici", 
> >> >> > >    [AZX_DRIVER_CTX] = "HDA Creative", 
> >> >> > >    [AZX_DRIVER_CTHDA] = "HDA Creative",
> >> >> > >+    [AZX_DRIVER_CMEDIA] = "HDA C-Media",
> >> >> > >    [AZX_DRIVER_GENERIC] = "HD-Audio Generic",
> >> >> > >};
> >> >> > >
> >> >> > >@@ -1373,6 +1375,7 @@ static void azx_check_snoop_available(struct azx *chip)
> >> >> > >        snoop = false;
> >> >> > >        break;
> >> >> > >    case AZX_DRIVER_CTHDA:
> >> >> > >+    case AZX_DRIVER_CMEDIA:
> >> >> > >        snoop = false;
> >> >> > >        break;
> >> >> > >    }
> >> >> > >@@ -2154,6 +2157,10 @@ static const struct pci_device_id azx_ids[] = {
> >> >> > >      .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
> >> >> > >      AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
> >> >> > >#endif
> >> >> > >+    /* CM8888 */
> >> >> > >+    { PCI_DEVICE(0x13f6, 0x5011),
> >> >> > >+      .driver_data = AZX_DRIVER_CMEDIA |
> >> >> > >+      AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB },
> >> >> > >    /* Vortex86MX */
> >> >> > >    { PCI_DEVICE(0x17f3, 0x3010), .driver_data = AZX_DRIVER_GENERIC },
> >> >> > >    /* VMware HDAudio */
> >> >> > >diff --git a/sound/pci/hda/patch_cmedia.c b/sound/pci/hda/patch_cmedia.c
> >> >> > >index ed3d133ffbb6..3ed5d5613bc1 100644
> >> >> > >--- a/sound/pci/hda/patch_cmedia.c
> >> >> > >+++ b/sound/pci/hda/patch_cmedia.c
> >> >> > >@@ -75,15 +75,62 @@ static int patch_cmi9880(struct hda_codec *codec)
> >> >> > >    return err;
> >> >> > >}
> >> >> > >
> >> >> > >+static int patch_cmi8888(struct hda_codec *codec)
> >> >> > >+{
> >> >> > >+    struct cmi_spec *spec;
> >> >> > >+    struct auto_pin_cfg *cfg;
> >> >> > >+    int err;
> >> >> > >+
> >> >> > >+    spec = kzalloc(sizeof(*spec), GFP_KERNEL);
> >> >> > >+    if (!spec)
> >> >> > >+        return -ENOMEM;
> >> >> > >+
> >> >> > >+    codec->spec = spec;
> >> >> > >+    cfg = &spec->gen.autocfg;
> >> >> > >+    snd_hda_gen_spec_init(&spec->gen);
> >> >> > >+
> >> >> > >+    /* mask NID 0x10 from the playback volume selection;
> >> >> > >+     * it's a headphone boost volume handled manually below
> >> >> > >+     */
> >> >> > >+    spec->gen.out_vol_mask = (1ULL << 0x10);
> >> >> > >+
> >> >> > >+    err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0);
> >> >> > >+    if (err < 0)
> >> >> > >+        goto error;
> >> >> > >+    err = snd_hda_gen_parse_auto_config(codec, cfg);
> >> >> > >+    if (err < 0)
> >> >> > >+        goto error;
> >> >> > >+
> >> >> > >+    if (get_defcfg_device(snd_hda_codec_get_pincfg(codec, 0x10)) ==
> >> >> > >+        AC_JACK_HP_OUT) {
> >> >> > >+        static const struct snd_kcontrol_new amp_kctl =
> >> >> > >+            HDA_CODEC_VOLUME("Headphone Amp Playback Volume",
> >> >> > >+                     0x10, 0, HDA_OUTPUT);
> >> >> > >+        if (!snd_hda_gen_add_kctl(&spec->gen, NULL, &amp_kctl)) {
> >> >> > >+            err = -ENOMEM;
> >> >> > >+            goto error;
> >> >> > >+        }
> >> >> > >+    }
> >> >> > >+
> >> >> > >+    codec->patch_ops = cmi_auto_patch_ops;
> >> >> > >+    return 0;
> >> >> > >+
> >> >> > >+ error:
> >> >> > >+    snd_hda_gen_free(codec);
> >> >> > >+    return err;
> >> >> > >+}
> >> >> > >+
> >> >> > >/*
> >> >> > >  * patch entries
> >> >> > >  */
> >> >> > >static const struct hda_codec_preset snd_hda_preset_cmedia[] = {
> >> >> > >+    { .id = 0x13f68888, .name = "CMI8888", .patch = patch_cmi8888 },
> >> >> > >    { .id = 0x13f69880, .name = "CMI9880", .patch = patch_cmi9880 },
> >> >> > >      { .id = 0x434d4980, .name = "CMI9880", .patch = patch_cmi9880 },
> >> >> > >    {} /* terminator */
> >> >> > >};
> >> >> > >
> >> >> > >+MODULE_ALIAS("snd-hda-codec-id:13f68888");
> >> >> > >MODULE_ALIAS("snd-hda-codec-id:13f69880");
> >> >> > >MODULE_ALIAS("snd-hda-codec-id:434d4980");
> >> >> > >
> >> >> > >
> >> >> > >_______________________________________________
> >> >> > >Alsa-devel mailing list
> >> >> > >Alsa-devel at alsa-project.org
> >> >> > >http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >> >> > >
> >> >> > >
> >> >> > >
> >> >_______________________________________________
> >> >Alsa-devel mailing list
> >> >Alsa-devel at alsa-project.org
> >> >http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >> >
> >> >
> >> >
> >> [2  <text/html; iso-8859-1 (quoted-printable)>]
> >
> >> 
> >_______________________________________________
> >Alsa-devel mailing list
> >Alsa-devel at alsa-project.org
> >http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >
> >
> >
> [2  <text/html; iso-8859-1 (quoted-printable)>]
> 


More information about the Alsa-devel mailing list