probe gets called without i2c device
Hi all, We didn't connect our i2c device with our board. But kernel driver subsystem calls the probe function from driver code. How to debug the issue. our observation is as follows, In driver, if we comment out the .id_table in driver struct, then it is not loaded. When the device is connected or not, both the time, the driver is not loaded.
On Fri, Mar 23, 2018 at 05:47:01PM +0530, MUHAMMED ASAD P T wrote:
Hi all,
We didn't connect our i2c device with our board. But kernel driver
subsystem calls the probe function from driver code. How to debug the
issue.
our observation is as follows,
In driver, if we comment out the .id_table in driver struct, then it is not loaded. When the device is connected or not, both the time, the driver is not loaded.
i2c is not a "hotplug" bus, so how would your device be found in order to know to load it or not? Shouldn't you have some device tree information that knows to bind your device to the driver properly? good luck! greg k-h
Hi Greg, Thanks for the reply. We have the device tree information and wrote in the board. In this device tree, we specify our I2c device details. In usual, if the device is there, then driver probe gets called. This is the proper scenario. But if the device is not there, then i2c master controller will not get the Ack from slave device. Still driver probe gets called without device connected (In device tree, device node is there for slave device). How the driver probe gets called?? This is the problem for us. Thanks & Regards - Asad IQ Root Technologies ---- On Fri, 23 Mar 2018 17:57:31 +0530 Greg KH <greg@kroah.com> wrote ---- On Fri, Mar 23, 2018 at 05:47:01PM +0530, MUHAMMED ASAD P T wrote: > Hi all, > > > > We didn't connect our i2c device with our board. But kernel driver > > subsystem calls the probe function from driver code. How to debug the > > issue. > > > > our observation is as follows, > > > > In driver, if we comment out the .id_table in driver struct, then it > is not loaded. When the device is connected or not, both the time, the > driver is not loaded. i2c is not a "hotplug" bus, so how would your device be found in order to know to load it or not? Shouldn't you have some device tree information that knows to bind your device to the driver properly? good luck! greg k-h _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Fri, 23 Mar 2018 19:07:41 +0530, MUHAMMED ASAD P T said:
We have the device tree information and wrote in the board. In this device tree, we specify our I2c device details.
So you told the kernel the device is there.
In usual, if the device is there, then driver probe gets called. This is the proper scenario.
So the kernel acts like it's there.
But if the device is not there, then i2c master controller will not get the Ack from slave device. Still driver probe gets called without device connected (In device tree, device node is there for slave device).
Why is the slave listed if it isn't actually present and wired up?
How the driver probe gets called?? This is the problem for us.
Maybe if you don't want the driver called if the device isn't there, you shouldn't lie to the kernel and write a device tree entry that says it *is* there. Just a thought...
participants (3)
-
Greg KH -
MUHAMMED ASAD P T -
valdis.kletnieks@vt.edu