Add iic_is_compatible() for matching I2C devices
authorvisa <visa@openbsd.org>
Wed, 9 Feb 2022 07:58:24 +0000 (07:58 +0000)
committervisa <visa@openbsd.org>
Wed, 9 Feb 2022 07:58:24 +0000 (07:58 +0000)
commit7349a5e9843380e84de1d205db0a0e8096fd885c
tree331c626a648f59ef964d4e1f332c1fb83c6f64bf
parent08218f219f9b29dd7e50773a8b70fc70991cda67
Add iic_is_compatible() for matching I2C devices

When using device trees, the ia_name field of struct i2c_attach_args
points to the first string of the device node's "compatible" array.
However, in many cases it would be preferable to use the last, most
general "compatible" entry as a device matching criterion.

Enable more flexible device matching by permitting ia_name to point to
the raw "compatible" data which is a concatenation of NUL-terminated
strings. I2C bus code will supply the data and set ia_name and
ia_namelen. I2C device drivers will use iic_is_compatible() to check
matches. This method is also backwards compatible with the old, direct
use of ia_name.

Prompted by a related patch from kettenis@.

OK kettenis@
share/man/man9/iic.9
sys/dev/i2c/i2c.c
sys/dev/i2c/i2cvar.h