Hi,

In order to improve my understanding of Linux i2c layer, I read the source code.
I read i2c-core.c and I try to anderstand why my clients wasn't created.

The problem is in the i2c_register_adapter function :

/* create pre-declarated device nodes for new-style drivers */
if (adap->nr < __i2c_first_dynamic_bus_num)
  i2c_scan_static_board_info(adap);

The test is NEVER true. So my clients are not created.



I read that __i2c_first_dynamic_bus_num is set to 1.
It does not seems to change.

And that adap->nr refers to "Dynamic Bus Number".
My first bus register with adap->nr=1.
The second register with adap->nr=2.

That's why the test fails.


So, I have had an idea to fix the problem.

I change :
i2c_add_adapter(adap);

with
adap->nr = 0;
i2c_add_numbered_adapter(adap);


But, it make new problems :
- I can't manage two busses
- I definitly don't anderstand how I2C_BOARD_INFO macro can associate
  a client to a specified bus
- I don't anderstand what I am writing, and I really dislike it :c


So many questions :)

Thanks for help.


Best regards,

Légion.

_______________________________________________
i2c mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/i2c

Reply via email to