100 lines
2.8 KiB
C
100 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Register constants and other forward declarations needed by the bma400
|
|
* sources.
|
|
*
|
|
* Copyright 2019 Dan Robertson <dan@dlrobertson.com>
|
|
*/
|
|
|
|
#ifndef _BMA400_H_
|
|
#define _BMA400_H_
|
|
|
|
#include <linux/bits.h>
|
|
#include <linux/regmap.h>
|
|
|
|
/*
|
|
* Read-Only Registers
|
|
*/
|
|
|
|
/* Status and ID registers */
|
|
#define BMA400_CHIP_ID_REG 0x00
|
|
#define BMA400_ERR_REG 0x02
|
|
#define BMA400_STATUS_REG 0x03
|
|
|
|
/* Acceleration registers */
|
|
#define BMA400_X_AXIS_LSB_REG 0x04
|
|
#define BMA400_X_AXIS_MSB_REG 0x05
|
|
#define BMA400_Y_AXIS_LSB_REG 0x06
|
|
#define BMA400_Y_AXIS_MSB_REG 0x07
|
|
#define BMA400_Z_AXIS_LSB_REG 0x08
|
|
#define BMA400_Z_AXIS_MSB_REG 0x09
|
|
|
|
/* Sensor time registers */
|
|
#define BMA400_SENSOR_TIME0 0x0a
|
|
#define BMA400_SENSOR_TIME1 0x0b
|
|
#define BMA400_SENSOR_TIME2 0x0c
|
|
|
|
/* Event and interrupt registers */
|
|
#define BMA400_EVENT_REG 0x0d
|
|
#define BMA400_INT_STAT0_REG 0x0e
|
|
#define BMA400_INT_STAT1_REG 0x0f
|
|
#define BMA400_INT_STAT2_REG 0x10
|
|
|
|
/* Temperature register */
|
|
#define BMA400_TEMP_DATA_REG 0x11
|
|
|
|
/* FIFO length and data registers */
|
|
#define BMA400_FIFO_LENGTH0_REG 0x12
|
|
#define BMA400_FIFO_LENGTH1_REG 0x13
|
|
#define BMA400_FIFO_DATA_REG 0x14
|
|
|
|
/* Step count registers */
|
|
#define BMA400_STEP_CNT0_REG 0x15
|
|
#define BMA400_STEP_CNT1_REG 0x16
|
|
#define BMA400_STEP_CNT3_REG 0x17
|
|
#define BMA400_STEP_STAT_REG 0x18
|
|
|
|
/*
|
|
* Read-write configuration registers
|
|
*/
|
|
#define BMA400_ACC_CONFIG0_REG 0x19
|
|
#define BMA400_ACC_CONFIG1_REG 0x1a
|
|
#define BMA400_ACC_CONFIG2_REG 0x1b
|
|
#define BMA400_CMD_REG 0x7e
|
|
|
|
/* Chip ID of BMA 400 devices found in the chip ID register. */
|
|
#define BMA400_ID_REG_VAL 0x90
|
|
|
|
#define BMA400_LP_OSR_SHIFT 5
|
|
#define BMA400_NP_OSR_SHIFT 4
|
|
#define BMA400_SCALE_SHIFT 6
|
|
|
|
#define BMA400_TWO_BITS_MASK GENMASK(1, 0)
|
|
#define BMA400_LP_OSR_MASK GENMASK(6, 5)
|
|
#define BMA400_NP_OSR_MASK GENMASK(5, 4)
|
|
#define BMA400_ACC_ODR_MASK GENMASK(3, 0)
|
|
#define BMA400_ACC_SCALE_MASK GENMASK(7, 6)
|
|
|
|
#define BMA400_ACC_ODR_MIN_RAW 0x05
|
|
#define BMA400_ACC_ODR_LP_RAW 0x06
|
|
#define BMA400_ACC_ODR_MAX_RAW 0x0b
|
|
|
|
#define BMA400_ACC_ODR_MAX_HZ 800
|
|
#define BMA400_ACC_ODR_MIN_WHOLE_HZ 25
|
|
#define BMA400_ACC_ODR_MIN_HZ 12
|
|
|
|
#define BMA400_SCALE_MIN 38357
|
|
#define BMA400_SCALE_MAX 306864
|
|
|
|
#define BMA400_NUM_REGULATORS 2
|
|
#define BMA400_VDD_REGULATOR 0
|
|
#define BMA400_VDDIO_REGULATOR 1
|
|
|
|
extern const struct regmap_config bma400_regmap_config;
|
|
|
|
int bma400_probe(struct device *dev, struct regmap *regmap, const char *name);
|
|
|
|
void bma400_remove(struct device *dev);
|
|
|
|
#endif
|