Re: Sharing a driver between similar devices


Bolivar, Marti
 

Hi Michael,

"Michael Hope via lists.zephyrproject.org"
<michaelh=juju.nz@...> writes:

Hi there. I'm porting Zephyr to the Arduino Nano 33 IOT. The board has a
LSM6DS3 IMU which is very similar to the LSM6DSL that's already supported
by Zephyr and I'd like to re-use it.

I've refactored [1] the lsm6dsl driver to be multi-instance. What's the
best way of then using the same driver for two different compats? The best
I've come up with is [2] but that has name collision issues.
Have you tried to set some state in the config structure based on the
value of DT_NODE_HAS_COMPAT(DT_DRV_INST(your_instance_number), some_compat)?


Note that the chips also have a different WHO_AM_I value, so need very
slightly different configuration.
E.g. setting the WHO_AM_I in your config struct based on this, and using
that in your init functions to disambiguate.


[1]: https://github.com/zephyrproject-rtos/zephyr/pull/27064
[2]:
https://github.com/zephyrproject-rtos/zephyr/commit/cd65c39b3eeaa0d21ba90c30b13e4ca2952a6723

-- Michael
Thanks,
Martí


Join devel@lists.zephyrproject.org to automatically receive all group messages.