All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Courtier-Dutton <James@superbug.demon.co.uk>
To: p z oooo <pzad@pobox.sk>
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: ALC650 rev D. - SPDIF out
Date: Fri, 03 Oct 2003 15:23:50 +0100	[thread overview]
Message-ID: <3F7D8676.6030904@superbug.demon.co.uk> (raw)
In-Reply-To: <200310030633.IAA13612@www1.pobox.sk>

[-- Attachment #1: Type: text/plain, Size: 910 bytes --]

p z oooo wrote:
> Hi,
> 
> I have ALC650 rev. D and spdif is not working with 0.9.7.
> 
> Please delete this row from ac97_patch.c from function patch_alc650
> 
> ac97->ext_id &= ~AC97_EI_SPDIF; /* disable extended-id */ 
> 
> I think, that all ALC650 have spdif out and rev. E and later have 
> spdif in.
> 
> Peter Zubaj
> 
> 
The ALC650 chip specs do show that SPDIF out is present on all models.

I am not sure about your fix, because even the Realtek versions of the 
alsa driver disable spdif out if AC97_EA_SPCV is not set.
Reasons for AC97_EA_SPCV not being set are: -
Current S/PDIF configuration {SPSA,SPSR,DAC/slot rate} is invalid.

Why that only works on Rev E or above I don't know.

I think that maybe a better way would be to also remove the checking of 
AC97_EA_SPCV, and instead use the Chip revision code, now that we can 
detect chip revisions.

See attached suggested patch.

Cheers
James

[-- Attachment #2: alc650-rev-d-fix.diff --]
[-- Type: text/plain, Size: 1285 bytes --]

--- ac97_patch.c.org	2003-10-03 15:16:06.099127808 +0100
+++ ac97_patch.c	2003-10-03 15:21:50.975698600 +0100
@@ -898,7 +898,6 @@
 int patch_alc650(ac97_t * ac97)
 {
 	unsigned short val;
-	int spdif = 0;
 
 	ac97->build_ops = &patch_alc650_ops;
 
@@ -907,22 +906,16 @@
 	ac97->spec.dev_flags = (ac97->id == 0x414c4722 ||
 				ac97->id == 0x414c4723);
 
-	/* check spdif (should be only on rev.E) */
-	if (ac97->spec.dev_flags) {
-		val = snd_ac97_read(ac97, AC97_EXTENDED_STATUS);
-		if (val & AC97_EA_SPCV)
-			spdif = 1;
-	}
+	/* enable AC97_ALC650_GPIO_SETUP, AC97_ALC650_CLOCK for R/W */
+	snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_STATUS, 
+		snd_ac97_read(ac97, AC97_ALC650_GPIO_STATUS) | 0x8000);
 
-	if (spdif) {
-		/* enable AC97_ALC650_GPIO_SETUP, AC97_ALC650_CLOCK for R/W */
-		snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_STATUS, 
-			snd_ac97_read(ac97, AC97_ALC650_GPIO_STATUS) | 0x8000);
+	/* Enable SPDIF-IN only on Rev.E and above */
+	if (ac97->spec.dev_flags) {
 		/* enable spdif in */
 		snd_ac97_write_cache(ac97, AC97_ALC650_CLOCK,
 				     snd_ac97_read(ac97, AC97_ALC650_CLOCK) | 0x03);
-	} else
-		ac97->ext_id &= ~AC97_EI_SPDIF; /* disable extended-id */
+	} 
 
 	val = snd_ac97_read(ac97, AC97_ALC650_MULTICH);
 	val &= ~0xc000; /* slot: 3,4,7,8,6,9 */

  reply	other threads:[~2003-10-03 14:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-03  6:33 ALC650 rev D. - SPDIF out p z oooo
2003-10-03 14:23 ` James Courtier-Dutton [this message]
2003-10-10 14:52 ` [PATCH] " James Courtier-Dutton
2003-10-10 14:52   ` Takashi Iwai
2003-10-10 16:51     ` James Courtier-Dutton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F7D8676.6030904@superbug.demon.co.uk \
    --to=james@superbug.demon.co.uk \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=pzad@pobox.sk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.