mirror of
https://github.com/adulau/aha.git
synced 2025-01-04 07:03:38 +00:00
[PATCH] unhide ICH6 SMBus - take 2
This patch unhides hidden SMBus on ICH6 chipset installed in Asus M6V notebook. I would like to thank Michal Mleczko for testing and help. Signed-Off-By: Rudolf Marek <r.marek@sh.cvut.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/pci/quirks.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
This commit is contained in:
parent
fe89cf4c4b
commit
acc06632e3
1 changed files with 24 additions and 0 deletions
|
@ -934,6 +934,12 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||||
case 0x186a: /* M6Ne notebook */
|
case 0x186a: /* M6Ne notebook */
|
||||||
asus_hides_smbus = 1;
|
asus_hides_smbus = 1;
|
||||||
}
|
}
|
||||||
|
if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) {
|
||||||
|
switch (dev->subsystem_device) {
|
||||||
|
case 0x1882: /* M6V notebook */
|
||||||
|
asus_hides_smbus = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_HP)) {
|
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_HP)) {
|
||||||
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
||||||
switch(dev->subsystem_device) {
|
switch(dev->subsystem_device) {
|
||||||
|
@ -978,6 +984,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82865_HB, asus
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_7205_0, asus_hides_smbus_hostbridge );
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_7205_0, asus_hides_smbus_hostbridge );
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855PM_HB, asus_hides_smbus_hostbridge );
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855PM_HB, asus_hides_smbus_hostbridge );
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855GM_HB, asus_hides_smbus_hostbridge );
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855GM_HB, asus_hides_smbus_hostbridge );
|
||||||
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82915GM_HB, asus_hides_smbus_hostbridge );
|
||||||
|
|
||||||
static void __init asus_hides_smbus_lpc(struct pci_dev *dev)
|
static void __init asus_hides_smbus_lpc(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
|
@ -1002,6 +1009,23 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, as
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc );
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc );
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc );
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc );
|
||||||
|
|
||||||
|
static void __init asus_hides_smbus_lpc_ich6(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
u32 val, rcba;
|
||||||
|
void __iomem *base;
|
||||||
|
|
||||||
|
if (likely(!asus_hides_smbus))
|
||||||
|
return;
|
||||||
|
pci_read_config_dword(dev, 0xF0, &rcba);
|
||||||
|
base = ioremap_nocache(rcba & 0xFFFFC000, 0x4000); /* use bits 31:14, 16 kB aligned */
|
||||||
|
if (base == NULL) return;
|
||||||
|
val=readl(base + 0x3418); /* read the Function Disable register, dword mode only */
|
||||||
|
writel(val & 0xFFFFFFF7, base + 0x3418); /* enable the SMBus device */
|
||||||
|
iounmap(base);
|
||||||
|
printk(KERN_INFO "PCI: Enabled ICH6/i801 SMBus device\n");
|
||||||
|
}
|
||||||
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc_ich6 );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SiS 96x south bridge: BIOS typically hides SMBus device...
|
* SiS 96x south bridge: BIOS typically hides SMBus device...
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue