File Index
Files and directories
Sign in
FILE

bmp280-regmap.c

File preview with syntax highlighting.

linux-6.19.14/drivers/iio/pressure/bmp280-regmap.c C
  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_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");
~/ Read-only file preview.