linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 1/2] iio: Add channel for Gravity
@ 2016-12-07 10:14 Song Hongyan
  2016-12-07 10:14 ` [RFC PATCH 2/2] iio: Add gravity sensor support Song Hongyan
  2016-12-30 10:09 ` [RFC PATCH 1/2] iio: Add channel for Gravity Jonathan Cameron
  0 siblings, 2 replies; 5+ messages in thread
From: Song Hongyan @ 2016-12-07 10:14 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, jikos, srinivas.pandruvada, Song Hongyan

Add new channel types support for gravity sensor.

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
---
 Documentation/ABI/testing/sysfs-bus-iio | 11 +++++++++++
 drivers/iio/industrialio-core.c         |  1 +
 include/uapi/linux/iio/types.h          |  1 +
 tools/iio/iio_event_monitor.c           |  2 ++
 4 files changed, 15 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index fee35c0..60b7406 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -170,6 +170,17 @@ Description:
 		Has all of the equivalent parameters as per voltageY. Units
 		after application of scale and offset are m/s^2.
 
+
+What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_x_raw
+What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_y_raw
+What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_z_raw
+KernelVersion:	4.11
+Contact:	linux-iio@vger.kernel.org
+Description:
+		Gravity in direction x, y or z (may be arbitrarily assigned
+		but should match other such assignments on device).
+		Units after application of scale and offset are m/s^2.
+
 What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw
 What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw
 What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index fc340ed..72fc96a 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -81,6 +81,7 @@ struct bus_type iio_bus_type = {
 	[IIO_PH] = "ph",
 	[IIO_UVINDEX] = "uvindex",
 	[IIO_ELECTRICALCONDUCTIVITY] = "electricalconductivity",
+	[IIO_GRAVITY]  = "gravity",
 };
 
 static const char * const iio_modifier_names[] = {
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
index 22e5e58..d3f7ba7 100644
--- a/include/uapi/linux/iio/types.h
+++ b/include/uapi/linux/iio/types.h
@@ -40,6 +40,7 @@ enum iio_chan_type {
 	IIO_PH,
 	IIO_UVINDEX,
 	IIO_ELECTRICALCONDUCTIVITY,
+	IIO_GRAVITY,
 };
 
 enum iio_modifier {
diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c
index d9b7e0f..b61245e 100644
--- a/tools/iio/iio_event_monitor.c
+++ b/tools/iio/iio_event_monitor.c
@@ -57,6 +57,7 @@
 	[IIO_RESISTANCE] = "resistance",
 	[IIO_PH] = "ph",
 	[IIO_UVINDEX] = "uvindex",
+	[IIO_GRAVITY] = "gravity",
 };
 
 static const char * const iio_ev_type_text[] = {
@@ -149,6 +150,7 @@ static bool event_is_known(struct iio_event_data *event)
 	case IIO_RESISTANCE:
 	case IIO_PH:
 	case IIO_UVINDEX:
+	case IIO_GRAVITY:
 		break;
 	default:
 		return false;
-- 
1.9.1

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

* [RFC PATCH 2/2] iio: Add gravity sensor support
  2016-12-07 10:14 [RFC PATCH 1/2] iio: Add channel for Gravity Song Hongyan
@ 2016-12-07 10:14 ` Song Hongyan
  2016-12-30 10:28   ` Jonathan Cameron
  2016-12-30 10:09 ` [RFC PATCH 1/2] iio: Add channel for Gravity Jonathan Cameron
  1 sibling, 1 reply; 5+ messages in thread
From: Song Hongyan @ 2016-12-07 10:14 UTC (permalink / raw)
  To: linux-iio; +Cc: jic23, jikos, srinivas.pandruvada, Song Hongyan

Gravity sensor and accelerometer have similar channels and
share channel usage ids. So the most of the code for accel_3d
can be reused.

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
---
 drivers/iio/accel/hid-sensor-accel-3d.c | 74 +++++++++++++++++++++++++++------
 include/linux/hid-sensor-ids.h          |  3 ++
 2 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c
index ab1e238..9edd574 100644
--- a/drivers/iio/accel/hid-sensor-accel-3d.c
+++ b/drivers/iio/accel/hid-sensor-accel-3d.c
@@ -90,6 +90,41 @@ struct accel_3d_state {
 	}
 };
 
+/* Channel definitions */
+static const struct iio_chan_spec gravity_channels[] = {
+	{
+		.type = IIO_GRAVITY,
+		.modified = 1,
+		.channel2 = IIO_MOD_X,
+		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+		BIT(IIO_CHAN_INFO_SCALE) |
+		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+		BIT(IIO_CHAN_INFO_HYSTERESIS),
+		.scan_index = CHANNEL_SCAN_INDEX_X,
+	}, {
+		.type = IIO_GRAVITY,
+		.modified = 1,
+		.channel2 = IIO_MOD_Y,
+		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+		BIT(IIO_CHAN_INFO_SCALE) |
+		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+		BIT(IIO_CHAN_INFO_HYSTERESIS),
+		.scan_index = CHANNEL_SCAN_INDEX_Y,
+	}, {
+		.type = IIO_GRAVITY,
+		.modified = 1,
+		.channel2 = IIO_MOD_Z,
+		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+		BIT(IIO_CHAN_INFO_SCALE) |
+		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+		BIT(IIO_CHAN_INFO_HYSTERESIS),
+		.scan_index = CHANNEL_SCAN_INDEX_Z,
+	}
+};
+
 /* Adjust channel real bits based on report descriptor */
 static void accel_3d_adjust_channel_bit_mask(struct iio_chan_spec *channels,
 						int channel, int size)
@@ -111,6 +146,8 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
 	int report_id = -1;
 	u32 address;
 	int ret_type;
+	struct hid_sensor_hub_device *hsdev =
+					accel_state->common_attributes.hsdev;
 
 	*val = 0;
 	*val2 = 0;
@@ -122,8 +159,7 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
 		if (report_id >= 0)
 			*val = sensor_hub_input_attr_get_raw_value(
 					accel_state->common_attributes.hsdev,
-					HID_USAGE_SENSOR_ACCEL_3D, address,
-					report_id,
+					hsdev->usage, address, report_id,
 					SENSOR_HUB_SYNC);
 		else {
 			*val = 0;
@@ -272,7 +308,7 @@ static int accel_3d_parse_report(struct platform_device *pdev,
 			st->accel[2].index, st->accel[2].report_id);
 
 	st->scale_precision = hid_sensor_format_scale(
-				HID_USAGE_SENSOR_ACCEL_3D,
+				hsdev->usage,
 				&st->accel[CHANNEL_SCAN_INDEX_X],
 				&st->scale_pre_decml, &st->scale_post_decml);
 
@@ -295,9 +331,12 @@ static int accel_3d_parse_report(struct platform_device *pdev,
 static int hid_accel_3d_probe(struct platform_device *pdev)
 {
 	int ret = 0;
-	static const char *name = "accel_3d";
+	static const char *name;
 	struct iio_dev *indio_dev;
 	struct accel_3d_state *accel_state;
+	const struct iio_chan_spec *channel_spec;
+	int channel_size;
+
 	struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
 
 	indio_dev = devm_iio_device_alloc(&pdev->dev,
@@ -311,24 +350,30 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
 	accel_state->common_attributes.hsdev = hsdev;
 	accel_state->common_attributes.pdev = pdev;
 
-	ret = hid_sensor_parse_common_attributes(hsdev,
-					HID_USAGE_SENSOR_ACCEL_3D,
+	if (hsdev->usage == HID_USAGE_SENSOR_ACCEL_3D) {
+		name = "accel_3d";
+		channel_spec = accel_3d_channels;
+		channel_size = sizeof(accel_3d_channels);
+	} else {
+		name = "gravity";
+		channel_spec = gravity_channels;
+		channel_size = sizeof(gravity_channels);
+	}
+	ret = hid_sensor_parse_common_attributes(hsdev, hsdev->usage,
 					&accel_state->common_attributes);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to setup common attributes\n");
 		return ret;
 	}
+	indio_dev->channels = kmemdup(channel_spec, channel_size, GFP_KERNEL);
 
-	indio_dev->channels = kmemdup(accel_3d_channels,
-				      sizeof(accel_3d_channels), GFP_KERNEL);
 	if (!indio_dev->channels) {
 		dev_err(&pdev->dev, "failed to duplicate channels\n");
 		return -ENOMEM;
 	}
-
 	ret = accel_3d_parse_report(pdev, hsdev,
-				    (struct iio_chan_spec *)indio_dev->channels,
-				    HID_USAGE_SENSOR_ACCEL_3D, accel_state);
+				(struct iio_chan_spec *)indio_dev->channels,
+				hsdev->usage, accel_state);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to setup attributes\n");
 		goto error_free_dev_mem;
@@ -363,7 +408,7 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
 	accel_state->callbacks.send_event = accel_3d_proc_event;
 	accel_state->callbacks.capture_sample = accel_3d_capture_sample;
 	accel_state->callbacks.pdev = pdev;
-	ret = sensor_hub_register_callback(hsdev, HID_USAGE_SENSOR_ACCEL_3D,
+	ret = sensor_hub_register_callback(hsdev, hsdev->usage,
 					&accel_state->callbacks);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "callback reg failed\n");
@@ -390,7 +435,7 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
 	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
 	struct accel_3d_state *accel_state = iio_priv(indio_dev);
 
-	sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_ACCEL_3D);
+	sensor_hub_remove_callback(hsdev, hsdev->usage);
 	iio_device_unregister(indio_dev);
 	hid_sensor_remove_trigger(&accel_state->common_attributes);
 	iio_triggered_buffer_cleanup(indio_dev);
@@ -404,6 +449,9 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
 		/* Format: HID-SENSOR-usage_id_in_hex_lowercase */
 		.name = "HID-SENSOR-200073",
 	},
+	{	/* gravity sensor */
+		.name = "HID-SENSOR-20007b",
+	},
 	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(platform, hid_accel_3d_ids);
diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h
index f2ee90a..b6778fd2 100644
--- a/include/linux/hid-sensor-ids.h
+++ b/include/linux/hid-sensor-ids.h
@@ -52,6 +52,9 @@
 #define HID_USAGE_SENSOR_ANGL_VELOCITY_Y_AXIS			0x200458
 #define HID_USAGE_SENSOR_ANGL_VELOCITY_Z_AXIS			0x200459
 
+/* Gravity vector */
+#define HID_USAGE_SENSOR_GRAVITY_VECTOR				0x20007B
+
 /* ORIENTATION: Compass 3D: (200083) */
 #define HID_USAGE_SENSOR_COMPASS_3D				0x200083
 #define HID_USAGE_SENSOR_DATA_ORIENTATION			0x200470
-- 
1.9.1

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

* Re: [RFC PATCH 1/2] iio: Add channel for Gravity
  2016-12-07 10:14 [RFC PATCH 1/2] iio: Add channel for Gravity Song Hongyan
  2016-12-07 10:14 ` [RFC PATCH 2/2] iio: Add gravity sensor support Song Hongyan
@ 2016-12-30 10:09 ` Jonathan Cameron
  1 sibling, 0 replies; 5+ messages in thread
From: Jonathan Cameron @ 2016-12-30 10:09 UTC (permalink / raw)
  To: Song Hongyan, linux-iio; +Cc: jikos, srinivas.pandruvada

On 07/12/16 10:14, Song Hongyan wrote:
> Add new channel types support for gravity sensor.
> 
> Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Firstly, sorry I took so long to get to this. It just missed my last catch up session before end of the year mess got in the way.

Anyhow this looks fine to me and I'm happy to take it once any last corners are sorted
in patch 2.
> ---
>  Documentation/ABI/testing/sysfs-bus-iio | 11 +++++++++++
>  drivers/iio/industrialio-core.c         |  1 +
>  include/uapi/linux/iio/types.h          |  1 +
>  tools/iio/iio_event_monitor.c           |  2 ++
>  4 files changed, 15 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
> index fee35c0..60b7406 100644
> --- a/Documentation/ABI/testing/sysfs-bus-iio
> +++ b/Documentation/ABI/testing/sysfs-bus-iio
> @@ -170,6 +170,17 @@ Description:
>  		Has all of the equivalent parameters as per voltageY. Units
>  		after application of scale and offset are m/s^2.
>  
> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_x_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_y_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_gravity_z_raw
> +KernelVersion:	4.11
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		Gravity in direction x, y or z (may be arbitrarily assigned
> +		but should match other such assignments on device).
> +		Units after application of scale and offset are m/s^2.
> +
>  What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw
>  What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw
>  What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index fc340ed..72fc96a 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -81,6 +81,7 @@ struct bus_type iio_bus_type = {
>  	[IIO_PH] = "ph",
>  	[IIO_UVINDEX] = "uvindex",
>  	[IIO_ELECTRICALCONDUCTIVITY] = "electricalconductivity",
> +	[IIO_GRAVITY]  = "gravity",
>  };
>  
>  static const char * const iio_modifier_names[] = {
> diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
> index 22e5e58..d3f7ba7 100644
> --- a/include/uapi/linux/iio/types.h
> +++ b/include/uapi/linux/iio/types.h
> @@ -40,6 +40,7 @@ enum iio_chan_type {
>  	IIO_PH,
>  	IIO_UVINDEX,
>  	IIO_ELECTRICALCONDUCTIVITY,
> +	IIO_GRAVITY,
>  };
>  
>  enum iio_modifier {
> diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c
> index d9b7e0f..b61245e 100644
> --- a/tools/iio/iio_event_monitor.c
> +++ b/tools/iio/iio_event_monitor.c
> @@ -57,6 +57,7 @@
>  	[IIO_RESISTANCE] = "resistance",
>  	[IIO_PH] = "ph",
>  	[IIO_UVINDEX] = "uvindex",
> +	[IIO_GRAVITY] = "gravity",
>  };
>  
>  static const char * const iio_ev_type_text[] = {
> @@ -149,6 +150,7 @@ static bool event_is_known(struct iio_event_data *event)
>  	case IIO_RESISTANCE:
>  	case IIO_PH:
>  	case IIO_UVINDEX:
> +	case IIO_GRAVITY:
>  		break;
>  	default:
>  		return false;
> 


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

* Re: [RFC PATCH 2/2] iio: Add gravity sensor support
  2016-12-07 10:14 ` [RFC PATCH 2/2] iio: Add gravity sensor support Song Hongyan
@ 2016-12-30 10:28   ` Jonathan Cameron
  2016-12-30 17:27     ` Pandruvada, Srinivas
  0 siblings, 1 reply; 5+ messages in thread
From: Jonathan Cameron @ 2016-12-30 10:28 UTC (permalink / raw)
  To: Song Hongyan, linux-iio; +Cc: jikos, srinivas.pandruvada

On 07/12/16 10:14, Song Hongyan wrote:
> Gravity sensor and accelerometer have similar channels and
> share channel usage ids. So the most of the code for accel_3d
> can be reused.
I would like to have seen a reference to the source for the IDs in here. Took
me a little while to confirm these were no officially assigned (rather than in the
reserved space).  I found them in:
http://www.usb.org/developers/hidpage/HUTRR59_-_Usages_for_Wearables.pdf

Also, perhaps a reference to a device that supports this?  Would be useful to give
us an idea of how new it is for the purposes of distribution kernel back ports etc.

I'd also like an Ack for this from Srinivas if possible.

These are computed values presumably using various other sensors to separate out the
gravity - I guess putting it in the acceleration modules makes sense rather than anywhere
else.

So looks fine to me. Only real request for future on this sort of patch is to provide
a little more background information.

Thanks,

Jonathan
> 
> Signed-off-by: Song Hongyan <hongyan.song@intel.com>
> ---
>  drivers/iio/accel/hid-sensor-accel-3d.c | 74 +++++++++++++++++++++++++++------
>  include/linux/hid-sensor-ids.h          |  3 ++
>  2 files changed, 64 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c
> index ab1e238..9edd574 100644
> --- a/drivers/iio/accel/hid-sensor-accel-3d.c
> +++ b/drivers/iio/accel/hid-sensor-accel-3d.c
> @@ -90,6 +90,41 @@ struct accel_3d_state {
>  	}
>  };
>  
> +/* Channel definitions */
> +static const struct iio_chan_spec gravity_channels[] = {
> +	{
> +		.type = IIO_GRAVITY,
> +		.modified = 1,
> +		.channel2 = IIO_MOD_X,
> +		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> +		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
> +		BIT(IIO_CHAN_INFO_SCALE) |
> +		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
> +		BIT(IIO_CHAN_INFO_HYSTERESIS),
> +		.scan_index = CHANNEL_SCAN_INDEX_X,
> +	}, {
> +		.type = IIO_GRAVITY,
> +		.modified = 1,
> +		.channel2 = IIO_MOD_Y,
> +		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> +		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
> +		BIT(IIO_CHAN_INFO_SCALE) |
> +		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
> +		BIT(IIO_CHAN_INFO_HYSTERESIS),
> +		.scan_index = CHANNEL_SCAN_INDEX_Y,
> +	}, {
> +		.type = IIO_GRAVITY,
> +		.modified = 1,
> +		.channel2 = IIO_MOD_Z,
> +		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> +		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
> +		BIT(IIO_CHAN_INFO_SCALE) |
> +		BIT(IIO_CHAN_INFO_SAMP_FREQ) |
> +		BIT(IIO_CHAN_INFO_HYSTERESIS),
> +		.scan_index = CHANNEL_SCAN_INDEX_Z,
> +	}
> +};
> +
>  /* Adjust channel real bits based on report descriptor */
>  static void accel_3d_adjust_channel_bit_mask(struct iio_chan_spec *channels,
>  						int channel, int size)
> @@ -111,6 +146,8 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
>  	int report_id = -1;
>  	u32 address;
>  	int ret_type;
> +	struct hid_sensor_hub_device *hsdev =
> +					accel_state->common_attributes.hsdev;
>  
>  	*val = 0;
>  	*val2 = 0;
> @@ -122,8 +159,7 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
>  		if (report_id >= 0)
>  			*val = sensor_hub_input_attr_get_raw_value(
>  					accel_state->common_attributes.hsdev,
> -					HID_USAGE_SENSOR_ACCEL_3D, address,
> -					report_id,
> +					hsdev->usage, address, report_id,
>  					SENSOR_HUB_SYNC);
>  		else {
>  			*val = 0;
> @@ -272,7 +308,7 @@ static int accel_3d_parse_report(struct platform_device *pdev,
>  			st->accel[2].index, st->accel[2].report_id);
>  
>  	st->scale_precision = hid_sensor_format_scale(
> -				HID_USAGE_SENSOR_ACCEL_3D,
> +				hsdev->usage,
>  				&st->accel[CHANNEL_SCAN_INDEX_X],
>  				&st->scale_pre_decml, &st->scale_post_decml);
>  
> @@ -295,9 +331,12 @@ static int accel_3d_parse_report(struct platform_device *pdev,
>  static int hid_accel_3d_probe(struct platform_device *pdev)
>  {
>  	int ret = 0;
> -	static const char *name = "accel_3d";
> +	static const char *name;
>  	struct iio_dev *indio_dev;
>  	struct accel_3d_state *accel_state;
> +	const struct iio_chan_spec *channel_spec;
> +	int channel_size;
> +
>  	struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
>  
>  	indio_dev = devm_iio_device_alloc(&pdev->dev,
> @@ -311,24 +350,30 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
>  	accel_state->common_attributes.hsdev = hsdev;
>  	accel_state->common_attributes.pdev = pdev;
>  
> -	ret = hid_sensor_parse_common_attributes(hsdev,
> -					HID_USAGE_SENSOR_ACCEL_3D,
> +	if (hsdev->usage == HID_USAGE_SENSOR_ACCEL_3D) {
> +		name = "accel_3d";
> +		channel_spec = accel_3d_channels;
> +		channel_size = sizeof(accel_3d_channels);
> +	} else {
> +		name = "gravity";
> +		channel_spec = gravity_channels;
> +		channel_size = sizeof(gravity_channels);
> +	}
> +	ret = hid_sensor_parse_common_attributes(hsdev, hsdev->usage,
>  					&accel_state->common_attributes);
>  	if (ret) {
>  		dev_err(&pdev->dev, "failed to setup common attributes\n");
>  		return ret;
>  	}
> +	indio_dev->channels = kmemdup(channel_spec, channel_size, GFP_KERNEL);
>  
> -	indio_dev->channels = kmemdup(accel_3d_channels,
> -				      sizeof(accel_3d_channels), GFP_KERNEL);
>  	if (!indio_dev->channels) {
>  		dev_err(&pdev->dev, "failed to duplicate channels\n");
>  		return -ENOMEM;
>  	}
> -
>  	ret = accel_3d_parse_report(pdev, hsdev,
> -				    (struct iio_chan_spec *)indio_dev->channels,
> -				    HID_USAGE_SENSOR_ACCEL_3D, accel_state);
> +				(struct iio_chan_spec *)indio_dev->channels,
> +				hsdev->usage, accel_state);
>  	if (ret) {
>  		dev_err(&pdev->dev, "failed to setup attributes\n");
>  		goto error_free_dev_mem;
> @@ -363,7 +408,7 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
>  	accel_state->callbacks.send_event = accel_3d_proc_event;
>  	accel_state->callbacks.capture_sample = accel_3d_capture_sample;
>  	accel_state->callbacks.pdev = pdev;
> -	ret = sensor_hub_register_callback(hsdev, HID_USAGE_SENSOR_ACCEL_3D,
> +	ret = sensor_hub_register_callback(hsdev, hsdev->usage,
>  					&accel_state->callbacks);
>  	if (ret < 0) {
>  		dev_err(&pdev->dev, "callback reg failed\n");
> @@ -390,7 +435,7 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
>  	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>  	struct accel_3d_state *accel_state = iio_priv(indio_dev);
>  
> -	sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_ACCEL_3D);
> +	sensor_hub_remove_callback(hsdev, hsdev->usage);
>  	iio_device_unregister(indio_dev);
>  	hid_sensor_remove_trigger(&accel_state->common_attributes);
>  	iio_triggered_buffer_cleanup(indio_dev);
> @@ -404,6 +449,9 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
>  		/* Format: HID-SENSOR-usage_id_in_hex_lowercase */
>  		.name = "HID-SENSOR-200073",
>  	},
> +	{	/* gravity sensor */
> +		.name = "HID-SENSOR-20007b",
> +	},
>  	{ /* sentinel */ }
>  };
>  MODULE_DEVICE_TABLE(platform, hid_accel_3d_ids);
> diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h
> index f2ee90a..b6778fd2 100644
> --- a/include/linux/hid-sensor-ids.h
> +++ b/include/linux/hid-sensor-ids.h
> @@ -52,6 +52,9 @@
>  #define HID_USAGE_SENSOR_ANGL_VELOCITY_Y_AXIS			0x200458
>  #define HID_USAGE_SENSOR_ANGL_VELOCITY_Z_AXIS			0x200459
>  
> +/* Gravity vector */
> +#define HID_USAGE_SENSOR_GRAVITY_VECTOR				0x20007B
> +
>  /* ORIENTATION: Compass 3D: (200083) */
>  #define HID_USAGE_SENSOR_COMPASS_3D				0x200083
>  #define HID_USAGE_SENSOR_DATA_ORIENTATION			0x200470
> 


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

* Re: [RFC PATCH 2/2] iio: Add gravity sensor support
  2016-12-30 10:28   ` Jonathan Cameron
@ 2016-12-30 17:27     ` Pandruvada, Srinivas
  0 siblings, 0 replies; 5+ messages in thread
From: Pandruvada, Srinivas @ 2016-12-30 17:27 UTC (permalink / raw)
  To: Song, Hongyan, linux-iio@vger.kernel.org, jic23@kernel.org
  Cc: jikos@kernel.org

T24gRnJpLCAyMDE2LTEyLTMwIGF0IDEwOjI4ICswMDAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl
Og0KPiBPbiAwNy8xMi8xNiAxMDoxNCwgU29uZyBIb25neWFuIHdyb3RlOg0KPiA+IA0KPiA+IEdy
YXZpdHkgc2Vuc29yIGFuZCBhY2NlbGVyb21ldGVyIGhhdmUgc2ltaWxhciBjaGFubmVscyBhbmQN
Cj4gPiBzaGFyZSBjaGFubmVsIHVzYWdlIGlkcy4gU28gdGhlIG1vc3Qgb2YgdGhlIGNvZGUgZm9y
IGFjY2VsXzNkDQo+ID4gY2FuIGJlIHJldXNlZC4NCj4gSSB3b3VsZCBsaWtlIHRvIGhhdmUgc2Vl
biBhIHJlZmVyZW5jZSB0byB0aGUgc291cmNlIGZvciB0aGUgSURzIGluDQo+IGhlcmUuIFRvb2sN
Cj4gbWUgYSBsaXR0bGUgd2hpbGUgdG8gY29uZmlybSB0aGVzZSB3ZXJlIG5vIG9mZmljaWFsbHkg
YXNzaWduZWQNCj4gKHJhdGhlciB0aGFuIGluIHRoZQ0KPiByZXNlcnZlZCBzcGFjZSkuwqDCoEkg
Zm91bmQgdGhlbSBpbjoNCj4gaHR0cDovL3d3dy51c2Iub3JnL2RldmVsb3BlcnMvaGlkcGFnZS9I
VVRSUjU5Xy1fVXNhZ2VzX2Zvcl9XZWFyYWJsZXMuDQo+IHBkZg0KPiANCkhvbmd5YW4sIFBsZWFz
ZSBhZGQgdGhlIGxpbmsgdG8gc3BlYyB3aGVyZSB0aGVzZSBJZHMgYXJlIGRlZmluZWQuDQpBbHNv
IGV4cGxhaW4gc29tZXRoaW5nIGxpa2UgdGhpcyB0aGF0ICJncmF2aXR5IHNlbnNvciBpcyBhIHNv
ZnQgc2Vuc29yLA0Kd2hpY2ggwqBkZXJpdmVzIHZhbHVlIGZyb20gc3RhbmRhcmQgYWNjbGVyb21l
dGVyIGRldmljZSBieSBmaWx0ZXJpbmcgb3V0DQp0aGUgYWNjZWxlcmF0aW9uIHdoaWNoIGlzIG5v
dCBjYXVzZWQgYnkgZ3Jhdml0eS4iIFlvdSBjYW4gYWRkIG1vcmUNCmluZm9ybWF0aW9uIGhvdyBm
aWx0ZXJpbmcgaXMgZG9uZSwgaWYgeW91IGNhbi4NCg0KPiBBbHNvLCBwZXJoYXBzIGEgcmVmZXJl
bmNlIHRvIGEgZGV2aWNlIHRoYXQgc3VwcG9ydHMgdGhpcz/CoMKgV291bGQgYmUNCj4gdXNlZnVs
IHRvIGdpdmUNCj4gdXMgYW4gaWRlYSBvZiBob3cgbmV3IGl0IGlzIGZvciB0aGUgcHVycG9zZXMg
b2YgZGlzdHJpYnV0aW9uIGtlcm5lbA0KPiBiYWNrIHBvcnRzIGV0Yy4NCkkgZG9uJ3QgdGhpbmsg
YW55IGxhcHRvcCB0eXBlcyBvZiBkZXZpY2VzIGhhcyBzdXBwb3J0IGZvciB0aGlzLiBUaGlzIGlz
DQppbiBJT1Qgc3BhY2Ugc28gZGlmZmljdWx0IHRvIGdldCB3aG8gaXMgYWN0dWFsbHkgdXNpbmcg
dGhpcy4NCg0KPiANCj4gSSdkIGFsc28gbGlrZSBhbiBBY2sgZm9yIHRoaXMgZnJvbSBTcmluaXZh
cyBpZiBwb3NzaWJsZS4NCkFmdGVyIGFkZGluZyB0aGUgYWJvdmUgaW5mb3JtYXRpb24geW91IGNh
biBhZGQgbXnCoA0KQUNLIGluIHRoZSBuZXh0IHBhdGNoc2V0Lg0KDQpUaGFua3MsDQpTcmluaXZh
cw0KDQoNCj4gDQo+IFRoZXNlIGFyZSBjb21wdXRlZCB2YWx1ZXMgcHJlc3VtYWJseSB1c2luZyB2
YXJpb3VzIG90aGVyIHNlbnNvcnMgdG8NCj4gc2VwYXJhdGUgb3V0IHRoZQ0KPiBncmF2aXR5IC0g
SSBndWVzcyBwdXR0aW5nIGl0IGluIHRoZSBhY2NlbGVyYXRpb24gbW9kdWxlcyBtYWtlcyBzZW5z
ZQ0KPiByYXRoZXIgdGhhbiBhbnl3aGVyZQ0KPiBlbHNlLg0KPiANCj4gU28gbG9va3MgZmluZSB0
byBtZS4gT25seSByZWFsIHJlcXVlc3QgZm9yIGZ1dHVyZSBvbiB0aGlzIHNvcnQgb2YNCj4gcGF0
Y2ggaXMgdG8gcHJvdmlkZQ0KPiBhIGxpdHRsZSBtb3JlIGJhY2tncm91bmQgaW5mb3JtYXRpb24u
DQo+IA0KPiBUaGFua3MsDQo+IA0KPiBKb25hdGhhbg0KPiA+IA0KPiA+IA0KPiA+IFNpZ25lZC1v
ZmYtYnk6IFNvbmcgSG9uZ3lhbiA8aG9uZ3lhbi5zb25nQGludGVsLmNvbT4NCj4gPiAtLS0NCj4g
PiDCoGRyaXZlcnMvaWlvL2FjY2VsL2hpZC1zZW5zb3ItYWNjZWwtM2QuYyB8IDc0DQo+ID4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ID4gwqBpbmNsdWRlL2xpbnV4L2hpZC1z
ZW5zb3ItaWRzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMyArKw0KPiA+IMKgMiBmaWxlcyBj
aGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwvaGlkLXNlbnNvci1hY2NlbC0zZC5jDQo+ID4gYi9k
cml2ZXJzL2lpby9hY2NlbC9oaWQtc2Vuc29yLWFjY2VsLTNkLmMNCj4gPiBpbmRleCBhYjFlMjM4
Li45ZWRkNTc0IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvaWlvL2FjY2VsL2hpZC1zZW5zb3It
YWNjZWwtM2QuYw0KPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL2hpZC1zZW5zb3ItYWNjZWwt
M2QuYw0KPiA+IEBAIC05MCw2ICs5MCw0MSBAQCBzdHJ1Y3QgYWNjZWxfM2Rfc3RhdGUgew0KPiA+
IMKgCX0NCj4gPiDCoH07DQo+ID4gwqANCj4gPiArLyogQ2hhbm5lbCBkZWZpbml0aW9ucyAqLw0K
PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgZ3Jhdml0eV9jaGFubmVsc1td
ID0gew0KPiA+ICsJew0KPiA+ICsJCS50eXBlID0gSUlPX0dSQVZJVFksDQo+ID4gKwkJLm1vZGlm
aWVkID0gMSwNCj4gPiArCQkuY2hhbm5lbDIgPSBJSU9fTU9EX1gsDQo+ID4gKwkJLmluZm9fbWFz
a19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JBVyksDQo+ID4gKwkJLmluZm9fbWFza19z
aGFyZWRfYnlfdHlwZSA9DQo+ID4gQklUKElJT19DSEFOX0lORk9fT0ZGU0VUKSB8DQo+ID4gKwkJ
QklUKElJT19DSEFOX0lORk9fU0NBTEUpIHwNCj4gPiArCQlCSVQoSUlPX0NIQU5fSU5GT19TQU1Q
X0ZSRVEpIHwNCj4gPiArCQlCSVQoSUlPX0NIQU5fSU5GT19IWVNURVJFU0lTKSwNCj4gPiArCQku
c2Nhbl9pbmRleCA9IENIQU5ORUxfU0NBTl9JTkRFWF9YLA0KPiA+ICsJfSwgew0KPiA+ICsJCS50
eXBlID0gSUlPX0dSQVZJVFksDQo+ID4gKwkJLm1vZGlmaWVkID0gMSwNCj4gPiArCQkuY2hhbm5l
bDIgPSBJSU9fTU9EX1ksDQo+ID4gKwkJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hB
Tl9JTkZPX1JBVyksDQo+ID4gKwkJLmluZm9fbWFza19zaGFyZWRfYnlfdHlwZSA9DQo+ID4gQklU
KElJT19DSEFOX0lORk9fT0ZGU0VUKSB8DQo+ID4gKwkJQklUKElJT19DSEFOX0lORk9fU0NBTEUp
IHwNCj4gPiArCQlCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpIHwNCj4gPiArCQlCSVQoSUlP
X0NIQU5fSU5GT19IWVNURVJFU0lTKSwNCj4gPiArCQkuc2Nhbl9pbmRleCA9IENIQU5ORUxfU0NB
Tl9JTkRFWF9ZLA0KPiA+ICsJfSwgew0KPiA+ICsJCS50eXBlID0gSUlPX0dSQVZJVFksDQo+ID4g
KwkJLm1vZGlmaWVkID0gMSwNCj4gPiArCQkuY2hhbm5lbDIgPSBJSU9fTU9EX1osDQo+ID4gKwkJ
LmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JBVyksDQo+ID4gKwkJLmlu
Zm9fbWFza19zaGFyZWRfYnlfdHlwZSA9DQo+ID4gQklUKElJT19DSEFOX0lORk9fT0ZGU0VUKSB8
DQo+ID4gKwkJQklUKElJT19DSEFOX0lORk9fU0NBTEUpIHwNCj4gPiArCQlCSVQoSUlPX0NIQU5f
SU5GT19TQU1QX0ZSRVEpIHwNCj4gPiArCQlCSVQoSUlPX0NIQU5fSU5GT19IWVNURVJFU0lTKSwN
Cj4gPiArCQkuc2Nhbl9pbmRleCA9IENIQU5ORUxfU0NBTl9JTkRFWF9aLA0KPiA+ICsJfQ0KPiA+
ICt9Ow0KPiA+ICsNCj4gPiDCoC8qIEFkanVzdCBjaGFubmVsIHJlYWwgYml0cyBiYXNlZCBvbiBy
ZXBvcnQgZGVzY3JpcHRvciAqLw0KPiA+IMKgc3RhdGljIHZvaWQgYWNjZWxfM2RfYWRqdXN0X2No
YW5uZWxfYml0X21hc2soc3RydWN0IGlpb19jaGFuX3NwZWMNCj4gPiAqY2hhbm5lbHMsDQo+ID4g
wqAJCQkJCQlpbnQgY2hhbm5lbCwgaW50DQo+ID4gc2l6ZSkNCj4gPiBAQCAtMTExLDYgKzE0Niw4
IEBAIHN0YXRpYyBpbnQgYWNjZWxfM2RfcmVhZF9yYXcoc3RydWN0IGlpb19kZXYNCj4gPiAqaW5k
aW9fZGV2LA0KPiA+IMKgCWludCByZXBvcnRfaWQgPSAtMTsNCj4gPiDCoAl1MzIgYWRkcmVzczsN
Cj4gPiDCoAlpbnQgcmV0X3R5cGU7DQo+ID4gKwlzdHJ1Y3QgaGlkX3NlbnNvcl9odWJfZGV2aWNl
ICpoc2RldiA9DQo+ID4gKwkJCQkJYWNjZWxfc3RhdGUtDQo+ID4gPmNvbW1vbl9hdHRyaWJ1dGVz
LmhzZGV2Ow0KPiA+IMKgDQo+ID4gwqAJKnZhbCA9IDA7DQo+ID4gwqAJKnZhbDIgPSAwOw0KPiA+
IEBAIC0xMjIsOCArMTU5LDcgQEAgc3RhdGljIGludCBhY2NlbF8zZF9yZWFkX3JhdyhzdHJ1Y3Qg
aWlvX2Rldg0KPiA+ICppbmRpb19kZXYsDQo+ID4gwqAJCWlmIChyZXBvcnRfaWQgPj0gMCkNCj4g
PiDCoAkJCSp2YWwgPQ0KPiA+IHNlbnNvcl9odWJfaW5wdXRfYXR0cl9nZXRfcmF3X3ZhbHVlKA0K
PiA+IMKgCQkJCQlhY2NlbF9zdGF0ZS0NCj4gPiA+Y29tbW9uX2F0dHJpYnV0ZXMuaHNkZXYsDQo+
ID4gLQkJCQkJSElEX1VTQUdFX1NFTlNPUl9BQ0NFTF8zRCwNCj4gPiBhZGRyZXNzLA0KPiA+IC0J
CQkJCXJlcG9ydF9pZCwNCj4gPiArCQkJCQloc2Rldi0+dXNhZ2UsIGFkZHJlc3MsDQo+ID4gcmVw
b3J0X2lkLA0KPiA+IMKgCQkJCQlTRU5TT1JfSFVCX1NZTkMpOw0KPiA+IMKgCQllbHNlIHsNCj4g
PiDCoAkJCSp2YWwgPSAwOw0KPiA+IEBAIC0yNzIsNyArMzA4LDcgQEAgc3RhdGljIGludCBhY2Nl
bF8zZF9wYXJzZV9yZXBvcnQoc3RydWN0DQo+ID4gcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+
IMKgCQkJc3QtPmFjY2VsWzJdLmluZGV4LCBzdC0NCj4gPiA+YWNjZWxbMl0ucmVwb3J0X2lkKTsN
Cj4gPiDCoA0KPiA+IMKgCXN0LT5zY2FsZV9wcmVjaXNpb24gPSBoaWRfc2Vuc29yX2Zvcm1hdF9z
Y2FsZSgNCj4gPiAtCQkJCUhJRF9VU0FHRV9TRU5TT1JfQUNDRUxfM0QsDQo+ID4gKwkJCQloc2Rl
di0+dXNhZ2UsDQo+ID4gwqAJCQkJJnN0LT5hY2NlbFtDSEFOTkVMX1NDQU5fSU5ERVhfWF0sDQo+
ID4gwqAJCQkJJnN0LT5zY2FsZV9wcmVfZGVjbWwsICZzdC0NCj4gPiA+c2NhbGVfcG9zdF9kZWNt
bCk7DQo+ID4gwqANCj4gPiBAQCAtMjk1LDkgKzMzMSwxMiBAQCBzdGF0aWMgaW50IGFjY2VsXzNk
X3BhcnNlX3JlcG9ydChzdHJ1Y3QNCj4gPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gwqBz
dGF0aWMgaW50IGhpZF9hY2NlbF8zZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2
KQ0KPiA+IMKgew0KPiA+IMKgCWludCByZXQgPSAwOw0KPiA+IC0Jc3RhdGljIGNvbnN0IGNoYXIg
Km5hbWUgPSAiYWNjZWxfM2QiOw0KPiA+ICsJc3RhdGljIGNvbnN0IGNoYXIgKm5hbWU7DQo+ID4g
wqAJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldjsNCj4gPiDCoAlzdHJ1Y3QgYWNjZWxfM2Rfc3Rh
dGUgKmFjY2VsX3N0YXRlOw0KPiA+ICsJY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgKmNoYW5u
ZWxfc3BlYzsNCj4gPiArCWludCBjaGFubmVsX3NpemU7DQo+ID4gKw0KPiA+IMKgCXN0cnVjdCBo
aWRfc2Vuc29yX2h1Yl9kZXZpY2UgKmhzZGV2ID0gcGRldi0NCj4gPiA+ZGV2LnBsYXRmb3JtX2Rh
dGE7DQo+ID4gwqANCj4gPiDCoAlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoJnBk
ZXYtPmRldiwNCj4gPiBAQCAtMzExLDI0ICszNTAsMzAgQEAgc3RhdGljIGludCBoaWRfYWNjZWxf
M2RfcHJvYmUoc3RydWN0DQo+ID4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+IMKgCWFjY2Vs
X3N0YXRlLT5jb21tb25fYXR0cmlidXRlcy5oc2RldiA9IGhzZGV2Ow0KPiA+IMKgCWFjY2VsX3N0
YXRlLT5jb21tb25fYXR0cmlidXRlcy5wZGV2ID0gcGRldjsNCj4gPiDCoA0KPiA+IC0JcmV0ID0g
aGlkX3NlbnNvcl9wYXJzZV9jb21tb25fYXR0cmlidXRlcyhoc2RldiwNCj4gPiAtCQkJCQlISURf
VVNBR0VfU0VOU09SX0FDQ0VMXzNELA0KPiA+ICsJaWYgKGhzZGV2LT51c2FnZSA9PSBISURfVVNB
R0VfU0VOU09SX0FDQ0VMXzNEKSB7DQo+ID4gKwkJbmFtZSA9ICJhY2NlbF8zZCI7DQo+ID4gKwkJ
Y2hhbm5lbF9zcGVjID0gYWNjZWxfM2RfY2hhbm5lbHM7DQo+ID4gKwkJY2hhbm5lbF9zaXplID0g
c2l6ZW9mKGFjY2VsXzNkX2NoYW5uZWxzKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJbmFtZSA9
ICJncmF2aXR5IjsNCj4gPiArCQljaGFubmVsX3NwZWMgPSBncmF2aXR5X2NoYW5uZWxzOw0KPiA+
ICsJCWNoYW5uZWxfc2l6ZSA9IHNpemVvZihncmF2aXR5X2NoYW5uZWxzKTsNCj4gPiArCX0NCj4g
PiArCXJldCA9IGhpZF9zZW5zb3JfcGFyc2VfY29tbW9uX2F0dHJpYnV0ZXMoaHNkZXYsIGhzZGV2
LQ0KPiA+ID51c2FnZSwNCj4gPiDCoAkJCQkJJmFjY2VsX3N0YXRlLQ0KPiA+ID5jb21tb25fYXR0
cmlidXRlcyk7DQo+ID4gwqAJaWYgKHJldCkgew0KPiA+IMKgCQlkZXZfZXJyKCZwZGV2LT5kZXYs
ICJmYWlsZWQgdG8gc2V0dXAgY29tbW9uDQo+ID4gYXR0cmlidXRlc1xuIik7DQo+ID4gwqAJCXJl
dHVybiByZXQ7DQo+ID4gwqAJfQ0KPiA+ICsJaW5kaW9fZGV2LT5jaGFubmVscyA9IGttZW1kdXAo
Y2hhbm5lbF9zcGVjLCBjaGFubmVsX3NpemUsDQo+ID4gR0ZQX0tFUk5FTCk7DQo+ID4gwqANCj4g
PiAtCWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBrbWVtZHVwKGFjY2VsXzNkX2NoYW5uZWxzLA0KPiA+
IC0JCQkJwqDCoMKgwqDCoMKgc2l6ZW9mKGFjY2VsXzNkX2NoYW5uZWxzKSwNCj4gPiBHRlBfS0VS
TkVMKTsNCj4gPiDCoAlpZiAoIWluZGlvX2Rldi0+Y2hhbm5lbHMpIHsNCj4gPiDCoAkJZGV2X2Vy
cigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGR1cGxpY2F0ZQ0KPiA+IGNoYW5uZWxzXG4iKTsNCj4g
PiDCoAkJcmV0dXJuIC1FTk9NRU07DQo+ID4gwqAJfQ0KPiA+IC0NCj4gPiDCoAlyZXQgPSBhY2Nl
bF8zZF9wYXJzZV9yZXBvcnQocGRldiwgaHNkZXYsDQo+ID4gLQkJCQnCoMKgwqDCoChzdHJ1Y3Qg
aWlvX2NoYW5fc3BlYw0KPiA+ICopaW5kaW9fZGV2LT5jaGFubmVscywNCj4gPiAtCQkJCcKgwqDC
oMKgSElEX1VTQUdFX1NFTlNPUl9BQ0NFTF8zRCwNCj4gPiBhY2NlbF9zdGF0ZSk7DQo+ID4gKwkJ
CQkoc3RydWN0IGlpb19jaGFuX3NwZWMgKilpbmRpb19kZXYtDQo+ID4gPmNoYW5uZWxzLA0KPiA+
ICsJCQkJaHNkZXYtPnVzYWdlLCBhY2NlbF9zdGF0ZSk7DQo+ID4gwqAJaWYgKHJldCkgew0KPiA+
IMKgCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gc2V0dXANCj4gPiBhdHRyaWJ1dGVz
XG4iKTsNCj4gPiDCoAkJZ290byBlcnJvcl9mcmVlX2Rldl9tZW07DQo+ID4gQEAgLTM2Myw3ICs0
MDgsNyBAQCBzdGF0aWMgaW50IGhpZF9hY2NlbF8zZF9wcm9iZShzdHJ1Y3QNCj4gPiBwbGF0Zm9y
bV9kZXZpY2UgKnBkZXYpDQo+ID4gwqAJYWNjZWxfc3RhdGUtPmNhbGxiYWNrcy5zZW5kX2V2ZW50
ID0gYWNjZWxfM2RfcHJvY19ldmVudDsNCj4gPiDCoAlhY2NlbF9zdGF0ZS0+Y2FsbGJhY2tzLmNh
cHR1cmVfc2FtcGxlID0NCj4gPiBhY2NlbF8zZF9jYXB0dXJlX3NhbXBsZTsNCj4gPiDCoAlhY2Nl
bF9zdGF0ZS0+Y2FsbGJhY2tzLnBkZXYgPSBwZGV2Ow0KPiA+IC0JcmV0ID0gc2Vuc29yX2h1Yl9y
ZWdpc3Rlcl9jYWxsYmFjayhoc2RldiwNCj4gPiBISURfVVNBR0VfU0VOU09SX0FDQ0VMXzNELA0K
PiA+ICsJcmV0ID0gc2Vuc29yX2h1Yl9yZWdpc3Rlcl9jYWxsYmFjayhoc2RldiwgaHNkZXYtPnVz
YWdlLA0KPiA+IMKgCQkJCQkmYWNjZWxfc3RhdGUtPmNhbGxiYWNrcyk7DQo+ID4gwqAJaWYgKHJl
dCA8IDApIHsNCj4gPiDCoAkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2FsbGJhY2sgcmVnIGZhaWxl
ZFxuIik7DQo+ID4gQEAgLTM5MCw3ICs0MzUsNyBAQCBzdGF0aWMgaW50IGhpZF9hY2NlbF8zZF9y
ZW1vdmUoc3RydWN0DQo+ID4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+IMKgCXN0cnVjdCBp
aW9fZGV2ICppbmRpb19kZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiDCoAlz
dHJ1Y3QgYWNjZWxfM2Rfc3RhdGUgKmFjY2VsX3N0YXRlID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsN
Cj4gPiDCoA0KPiA+IC0Jc2Vuc29yX2h1Yl9yZW1vdmVfY2FsbGJhY2soaHNkZXYsDQo+ID4gSElE
X1VTQUdFX1NFTlNPUl9BQ0NFTF8zRCk7DQo+ID4gKwlzZW5zb3JfaHViX3JlbW92ZV9jYWxsYmFj
ayhoc2RldiwgaHNkZXYtPnVzYWdlKTsNCj4gPiDCoAlpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5k
aW9fZGV2KTsNCj4gPiDCoAloaWRfc2Vuc29yX3JlbW92ZV90cmlnZ2VyKCZhY2NlbF9zdGF0ZS0N
Cj4gPiA+Y29tbW9uX2F0dHJpYnV0ZXMpOw0KPiA+IMKgCWlpb190cmlnZ2VyZWRfYnVmZmVyX2Ns
ZWFudXAoaW5kaW9fZGV2KTsNCj4gPiBAQCAtNDA0LDYgKzQ0OSw5IEBAIHN0YXRpYyBpbnQgaGlk
X2FjY2VsXzNkX3JlbW92ZShzdHJ1Y3QNCj4gPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4g
wqAJCS8qIEZvcm1hdDogSElELVNFTlNPUi11c2FnZV9pZF9pbl9oZXhfbG93ZXJjYXNlICovDQo+
ID4gwqAJCS5uYW1lID0gIkhJRC1TRU5TT1ItMjAwMDczIiwNCj4gPiDCoAl9LA0KPiA+ICsJewkv
KiBncmF2aXR5IHNlbnNvciAqLw0KPiA+ICsJCS5uYW1lID0gIkhJRC1TRU5TT1ItMjAwMDdiIiwN
Cj4gPiArCX0sDQo+ID4gwqAJeyAvKiBzZW50aW5lbCAqLyB9DQo+ID4gwqB9Ow0KPiA+IMKgTU9E
VUxFX0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgaGlkX2FjY2VsXzNkX2lkcyk7DQo+ID4gZGlmZiAt
LWdpdCBhL2luY2x1ZGUvbGludXgvaGlkLXNlbnNvci1pZHMuaCBiL2luY2x1ZGUvbGludXgvaGlk
LQ0KPiA+IHNlbnNvci1pZHMuaA0KPiA+IGluZGV4IGYyZWU5MGEuLmI2Nzc4ZmQyIDEwMDY0NA0K
PiA+IC0tLSBhL2luY2x1ZGUvbGludXgvaGlkLXNlbnNvci1pZHMuaA0KPiA+ICsrKyBiL2luY2x1
ZGUvbGludXgvaGlkLXNlbnNvci1pZHMuaA0KPiA+IEBAIC01Miw2ICs1Miw5IEBADQo+ID4gwqAj
ZGVmaW5lIEhJRF9VU0FHRV9TRU5TT1JfQU5HTF9WRUxPQ0lUWV9ZX0FYSVMJCQkNCj4gPiAweDIw
MDQ1OA0KPiA+IMKgI2RlZmluZSBISURfVVNBR0VfU0VOU09SX0FOR0xfVkVMT0NJVFlfWl9BWElT
CQkJDQo+ID4gMHgyMDA0NTkNCj4gPiDCoA0KPiA+ICsvKiBHcmF2aXR5IHZlY3RvciAqLw0KPiA+
ICsjZGVmaW5lIEhJRF9VU0FHRV9TRU5TT1JfR1JBVklUWV9WRUNUT1IJCQkJDQo+ID4gMHgyMDAw
N0INCj4gPiArDQo+ID4gwqAvKiBPUklFTlRBVElPTjogQ29tcGFzcyAzRDogKDIwMDA4MykgKi8N
Cj4gPiDCoCNkZWZpbmUgSElEX1VTQUdFX1NFTlNPUl9DT01QQVNTXzNECQkJCQ0KPiA+IDB4MjAw
MDgzDQo+ID4gwqAjZGVmaW5lIEhJRF9VU0FHRV9TRU5TT1JfREFUQV9PUklFTlRBVElPTgkJCTAN
Cj4gPiB4MjAwNDcwDQo+ID4g

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

end of thread, other threads:[~2016-12-30 17:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-07 10:14 [RFC PATCH 1/2] iio: Add channel for Gravity Song Hongyan
2016-12-07 10:14 ` [RFC PATCH 2/2] iio: Add gravity sensor support Song Hongyan
2016-12-30 10:28   ` Jonathan Cameron
2016-12-30 17:27     ` Pandruvada, Srinivas
2016-12-30 10:09 ` [RFC PATCH 1/2] iio: Add channel for Gravity Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).