All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Pandruvada, Srinivas" <srinivas.pandruvada@intel.com>
To: "linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	"Song, Hongyan" <hongyan.song@intel.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"jic23@kernel.org" <jic23@kernel.org>
Cc: "jikos@kernel.org" <jikos@kernel.org>
Subject: Re: [PATCH] iio: hid: Add temperature sensor support
Date: Tue, 7 Feb 2017 00:48:57 +0000	[thread overview]
Message-ID: <1486428534.18380.148.camel@intel.com> (raw)
In-Reply-To: <d458401a-1025-ca17-11dd-2f13963ac63d@kernel.org>

On Sat, 2017-02-04 at 12:02 +0000, Jonathan Cameron wrote:
> On 04/02/17 13:47, Song Hongyan wrote:
> > 
> > Environmental temperature sensor is a hid defined sensor,
> > it measures temperature.
> > 
> > More information can be found in:
> > http://www.usb.org/developers/hidpage/HUTRR39b.pdf
> > 
> > According to IIO ABI definition, IIO_TEMP data output unit is
> > milli degrees Celsius. Add the unit convert from degree to milli
> > degree.
> > 
> > Signed-off-by: Song Hongyan <hongyan.song@intel.com>
> A few bits and bobs inline.  Clearly I'll want Srinivas to comment on
> this
> one as well!


[...]

> 
+/* Capture samples in local storage */
> > +static int temperature_capture_sample(struct hid_sensor_hub_device
> > *hsdev,
> > +				unsigned int usage_id,
> > +				size_t raw_len, char *raw_data,
> > +				void *priv)
> > +{
> > +	struct iio_dev *indio_dev = platform_get_drvdata(priv);
> Why not make priv the indio_dev directly? I would imagine it's the
> pdev
> passed in when registering the callbacks below.

Actually this priv can be renamed to pdev. The callback will be called
with platform_device * of the mfd device.

> > 
> > +	struct temperature_state *temperature_state =
> > iio_priv(indio_dev);
> > +
> > +	switch (usage_id) {
> > +	case HID_USAGE_SENSOR_DATA_ENVIRONMENTAL_TEMPERATURE:
> > +		temperature_state->temperature_data = *(s32
> > *)raw_data;
> > +		return 0;
> > +	default:
> > +		return -EINVAL;
> > +	}
> > +}
> > 

[...]

> > +/* Function to initialize the processing for usage id */
> > +static int hid_temperature_probe(struct platform_device *pdev)
> > +{
> > +	static const char *name = "temperature";
> > +	struct iio_dev *indio_dev;
> > +	struct temperature_state *temperature_state;
> > +	struct hid_sensor_hub_device *hsdev = pdev-
> > >dev.platform_data;
> > +	int ret;
> > +
> > +	indio_dev = devm_iio_device_alloc(&pdev->dev,
> > +				sizeof(struct temperature_state));
> > +	if (!indio_dev)
> > +		return -ENOMEM;
> > +
> > +	temperature_state = iio_priv(indio_dev);
> > +	temperature_state->common_attributes.hsdev = hsdev;
> > +	temperature_state->common_attributes.pdev = pdev;
> > +
> > +	ret = hid_sensor_parse_common_attributes(hsdev,
> > +					HID_USAGE_SENSOR_TEMPERATU
> > RE,
> > +					&temperature_state-
> > >common_attributes);
> > +	if (ret)
> > +		return ret;
> > +
> > +	indio_dev->channels = devm_kmemdup(&indio_dev->dev,
> > +					temperature_channels,
> > +					sizeof(temperature_channel
> > s),
> > +					GFP_KERNEL);
> > +	if (!indio_dev->channels)
> > +		return -ENOMEM;
> > +
> > +	ret = temperature_parse_report(pdev, hsdev,
> > +				(struct iio_chan_spec *)indio_dev-
> > >channels,
> > +				HID_USAGE_SENSOR_TEMPERATURE,
> > +				temperature_state);
> > +	if (ret)
> > +		return ret;
> > +
> > +	indio_dev->num_channels =
> > ARRAY_SIZE(temperature_channels);
> > +	indio_dev->dev.parent = &pdev->dev;
> > +	indio_dev->info = &temperature_info;
> > +	indio_dev->name = name;
> > +	indio_dev->modes = INDIO_DIRECT_MODE;
> > +
> > +	ret = iio_triggered_buffer_setup(indio_dev,
> > &iio_pollfunc_store_time,
> > +					NULL, NULL);
> > +	if (ret)
> > +		return ret;
> If you are going all devm (which is fine) then use
> devm_iio_triggered_buffer_setup.
> 
> > 
> > +
> > +	atomic_set(&temperature_state-
> > >common_attributes.data_ready, 0);
> > +	ret = hid_sensor_setup_trigger(indio_dev, name,
> > +				&temperature_state-
> > >common_attributes);
> I'd expect to see this unwound somewhere as well..

I missed this during my review. There has to be call
to  hid_sensor_remove_trigger() to do opposite.

> > 
> > +	if (ret)
> > +		goto error_unreg_buffer_funcs;
> > +
> > +	ret = devm_iio_device_register(indio_dev->dev.parent,
> > indio_dev);
> > +	if (ret)
> > +		goto error_unreg_buffer_funcs;
> Is there a race here in that userspace interfaces are exposed, but
> the
> hid system has no way to send answers to any queries?
Two scenarios possible:
- If somehow user space calls the raw read before the 
sensor_hub_register_callback() is called, then there should not be any
issue as the sensor_hub_input_attr_get_raw_value is called with
"SENSOR_HUB_SYNC" so wait till response arrives or timeout. So doesn't
depend on the callback.

- If user is activating the buffer mode before the callback us
registered, worst case it will miss event till the callback is
registered.

But we can call sensor_hub_register_callback()
before devm_iio_device_register(), but the we need to make sure that
the sensor_hub_remove_callback() is called
if devm_iio_device_register() fails.

> > 
> > +
> > +	platform_set_drvdata(pdev, indio_dev);
> > +
> > +	temperature_state->callbacks.send_event =
> > temperature_proc_event;
> > +	temperature_state->callbacks.capture_sample =
> > +						temperature_captur
> > e_sample;
> > +	temperature_state->callbacks.pdev = pdev;
> > +	ret = sensor_hub_register_callback(hsdev,
> > HID_USAGE_SENSOR_TEMPERATURE,
> > +					&temperature_state-
> > >callbacks); 
> > +	return ret;
> > +
> > +error_unreg_buffer_funcs:
> > +	iio_triggered_buffer_cleanup(indio_dev);
> > +	return ret;
> > +}
> > +
> > +/* Function to deinitialize the processing for usage id */
> > +static int hid_temperature_remove(struct platform_device *pdev)
> > +{
> > +	struct hid_sensor_hub_device *hsdev = pdev-
> > >dev.platform_data;
> > +
> > +	sensor_hub_remove_callback(hsdev,
> > HID_USAGE_SENSOR_TEMPERATURE);

hid_sensor_remove_trigger()

> > +
> > +	return 0;
> > +}
> > +
> > 
Thanks,
Srinivas

WARNING: multiple messages have this Message-ID (diff)
From: "Pandruvada, Srinivas" <srinivas.pandruvada@intel.com>
To: "linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	"Song, Hongyan" <hongyan.song@intel.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"jic23@kernel.org" <jic23@kernel.org>
Cc: "jikos@kernel.org" <jikos@kernel.org>
Subject: Re: [PATCH] iio: hid: Add temperature sensor support
Date: Tue, 7 Feb 2017 00:48:57 +0000	[thread overview]
Message-ID: <1486428534.18380.148.camel@intel.com> (raw)
In-Reply-To: <d458401a-1025-ca17-11dd-2f13963ac63d@kernel.org>

T24gU2F0LCAyMDE3LTAyLTA0IGF0IDEyOjAyICswMDAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl
Og0KPiBPbiAwNC8wMi8xNyAxMzo0NywgU29uZyBIb25neWFuIHdyb3RlOg0KPiA+IA0KPiA+IEVu
dmlyb25tZW50YWwgdGVtcGVyYXR1cmUgc2Vuc29yIGlzIGEgaGlkIGRlZmluZWQgc2Vuc29yLA0K
PiA+IGl0IG1lYXN1cmVzIHRlbXBlcmF0dXJlLg0KPiA+IA0KPiA+IE1vcmUgaW5mb3JtYXRpb24g
Y2FuIGJlIGZvdW5kIGluOg0KPiA+IGh0dHA6Ly93d3cudXNiLm9yZy9kZXZlbG9wZXJzL2hpZHBh
Z2UvSFVUUlIzOWIucGRmDQo+ID4gDQo+ID4gQWNjb3JkaW5nIHRvIElJTyBBQkkgZGVmaW5pdGlv
biwgSUlPX1RFTVAgZGF0YSBvdXRwdXQgdW5pdCBpcw0KPiA+IG1pbGxpIGRlZ3JlZXMgQ2Vsc2l1
cy4gQWRkIHRoZSB1bml0IGNvbnZlcnQgZnJvbSBkZWdyZWUgdG8gbWlsbGkNCj4gPiBkZWdyZWUu
DQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogU29uZyBIb25neWFuIDxob25neWFuLnNvbmdAaW50
ZWwuY29tPg0KPiBBIGZldyBiaXRzIGFuZCBib2JzIGlubGluZS7CoMKgQ2xlYXJseSBJJ2xsIHdh
bnQgU3Jpbml2YXMgdG8gY29tbWVudCBvbg0KPiB0aGlzDQo+IG9uZSBhcyB3ZWxsIQ0KDQoNClsu
Li5dDQoNCj4gDQorLyogQ2FwdHVyZSBzYW1wbGVzIGluIGxvY2FsIHN0b3JhZ2UgKi8NCj4gPiAr
c3RhdGljIGludCB0ZW1wZXJhdHVyZV9jYXB0dXJlX3NhbXBsZShzdHJ1Y3QgaGlkX3NlbnNvcl9o
dWJfZGV2aWNlDQo+ID4gKmhzZGV2LA0KPiA+ICsJCQkJdW5zaWduZWQgaW50IHVzYWdlX2lkLA0K
PiA+ICsJCQkJc2l6ZV90IHJhd19sZW4sIGNoYXIgKnJhd19kYXRhLA0KPiA+ICsJCQkJdm9pZCAq
cHJpdikNCj4gPiArew0KPiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IHBsYXRmb3Jt
X2dldF9kcnZkYXRhKHByaXYpOw0KPiBXaHkgbm90IG1ha2UgcHJpdiB0aGUgaW5kaW9fZGV2IGRp
cmVjdGx5PyBJIHdvdWxkIGltYWdpbmUgaXQncyB0aGUNCj4gcGRldg0KPiBwYXNzZWQgaW4gd2hl
biByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2tzIGJlbG93Lg0KDQpBY3R1YWxseSB0aGlzIHByaXYg
Y2FuIGJlIHJlbmFtZWQgdG8gcGRldi4gVGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkDQp3aXRo
IHBsYXRmb3JtX2RldmljZSAqIG9mIHRoZSBtZmQgZGV2aWNlLg0KDQo+ID4gDQo+ID4gKwlzdHJ1
Y3QgdGVtcGVyYXR1cmVfc3RhdGUgKnRlbXBlcmF0dXJlX3N0YXRlID0NCj4gPiBpaW9fcHJpdihp
bmRpb19kZXYpOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAodXNhZ2VfaWQpIHsNCj4gPiArCWNhc2Ug
SElEX1VTQUdFX1NFTlNPUl9EQVRBX0VOVklST05NRU5UQUxfVEVNUEVSQVRVUkU6DQo+ID4gKwkJ
dGVtcGVyYXR1cmVfc3RhdGUtPnRlbXBlcmF0dXJlX2RhdGEgPSAqKHMzMg0KPiA+ICopcmF3X2Rh
dGE7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiAtRUlO
VkFMOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gDQoNClsuLi5dDQoNCj4gPiArLyogRnVuY3Rpb24g
dG8gaW5pdGlhbGl6ZSB0aGUgcHJvY2Vzc2luZyBmb3IgdXNhZ2UgaWQgKi8NCj4gPiArc3RhdGlj
IGludCBoaWRfdGVtcGVyYXR1cmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikN
Cj4gPiArew0KPiA+ICsJc3RhdGljIGNvbnN0IGNoYXIgKm5hbWUgPSAidGVtcGVyYXR1cmUiOw0K
PiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldjsNCj4gPiArCXN0cnVjdCB0ZW1wZXJhdHVy
ZV9zdGF0ZSAqdGVtcGVyYXR1cmVfc3RhdGU7DQo+ID4gKwlzdHJ1Y3QgaGlkX3NlbnNvcl9odWJf
ZGV2aWNlICpoc2RldiA9IHBkZXYtDQo+ID4gPmRldi5wbGF0Zm9ybV9kYXRhOw0KPiA+ICsJaW50
IHJldDsNCj4gPiArDQo+ID4gKwlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoJnBk
ZXYtPmRldiwNCj4gPiArCQkJCXNpemVvZihzdHJ1Y3QgdGVtcGVyYXR1cmVfc3RhdGUpKTsNCj4g
PiArCWlmICghaW5kaW9fZGV2KQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiAr
CXRlbXBlcmF0dXJlX3N0YXRlID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiArCXRlbXBlcmF0
dXJlX3N0YXRlLT5jb21tb25fYXR0cmlidXRlcy5oc2RldiA9IGhzZGV2Ow0KPiA+ICsJdGVtcGVy
YXR1cmVfc3RhdGUtPmNvbW1vbl9hdHRyaWJ1dGVzLnBkZXYgPSBwZGV2Ow0KPiA+ICsNCj4gPiAr
CXJldCA9IGhpZF9zZW5zb3JfcGFyc2VfY29tbW9uX2F0dHJpYnV0ZXMoaHNkZXYsDQo+ID4gKwkJ
CQkJSElEX1VTQUdFX1NFTlNPUl9URU1QRVJBVFUNCj4gPiBSRSwNCj4gPiArCQkJCQkmdGVtcGVy
YXR1cmVfc3RhdGUtDQo+ID4gPmNvbW1vbl9hdHRyaWJ1dGVzKTsNCj4gPiArCWlmIChyZXQpDQo+
ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlpbmRpb19kZXYtPmNoYW5uZWxzID0gZGV2
bV9rbWVtZHVwKCZpbmRpb19kZXYtPmRldiwNCj4gPiArCQkJCQl0ZW1wZXJhdHVyZV9jaGFubmVs
cywNCj4gPiArCQkJCQlzaXplb2YodGVtcGVyYXR1cmVfY2hhbm5lbA0KPiA+IHMpLA0KPiA+ICsJ
CQkJCUdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFpbmRpb19kZXYtPmNoYW5uZWxzKQ0KPiA+ICsJ
CXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCXJldCA9IHRlbXBlcmF0dXJlX3BhcnNlX3Jl
cG9ydChwZGV2LCBoc2RldiwNCj4gPiArCQkJCShzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqKWluZGlv
X2Rldi0NCj4gPiA+Y2hhbm5lbHMsDQo+ID4gKwkJCQlISURfVVNBR0VfU0VOU09SX1RFTVBFUkFU
VVJFLA0KPiA+ICsJCQkJdGVtcGVyYXR1cmVfc3RhdGUpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiAr
CQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCWluZGlvX2Rldi0+bnVtX2NoYW5uZWxzID0NCj4g
PiBBUlJBWV9TSVpFKHRlbXBlcmF0dXJlX2NoYW5uZWxzKTsNCj4gPiArCWluZGlvX2Rldi0+ZGV2
LnBhcmVudCA9ICZwZGV2LT5kZXY7DQo+ID4gKwlpbmRpb19kZXYtPmluZm8gPSAmdGVtcGVyYXR1
cmVfaW5mbzsNCj4gPiArCWluZGlvX2Rldi0+bmFtZSA9IG5hbWU7DQo+ID4gKwlpbmRpb19kZXYt
Pm1vZGVzID0gSU5ESU9fRElSRUNUX01PREU7DQo+ID4gKw0KPiA+ICsJcmV0ID0gaWlvX3RyaWdn
ZXJlZF9idWZmZXJfc2V0dXAoaW5kaW9fZGV2LA0KPiA+ICZpaW9fcG9sbGZ1bmNfc3RvcmVfdGlt
ZSwNCj4gPiArCQkJCQlOVUxMLCBOVUxMKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJu
IHJldDsNCj4gSWYgeW91IGFyZSBnb2luZyBhbGwgZGV2bSAod2hpY2ggaXMgZmluZSkgdGhlbiB1
c2UNCj4gZGV2bV9paW9fdHJpZ2dlcmVkX2J1ZmZlcl9zZXR1cC4NCj4gDQo+ID4gDQo+ID4gKw0K
PiA+ICsJYXRvbWljX3NldCgmdGVtcGVyYXR1cmVfc3RhdGUtDQo+ID4gPmNvbW1vbl9hdHRyaWJ1
dGVzLmRhdGFfcmVhZHksIDApOw0KPiA+ICsJcmV0ID0gaGlkX3NlbnNvcl9zZXR1cF90cmlnZ2Vy
KGluZGlvX2RldiwgbmFtZSwNCj4gPiArCQkJCSZ0ZW1wZXJhdHVyZV9zdGF0ZS0NCj4gPiA+Y29t
bW9uX2F0dHJpYnV0ZXMpOw0KPiBJJ2QgZXhwZWN0IHRvIHNlZSB0aGlzIHVud291bmQgc29tZXdo
ZXJlIGFzIHdlbGwuLg0KDQpJIG1pc3NlZCB0aGlzIGR1cmluZyBteSByZXZpZXcuIFRoZXJlIGhh
cyB0byBiZSBjYWxsDQp0b8KgwqBoaWRfc2Vuc29yX3JlbW92ZV90cmlnZ2VyKCkgdG8gZG8gb3Bw
b3NpdGUuDQoNCj4gPiANCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJZ290byBlcnJvcl91bnJlZ19i
dWZmZXJfZnVuY3M7DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGV2bV9paW9fZGV2aWNlX3JlZ2lzdGVy
KGluZGlvX2Rldi0+ZGV2LnBhcmVudCwNCj4gPiBpbmRpb19kZXYpOw0KPiA+ICsJaWYgKHJldCkN
Cj4gPiArCQlnb3RvIGVycm9yX3VucmVnX2J1ZmZlcl9mdW5jczsNCj4gSXMgdGhlcmUgYSByYWNl
IGhlcmUgaW4gdGhhdCB1c2Vyc3BhY2UgaW50ZXJmYWNlcyBhcmUgZXhwb3NlZCwgYnV0DQo+IHRo
ZQ0KPiBoaWQgc3lzdGVtIGhhcyBubyB3YXkgdG8gc2VuZCBhbnN3ZXJzIHRvIGFueSBxdWVyaWVz
Pw0KVHdvIHNjZW5hcmlvcyBwb3NzaWJsZToNCi0gSWYgc29tZWhvdyB1c2VyIHNwYWNlIGNhbGxz
IHRoZSByYXcgcmVhZCBiZWZvcmUgdGhlwqANCnNlbnNvcl9odWJfcmVnaXN0ZXJfY2FsbGJhY2so
KSBpcyBjYWxsZWQsIHRoZW4gdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkNCmlzc3VlIGFzIHRoZcKg
c2Vuc29yX2h1Yl9pbnB1dF9hdHRyX2dldF9yYXdfdmFsdWUgaXMgY2FsbGVkIHdpdGgNCiJTRU5T
T1JfSFVCX1NZTkMiIHNvIHdhaXQgdGlsbCByZXNwb25zZSBhcnJpdmVzIG9yIHRpbWVvdXQuIFNv
IGRvZXNuJ3QNCmRlcGVuZCBvbiB0aGUgY2FsbGJhY2suDQoNCi0gSWYgdXNlciBpcyBhY3RpdmF0
aW5nIHRoZSBidWZmZXIgbW9kZSBiZWZvcmUgdGhlIGNhbGxiYWNrIHVzDQpyZWdpc3RlcmVkLCB3
b3JzdCBjYXNlIGl0IHdpbGwgbWlzcyBldmVudCB0aWxsIHRoZSBjYWxsYmFjayBpcw0KcmVnaXN0
ZXJlZC4NCg0KQnV0IHdlIGNhbiBjYWxswqBzZW5zb3JfaHViX3JlZ2lzdGVyX2NhbGxiYWNrKCkN
CmJlZm9yZcKgZGV2bV9paW9fZGV2aWNlX3JlZ2lzdGVyKCksIGJ1dCB0aGUgd2UgbmVlZCB0byBt
YWtlIHN1cmUgdGhhdA0KdGhlwqBzZW5zb3JfaHViX3JlbW92ZV9jYWxsYmFjaygpIGlzIGNhbGxl
ZA0KaWbCoGRldm1faWlvX2RldmljZV9yZWdpc3RlcigpIGZhaWxzLg0KDQo+ID4gDQo+ID4gKw0K
PiA+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaW5kaW9fZGV2KTsNCj4gPiArDQo+ID4g
Kwl0ZW1wZXJhdHVyZV9zdGF0ZS0+Y2FsbGJhY2tzLnNlbmRfZXZlbnQgPQ0KPiA+IHRlbXBlcmF0
dXJlX3Byb2NfZXZlbnQ7DQo+ID4gKwl0ZW1wZXJhdHVyZV9zdGF0ZS0+Y2FsbGJhY2tzLmNhcHR1
cmVfc2FtcGxlID0NCj4gPiArCQkJCQkJdGVtcGVyYXR1cmVfY2FwdHVyDQo+ID4gZV9zYW1wbGU7
DQo+ID4gKwl0ZW1wZXJhdHVyZV9zdGF0ZS0+Y2FsbGJhY2tzLnBkZXYgPSBwZGV2Ow0KPiA+ICsJ
cmV0ID0gc2Vuc29yX2h1Yl9yZWdpc3Rlcl9jYWxsYmFjayhoc2RldiwNCj4gPiBISURfVVNBR0Vf
U0VOU09SX1RFTVBFUkFUVVJFLA0KPiA+ICsJCQkJCSZ0ZW1wZXJhdHVyZV9zdGF0ZS0NCj4gPiA+
Y2FsbGJhY2tzKTvCoA0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gK2Vycm9yX3VucmVn
X2J1ZmZlcl9mdW5jczoNCj4gPiArCWlpb190cmlnZ2VyZWRfYnVmZmVyX2NsZWFudXAoaW5kaW9f
ZGV2KTsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEZ1bmN0aW9u
IHRvIGRlaW5pdGlhbGl6ZSB0aGUgcHJvY2Vzc2luZyBmb3IgdXNhZ2UgaWQgKi8NCj4gPiArc3Rh
dGljIGludCBoaWRfdGVtcGVyYXR1cmVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk
ZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBoaWRfc2Vuc29yX2h1Yl9kZXZpY2UgKmhzZGV2ID0g
cGRldi0NCj4gPiA+ZGV2LnBsYXRmb3JtX2RhdGE7DQo+ID4gKw0KPiA+ICsJc2Vuc29yX2h1Yl9y
ZW1vdmVfY2FsbGJhY2soaHNkZXYsDQo+ID4gSElEX1VTQUdFX1NFTlNPUl9URU1QRVJBVFVSRSk7
DQoNCmhpZF9zZW5zb3JfcmVtb3ZlX3RyaWdnZXIoKQ0KDQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7
DQo+ID4gK30NCj4gPiArDQo+ID7CoA0KVGhhbmtzLA0KU3Jpbml2YXM=

  reply	other threads:[~2017-02-07  0:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-04 13:47 [PATCH] iio: hid: Add temperature sensor support Song Hongyan
2017-02-04 13:47 ` Song Hongyan
     [not found] ` <1486216059-9310-1-git-send-email-hongyan.song-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-02-04 12:02   ` Jonathan Cameron
2017-02-04 12:02     ` Jonathan Cameron
2017-02-07  0:48     ` Pandruvada, Srinivas [this message]
2017-02-07  0:48       ` Pandruvada, Srinivas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1486428534.18380.148.camel@intel.com \
    --to=srinivas.pandruvada@intel.com \
    --cc=hongyan.song@intel.com \
    --cc=jic23@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.