rust: i2c: add basic I2C device and driver abstractions
Implement the core abstractions needed for I2C drivers, including:
* `i2c::Driver` — the trait drivers must implement, including `probe`
* `i2c::I2cClient` — a safe wrapper around `struct i2c_client`
* `i2c::Adapter` — implements `driver::RegistrationOps` to hook into the
generic `driver::Registration` machinery
* `i2c::DeviceId` — a `RawDeviceIdIndex` implementation for I2C device IDs
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Igor Korotin <igor.korotin.linux@gmail.com>
Link: https://patch.msgid.link/20251116162144.171469-1-igor.korotin.linux@gmail.com
[ Remove unnecessary safety comment; fix rustdoc `Device` -> `I2cClient`.
- Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>