Messages in this thread Patch in this message | | | Date | Tue, 22 Jan 2002 18:21:18 +0100 (CET) | From | Daniel Nofftz <> | Subject | [right one][patch] amd athlon cooling on kt266/266a chipset |
| |
in the first mail, i forget to append the patch ... this one is the right mail to look at ... (sorry)
hi there!
a few month ago someone has posted a patch for enabling the disconneect on STPGND detect function in the kt133/kt133a chipset. for those who don't know what this does: it sets a bit in a register of the northbridge of the chipset to enable the power saving modes of the athlon/duron/athlon xp prozessors. i did not found any patch which enables this function on an kt266/kt266a board. so i modified this patch ( http://groups.google.com/groups?q=via_disconnect&hl=en&selm=linux.kernel.20010903002855.A645%40gondor.com&rnum=1 ) to support the kt266 and kt266a chipset to.
now i am looking for people to test the patch and repord, whether it works allright on other computers than my computer (i tested this patch on an epox 8kha+ whith an xp1600+).
if you want to test this patch: 1. first apply the patch 2. enable generel-setup -> acpi , acpi-bus-maager , prozessor in the kernel config 3. add to the "append" line in /etc/lilo.conf the "amd_disconnect=yes" statemand (or after reboot enter at the kernel-boot-prompt "amd_disconnect=yes") 4. build a knew kernel 5. report to me, whether you have problems ...
if the patch gets a good feedback, maybe it is something for the official kernel tree ?
daniel
# Daniel Nofftz # Sysadmin CIP-Pool Informatik # University of Trier(Germany), Room V 103 # Mail: daniel@nofftz.de
--- linux-2.4.17-orig/drivers/pci/quirks.c Sun Nov 11 19:09:33 2001 +++ linux/drivers/pci/quirks.c Tue Jan 22 16:50:05 2002 @@ -21,6 +21,23 @@ #undef DEBUG +/* Power Saving for Athlon/Duron CPUs on Via Chipsets has to be enabled bye + * kernel-boot-option "amd_disconnect=yes" . This is cause it looks like + * there are some stability problems on some boards when this option is + * enabled. + */ + +int enable_amd_disconnect; + +static int __init amd_disconnect_setup (char *str) { + if(!strncmp(str,"yes",3)) { + enable_amd_disconnect=1; + } + return 1; +} + +__setup("amd_disconnect=", amd_disconnect_setup); + /* Deal with broken BIOS'es that neglect to enable passive release, which can cause problems in combination with the 82441FX/PPro MTRRs */ static void __init quirk_passive_release(struct pci_dev *dev) @@ -146,6 +163,47 @@ printk(KERN_INFO "Applying VIA southbridge workaround.\n"); } +/* Power Saving for Athlon/Duron/AthonXP CPUs on Via Chipsets. + * Found in the net and modified for supporting KT266/KT266A chipsets + * by Daniel Nofftz <nofftz@castor.uni-trier.de> + * This Funktion must be enabled by kernel booting option "via_disconnect=yes"! + */ + +static void __init quirk_amddisconnect(struct pci_dev *dev) +{ + u16 did; + u32 res32; + + if(!enable_amd_disconnect) return; + + pci_read_config_word(dev,PCI_DEVICE_ID,&did); + + + if(did==PCI_DEVICE_ID_VIA_8367_0) + { + pci_read_config_dword(dev,0x92&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT266/266A chipset found.\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x92&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } + else if((did==PCI_DEVICE_ID_VIA_8363_0)||(did==PCI_DEVICE_ID_VIA_8371_0)) + { + pci_read_config_dword(dev,0x52&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT133/KX133 chipset found\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x52&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } +} /* * VIA Apollo VP3 needs ETBF on BT848/878 */ @@ -485,6 +543,9 @@ { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, 0x3112 /* Not out yet ? */, quirk_vialatency }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_0, quirk_amddisconnect }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576, quirk_vsfx }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_viaetbf }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_vt82c598_id }, | |