Finding particular I2C adapter?
Hi!
First of all - I know what I'm asking for is somewhat "broken by design", but anyway...
I'm about to develop a driver for a custom chip attached to SMBus in a sort of industrial PC (choosing SMBus was a really bad idea, imho, but unfortunately I can't change hardware team decisions).
While developing the I2C client driver seems pretty straight-forward, I'm slightly confused about making it look for the device on a particular I2C adapter instance. The project is limited to particular board types, each using ICH chipset, so I need to use i2c_adapter controlled by i2c-i801 module.
Here's my understanding so far:
- it is not an embedded system in a strict sense -> thus no i2c_board_info -> no static I2C configuration
- AFAIR I can force the bus and address using 'force' parameter at module loading time (e.g. via /etc/modules), but the I2C adapter number is not static anyway on PC, and depend on e.g. adapter modules loading order, so I'm a bit afraid of users breaking this configuration too easily.
- similar issue with echo'ing to /sys/bus/i2c/devices/i2c-<n>/new_device
- I need to know the bus ID in advance
Ideally, I'd like to have a sort of wrapper module that will find the proper i2c_adapter and instantiate my i2c_client explicitly. Yet I know that iterating i2c adapters is discouraged at least (actually, is there any API now allowing for this? calling i2c_get_adapter with successive numbers is clearly a hack).
Any ideas?
BR,
Przemek
A message that is not in the archive (sent off-list or not yet received): 4E8EF3DC.7060704-qaBtZ/[email protected]
Quoted 5 lines · Przemyslaw Wegrzyn
Ideally, I'd like to have a sort of wrapper module that will find the proper
i2c_adapterand instantiate myi2c_clientexplicitly. Yet I know that iterating i2c adapters is discouraged at least (actually, is there any API now allowing for this? callingi2c_get_adapterwith successive numbers is clearly a hack).
Answering my own question - there's i2c_for_each_dev() that I've overlooked before. Still a hack, anyway.
--
Przemek