Files
threeeye bc1d038eac REVVL 6 Pro kernel bring-up: full working tree snapshot (2026-09-12)
Squashed backup commit (no shallow-clone history issues) of
xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream
commit 9eece662e) plus all fixes applied to get everpal_defconfig building
clean against a modern (GCC 15.2.0) toolchain -- see the previous commit
message on the lineage-23.2 branch (also in this repo history is not
available here since this is a squashed snapshot; full incremental history
lives in the local DL380 checkout and the upstream GitHub remote).

Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
2026-09-12 13:36:46 +00:00

306 lines
7.9 KiB
C

/*!
* @section LICENSE
* (C) Copyright 2011~2016 Bosch Sensortec GmbH All Rights Reserved
*
* This software program is licensed subject to the GNU General
* Public License (GPL).Version 2,June 1991,
* available at http://www.fsf.org/copyleft/gpl.html
*
*/
#ifndef BMA2x2_H
#define BMA2x2_H
#include <linux/ioctl.h>
#include <sensor_list.h>
#define BMA_DRIVER_VERSION "V1.8"
/*ChipIDs for BMA2x2 seriers*/
#define BMA222E_CHIPID 0xF8
#define BMA250E_CHIPID 0xF9
#define BMA255_CHIPID 0xFA
#define BMA280_CHIPID 0xFB
#define BMA2x2_ACC_AXIS_X 0
#define BMA2x2_ACC_AXIS_Y 1
#define BMA2x2_ACC_AXIS_Z 2
/*TYPE for BMA2x2 seriers*/
enum BMA_TYPE {
BMA222E_TYPE = 0x00,
BMA250E_TYPE = 0x01,
BMA255_TYPE = 0x02,
BMA280_TYPE = 0x03,
UNKNOWN_TYPE = -1,
};
/* 7-bit addr: 0x10 (SDO connected to GND); 0x11 (SDO connected to VDDIO) */
#define BMA2x2_I2C_ADDR 0x11
/* BMA255 Register Map (Please refer to BMA255 Specifications) */
#define BMA2x2_REG_DEVID 0x00
#define BMA2x2_REG_OFSX 0x16
#define BMA2x2_REG_OFSX_HIGH 0x1A
#define BMA2x2_REG_BW_RATE 0x10
#define BMA2x2_BW_MASK 0x1f
#define BMA2x2_BW_200HZ 0x0d
#define BMA2x2_BW_100HZ 0x0c
#define BMA2x2_BW_50HZ 0x0b
#define BMA2x2_BW_25HZ 0x0a
#define BMA2x2_REG_POWER_CTL 0x11
#define BMA2x2_REG_DATA_FORMAT 0x0f
#define BMA2x2_RANGE_MASK 0x0f
#define BMA2x2_RANGE_2G 0x03
#define BMA2x2_RANGE_4G 0x05
#define BMA2x2_RANGE_8G 0x08
#define BMA2x2_REG_DATAXLOW 0x02
#define BMA2x2_REG_DATA_RESOLUTION 0x14
#define BMA2x2_MEASURE_MODE 0x80
#define BMA2x2_SELF_TEST 0x32
#define BMA2x2_INT_REG_1 0x16
#define BMA2x2_INT_REG_2 0x17
#define BMA2x2_FIFO_MODE_REG 0x3E
#define BMA2x2_FIFO_DATA_OUTPUT_REG 0x3F
#define BMA2x2_STATUS_FIFO_REG 0x0E
#define BMA2x2_SUCCESS 0
#define BMA2x2_ERR_I2C 1
#define BMA2x2_ERR_CLIENT 2
#define BMA2x2_ERR_STATUS 3
#define BMA2x2_ERR_SETUP_FAILURE -4
#define BMA2x2_ERR_GETGSENSORDATA -5
#define BMA2x2_ERR_IDENTIFICATION -6
#define BMA2x2_BUFSIZE 256
/* power mode */
#define BMA2x2_MODE_CTRL_REG 0x11
#define BMA2x2_MODE_CTRL__POS 5
#define BMA2x2_MODE_CTRL__LEN 3
#define BMA2x2_MODE_CTRL__MSK 0xE0
#define BMA2x2_MODE_CTRL__REG BMA2x2_MODE_CTRL_REG
#define BMA2x2_LOW_POWER_CTRL_REG 0x12
#define BMA2x2_LOW_POWER_MODE__POS 6
#define BMA2x2_LOW_POWER_MODE__LEN 1
#define BMA2x2_LOW_POWER_MODE__MSK 0x40
#define BMA2x2_LOW_POWER_MODE__REG BMA2x2_LOW_POWER_CTRL_REG
/* range */
#define BMA2x2_RANGE_SEL_REG 0x0F
#define BMA2x2_RANGE_SEL__POS 0
#define BMA2x2_RANGE_SEL__LEN 4
#define BMA2x2_RANGE_SEL__MSK 0x0F
#define BMA2x2_RANGE_SEL__REG BMA2x2_RANGE_SEL_REG
/* bandwidth */
#define BMA2x2_BW_7_81HZ 0x08
#define BMA2x2_BW_15_63HZ 0x09
#define BMA2x2_BW_31_25HZ 0x0A
#define BMA2x2_BW_62_50HZ 0x0B
#define BMA2x2_BW_125HZ 0x0C
#define BMA2x2_BW_250HZ 0x0D
#define BMA2x2_BW_500HZ 0x0E
#define BMA2x2_BW_1000HZ 0x0F
#define BMA2x2_BW_SEL_REG 0x10
#define BMA2x2_BANDWIDTH__POS 0
#define BMA2x2_BANDWIDTH__LEN 5
#define BMA2x2_BANDWIDTH__MSK 0x1F
#define BMA2x2_BANDWIDTH__REG BMA2x2_BW_SEL_REG
#define BMA2x2_PMU_SELF_TEST_REG 0x32
#define BMA2x2_X_LSB_REG 0x02
#define BMA2x2_Y_LSB_REG 0x04
#define BMA2x2_Z_LSB_REG 0x06
#define BMA2x2_SELF_TEST_X 0x01
#define BMA2x2_SELF_TEST_Y 0x02
#define BMA2x2_SELF_TEST_Z 0x03
#define BMA2x2_SELF_TEST_NEGATIVE 0x00
#define BMA2x2_SELF_TEST_POSITIVE 0x04
#define BMA222E_SELF_X_THRESHOLD 12
#define BMA222E_SELF_Y_THRESHOLD 12
#define BMA222E_SELF_Z_THRESHOLD 6
#define BMA250E_SELF_X_THRESHOLD 51
#define BMA250E_SELF_Y_THRESHOLD 51
#define BMA250E_SELF_Z_THRESHOLD 25
#define BMA255_SELF_X_THRESHOLD 409
#define BMA255_SELF_Y_THRESHOLD 409
#define BMA255_SELF_Z_THRESHOLD 204
#define BMA280_SELF_X_THRESHOLD 1638
#define BMA280_SELF_Y_THRESHOLD 1638
#define BMA280_SELF_Z_THRESHOLD 819
#define BMA2x2_DATA_FORMAT_RANGE_2G 0x03
#define BMA2x2_DATA_FORMAT_RANGE_4G 0x05
#define BMA2x2_DATA_FORMAT_RANGE_8G 0x08
#define BMA2x2_DATA_FORMAT_RANGE_16G 0x0C
#define MAX_REGISTER_MAP 0x3F
#define BMA2x2_SOFTRESET 0xB6
#define BMA2x2_SOFTRESET_REG 0x14
#define CONVERT_M 1
#define CONVERT_M_DIV 4
#define CONVERT_O 1
#define CONVERT_O_DIV 71
#define CONVERT_G 1
#define CONVERT_G_DIV 938
#define CONVERT_VRV 1
#define CONVERT_VRV_DIV (0x40000000)
#define CONVERT_VLA_DIV 16384
#define CONVERT_VG_DIV 16384
#define MAX_FIFO_F_LEVEL 32
#define MAX_FIFO_F_BYTES 6
#define READFIFOCOUNT
/*----------------------------------------------------------------------------*/
#define BMA2x2_AXIS_X 0
#define BMA2x2_AXIS_Y 1
#define BMA2x2_AXIS_Z 2
#define BMA2x2_AXES_NUM 3
#define BMA2x2_DATA_LEN 6
#define BMA2x2_DEV_NAME "BMA255"
#define BMA2x2_MODE_NORMAL 0
#define BMA2x2_MODE_LOWPOWER 1
#define BMA2x2_MODE_SUSPEND 2
/*for bma222e chip*/
#define BMA222E_ACC_X_LSB__POS 0x00
#define BMA222E_ACC_X_LSB__LEN 0x00
#define BMA222E_ACC_X_LSB__MSK 0x00
#define BMA222E_ACC_X_MSB__POS 0
#define BMA222E_ACC_X_MSB__LEN 8
#define BMA222E_ACC_X_MSB__MSK 0xFF
#define BMA222E_ACC_Y_LSB__POS 0x00
#define BMA222E_ACC_Y_LSB__LEN 0x00
#define BMA222E_ACC_Y_LSB__MSK 0x00
#define BMA222E_ACC_Y_MSB__POS 0
#define BMA222E_ACC_Y_MSB__LEN 8
#define BMA222E_ACC_Y_MSB__MSK 0xFF
#define BMA222E_ACC_Z_LSB__POS 0x00
#define BMA222E_ACC_Z_LSB__LEN 0x00
#define BMA222E_ACC_Z_LSB__MSK 0x00
#define BMA222E_ACC_Z_MSB__POS 0
#define BMA222E_ACC_Z_MSB__LEN 8
#define BMA222E_ACC_Z_MSB__MSK 0xFF
/*for bma250e chip*/
#define BMA250E_ACC_X_LSB__POS 6
#define BMA250E_ACC_X_LSB__LEN 2
#define BMA250E_ACC_X_LSB__MSK 0xC0
#define BMA250E_ACC_X_MSB__POS 0
#define BMA250E_ACC_X_MSB__LEN 8
#define BMA250E_ACC_X_MSB__MSK 0xFF
#define BMA250E_ACC_Y_LSB__POS 6
#define BMA250E_ACC_Y_LSB__LEN 2
#define BMA250E_ACC_Y_LSB__MSK 0xC0
#define BMA250E_ACC_Y_MSB__POS 0
#define BMA250E_ACC_Y_MSB__LEN 8
#define BMA250E_ACC_Y_MSB__MSK 0xFF
#define BMA250E_ACC_Z_LSB__POS 6
#define BMA250E_ACC_Z_LSB__LEN 2
#define BMA250E_ACC_Z_LSB__MSK 0xC0
#define BMA250E_ACC_Z_MSB__POS 0
#define BMA250E_ACC_Z_MSB__LEN 8
#define BMA250E_ACC_Z_MSB__MSK 0xFF
/*for bma255 chip*/
#define BMA255_ACC_X_LSB__POS 4
#define BMA255_ACC_X_LSB__LEN 4
#define BMA255_ACC_X_LSB__MSK 0xF0
#define BMA255_ACC_X_MSB__POS 0
#define BMA255_ACC_X_MSB__LEN 8
#define BMA255_ACC_X_MSB__MSK 0xFF
#define BMA255_ACC_Y_LSB__POS 4
#define BMA255_ACC_Y_LSB__LEN 4
#define BMA255_ACC_Y_LSB__MSK 0xF0
#define BMA255_ACC_Y_MSB__POS 0
#define BMA255_ACC_Y_MSB__LEN 8
#define BMA255_ACC_Y_MSB__MSK 0xFF
#define BMA255_ACC_Z_LSB__POS 4
#define BMA255_ACC_Z_LSB__LEN 4
#define BMA255_ACC_Z_LSB__MSK 0xF0
#define BMA255_ACC_Z_MSB__POS 0
#define BMA255_ACC_Z_MSB__LEN 8
#define BMA255_ACC_Z_MSB__MSK 0xFF
/*for bma280*/
#define BMA280_ACC_X_LSB__POS 2
#define BMA280_ACC_X_LSB__LEN 6
#define BMA280_ACC_X_LSB__MSK 0xFC
#define BMA280_ACC_X_MSB__POS 0
#define BMA280_ACC_X_MSB__LEN 8
#define BMA280_ACC_X_MSB__MSK 0xFF
#define BMA280_ACC_Y_LSB__POS 2
#define BMA280_ACC_Y_LSB__LEN 6
#define BMA280_ACC_Y_LSB__MSK 0xFC
#define BMA280_ACC_Y_MSB__POS 0
#define BMA280_ACC_Y_MSB__LEN 8
#define BMA280_ACC_Y_MSB__MSK 0xFF
#define BMA280_ACC_Z_LSB__POS 2
#define BMA280_ACC_Z_LSB__LEN 6
#define BMA280_ACC_Z_LSB__MSK 0xFC
#define BMA280_ACC_Z_MSB__POS 0
#define BMA280_ACC_Z_MSB__LEN 8
#define BMA280_ACC_Z_MSB__MSK 0xFF
#define BMA2x2_EN_LOW_POWER__POS 6
#define BMA2x2_EN_LOW_POWER__LEN 1
#define BMA2x2_EN_LOW_POWER__MSK 0x40
#define BMA2x2_EN_LOW_POWER__REG BMA2x2_REG_POWER_CTL
#define BMA2x2_EN_SUSPEND__POS 7
#define BMA2x2_EN_SUSPEND__LEN 1
#define BMA2x2_EN_SUSPEND__MSK 0x80
#define BMA2x2_EN_SUSPEND__REG BMA2x2_REG_POWER_CTL
/* fifo mode*/
#define BMA2x2_FIFO_MODE__POS 6
#define BMA2x2_FIFO_MODE__LEN 2
#define BMA2x2_FIFO_MODE__MSK 0xC0
#define BMA2x2_FIFO_MODE__REG BMA2x2_FIFO_MODE_REG
#define BMA2x2_FIFO_FRAME_COUNTER_S__POS 0
#define BMA2x2_FIFO_FRAME_COUNTER_S__LEN 7
#define BMA2x2_FIFO_FRAME_COUNTER_S__MSK 0x7F
#define BMA2x2_FIFO_FRAME_COUNTER_S__REG BMA2x2_STATUS_FIFO_REG
extern char *idme_get_sensorcal(void);
#endif