diff --git a/drivers/sensor/bmc150_magn/bmc150_magn.c b/drivers/sensor/bmc150_magn/bmc150_magn.c
index 2cc130a..19ab6b6 100644
--- a/drivers/sensor/bmc150_magn/bmc150_magn.c
+++ b/drivers/sensor/bmc150_magn/bmc150_magn.c
@@ -52,36 +52,32 @@
 				      enum bmc150_magn_power_modes mode,
 				      int state)
 {
-	struct bmc150_magn_data *data = dev->data;
 	const struct bmc150_magn_config *config = dev->config;
 
 	switch (mode) {
 	case BMC150_MAGN_POWER_MODE_SUSPEND:
-		if (i2c_reg_update_byte(data->i2c_master,
-					config->i2c_slave_addr,
-					BMC150_MAGN_REG_POWER,
-					BMC150_MAGN_MASK_POWER_CTL,
-					!state) < 0) {
+		if (i2c_reg_update_byte_dt(&config->i2c,
+					   BMC150_MAGN_REG_POWER,
+					   BMC150_MAGN_MASK_POWER_CTL,
+					   !state) < 0) {
 			return -EIO;
 		}
 		k_busy_wait(USEC_PER_MSEC * 5U);
 
 		return 0;
 	case BMC150_MAGN_POWER_MODE_SLEEP:
-		return i2c_reg_update_byte(data->i2c_master,
-					   config->i2c_slave_addr,
-					   BMC150_MAGN_REG_OPMODE_ODR,
-					   BMC150_MAGN_MASK_OPMODE,
-					   BMC150_MAGN_MODE_SLEEP <<
-					   BMC150_MAGN_SHIFT_OPMODE);
+		return i2c_reg_update_byte_dt(&config->i2c,
+					      BMC150_MAGN_REG_OPMODE_ODR,
+					      BMC150_MAGN_MASK_OPMODE,
+					      BMC150_MAGN_MODE_SLEEP <<
+					      BMC150_MAGN_SHIFT_OPMODE);
 		break;
 	case BMC150_MAGN_POWER_MODE_NORMAL:
-		return i2c_reg_update_byte(data->i2c_master,
-					   config->i2c_slave_addr,
-					   BMC150_MAGN_REG_OPMODE_ODR,
-					   BMC150_MAGN_MASK_OPMODE,
-					   BMC150_MAGN_MODE_NORMAL <<
-					   BMC150_MAGN_SHIFT_OPMODE);
+		return i2c_reg_update_byte_dt(&config->i2c,
+					      BMC150_MAGN_REG_OPMODE_ODR,
+					      BMC150_MAGN_MASK_OPMODE,
+					      BMC150_MAGN_MODE_NORMAL <<
+					      BMC150_MAGN_SHIFT_OPMODE);
 		break;
 	}
 
@@ -90,19 +86,16 @@
 
 static int bmc150_magn_set_odr(const struct device *dev, uint8_t val)
 {
-	struct bmc150_magn_data *data = dev->data;
 	const struct bmc150_magn_config *config = dev->config;
 	uint8_t i;
 
 	for (i = 0U; i < ARRAY_SIZE(bmc150_magn_samp_freq_table); ++i) {
 		if (val <= bmc150_magn_samp_freq_table[i].freq) {
-			return i2c_reg_update_byte(data->i2c_master,
-						config->i2c_slave_addr,
-						BMC150_MAGN_REG_OPMODE_ODR,
-						BMC150_MAGN_MASK_ODR,
-						bmc150_magn_samp_freq_table[i].
-						reg_val <<
-						BMC150_MAGN_SHIFT_ODR);
+			return i2c_reg_update_byte_dt(&config->i2c,
+						      BMC150_MAGN_REG_OPMODE_ODR,
+						      BMC150_MAGN_MASK_ODR,
+						      bmc150_magn_samp_freq_table[i].reg_val
+						      << BMC150_MAGN_SHIFT_ODR);
 		}
 	}
 
@@ -116,8 +109,8 @@
 	const struct bmc150_magn_config *config = dev->config;
 	uint8_t reg_val;
 
-	if (i2c_reg_read_byte(data->i2c_master, config->i2c_slave_addr,
-			      BMC150_MAGN_REG_REP_XY, &reg_val) < 0) {
+	if (i2c_reg_read_byte_dt(&config->i2c,
+				 BMC150_MAGN_REG_REP_XY, &reg_val) < 0) {
 		return -EIO;
 	}
 
@@ -132,8 +125,8 @@
 	const struct bmc150_magn_config *config = dev->config;
 	uint8_t reg_val;
 
-	if (i2c_reg_read_byte(data->i2c_master, config->i2c_slave_addr,
-			      BMC150_MAGN_REG_REP_Z, &reg_val) < 0) {
+	if (i2c_reg_read_byte_dt(&config->i2c,
+				 BMC150_MAGN_REG_REP_Z, &reg_val) < 0) {
 		return -EIO;
 	}
 
@@ -178,8 +171,8 @@
 	const struct bmc150_magn_config *config = dev->config;
 	uint8_t i, odr_val, reg_val;
 
-	if (i2c_reg_read_byte(data->i2c_master, config->i2c_slave_addr,
-			      BMC150_MAGN_REG_OPMODE_ODR, &reg_val) < 0) {
+	if (i2c_reg_read_byte_dt(&config->i2c,
+				 BMC150_MAGN_REG_OPMODE_ODR, &reg_val) < 0) {
 		return -EIO;
 	}
 
@@ -202,10 +195,10 @@
 	struct bmc150_magn_data *data = dev->data;
 	const struct bmc150_magn_config *config = dev->config;
 
-	if (i2c_reg_update_byte(data->i2c_master, config->i2c_slave_addr,
-				BMC150_MAGN_REG_REP_XY,
-				BMC150_MAGN_REG_REP_DATAMASK,
-				BMC150_MAGN_REPXY_TO_REGVAL(val)) < 0) {
+	if (i2c_reg_update_byte_dt(&config->i2c,
+				   BMC150_MAGN_REG_REP_XY,
+				   BMC150_MAGN_REG_REP_DATAMASK,
+				   BMC150_MAGN_REPXY_TO_REGVAL(val)) < 0) {
 		return -EIO;
 	}
 
@@ -221,10 +214,10 @@
 	struct bmc150_magn_data *data = dev->data;
 	const struct bmc150_magn_config *config = dev->config;
 
-	if (i2c_reg_update_byte(data->i2c_master, config->i2c_slave_addr,
-				BMC150_MAGN_REG_REP_Z,
-				BMC150_MAGN_REG_REP_DATAMASK,
-				BMC150_MAGN_REPZ_TO_REGVAL(val)) < 0) {
+	if (i2c_reg_update_byte_dt(&config->i2c,
+				   BMC150_MAGN_REG_REP_Z,
+				   BMC150_MAGN_REG_REP_DATAMASK,
+				   BMC150_MAGN_REPZ_TO_REGVAL(val)) < 0) {
 		return -EIO;
 	}
 
@@ -300,9 +293,9 @@
 	__ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL ||
 			chan == SENSOR_CHAN_MAGN_XYZ);
 
-	if (i2c_burst_read(data->i2c_master, config->i2c_slave_addr,
-			   BMC150_MAGN_REG_X_L, (uint8_t *)values,
-			   sizeof(values)) < 0) {
+	if (i2c_burst_read_dt(&config->i2c,
+			      BMC150_MAGN_REG_X_L, (uint8_t *)values,
+			      sizeof(values)) < 0) {
 		LOG_ERR("failed to read sample");
 		return -EIO;
 	}
@@ -498,8 +491,8 @@
 		return -EIO;
 	}
 
-	if (i2c_reg_read_byte(data->i2c_master, config->i2c_slave_addr,
-			      BMC150_MAGN_REG_CHIP_ID, &chip_id) < 0) {
+	if (i2c_reg_read_byte_dt(&config->i2c,
+				 BMC150_MAGN_REG_CHIP_ID, &chip_id) < 0) {
 		LOG_ERR("failed reading chip id");
 		goto err_poweroff;
 	}
@@ -516,18 +509,18 @@
 		goto err_poweroff;
 	}
 
-	if (i2c_reg_write_byte(data->i2c_master, config->i2c_slave_addr,
-			       BMC150_MAGN_REG_REP_XY,
-			       BMC150_MAGN_REPXY_TO_REGVAL(preset.rep_xy))
-			       < 0) {
+	if (i2c_reg_write_byte_dt(&config->i2c,
+				  BMC150_MAGN_REG_REP_XY,
+				  BMC150_MAGN_REPXY_TO_REGVAL(preset.rep_xy))
+				  < 0) {
 		LOG_ERR("failed to set REP XY to %d",
 			    preset.rep_xy);
 		goto err_poweroff;
 	}
 
-	if (i2c_reg_write_byte(data->i2c_master, config->i2c_slave_addr,
-			       BMC150_MAGN_REG_REP_Z,
-			       BMC150_MAGN_REPZ_TO_REGVAL(preset.rep_z)) < 0) {
+	if (i2c_reg_write_byte_dt(&config->i2c,
+				  BMC150_MAGN_REG_REP_Z,
+				  BMC150_MAGN_REPZ_TO_REGVAL(preset.rep_z)) < 0) {
 		LOG_ERR("failed to set REP Z to %d",
 			    preset.rep_z);
 		goto err_poweroff;
@@ -539,9 +532,9 @@
 		goto err_poweroff;
 	}
 
-	if (i2c_burst_read(data->i2c_master, config->i2c_slave_addr,
-			   BMC150_MAGN_REG_TRIM_START, (uint8_t *)&data->tregs,
-			   sizeof(data->tregs)) < 0) {
+	if (i2c_burst_read_dt(&config->i2c,
+			      BMC150_MAGN_REG_TRIM_START, (uint8_t *)&data->tregs,
+			      sizeof(data->tregs)) < 0) {
 		LOG_ERR("failed to read trim regs");
 		goto err_poweroff;
 	}
@@ -572,13 +565,10 @@
 {
 	const struct bmc150_magn_config * const config =
 					  dev->config;
-	struct bmc150_magn_data *data = dev->data;
 
-	data->i2c_master = device_get_binding(config->i2c_master_dev_name);
-	if (!data->i2c_master) {
-		LOG_ERR("i2c master not found: %s",
-			   config->i2c_master_dev_name);
-		return -EINVAL;
+	if (!device_is_ready(config->i2c.bus)) {
+		LOG_ERR("I2C bus device not ready");
+		return -ENODEV;
 	}
 
 	if (bmc150_magn_init_chip(dev) < 0) {
@@ -596,13 +586,12 @@
 }
 
 static const struct bmc150_magn_config bmc150_magn_config = {
+	.i2c = I2C_DT_SPEC_INST_GET(0),
 #if defined(CONFIG_BMC150_MAGN_TRIGGER_DRDY)
 	.gpio_drdy_dev_name = DT_INST_GPIO_LABEL(0, drdy_gpios),
 	.gpio_drdy_int_pin = DT_INST_GPIO_PIN(0, drdy_gpios),
 	.gpio_drdy_int_flags = DT_INST_GPIO_FLAGS(0, drdy_gpios),
 #endif
-	.i2c_master_dev_name = DT_INST_BUS_LABEL(0),
-	.i2c_slave_addr = BMC150_MAGN_I2C_ADDR,
 };
 
 static struct bmc150_magn_data bmc150_magn_data;
diff --git a/drivers/sensor/bmc150_magn/bmc150_magn.h b/drivers/sensor/bmc150_magn/bmc150_magn.h
index 3982f27..5c4e0a0 100644
--- a/drivers/sensor/bmc150_magn/bmc150_magn.h
+++ b/drivers/sensor/bmc150_magn/bmc150_magn.h
@@ -73,8 +73,6 @@
 #define BMC150_MAGN_MASK_DRDY_LATCHING          BIT(1)
 #define BMC150_MAGN_MASK_DRDY_INT3_POLARITY     BIT(0)
 
-#define BMC150_MAGN_I2C_ADDR			DT_INST_REG_ADDR(0)
-
 #if defined(CONFIG_BMC150_MAGN_SAMPLING_REP_XY) || \
 	defined(CONFIG_BMC150_MAGN_SAMPLING_REP_Z)
 	#define BMC150_MAGN_SET_ATTR_REP
@@ -86,13 +84,12 @@
 #endif
 
 struct bmc150_magn_config {
+	struct i2c_dt_spec i2c;
 #if defined(CONFIG_BMC150_MAGN_TRIGGER_DRDY)
 	char *gpio_drdy_dev_name;
 	gpio_pin_t gpio_drdy_int_pin;
 	gpio_dt_flags_t gpio_drdy_int_flags;
 #endif
-	uint16_t i2c_slave_addr;
-	char *i2c_master_dev_name;
 };
 
 struct bmc150_magn_trim_regs {
@@ -113,7 +110,6 @@
 } __packed;
 
 struct bmc150_magn_data {
-	const struct device *i2c_master;
 	struct k_sem sem;
 
 #if defined(CONFIG_BMC150_MAGN_TRIGGER)
diff --git a/drivers/sensor/bmc150_magn/bmc150_magn_trigger.c b/drivers/sensor/bmc150_magn/bmc150_magn_trigger.c
index 3a3dbbb..7920b27 100644
--- a/drivers/sensor/bmc150_magn/bmc150_magn_trigger.c
+++ b/drivers/sensor/bmc150_magn/bmc150_magn_trigger.c
@@ -51,12 +51,11 @@
 		data->handler_drdy = handler;
 		data->trigger_drdy = *trig;
 
-		if (i2c_reg_update_byte(data->i2c_master,
-					config->i2c_slave_addr,
-					BMC150_MAGN_REG_INT_DRDY,
-					BMC150_MAGN_MASK_DRDY_EN,
-					state << BMC150_MAGN_SHIFT_DRDY_EN)
-					< 0) {
+		if (i2c_reg_update_byte_dt(&config->i2c,
+					   BMC150_MAGN_REG_INT_DRDY,
+					   BMC150_MAGN_MASK_DRDY_EN,
+					   state << BMC150_MAGN_SHIFT_DRDY_EN)
+					   < 0) {
 			LOG_DBG("failed to set DRDY interrupt");
 			return -EIO;
 		}
@@ -90,10 +89,9 @@
 	while (1) {
 		k_sem_take(&data->sem, K_FOREVER);
 
-		while (i2c_reg_read_byte(data->i2c_master,
-					 config->i2c_slave_addr,
-					 BMC150_MAGN_REG_INT_STATUS,
-					 &reg_val) < 0) {
+		while (i2c_reg_read_byte_dt(&config->i2c,
+					    BMC150_MAGN_REG_INT_STATUS,
+					    &reg_val) < 0) {
 			LOG_DBG("failed to clear data ready interrupt");
 		}
 
@@ -114,10 +112,10 @@
 		state = 1;
 	}
 
-	return i2c_reg_update_byte(data->i2c_master, config->i2c_slave_addr,
-				   BMC150_MAGN_REG_INT_DRDY,
-				   BMC150_MAGN_MASK_DRDY_DR_POLARITY,
-				   state << BMC150_MAGN_SHIFT_DRDY_DR_POLARITY);
+	return i2c_reg_update_byte_dt(&config->i2c,
+				      BMC150_MAGN_REG_INT_DRDY,
+				      BMC150_MAGN_MASK_DRDY_DR_POLARITY,
+				      state << BMC150_MAGN_SHIFT_DRDY_DR_POLARITY);
 }
 
 int bmc150_magn_init_interrupt(const struct device *dev)
@@ -133,10 +131,10 @@
 		return -EIO;
 	}
 
-	if (i2c_reg_update_byte(data->i2c_master, config->i2c_slave_addr,
-				BMC150_MAGN_REG_INT_DRDY,
-				BMC150_MAGN_MASK_DRDY_EN,
-				0 << BMC150_MAGN_SHIFT_DRDY_EN) < 0) {
+	if (i2c_reg_update_byte_dt(&config->i2c,
+				   BMC150_MAGN_REG_INT_DRDY,
+				   BMC150_MAGN_MASK_DRDY_EN,
+				   0 << BMC150_MAGN_SHIFT_DRDY_EN) < 0) {
 		LOG_DBG("failed to set data ready interrupt enabled bit");
 		return -EIO;
 	}
