freebsd-nq/sys/pci
Ruslan Ermilov 1a40739a00 Fix PCI ID of the AMD-8111 System Management controller so it matches
SMBus 1.0 and not SMBus 2.0.

AMD-8111 hub (datasheet is publically available) implements both SMBus
2.0 (a separate PCI device) and SMBus 1.0 (a subfunction of the System
Management Controller device with the base I/O address is accessible
through the CSR 0x58).  This driver only supports AMD-756 SMBus 1.0
compatible devices.

With the patched sysutils/xmbmon port (to also fix PCI ID and to enable
smb(4) support), I now get:

pciconf:
none0@pci0:7:2: class=0x0c0500 card=0x746a1022 chip=0x746a1022 rev=0x02 hdr=0x00
    vendor   = 'Advanced Micro Devices (AMD)'
    device   = 'AMD-8111 SMBus 2.0 Controller'
    class    = serial bus
    subclass = SMBus
amdpm0@pci0:7:3:        class=0x068000 card=0x746b1022 chip=0x746b1022 rev=0x05 hdr=0x00
    vendor   = 'Advanced Micro Devices (AMD)'
    device   = 'AMD-8111 ACPI System Management Controller'
    class    = bridge

dmesg:
amdpm0: <AMD 756/766/768/8111 Power Management Controller> port 0x10e0-0x10ff at device 7.3 on pci0
smbus0: <System Management Bus> on amdpm0

# mbmon -A -d
Summary of Detection:
 * SMB monitor(s)[ioctl:AMD8111]:
  ** Winbond Chip W83627HF/THF/THF-A found at slave address: 0x50.
  ** Analog Dev. Chip ADM1027 found at slave address: 0x5C.
 * ISA monitor(s):
  ** Winbond Chip W83627HF/THF/THF-A found.

I think the confusion comes from the fact that nobody really tried
SMBus with xmbmon :-), since sysutils/xmbmon port doesn't come with
SMBus support enabled, neither in FreeBSD 4, nor in later versions,
so mbmon(1) was just showing the values from the Winbond sensors
accessible through the ISA I/O method (mbmon -I), for me anyway.

On my test machine, the amdpm(4) didn't even attach due to I/O port
allocation failure (who knows what the hell it read from CSR 0x58
of the SMBus 2.0 device :-), which isn't in the CSR space).

I've also checked that lm_sensors.org uses correct PCI ID for SMBus
1.0 of AMD-8111:

i2c-amd756.c:   {PCI_VENDOR_ID_AMD, 0x746B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AMD8111 },

This driver is analogous to our amdpm.c which supports SMBus 1.0
AMD-756 and compatible devices, including SMBus 1.0 on AMD-8111.

i2c-amd8111.c:  { 0x1022, 0x746a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },

This driver is analogous to nForce-2/3/4, i2c-nforce2.c, which
supports SMBus 2.0, and which our amdpm.c does NOT support
(SMBus 2.0 uses a different, ACPI-unified, API to talk to SMBus).
At least I know for sure it doesn't work with my nForce3.  :-)

(The xmbmon port will be fixed to correct the PCI ID too and to
enable the smb(4) support.)
2005-12-16 15:03:16 +00:00
..
agp_ali.c Add device id for the Ali M1671 host to AGP bridge. 2005-02-27 13:05:34 +00:00
agp_amd64.c 0xb1881106 seems to be an AGP bridge and some BIOSes incorrectly handle 2005-11-14 21:54:20 +00:00
agp_amd.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_ati.c Add a new AGP driver for ATI IGP chipsets. The driver is based on reading of 2005-09-17 03:36:47 +00:00
agp_i810.c Add support for i915 GMCH AGP. This diff is a combination of work by myself 2005-12-02 23:51:36 +00:00
agp_if.m /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
agp_intel.c Add support for the i855GM, tested by an r300 user. 2005-11-29 04:53:22 +00:00
agp_nvidia.c Fix agp_nvidia.c to behave more like the linux driver, fixing DRI on Radeon 2005-09-16 22:59:47 +00:00
agp_sis.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_via.c Make the initialization in the AGPv3 case match that of Linux. Fixes hangs on 2005-06-26 04:01:11 +00:00
agp.c
agppriv.h
agpreg.h Add support for i915 GMCH AGP. This diff is a combination of work by myself 2005-12-02 23:51:36 +00:00
agpvar.h
alpm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
amdpm.c Fix PCI ID of the AMD-8111 System Management controller so it matches 2005-12-16 15:03:16 +00:00
dc21040reg.h
if_de.c Fix the type of "eaddr" to guarantee the required alignment. 2005-12-01 21:18:04 +00:00
if_devar.h Byte copy IF_LLADDR() on stack to align it to be safe for typecasts. 2005-11-30 17:48:23 +00:00
if_mn.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_pcn.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_pcnreg.h Fix up the locking in pcn(4) and mark it MPSAFE. 2005-08-05 16:03:16 +00:00
if_rl.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_rlreg.h Only allow the sk(4) driver to attach to revision 2 of the LinkSys EG1032 2005-10-14 18:51:30 +00:00
if_sf.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_sfreg.h Fixup locking for sf(4) and mark MPSAFE: 2005-08-18 17:09:16 +00:00
if_sis.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_sisreg.h Small fixes to sis(4): 2005-09-26 18:42:27 +00:00
if_sk.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_skreg.h Only allow the sk(4) driver to attach to revision 2 of the LinkSys EG1032 2005-10-14 18:51:30 +00:00
if_ste.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_stereg.h Various locking fixes and mark MPSAFE: 2005-08-30 20:35:08 +00:00
if_tl.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_tlreg.h - Fixup locking and mark MPSAFE. 2005-09-15 17:12:29 +00:00
if_vr.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_vrreg.h - Use callout_*() to manage the callout and make it MPSAFE. 2005-10-31 21:37:27 +00:00
if_wb.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_wbreg.h Fixup locking and mark MPSAFE. 2005-10-27 21:22:58 +00:00
if_xl.c - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_xlreg.h Various fixups to locking: 2005-08-18 19:24:30 +00:00
intpm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
intpmreg.h
locate.pl
ncr.c Add back 'n' that went missing in last commit 2005-02-25 03:43:43 +00:00
ncrreg.h Fix typos from previous commit. 2005-01-07 05:01:24 +00:00
viapm.c Fix -Wundef from compiling the amd64 LINT. 2005-12-04 10:06:06 +00:00
xmaciireg.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
xrpu.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
yukonreg.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00