|
|
|
@@ -129,106 +129,153 @@ static const struct pci_device_table ichsmb_devices[] = {
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801CA),
|
|
|
|
|
PCI_DESCR("Intel 82801CA (ICH3) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801DC),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801DC (ICH4) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801EB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801EB (ICH5) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801FB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801FB (ICH6) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801GB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801GB (ICH7) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801H),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801H (ICH8) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801I),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801I (ICH9) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801GB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801GB (ICH7) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801H),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801H (ICH8) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801I),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801I (ICH9) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_EP80579),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel EP80579 SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801JI),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801JI (ICH10) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_82801JD),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 82801JD (ICH10) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_PCH),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel PCH SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_6300ESB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 6300ESB (ICH) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_631xESB),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel 631xESB/6321ESB (ESB2) SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_DH89XXCC),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel DH89xxCC SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_PATSBURG),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Patsburg SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_CPT),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Cougar Point SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_PPT),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Panther Point SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_AVOTON),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Avoton SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_LPT),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Lynx Point SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_LPTLP),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Lynx Point-LP SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_WCPT),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Wildcat Point SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_WCPTLP),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Wildcat Point-LP SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_BAYTRAIL),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Baytrail SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_BRASWELL),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Braswell SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_COLETOCRK),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Coleto Creek SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_WELLSBURG),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Wellsburg SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_SRPT),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Sunrise Point-H SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_SRPTLP),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Sunrise Point-LP SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_DENVERTON),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Denverton SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_BROXTON),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Broxton SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_LEWISBURG),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Lewisburg SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_LEWISBURG2),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Lewisburg SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_KABYLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Kaby Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_CANNONLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Cannon Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_COMETLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Comet Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_COMETLAKE2),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Comet Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_TIGERLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Tiger Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_TIGERLAKE2),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Tiger Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_ELKHARTLAKE),
|
|
|
|
|
PCI_DESCR("Intel Elkhart Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_GEMINILAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Gemini Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_CEDARFORK),
|
|
|
|
|
PCI_DESCR("Intel Cedar Fork SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_ICELAKE),
|
|
|
|
|
PCI_DESCR("Intel Ice Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_ALDERLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Alder Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_ALDERLAKE2),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Alder Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_ALDERLAKE3),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Alder Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_RAPTORLAKE),
|
|
|
|
|
PCI_DESCR("Intel Raptor Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_METEORLAKE),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Meteor Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_METEORLAKE2),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Meteor Lake SMBus controller") },
|
|
|
|
|
{ PCI_DEV(PCI_VENDOR_INTEL, ID_METEORLAKE3),
|
|
|
|
|
.driver_data = (uintptr_t)ICHSMB_FEATURE_BLOCK_BUFFER,
|
|
|
|
|
PCI_DESCR("Intel Meteor Lake SMBus controller") },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@@ -288,6 +335,7 @@ ichsmb_pci_probe(device_t dev)
|
|
|
|
|
static int
|
|
|
|
|
ichsmb_pci_attach(device_t dev)
|
|
|
|
|
{
|
|
|
|
|
const struct pci_device_table *tbl;
|
|
|
|
|
const sc_p sc = device_get_softc(dev);
|
|
|
|
|
int error;
|
|
|
|
|
|
|
|
|
@@ -296,6 +344,12 @@ ichsmb_pci_attach(device_t dev)
|
|
|
|
|
sc->ich_cmd = -1;
|
|
|
|
|
sc->dev = dev;
|
|
|
|
|
|
|
|
|
|
tbl = PCI_MATCH(dev, ichsmb_devices);
|
|
|
|
|
if (tbl == NULL)
|
|
|
|
|
return (ENXIO);
|
|
|
|
|
|
|
|
|
|
sc->features = (uint32_t)tbl->driver_data;
|
|
|
|
|
|
|
|
|
|
/* Allocate an I/O range */
|
|
|
|
|
sc->io_rid = ICH_SMB_BASE;
|
|
|
|
|
sc->io_res = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT,
|
|
|
|
|