Michael Hope <michaelh@...> writes:
On Fri, 24 Jul 2020 at 22:06, Bolivar, Marti <Marti.Bolivar@...>
Hi Michael,That sounds good.
"Michael Hope via lists.zephyrproject.org"
Hi there. I'm porting Zephyr to the Arduino Nano 33 IOT. The board hasa
LSM6DS3 IMU which is very similar to the LSM6DSL that's already supportedbest
by Zephyr and I'd like to re-use it.
I've refactored  the lsm6dsl driver to be multi-instance. What's the
best way of then using the same driver for two different compats? The
I've come up with is  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),
The second part of the problem is iterating over both the lsm6dsl and
lsm6ds3 types. Doing two DT_INST_FOREACH_STATUS_OKAY(fn), one for each
compat, can give name collisions. Any ideas?
Could you please describe the collisions in more detail? I checked the
patch in your footnote  below but I'm not seeing the issue, sorry.
Taking a guess, though, if there's an issue with naming a global
variable for a device config or data field within the "fn" expansion,
perhaps pasting DT_DRV_COMPAT onto the relevant variable names using the
## preprocessor operator is a fix?
E.g. setting the WHO_AM_I in your config struct based on this, and using
Note that the chips also have a different WHO_AM_I value, so need very
slightly different configuration.
that in your init functions to disambiguate.