PCI quirk to unhide SMBus on Compaq Deskpro EP 401963-001 (PCA# 010174) motherboard with i810 chipset.
Signed-off-by: GW <[EMAIL PROTECTED]> --- Patch is for kernel source 2.6.21 with Debian patches. Seems to work fine with no conflicts. Motherboard identification based on host bridge device is a little strange, because there isn't any subsystem information (subvendor id or subdevice id are set to 0x0000). lspci -v -nn -s 00:00.0 00:00.0 Host bridge [0600]: Intel Corporation 82810 DC-100 GMCH [Graphics Memory Controller Hub] [8086:7122] (rev 02) Flags: bus master, fast devsel, latency 0 After implied patch SMBus is present: lspci -v -nn -s 00:1f.3 00:1f.3 SMBus [0c05]: Intel Corporation 82801AA SMBus [8086:2413] (rev 01) Flags: medium devsel, IRQ 11 I/O ports at fc00 [size=16] diff -Naur linux-source-2.6.21/drivers/pci/quirks.c linux-source-2.6.21-unhidesmbusoncompaqdeskproep/drivers/pci/quirks.c --- linux-source-2.6.21/drivers/pci/quirks.c 2007-07-10 18:46:19.000000000 +0200 +++ linux-source-2.6.21-unhidesmbusoncompaqdeskproep/drivers/pci/quirks.c 2007-07-26 14:21:13.000000000 +0200 @@ -1059,6 +1059,12 @@ case 0x0058: /* Compaq Evo N620c */ asus_hides_smbus = 1; } + } else if (unlikely(dev->subsystem_vendor == PCI_CLASS_NOT_DEFINED)) { + if (dev->device == PCI_DEVICE_ID_INTEL_82810_MC3) + switch(dev->subsystem_device) { + case 0x0000: /* Compaq Deskpro EP 401963-001 (PCA# 010174) motherboard with i810 chipset doesn't have subsystem identification */ + asus_hides_smbus = 1; + } } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82845_HB, asus_hides_smbus_hostbridge ); @@ -1070,6 +1076,7 @@ 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_82915GM_HB, asus_hides_smbus_hostbridge ); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82810_MC3, asus_hides_smbus_hostbridge ); static void asus_hides_smbus_lpc(struct pci_dev *dev) { @@ -1088,12 +1095,14 @@ printk(KERN_INFO "PCI: Enabled i801 SMBus device\n"); } } +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_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_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, asus_hides_smbus_lpc ); DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, asus_hides_smbus_lpc ); ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel