From d0d9894070c4bdc4130cedf2681daa8feabd2a73 Mon Sep 17 00:00:00 2001 From: Ryan McClelland Date: Thu, 22 May 2025 22:18:16 -0700 Subject: [PATCH] drivers: sensor: bmm350: expose magnetic reset This exposes a driver specific function to perform a magentic reset by the application. Signed-off-by: Ryan McClelland --- drivers/sensor/bosch/bmm350/bmm350.c | 4 ++-- include/zephyr/drivers/sensor/bmm350.h | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 include/zephyr/drivers/sensor/bmm350.h diff --git a/drivers/sensor/bosch/bmm350/bmm350.c b/drivers/sensor/bosch/bmm350/bmm350.c index 02210d3790c..9a04240109e 100644 --- a/drivers/sensor/bosch/bmm350/bmm350.c +++ b/drivers/sensor/bosch/bmm350/bmm350.c @@ -349,7 +349,7 @@ static int bmm350_set_powermode(const struct device *dev, enum bmm350_power_mode * used to perform the magnetic reset of the sensor * which is necessary after a field shock ( 400mT field applied to sensor ) */ -static int bmm350_magnetic_reset_and_wait(const struct device *dev) +int bmm350_magnetic_reset(const struct device *dev) { /* Variable to store the function result */ int ret = 0; @@ -1005,7 +1005,7 @@ static int bmm350_init_chip(const struct device *dev) goto err_poweroff; } - ret = bmm350_magnetic_reset_and_wait(dev); + ret = bmm350_magnetic_reset(dev); if (ret != 0) { LOG_ERR("failed to perform magnetic reset"); goto err_poweroff; diff --git a/include/zephyr/drivers/sensor/bmm350.h b/include/zephyr/drivers/sensor/bmm350.h new file mode 100644 index 00000000000..c7f3033b3b9 --- /dev/null +++ b/include/zephyr/drivers/sensor/bmm350.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Performs a magnetic reset. + * + * The BMM350 has measures to recover from excessively strong + * magnetic fields. A magnetic reset is trigged after reset by + * the device itself, but if excessive field exposure has occurred + * in suspend mode, the sensor can not detect that event. If a + * large offset or sensitvity drift indicates that such an event + * has occurred, then this function can be called by the + * application. + * + * "Enhanced" Magnetic Reset supported by later BMM350 Revisions + * is not yet implemented. + * + * @param dev Pointer to the sensor device + * + * @return 0 if successful, negative errno code if failure. + */ +int bmm350_magnetic_reset(const struct device *dev);