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 8 static 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 19 static 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 32 const 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 }; 42 EXPORT_SYMBOL_NS(bmp180_regmap_config, IIO_BMP280); 43 44 static 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 57 static 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 75 const 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 }; 85 EXPORT_SYMBOL_NS(bmp280_regmap_config, IIO_BMP280); 86