@@ -211,6 +211,42 @@ static u16 ina226_interval_to_reg(unsigned long interval)
211
211
return FIELD_PREP (INA226_AVG_RD_MASK , avg_bits );
212
212
}
213
213
214
+ static int ina2xx_get_value (struct ina2xx_data * data , u8 reg ,
215
+ unsigned int regval )
216
+ {
217
+ int val ;
218
+
219
+ switch (reg ) {
220
+ case INA2XX_SHUNT_VOLTAGE :
221
+ /* signed register */
222
+ val = DIV_ROUND_CLOSEST ((s16 )regval , data -> config -> shunt_div );
223
+ break ;
224
+ case INA2XX_BUS_VOLTAGE :
225
+ val = (regval >> data -> config -> bus_voltage_shift ) *
226
+ data -> config -> bus_voltage_lsb ;
227
+ val = DIV_ROUND_CLOSEST (val , 1000 );
228
+ break ;
229
+ case INA2XX_POWER :
230
+ val = regval * data -> power_lsb_uW ;
231
+ break ;
232
+ case INA2XX_CURRENT :
233
+ /* signed register, result in mA */
234
+ val = (s16 )regval * data -> current_lsb_uA ;
235
+ val = DIV_ROUND_CLOSEST (val , 1000 );
236
+ break ;
237
+ case INA2XX_CALIBRATION :
238
+ val = regval ;
239
+ break ;
240
+ default :
241
+ /* programmer goofed */
242
+ WARN_ON_ONCE (1 );
243
+ val = 0 ;
244
+ break ;
245
+ }
246
+
247
+ return val ;
248
+ }
249
+
214
250
static int ina2xx_read_reg (struct device * dev , int reg , unsigned int * regval )
215
251
{
216
252
struct ina2xx_data * data = dev_get_drvdata (dev );
@@ -264,42 +300,6 @@ static int ina2xx_read_reg(struct device *dev, int reg, unsigned int *regval)
264
300
return - ENODEV ;
265
301
}
266
302
267
- static int ina2xx_get_value (struct ina2xx_data * data , u8 reg ,
268
- unsigned int regval )
269
- {
270
- int val ;
271
-
272
- switch (reg ) {
273
- case INA2XX_SHUNT_VOLTAGE :
274
- /* signed register */
275
- val = DIV_ROUND_CLOSEST ((s16 )regval , data -> config -> shunt_div );
276
- break ;
277
- case INA2XX_BUS_VOLTAGE :
278
- val = (regval >> data -> config -> bus_voltage_shift )
279
- * data -> config -> bus_voltage_lsb ;
280
- val = DIV_ROUND_CLOSEST (val , 1000 );
281
- break ;
282
- case INA2XX_POWER :
283
- val = regval * data -> power_lsb_uW ;
284
- break ;
285
- case INA2XX_CURRENT :
286
- /* signed register, result in mA */
287
- val = (s16 )regval * data -> current_lsb_uA ;
288
- val = DIV_ROUND_CLOSEST (val , 1000 );
289
- break ;
290
- case INA2XX_CALIBRATION :
291
- val = regval ;
292
- break ;
293
- default :
294
- /* programmer goofed */
295
- WARN_ON_ONCE (1 );
296
- val = 0 ;
297
- break ;
298
- }
299
-
300
- return val ;
301
- }
302
-
303
303
static ssize_t ina2xx_value_show (struct device * dev ,
304
304
struct device_attribute * da , char * buf )
305
305
{
0 commit comments