zephyr/drivers/sensor/sensor_lsm9ds0_mfd.h

578 lines
24 KiB
C

/* sensor_lsm9ds0_mfd.h - header file for LSM9DS0 accelerometer, magnetometer
* and temperature (MFD) sensor driver
*/
/*
* Copyright (c) 2016 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __SENSOR_LSM9DS0_MFD_H__
#define __SENSOR_LSM9DS0_MFD_H__
#include <stdint.h>
#include <misc/util.h>
#define LSM9DS0_MFD_REG_OUT_TEMP_L_XM 0x05
#define LSM9DS0_MFD_REG_OUT_TEMP_H_XM 0x06
#define LSM9DS0_MFD_REG_STATUS_REG_M 0x07
#define LSM9DS0_MFD_MASK_STATUS_REG_M_ZYXMOR BIT(7)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_ZYXMOR 7
#define LSM9DS0_MFD_MASK_STATUS_REG_M_ZMOR BIT(6)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_ZMOR 6
#define LSM9DS0_MFD_MASK_STATUS_REG_M_YMOR BIT(5)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_YMOR 5
#define LSM9DS0_MFD_MASK_STATUS_REG_M_XMOR BIT(4)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_XMOR 4
#define LSM9DS0_MFD_MASK_STATUS_REG_M_ZYXMDA BIT(3)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_ZYXMDA 3
#define LSM9DS0_MFD_MASK_STATUS_REG_M_ZMDA BIT(2)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_ZMDA 2
#define LSM9DS0_MFD_MASK_STATUS_REG_M_YMDA BIT(1)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_M_YMDA 1
#define LSM9DS0_MFD_MASK_STATUS_REG_M_XMDA BIT(0)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_XMDA 0
#define LSM9DS0_MFD_REG_OUT_X_L_M 0x08
#define LSM9DS0_MFD_REG_OUT_X_H_M 0x09
#define LSM9DS0_MFD_REG_OUT_Y_L_M 0x0A
#define LSM9DS0_MFD_REG_OUT_Y_H_M 0x0B
#define LSM9DS0_MFD_REG_OUT_Z_L_M 0x0C
#define LSM9DS0_MFD_REG_OUT_Z_H_M 0x0D
#define LSM9DS0_MFD_REG_WHO_AM_I_XM 0x0F
#define LSM9DS0_MFD_VAL_WHO_AM_I_XM 0x49
#define LSM9DS0_MFD_REG_INT_CTRL_REG_M 0x12
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_XMIEN BIT(7)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_XMIEN 7
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_YMIEN BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_YMIEN 6
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_ZMIEN BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_ZMIEN 5
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_PP_OD BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_PP_OD 4
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_IEA BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_IEA 3
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_IEL BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_IEL 2
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_4D BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_4D 1
#define LSM9DS0_MFD_MASK_INT_CTRL_REG_M_MIEN BIT(0)
#define LSM9DS0_MFD_SHIFT_INT_CTRL_REG_M_MIEN 0
#define LSM9DS0_MFD_REG_INT_SRC_REG_M 0x13
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_PTH_X BIT(7)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_PTH_X 7
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_PTH_Y BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_PTH_Y 6
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_PTH_Z BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_PTH_Z 5
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_NTH_X BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_NTH_X 4
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_NTH_Y BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_NTH_Y 3
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_M_NTH_Z BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_M_NTH_Z 2
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_MROI BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_MROI 1
#define LSM9DS0_MFD_MASK_INT_SRC_REG_M_MINT BIT(0)
#define LSM9DS0_MFD_SHIFT_INT_SRC_REG_M_MINT 0
#define LSM9DS0_MFD_REG_INT_THS_L_M 0x14
#define LSM9DS0_MFD_REG_INT_THS_H_M 0x15
#define LSM9DS0_MFD_REG_OFFSET_X_L_M 0x16
#define LSM9DS0_MFD_REG_OFFSET_X_H_M 0x17
#define LSM9DS0_MFD_REG_OFFSET_Y_L_M 0x18
#define LSM9DS0_MFD_REG_OFFSET_Y_H_M 0x19
#define LSM9DS0_MFD_REG_OFFSET_Z_L_M 0x1A
#define LSM9DS0_MFD_REG_OFFSET_Z_H_M 0x1B
#define LSM9DS0_MFD_REG_REFERENCE_X 0x1C
#define LSM9DS0_MFD_REG_REFERENCE_Y 0x1D
#define LSM9DS0_MFD_REG_REFERENCE_Z 0x1E
#define LSM9DS0_MFD_REG_CTRL_REG0_XM 0x1F
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_BOOT BIT(7)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_BOOT 7
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_FIFO_EN BIT(6)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_FIFO_EN 6
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_WTM_EN BIT(5)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_WTM_EN 5
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_HP_C BIT(2)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_HP_C 2
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_HPIS1 BIT(1)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_HPIS1 1
#define LSM9DS0_MFD_MASK_CTRL_REG0_XM_HPIS2 BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG0_XM_HPIS2 0
#define LSM9DS0_MFD_REG_CTRL_REG1_XM 0x20
#define LSM9DS0_MFD_MASK_CTRL_REG1_XM_AODR (BIT(7) | BIT(6) | BIT(5) | \
BIT(4))
#define LSM9DS0_MFD_SHIFT_CTRL_REG1_XM_AODR 4
#define LSM9DS0_MFD_MASK_CTRL_REG1_XM_BDU BIT(3)
#define LSM9DS0_MFD_SHIFT_CTRL_REG1_XM_BDU 3
#define LSM9DS0_MFD_MASK_CTRL_REG1_XM_AZEN BIT(2)
#define LSM9DS0_MFD_SHIFT_CTRL_REG1_XM_AZEN 2
#define LSM9DS0_MFD_MASK_CTRL_REG1_XM_AYEN BIT(1)
#define LSM9DS0_MFD_SHIFT_CTRL_REG1_XM_AYEN 1
#define LSM9DS0_MFD_MASK_CTRL_REG1_XM_AXEN BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG1_XM_AXEN 0
#define LSM9DS0_MFD_REG_CTRL_REG2_XM 0x21
#define LSM9DS0_MFD_MASK_CTRL_REG2_XM_ABW (BIT(7) | BIT(6))
#define LSM9DS0_MFD_SHIFT_CTRL_REG2_XM_ABW 6
#define LSM9DS0_MFD_MASK_CTRL_REG2_XM_AFS (BIT(5) | BIT(4) | BIT(3))
#define LSM9DS0_MFD_SHIFT_CTRL_REG2_XM_AFS 3
#define LSM9DS0_MFD_MASK_CTRL_REG2_XM_AST (BIT(2) | BIT(1))
#define LSM9DS0_MFD_SHIFT_CTRL_REG2_XM_AST 1
#define LSM9DS0_MFD_MASK_CTRL_REG2_XM_SIM BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG2_XM_SIM 0
#define LSM9DS0_MFD_REG_CTRL_REG3_XM 0x22
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_BOOT BIT(7)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_BOOT 7
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_TAP BIT(6)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_TAP 6
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_INT1 BIT(5)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_INT1 5
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_INT2 BIT(4)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_INT2 4
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_INTM BIT(3)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_INTM 3
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_DRDYA BIT(2)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_DRDYA 2
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_DRDYM BIT(1)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_DRDYM 1
#define LSM9DS0_MFD_MASK_CTRL_REG3_XM_P1_EMPTY BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG3_XM_P1_EMPTY 0
#define LSM9DS0_MFD_REG_CTRL_REG4_XM 0x23
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_TAP BIT(7)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_TAP 7
#define LMS9DS0_MFD_MASK_CTRL_REG4_XM_P2_INT1 BIT(6)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_INT1 6
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_INT2 BIT(5)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_INT2 5
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_INTM BIT(4)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_INTM 4
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_DRDYA BIT(3)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_DRDYA 3
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_DRDYM BIT(2)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_DRDYM 2
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_OVR BIT(1)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_OVR 1
#define LSM9DS0_MFD_MASK_CTRL_REG4_XM_P2_WTM BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG4_XM_P2_WTM 0
#define LSM9DS0_MFD_REG_CTRL_REG5_XM 0x24
#define LSM9DS0_MFD_MASK_CTRL_REG5_XM_TEMP_EN BIT(7)
#define LSM9DS0_MFD_SHIFT_CTRL_REG5_XM_TEMP_EN 7
#define LSM9DS0_MFD_MASK_CTRL_REG5_XM_M_RES (BIT(6) | BIT(5))
#define LSM9DS0_MFD_SHIFT_CTRL_REG5_XM_M_RES 5
#define LSM9DS0_MFD_MASK_CTRL_REG5_XM_M_ODR (BIT(4) | BIT(3) | BIT(2))
#define LSM9DS0_MFD_SHIFT_CTRL_REG5_XM_M_ODR 2
#define LSM9DS0_MFD_MASK_CTRL_REG5_XM_LIR2 BIT(1)
#define LSM9DS0_MFD_SHIFT_CTRL_REG5_XM_LIR2 1
#define LSM9DS0_MFD_MASK_CTRL_REG5_XM_LIR1 BIT(0)
#define LSM9DS0_MFD_SHIFT_CTRL_REG5_XM_LIR1 0
#define LSM9DS0_MFD_REG_CTRL_REG6_XM 0x25
#define LSM9DS0_MFD_MASK_CTRL_REG6_XM_MFS (BIT(6) | BIT(5))
#define LSM9DS0_MFD_SHIFT_CTRL_REG6_XM_MFS 5
#define LSM9DS0_MFD_REG_CTRL_REG7_XM 0x26
#define LSM9DS0_MFD_MASK_CTRL_REG7_XM_AHPM (BIT(7) | BIT(6))
#define LSM9DS0_MFD_SHIFT_CTRL_REG7_XM_AHPM 6
#define LSM9DS0_MFD_MASK_CTRL_REG7_XM_AFDS BIT(5)
#define LSM9DS0_MFD_SHIFT_CTRL_REG7_XM_AFDS 5
#define LSM9DS0_MFD_MASK_CTRL_REG7_XM_MLP BIT(2)
#define LSM9DS0_MFD_SHIFT_CTRL_REG7_XM_MLP 2
#define LSM9DS0_MFD_MASK_CTRL_REG7_XM_MD (BIT(1) | BIT(0))
#define LSM9DS0_MFD_SHIFT_CTRL_REG7_XM_MD 0
#define LSM9DS0_MFD_REG_STATUS_REG_A 0x27
#define LSM9DS0_MFD_MASK_STATUS_REG_A_ZYXAOR BIT(7)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_ZYXAOR 7
#define LSM9DS0_MFD_MASK_STATUS_REG_A_ZAOR BIT(6)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_ZAOR 6
#define LSM9DS0_MFD_MASK_STATUS_REG_A_YAOR BIT(5)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_YAOR 5
#define LSM9DS0_MFD_MASK_STATUS_REG_A_XAOR BIT(4)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_XAOR 4
#define LSM9DS0_MFD_MASK_STATUS_REG_A_ZYXADA BIT(3)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_ZYXADA 3
#define LSM9DS0_MFD_MASK_STATUS_REG_A_ZADA BIT(2)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_ZADA 2
#define LSM9DS0_MFD_MASK_STATUS_REG_A_YADA BIT(1)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_YADA 1
#define LSM9DS0_MFD_MASK_STATUS_REG_A_XADA BIT(0)
#define LSM9DS0_MFD_SHIFT_STATUS_REG_A_XADA 0
#define LSM9DS0_MFD_REG_OUT_X_L_A 0x28
#define LSM9DS0_MFD_REG_OUT_X_H_A 0x29
#define LSM9DS0_MFD_REG_OUT_Y_L_A 0x2A
#define LSM9DS0_MFD_REG_OUT_Y_H_A 0x2B
#define LSM9DS0_MFD_REG_OUT_Z_L_A 0x2C
#define LSM9DS0_MFD_REG_OUT_Z_H_A 0x2D
#define LSM9DS0_MFD_REG_FIFO_CTRL_REG 0x2E
#define LSM9DS0_MFD_MASK_FIFO_CTRL_REG_FM (BIT(7) | BIT(6) | BIT(5))
#define LSM9DS0_MFD_SHIFT_FIFO_CTRL_REG_FM 5
#define LSM9DS0_MFD_MASK_FIFO_CTRL_REG_FTH (BIT(4) | BIT(3) | BIT(2) | \
BIT(1) | BIT(0))
#define LSM9DS0_MFD_SHIFT_FIFO_CTRL_REG_FTH 0
#define LSM9DS0_MFD_REG_FIFO_SRC_REG 0x2F
#define LSM9DS0_MFD_MASK_FIFO_SRC_REG_WTM BIT(7)
#define LMS9DS0_MFD_SHIFT_FIFO_SRC_REG_WTM 7
#define LSM9DS0_MFD_MASK_FIFO_SRC_REG_OVRN BIT(6)
#define LSM9DS0_MFD_SHIFT_FIFO_SRC_REG_OVRN 6
#define LSM9DS0_MFD_MASK_FIFO_SRC_REG_EMPTY BIT(5)
#define LMS9DS0_MFD_SHIFT_FIFO_SRC_REG_EMPTY 5
#define LSM9DS0_MFD_MASK_FIFO_SRC_REG_FSS (BIT(4) | BIT(3) | BIT(2) | \
BIT(1) | BIT(0))
#define LSM9DS0_MFD_SHIFT_FIFO_SRC_REG_FSS 0
#define LSM9DS0_MFD_REG_INT_GEN_1_REG 0x30
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_AOI BIT(7)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_AOI 7
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_6D BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_6D 6
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_ZHIE BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_ZHIE 5
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_ZLIE BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_ZLIE 4
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_YHIE BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_YHIE 3
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_YLIE BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_YLIE 2
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_XHIE BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_XHIE 1
#define LSM9DS0_MFD_MASK_INT_GEN_1_REG_XLIE BIT(0)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_REG_XLIE 0
#define LSM9DS0_MFD_REG_INT_GEN_1_SRC 0x31
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_IA BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_IA 6
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_ZH BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_ZH 5
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_ZL BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_ZL 4
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_YH BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_YH 3
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_YL BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_YL 2
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_XH BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_XH 1
#define LSM9DS0_MFD_MASK_INT_GEN_1_SRC_XL BIT(0)
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_SRC_XL 0
#define LSM9DS0_MFD_REG_INT_GEN_1_THS 0x32
#define LSM9DS0_MFD_MASK_INT_GEN_1_THS_THS (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LSM9DS0_MFD_SHIFT_INT_GEN_1_THS_THS 0
#define LSM9DS0_MFD_REG_INT_GEN_1_DURATION 0x33
#define LSM9DS0_MFD_MASK_INT_GEN_1_DURATION_D (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LMS9DS0_MFD_SHIFT_INT_GEN_1_DURATION_D 0
#define LSM9DS0_MFD_REG_INT_GEN_2_REG 0x34
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_AOI BIT(7)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_AOI 7
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_6D BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_6D 6
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_ZHIE BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_ZHIE 5
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_ZLIE BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_ZLIE 4
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_YHIE BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_YHIE 3
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_YLIE BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_YLIE 2
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_XHIE BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_REG_XHIE 1
#define LSM9DS0_MFD_MASK_INT_GEN_2_REG_XLIE BIT(0)
#define LMS9Ds0_MFD_SHIFT_INT_GEN_2_REG_XLIE 0
#define LSM9DS0_MFD_REG_INT_GEN_2_SRC 0x35
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_IA BIT(6)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_IA 6
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_ZH BIT(5)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_ZH 5
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_ZL BIT(4)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_ZL 4
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_YH BIT(3)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_YH 3
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_YL BIT(2)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_YL 2
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_XH BIT(1)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_XH 1
#define LSM9DS0_MFD_MASK_INT_GEN_2_SRC_XL BIT(0)
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_SRC_XL 0
#define LSM9DS0_MFD_REG_INT_GEN_2_THS 0x36
#define LSM9DS0_MFD_MASK_INT_GEN_2_THS_THS (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_THS_THS 0
#define LSM9DS0_MFD_REG_INT_GEN_2_DURATION 0x37
#define LSM9DS0_MFD_MASK_INT_GEN_2_DURATION_D (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
ensor_ BIT(0))
#define LSM9DS0_MFD_SHIFT_INT_GEN_2_DURATION_D 0
#define LSM9DS0_MFD_REG_CLICK_CFG 0x38
#define LSM9DS0_MFD_MASK_CLICK_CFG_ZD BIT(5)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_ZD 5
#define LSM9DS0_MFD_MASK_CLICK_CFG_ZS BIT(4)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_ZS 4
#define LSM9DS0_MFD_MASK_CLICK_CFG_YD BIT(3)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_YD 3
#define LSM9DS0_MFD_MASK_CLICK_CFG_YS BIT(2)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_YS 2
#define LSM9DS0_MFD_MASK_CLICK_CFG_XD BIT(1)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_XD 1
#define LSM9DS0_MFD_MASK_CLICK_CFG_XS BIT(0)
#define LSM9DS0_MFD_SHIFT_CLICK_CFG_XS 0
#define LSM9DS0_MFD_REG_CLICK_SRC 0x39
#define LSM9DS0_MFD_MASK_CLICK_SRC_IA BIT(6)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_IA 6
#define LSM9DS0_MFD_MASK_CLICK_SRC_DC BIT(5)
#define LMS9DS0_MFD_SHIFT_CLICK_SRC_DC 5
#define LSM9DS0_MFD_MASK_CLICK_SRC_SC BIT(4)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_SC 4
#define LSM9DS0_MFD_MASK_CLICK_SRC_S BIT(3)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_S 3
#define LSM9DS0_MFD_MASK_CLICK_SRC_Z BIT(2)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_Z 2
#define LSM9DS0_MFD_MASK_CLICK_SRC_Y BIT(1)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_Y 1
#define LSM9DS0_MFD_MASK_CLICK_SRC_X BIT(0)
#define LSM9DS0_MFD_SHIFT_CLICK_SRC_X 0
#define LSM9DS0_MFD_REG_CLICK_THS 0x3A
#define LSM9DS0_MFD_MASK_CLICK_THS_THS (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LSM9DS0_MFD_SHIFT_CLICK_THS_THS 0
#define LSM9DS0_MFD_REG_TIME_LIMIT 0x3B
#define LSM9DS0_MFD_MASK_TIME_LIMIT_TLI (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LMS9DS0_MFD_SHIFT_TIME_LIMIT_TLI 0
#define LSM9DS0_MFD_REG_TIME_LATENCY 0x3C
#define LSM9DS0_MFD_MASK_TIME_LATENCY_TLA (BIT(7) | BIT(6) | BIT(5) | \
BIT(4) | BIT(3) | BIT(2) | \
BIT(1) | BIT(0))
#define LSM9DS0_MFD_SHIFT_TIME_LATENCY_TLA 0
#define LSM9DS0_MFD_REG_TIME_WINDOW 0x3D
#define LSM9DS0_MFD_MASK_TIME_WINDOW_TW (BIT(7) | BIT(6) | BIT(5) | \
BIT(4) | BIT(3) | BIT(2) | \
BIT(1) | BIT(0))
#define LSM9DS0_MFD_SHIFT_TIME_WINDOW_TW 0
#define LSM9DS0_MFD_REG_ACT_THS 0x3E
#define LSM9DS0_MFD_MASK_ACT_THS_ACTHS (BIT(6) | BIT(5) | BIT(4) | \
BIT(3) | BIT(2) | BIT(1) | \
BIT(0))
#define LSM9DS0_MFD_SHIFT_ACT_THS_ACTHS 0
#define LSM9DS0_MFD_REG_ACT_DUR 0x3F
#define LSM9DS0_MFD_MASK_ACT_DUR_ACTD (BIT(7) | BIT(6) | BIT(5) | \
BIT(4) | BIT(3) | BIT(2) | \
BIT(1) | BIT(0))
#define LMS9DS0_MFD_SHIFT_ACT_DUR_ACTD 0
#if defined(CONFIG_LSM9DS0_MFD_I2C_ADDR_1E)
#define LSM9DS0_MFD_I2C_ADDR 0x1E
#elif defined(CONFIG_LSM9DS0_MFD_I2C_ADDR_1F)
#define LSM9DS0_MFD_I2C_ADDR 0x1F
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_0)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 0
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_3_125)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 1
#define LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_6_25)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 2
#define LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_12_5)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 3
#define LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_25)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 4
#define LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_50)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 5
#define LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_100)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 6
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_200)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 7
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_400)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 8
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_800)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 9
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_1600)
#define LSM9DS0_MFD_ACCEL_DEFAULT_AODR 10
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_2)
#define LSM9DS0_MFD_ACCEL_DEFAULT_FS 0
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_4)
#define LSM9DS0_MFD_ACCEL_DEFAULT_FS 1
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_6)
#define LSM9DS0_MFD_ACCEL_DEFAULT_FS 2
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_8)
#define LSM9DS0_MFD_ACCEL_DEFAULT_FS 3
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_16)
#define LSM9DS0_MFD_ACCEL_DEFAULT_FS 4
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_X)
#define LSM9DS0_MFD_ACCEL_ENABLE_X 1
#else
#define LSM9DS0_MFD_ACCEL_ENABLE_X 0
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_Y)
#define LSM9DS0_MFD_ACCEL_ENABLE_Y 1
#else
#define LSM9DS0_MFD_ACCEL_ENABLE_Y 0
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_Z)
#define LSM9DS0_MFD_ACCEL_ENABLE_Z 1
#else
#define LSM9DS0_MFD_ACCEL_ENABLE_Z 0
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_RUNTIME) || \
defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_RUNTIME)
#define LSM9DS0_MFD_ATTR_SET_ACCEL
#endif
#if defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_3_125)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 0
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_6_25)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 1
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_12_5)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 2
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_25)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 3
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_50)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 4
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_100)
#if defined(LSM9DS0_MFD_ACCEL_FORCE_MAX_MODR_50)
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 4
#else
#define LSM9DS0_MFD_MAGN_DEFAULT_M_ODR 5
#endif
#endif
#if defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_2)
#define LSM9DS0_MFD_MAGN_DEFAULT_FS 0
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_4)
#define LSM9DS0_MFD_MAGN_DEFAULT_FS 1
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_8)
#define LSM9DS0_MFD_MAGN_DEFAULT_FS 2
#elif defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_12)
#define LSM9DS0_MFD_MAGN_DEFAULT_FS 3
#endif
#if defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_RUNTIME) || \
defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_RUNTIME)
#define LSM9DS0_MFD_ATTR_SET_MAGN
#endif
#if !defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_X) && \
!defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_Y) && \
!defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE_Z)
#define LSM9DS0_MFD_ACCEL_DISABLED
#elif defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_0) && \
!defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_RUNTIME)
#define LSM9DS0_MFD_ACCEL_DISABLED
#elif !defined(CONFIG_LSM9DS0_MFD_ACCEL_ENABLE)
#define LSM9DS0_MFD_ACCEL_DISABLED
#endif
#if !defined(CONFIG_LSM9DS0_MFD_MAGN_ENABLE)
#define LSM9DS0_MFD_MAGN_DISABLED
#endif
#if !defined(CONFIG_LSM9DS0_MFD_TEMP_ENABLE)
#define LSM9DS0_MFD_TEMP_DISABLED
#endif
#if defined(LSM9DS0_MFD_ATTR_SET_ACCEL) && defined(LSM9DS0_MFD_ACCEL_DISABLED)
#undef LSM9DS0_MFD_ATTR_SET_ACCEL
#endif
#if defined(LSM9DS0_MFD_ATTR_SET_MAGN) && defined(LSM9DS0_MFD_MAGN_DISABLED)
#undef LSM9DS0_MFD_ATTR_SET_MAGN
#endif
#if defined(LSM9DS0_MFD_ATTR_SET_ACCEL) || defined(LSM9DS0_MFD_ATTR_SET_MAGN)
#define LSM9DS0_MFD_ATTR_SET
#endif
struct lsm9ds0_mfd_config {
char *i2c_master_dev_name;
uint16_t i2c_slave_addr;
};
struct lsm9ds0_mfd_data {
struct device *i2c_master;
#if !defined(LSM9DS0_MFD_ACCEL_DISABLED)
int sample_accel_x, sample_accel_y, sample_accel_z;
#endif
#if !defined(LSM9DS0_MFD_MAGN_DISABLED)
int sample_magn_x, sample_magn_y, sample_magn_z;
#endif
#if !defined(LSM9DS0_MFD_TEMP_DISABLED)
int sample_temp;
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_RUNTIME)
#if !defined(LSM9DS0_MFD_ACCEL_DISABLED)
uint8_t accel_fs, sample_accel_fs;
#endif
#endif
#if defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_RUNTIME)
#if !defined(LSM9DS0_MFD_MAGN_DISABLED)
uint8_t magn_fs, sample_magn_fs;
#endif
#endif
};
#define SYS_LOG_DOMAIN "LSM9DS0_MFD"
#define SYS_LOG_LEVEL CONFIG_LSM9DS0_MFD_SYS_LOG_LEVEL
#include <misc/sys_log.h>
#endif /* __SENSOR_LSM9DS0_MFD_H__ */