68 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * ADXL345 3-Axis Digital Accelerometer4 *5 * Copyright (c) 2017 Eva Rachel Retuya <eraretuya@gmail.com>6 */7 8#ifndef _ADXL345_H_9#define _ADXL345_H_10 11#define ADXL345_REG_DEVID 0x0012#define ADXL345_REG_OFSX 0x1E13#define ADXL345_REG_OFSY 0x1F14#define ADXL345_REG_OFSZ 0x2015#define ADXL345_REG_OFS_AXIS(index) (ADXL345_REG_OFSX + (index))16#define ADXL345_REG_BW_RATE 0x2C17#define ADXL345_REG_POWER_CTL 0x2D18#define ADXL345_REG_DATA_FORMAT 0x3119#define ADXL345_REG_DATAX0 0x3220#define ADXL345_REG_DATAY0 0x3421#define ADXL345_REG_DATAZ0 0x3622#define ADXL345_REG_DATA_AXIS(index) \23 (ADXL345_REG_DATAX0 + (index) * sizeof(__le16))24 25#define ADXL345_BW_RATE GENMASK(3, 0)26#define ADXL345_BASE_RATE_NANO_HZ 97656250LL27 28#define ADXL345_POWER_CTL_MEASURE BIT(3)29#define ADXL345_POWER_CTL_STANDBY 0x0030 31#define ADXL345_DATA_FORMAT_RANGE GENMASK(1, 0) /* Set the g range */32#define ADXL345_DATA_FORMAT_JUSTIFY BIT(2) /* Left-justified (MSB) mode */33#define ADXL345_DATA_FORMAT_FULL_RES BIT(3) /* Up to 13-bits resolution */34#define ADXL345_DATA_FORMAT_SPI_3WIRE BIT(6) /* 3-wire SPI mode */35#define ADXL345_DATA_FORMAT_SELF_TEST BIT(7) /* Enable a self test */36 37#define ADXL345_DATA_FORMAT_2G 038#define ADXL345_DATA_FORMAT_4G 139#define ADXL345_DATA_FORMAT_8G 240#define ADXL345_DATA_FORMAT_16G 341 42#define ADXL345_DEVID 0xE543 44/*45 * In full-resolution mode, scale factor is maintained at ~4 mg/LSB46 * in all g ranges.47 *48 * At +/- 16g with 13-bit resolution, scale is computed as:49 * (16 + 16) * 9.81 / (2^13 - 1) = 0.038350 */51#define ADXL345_USCALE 3830052 53/*54 * The Datasheet lists a resolution of Resolution is ~49 mg per LSB. That's55 * ~480mm/s**2 per LSB.56 */57#define ADXL375_USCALE 48000058 59struct adxl345_chip_info {60 const char *name;61 int uscale;62};63 64int adxl345_core_probe(struct device *dev, struct regmap *regmap,65 int (*setup)(struct device*, struct regmap*));66 67#endif /* _ADXL345_H_ */68