From ec8bd3d7a1afae48eae3a540cd867a4cd71edd39 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Tue, 15 Aug 2023 11:09:24 +0200 Subject: Minor changes --- ina260.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/ina260.c b/ina260.c index 233656e..67ad1e7 100755 --- a/ina260.c +++ b/ina260.c @@ -80,7 +80,7 @@ struct client_data { static int ina260_hwmon_read(struct device *dev, enum hwmon_sensor_types type, u32 attr, int channel, long *val) { - int rvalue, reg, err; + int rvalue, reg, err, rem; struct client_data *cdata=dev_get_drvdata(dev); switch(type){ case hwmon_power: @@ -101,7 +101,7 @@ static int ina260_hwmon_read(struct device *dev, enum hwmon_sensor_types type, } else if(type == hwmon_power) { *val=10*rvalue*1000; } else{ - *val=div_u64(rvalue*25,100)+rvalue; + *val=div_u64_rem(rvalue*25,100,&rem)+rvalue+div_u64(rem,10); } return 0; } @@ -131,8 +131,32 @@ INA260_REG_STORE(alert_limit,INA260_REG_ALERTLIMIT) static umode_t ina260_hwmon_is_visible(const void *drvdata, enum hwmon_sensor_types type, u32 attr, int channel){ - return 0444; - } + switch (type) { + case hwmon_in: + switch (attr) { + case hwmon_in_input: + return 0444; + default: + return 0; + } + case hwmon_curr: + switch (attr) { + case hwmon_curr_input: + return 0444; + default: + return 0; + } + case hwmon_power: + switch (attr) { + case hwmon_power_input: + return 0444; + default: + return 0; + } + default: + return 0; + } +} static const struct hwmon_channel_info * ina260_hwmon_info[] = { HWMON_CHANNEL_INFO(in,HWMON_I_INPUT), HWMON_CHANNEL_INFO(power,HWMON_P_INPUT), -- cgit v1.2.3