diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2016-11-09 10:09:59 -0500 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2016-11-12 10:45:37 -0500 |
commit | 57d035545165a354a52f5d16d46efbb318a2fff4 (patch) | |
tree | 3ac4e67c5fcb7fa128d74cf0f84211540b10da2c /drivers/iio | |
parent | d8594fa22a3f7c294639d9aa2959d63e66d9437c (diff) |
iio: magn: st_magn: inline per-sensor data
We have #defines for all the individual sensor registers and
value/mask pairs #defined at the top of the file and used at
exactly one spot.
This is usually good if the #defines give a meaning to the
opaque magic numbers.
However in this case, the semantic meaning is inherent in the
name of the C99-addressable fields, and that means duplication
of information, and only makes the code hard to maintain since
you every time have to add a new #define AND update the site
where it is to be used.
Get rid of the #defines and just open code the values into the
appropriate struct elements. Make sure to explicitly address
the .hz and .value fields in the st_sensor_odr_avl struct
so that the meaning of all values is clear.
This patch is purely syntactic should have no semantic effect.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio')
-rw-r--r-- | drivers/iio/magnetometer/st_magn_core.c | 376 |
1 files changed, 125 insertions, 251 deletions
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c index 3e1f06b2224c..8e1b0861fbe4 100644 --- a/drivers/iio/magnetometer/st_magn_core.c +++ b/drivers/iio/magnetometer/st_magn_core.c | |||
@@ -46,139 +46,12 @@ | |||
46 | #define ST_MAGN_FS_AVL_15000MG 15000 | 46 | #define ST_MAGN_FS_AVL_15000MG 15000 |
47 | #define ST_MAGN_FS_AVL_16000MG 16000 | 47 | #define ST_MAGN_FS_AVL_16000MG 16000 |
48 | 48 | ||
49 | /* CUSTOM VALUES FOR SENSOR 0 */ | 49 | /* Special L addresses for Sensor 2 */ |
50 | #define ST_MAGN_0_ODR_ADDR 0x00 | ||
51 | #define ST_MAGN_0_ODR_MASK 0x1c | ||
52 | #define ST_MAGN_0_ODR_AVL_1HZ_VAL 0x00 | ||
53 | #define ST_MAGN_0_ODR_AVL_2HZ_VAL 0x01 | ||
54 | #define ST_MAGN_0_ODR_AVL_3HZ_VAL 0x02 | ||
55 | #define ST_MAGN_0_ODR_AVL_8HZ_VAL 0x03 | ||
56 | #define ST_MAGN_0_ODR_AVL_15HZ_VAL 0x04 | ||
57 | #define ST_MAGN_0_ODR_AVL_30HZ_VAL 0x05 | ||
58 | #define ST_MAGN_0_ODR_AVL_75HZ_VAL 0x06 | ||
59 | #define ST_MAGN_0_ODR_AVL_220HZ_VAL 0x07 | ||
60 | #define ST_MAGN_0_PW_ADDR 0x02 | ||
61 | #define ST_MAGN_0_PW_MASK 0x03 | ||
62 | #define ST_MAGN_0_PW_ON 0x00 | ||
63 | #define ST_MAGN_0_PW_OFF 0x03 | ||
64 | #define ST_MAGN_0_FS_ADDR 0x01 | ||
65 | #define ST_MAGN_0_FS_MASK 0xe0 | ||
66 | #define ST_MAGN_0_FS_AVL_1300_VAL 0x01 | ||
67 | #define ST_MAGN_0_FS_AVL_1900_VAL 0x02 | ||
68 | #define ST_MAGN_0_FS_AVL_2500_VAL 0x03 | ||
69 | #define ST_MAGN_0_FS_AVL_4000_VAL 0x04 | ||
70 | #define ST_MAGN_0_FS_AVL_4700_VAL 0x05 | ||
71 | #define ST_MAGN_0_FS_AVL_5600_VAL 0x06 | ||
72 | #define ST_MAGN_0_FS_AVL_8100_VAL 0x07 | ||
73 | #define ST_MAGN_0_FS_AVL_1300_GAIN_XY 1100 | ||
74 | #define ST_MAGN_0_FS_AVL_1900_GAIN_XY 855 | ||
75 | #define ST_MAGN_0_FS_AVL_2500_GAIN_XY 670 | ||
76 | #define ST_MAGN_0_FS_AVL_4000_GAIN_XY 450 | ||
77 | #define ST_MAGN_0_FS_AVL_4700_GAIN_XY 400 | ||
78 | #define ST_MAGN_0_FS_AVL_5600_GAIN_XY 330 | ||
79 | #define ST_MAGN_0_FS_AVL_8100_GAIN_XY 230 | ||
80 | #define ST_MAGN_0_FS_AVL_1300_GAIN_Z 980 | ||
81 | #define ST_MAGN_0_FS_AVL_1900_GAIN_Z 760 | ||
82 | #define ST_MAGN_0_FS_AVL_2500_GAIN_Z 600 | ||
83 | #define ST_MAGN_0_FS_AVL_4000_GAIN_Z 400 | ||
84 | #define ST_MAGN_0_FS_AVL_4700_GAIN_Z 355 | ||
85 | #define ST_MAGN_0_FS_AVL_5600_GAIN_Z 295 | ||
86 | #define ST_MAGN_0_FS_AVL_8100_GAIN_Z 205 | ||
87 | #define ST_MAGN_0_MULTIREAD_BIT false | ||
88 | |||
89 | /* CUSTOM VALUES FOR SENSOR 1 */ | ||
90 | #define ST_MAGN_1_WAI_EXP 0x3c | ||
91 | #define ST_MAGN_1_ODR_ADDR 0x00 | ||
92 | #define ST_MAGN_1_ODR_MASK 0x1c | ||
93 | #define ST_MAGN_1_ODR_AVL_1HZ_VAL 0x00 | ||
94 | #define ST_MAGN_1_ODR_AVL_2HZ_VAL 0x01 | ||
95 | #define ST_MAGN_1_ODR_AVL_3HZ_VAL 0x02 | ||
96 | #define ST_MAGN_1_ODR_AVL_8HZ_VAL 0x03 | ||
97 | #define ST_MAGN_1_ODR_AVL_15HZ_VAL 0x04 | ||
98 | #define ST_MAGN_1_ODR_AVL_30HZ_VAL 0x05 | ||
99 | #define ST_MAGN_1_ODR_AVL_75HZ_VAL 0x06 | ||
100 | #define ST_MAGN_1_ODR_AVL_220HZ_VAL 0x07 | ||
101 | #define ST_MAGN_1_PW_ADDR 0x02 | ||
102 | #define ST_MAGN_1_PW_MASK 0x03 | ||
103 | #define ST_MAGN_1_PW_ON 0x00 | ||
104 | #define ST_MAGN_1_PW_OFF 0x03 | ||
105 | #define ST_MAGN_1_FS_ADDR 0x01 | ||
106 | #define ST_MAGN_1_FS_MASK 0xe0 | ||
107 | #define ST_MAGN_1_FS_AVL_1300_VAL 0x01 | ||
108 | #define ST_MAGN_1_FS_AVL_1900_VAL 0x02 | ||
109 | #define ST_MAGN_1_FS_AVL_2500_VAL 0x03 | ||
110 | #define ST_MAGN_1_FS_AVL_4000_VAL 0x04 | ||
111 | #define ST_MAGN_1_FS_AVL_4700_VAL 0x05 | ||
112 | #define ST_MAGN_1_FS_AVL_5600_VAL 0x06 | ||
113 | #define ST_MAGN_1_FS_AVL_8100_VAL 0x07 | ||
114 | #define ST_MAGN_1_FS_AVL_1300_GAIN_XY 909 | ||
115 | #define ST_MAGN_1_FS_AVL_1900_GAIN_XY 1169 | ||
116 | #define ST_MAGN_1_FS_AVL_2500_GAIN_XY 1492 | ||
117 | #define ST_MAGN_1_FS_AVL_4000_GAIN_XY 2222 | ||
118 | #define ST_MAGN_1_FS_AVL_4700_GAIN_XY 2500 | ||
119 | #define ST_MAGN_1_FS_AVL_5600_GAIN_XY 3030 | ||
120 | #define ST_MAGN_1_FS_AVL_8100_GAIN_XY 4347 | ||
121 | #define ST_MAGN_1_FS_AVL_1300_GAIN_Z 1020 | ||
122 | #define ST_MAGN_1_FS_AVL_1900_GAIN_Z 1315 | ||
123 | #define ST_MAGN_1_FS_AVL_2500_GAIN_Z 1666 | ||
124 | #define ST_MAGN_1_FS_AVL_4000_GAIN_Z 2500 | ||
125 | #define ST_MAGN_1_FS_AVL_4700_GAIN_Z 2816 | ||
126 | #define ST_MAGN_1_FS_AVL_5600_GAIN_Z 3389 | ||
127 | #define ST_MAGN_1_FS_AVL_8100_GAIN_Z 4878 | ||
128 | #define ST_MAGN_1_MULTIREAD_BIT false | ||
129 | |||
130 | /* CUSTOM VALUES FOR SENSOR 2 */ | ||
131 | #define ST_MAGN_2_WAI_EXP 0x3d | ||
132 | #define ST_MAGN_2_ODR_ADDR 0x20 | ||
133 | #define ST_MAGN_2_ODR_MASK 0x1c | ||
134 | #define ST_MAGN_2_ODR_AVL_1HZ_VAL 0x00 | ||
135 | #define ST_MAGN_2_ODR_AVL_2HZ_VAL 0x01 | ||
136 | #define ST_MAGN_2_ODR_AVL_3HZ_VAL 0x02 | ||
137 | #define ST_MAGN_2_ODR_AVL_5HZ_VAL 0x03 | ||
138 | #define ST_MAGN_2_ODR_AVL_10HZ_VAL 0x04 | ||
139 | #define ST_MAGN_2_ODR_AVL_20HZ_VAL 0x05 | ||
140 | #define ST_MAGN_2_ODR_AVL_40HZ_VAL 0x06 | ||
141 | #define ST_MAGN_2_ODR_AVL_80HZ_VAL 0x07 | ||
142 | #define ST_MAGN_2_PW_ADDR 0x22 | ||
143 | #define ST_MAGN_2_PW_MASK 0x03 | ||
144 | #define ST_MAGN_2_PW_ON 0x00 | ||
145 | #define ST_MAGN_2_PW_OFF 0x03 | ||
146 | #define ST_MAGN_2_FS_ADDR 0x21 | ||
147 | #define ST_MAGN_2_FS_MASK 0x60 | ||
148 | #define ST_MAGN_2_FS_AVL_4000_VAL 0x00 | ||
149 | #define ST_MAGN_2_FS_AVL_8000_VAL 0x01 | ||
150 | #define ST_MAGN_2_FS_AVL_12000_VAL 0x02 | ||
151 | #define ST_MAGN_2_FS_AVL_16000_VAL 0x03 | ||
152 | #define ST_MAGN_2_FS_AVL_4000_GAIN 146 | ||
153 | #define ST_MAGN_2_FS_AVL_8000_GAIN 292 | ||
154 | #define ST_MAGN_2_FS_AVL_12000_GAIN 438 | ||
155 | #define ST_MAGN_2_FS_AVL_16000_GAIN 584 | ||
156 | #define ST_MAGN_2_MULTIREAD_BIT false | ||
157 | #define ST_MAGN_2_OUT_X_L_ADDR 0x28 | 50 | #define ST_MAGN_2_OUT_X_L_ADDR 0x28 |
158 | #define ST_MAGN_2_OUT_Y_L_ADDR 0x2a | 51 | #define ST_MAGN_2_OUT_Y_L_ADDR 0x2a |
159 | #define ST_MAGN_2_OUT_Z_L_ADDR 0x2c | 52 | #define ST_MAGN_2_OUT_Z_L_ADDR 0x2c |
160 | 53 | ||
161 | /* CUSTOM VALUES FOR SENSOR 3 */ | 54 | /* Special L addresses for sensor 3 */ |
162 | #define ST_MAGN_3_WAI_ADDR 0x4f | ||
163 | #define ST_MAGN_3_WAI_EXP 0x40 | ||
164 | #define ST_MAGN_3_ODR_ADDR 0x60 | ||
165 | #define ST_MAGN_3_ODR_MASK 0x0c | ||
166 | #define ST_MAGN_3_ODR_AVL_10HZ_VAL 0x00 | ||
167 | #define ST_MAGN_3_ODR_AVL_20HZ_VAL 0x01 | ||
168 | #define ST_MAGN_3_ODR_AVL_50HZ_VAL 0x02 | ||
169 | #define ST_MAGN_3_ODR_AVL_100HZ_VAL 0x03 | ||
170 | #define ST_MAGN_3_PW_ADDR 0x60 | ||
171 | #define ST_MAGN_3_PW_MASK 0x03 | ||
172 | #define ST_MAGN_3_PW_ON 0x00 | ||
173 | #define ST_MAGN_3_PW_OFF 0x03 | ||
174 | #define ST_MAGN_3_BDU_ADDR 0x62 | ||
175 | #define ST_MAGN_3_BDU_MASK 0x10 | ||
176 | #define ST_MAGN_3_DRDY_IRQ_ADDR 0x62 | ||
177 | #define ST_MAGN_3_DRDY_INT_MASK 0x01 | ||
178 | #define ST_MAGN_3_IHL_IRQ_ADDR 0x63 | ||
179 | #define ST_MAGN_3_IHL_IRQ_MASK 0x04 | ||
180 | #define ST_MAGN_3_FS_AVL_15000_GAIN 1500 | ||
181 | #define ST_MAGN_3_MULTIREAD_BIT false | ||
182 | #define ST_MAGN_3_OUT_X_L_ADDR 0x68 | 55 | #define ST_MAGN_3_OUT_X_L_ADDR 0x68 |
183 | #define ST_MAGN_3_OUT_Y_L_ADDR 0x6a | 56 | #define ST_MAGN_3_OUT_Y_L_ADDR 0x6a |
184 | #define ST_MAGN_3_OUT_Z_L_ADDR 0x6c | 57 | #define ST_MAGN_3_OUT_Z_L_ADDR 0x6c |
@@ -240,77 +113,78 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = { | |||
240 | }, | 113 | }, |
241 | .ch = (struct iio_chan_spec *)st_magn_16bit_channels, | 114 | .ch = (struct iio_chan_spec *)st_magn_16bit_channels, |
242 | .odr = { | 115 | .odr = { |
243 | .addr = ST_MAGN_0_ODR_ADDR, | 116 | .addr = 0x00, |
244 | .mask = ST_MAGN_0_ODR_MASK, | 117 | .mask = 0x1c, |
245 | .odr_avl = { | 118 | .odr_avl = { |
246 | { 1, ST_MAGN_0_ODR_AVL_1HZ_VAL, }, | 119 | { .hz = 1, .value = 0x00 }, |
247 | { 2, ST_MAGN_0_ODR_AVL_2HZ_VAL, }, | 120 | { .hz = 2, .value = 0x01 }, |
248 | { 3, ST_MAGN_0_ODR_AVL_3HZ_VAL, }, | 121 | { .hz = 3, .value = 0x02 }, |
249 | { 8, ST_MAGN_0_ODR_AVL_8HZ_VAL, }, | 122 | { .hz = 8, .value = 0x03 }, |
250 | { 15, ST_MAGN_0_ODR_AVL_15HZ_VAL, }, | 123 | { .hz = 15, .value = 0x04 }, |
251 | { 30, ST_MAGN_0_ODR_AVL_30HZ_VAL, }, | 124 | { .hz = 30, .value = 0x05 }, |
252 | { 75, ST_MAGN_0_ODR_AVL_75HZ_VAL, }, | 125 | { .hz = 75, .value = 0x06 }, |
126 | /* 220 Hz, 0x07 reportedly exist */ | ||
253 | }, | 127 | }, |
254 | }, | 128 | }, |
255 | .pw = { | 129 | .pw = { |
256 | .addr = ST_MAGN_0_PW_ADDR, | 130 | .addr = 0x02, |
257 | .mask = ST_MAGN_0_PW_MASK, | 131 | .mask = 0x03, |
258 | .value_on = ST_MAGN_0_PW_ON, | 132 | .value_on = 0x00, |
259 | .value_off = ST_MAGN_0_PW_OFF, | 133 | .value_off = 0x03, |
260 | }, | 134 | }, |
261 | .fs = { | 135 | .fs = { |
262 | .addr = ST_MAGN_0_FS_ADDR, | 136 | .addr = 0x01, |
263 | .mask = ST_MAGN_0_FS_MASK, | 137 | .mask = 0xe0, |
264 | .fs_avl = { | 138 | .fs_avl = { |
265 | [0] = { | 139 | [0] = { |
266 | .num = ST_MAGN_FS_AVL_1300MG, | 140 | .num = ST_MAGN_FS_AVL_1300MG, |
267 | .value = ST_MAGN_0_FS_AVL_1300_VAL, | 141 | .value = 0x01, |
268 | .gain = ST_MAGN_0_FS_AVL_1300_GAIN_XY, | 142 | .gain = 1100, |
269 | .gain2 = ST_MAGN_0_FS_AVL_1300_GAIN_Z, | 143 | .gain2 = 980, |
270 | }, | 144 | }, |
271 | [1] = { | 145 | [1] = { |
272 | .num = ST_MAGN_FS_AVL_1900MG, | 146 | .num = ST_MAGN_FS_AVL_1900MG, |
273 | .value = ST_MAGN_0_FS_AVL_1900_VAL, | 147 | .value = 0x02, |
274 | .gain = ST_MAGN_0_FS_AVL_1900_GAIN_XY, | 148 | .gain = 855, |
275 | .gain2 = ST_MAGN_0_FS_AVL_1900_GAIN_Z, | 149 | .gain2 = 760, |
276 | }, | 150 | }, |
277 | [2] = { | 151 | [2] = { |
278 | .num = ST_MAGN_FS_AVL_2500MG, | 152 | .num = ST_MAGN_FS_AVL_2500MG, |
279 | .value = ST_MAGN_0_FS_AVL_2500_VAL, | 153 | .value = 0x03, |
280 | .gain = ST_MAGN_0_FS_AVL_2500_GAIN_XY, | 154 | .gain = 670, |
281 | .gain2 = ST_MAGN_0_FS_AVL_2500_GAIN_Z, | 155 | .gain2 = 600, |
282 | }, | 156 | }, |
283 | [3] = { | 157 | [3] = { |
284 | .num = ST_MAGN_FS_AVL_4000MG, | 158 | .num = ST_MAGN_FS_AVL_4000MG, |
285 | .value = ST_MAGN_0_FS_AVL_4000_VAL, | 159 | .value = 0x04, |
286 | .gain = ST_MAGN_0_FS_AVL_4000_GAIN_XY, | 160 | .gain = 450, |
287 | .gain2 = ST_MAGN_0_FS_AVL_4000_GAIN_Z, | 161 | .gain2 = 400, |
288 | }, | 162 | }, |
289 | [4] = { | 163 | [4] = { |
290 | .num = ST_MAGN_FS_AVL_4700MG, | 164 | .num = ST_MAGN_FS_AVL_4700MG, |
291 | .value = ST_MAGN_0_FS_AVL_4700_VAL, | 165 | .value = 0x05, |
292 | .gain = ST_MAGN_0_FS_AVL_4700_GAIN_XY, | 166 | .gain = 400, |
293 | .gain2 = ST_MAGN_0_FS_AVL_4700_GAIN_Z, | 167 | .gain2 = 355, |
294 | }, | 168 | }, |
295 | [5] = { | 169 | [5] = { |
296 | .num = ST_MAGN_FS_AVL_5600MG, | 170 | .num = ST_MAGN_FS_AVL_5600MG, |
297 | .value = ST_MAGN_0_FS_AVL_5600_VAL, | 171 | .value = 0x06, |
298 | .gain = ST_MAGN_0_FS_AVL_5600_GAIN_XY, | 172 | .gain = 330, |
299 | .gain2 = ST_MAGN_0_FS_AVL_5600_GAIN_Z, | 173 | .gain2 = 295, |
300 | }, | 174 | }, |
301 | [6] = { | 175 | [6] = { |
302 | .num = ST_MAGN_FS_AVL_8100MG, | 176 | .num = ST_MAGN_FS_AVL_8100MG, |
303 | .value = ST_MAGN_0_FS_AVL_8100_VAL, | 177 | .value = 0x07, |
304 | .gain = ST_MAGN_0_FS_AVL_8100_GAIN_XY, | 178 | .gain = 230, |
305 | .gain2 = ST_MAGN_0_FS_AVL_8100_GAIN_Z, | 179 | .gain2 = 205, |
306 | }, | 180 | }, |
307 | }, | 181 | }, |
308 | }, | 182 | }, |
309 | .multi_read_bit = ST_MAGN_0_MULTIREAD_BIT, | 183 | .multi_read_bit = false, |
310 | .bootime = 2, | 184 | .bootime = 2, |
311 | }, | 185 | }, |
312 | { | 186 | { |
313 | .wai = ST_MAGN_1_WAI_EXP, | 187 | .wai = 0x3c, |
314 | .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, | 188 | .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, |
315 | .sensors_supported = { | 189 | .sensors_supported = { |
316 | [0] = LSM303DLHC_MAGN_DEV_NAME, | 190 | [0] = LSM303DLHC_MAGN_DEV_NAME, |
@@ -318,175 +192,175 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = { | |||
318 | }, | 192 | }, |
319 | .ch = (struct iio_chan_spec *)st_magn_16bit_channels, | 193 | .ch = (struct iio_chan_spec *)st_magn_16bit_channels, |
320 | .odr = { | 194 | .odr = { |
321 | .addr = ST_MAGN_1_ODR_ADDR, | 195 | .addr = 0x00, |
322 | .mask = ST_MAGN_1_ODR_MASK, | 196 | .mask = 0x1c, |
323 | .odr_avl = { | 197 | .odr_avl = { |
324 | { 1, ST_MAGN_1_ODR_AVL_1HZ_VAL, }, | 198 | { .hz = 1, .value = 0x00 }, |
325 | { 2, ST_MAGN_1_ODR_AVL_2HZ_VAL, }, | 199 | { .hz = 2, .value = 0x01 }, |
326 | { 3, ST_MAGN_1_ODR_AVL_3HZ_VAL, }, | 200 | { .hz = 3, .value = 0x02 }, |
327 | { 8, ST_MAGN_1_ODR_AVL_8HZ_VAL, }, | 201 | { .hz = 8, .value = 0x03 }, |
328 | { 15, ST_MAGN_1_ODR_AVL_15HZ_VAL, }, | 202 | { .hz = 15, .value = 0x04 }, |
329 | { 30, ST_MAGN_1_ODR_AVL_30HZ_VAL, }, | 203 | { .hz = 30, .value = 0x05 }, |
330 | { 75, ST_MAGN_1_ODR_AVL_75HZ_VAL, }, | 204 | { .hz = 75, .value = 0x06 }, |
331 | { 220, ST_MAGN_1_ODR_AVL_220HZ_VAL, }, | 205 | { .hz = 220, .value = 0x07 }, |
332 | }, | 206 | }, |
333 | }, | 207 | }, |
334 | .pw = { | 208 | .pw = { |
335 | .addr = ST_MAGN_1_PW_ADDR, | 209 | .addr = 0x02, |
336 | .mask = ST_MAGN_1_PW_MASK, | 210 | .mask = 0x03, |
337 | .value_on = ST_MAGN_1_PW_ON, | 211 | .value_on = 0x00, |
338 | .value_off = ST_MAGN_1_PW_OFF, | 212 | .value_off = 0x03, |
339 | }, | 213 | }, |
340 | .fs = { | 214 | .fs = { |
341 | .addr = ST_MAGN_1_FS_ADDR, | 215 | .addr = 0x01, |
342 | .mask = ST_MAGN_1_FS_MASK, | 216 | .mask = 0xe0, |
343 | .fs_avl = { | 217 | .fs_avl = { |
344 | [0] = { | 218 | [0] = { |
345 | .num = ST_MAGN_FS_AVL_1300MG, | 219 | .num = ST_MAGN_FS_AVL_1300MG, |
346 | .value = ST_MAGN_1_FS_AVL_1300_VAL, | 220 | .value = 0x01, |
347 | .gain = ST_MAGN_1_FS_AVL_1300_GAIN_XY, | 221 | .gain = 909, |
348 | .gain2 = ST_MAGN_1_FS_AVL_1300_GAIN_Z, | 222 | .gain2 = 1020, |
349 | }, | 223 | }, |
350 | [1] = { | 224 | [1] = { |
351 | .num = ST_MAGN_FS_AVL_1900MG, | 225 | .num = ST_MAGN_FS_AVL_1900MG, |
352 | .value = ST_MAGN_1_FS_AVL_1900_VAL, | 226 | .value = 0x02, |
353 | .gain = ST_MAGN_1_FS_AVL_1900_GAIN_XY, | 227 | .gain = 1169, |
354 | .gain2 = ST_MAGN_1_FS_AVL_1900_GAIN_Z, | 228 | .gain2 = 1315, |
355 | }, | 229 | }, |
356 | [2] = { | 230 | [2] = { |
357 | .num = ST_MAGN_FS_AVL_2500MG, | 231 | .num = ST_MAGN_FS_AVL_2500MG, |
358 | .value = ST_MAGN_1_FS_AVL_2500_VAL, | 232 | .value = 0x03, |
359 | .gain = ST_MAGN_1_FS_AVL_2500_GAIN_XY, | 233 | .gain = 1492, |
360 | .gain2 = ST_MAGN_1_FS_AVL_2500_GAIN_Z, | 234 | .gain2 = 1666, |
361 | }, | 235 | }, |
362 | [3] = { | 236 | [3] = { |
363 | .num = ST_MAGN_FS_AVL_4000MG, | 237 | .num = ST_MAGN_FS_AVL_4000MG, |
364 | .value = ST_MAGN_1_FS_AVL_4000_VAL, | 238 | .value = 0x04, |
365 | .gain = ST_MAGN_1_FS_AVL_4000_GAIN_XY, | 239 | .gain = 2222, |
366 | .gain2 = ST_MAGN_1_FS_AVL_4000_GAIN_Z, | 240 | .gain2 = 2500, |
367 | }, | 241 | }, |
368 | [4] = { | 242 | [4] = { |
369 | .num = ST_MAGN_FS_AVL_4700MG, | 243 | .num = ST_MAGN_FS_AVL_4700MG, |
370 | .value = ST_MAGN_1_FS_AVL_4700_VAL, | 244 | .value = 0x05, |
371 | .gain = ST_MAGN_1_FS_AVL_4700_GAIN_XY, | 245 | .gain = 2500, |
372 | .gain2 = ST_MAGN_1_FS_AVL_4700_GAIN_Z, | 246 | .gain2 = 2816, |
373 | }, | 247 | }, |
374 | [5] = { | 248 | [5] = { |
375 | .num = ST_MAGN_FS_AVL_5600MG, | 249 | .num = ST_MAGN_FS_AVL_5600MG, |
376 | .value = ST_MAGN_1_FS_AVL_5600_VAL, | 250 | .value = 0x06, |
377 | .gain = ST_MAGN_1_FS_AVL_5600_GAIN_XY, | 251 | .gain = 3030, |
378 | .gain2 = ST_MAGN_1_FS_AVL_5600_GAIN_Z, | 252 | .gain2 = 3389, |
379 | }, | 253 | }, |
380 | [6] = { | 254 | [6] = { |
381 | .num = ST_MAGN_FS_AVL_8100MG, | 255 | .num = ST_MAGN_FS_AVL_8100MG, |
382 | .value = ST_MAGN_1_FS_AVL_8100_VAL, | 256 | .value = 0x07, |
383 | .gain = ST_MAGN_1_FS_AVL_8100_GAIN_XY, | 257 | .gain = 4347, |
384 | .gain2 = ST_MAGN_1_FS_AVL_8100_GAIN_Z, | 258 | .gain2 = 4878, |
385 | }, | 259 | }, |
386 | }, | 260 | }, |
387 | }, | 261 | }, |
388 | .multi_read_bit = ST_MAGN_1_MULTIREAD_BIT, | 262 | .multi_read_bit = false, |
389 | .bootime = 2, | 263 | .bootime = 2, |
390 | }, | 264 | }, |
391 | { | 265 | { |
392 | .wai = ST_MAGN_2_WAI_EXP, | 266 | .wai = 0x3d, |
393 | .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, | 267 | .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, |
394 | .sensors_supported = { | 268 | .sensors_supported = { |
395 | [0] = LIS3MDL_MAGN_DEV_NAME, | 269 | [0] = LIS3MDL_MAGN_DEV_NAME, |
396 | }, | 270 | }, |
397 | .ch = (struct iio_chan_spec *)st_magn_2_16bit_channels, | 271 | .ch = (struct iio_chan_spec *)st_magn_2_16bit_channels, |
398 | .odr = { | 272 | .odr = { |
399 | .addr = ST_MAGN_2_ODR_ADDR, | 273 | .addr = 0x20, |
400 | .mask = ST_MAGN_2_ODR_MASK, | 274 | .mask = 0x1c, |
401 | .odr_avl = { | 275 | .odr_avl = { |
402 | { 1, ST_MAGN_2_ODR_AVL_1HZ_VAL, }, | 276 | { .hz = 1, .value = 0x00 }, |
403 | { 2, ST_MAGN_2_ODR_AVL_2HZ_VAL, }, | 277 | { .hz = 2, .value = 0x01 }, |
404 | { 3, ST_MAGN_2_ODR_AVL_3HZ_VAL, }, | 278 | { .hz = 3, .value = 0x02 }, |
405 | { 5, ST_MAGN_2_ODR_AVL_5HZ_VAL, }, | 279 | { .hz = 5, .value = 0x03 }, |
406 | { 10, ST_MAGN_2_ODR_AVL_10HZ_VAL, }, | 280 | { .hz = 10, .value = 0x04 }, |
407 | { 20, ST_MAGN_2_ODR_AVL_20HZ_VAL, }, | 281 | { .hz = 20, .value = 0x05 }, |
408 | { 40, ST_MAGN_2_ODR_AVL_40HZ_VAL, }, | 282 | { .hz = 40, .value = 0x06 }, |
409 | { 80, ST_MAGN_2_ODR_AVL_80HZ_VAL, }, | 283 | { .hz = 80, .value = 0x07 }, |
410 | }, | 284 | }, |
411 | }, | 285 | }, |
412 | .pw = { | 286 | .pw = { |
413 | .addr = ST_MAGN_2_PW_ADDR, | 287 | .addr = 0x22, |
414 | .mask = ST_MAGN_2_PW_MASK, | 288 | .mask = 0x03, |
415 | .value_on = ST_MAGN_2_PW_ON, | 289 | .value_on = 0x00, |
416 | .value_off = ST_MAGN_2_PW_OFF, | 290 | .value_off = 0x03, |
417 | }, | 291 | }, |
418 | .fs = { | 292 | .fs = { |
419 | .addr = ST_MAGN_2_FS_ADDR, | 293 | .addr = 0x21, |
420 | .mask = ST_MAGN_2_FS_MASK, | 294 | .mask = 0x60, |
421 | .fs_avl = { | 295 | .fs_avl = { |
422 | [0] = { | 296 | [0] = { |
423 | .num = ST_MAGN_FS_AVL_4000MG, | 297 | .num = ST_MAGN_FS_AVL_4000MG, |
424 | .value = ST_MAGN_2_FS_AVL_4000_VAL, | 298 | .value = 0x00, |
425 | .gain = ST_MAGN_2_FS_AVL_4000_GAIN, | 299 | .gain = 146, |
426 | }, | 300 | }, |
427 | [1] = { | 301 | [1] = { |
428 | .num = ST_MAGN_FS_AVL_8000MG, | 302 | .num = ST_MAGN_FS_AVL_8000MG, |
429 | .value = ST_MAGN_2_FS_AVL_8000_VAL, | 303 | .value = 0x01, |
430 | .gain = ST_MAGN_2_FS_AVL_8000_GAIN, | 304 | .gain = 292, |
431 | }, | 305 | }, |
432 | [2] = { | 306 | [2] = { |
433 | .num = ST_MAGN_FS_AVL_12000MG, | 307 | .num = ST_MAGN_FS_AVL_12000MG, |
434 | .value = ST_MAGN_2_FS_AVL_12000_VAL, | 308 | .value = 0x02, |
435 | .gain = ST_MAGN_2_FS_AVL_12000_GAIN, | 309 | .gain = 438, |
436 | }, | 310 | }, |
437 | [3] = { | 311 | [3] = { |
438 | .num = ST_MAGN_FS_AVL_16000MG, | 312 | .num = ST_MAGN_FS_AVL_16000MG, |
439 | .value = ST_MAGN_2_FS_AVL_16000_VAL, | 313 | .value = 0x03, |
440 | .gain = ST_MAGN_2_FS_AVL_16000_GAIN, | 314 | .gain = 584, |
441 | }, | 315 | }, |
442 | }, | 316 | }, |
443 | }, | 317 | }, |
444 | .multi_read_bit = ST_MAGN_2_MULTIREAD_BIT, | 318 | .multi_read_bit = false, |
445 | .bootime = 2, | 319 | .bootime = 2, |
446 | }, | 320 | }, |
447 | { | 321 | { |
448 | .wai = ST_MAGN_3_WAI_EXP, | 322 | .wai = 0x40, |
449 | .wai_addr = ST_MAGN_3_WAI_ADDR, | 323 | .wai_addr = 0x4f, |
450 | .sensors_supported = { | 324 | .sensors_supported = { |
451 | [0] = LSM303AGR_MAGN_DEV_NAME, | 325 | [0] = LSM303AGR_MAGN_DEV_NAME, |
452 | }, | 326 | }, |
453 | .ch = (struct iio_chan_spec *)st_magn_3_16bit_channels, | 327 | .ch = (struct iio_chan_spec *)st_magn_3_16bit_channels, |
454 | .odr = { | 328 | .odr = { |
455 | .addr = ST_MAGN_3_ODR_ADDR, | 329 | .addr = 0x60, |
456 | .mask = ST_MAGN_3_ODR_MASK, | 330 | .mask = 0x0c, |
457 | .odr_avl = { | 331 | .odr_avl = { |
458 | { 10, ST_MAGN_3_ODR_AVL_10HZ_VAL, }, | 332 | { .hz = 10, .value = 0x00 }, |
459 | { 20, ST_MAGN_3_ODR_AVL_20HZ_VAL, }, | 333 | { .hz = 20, .value = 0x01 }, |
460 | { 50, ST_MAGN_3_ODR_AVL_50HZ_VAL, }, | 334 | { .hz = 50, .value = 0x02 }, |
461 | { 100, ST_MAGN_3_ODR_AVL_100HZ_VAL, }, | 335 | { .hz = 100, .value = 0x03 }, |
462 | }, | 336 | }, |
463 | }, | 337 | }, |
464 | .pw = { | 338 | .pw = { |
465 | .addr = ST_MAGN_3_PW_ADDR, | 339 | .addr = 0x60, |
466 | .mask = ST_MAGN_3_PW_MASK, | 340 | .mask = 0x03, |
467 | .value_on = ST_MAGN_3_PW_ON, | 341 | .value_on = 0x00, |
468 | .value_off = ST_MAGN_3_PW_OFF, | 342 | .value_off = 0x03, |
469 | }, | 343 | }, |
470 | .fs = { | 344 | .fs = { |
471 | .fs_avl = { | 345 | .fs_avl = { |
472 | [0] = { | 346 | [0] = { |
473 | .num = ST_MAGN_FS_AVL_15000MG, | 347 | .num = ST_MAGN_FS_AVL_15000MG, |
474 | .gain = ST_MAGN_3_FS_AVL_15000_GAIN, | 348 | .gain = 1500, |
475 | }, | 349 | }, |
476 | }, | 350 | }, |
477 | }, | 351 | }, |
478 | .bdu = { | 352 | .bdu = { |
479 | .addr = ST_MAGN_3_BDU_ADDR, | 353 | .addr = 0x62, |
480 | .mask = ST_MAGN_3_BDU_MASK, | 354 | .mask = 0x10, |
481 | }, | 355 | }, |
482 | .drdy_irq = { | 356 | .drdy_irq = { |
483 | .addr = ST_MAGN_3_DRDY_IRQ_ADDR, | 357 | .addr = 0x62, |
484 | .mask_int1 = ST_MAGN_3_DRDY_INT_MASK, | 358 | .mask_int1 = 0x01, |
485 | .addr_ihl = ST_MAGN_3_IHL_IRQ_ADDR, | 359 | .addr_ihl = 0x63, |
486 | .mask_ihl = ST_MAGN_3_IHL_IRQ_MASK, | 360 | .mask_ihl = 0x04, |
487 | .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, | 361 | .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, |
488 | }, | 362 | }, |
489 | .multi_read_bit = ST_MAGN_3_MULTIREAD_BIT, | 363 | .multi_read_bit = false, |
490 | .bootime = 2, | 364 | .bootime = 2, |
491 | }, | 365 | }, |
492 | }; | 366 | }; |