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

Takashi Iwai tiwai at suse.de
Wed Aug 6 08:30:56 CEST 2014


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.


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