From cb24789105bc4412d211b6615ea068e4f1d8bffc Mon Sep 17 00:00:00 2001 From: "Mark D. Studebaker" Date: Fri, 21 Jul 2000 23:52:28 +0000 Subject: [PATCH] (mds) add support for Intel 82801BA ICH2 (815E chipset). git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@849 7894878c-1315-0410-8ee3-d5d059ff63e0 --- CHANGES | 2 ++ README | 2 +- doc/busses/i2c-i801 | 16 +++++++++------- kernel/busses/i2c-i801.c | 24 ++++++++++++++++++------ prog/detect/sensors-detect | 8 ++++++++ 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 082dfcf0..26d27ead 100644 --- a/CHANGES +++ b/CHANGES @@ -14,8 +14,10 @@ ask CVS about it: cvs diff -r V2-0-0 -r V2-0-1 -u 2.5.3 (2000????) + Module i2c-i801: support Intel 82801BA (815E chipset) Programs i2cdetect, i2cdump: Improve error reporting Program sensors: new switch -u (--unknown) + Program sensors-detect: detect Intel 82801BA (815E chipset) 2.5.2 (20000709) File sensors.conf.eg: Fix lm80 in8 calculation diff --git a/README b/README index 38313d1a..921f8a6f 100644 --- a/README +++ b/README @@ -39,7 +39,7 @@ At least the following I2C/SMBus adapters are supported: Acer Labs M1541 and M1543C (used in the Aladdin IV, V and Pro 2 chipsets) AMD 756 Apple Hydra (used on some PPC machines) - Intel I801 ICH (used in the Intel 810, 810E, 820, and 840 chipsets) + Intel I801 ICH/ICH0/ICH2 (used in Intel 810, 810E, 815E, 820, 840 chipsets) Intel PIIX4 (used in many Intel chipsets) Intel I810 GMCH SiS 5595 (used in many SiS chipsets) diff --git a/doc/busses/i2c-i801 b/doc/busses/i2c-i801 index 8f7b7205..80791d4b 100644 --- a/doc/busses/i2c-i801 +++ b/doc/busses/i2c-i801 @@ -1,12 +1,13 @@ Kernel driver `i2c-i801.o' -Status: Beta. +Status: Tested and stable. Block reads/writes untested (but not used by any current chip driver). Supported adapters: * Intel 82801AA and 82801AB (ICH and ICH0 - part of the '810' and '810E' chipsets) - Datasheet: Publicly available at the Intel website + * Intel 82801BA (ICH2 - part of the '815E' chipset) + Datasheets: Publicly available at the Intel website Author: Frodo Looijaard , Philip Edelbrock , and Mark Studebaker @@ -24,11 +25,12 @@ Module Parameters Description ----------- -The ICH (properly known as the 82801AA) and ICH0 (82801AB) -are Intel chips that are a part of Intel's '810' chipset -for Celeron-based PCs and '810E' chipset for Pentium-based PCs. +The ICH (properly known as the 82801AA), ICH0 (82801AB), +and ICH2 (82801BA) are Intel chips that are a part of +Intel's '810' chipset for Celeron-based PCs, +'810E' chipset for Pentium-based PCs, and newer '815E' chipset. -The ICH contains up to SEVEN separate PCI functions +The ICH chips contain about SEVEN separate PCI functions in TWO logical PCI devices. An output of lspci will show something similar to the following: @@ -44,7 +46,7 @@ Class 0c05 is SMBus Serial Controller. The ICH chips are quite similar to Intel's PIIX4 chip, at least in the SMBus controller. -See the file i2c-piix4 for details. +See the file i2c-piix4 for some additional information. ********************** diff --git a/kernel/busses/i2c-i801.c b/kernel/busses/i2c-i801.c index ff86c3dc..294ad46d 100644 --- a/kernel/busses/i2c-i801.c +++ b/kernel/busses/i2c-i801.c @@ -1,8 +1,9 @@ /* i801.c - Part of lm_sensors, Linux kernel modules for hardware monitoring - Copyright (c) 1998, 1999 Frodo Looijaard and - Philip Edelbrock + Copyright (c) 1998, 1999 Frodo Looijaard , + Philip Edelbrock , and Mark D. Studebaker + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,9 +21,10 @@ */ /* - This driver supports the Intel 82801AA and 82801AB + This driver supports the Intel 82801AA, 82801AB, and 82801BA I/O Controller Hubs (ICH). They are similar to the PIIX4 and are part - of Intel's '810' chipset. See the doc/busses/i2c-i801 file for details. + of Intel's '810' and other chipsets. + See the doc/busses/i2c-i801 file for details. */ /* Note: we assume there can only be one I801, with one SMBus interface */ @@ -45,6 +47,9 @@ #ifndef PCI_DEVICE_ID_INTEL_82801AB_3 #define PCI_DEVICE_ID_INTEL_82801AB_3 0x2423 #endif +#ifndef PCI_DEVICE_ID_INTEL_82801BA_3 +#define PCI_DEVICE_ID_INTEL_82801BA_3 0x2443 +#endif /* I801 SMBus address offsets */ #define SMBHSTSTS (0 + i801_smba) @@ -164,8 +169,15 @@ int i801_setup(void) if (I801_dev == NULL) { do I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, - PCI_DEVICE_ID_INTEL_82801AB_3, - I801_dev); + PCI_DEVICE_ID_INTEL_82801AB_3, + I801_dev); + while (I801_dev && (PCI_FUNC(I801_dev->devfn) != 3)); + } + if (I801_dev == NULL) { + do + I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_82801BA_3, + I801_dev); while (I801_dev && (PCI_FUNC(I801_dev->devfn) != 3)); } if (I801_dev == NULL) { diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect index 2163fa7e..ce0b4473 100755 --- a/prog/detect/sensors-detect +++ b/prog/detect/sensors-detect @@ -72,6 +72,14 @@ use vars qw(@pci_adapters @chip_ids @undetectable_adapters); driver => "i2c-i801", match => sub { $_[0] =~ /^SMBus I801 adapter at [0-9,a-f]{4}/ }, } , + { + vendid => 0x8086, + devid => 0x2443, + func => 3, + procid => "Intel 82801BA ICH2", + driver => "i2c-i801", + match => sub { $_[0] =~ /^SMBus I801 adapter at [0-9,a-f]{4}/ }, + } , { vendid => 0x1106, devid => 0x3040,