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

Takashi Iwai tiwai at suse.de
Wed Aug 6 14:38:39 CEST 2014


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
> > >
> > >
> > >


More information about the Alsa-devel mailing list