578 lines
24 KiB
C
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__ */
|