Browse Source

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 <ryanmcclelland@meta.com>
pull/88011/merge
Ryan McClelland 2 months ago committed by Daniel DeGrasse
parent
commit
d0d9894070
  1. 4
      drivers/sensor/bosch/bmm350/bmm350.c
  2. 25
      include/zephyr/drivers/sensor/bmm350.h

4
drivers/sensor/bosch/bmm350/bmm350.c

@ -349,7 +349,7 @@ static int bmm350_set_powermode(const struct device *dev, enum bmm350_power_mode @@ -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) @@ -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;

25
include/zephyr/drivers/sensor/bmm350.h

@ -0,0 +1,25 @@ @@ -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);
Loading…
Cancel
Save