linux/drivers/iio/pressure/bmp280-regmap.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#include <linux/device.h>
   3#include <linux/module.h>
   4#include <linux/regmap.h>
   5
   6#include "bmp280.h"
   7
   8static bool bmp180_is_writeable_reg(struct device *dev, unsigned int reg)
   9{
  10        switch (reg) {
  11        case BMP280_REG_CTRL_MEAS:
  12        case BMP280_REG_RESET:
  13                return true;
  14        default:
  15                return false;
  16        }
  17}
  18
  19static bool bmp180_is_volatile_reg(struct device *dev, unsigned int reg)
  20{
  21        switch (reg) {
  22        case BMP180_REG_OUT_XLSB:
  23        case BMP180_REG_OUT_LSB:
  24        case BMP180_REG_OUT_MSB:
  25        case BMP280_REG_CTRL_MEAS:
  26                return true;
  27        default:
  28                return false;
  29        }
  30}
  31
  32const struct regmap_config bmp180_regmap_config = {
  33        .reg_bits = 8,
  34        .val_bits = 8,
  35
  36        .max_register = BMP180_REG_OUT_XLSB,
  37        .cache_type = REGCACHE_RBTREE,
  38
  39        .writeable_reg = bmp180_is_writeable_reg,
  40        .volatile_reg = bmp180_is_volatile_reg,
  41};
  42EXPORT_SYMBOL(bmp180_regmap_config);
  43
  44static bool bmp280_is_writeable_reg(struct device *dev, unsigned int reg)
  45{
  46        switch (reg) {
  47        case BMP280_REG_CONFIG:
  48        case BMP280_REG_CTRL_HUMIDITY:
  49        case BMP280_REG_CTRL_MEAS:
  50        case BMP280_REG_RESET:
  51                return true;
  52        default:
  53                return false;
  54        }
  55}
  56
  57static bool bmp280_is_volatile_reg(struct device *dev, unsigned int reg)
  58{
  59        switch (reg) {
  60        case BMP280_REG_HUMIDITY_LSB:
  61        case BMP280_REG_HUMIDITY_MSB:
  62        case BMP280_REG_TEMP_XLSB:
  63        case BMP280_REG_TEMP_LSB:
  64        case BMP280_REG_TEMP_MSB:
  65        case BMP280_REG_PRESS_XLSB:
  66        case BMP280_REG_PRESS_LSB:
  67        case BMP280_REG_PRESS_MSB:
  68        case BMP280_REG_STATUS:
  69                return true;
  70        default:
  71                return false;
  72        }
  73}
  74
  75const struct regmap_config bmp280_regmap_config = {
  76        .reg_bits = 8,
  77        .val_bits = 8,
  78
  79        .max_register = BMP280_REG_HUMIDITY_LSB,
  80        .cache_type = REGCACHE_RBTREE,
  81
  82        .writeable_reg = bmp280_is_writeable_reg,
  83        .volatile_reg = bmp280_is_volatile_reg,
  84};
  85EXPORT_SYMBOL(bmp280_regmap_config);
  86