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
next prev parent 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 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.