FreeBSD sees only one I2C device, while Linux sees two.

Gleb Popov arrowd at freebsd.org
Wed May 8 10:43:55 UTC 2019


On Wed, May 8, 2019 at 10:38 AM Andriy Gapon <avg at freebsd.org> wrote:

> On 07/05/2019 22:04, Gleb Popov wrote:
> > However, on FreeBSD I get different picture. pciconf lists both devices:
> >
> > ig4iic_pci0 at pci0:0:21:0:        class=0x118000 card=0x15e01043
> > chip=0xa1608086 rev=0x31 hdr=0x00
> >     vendor     = 'Intel Corporation'
> >     device     = '100 Series/C230 Series Chipset Family Serial IO I2C
> > Controller'
> >     class      = dasp
> >
> > ichsmb0 at pci0:0:31:4:    class=0x0c0500 card=0x15e01043 chip=0xa1238086
> > rev=0x31 hdr=0x00
> >     vendor     = 'Intel Corporation'
> >     device     = '100 Series/C230 Series Chipset Family SMBus'
> >     class      = serial bus
> >     subclass   = SMBus
> >
> > But there is only one /dev/iic0 device. Relevant devinfo parts:
> >
> > ig4iic_pci0
> >           iicbus0
> >             iic0
> >             iicsmb0
> >               smbus1
> >
> > ichsmb0
> >           smbus0
> >
> > Is there something missing in the kernel, or I'm just doing something
> wrong?
>
> One is an I2C controller, the other is an SMBus controller (SMBus being a
> sort
> of a subset of I2C).  That's why you have iicbus0 and smbus0.  All
> hardware is
> visible.  It seems that you do not have smb(4) driver and, thus, there is
> no
> /dev/smbX.
>

Right, kldloading smb created /dev/smb0 on smbus0.
But on Linux i2c-detect can send commands to both devices. I need to get
iic1 from smb0 somehow, I guess?


> --
> Andriy Gapon
>


More information about the freebsd-hackers mailing list