kern/55092: [PATCH] New Intel ichsmb controller added

Brent Casavant bcasavan at
Wed Jul 30 22:00:28 PDT 2003

>Number:         55092
>Category:       kern
>Synopsis:       [PATCH] New Intel ichsmb controller added
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 30 22:00:26 PDT 2003
>Originator:     Brent Casavant
>Release:        FreeBSD 5.1-RELEASE i386
Angeltread Software Organization
System: FreeBSD 5.1-RELEASE FreeBSD 5.1-RELEASE #7: Wed Jul 30 23:33:08 CDT 2003 bcasavan at i386

P4 2.4GHz, Gigabyte GA-8IK1100 motherboard.

FreeBSD 5.1-RELEASE, with local modifications to enable hardware not
yet supported by -RELEASE (and maybe not even -CURRENT).


The SMBus controller on this particular motherboard is not yet recognized
by the FreeBSD kernel and drivers.  The following is a patch to enable
its recognition.  It has not been tested, other than booting the kernel
and seeing that it is recognized.  I have no idea what sort of interesting
things one can do with the SMBus, thus the lack of testing.

With my local modifications, the pciconf output is as follows:

--- cut here ---
ichsmb0 at pci0:31:3:      class=0x0c0500 card=0x24d21458 chip=0x24d38086 rev=0x02 hdr=0x00
    vendor   = 'Intel Corporation'
    class    = serial bus
    subclass = SMBus
--- cut here ---

And the dmesg output is:

--- cut here ---
ichsmb0: <Intel 82801DD (ICH5) SMBus controller> port 0x1400-0x141f irq 11 at device 31.3 on pci0
--- cut here ---

I'm not sure I named this thing correctly (Intel 82801DD in particular),
but this is an Intel ICH5R controller, and "82801DD" was the next sequential
controller name after those already in the code.  I don't know what
documentation would give me the official name, hopefully the maintainer
knows where to look.


Boot a FreeBSD kernel on the Gigabyte GA-8IK1100 motherboard.


The following patch enables the existing ichsmb driver to recognize
the controller:

--- cut here ---
cvs diff -u sys/dev/ichsmb/ichsmb_pci.c
Index: sys/dev/ichsmb/ichsmb_pci.c
RCS file: /usr/FreeBSDCVS/src/sys/dev/ichsmb/ichsmb_pci.c,v
retrieving revision 1.6
diff -u -r1.6 ichsmb_pci.c
--- sys/dev/ichsmb/ichsmb_pci.c 18 Oct 2002 12:06:01 -0000      1.6
+++ sys/dev/ichsmb/ichsmb_pci.c 31 Jul 2003 04:28:16 -0000
@@ -71,6 +71,7 @@
 #define ID_82801BA                     0x24438086
 #define ID_82801CA                     0x24838086
 #define ID_82801DC                     0x24C38086
+#define ID_82801DD                     0x24D38086
@@ -131,6 +132,9 @@
        case ID_82801DC:
                device_set_desc(dev, "Intel 82801DC (ICH4) SMBus controller");
+               break;
+       case ID_82801DD:
+               device_set_desc(dev, "Intel 82801DD (ICH5) SMBus controller");
                if (pci_get_class(dev) == PCIC_SERIALBUS
--- cut here ---

I hope this proves useful.

Brent Casavant

More information about the freebsd-bugs mailing list