brintos

brintos / linux-shallow public Read only

0
0
Text · 5.2 KiB · d27d68e Raw
240 lines · c
1// SPDX-License-Identifier: GPL-2.02#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_NS(bmp180_regmap_config, IIO_BMP280);43 44static bool bme280_is_writeable_reg(struct device *dev, unsigned int reg)45{46	switch (reg) {47	case BMP280_REG_CONFIG:48	case BME280_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_writeable_reg(struct device *dev, unsigned int reg)58{59	switch (reg) {60	case BMP280_REG_CONFIG:61	case BMP280_REG_CTRL_MEAS:62	case BMP280_REG_RESET:63		return true;64	default:65		return false;66	}67}68 69static bool bmp280_is_volatile_reg(struct device *dev, unsigned int reg)70{71	switch (reg) {72	case BMP280_REG_TEMP_XLSB:73	case BMP280_REG_TEMP_LSB:74	case BMP280_REG_TEMP_MSB:75	case BMP280_REG_PRESS_XLSB:76	case BMP280_REG_PRESS_LSB:77	case BMP280_REG_PRESS_MSB:78	case BMP280_REG_STATUS:79		return true;80	default:81		return false;82	}83}84 85static bool bme280_is_volatile_reg(struct device *dev, unsigned int reg)86{87	switch (reg) {88	case BME280_REG_HUMIDITY_LSB:89	case BME280_REG_HUMIDITY_MSB:90	case BMP280_REG_TEMP_XLSB:91	case BMP280_REG_TEMP_LSB:92	case BMP280_REG_TEMP_MSB:93	case BMP280_REG_PRESS_XLSB:94	case BMP280_REG_PRESS_LSB:95	case BMP280_REG_PRESS_MSB:96	case BMP280_REG_STATUS:97		return true;98	default:99		return false;100	}101}102static bool bmp380_is_writeable_reg(struct device *dev, unsigned int reg)103{104	switch (reg) {105	case BMP380_REG_CMD:106	case BMP380_REG_CONFIG:107	case BMP380_REG_FIFO_CONFIG_1:108	case BMP380_REG_FIFO_CONFIG_2:109	case BMP380_REG_FIFO_WATERMARK_LSB:110	case BMP380_REG_FIFO_WATERMARK_MSB:111	case BMP380_REG_POWER_CONTROL:112	case BMP380_REG_INT_CONTROL:113	case BMP380_REG_IF_CONFIG:114	case BMP380_REG_ODR:115	case BMP380_REG_OSR:116		return true;117	default:118		return false;119	}120}121 122static bool bmp380_is_volatile_reg(struct device *dev, unsigned int reg)123{124	switch (reg) {125	case BMP380_REG_TEMP_XLSB:126	case BMP380_REG_TEMP_LSB:127	case BMP380_REG_TEMP_MSB:128	case BMP380_REG_PRESS_XLSB:129	case BMP380_REG_PRESS_LSB:130	case BMP380_REG_PRESS_MSB:131	case BMP380_REG_SENSOR_TIME_XLSB:132	case BMP380_REG_SENSOR_TIME_LSB:133	case BMP380_REG_SENSOR_TIME_MSB:134	case BMP380_REG_INT_STATUS:135	case BMP380_REG_FIFO_DATA:136	case BMP380_REG_STATUS:137	case BMP380_REG_ERROR:138	case BMP380_REG_EVENT:139		return true;140	default:141		return false;142	}143}144 145static bool bmp580_is_writeable_reg(struct device *dev, unsigned int reg)146{147	switch (reg) {148	case BMP580_REG_NVM_DATA_MSB:149	case BMP580_REG_NVM_DATA_LSB:150	case BMP580_REG_NVM_ADDR:151	case BMP580_REG_ODR_CONFIG:152	case BMP580_REG_OSR_CONFIG:153	case BMP580_REG_INT_SOURCE:154	case BMP580_REG_INT_CONFIG:155	case BMP580_REG_OOR_THR_MSB:156	case BMP580_REG_OOR_THR_LSB:157	case BMP580_REG_OOR_CONFIG:158	case BMP580_REG_OOR_RANGE:159	case BMP580_REG_IF_CONFIG:160	case BMP580_REG_FIFO_CONFIG:161	case BMP580_REG_FIFO_SEL:162	case BMP580_REG_DSP_CONFIG:163	case BMP580_REG_DSP_IIR:164	case BMP580_REG_CMD:165		return true;166	default:167		return false;168	}169}170 171static bool bmp580_is_volatile_reg(struct device *dev, unsigned int reg)172{173	switch (reg) {174	case BMP580_REG_NVM_DATA_MSB:175	case BMP580_REG_NVM_DATA_LSB:176	case BMP580_REG_FIFO_COUNT:177	case BMP580_REG_INT_STATUS:178	case BMP580_REG_PRESS_XLSB:179	case BMP580_REG_PRESS_LSB:180	case BMP580_REG_PRESS_MSB:181	case BMP580_REG_FIFO_DATA:182	case BMP580_REG_TEMP_XLSB:183	case BMP580_REG_TEMP_LSB:184	case BMP580_REG_TEMP_MSB:185	case BMP580_REG_EFF_OSR:186	case BMP580_REG_STATUS:187		return true;188	default:189		return false;190	}191}192 193const struct regmap_config bmp280_regmap_config = {194	.reg_bits = 8,195	.val_bits = 8,196 197	.max_register = BMP280_REG_TEMP_XLSB,198	.cache_type = REGCACHE_RBTREE,199 200	.writeable_reg = bmp280_is_writeable_reg,201	.volatile_reg = bmp280_is_volatile_reg,202};203EXPORT_SYMBOL_NS(bmp280_regmap_config, IIO_BMP280);204 205const struct regmap_config bme280_regmap_config = {206	.reg_bits = 8,207	.val_bits = 8,208 209	.max_register = BME280_REG_HUMIDITY_LSB,210	.cache_type = REGCACHE_RBTREE,211 212	.writeable_reg = bme280_is_writeable_reg,213	.volatile_reg = bme280_is_volatile_reg,214};215EXPORT_SYMBOL_NS(bme280_regmap_config, IIO_BMP280);216 217const struct regmap_config bmp380_regmap_config = {218	.reg_bits = 8,219	.val_bits = 8,220 221	.max_register = BMP380_REG_CMD,222	.cache_type = REGCACHE_RBTREE,223 224	.writeable_reg = bmp380_is_writeable_reg,225	.volatile_reg = bmp380_is_volatile_reg,226};227EXPORT_SYMBOL_NS(bmp380_regmap_config, IIO_BMP280);228 229const struct regmap_config bmp580_regmap_config = {230	.reg_bits = 8,231	.val_bits = 8,232 233	.max_register = BMP580_REG_CMD,234	.cache_type = REGCACHE_RBTREE,235 236	.writeable_reg = bmp580_is_writeable_reg,237	.volatile_reg = bmp580_is_volatile_reg,238};239EXPORT_SYMBOL_NS(bmp580_regmap_config, IIO_BMP280);240