Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/i82801lpcreg.h
RevisionDateAuthorComments
 1.17  12-Apr-2023  riastradh ichsmb(4), tco(4): Add support for TCO on newer Intel chipsets.

TCO (`Total Cost of Ownership', Intel's bizarre name for a watchdog
timer) used to hang off the Intel I/O platform controller hub's (ICH)
low-pin-count interface bridge (LPC IB), or ichlpcib(4). On newer
devices, it hangs off the ICH SMBus instead.

Tested on INTEL 100SERIES_SMB (works) and INTEL 100SERIES_LP_SMB
(doesn't work, still not sure why).

XXX kernel revbump: This breaks the module ABI -- tco(4) modules
older than the change to make ta_has_rcba into ta_version will
incorrectly attach at buses they do not understand. (However, the
tco(4) driver is statically built into GENERIC, so maybe it's safe
for pullup since the module wouldn't have worked anyway.)
 1.16  22-Sep-2022  riastradh branches: 1.16.4;
ichsmb(4): Remove confusing `lpcib_' prefix on register names.
 1.15  22-Sep-2022  riastradh tco(4): Nix PMC_TCO_BASE offset in TCO register definitions.

This just uses a subregion with PMC_TCO_BASE automatically applied.

No functional change intended.
 1.14  22-Sep-2022  riastradh tco(4): Use a subregion of the PMC registers for TCO registers.

This is an intermediate step that will let us decouple it from access
via PMBASE.
 1.13  22-Sep-2022  riastradh ichlpcib(4), tco(4): Take `lpcib_' off various names.

For PMC-specific ones, change `lpcib_' to `pmc_'. These are in a
separate PCI device in newer chipsets.

For TCO-specific ones, which may live in different places, whether at
their own base address or as an offset from PMBASE, just leave it as
`tco_' or `tcotimer'.

No functional change intended.
 1.12  26-Dec-2014  msaitoh Fix a bug that ichlpcib(4) maps I/O area incorrectly and then fails to attach
gpio. It might also fix ACPI related problem described in PR#48960:
- The LPCIB_PCI_PMBASE and LPCIB_PCI_GPIO register are alike PCI BAR but not
completely compatible with it. It's ok because the registers' addresses are
out of BAR0-BAR5(0x10-0x24) and are located in the device-dependent header.
The PMBASE and GPIO registers define the base address and the type but not
describe the size. The size is fixed to 128bytes. So use
pci_mapreg_submap().
- Make pci_mapreg_submap() extern again.
- Fix the calculation of the map size in pci_mapreg_submap().
 1.11  23-Jul-2010  jakllsch branches: 1.11.14; 1.11.18; 1.11.34; 1.11.36;
Finish cleaning up pchb from recent change.
Use fewer magic numbers in ichlpcib.
Slightly improve style conformance.
Update paths in cpp re-inclusion guards.
 1.10  27-Sep-2009  jakllsch branches: 1.10.2; 1.10.4;
gpio(4) support for Intel ICH southbridges.

Tested on Intel SS4200-E (ICH7), and Acorp 6A815EPD (ICH2) motherboards,
on amd64 and i386 ports respectively.

It should be noted that the majority of boards with ICH chips do not
expose the GPIO pins for off-board use. For instance, aside from the
three exposed-on-a-header pins on the 6A815EPD, another pin is also
used to control write protect on the FWH. The SS4200 exposes the GPIO
on a header that connects to the 10 LEDs on the front panel, as well
as a tact switch on the back panel.
 1.9  21-Sep-2009  jakllsch Add more-complete definitions of ICH GPIO-related registers.
While here, fix a typo in a register number.
 1.8  28-Apr-2008  martin branches: 1.8.10;
Remove clause 3 and 4 from TNF licenses
 1.7  09-Dec-2007  jmcneill branches: 1.7.10; 1.7.12; 1.7.14;
Merge jmcneill-pm branch.
 1.6  26-Aug-2007  xtraeme branches: 1.6.2; 1.6.10; 1.6.12;
Move the ICH SMB defs to dev/ic/i82801lpcreg.h, it's where it belongs.
This is to avoid code duplication.
 1.5  26-Aug-2007  xtraeme Some changes for the ichlpcib driver:

- Moved to x86/pci, so that EM64T systems running NetBSD/amd64 can use it.
- Added support for the TCO on ICH6 or newer chipsets, adapted from
FreeBSD.
- Added timecounter support for the power management timer, adapted from
OpenBSD.
- Plus some misc/cosmetic changes.

Thanks to yukonbob on irc@freenode for testing the TCO part on ICH4-M.
Tested by me with ICH7 too.
 1.4  16-Feb-2006  perry branches: 1.4.24; 1.4.34; 1.4.38;
Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
 1.3  11-Dec-2005  christos branches: 1.3.2; 1.3.4; 1.3.6;
merge ktrace-lwp.
 1.2  31-Jul-2004  mrg branches: 1.2.2; 1.2.14;
add several definitions useful for ICH-based speedstep.
(from linux and freebsd.)
 1.1  14-Mar-2004  minoura Add Intel ICHn PCI-LPC bridge driver.
It is a pcib, but with sysmon watchdog support.
 1.2.14.3  21-Jan-2008  yamt sync with head
 1.2.14.2  03-Sep-2007  yamt sync with head.
 1.2.14.1  21-Jun-2006  yamt sync with head.
 1.2.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.2.2.2  03-Aug-2004  skrll Sync with HEAD
 1.2.2.1  31-Jul-2004  skrll file i82801lpcreg.h was added on branch ktrace-lwp on 2004-08-03 10:46:15 +0000
 1.3.6.1  22-Apr-2006  simonb Sync with head.
 1.3.4.1  09-Sep-2006  rpaulo sync with head
 1.3.2.1  18-Feb-2006  yamt sync with head.
 1.4.38.2  04-Sep-2007  joerg Don't use a global variable to decide whether this is a ICH6+,
use a variable in the softc to determine whether the RCBA is supported.
Add generic HPET support for ICH5 and ICH6+.

This is not (yet) enabled by default, until someone adds the code to
not use the direct attachment if hpet was configured via ACPI.
 1.4.38.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.4.34.1  03-Sep-2007  skrll Sync with HEAD.
 1.4.24.1  09-Oct-2007  ad Sync with head.
 1.6.12.1  11-Dec-2007  yamt sync with head.
 1.6.10.1  26-Dec-2007  ad Sync with head.
 1.6.2.1  09-Jan-2008  matt sync with HEAD
 1.7.14.3  11-Aug-2010  yamt sync with head.
 1.7.14.2  11-Mar-2010  yamt sync with head
 1.7.14.1  16-May-2008  yamt sync with head.
 1.7.12.1  18-May-2008  yamt sync with head.
 1.7.10.1  02-Jun-2008  mjf Sync with HEAD.
 1.8.10.1  23-Jan-2015  martin Pull up the following changes, requested by msaitoh in ticket #1942:

sys/arch/x86/pci/ichlpcib.c 1.40, 1.45 via patch
sys/dev/ic/i82801lpcreg.h 1.12
sys/dev/pci/pci_map.c 1.32 via patch

- Fix a bug that ichlpcib(4) maps I/O area incorrectly. It might also
fixes ACPI related problem described in PR#48960:
- The LPCIB_PCI_PMBASE and LPCIB_PCI_GPIO register are alike PCI BAR
but not completely compatible with it. It's ok because the
registers' addresses are out of BAR0-BAR5(0x10-0x24) and are
located in the device-dependent header. The PMBASE and GPIO
registers define the base address and the type but not describe
the size. The size is fixed to 128bytes. So use
pci_mapreg_submap().
- Fix the calculation of the map size in pci_mapreg_submap().
- Use '\n' at the end of aprint_error_dev() format strings.
 1.10.4.1  05-Mar-2011  rmind sync with head
 1.10.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.11.36.1  06-Apr-2015  skrll Sync with HEAD
 1.11.34.1  08-Jan-2015  martin Pull up following revision(s) (requested by msaitoh in ticket #394):
sys/dev/pci/pcivar.h: revision 1.101
sys/dev/pci/pci_map.c: revision 1.32
sys/dev/ic/i82801lpcreg.h: revision 1.12
sys/arch/x86/pci/ichlpcib.c: revision 1.45
Fix a bug that ichlpcib(4) maps I/O area incorrectly and then fails to attach
gpio. It might also fix ACPI related problem described in PR#48960:
- The LPCIB_PCI_PMBASE and LPCIB_PCI_GPIO register are alike PCI BAR but not
completely compatible with it. It's ok because the registers' addresses are
out of BAR0-BAR5(0x10-0x24) and are located in the device-dependent header.
The PMBASE and GPIO registers define the base address and the type but not
describe the size. The size is fixed to 128bytes. So use
pci_mapreg_submap().
- Make pci_mapreg_submap() extern again.
- Fix the calculation of the map size in pci_mapreg_submap().
 1.11.18.1  03-Dec-2017  jdolecek update from HEAD
 1.11.14.1  16-Jan-2015  snj Pull up following revision(s) (requested by msaitoh in ticket #1229):
sys/arch/x86/pci/ichlpcib.c: revision 1.40, 1.45
sys/dev/pci/pcivar.h: revision 1.101
sys/dev/pci/pci_map.c: revision 1.32
sys/dev/ic/i82801lpcreg.h: revision 1.12
Use '\n' at the end of all aprint_error_dev() format strings.
--
Fix a bug that ichlpcib(4) maps I/O area incorrectly and then fails to attach
gpio. It might also fixes ACPI related problem described in PR#48960:
- The LPCIB_PCI_PMBASE and LPCIB_PCI_GPIO register are alike PCI BAR but not
completely compatible with it. It's ok because the registers' addresses are
out of BAR0-BAR5(0x10-0x24) and are located in the device-dependent header.
The PMBASE and GPIO registers define the base address and the type but not
describe the size. The size is fixed to 128bytes. So use
pci_mapreg_submap().
- Make pci_mapreg_submap() extern again.
- Fix the calculation of the map size in pci_mapreg_submap().
 1.16.4.1  01-Aug-2023  martin Pull up following revision(s) (requested by riastradh in ticket #282):

sys/dev/pci/ichsmb.c: revision 1.82
sys/arch/amd64/conf/GENERIC: revision 1.602
sys/arch/x86/pci/tco.c: revision 1.10
sys/arch/x86/pci/tco.h: revision 1.5
sys/arch/x86/pci/ichlpcib.c: revision 1.59
sys/dev/ic/i82801lpcreg.h: revision 1.17
sys/arch/x86/pci/files.pci: revision 1.27
sys/dev/pci/files.pci: revision 1.446

ichsmb(4), tco(4): Add support for TCO on newer Intel chipsets.

TCO (`Total Cost of Ownership', Intel's bizarre name for a watchdog
timer) used to hang off the Intel I/O platform controller hub's (ICH)
low-pin-count interface bridge (LPC IB), or ichlpcib(4). On newer
devices, it hangs off the ICH SMBus instead.
Tested on INTEL 100SERIES_SMB (works) and INTEL 100SERIES_LP_SMB
(doesn't work, still not sure why).

XXX kernel revbump: This breaks the module ABI -- tco(4) modules
older than the change to make ta_has_rcba into ta_version will
incorrectly attach at buses they do not understand. (However, the
tco(4) driver is statically built into GENERIC, so maybe it's safe
for pullup since the module wouldn't have worked anyway.)

RSS XML Feed