Minor changes

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

View file

@ -215,32 +215,36 @@ 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){
int mask, value;
if(value3bits>=0 && value3bits <8){
if(ina260_read_register(cdata,reg,&value))
return 1;
mask=~(0x7 << n);
value &= mask; // clear bits
value |= value3bits << n;
if(ina260_write_register(cdata,reg,value))
return 1;
return 0;
}
return -EINVAL;
if(!(value3bits>=0 && value3bits <8))
return -EINVAL;
// Fetch register value:
if(ina260_read_register(cdata,reg,&value))
return 1;
// Write bits:
mask=~(0x7 << n);
value &= mask; // clear bits
value |= value3bits << n;
// Write register value:
if(ina260_write_register(cdata,reg,value))
return 1;
return 0;
}
static int ina260_write_field1(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;
if(!(bit==0 || bit == 1))
return -EINVAL;
// Fetch register value:
if(ina260_read_register(cdata,reg,&value))
return 1;
// Set bit:
mask=~(1<< n);
value &= mask; // clear bit
value |= bit << n;
// Write register value
if(ina260_write_register(cdata,reg,value))
return 1;
return 0;
}
static ssize_t attr_field_store(struct kobject *_kobj,
@ -248,52 +252,40 @@ static ssize_t attr_field_store(struct kobject *_kobj,
const char *buf, size_t count)
{
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;
// Extract user supplied value
if(kstrtoint(buf, 10,&data))
return -EINVAL;
// Store:
if(INA260_IS_ATTR(reset) && data!=0){
if(ina260_write_register(cdata, reg, 0xFFFF))
return -1;
ret=ina260_write_register(cdata, reg, 0xFFFF);
} else if(INA260_IS_ATTR(avg)){
if(ina260_write_field3(cdata,reg,9,data))
return -EINVAL;
ret=ina260_write_field3(cdata,reg,9,data);
} else if(INA260_IS_ATTR(mode)){
if(ina260_write_field3(cdata,reg,0,data))
return -EINVAL;
ret=ina260_write_field3(cdata,reg,0,data);
} else if(INA260_IS_ATTR(ishct)){
if(ina260_write_field3(cdata,reg,3,data))
return -EINVAL;
ret=ina260_write_field3(cdata,reg,3,data);
} else if(INA260_IS_ATTR(vbusct)){
if(ina260_write_field3(cdata,reg,6,data))
return -EINVAL;
ret=ina260_write_field3(cdata,reg,6,data);
} else if(INA260_IS_ATTR(ocl)){
if(ina260_write_field1(cdata,reg,15,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,15,data);
} else if(INA260_IS_ATTR(ucl)){
if(ina260_write_field1(cdata,reg,14,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,14,data);
} else if(INA260_IS_ATTR(bol)){
if(ina260_write_field1(cdata,reg,13,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,13,data);
} else if(INA260_IS_ATTR(bul)){
if(ina260_write_field1(cdata,reg,12,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,12,data);
} else if(INA260_IS_ATTR(pol)){
if(ina260_write_field1(cdata,reg,11,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,11,data);
} else if(INA260_IS_ATTR(cnvr)){
if(ina260_write_field1(cdata,reg,10,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,10,data);
} else if(INA260_IS_ATTR(apol)){
if(ina260_write_field1(cdata,reg,1,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,1,data);
} else if(INA260_IS_ATTR(len)){
if(ina260_write_field1(cdata,reg,0,data))
return -EINVAL;
ret=ina260_write_field1(cdata,reg,0,data);
}
return count;
return ret ? ret: count;
}
@ -472,4 +464,4 @@ module_exit(ina260_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Loïc Guegan");
MODULE_DESCRIPTION("INA260 Texas Instruments");
MODULE_VERSION("1.0");
MODULE_VERSION("1.0");