diff --git a/ina260.c b/ina260.c index 82fd554..b05ca31 100644 --- a/ina260.c +++ b/ina260.c @@ -233,6 +233,23 @@ static int ina260_set_register_3bits(struct client_data *cdata, unsigned char re return -EINVAL; } +static int ina260_set_register_1bit(struct client_data *cdata, unsigned char reg, unsigned char n, int bit){ + int mask, value; + if(bit==0 || bit == 1){ + if(ina260_read_register(cdata,reg,&value)){ + return 1; + } + mask=~(1<< n); + value &= mask; // clear bits + value |= bit << n; + if(ina260_write_register(cdata,reg,value)){ + return 1; + } + return 0; + } + return -EINVAL; +} + static ssize_t attr_field_store(struct kobject *_kobj, struct kobj_attribute *attr, const char *buf, size_t count)