Date: Wed, 19 Dec 2018 13:01:37 -0700 From: Ian Lepore <ian@freebsd.org> To: Anthony Jenkins <Scoobi_doo@yahoo.com>, John Baldwin <jhb@FreeBSD.org> Cc: FreeBSD CURRENT <freebsd-current@freebsd.org>, Gleb Popov <6yearold@gmail.com> Subject: Re: Composite PCI devices in FreeBSD (mfd in Linux) Message-ID: <1545249697.76088.176.camel@freebsd.org> In-Reply-To: <1c3e555d-7289-1219-8c66-07f75a335dc0@yahoo.com> References: <cf2c24e0-f7d4-9496-7efa-6c5963d77362@yahoo.com> <ff39b848-0444-2018-e206-1cf7486ab19e@FreeBSD.org> <b77e0aab-0b7f-96db-1488-32c92870642c@yahoo.com> <1544473194.1860.340.camel@freebsd.org> <05b1183c-6117-267b-42f9-19e750adfa07@FreeBSD.org> <02e30a11-4adf-3efb-d2ce-89c598bda9cf@yahoo.com> <1c3e555d-7289-1219-8c66-07f75a335dc0@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2018-12-19 at 14:35 -0500, Anthony Jenkins wrote: > On 12/19/18 10:41 AM, Anthony Jenkins wrote: > > > > [snip] > > > > I'm not feeling too confident about the condition of the FreeBSD > > ig4 > > driver; the PCI attach code was calling pci_alloc_msi() wrong, > > passing > > a pointer to the rid (0) instead of a pointer to a count variable, > > and > > not passing bus_alloc_resource_any() an IRQ rid > 0 if it has an > > MSI. > > I'd be happy(er) if ig4 created a /dev/iic0 node - I figured > > iicbus(4) > > took care of all that... > > > > https://github.com/ScoobiFreeBSD/freebsd-intel-lpss > > > Found it! I didn't declare ig4_iic to include the ig4_lpss as a > sub-device. Now it at least /looks/ like I'm getting I2C devices > found > on both my DesignWare I2C busses. > > diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c > index 6bbe417..34c1adb 100644 > --- a/sys/dev/ichiic/ig4_iic.c > +++ b/sys/dev/ichiic/ig4_iic.c > @@ -802,3 +802,4 @@ ig4iic_dump(ig4iic_softc_t *sc) > > DRIVER_MODULE(iicbus, ig4iic_acpi, iicbus_driver, iicbus_devclass, > NULL, NULL); > DRIVER_MODULE(iicbus, ig4iic_pci, iicbus_driver, iicbus_devclass, > NULL, NULL); > +DRIVER_MODULE(iicbus, ig4iic_lpss, iicbus_driver, iicbus_devclass, > NULL, NULL); That new DRIVER_MODULE() statement should be in your new driver, not in ig4_iic.c. Those other two statements should also be moved into their corresponding source code files. At least, that's the precedent followed by all the i2c controller drivers except ig4_iic: the DRIVER_MODULE() statement that establishes the connection between iicbus and the controller lives right alongside the DRIVER_MODULE() statement that establishes the connection between the controller and the bus it sits on. See, for example: sys/dev/glxiic/glxiic.c sys/dev/iicbus/iicoc.c -- Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1545249697.76088.176.camel>