linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: xi <xizard@enib.fr>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] AMD760MPX: bogus chispset ? (was PROBLEM: sound is	stutter, sizzle with lasts kernel releases)
Date: Sat, 12 Jul 2003 05:08:44 +0000	[thread overview]
Message-ID: <3F0F97DC.5090500@enib.fr> (raw)
In-Reply-To: <1057959456.20637.45.camel@dhcp22.swansea.linux.org.uk>

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

Alan Cox wrote:
> On Gwe, 2003-07-11 at 22:04, xi wrote:
> 
>>And one interesting thing:
>>in the AMD762 datasheet (24462.pdf) page 231 (Recommanded BIOS 
>>settings), I can see this: "Numerical Values shown with h or b are 
>>preferred settings." ; and AMD recommand this:
>>-> set bits 2 and 1 of register 0x4C to "0b"
>>-> set bits 23 and 3 respectively to "0b" and "1b"
>>
>>I can confirm that these settings works much more better, even if they 
>>don't exactly follow PCI specs. And I don't think this is specific to my 
>>  cards since I have tested others.
>>Furthermore, my AMD762 is revision B1 (just before the last one: C0), 
>>and my AMD768 revision is B2, the last one.
>>
>>Would you accept I make a patch which doesn't make any change in these 
>>registers at least up to AMD762 revision B1 (ie keeping recommanded 
>>values from AMD) ?
> 
> 
> Lets try the AMD recommended settings. My old doc doesnt seem to have
> those. I'll by happy to trial the patch in -ac and see if it plays up
> the usual suspects for PCI spec violations (tg3 and i2o)
> 

Ok, I provide two patchs with different behaviour:

* patch_AMD762_PCI_compliance_set_by_bios.diff : lets the BIOS decide 
about PCI configuration

* patch_AMD762_PCI_default_AMD_settings.diff : follow AMD 
recommendations but not PCI specs.

Patch are against drivers/pci/quirks.c from 2.4.22-pre4

Regards,
				Xavier

-- 
E-mail:
ctrl.alt.sup@free.fr xizard@chez.com
Please no longer use xizard@enib.fr, this e-mail will be removed soon.

Homepage:
http://xizard.free.fr
http://www.chez.com/xizard/

[-- Attachment #2: patch_AMD762_PCI_compliance_set_by_bios.diff --]
[-- Type: text/plain, Size: 1411 bytes --]

--- quirks_original.c	2003-07-12 01:58:17.000000000 +0000
+++ quirks.c	2003-07-12 04:40:57.000000000 +0000
@@ -464,22 +464,23 @@
  * Following the PCI ordering rules is optional on the AMD762. I'm not
  * sure what the designers were smoking but let's not inhale...
  *
- * To be fair to AMD, it follows the spec by default, its BIOS people
- * who turn it off!
+ * In fact, AMD even recommends to don't follow PCI standards
+ * in the section "Recommended BIOS settings" of the datasheet
  */
  
 static void __init quirk_amd_ordering(struct pci_dev *dev)
 {
-	u32 pcic;
-	pci_read_config_dword(dev, 0x4C, &pcic);
-	if((pcic&6)!=6)
+	u32 pcic1,pcic2;
+
+	pci_read_config_dword(dev, 0x4C, &pcic1);
+	pci_read_config_dword(dev, 0x84, &pcic2);
+
+	if((pcic1&6)!=6 || (pcic2&(1<<23))!=(1<<23))
 	{
-		pcic |= 6;
-		printk(KERN_WARNING "BIOS failed to enable PCI standards compliance, fixing this error.\n");
-		pci_write_config_dword(dev, 0x4C, pcic);
-		pci_read_config_dword(dev, 0x84, &pcic);
-		pcic |= (1<<23);	/* Required in this mode */
-		pci_write_config_dword(dev, 0x84, pcic);
+		/* The AMD762 doesn't follow PCI standards, but it seems to work better in this mode !
+		   In order to be fully PCI standards compliant, we should :
+		   set bit 1 and 2 of register 0x4C ; set bit 23 and clear bit 3 of register 0x84 */
+		printk(KERN_WARNING "BIOS didn't enabled PCI standards compliance.\n");
 	}
 }
 

[-- Attachment #3: patch_AMD762_PCI_default_AMD_settings.diff --]
[-- Type: text/plain, Size: 1146 bytes --]

--- quirks_original.c	2003-07-12 01:58:17.000000000 +0000
+++ quirks.c	2003-07-12 04:44:02.000000000 +0000
@@ -464,23 +464,24 @@
  * Following the PCI ordering rules is optional on the AMD762. I'm not
  * sure what the designers were smoking but let's not inhale...
  *
- * To be fair to AMD, it follows the spec by default, its BIOS people
- * who turn it off!
+ * In fact, AMD even recommends to don't follow PCI standards
+ * in the section "Recommended BIOS settings" of the datasheet
  */
  
 static void __init quirk_amd_ordering(struct pci_dev *dev)
 {
 	u32 pcic;
+
+	printk(KERN_WARNING "Setting AMD recommended values for PCI bus. It isn't fully PCI standards compliant\n");
+
 	pci_read_config_dword(dev, 0x4C, &pcic);
-	if((pcic&6)!=6)
-	{
-		pcic |= 6;
-		printk(KERN_WARNING "BIOS failed to enable PCI standards compliance, fixing this error.\n");
+	pcic &= ~((u32)6);
 		pci_write_config_dword(dev, 0x4C, pcic);
+
 		pci_read_config_dword(dev, 0x84, &pcic);
-		pcic |= (1<<23);	/* Required in this mode */
+	pcic &= ~((u32)(1<<23));
+	pcic |= (1<<3);
 		pci_write_config_dword(dev, 0x84, pcic);
-	}
 }
 
 #ifdef CONFIG_X86_IO_APIC

  reply	other threads:[~2003-07-12  3:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3F0EED9B.4080502@enib.fr>
2003-07-11 17:08 ` AMD760MPX: bogus chispset ? (was PROBLEM: sound is stutter, sizzle with lasts kernel releases) Alan Cox
2003-07-11 21:04   ` xi
2003-07-11 21:37     ` Alan Cox
2003-07-12  5:08       ` xi [this message]
2003-07-13  8:13         ` [PATCH] " Alan Cox

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=3F0F97DC.5090500@enib.fr \
    --to=xizard@enib.fr \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).