57 lines
2.0 KiB
C
57 lines
2.0 KiB
C
/*
|
|
* Copyright (c) 2022 Esco Medical ApS
|
|
* Copyright (c) 2020 TDK Invensense
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_DRIVERS_SENSOR_ICM42670_SPI_H_
|
|
#define ZEPHYR_DRIVERS_SENSOR_ICM42670_SPI_H_
|
|
|
|
#include <zephyr/device.h>
|
|
#include <zephyr/drivers/spi.h>
|
|
|
|
/**
|
|
* @brief perform a single SPI write to a ICM42670 register
|
|
*
|
|
* this functions wraps all logic necessary to write to any of the ICM42670 registers, regardless
|
|
* of which memory bank the register belongs to.
|
|
*
|
|
* @param bus SPI bus pointer
|
|
* @param reg address of ICM42670 register to write to
|
|
* @param data data byte to write to register
|
|
* @return int 0 on success, negative error code otherwise
|
|
*/
|
|
int icm42670_spi_single_write(const struct spi_dt_spec *bus, uint16_t reg, uint8_t data);
|
|
|
|
/**
|
|
* @brief update a single ICM42670 register value
|
|
*
|
|
* this functions wraps all logic necessary to update any of the ICM42670 registers, regardless
|
|
* of which memory bank the register belongs to.
|
|
*
|
|
* @param bus SPI bus pointer
|
|
* @param reg address of ICM42670 register to update
|
|
* @param mask bitmask defining which bits of the register to update
|
|
* @param data new value to update register with, respecting the bitmask
|
|
* @return int 0 on success, negative error code otherwise
|
|
*/
|
|
int icm42670_spi_update_register(const struct spi_dt_spec *bus, uint16_t reg, uint8_t mask,
|
|
uint8_t data);
|
|
|
|
/**
|
|
* @brief read from one or more ICM42670 registers
|
|
*
|
|
* this functions wraps all logic necessary to read from any of the ICM42670 registers, regardless
|
|
* of which memory bank the register belongs to.
|
|
*
|
|
* @param bus SPI bus pointer
|
|
* @param reg start address of ICM42670 register(s) to read from
|
|
* @param data pointer to byte array to read register values to
|
|
* @param len number of bytes to read from the device
|
|
* @return int 0 on success, negative error code otherwise
|
|
*/
|
|
int icm42670_spi_read(const struct spi_dt_spec *bus, uint16_t reg, uint8_t *data, size_t len);
|
|
|
|
#endif /* ZEPHYR_DRIVERS_SENSOR_ICM42670_SPI_H_ */
|