At Thu, 03 Mar 2011 17:50:22 +0530, Arun Raghavan wrote:
On Thu, 2011-03-03 at 13:01 +0100, Takashi Iwai wrote:
At Thu, 3 Mar 2011 03:18:18 +0530, Arun Raghavan wrote:
From: Arun Raghavan arun@accosted.net
The commit a769cbcf60cee51f4431c0938acd39e7e5b76b8d ALSA: hda - Add errata initverb sequence for CS42xx codecs applies a fix for a chip erratum that is specific to CS4207 unconditionally. On CS4206, this causes digital output to never be activated.
It might be the power-state the verb table sets? Try to comment out only the line setting SPDIF Tx to D3, {0x08, AC_VERB_SET_POWER_STATE, 0x03} instead of disabling the whole verbs, just for testing.
Indeed, this also works.
OK, to be sure, try the patch below.
thanks,
Takashi
--- From: Takashi Iwai tiwai@suse.de Date: Thu, 3 Mar 2011 14:54:19 +0100 Subject: [PATCH] ALSA: hda - Don't set to D3 in Cirrus errata init verbs
The errata init verbs for CS42xx codecs contain the verbs to set the power-state of SPDIF nodes to D3, which seem to break the SPDIF output on some MacBooks. Since this is executed during the power-up initialization, we shouldn't turn them down there.
Reported-by: Arun Raghavan arun.raghavan@collabora.co.uk Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/patch_cirrus.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c index a07b031..067982f 100644 --- a/sound/pci/hda/patch_cirrus.c +++ b/sound/pci/hda/patch_cirrus.c @@ -1039,9 +1039,11 @@ static struct hda_verb cs_errata_init_verbs[] = { {0x11, AC_VERB_SET_PROC_COEF, 0x0008}, {0x11, AC_VERB_SET_PROC_STATE, 0x00},
+#if 0 /* Don't to set to D3 as we are in power-up sequence */ {0x07, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Rx: D3 */ {0x08, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Tx: D3 */ /*{0x01, AC_VERB_SET_POWER_STATE, 0x03},*/ /* AFG: D3 This is already handled */ +#endif
{} /* terminator */ };