All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: hid-sensors: Increase the precision of scale
@ 2016-10-25  1:30 Song Hongyan
  2016-10-30 16:22 ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Song Hongyan @ 2016-10-25  1:30 UTC (permalink / raw)
  To: linux-iio; +Cc: srinivas.pandruvada, Song Hongyan

While testing, it was observed that on some platforms the scale value
from iio sysfs for gyroscope is always 0 (E.g. Yoga 260). This results
in the final angular velocity component values to be zeros.

This is caused by insufficient precision of scale value displayed in sysfs.
If the precision is changed to nano from current micro, then this is
sufficient to display the scale value on this platform.
Since this can be a problem for all other HID sensors, increase scale
precision of all HID sensors to nano from current micro.

Results on Yoga 260:

name		scale before	scale now
--------------------------------------------
gyro_3d		0.000000	0.000000174
als			0.001000	0.001000000
magn_3d		0.000001	0.000001000
accel_3d		0.000009	0.000009806

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
---
 .../iio/common/hid-sensors/hid-sensor-attributes.c | 56 +++++++++++-----------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
index dc33c1d..b5beea53 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
@@ -30,26 +30,26 @@
 	u32 usage_id;
 	int unit; /* 0 for default others from HID sensor spec */
 	int scale_val0; /* scale, whole number */
-	int scale_val1; /* scale, fraction in micros */
+	int scale_val1; /* scale, fraction in nanos */
 } unit_conversion[] = {
-	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650},
+	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000},
 	{HID_USAGE_SENSOR_ACCEL_3D,
 		HID_USAGE_SENSOR_UNITS_METERS_PER_SEC_SQRD, 1, 0},
 	{HID_USAGE_SENSOR_ACCEL_3D,
-		HID_USAGE_SENSOR_UNITS_G, 9, 806650},
+		HID_USAGE_SENSOR_UNITS_G, 9, 806650000},
 
-	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453},
+	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293},
 	{HID_USAGE_SENSOR_GYRO_3D,
 		HID_USAGE_SENSOR_UNITS_RADIANS_PER_SECOND, 1, 0},
 	{HID_USAGE_SENSOR_GYRO_3D,
-		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453},
+		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453293},
 
-	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000},
+	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000},
 	{HID_USAGE_SENSOR_COMPASS_3D, HID_USAGE_SENSOR_UNITS_GAUSS, 1, 0},
 
-	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453},
+	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293},
 	{HID_USAGE_SENSOR_INCLINOMETER_3D,
-		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453},
+		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293},
 	{HID_USAGE_SENSOR_INCLINOMETER_3D,
 		HID_USAGE_SENSOR_UNITS_RADIANS, 1, 0},
 
@@ -57,7 +57,7 @@
 	{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},
 
 	{HID_USAGE_SENSOR_PRESSURE, 0, 100, 0},
-	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000},
+	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000000},
 };
 
 static int pow_10(unsigned power)
@@ -266,15 +266,15 @@ int hid_sensor_write_raw_hyst_value(struct hid_sensor_common *st,
 /*
  * This fuction applies the unit exponent to the scale.
  * For example:
- * 9.806650 ->exp:2-> val0[980]val1[665000]
- * 9.000806 ->exp:2-> val0[900]val1[80600]
- * 0.174535 ->exp:2-> val0[17]val1[453500]
- * 1.001745 ->exp:0-> val0[1]val1[1745]
- * 1.001745 ->exp:2-> val0[100]val1[174500]
- * 1.001745 ->exp:4-> val0[10017]val1[450000]
- * 9.806650 ->exp:-2-> val0[0]val1[98066]
+ * 9.806650000 ->exp:2-> val0[980]val1[665000000]
+ * 9.000806000 ->exp:2-> val0[900]val1[80600000]
+ * 0.174535293 ->exp:2-> val0[17]val1[453529300]
+ * 1.001745329 ->exp:0-> val0[1]val1[1745329]
+ * 1.001745329 ->exp:2-> val0[100]val1[174532900]
+ * 1.001745329 ->exp:4-> val0[10017]val1[453290000]
+ * 9.806650000 ->exp:-2-> val0[0]val1[98066500]
  */
-static void adjust_exponent_micro(int *val0, int *val1, int scale0,
+static void adjust_exponent_nano(int *val0, int *val1, int scale0,
 				  int scale1, int exp)
 {
 	int i;
@@ -285,32 +285,32 @@ static void adjust_exponent_micro(int *val0, int *val1, int scale0,
 	if (exp > 0) {
 		*val0 = scale0 * pow_10(exp);
 		res = 0;
-		if (exp > 6) {
+		if (exp > 9) {
 			*val1 = 0;
 			return;
 		}
 		for (i = 0; i < exp; ++i) {
-			x = scale1 / pow_10(5 - i);
+			x = scale1 / pow_10(8 - i);
 			res += (pow_10(exp - 1 - i) * x);
-			scale1 = scale1 % pow_10(5 - i);
+			scale1 = scale1 % pow_10(8 - i);
 		}
 		*val0 += res;
 			*val1 = scale1 * pow_10(exp);
 	} else if (exp < 0) {
 		exp = abs(exp);
-		if (exp > 6) {
+		if (exp > 9) {
 			*val0 = *val1 = 0;
 			return;
 		}
 		*val0 = scale0 / pow_10(exp);
 		rem = scale0 % pow_10(exp);
 		res = 0;
-		for (i = 0; i < (6 - exp); ++i) {
-			x = scale1 / pow_10(5 - i);
-			res += (pow_10(5 - exp - i) * x);
-			scale1 = scale1 % pow_10(5 - i);
+		for (i = 0; i < (9 - exp); ++i) {
+			x = scale1 / pow_10(8 - i);
+			res += (pow_10(8 - exp - i) * x);
+			scale1 = scale1 % pow_10(8 - i);
 		}
-		*val1 = rem * pow_10(6 - exp) + res;
+		*val1 = rem * pow_10(9 - exp) + res;
 	} else {
 		*val0 = scale0;
 		*val1 = scale1;
@@ -332,14 +332,14 @@ int hid_sensor_format_scale(u32 usage_id,
 			unit_conversion[i].unit == attr_info->units) {
 			exp  = hid_sensor_convert_exponent(
 						attr_info->unit_expo);
-			adjust_exponent_micro(val0, val1,
+			adjust_exponent_nano(val0, val1,
 					unit_conversion[i].scale_val0,
 					unit_conversion[i].scale_val1, exp);
 			break;
 		}
 	}
 
-	return IIO_VAL_INT_PLUS_MICRO;
+	return IIO_VAL_INT_PLUS_NANO;
 }
 EXPORT_SYMBOL(hid_sensor_format_scale);
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] iio: hid-sensors: Increase the precision of scale
  2016-10-25  1:30 [PATCH] iio: hid-sensors: Increase the precision of scale Song Hongyan
@ 2016-10-30 16:22 ` Jonathan Cameron
  2016-10-31  0:34   ` Pandruvada, Srinivas
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2016-10-30 16:22 UTC (permalink / raw)
  To: Song Hongyan, linux-iio; +Cc: srinivas.pandruvada

On 25/10/16 02:30, Song Hongyan wrote:
> While testing, it was observed that on some platforms the scale value
> from iio sysfs for gyroscope is always 0 (E.g. Yoga 260). This results
> in the final angular velocity component values to be zeros.
> 
> This is caused by insufficient precision of scale value displayed in sysfs.
> If the precision is changed to nano from current micro, then this is
> sufficient to display the scale value on this platform.
> Since this can be a problem for all other HID sensors, increase scale
> precision of all HID sensors to nano from current micro.
> 
> Results on Yoga 260:
> 
> name		scale before	scale now
> --------------------------------------------
> gyro_3d		0.000000	0.000000174
> als			0.001000	0.001000000
> magn_3d		0.000001	0.000001000
> accel_3d		0.000009	0.000009806
> 
> Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Hi

Looks right to me, Srinivas, I'd like your Ack on this ideally.

thanks,

Jonathan
> ---
>  .../iio/common/hid-sensors/hid-sensor-attributes.c | 56 +++++++++++-----------
>  1 file changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> index dc33c1d..b5beea53 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> @@ -30,26 +30,26 @@
>  	u32 usage_id;
>  	int unit; /* 0 for default others from HID sensor spec */
>  	int scale_val0; /* scale, whole number */
> -	int scale_val1; /* scale, fraction in micros */
> +	int scale_val1; /* scale, fraction in nanos */
>  } unit_conversion[] = {
> -	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650},
> +	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000},
>  	{HID_USAGE_SENSOR_ACCEL_3D,
>  		HID_USAGE_SENSOR_UNITS_METERS_PER_SEC_SQRD, 1, 0},
>  	{HID_USAGE_SENSOR_ACCEL_3D,
> -		HID_USAGE_SENSOR_UNITS_G, 9, 806650},
> +		HID_USAGE_SENSOR_UNITS_G, 9, 806650000},
>  
> -	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453},
> +	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293},
>  	{HID_USAGE_SENSOR_GYRO_3D,
>  		HID_USAGE_SENSOR_UNITS_RADIANS_PER_SECOND, 1, 0},
>  	{HID_USAGE_SENSOR_GYRO_3D,
> -		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453},
> +		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453293},
>  
> -	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000},
> +	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000},
>  	{HID_USAGE_SENSOR_COMPASS_3D, HID_USAGE_SENSOR_UNITS_GAUSS, 1, 0},
>  
> -	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453},
> +	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293},
>  	{HID_USAGE_SENSOR_INCLINOMETER_3D,
> -		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453},
> +		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293},
>  	{HID_USAGE_SENSOR_INCLINOMETER_3D,
>  		HID_USAGE_SENSOR_UNITS_RADIANS, 1, 0},
>  
> @@ -57,7 +57,7 @@
>  	{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},
>  
>  	{HID_USAGE_SENSOR_PRESSURE, 0, 100, 0},
> -	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000},
> +	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000000},
>  };
>  
>  static int pow_10(unsigned power)
> @@ -266,15 +266,15 @@ int hid_sensor_write_raw_hyst_value(struct hid_sensor_common *st,
>  /*
>   * This fuction applies the unit exponent to the scale.
>   * For example:
> - * 9.806650 ->exp:2-> val0[980]val1[665000]
> - * 9.000806 ->exp:2-> val0[900]val1[80600]
> - * 0.174535 ->exp:2-> val0[17]val1[453500]
> - * 1.001745 ->exp:0-> val0[1]val1[1745]
> - * 1.001745 ->exp:2-> val0[100]val1[174500]
> - * 1.001745 ->exp:4-> val0[10017]val1[450000]
> - * 9.806650 ->exp:-2-> val0[0]val1[98066]
> + * 9.806650000 ->exp:2-> val0[980]val1[665000000]
> + * 9.000806000 ->exp:2-> val0[900]val1[80600000]
> + * 0.174535293 ->exp:2-> val0[17]val1[453529300]
> + * 1.001745329 ->exp:0-> val0[1]val1[1745329]
> + * 1.001745329 ->exp:2-> val0[100]val1[174532900]
> + * 1.001745329 ->exp:4-> val0[10017]val1[453290000]
> + * 9.806650000 ->exp:-2-> val0[0]val1[98066500]
>   */
> -static void adjust_exponent_micro(int *val0, int *val1, int scale0,
> +static void adjust_exponent_nano(int *val0, int *val1, int scale0,
>  				  int scale1, int exp)
>  {
>  	int i;
> @@ -285,32 +285,32 @@ static void adjust_exponent_micro(int *val0, int *val1, int scale0,
>  	if (exp > 0) {
>  		*val0 = scale0 * pow_10(exp);
>  		res = 0;
> -		if (exp > 6) {
> +		if (exp > 9) {
>  			*val1 = 0;
>  			return;
>  		}
>  		for (i = 0; i < exp; ++i) {
> -			x = scale1 / pow_10(5 - i);
> +			x = scale1 / pow_10(8 - i);
>  			res += (pow_10(exp - 1 - i) * x);
> -			scale1 = scale1 % pow_10(5 - i);
> +			scale1 = scale1 % pow_10(8 - i);
>  		}
>  		*val0 += res;
>  			*val1 = scale1 * pow_10(exp);
>  	} else if (exp < 0) {
>  		exp = abs(exp);
> -		if (exp > 6) {
> +		if (exp > 9) {
>  			*val0 = *val1 = 0;
>  			return;
>  		}
>  		*val0 = scale0 / pow_10(exp);
>  		rem = scale0 % pow_10(exp);
>  		res = 0;
> -		for (i = 0; i < (6 - exp); ++i) {
> -			x = scale1 / pow_10(5 - i);
> -			res += (pow_10(5 - exp - i) * x);
> -			scale1 = scale1 % pow_10(5 - i);
> +		for (i = 0; i < (9 - exp); ++i) {
> +			x = scale1 / pow_10(8 - i);
> +			res += (pow_10(8 - exp - i) * x);
> +			scale1 = scale1 % pow_10(8 - i);
>  		}
> -		*val1 = rem * pow_10(6 - exp) + res;
> +		*val1 = rem * pow_10(9 - exp) + res;
>  	} else {
>  		*val0 = scale0;
>  		*val1 = scale1;
> @@ -332,14 +332,14 @@ int hid_sensor_format_scale(u32 usage_id,
>  			unit_conversion[i].unit == attr_info->units) {
>  			exp  = hid_sensor_convert_exponent(
>  						attr_info->unit_expo);
> -			adjust_exponent_micro(val0, val1,
> +			adjust_exponent_nano(val0, val1,
>  					unit_conversion[i].scale_val0,
>  					unit_conversion[i].scale_val1, exp);
>  			break;
>  		}
>  	}
>  
> -	return IIO_VAL_INT_PLUS_MICRO;
> +	return IIO_VAL_INT_PLUS_NANO;
>  }
>  EXPORT_SYMBOL(hid_sensor_format_scale);
>  
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] iio: hid-sensors: Increase the precision of scale
  2016-10-30 16:22 ` Jonathan Cameron
@ 2016-10-31  0:34   ` Pandruvada, Srinivas
  2016-11-05 17:52     ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Pandruvada, Srinivas @ 2016-10-31  0:34 UTC (permalink / raw)
  To: Song, Hongyan, linux-iio, jic23

T24gU3VuLCAyMDE2LTEwLTMwIGF0IDE2OjIyICswMDAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl
Og0KPiBPbiAyNS8xMC8xNiAwMjozMCwgU29uZyBIb25neWFuIHdyb3RlOg0KPiA+IA0KPiA+IFdo
aWxlIHRlc3RpbmcsIGl0IHdhcyBvYnNlcnZlZCB0aGF0IG9uIHNvbWUgcGxhdGZvcm1zIHRoZSBz
Y2FsZQ0KPiA+IHZhbHVlDQo+ID4gZnJvbSBpaW8gc3lzZnMgZm9yIGd5cm9zY29wZSBpcyBhbHdh
eXMgMCAoRS5nLiBZb2dhIDI2MCkuIFRoaXMNCj4gPiByZXN1bHRzDQo+ID4gaW4gdGhlIGZpbmFs
IGFuZ3VsYXIgdmVsb2NpdHkgY29tcG9uZW50IHZhbHVlcyB0byBiZSB6ZXJvcy4NCj4gPiANCj4g
PiBUaGlzIGlzIGNhdXNlZCBieSBpbnN1ZmZpY2llbnQgcHJlY2lzaW9uIG9mIHNjYWxlIHZhbHVl
IGRpc3BsYXllZA0KPiA+IGluIHN5c2ZzLg0KPiA+IElmIHRoZSBwcmVjaXNpb24gaXMgY2hhbmdl
ZCB0byBuYW5vIGZyb20gY3VycmVudCBtaWNybywgdGhlbiB0aGlzDQo+ID4gaXMNCj4gPiBzdWZm
aWNpZW50IHRvIGRpc3BsYXkgdGhlIHNjYWxlIHZhbHVlIG9uIHRoaXMgcGxhdGZvcm0uDQo+ID4g
U2luY2UgdGhpcyBjYW4gYmUgYSBwcm9ibGVtIGZvciBhbGwgb3RoZXIgSElEIHNlbnNvcnMsIGlu
Y3JlYXNlDQo+ID4gc2NhbGUNCj4gPiBwcmVjaXNpb24gb2YgYWxsIEhJRCBzZW5zb3JzIHRvIG5h
bm8gZnJvbSBjdXJyZW50IG1pY3JvLg0KPiA+IA0KPiA+IFJlc3VsdHMgb24gWW9nYSAyNjA6DQo+
ID4gDQo+ID4gbmFtZQkJc2NhbGUgYmVmb3JlCXNjYWxlIG5vdw0KPiA+IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gZ3lyb18zZAkJMC4wMDAwMDAJMC4w
MDAwMDAxNzQNCj4gPiBhbHMJCQkwLjAwMTAwMAkwLjAwMTAwMDAwMA0KPiA+IG1hZ25fM2QJCTAu
MDAwMDAxCTAuMDAwMDAxMDAwDQo+ID4gYWNjZWxfM2QJCTAuMDAwMDA5CTAuMDAwMDA5ODA2DQo+
ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogU29uZyBIb25neWFuIDxob25neWFuLnNvbmdAaW50ZWwu
Y29tPg0KQWNrZWQtYnk6IFNyaW5pdmFzIFBhbmRydXZhZGEgPHNyaW5pdmFzLnBhbmRydXZhZGFA
bGludXguaW50ZWwuY29tPg0KDQpIaSBKb25hdGhhbiwNCj4gSGkNCj4gDQo+IExvb2tzIHJpZ2h0
IHRvIG1lLCBTcmluaXZhcywgSSdkIGxpa2UgeW91ciBBY2sgb24gdGhpcyBpZGVhbGx5Lg0KDQpJ
IGhhdmUgYWRkZWQgbXkgQUNLLg0KDQpUaGFua3MsDQpTcmluaXZhcw0KDQo+IHRoYW5rcywNCj4g
DQo+IEpvbmF0aGFuDQo+ID4gDQo+ID4gLS0tDQo+ID4gwqAuLi4vaWlvL2NvbW1vbi9oaWQtc2Vu
c29ycy9oaWQtc2Vuc29yLWF0dHJpYnV0ZXMuYyB8IDU2DQo+ID4gKysrKysrKysrKystLS0tLS0t
LS0tLQ0KPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9u
cygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNv
cnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMgDQo+ID4gYi9kcml2ZXJzL2lpby9jb21tb24vaGlk
LXNlbnNvcnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMNCj4gPiBpbmRleCBkYzMzYzFkLi5iNWJl
ZWE1MyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNvcnMvaGlk
LXNlbnNvci1hdHRyaWJ1dGVzLmMNCj4gPiArKysgYi9kcml2ZXJzL2lpby9jb21tb24vaGlkLXNl
bnNvcnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMNCj4gPiBAQCAtMzAsMjYgKzMwLDI2IEBADQo+
ID4gwqAJdTMyIHVzYWdlX2lkOw0KPiA+IMKgCWludCB1bml0OyAvKiAwIGZvciBkZWZhdWx0IG90
aGVycyBmcm9tIEhJRCBzZW5zb3Igc3BlYyAqLw0KPiA+IMKgCWludCBzY2FsZV92YWwwOyAvKiBz
Y2FsZSwgd2hvbGUgbnVtYmVyICovDQo+ID4gLQlpbnQgc2NhbGVfdmFsMTsgLyogc2NhbGUsIGZy
YWN0aW9uIGluIG1pY3JvcyAqLw0KPiA+ICsJaW50IHNjYWxlX3ZhbDE7IC8qIHNjYWxlLCBmcmFj
dGlvbiBpbiBuYW5vcyAqLw0KPiA+IMKgfSB1bml0X2NvbnZlcnNpb25bXSA9IHsNCj4gPiAtCXtI
SURfVVNBR0VfU0VOU09SX0FDQ0VMXzNELCAwLCA5LCA4MDY2NTB9LA0KPiA+ICsJe0hJRF9VU0FH
RV9TRU5TT1JfQUNDRUxfM0QsIDAsIDksIDgwNjY1MDAwMH0sDQo+ID4gwqAJe0hJRF9VU0FHRV9T
RU5TT1JfQUNDRUxfM0QsDQo+ID4gwqAJCUhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfTUVURVJTX1BF
Ul9TRUNfU1FSRCwgMSwgMH0sDQo+ID4gwqAJe0hJRF9VU0FHRV9TRU5TT1JfQUNDRUxfM0QsDQo+
ID4gLQkJSElEX1VTQUdFX1NFTlNPUl9VTklUU19HLCA5LCA4MDY2NTB9LA0KPiA+ICsJCUhJRF9V
U0FHRV9TRU5TT1JfVU5JVFNfRywgOSwgODA2NjUwMDAwfSwNCj4gPiDCoA0KPiA+IC0Je0hJRF9V
U0FHRV9TRU5TT1JfR1lST18zRCwgMCwgMCwgMTc0NTN9LA0KPiA+ICsJe0hJRF9VU0FHRV9TRU5T
T1JfR1lST18zRCwgMCwgMCwgMTc0NTMyOTN9LA0KPiA+IMKgCXtISURfVVNBR0VfU0VOU09SX0dZ
Uk9fM0QsDQo+ID4gwqAJCUhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfUkFESUFOU19QRVJfU0VDT05E
LCAxLCAwfSwNCj4gPiDCoAl7SElEX1VTQUdFX1NFTlNPUl9HWVJPXzNELA0KPiA+IC0JCUhJRF9V
U0FHRV9TRU5TT1JfVU5JVFNfREVHUkVFU19QRVJfU0VDT05ELCAwLA0KPiA+IDE3NDUzfSwNCj4g
PiArCQlISURfVVNBR0VfU0VOU09SX1VOSVRTX0RFR1JFRVNfUEVSX1NFQ09ORCwgMCwNCj4gPiAx
NzQ1MzI5M30sDQo+ID4gwqANCj4gPiAtCXtISURfVVNBR0VfU0VOU09SX0NPTVBBU1NfM0QsIDAs
IDAsIDEwMDB9LA0KPiA+ICsJe0hJRF9VU0FHRV9TRU5TT1JfQ09NUEFTU18zRCwgMCwgMCwgMTAw
MDAwMH0sDQo+ID4gwqAJe0hJRF9VU0FHRV9TRU5TT1JfQ09NUEFTU18zRCwNCj4gPiBISURfVVNB
R0VfU0VOU09SX1VOSVRTX0dBVVNTLCAxLCAwfSwNCj4gPiDCoA0KPiA+IC0Je0hJRF9VU0FHRV9T
RU5TT1JfSU5DTElOT01FVEVSXzNELCAwLCAwLCAxNzQ1M30sDQo+ID4gKwl7SElEX1VTQUdFX1NF
TlNPUl9JTkNMSU5PTUVURVJfM0QsIDAsIDAsIDE3NDUzMjkzfSwNCj4gPiDCoAl7SElEX1VTQUdF
X1NFTlNPUl9JTkNMSU5PTUVURVJfM0QsDQo+ID4gLQkJSElEX1VTQUdFX1NFTlNPUl9VTklUU19E
RUdSRUVTLCAwLCAxNzQ1M30sDQo+ID4gKwkJSElEX1VTQUdFX1NFTlNPUl9VTklUU19ERUdSRUVT
LCAwLCAxNzQ1MzI5M30sDQo+ID4gwqAJe0hJRF9VU0FHRV9TRU5TT1JfSU5DTElOT01FVEVSXzNE
LA0KPiA+IMKgCQlISURfVVNBR0VfU0VOU09SX1VOSVRTX1JBRElBTlMsIDEsIDB9LA0KPiA+IMKg
DQo+ID4gQEAgLTU3LDcgKzU3LDcgQEANCj4gPiDCoAl7SElEX1VTQUdFX1NFTlNPUl9BTFMsIEhJ
RF9VU0FHRV9TRU5TT1JfVU5JVFNfTFVYLCAxLCAwfSwNCj4gPiDCoA0KPiA+IMKgCXtISURfVVNB
R0VfU0VOU09SX1BSRVNTVVJFLCAwLCAxMDAsIDB9LA0KPiA+IC0Je0hJRF9VU0FHRV9TRU5TT1Jf
UFJFU1NVUkUsIEhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfUEFTQ0FMLA0KPiA+IDAsIDEwMDB9LA0K
PiA+ICsJe0hJRF9VU0FHRV9TRU5TT1JfUFJFU1NVUkUsIEhJRF9VU0FHRV9TRU5TT1JfVU5JVFNf
UEFTQ0FMLA0KPiA+IDAsIDEwMDAwMDB9LA0KPiA+IMKgfTsNCj4gPiDCoA0KPiA+IMKgc3RhdGlj
IGludCBwb3dfMTAodW5zaWduZWQgcG93ZXIpDQo+ID4gQEAgLTI2NiwxNSArMjY2LDE1IEBAIGlu
dCBoaWRfc2Vuc29yX3dyaXRlX3Jhd19oeXN0X3ZhbHVlKHN0cnVjdA0KPiA+IGhpZF9zZW5zb3Jf
Y29tbW9uICpzdCwNCj4gPiDCoC8qDQo+ID4gwqAgKiBUaGlzIGZ1Y3Rpb24gYXBwbGllcyB0aGUg
dW5pdCBleHBvbmVudCB0byB0aGUgc2NhbGUuDQo+ID4gwqAgKiBGb3IgZXhhbXBsZToNCj4gPiAt
ICogOS44MDY2NTAgLT5leHA6Mi0+IHZhbDBbOTgwXXZhbDFbNjY1MDAwXQ0KPiA+IC0gKiA5LjAw
MDgwNiAtPmV4cDoyLT4gdmFsMFs5MDBddmFsMVs4MDYwMF0NCj4gPiAtICogMC4xNzQ1MzUgLT5l
eHA6Mi0+IHZhbDBbMTdddmFsMVs0NTM1MDBdDQo+ID4gLSAqIDEuMDAxNzQ1IC0+ZXhwOjAtPiB2
YWwwWzFddmFsMVsxNzQ1XQ0KPiA+IC0gKiAxLjAwMTc0NSAtPmV4cDoyLT4gdmFsMFsxMDBddmFs
MVsxNzQ1MDBdDQo+ID4gLSAqIDEuMDAxNzQ1IC0+ZXhwOjQtPiB2YWwwWzEwMDE3XXZhbDFbNDUw
MDAwXQ0KPiA+IC0gKiA5LjgwNjY1MCAtPmV4cDotMi0+IHZhbDBbMF12YWwxWzk4MDY2XQ0KPiA+
ICsgKiA5LjgwNjY1MDAwMCAtPmV4cDoyLT4gdmFsMFs5ODBddmFsMVs2NjUwMDAwMDBdDQo+ID4g
KyAqIDkuMDAwODA2MDAwIC0+ZXhwOjItPiB2YWwwWzkwMF12YWwxWzgwNjAwMDAwXQ0KPiA+ICsg
KiAwLjE3NDUzNTI5MyAtPmV4cDoyLT4gdmFsMFsxN112YWwxWzQ1MzUyOTMwMF0NCj4gPiArICog
MS4wMDE3NDUzMjkgLT5leHA6MC0+IHZhbDBbMV12YWwxWzE3NDUzMjldDQo+ID4gKyAqIDEuMDAx
NzQ1MzI5IC0+ZXhwOjItPiB2YWwwWzEwMF12YWwxWzE3NDUzMjkwMF0NCj4gPiArICogMS4wMDE3
NDUzMjkgLT5leHA6NC0+IHZhbDBbMTAwMTdddmFsMVs0NTMyOTAwMDBdDQo+ID4gKyAqIDkuODA2
NjUwMDAwIC0+ZXhwOi0yLT4gdmFsMFswXXZhbDFbOTgwNjY1MDBdDQo+ID4gwqAgKi8NCj4gPiAt
c3RhdGljIHZvaWQgYWRqdXN0X2V4cG9uZW50X21pY3JvKGludCAqdmFsMCwgaW50ICp2YWwxLCBp
bnQNCj4gPiBzY2FsZTAsDQo+ID4gK3N0YXRpYyB2b2lkIGFkanVzdF9leHBvbmVudF9uYW5vKGlu
dCAqdmFsMCwgaW50ICp2YWwxLCBpbnQgc2NhbGUwLA0KPiA+IMKgCQkJCcKgwqBpbnQgc2NhbGUx
LCBpbnQgZXhwKQ0KPiA+IMKgew0KPiA+IMKgCWludCBpOw0KPiA+IEBAIC0yODUsMzIgKzI4NSwz
MiBAQCBzdGF0aWMgdm9pZCBhZGp1c3RfZXhwb25lbnRfbWljcm8oaW50ICp2YWwwLA0KPiA+IGlu
dCAqdmFsMSwgaW50IHNjYWxlMCwNCj4gPiDCoAlpZiAoZXhwID4gMCkgew0KPiA+IMKgCQkqdmFs
MCA9IHNjYWxlMCAqIHBvd18xMChleHApOw0KPiA+IMKgCQlyZXMgPSAwOw0KPiA+IC0JCWlmIChl
eHAgPiA2KSB7DQo+ID4gKwkJaWYgKGV4cCA+IDkpIHsNCj4gPiDCoAkJCSp2YWwxID0gMDsNCj4g
PiDCoAkJCXJldHVybjsNCj4gPiDCoAkJfQ0KPiA+IMKgCQlmb3IgKGkgPSAwOyBpIDwgZXhwOyAr
K2kpIHsNCj4gPiAtCQkJeCA9IHNjYWxlMSAvIHBvd18xMCg1IC0gaSk7DQo+ID4gKwkJCXggPSBz
Y2FsZTEgLyBwb3dfMTAoOCAtIGkpOw0KPiA+IMKgCQkJcmVzICs9IChwb3dfMTAoZXhwIC0gMSAt
IGkpICogeCk7DQo+ID4gLQkJCXNjYWxlMSA9IHNjYWxlMSAlIHBvd18xMCg1IC0gaSk7DQo+ID4g
KwkJCXNjYWxlMSA9IHNjYWxlMSAlIHBvd18xMCg4IC0gaSk7DQo+ID4gwqAJCX0NCj4gPiDCoAkJ
KnZhbDAgKz0gcmVzOw0KPiA+IMKgCQkJKnZhbDEgPSBzY2FsZTEgKiBwb3dfMTAoZXhwKTsNCj4g
PiDCoAl9IGVsc2UgaWYgKGV4cCA8IDApIHsNCj4gPiDCoAkJZXhwID0gYWJzKGV4cCk7DQo+ID4g
LQkJaWYgKGV4cCA+IDYpIHsNCj4gPiArCQlpZiAoZXhwID4gOSkgew0KPiA+IMKgCQkJKnZhbDAg
PSAqdmFsMSA9IDA7DQo+ID4gwqAJCQlyZXR1cm47DQo+ID4gwqAJCX0NCj4gPiDCoAkJKnZhbDAg
PSBzY2FsZTAgLyBwb3dfMTAoZXhwKTsNCj4gPiDCoAkJcmVtID0gc2NhbGUwICUgcG93XzEwKGV4
cCk7DQo+ID4gwqAJCXJlcyA9IDA7DQo+ID4gLQkJZm9yIChpID0gMDsgaSA8ICg2IC0gZXhwKTsg
KytpKSB7DQo+ID4gLQkJCXggPSBzY2FsZTEgLyBwb3dfMTAoNSAtIGkpOw0KPiA+IC0JCQlyZXMg
Kz0gKHBvd18xMCg1IC0gZXhwIC0gaSkgKiB4KTsNCj4gPiAtCQkJc2NhbGUxID0gc2NhbGUxICUg
cG93XzEwKDUgLSBpKTsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgKDkgLSBleHApOyArK2kpIHsN
Cj4gPiArCQkJeCA9IHNjYWxlMSAvIHBvd18xMCg4IC0gaSk7DQo+ID4gKwkJCXJlcyArPSAocG93
XzEwKDggLSBleHAgLSBpKSAqIHgpOw0KPiA+ICsJCQlzY2FsZTEgPSBzY2FsZTEgJSBwb3dfMTAo
OCAtIGkpOw0KPiA+IMKgCQl9DQo+ID4gLQkJKnZhbDEgPSByZW0gKiBwb3dfMTAoNiAtIGV4cCkg
KyByZXM7DQo+ID4gKwkJKnZhbDEgPSByZW0gKiBwb3dfMTAoOSAtIGV4cCkgKyByZXM7DQo+ID4g
wqAJfSBlbHNlIHsNCj4gPiDCoAkJKnZhbDAgPSBzY2FsZTA7DQo+ID4gwqAJCSp2YWwxID0gc2Nh
bGUxOw0KPiA+IEBAIC0zMzIsMTQgKzMzMiwxNCBAQCBpbnQgaGlkX3NlbnNvcl9mb3JtYXRfc2Nh
bGUodTMyIHVzYWdlX2lkLA0KPiA+IMKgCQkJdW5pdF9jb252ZXJzaW9uW2ldLnVuaXQgPT0gYXR0
cl9pbmZvLQ0KPiA+ID51bml0cykgew0KPiA+IMKgCQkJZXhwwqDCoD0gaGlkX3NlbnNvcl9jb252
ZXJ0X2V4cG9uZW50KA0KPiA+IMKgCQkJCQkJYXR0cl9pbmZvLQ0KPiA+ID51bml0X2V4cG8pOw0K
PiA+IC0JCQlhZGp1c3RfZXhwb25lbnRfbWljcm8odmFsMCwgdmFsMSwNCj4gPiArCQkJYWRqdXN0
X2V4cG9uZW50X25hbm8odmFsMCwgdmFsMSwNCj4gPiDCoAkJCQkJdW5pdF9jb252ZXJzaW9uW2ld
LnNjYWxlX3YNCj4gPiBhbDAsDQo+ID4gwqAJCQkJCXVuaXRfY29udmVyc2lvbltpXS5zY2FsZV92
DQo+ID4gYWwxLCBleHApOw0KPiA+IMKgCQkJYnJlYWs7DQo+ID4gwqAJCX0NCj4gPiDCoAl9DQo+
ID4gwqANCj4gPiAtCXJldHVybiBJSU9fVkFMX0lOVF9QTFVTX01JQ1JPOw0KPiA+ICsJcmV0dXJu
IElJT19WQUxfSU5UX1BMVVNfTkFOTzsNCj4gPiDCoH0NCj4gPiDCoEVYUE9SVF9TWU1CT0woaGlk
X3NlbnNvcl9mb3JtYXRfc2NhbGUpOw0KPiA+IMKgDQo+ID4g

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] iio: hid-sensors: Increase the precision of scale
  2016-10-31  0:34   ` Pandruvada, Srinivas
@ 2016-11-05 17:52     ` Jonathan Cameron
  0 siblings, 0 replies; 4+ messages in thread
From: Jonathan Cameron @ 2016-11-05 17:52 UTC (permalink / raw)
  To: Pandruvada, Srinivas, Song, Hongyan, linux-iio

On 31/10/16 00:34, Pandruvada, Srinivas wrote:
> On Sun, 2016-10-30 at 16:22 +0000, Jonathan Cameron wrote:
>> On 25/10/16 02:30, Song Hongyan wrote:
>>>
>>> While testing, it was observed that on some platforms the scale
>>> value
>>> from iio sysfs for gyroscope is always 0 (E.g. Yoga 260). This
>>> results
>>> in the final angular velocity component values to be zeros.
>>>
>>> This is caused by insufficient precision of scale value displayed
>>> in sysfs.
>>> If the precision is changed to nano from current micro, then this
>>> is
>>> sufficient to display the scale value on this platform.
>>> Since this can be a problem for all other HID sensors, increase
>>> scale
>>> precision of all HID sensors to nano from current micro.
>>>
>>> Results on Yoga 260:
>>>
>>> name		scale before	scale now
>>> --------------------------------------------
>>> gyro_3d		0.000000	0.000000174
>>> als			0.001000	0.001000000
>>> magn_3d		0.000001	0.000001000
>>> accel_3d		0.000009	0.000009806
>>>
>>> Signed-off-by: Song Hongyan <hongyan.song@intel.com>
> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> 
> Hi Jonathan,
>> Hi
>>
>> Looks right to me, Srinivas, I'd like your Ack on this ideally.
> 
> I have added my ACK.
> 
Again I've amended the patch title a touch to make it clear this is
a fix we really want in stable.

Applied to the togreg branch of iio.git and marked for stable.

Thanks,

Jonathan
> Thanks,
> Srinivas
> 
>> thanks,
>>
>> Jonathan
>>>
>>> ---
>>>  .../iio/common/hid-sensors/hid-sensor-attributes.c | 56
>>> +++++++++++-----------
>>>  1 file changed, 28 insertions(+), 28 deletions(-)
>>>
>>> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c 
>>> b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
>>> index dc33c1d..b5beea53 100644
>>> --- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
>>> +++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
>>> @@ -30,26 +30,26 @@
>>>  	u32 usage_id;
>>>  	int unit; /* 0 for default others from HID sensor spec */
>>>  	int scale_val0; /* scale, whole number */
>>> -	int scale_val1; /* scale, fraction in micros */
>>> +	int scale_val1; /* scale, fraction in nanos */
>>>  } unit_conversion[] = {
>>> -	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650},
>>> +	{HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000},
>>>  	{HID_USAGE_SENSOR_ACCEL_3D,
>>>  		HID_USAGE_SENSOR_UNITS_METERS_PER_SEC_SQRD, 1, 0},
>>>  	{HID_USAGE_SENSOR_ACCEL_3D,
>>> -		HID_USAGE_SENSOR_UNITS_G, 9, 806650},
>>> +		HID_USAGE_SENSOR_UNITS_G, 9, 806650000},
>>>  
>>> -	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453},
>>> +	{HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293},
>>>  	{HID_USAGE_SENSOR_GYRO_3D,
>>>  		HID_USAGE_SENSOR_UNITS_RADIANS_PER_SECOND, 1, 0},
>>>  	{HID_USAGE_SENSOR_GYRO_3D,
>>> -		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0,
>>> 17453},
>>> +		HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0,
>>> 17453293},
>>>  
>>> -	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000},
>>> +	{HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000},
>>>  	{HID_USAGE_SENSOR_COMPASS_3D,
>>> HID_USAGE_SENSOR_UNITS_GAUSS, 1, 0},
>>>  
>>> -	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453},
>>> +	{HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293},
>>>  	{HID_USAGE_SENSOR_INCLINOMETER_3D,
>>> -		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453},
>>> +		HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293},
>>>  	{HID_USAGE_SENSOR_INCLINOMETER_3D,
>>>  		HID_USAGE_SENSOR_UNITS_RADIANS, 1, 0},
>>>  
>>> @@ -57,7 +57,7 @@
>>>  	{HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0},
>>>  
>>>  	{HID_USAGE_SENSOR_PRESSURE, 0, 100, 0},
>>> -	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL,
>>> 0, 1000},
>>> +	{HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL,
>>> 0, 1000000},
>>>  };
>>>  
>>>  static int pow_10(unsigned power)
>>> @@ -266,15 +266,15 @@ int hid_sensor_write_raw_hyst_value(struct
>>> hid_sensor_common *st,
>>>  /*
>>>   * This fuction applies the unit exponent to the scale.
>>>   * For example:
>>> - * 9.806650 ->exp:2-> val0[980]val1[665000]
>>> - * 9.000806 ->exp:2-> val0[900]val1[80600]
>>> - * 0.174535 ->exp:2-> val0[17]val1[453500]
>>> - * 1.001745 ->exp:0-> val0[1]val1[1745]
>>> - * 1.001745 ->exp:2-> val0[100]val1[174500]
>>> - * 1.001745 ->exp:4-> val0[10017]val1[450000]
>>> - * 9.806650 ->exp:-2-> val0[0]val1[98066]
>>> + * 9.806650000 ->exp:2-> val0[980]val1[665000000]
>>> + * 9.000806000 ->exp:2-> val0[900]val1[80600000]
>>> + * 0.174535293 ->exp:2-> val0[17]val1[453529300]
>>> + * 1.001745329 ->exp:0-> val0[1]val1[1745329]
>>> + * 1.001745329 ->exp:2-> val0[100]val1[174532900]
>>> + * 1.001745329 ->exp:4-> val0[10017]val1[453290000]
>>> + * 9.806650000 ->exp:-2-> val0[0]val1[98066500]
>>>   */
>>> -static void adjust_exponent_micro(int *val0, int *val1, int
>>> scale0,
>>> +static void adjust_exponent_nano(int *val0, int *val1, int scale0,
>>>  				  int scale1, int exp)
>>>  {
>>>  	int i;
>>> @@ -285,32 +285,32 @@ static void adjust_exponent_micro(int *val0,
>>> int *val1, int scale0,
>>>  	if (exp > 0) {
>>>  		*val0 = scale0 * pow_10(exp);
>>>  		res = 0;
>>> -		if (exp > 6) {
>>> +		if (exp > 9) {
>>>  			*val1 = 0;
>>>  			return;
>>>  		}
>>>  		for (i = 0; i < exp; ++i) {
>>> -			x = scale1 / pow_10(5 - i);
>>> +			x = scale1 / pow_10(8 - i);
>>>  			res += (pow_10(exp - 1 - i) * x);
>>> -			scale1 = scale1 % pow_10(5 - i);
>>> +			scale1 = scale1 % pow_10(8 - i);
>>>  		}
>>>  		*val0 += res;
>>>  			*val1 = scale1 * pow_10(exp);
>>>  	} else if (exp < 0) {
>>>  		exp = abs(exp);
>>> -		if (exp > 6) {
>>> +		if (exp > 9) {
>>>  			*val0 = *val1 = 0;
>>>  			return;
>>>  		}
>>>  		*val0 = scale0 / pow_10(exp);
>>>  		rem = scale0 % pow_10(exp);
>>>  		res = 0;
>>> -		for (i = 0; i < (6 - exp); ++i) {
>>> -			x = scale1 / pow_10(5 - i);
>>> -			res += (pow_10(5 - exp - i) * x);
>>> -			scale1 = scale1 % pow_10(5 - i);
>>> +		for (i = 0; i < (9 - exp); ++i) {
>>> +			x = scale1 / pow_10(8 - i);
>>> +			res += (pow_10(8 - exp - i) * x);
>>> +			scale1 = scale1 % pow_10(8 - i);
>>>  		}
>>> -		*val1 = rem * pow_10(6 - exp) + res;
>>> +		*val1 = rem * pow_10(9 - exp) + res;
>>>  	} else {
>>>  		*val0 = scale0;
>>>  		*val1 = scale1;
>>> @@ -332,14 +332,14 @@ int hid_sensor_format_scale(u32 usage_id,
>>>  			unit_conversion[i].unit == attr_info-
>>>> units) {
>>>  			exp  = hid_sensor_convert_exponent(
>>>  						attr_info-
>>>> unit_expo);
>>> -			adjust_exponent_micro(val0, val1,
>>> +			adjust_exponent_nano(val0, val1,
>>>  					unit_conversion[i].scale_v
>>> al0,
>>>  					unit_conversion[i].scale_v
>>> al1, exp);
>>>  			break;
>>>  		}
>>>  	}
>>>  
>>> -	return IIO_VAL_INT_PLUS_MICRO;
>>> +	return IIO_VAL_INT_PLUS_NANO;
>>>  }
>>>  EXPORT_SYMBOL(hid_sensor_format_scale);
>>>  


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-05 17:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-25  1:30 [PATCH] iio: hid-sensors: Increase the precision of scale Song Hongyan
2016-10-30 16:22 ` Jonathan Cameron
2016-10-31  0:34   ` Pandruvada, Srinivas
2016-11-05 17:52     ` Jonathan Cameron

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.