unplugged-kernel/drivers/misc/mediatek/sensors-1.0/barometer/BMP280-new/bmp280.h

118 lines
3.7 KiB
C
Raw Normal View History

// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2020 MediaTek Inc.
*/
#ifndef BOSCH_BARO_H
#define BOSCH_BARO_H
#include <linux/ioctl.h>
/* apply low pass filter on output */
/*#define CONFIG_BMP_LOWPASS*/
/*#define CONFIG_ID_TEMPERATURE*/
/*#define CONFIG_I2C_BASIC_FUNCTION*/
#define BMP_DRIVER_VERSION "V1.3"
#define BMP_DEV_NAME "bmp280"
#define C_MAX_FIR_LENGTH (32)
#define MAX_SENSOR_NAME (32)
#define BMP_DATA_NUM 1
#define BMP_PRESSURE 0
#define BMP_BUFSIZE 128
/* common definition */
#define BMP_GET_BITSLICE(regvar, bitname)\
((regvar & bitname##__MSK) >> bitname##__POS)
#define BMP_SET_BITSLICE(regvar, bitname, val)\
((regvar & ~bitname##__MSK) | ((val<<bitname##__POS)&bitname##__MSK))
#define BMP_CHIP_ID_REG 0xD0
/*********************************[BMP280]*************************************/
/* data type */
#define BMP280_U16_t u16
#define BMP280_S16_t s16
#define BMP280_U32_t u32
#define BMP280_S32_t s32
#define BMP280_U64_t u64
#define BMP280_S64_t s64
/* chip id */
#define BMP280_CHIP_ID1 0x56
#define BMP280_CHIP_ID2 0x57
#define BMP280_CHIP_ID3 0x58
/* i2c address */
/* 7-bit addr: 0x76 (SDO connected to GND); 0x77 (SDO connected to VDDIO) */
#define BMP280_I2C_ADDRESS 0x77
/* calibration data */
#define BMP280_CALIBRATION_DATA_START 0x88 /* BMP280_DIG_T1_LSB_REG */
#define BMP280_CALIBRATION_DATA_LENGTH 24
#define SHIFT_RIGHT_4_POSITION 4
#define SHIFT_LEFT_2_POSITION 2
#define SHIFT_LEFT_4_POSITION 4
#define SHIFT_LEFT_5_POSITION 5
#define SHIFT_LEFT_8_POSITION 8
#define SHIFT_LEFT_12_POSITION 12
#define SHIFT_LEFT_16_POSITION 16
/* power mode */
#define BMP280_SLEEP_MODE 0x00
#define BMP280_FORCED_MODE 0x01
#define BMP280_NORMAL_MODE 0x03
#define BMP280_CTRLMEAS_REG 0xF4 /* Ctrl Measure Register */
#define BMP280_CTRLMEAS_REG_MODE__POS 0
#define BMP280_CTRLMEAS_REG_MODE__MSK 0x03
#define BMP280_CTRLMEAS_REG_MODE__LEN 2
#define BMP280_CTRLMEAS_REG_MODE__REG BMP280_CTRLMEAS_REG
/* filter */
#define BMP280_FILTERCOEFF_OFF 0x00
#define BMP280_FILTERCOEFF_2 0x01
#define BMP280_FILTERCOEFF_4 0x02
#define BMP280_FILTERCOEFF_8 0x03
#define BMP280_FILTERCOEFF_16 0x04
#define BMP280_CONFIG_REG 0xF5 /* Configuration Register */
#define BMP280_CONFIG_REG_FILTER__POS 2
#define BMP280_CONFIG_REG_FILTER__MSK 0x1C
#define BMP280_CONFIG_REG_FILTER__LEN 3
#define BMP280_CONFIG_REG_FILTER__REG BMP280_CONFIG_REG
/* oversampling */
#define BMP280_OVERSAMPLING_SKIPPED 0x00
#define BMP280_OVERSAMPLING_1X 0x01
#define BMP280_OVERSAMPLING_2X 0x02
#define BMP280_OVERSAMPLING_4X 0x03
#define BMP280_OVERSAMPLING_8X 0x04
#define BMP280_OVERSAMPLING_16X 0x05
#define BMP280_CTRLMEAS_REG_OSRST__POS 5
#define BMP280_CTRLMEAS_REG_OSRST__MSK 0xE0
#define BMP280_CTRLMEAS_REG_OSRST__LEN 3
#define BMP280_CTRLMEAS_REG_OSRST__REG BMP280_CTRLMEAS_REG
#define BMP280_CTRLMEAS_REG_OSRSP__POS 2
#define BMP280_CTRLMEAS_REG_OSRSP__MSK 0x1C
#define BMP280_CTRLMEAS_REG_OSRSP__LEN 3
#define BMP280_CTRLMEAS_REG_OSRSP__REG BMP280_CTRLMEAS_REG
/* data */
#define BMP280_PRESSURE_MSB_REG 0xF7 /* Pressure MSB Register */
#define BMP280_TEMPERATURE_MSB_REG 0xFA /* Temperature MSB Reg */
/* i2c disable switch */
#define BMP280_I2C_DISABLE_SWITCH 0x87
#endif/* BOSCH_BARO_H */