Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Feb 2018 18:42:20 +0100
From:      Gary Jennejohn <gljennjohn@gmail.com>
To:        Lee D <embaudarm@gmail.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Help, please, with getting a custom I2C real time clock module to load
Message-ID:  <20180225184220.748e9d59@ernst.home>
In-Reply-To: <CANC_bnOe1-%2BBQocKfNraJuq4UjbYe=ita=0qsy65EVMdhGQDLQ@mail.gmail.com>
References:  <CANC_bnOe1-%2BBQocKfNraJuq4UjbYe=ita=0qsy65EVMdhGQDLQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 25 Feb 2018 09:48:58 -0500
Lee D <embaudarm@gmail.com> wrote:

> Hi Everyone,
> 
> I have written a new I2C driver (for the Xilinx Zynq) and a new real
> time clock chip driver (for the ST M41T82) to use with hardware on my
> custom board.  This is for 11.0.1.
> 
> The I2C driver works fine, but I can't seem to get my RTC driver to
> load.  The m41t82_probe() function is never even called.
> 
> Both are loaded with kldload at the moment.
> 
> I think the problem is something in DRIVER_MODULE macro that is
> preventing the kernel from even trying to let it probe.  One clue is
> that if I change "iicbus" to "simplebus" in the DRIVER_MODULE macro
> of the RTC, it will then at least call m41t82_probe().
> 
> It's like the kernel thinks that I have no iicbus driver and thus
> won't even try to load the RTC module.
> 
> I have turned on "device iic" and "device iicbus" in my kernel config
> file.
> 
> No messages are given when I try to load the m41t82 module.  It just
> silently loads and does nothing.
> 
> Here is a code snippet from my I2C driver:
> ------------------------------------------
> 
> static driver_t i2c_driver = {
>   "i2c",
>   i2c_methods,
>   sizeof(struct i2c_softc),
> };
> static devclass_t  i2c_devclass;
> 
> DRIVER_MODULE(iicbus, i2c, iicbus_driver, iicbus_devclass, 0, 0);
> DRIVER_MODULE(i2c, simplebus, i2c_driver, i2c_devclass, 0, 0);
> 

This should give you a clue:

grep DRIVER_MODULE /sys/dev/iicbus/iic.c
DRIVER_MODULE(iic, iicbus, iic_driver, iic_devclass, 0, 0);

grep DRIVER_MODULE /sys/dev/iicbus/rtc8583.c
DRIVER_MODULE(rtc8583, iicbus, rtc8583_driver, rtc8583_devclass, NULL, NULL);

[snip]

-- 
Gary Jennejohn



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180225184220.748e9d59>