[alsa-devel] ASUS Phoebus (CMI8888) HDA Support
Vincent Lejeune
vljn at ovi.com
Wed Aug 6 18:05:59 CEST 2014
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.
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, &_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
>
>
>
More information about the Alsa-devel
mailing list