diff --git a/components/drivers/i2c/Kconfig b/components/drivers/i2c/Kconfig index bb4c90dba82..d24d24b9c41 100644 --- a/components/drivers/i2c/Kconfig +++ b/components/drivers/i2c/Kconfig @@ -1,4 +1,4 @@ -config RT_USING_I2C +menuconfig RT_USING_I2C bool "Using I2C device drivers" default n @@ -241,3 +241,7 @@ if RT_USING_I2C endif endif endif + +if RT_USING_DM && RT_USING_I2C + osource "$(SOC_DM_I2C_DIR)/Kconfig" +endif diff --git a/components/drivers/i2c/dev_i2c_bus.c b/components/drivers/i2c/dev_i2c_bus.c index 8a524715043..9e202dbd9a7 100644 --- a/components/drivers/i2c/dev_i2c_bus.c +++ b/components/drivers/i2c/dev_i2c_bus.c @@ -61,6 +61,8 @@ void i2c_bus_scan_clients(struct rt_i2c_bus_device *bus) client->bus = bus; client->client_addr = client_addr; + rt_dm_dev_set_name(&client->parent, "%s", client->name); + rt_i2c_device_register(client); if (i2c_client_np != child_np) diff --git a/components/drivers/include/drivers/dev_i2c.h b/components/drivers/include/drivers/dev_i2c.h index 3f0e5bb41c2..a7d438abe16 100644 --- a/components/drivers/include/drivers/dev_i2c.h +++ b/components/drivers/include/drivers/dev_i2c.h @@ -286,6 +286,11 @@ rt_err_t rt_i2c_driver_register(struct rt_i2c_driver *driver); rt_err_t rt_i2c_device_register(struct rt_i2c_client *client); #define RT_I2C_DRIVER_EXPORT(driver) RT_DRIVER_EXPORT(driver, i2c, BUILIN) + +rt_inline const void *rt_i2c_client_id_data(struct rt_i2c_client *client) +{ + return client->id ? client->id->data : (client->ofw_id ? client->ofw_id->data : RT_NULL); +} #endif /* RT_USING_DM */ /**