Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jun 2014 17:25:33 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        sbruno@freebsd.org
Cc:        freebsd-current <freebsd-current@FreeBSD.org>
Subject:   Re: SMBus controller
Message-ID:  <6F35309D-FA6D-4882-99A2-57346DFF16B9@gmail.com>
In-Reply-To: <1402785781.1106.5.camel@bruno>
References:  <1402772923.1120.13.camel@bruno> <1402785781.1106.5.camel@bruno>

next in thread | previous in thread | raw e-mail | index | archive | help

On Jun 14, 2014, at 4:43 PM, Sean Bruno <sbruno@ignoranthack.me> wrote:

> On Sat, 2014-06-14 at 12:08 -0700, Sean Bruno wrote:=20
>> I note that my TLenovo 61 has one of these:
>>=20
>> ichsmb0@pci0:0:31:3:	class=3D0x0c0500 card=3D0x20a917aa =
chip=3D0x283e8086
>> rev=3D0x03 hdr=3D0x00
>>    vendor     =3D 'Intel Corporation'
>>    device     =3D '82801H (ICH8 Family) SMBus Controller'
>>    class      =3D serial bus
>>    subclass   =3D SMBus
>>=20
>>=20
>=20
> So, there's something broken in the initialization of the driver and =
the
> driver dependencies here.
>=20
> If I load "smb.ko" by itself, no other modules are loaded (ichsmb,
> smbus).  Should it?

I don=92t think so. If I kldload pci, would you expect most of the =
drivers in the system to be loaded?

> If I load ichsmb, smbus is loaded, so that's good.  But, the first =
time
> I do this, the driver seems to think I have 16 bus instances:
>=20
>=20
> iicsmb0: <SMBus over I2C bridge> on iicbus0
> iicsmb1: <SMBus over I2C bridge> on iicbus1
> iicsmb2: <SMBus over I2C bridge> on iicbus2
> iicsmb3: <SMBus over I2C bridge> on iicbus3
> iicsmb4: <SMBus over I2C bridge> on iicbus4
> iicsmb5: <SMBus over I2C bridge> on iicbus5
> iicsmb6: <SMBus over I2C bridge> on iicbus6
> iicsmb7: <SMBus over I2C bridge> on iicbus7
> iicsmb8: <SMBus over I2C bridge> on iicbus8
> iicsmb9: <SMBus over I2C bridge> on iicbus9
> iicsmb10: <SMBus over I2C bridge> on iicbus10
> iicsmb11: <SMBus over I2C bridge> on iicbus11
> iicsmb12: <SMBus over I2C bridge> on iicbus12
> iicsmb13: <SMBus over I2C bridge> on iicbus13
> iicsmb14: <SMBus over I2C bridge> on iicbus14
> iicsmb15: <SMBus over I2C bridge> on iicbus15
> smbus0: <System Management Bus> on iicsmb0
> smbus1: <System Management Bus> on iicsmb1
> smbus2: <System Management Bus> on iicsmb2
> smbus3: <System Management Bus> on iicsmb3
> smbus4: <System Management Bus> on iicsmb4
> smbus5: <System Management Bus> on iicsmb5
> smbus6: <System Management Bus> on iicsmb6
> smbus7: <System Management Bus> on iicsmb7
> smbus8: <System Management Bus> on iicsmb8
> smbus9: <System Management Bus> on iicsmb9
> smbus10: <System Management Bus> on iicsmb10
> smbus11: <System Management Bus> on iicsmb11
> smbus12: <System Management Bus> on iicsmb12
> smbus13: <System Management Bus> on iicsmb13
> smbus14: <System Management Bus> on iicsmb14
> smbus15: <System Management Bus> on iicsmb15
>=20
> I then load smb.ko and I get no useful output from smbmsg -p.
>=20
> If I try to acces /dev/smb1, ctrl-c it, unload all modules and then
> reload them, I get completely different (and functional) behavior.  I
> only get ONE smbus and I can poll "devices" there, even though I have =
no
> idea what they are.
>=20
> ichsmb0: <Intel 82801H (ICH8) SMBus controller> port 0x1c60-0x1c7f mem
> 0xfe227400-0xfe2274ff irq 23 at device 31.3 on pci0
> smbus0: <System Management Bus> on ichsmb0
> smb0: <SMBus generic I/O> on smbus0
> root@bruno:/home/sbruno # smbmsg -p
> Probing for devices on /dev/smb0:
> Device @0x10: w
> Device @0x88: rw
> Device @0xa8: w
> Device @0xaa: rw
> Device @0xac: rw
> Device @0xae: rw
> Device @0xb8: rw
> Device @0xc2: w
> Device @0xc8: w
>=20
>=20
>=20
>=20
>=20
>=20
> Right ... so, I did the following:
>=20
> kldload ichsmb
>=20
> This seems to know to bull in smbus.ko.

I kinda think that=92s a bug. Makes it impossible to load/unload smbus =
independent of ichsmb. pccard had that issue, but I fixed it eons ago. =
However, it might be a necessary at the moment bug due to symbols being =
exported from smbus.ko that are needed btt ichsmb=85


> ichsmb0: <Intel 82801H (ICH8) SMBus controller> port 0x1c60-0x1c7f mem
> 0xfe227400-0xfe2274ff irq 23 at device 31.3 on pci0
> smbus0: <System Management Bus> on ichsmb0
>=20
>=20
> This doesn't really do anything useful, until I load "smb.ko=94:

That makes sense to me. Again, each of these things is independent, or =
should be.

It sounds like there=92s other breakage going on. You might want to see =
what putting it in your kernel tells you.

Warner=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6F35309D-FA6D-4882-99A2-57346DFF16B9>