Minor changes

This commit is contained in:
Loic Guegan 2023-07-12 17:51:15 +02:00
parent 40b962ccf2
commit 71ffc9684c

View file

@ -215,85 +215,77 @@ static ssize_t attr_field_show(struct kobject *_kobj,
static int ina260_write_field3(struct client_data *cdata, unsigned char reg, unsigned char n, int value3bits){ static int ina260_write_field3(struct client_data *cdata, unsigned char reg, unsigned char n, int value3bits){
int mask, value; int mask, value;
if(value3bits>=0 && value3bits <8){ if(!(value3bits>=0 && value3bits <8))
return -EINVAL;
// Fetch register value:
if(ina260_read_register(cdata,reg,&value)) if(ina260_read_register(cdata,reg,&value))
return 1; return 1;
// Write bits:
mask=~(0x7 << n); mask=~(0x7 << n);
value &= mask; // clear bits value &= mask; // clear bits
value |= value3bits << n; value |= value3bits << n;
// Write register value:
if(ina260_write_register(cdata,reg,value)) if(ina260_write_register(cdata,reg,value))
return 1; return 1;
return 0; return 0;
} }
return -EINVAL;
}
static int ina260_write_field1(struct client_data *cdata, unsigned char reg, unsigned char n, int bit){ static int ina260_write_field1(struct client_data *cdata, unsigned char reg, unsigned char n, int bit){
int mask, value; int mask, value;
if(bit==0 || bit == 1){ if(!(bit==0 || bit == 1))
return -EINVAL;
// Fetch register value:
if(ina260_read_register(cdata,reg,&value)) if(ina260_read_register(cdata,reg,&value))
return 1; return 1;
// Set bit:
mask=~(1<< n); mask=~(1<< n);
value &= mask; // clear bits value &= mask; // clear bit
value |= bit << n; value |= bit << n;
// Write register value
if(ina260_write_register(cdata,reg,value)) if(ina260_write_register(cdata,reg,value))
return 1; return 1;
return 0; return 0;
} }
return -EINVAL;
}
static ssize_t attr_field_store(struct kobject *_kobj, static ssize_t attr_field_store(struct kobject *_kobj,
struct kobj_attribute *attr, struct kobj_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct client_data *cdata=container_of(_kobj,struct client_data,kobj); struct client_data *cdata=container_of(_kobj,struct client_data,kobj);
int data=0; int data=0, ret=count;
unsigned char reg=INA260_REG_CONFIGURATION; unsigned char reg=INA260_REG_CONFIGURATION;
// Extract user supplied value
if(kstrtoint(buf, 10,&data)) if(kstrtoint(buf, 10,&data))
return -EINVAL; return -EINVAL;
// Store:
if(INA260_IS_ATTR(reset) && data!=0){ if(INA260_IS_ATTR(reset) && data!=0){
if(ina260_write_register(cdata, reg, 0xFFFF)) ret=ina260_write_register(cdata, reg, 0xFFFF);
return -1;
} else if(INA260_IS_ATTR(avg)){ } else if(INA260_IS_ATTR(avg)){
if(ina260_write_field3(cdata,reg,9,data)) ret=ina260_write_field3(cdata,reg,9,data);
return -EINVAL;
} else if(INA260_IS_ATTR(mode)){ } else if(INA260_IS_ATTR(mode)){
if(ina260_write_field3(cdata,reg,0,data)) ret=ina260_write_field3(cdata,reg,0,data);
return -EINVAL;
} else if(INA260_IS_ATTR(ishct)){ } else if(INA260_IS_ATTR(ishct)){
if(ina260_write_field3(cdata,reg,3,data)) ret=ina260_write_field3(cdata,reg,3,data);
return -EINVAL;
} else if(INA260_IS_ATTR(vbusct)){ } else if(INA260_IS_ATTR(vbusct)){
if(ina260_write_field3(cdata,reg,6,data)) ret=ina260_write_field3(cdata,reg,6,data);
return -EINVAL;
} else if(INA260_IS_ATTR(ocl)){ } else if(INA260_IS_ATTR(ocl)){
if(ina260_write_field1(cdata,reg,15,data)) ret=ina260_write_field1(cdata,reg,15,data);
return -EINVAL;
} else if(INA260_IS_ATTR(ucl)){ } else if(INA260_IS_ATTR(ucl)){
if(ina260_write_field1(cdata,reg,14,data)) ret=ina260_write_field1(cdata,reg,14,data);
return -EINVAL;
} else if(INA260_IS_ATTR(bol)){ } else if(INA260_IS_ATTR(bol)){
if(ina260_write_field1(cdata,reg,13,data)) ret=ina260_write_field1(cdata,reg,13,data);
return -EINVAL;
} else if(INA260_IS_ATTR(bul)){ } else if(INA260_IS_ATTR(bul)){
if(ina260_write_field1(cdata,reg,12,data)) ret=ina260_write_field1(cdata,reg,12,data);
return -EINVAL;
} else if(INA260_IS_ATTR(pol)){ } else if(INA260_IS_ATTR(pol)){
if(ina260_write_field1(cdata,reg,11,data)) ret=ina260_write_field1(cdata,reg,11,data);
return -EINVAL;
} else if(INA260_IS_ATTR(cnvr)){ } else if(INA260_IS_ATTR(cnvr)){
if(ina260_write_field1(cdata,reg,10,data)) ret=ina260_write_field1(cdata,reg,10,data);
return -EINVAL;
} else if(INA260_IS_ATTR(apol)){ } else if(INA260_IS_ATTR(apol)){
if(ina260_write_field1(cdata,reg,1,data)) ret=ina260_write_field1(cdata,reg,1,data);
return -EINVAL;
} else if(INA260_IS_ATTR(len)){ } else if(INA260_IS_ATTR(len)){
if(ina260_write_field1(cdata,reg,0,data)) ret=ina260_write_field1(cdata,reg,0,data);
return -EINVAL;
} }
return ret ? ret: count;
return count;
} }