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>