All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1451604555.4047.39.camel@intel.com>

diff --git a/a/1.txt b/N1/1.txt
index 4243cfe..0501e64 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,108 +1,177 @@
-T24gVGh1LCAyMDE1LTEyLTMxIGF0IDE1OjE4IC0wODAwLCBTcmluaXZhcyBQYW5kcnV2YWRhIHdy
-b3RlOg0KPiBPbiBUaHUsIDIwMTUtMTItMzEgYXQgMTE6MTggLTA4MDAsIEVkdWFyZG8gVmFsZW50
-aW4gd3JvdGU6DQo+ID4gT24gU2F0LCBTZXAgMjYsIDIwMTUgYXQgMDM6MDU6MDhQTSAtMDcwMCwg
-U3Jpbml2YXMgUGFuZHJ1dmFkYQ0KPiA+IHdyb3RlOg0KPiA+ID4gVGhpcyBjaGFuZ2UgcmVnaXN0
-ZXJzIHRlbXBlcmF0dXJlIHNlbnNvciBpbiBhIHRoZXJtYWwgem9uZSBhcyBhbg0KPiA+ID4gSUlP
-DQo+ID4gPiB0ZW1wZXJhdHVyZSBkZXZpY2UuIFRoaXMgYWxsb3dzIHVzZXIgc3BhY2UgdGhlcm1h
-bCBhcHBsaWNhdGlvbiB0bw0KPiA+ID4gZnVsbHkNCj4gPiA+IHV0aWxpemUgSUlPIGNhcGFiaWxp
-dHkgdG8gcmVhZCB0ZW1wZXJhdHVyZSBldmVudHMgYW5kIHNhbXBsZXMuDQo+ID4gPiBUaGUgcHJp
-bWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGZv
-cg0KPiA+ID4gdXNlcg0KPiA+ID4gc3BhY2UgdGhlcm1hbCBjb250cm9sbGVycyBsaWtlIExpbnV4
-IHRoZXJtYWwgZGFlbW9uIG9yIEludGVswq4NCj4gPiA+IER5bmFtaWMNCj4gPiA+IFBsYXRmb3Jt
-IGFuZCBUaGVybWFsIEZyYW1ld29yayAoRFBURikgZm9yIENocm9taXVtIE9TLg0KPiA+ID4gVGhl
-IGN1cnJlbnQgc3lzZnMgaGFzIHNldmVyYWwgbGltaXRhdGlvbnMsIHdoaWNoIGZvcmNlcyB0aGUN
-Cj4gPiA+IGN1cnJlbnQNCj4gPiA+IHVzZXIgc3BhY2UgdG8gdXNlIHBvbGxpbmcgYXMgdGhlIHNh
-ZmUgd2F5LiBUaGlzIHBvbGxpbmcgY2F1c2VzDQo+ID4gPiBwZXJmb3JtYW5jZQ0KPiA+ID4gYm90
-dGxlbmVja3MgYXMgc29tZSBkZXZpY2VzIHJlcXVpcmVzIGV4dHJlbWVseSBhZ2dyZXNzaXZlDQo+
-ID4gPiByZXNwb25zZQ0KPiA+ID4gdG8NCj4gPiA+IGNoYW5naW5nIHRlbXBlcmF0dXJlIGNvbmRp
-dGlvbnMuDQo+ID4gPiBUaGVzZSBhcmUgc29tZSBsaW1pdGF0aW9ucywgd2hpY2ggdGhpcyBjaGFu
-Z2UgdHJpZXMgdG8gYWRkcmVzczoNCj4gPiA+IC0gVGVtcGVyYXR1cmUgcmVhZGluZyB2aWEgc3lz
-ZnMgYXR0cmlidXRlLCB3aGljaCBuZWVkcyBjb252ZXJzaW9uDQo+ID4gPiBmcm9tDQo+ID4gPiBz
-dHJpbmcgdG8gaW50DQo+ID4gPiAtIE5vIHdheSB0byBzZXQgdGhyZXNob2xkIHNldHRpbmdzIHRv
-IGF2b2lkIHBvbGxpbmcgZm9yDQo+ID4gPiB0ZW1wZXJhdHVyZQ0KPiA+ID4gY2hhbmdlDQo+ID4g
-PiB3aXRob3V0IHVzaW5nIGEgUlcgcGFzc2l2ZSB0cmlwIHBvaW50Lg0KPiA+ID4gLSBFdmVudCBu
-b3RpZmljYXRpb25zIHZpYSBzbG93IGtvYmplY3QgdWV2ZW50cywgd2hpY2ggbmVlZHMNCj4gPiA+
-IHBhcnNpbmcNCj4gPiA+IHRvIGlkDQo+ID4gPiB0aGUgem9uZSBhbmQgcmVhZCB0ZW1wZXJhdHVy
-ZQ0KPiA+ID4gLSBPbmx5IHB1bGwgaW50ZXJmYWNlIGZyb20gdXNlciBzcGFjZSwga2VybmVsIGRy
-aXZlcnMgY2FuJ3Qgc2VuZA0KPiA+ID4gc2FtcGxlcw0KPiA+ID4gLSBPbmUgc2FtcGxlIGF0IGEg
-dGltZSByZWFkIGZyb20gdXNlciBzcGFjZQ0KPiA+ID4gVGhlc2UgbGltaXRhdGlvbnMgY2FuIGJl
-IGFkZHJlc3NlZCBieSByZWdpc3RlcmluZyB0ZW1wZXJhdHVyZQ0KPiA+ID4gc2Vuc29yDQo+ID4g
-PiBhcyBhbiBJSU8gZGV2aWNlLiBJSU8gcHJvdmlkZXMNCj4gPiA+IC0gYnVmZmVyZWQgYWNjZXNz
-IHZpYSAvZGV2L2lpbzpkZXZpY2VYIG5vZGUgd2l0aCBzZWxlY3QvcG9sbA0KPiA+ID4gY2FwYWJp
-bGl0eQ0KPiA+ID4gLSB0ZW1wZXJhdHVyZSB0aHJlc2hvbGRzIHNldHRpbmcgdmlhIGlpbyBldmVu
-dCB0aHJlc2hvbGRzDQo+ID4gPiAtIFdhaXQgYW5kIHJlY2VpdmUgZXZlbnRzDQo+ID4gPiAtIEFi
-bGUgdG8gdXNlIGRpZmZlcmVudCBleHRlcm5hbCB0cmlnZ2VyIChkYXRhIHJlYWR5IGluZGljYXRp
-b25zKQ0KPiA+ID4gYW5kIHB1c2gNCj4gPiA+IHNhbXBsZXMgdG8gYnVmZmVycw0KPiA+ID4gDQo+
-ID4gPiBOZXh0IHNldCBvZiBwYXRjaGVzIHVzZXMgdGhlIElJTyBiaW5kaW5nIGludHJvZHVjZWQg
-aW4gdGhpcw0KPiA+ID4gcGF0Y2hzZXQuDQo+ID4gPiBUaGUgaWlvIGRldmljZSBjcmVhdGVkIGR1
-cmluZyBjYWxsIHRvDQo+ID4gPiB0aGVybWFsX3pvbmVfZGV2aWNlX3JlZ2lzdGVyLg0KPiA+ID4g
-U2FtcGxlcw0KPiA+ID4gYXJlIHB1c2hlZCB0byBpaW8gYnVmZmVycyB3aGVuIHRoZXJtYWxfem9u
-ZV9kZXZpY2VfdXBkYXRlIGlzDQo+ID4gPiBjYWxsZWQNCj4gPiA+IGZyb20NCj4gPiA+IGNsaWVu
-dCBkcml2ZXJzLg0KPiA+ID4gDQo+ID4gPiBOZXcgdGhlcm1hbCB6b25lIGRldmljZSBjYWxsYmFj
-a3M6DQo+ID4gPiBJdCBpbnRyb2R1Y2VzIHRocmVlIG5ldyBjYWxsYmFja3MgZm9yIHRoZXJtYWwg
-Y2xpZW50IGRyaXZlcnM6DQo+ID4gPiBnZXRfdGhyZXNob2xkX3RlbXA6IEdldCB0aGUgY3VycmVu
-dCB0aHJlc2hvbGQgdGVtcGVyYXR1cmUNCj4gPiA+IHNldF90aHJlc2hvbGRfdGVtcDogU2V0IHRo
-ZSBjdXJyZW50IHRocmVzaG9sZCB0ZW1wZXJhdHVyZQ0KPiA+ID4gY2hlY2tfbm90aWZpY2F0aW9u
-X3N1cHBvcnQ6IEluZm9ybSB0aGF0IHRoZSBjbGllbnQgZHJpdmVyIGhhcw0KPiA+ID4gYXN5bmNo
-cm9ub3VzDQo+ID4gPiBub3RpZmljYXRpb24gbWVjaGFuaXNtLiBJZiBpdCBpcyB0aGVuIHBvbGxp
-bmcgY2FuIGJlIGF2b2lkZWQgZm9yDQo+ID4gPiB0aGUNCj4gPiA+IHRlbXBlcmF0dXJlIHNlbnNv
-ci4NCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogU3Jpbml2YXMgUGFuZHJ1dmFkYSA8DQo+
-ID4gPiBzcmluaXZhcy5wYW5kcnV2YWRhQGxpbnV4LmludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiAN
-Cj4gW0N1dF0NCj4gDQo+ID4gPiANCj4gPiA+ICsJaW50ICgqZ2V0X3RocmVzaG9sZF90ZW1wKShz
-dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLA0KPiA+ID4gPiA+IA0KPiA+ID4gaW50LA0KPiA+
-ID4gKwkJCQkgIGludCAqKTsNCj4gPiA+ICsJaW50ICgqc2V0X3RocmVzaG9sZF90ZW1wKShzdHJ1
-Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLA0KPiA+ID4gaW50LA0KPiA+ID4gKwkJCQkgIGludCk7
-DQo+ID4gPiArCWludCAoKnNldF9ub3RpZmljYXRpb25fc3RhdHVzKShzdHJ1Y3QNCj4gPiA+IHRo
-ZXJtYWxfem9uZV9kZXZpY2UNCj4gPiA+ICosDQo+ID4gPiArCQkJCSAgICAgICBib29sIHN0YXR1
-cyk7DQo+ID4gPiArCWJvb2wgKCpjaGVja19ub3RpZmljYXRpb25fc3VwcG9ydCkoc3RydWN0DQo+
-ID4gPiB0aGVybWFsX3pvbmVfZGV2aWNlICopOw0KPiA+IA0KPiA+IA0KPiA+IENhbiBhbiBleGlz
-dGluZyB0aGVybWFsIHNlbnNvciBiZW5lZml0IG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eT8gSWYN
-Cj4gPiB5ZXMsDQo+IA0KPiBZZXMuIFRoZSBleGlzdGluZyBkcml2ZXIgd2lsbCBiZSB1c2luZyB0
-aGUgdHJpcHMgaW5zdGVhZCBvZg0KPiB0aHJlc2hvbGRzLg0KPiBBcyB3ZSBkaXNjdXNzZWQgZHVy
-aW5nIExQQywNCj4gdHJpcHMgKHBhc2l2ZS9hY3RpdmUvLi4pOiBUaGVzZSBhcmUgdGVtcGVyYXR1
-cmUgcG9pbnRzIHRvIHdoaWNoIGENCj4gY29vbGluZyBhY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBi
-eSBiaW5kaW5nIGEgY29vbGluZyBkZXZpY2UuIFRoZQ0KPiBleGlzdGluZyBkcml2ZXJzIHdobyBz
-dXBwb3J0IFJXIHRyaXBzLCB1c2VyIHNwYWNlIHN0aWxsIGNhbiB1cGRhdGUNCj4gdGhvc2UgYW5k
-IGdldCBzYW1wbGUgbm90aWZpY2F0aW9ucy4gRXhpc3RpbmcgZHJpdmVycyBlaXRoZXIgaGF2ZQ0K
-PiBwb2xsaW5nIG9yIGludGVycnVwdCBzdXBvcnQgdG8gZXZhbHVhdGUgdHJpcHMgYW5kIGNhbGwN
-Cj4gdGhlcm1hbF96b25lX2RldmljZV91cGRhdGUoKSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gc2Ft
-cGxlIHB1c2hlZCB0bw0KPiB1c2VyIHNwYWNlLg0KPiAgDQo+IFRocmVzaG9sZHM6IFRoZXNlIGFy
-ZSBzZW5zb3IgdGVtcGVyYXR1cmUgcG9pbnRzIHdoaWNoIHVzZXIgc3BhY2UNCj4gd2FudHMNCj4g
-dG8gZ2V0IG5vdGlmaWNhdGlvbiBvZiB0ZW1wZXJhdHVyZSBjaGFuZ2UuIFRoZXkgd2lsbCBub3Qg
-YmUgcHJlc2VudGVkDQo+IGFzIHBhc3NpdmUvYWN0aXZlL2hvdCB0cmlwcy4gVXNlciBzcGFjZSBj
-YW4gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aA0KPiB0aGUNCj4gbm90aWZpY2F0aW9ucy4gSWYgZXhp
-c3RpbmcgZHJpdmVycyBkb24ndCB3YW50IHRvIHByZXNlbnQgYXMgZmFrZQ0KPiB0cmlwcywNCj4g
-dGhlbiB0aGV5IG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFjayBzdXBwb3J0Lg0KPiANCj4gPiBUaGUg
-cHJvYmxlbSBJIGhhdmUgd2l0aCB0aGUgYWJvdmUgaXMgdGhlIGZhY3QgdGhhdCB0aGV5IGFkZA0K
-PiA+IGNhbGxiYWNrcw0KPiA+IGFuZCBiZWhhdmlvciBlbGlnaWJsZSBvbmx5IGZvciBhIHN1YnNl
-dCBvZiB0aGVybWFsIHpvbmVzLg0KPiA+IA0KPiA+IElmIHdlIGFyZSBtb3ZpbmcgdG8gSUlPIGlu
-dGVncmF0ZWQgbW9kZSwgdGhlIGV4aXN0aW5nIGRyaXZlcnMgbmVlZA0KPiA+IHRvDQo+ID4gYmUN
-Cj4gPiBjb252ZXJ0ZWQsIHRvIGF2b2lkIGRpdmVyc2lmaWNhdGlvbiBvZiBiZWhhdmlvci4gRm9y
-IGV4YW1wbGUsIHRoZXJlDQo+ID4gaXMNCj4gPiBleGlzdGluZyBub3RpZmljYXRpb24gY2FsbGJh
-Y2tzLiBBbHNvLCBob3QgdHJpcCBwb2ludHMgYXJlDQo+ID4gZGVzY3JpYmVkDQo+ID4gYXMNCj4g
-PiBub3RpZmljYXRpb24gcG9pbnRzLg0KPiA+IA0KPiA+IEkgYmVsaWV2ZSB0aGUgcGF0Y2ggc2V0
-IG5lZWRzIHRvIGRvY3VtZW50IGFsc28gdGhlIG5leHQgc3RlcHMgb24NCj4gPiB0aGlzDQo+ID4g
-bW92ZS4NCj4gPiANCj4gDQo+IElmIHdlIGRlY2lkZSB0byBtZXJnZSB0aGlzIGZ1bmN0aW9uYWxp
-dHksIEkgd2lsbCBwdXNoIGEgZG9jdW1lbnRhdGlvbg0KPiBhbmQgSUlPIHNhbXBsZSBwcm9ncmFt
-IHRvIHVzZSB0aGVzZSBmZWF0dXJlcy4NCj4gDQpUaGUgc2VyaXMgaXMgb2xkIGVub3VnaCwgSSBm
-b3Jnb3QuIFRoZSBwYXRjaCBhZGRzIGRvY3VtZW50YXRpb24NCltQQVRDSCA1LzZdIHRoZXJtYWw6
-IGlpbyBEb2N1bWVudGF0aW9uDQpUaGVyZSBpcyBhbHdheXMgc2NvcGUgdG8gYWRkIG1vcmUuDQoN
-ClRoYW5rcywNClNyaW5pdmFzDQoNCg0KPiBUaGFua3MsDQo+IFNyaW5pdmFzDQo+IA0KPiA+IA0K
-PiA+ID4gIAlpbnQgKCpub3RpZnkpIChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLCBpbnQs
-DQo+ID4gPiAgCQkgICAgICAgZW51bSB0aGVybWFsX3RyaXBfdHlwZSk7DQo+ID4gPiAgfTsNCj4g
-PiA+IEBAIC0xNDgsNiArMTU1LDggQEAgc3RydWN0IHRoZXJtYWxfYXR0ciB7DQo+ID4gPiAgCWNo
-YXIgbmFtZVtUSEVSTUFMX05BTUVfTEVOR1RIXTsNCj4gPiA+ICB9Ow0KPiA+ID4gIA0KPiA+ID4g
-K3N0cnVjdCBpaW9fZGV2Ow0KPiA+ID4gKw0KPiA+ID4gIC8qKg0KPiA+ID4gICAqIHN0cnVjdCB0
-aGVybWFsX3pvbmVfZGV2aWNlIC0gc3RydWN0dXJlIGZvciBhIHRoZXJtYWwgem9uZQ0KPiA+ID4g
-ICAqIEBpZDoJCXVuaXF1ZSBpZCBudW1iZXIgZm9yIGVhY2ggdGhlcm1hbCB6b25lDQo+ID4gPiBA
-QCAtMTgyLDYgKzE5MSw3IEBAIHN0cnVjdCB0aGVybWFsX2F0dHIgew0KPiA+ID4gICAqIEBsb2Nr
-Oglsb2NrIHRvIHByb3RlY3QgdGhlcm1hbF9pbnN0YW5jZXMgbGlzdA0KPiA+ID4gICAqIEBub2Rl
-Oglub2RlIGluIHRoZXJtYWxfdHpfbGlzdCAoaW4gdGhlcm1hbF9jb3JlLmMpDQo+ID4gPiAgICog
-QHBvbGxfcXVldWU6CWRlbGF5ZWQgd29yayBmb3IgcG9sbGluZw0KPiA+ID4gKyAqIEBpbmRpb19k
-ZXY6CXBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgYW4gSUlPIGRldiBmb3IgdGhpcw0KPiA+ID4gem9u
-ZQ0KPiA+ID4gICAqLw0KPiA+ID4gIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlIHsNCj4gPiA+
-ICAJaW50IGlkOw0KPiA+ID4gQEAgLTIwOCw2ICsyMTgsOSBAQCBzdHJ1Y3QgdGhlcm1hbF96b25l
-X2RldmljZSB7DQo+ID4gPiAgCXN0cnVjdCBtdXRleCBsb2NrOw0KPiA+ID4gIAlzdHJ1Y3QgbGlz
-dF9oZWFkIG5vZGU7DQo+ID4gPiAgCXN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbF9xdWV1ZTsNCj4g
-PiA+ICsjaWYgZGVmaW5lZChDT05GSUdfVEhFUk1BTF9JSU8pDQo+ID4gPiArCXN0cnVjdCBpaW9f
-ZGV2ICppbmRpb19kZXY7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiAgfTsNCj4gPiA+ICA=
+On Thu, 2015-12-31 at 15:18 -0800, Srinivas Pandruvada wrote:
+> On Thu, 2015-12-31 at 11:18 -0800, Eduardo Valentin wrote:
+> > On Sat, Sep 26, 2015 at 03:05:08PM -0700, Srinivas Pandruvada
+> > wrote:
+> > > This change registers temperature sensor in a thermal zone as an
+> > > IIO
+> > > temperature device. This allows user space thermal application to
+> > > fully
+> > > utilize IIO capability to read temperature events and samples.
+> > > The primary motivation for this change to improve performance for
+> > > user
+> > > space thermal controllers like Linux thermal daemon or Intel®
+> > > Dynamic
+> > > Platform and Thermal Framework (DPTF) for Chromium OS.
+> > > The current sysfs has several limitations, which forces the
+> > > current
+> > > user space to use polling as the safe way. This polling causes
+> > > performance
+> > > bottlenecks as some devices requires extremely aggressive
+> > > response
+> > > to
+> > > changing temperature conditions.
+> > > These are some limitations, which this change tries to address:
+> > > - Temperature reading via sysfs attribute, which needs conversion
+> > > from
+> > > string to int
+> > > - No way to set threshold settings to avoid polling for
+> > > temperature
+> > > change
+> > > without using a RW passive trip point.
+> > > - Event notifications via slow kobject uevents, which needs
+> > > parsing
+> > > to id
+> > > the zone and read temperature
+> > > - Only pull interface from user space, kernel drivers can't send
+> > > samples
+> > > - One sample at a time read from user space
+> > > These limitations can be addressed by registering temperature
+> > > sensor
+> > > as an IIO device. IIO provides
+> > > - buffered access via /dev/iio:deviceX node with select/poll
+> > > capability
+> > > - temperature thresholds setting via iio event thresholds
+> > > - Wait and receive events
+> > > - Able to use different external trigger (data ready indications)
+> > > and push
+> > > samples to buffers
+> > > 
+> > > Next set of patches uses the IIO binding introduced in this
+> > > patchset.
+> > > The iio device created during call to
+> > > thermal_zone_device_register.
+> > > Samples
+> > > are pushed to iio buffers when thermal_zone_device_update is
+> > > called
+> > > from
+> > > client drivers.
+> > > 
+> > > New thermal zone device callbacks:
+> > > It introduces three new callbacks for thermal client drivers:
+> > > get_threshold_temp: Get the current threshold temperature
+> > > set_threshold_temp: Set the current threshold temperature
+> > > check_notification_support: Inform that the client driver has
+> > > asynchronous
+> > > notification mechanism. If it is then polling can be avoided for
+> > > the
+> > > temperature sensor.
+> > > 
+> > > Signed-off-by: Srinivas Pandruvada <
+> > > srinivas.pandruvada@linux.intel.com>
+> > > ---
+> 
+> [Cut]
+> 
+> > > 
+> > > +	int (*get_threshold_temp)(struct thermal_zone_device *,
+> > > > > 
+> > > int,
+> > > +				  int *);
+> > > +	int (*set_threshold_temp)(struct thermal_zone_device *,
+> > > int,
+> > > +				  int);
+> > > +	int (*set_notification_status)(struct
+> > > thermal_zone_device
+> > > *,
+> > > +				       bool status);
+> > > +	bool (*check_notification_support)(struct
+> > > thermal_zone_device *);
+> > 
+> > 
+> > Can an existing thermal sensor benefit of the new functionality? If
+> > yes,
+> 
+> Yes. The existing driver will be using the trips instead of
+> thresholds.
+> As we discussed during LPC,
+> trips (pasive/active/..): These are temperature points to which a
+> cooling action can be performed by binding a cooling device. The
+> existing drivers who support RW trips, user space still can update
+> those and get sample notifications. Existing drivers either have
+> polling or interrupt suport to evaluate trips and call
+> thermal_zone_device_update(), which will result in sample pushed to
+> user space.
+>  
+> Thresholds: These are sensor temperature points which user space
+> wants
+> to get notification of temperature change. They will not be presented
+> as passive/active/hot trips. User space can decide what to do with
+> the
+> notifications. If existing drivers don't want to present as fake
+> trips,
+> then they need to add the callback support.
+> 
+> > The problem I have with the above is the fact that they add
+> > callbacks
+> > and behavior eligible only for a subset of thermal zones.
+> > 
+> > If we are moving to IIO integrated mode, the existing drivers need
+> > to
+> > be
+> > converted, to avoid diversification of behavior. For example, there
+> > is
+> > existing notification callbacks. Also, hot trip points are
+> > described
+> > as
+> > notification points.
+> > 
+> > I believe the patch set needs to document also the next steps on
+> > this
+> > move.
+> > 
+> 
+> If we decide to merge this functionality, I will push a documentation
+> and IIO sample program to use these features.
+> 
+The seris is old enough, I forgot. The patch adds documentation
+[PATCH 5/6] thermal: iio Documentation
+There is always scope to add more.
+
+Thanks,
+Srinivas
+
+
+> Thanks,
+> Srinivas
+> 
+> > 
+> > >  	int (*notify) (struct thermal_zone_device *, int,
+> > >  		       enum thermal_trip_type);
+> > >  };
+> > > @@ -148,6 +155,8 @@ struct thermal_attr {
+> > >  	char name[THERMAL_NAME_LENGTH];
+> > >  };
+> > >  
+> > > +struct iio_dev;
+> > > +
+> > >  /**
+> > >   * struct thermal_zone_device - structure for a thermal zone
+> > >   * @id:		unique id number for each thermal zone
+> > > @@ -182,6 +191,7 @@ struct thermal_attr {
+> > >   * @lock:	lock to protect thermal_instances list
+> > >   * @node:	node in thermal_tz_list (in thermal_core.c)
+> > >   * @poll_queue:	delayed work for polling
+> > > + * @indio_dev:	pointer to instance of an IIO dev for this
+> > > zone
+> > >   */
+> > >  struct thermal_zone_device {
+> > >  	int id;
+> > > @@ -208,6 +218,9 @@ struct thermal_zone_device {
+> > >  	struct mutex lock;
+> > >  	struct list_head node;
+> > >  	struct delayed_work poll_queue;
+> > > +#if defined(CONFIG_THERMAL_IIO)
+> > > +	struct iio_dev *indio_dev;
+> > > +#endif
+> > >  };
+> > >
diff --git a/a/content_digest b/N1/content_digest
index 7b3fde1..e34cdb9 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -2,124 +2,194 @@
  "ref\01443305111-28272-4-git-send-email-srinivas.pandruvada@linux.intel.com\0"
  "ref\020151231191847.GA14793@localhost.localdomain\0"
  "ref\01451603888.4047.34.camel@linux.intel.com\0"
- "From\0Pandruvada, Srinivas <srinivas.pandruvada@intel.com>\0"
+ "ref\01451603888.4047.34.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org\0"
+ "From\0Pandruvada, Srinivas <srinivas.pandruvada-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>\0"
  "Subject\0Re: [PATCH 3/6] thermal: iio device for thermal sensor\0"
  "Date\0Thu, 31 Dec 2015 23:31:12 +0000\0"
- "To\0edubezval@gmail.com <edubezval@gmail.com>\0"
+ "To\0edubezval-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <edubezval-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>\0"
  "Cc\0Zhang"
-  Rui <rui.zhang@intel.com>
-  linux-iio@vger.kernel.org <linux-iio@vger.kernel.org>
-  jic23@kernel.org <jic23@kernel.org>
- " linux-pm@vger.kernel.org <linux-pm@vger.kernel.org>\0"
+  Rui <rui.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
+  linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
+  jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
+ " linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>\0"
  "\00:1\0"
  "b\0"
- "T24gVGh1LCAyMDE1LTEyLTMxIGF0IDE1OjE4IC0wODAwLCBTcmluaXZhcyBQYW5kcnV2YWRhIHdy\n"
- "b3RlOg0KPiBPbiBUaHUsIDIwMTUtMTItMzEgYXQgMTE6MTggLTA4MDAsIEVkdWFyZG8gVmFsZW50\n"
- "aW4gd3JvdGU6DQo+ID4gT24gU2F0LCBTZXAgMjYsIDIwMTUgYXQgMDM6MDU6MDhQTSAtMDcwMCwg\n"
- "U3Jpbml2YXMgUGFuZHJ1dmFkYQ0KPiA+IHdyb3RlOg0KPiA+ID4gVGhpcyBjaGFuZ2UgcmVnaXN0\n"
- "ZXJzIHRlbXBlcmF0dXJlIHNlbnNvciBpbiBhIHRoZXJtYWwgem9uZSBhcyBhbg0KPiA+ID4gSUlP\n"
- "DQo+ID4gPiB0ZW1wZXJhdHVyZSBkZXZpY2UuIFRoaXMgYWxsb3dzIHVzZXIgc3BhY2UgdGhlcm1h\n"
- "bCBhcHBsaWNhdGlvbiB0bw0KPiA+ID4gZnVsbHkNCj4gPiA+IHV0aWxpemUgSUlPIGNhcGFiaWxp\n"
- "dHkgdG8gcmVhZCB0ZW1wZXJhdHVyZSBldmVudHMgYW5kIHNhbXBsZXMuDQo+ID4gPiBUaGUgcHJp\n"
- "bWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGZv\n"
- "cg0KPiA+ID4gdXNlcg0KPiA+ID4gc3BhY2UgdGhlcm1hbCBjb250cm9sbGVycyBsaWtlIExpbnV4\n"
- "IHRoZXJtYWwgZGFlbW9uIG9yIEludGVswq4NCj4gPiA+IER5bmFtaWMNCj4gPiA+IFBsYXRmb3Jt\n"
- "IGFuZCBUaGVybWFsIEZyYW1ld29yayAoRFBURikgZm9yIENocm9taXVtIE9TLg0KPiA+ID4gVGhl\n"
- "IGN1cnJlbnQgc3lzZnMgaGFzIHNldmVyYWwgbGltaXRhdGlvbnMsIHdoaWNoIGZvcmNlcyB0aGUN\n"
- "Cj4gPiA+IGN1cnJlbnQNCj4gPiA+IHVzZXIgc3BhY2UgdG8gdXNlIHBvbGxpbmcgYXMgdGhlIHNh\n"
- "ZmUgd2F5LiBUaGlzIHBvbGxpbmcgY2F1c2VzDQo+ID4gPiBwZXJmb3JtYW5jZQ0KPiA+ID4gYm90\n"
- "dGxlbmVja3MgYXMgc29tZSBkZXZpY2VzIHJlcXVpcmVzIGV4dHJlbWVseSBhZ2dyZXNzaXZlDQo+\n"
- "ID4gPiByZXNwb25zZQ0KPiA+ID4gdG8NCj4gPiA+IGNoYW5naW5nIHRlbXBlcmF0dXJlIGNvbmRp\n"
- "dGlvbnMuDQo+ID4gPiBUaGVzZSBhcmUgc29tZSBsaW1pdGF0aW9ucywgd2hpY2ggdGhpcyBjaGFu\n"
- "Z2UgdHJpZXMgdG8gYWRkcmVzczoNCj4gPiA+IC0gVGVtcGVyYXR1cmUgcmVhZGluZyB2aWEgc3lz\n"
- "ZnMgYXR0cmlidXRlLCB3aGljaCBuZWVkcyBjb252ZXJzaW9uDQo+ID4gPiBmcm9tDQo+ID4gPiBz\n"
- "dHJpbmcgdG8gaW50DQo+ID4gPiAtIE5vIHdheSB0byBzZXQgdGhyZXNob2xkIHNldHRpbmdzIHRv\n"
- "IGF2b2lkIHBvbGxpbmcgZm9yDQo+ID4gPiB0ZW1wZXJhdHVyZQ0KPiA+ID4gY2hhbmdlDQo+ID4g\n"
- "PiB3aXRob3V0IHVzaW5nIGEgUlcgcGFzc2l2ZSB0cmlwIHBvaW50Lg0KPiA+ID4gLSBFdmVudCBu\n"
- "b3RpZmljYXRpb25zIHZpYSBzbG93IGtvYmplY3QgdWV2ZW50cywgd2hpY2ggbmVlZHMNCj4gPiA+\n"
- "IHBhcnNpbmcNCj4gPiA+IHRvIGlkDQo+ID4gPiB0aGUgem9uZSBhbmQgcmVhZCB0ZW1wZXJhdHVy\n"
- "ZQ0KPiA+ID4gLSBPbmx5IHB1bGwgaW50ZXJmYWNlIGZyb20gdXNlciBzcGFjZSwga2VybmVsIGRy\n"
- "aXZlcnMgY2FuJ3Qgc2VuZA0KPiA+ID4gc2FtcGxlcw0KPiA+ID4gLSBPbmUgc2FtcGxlIGF0IGEg\n"
- "dGltZSByZWFkIGZyb20gdXNlciBzcGFjZQ0KPiA+ID4gVGhlc2UgbGltaXRhdGlvbnMgY2FuIGJl\n"
- "IGFkZHJlc3NlZCBieSByZWdpc3RlcmluZyB0ZW1wZXJhdHVyZQ0KPiA+ID4gc2Vuc29yDQo+ID4g\n"
- "PiBhcyBhbiBJSU8gZGV2aWNlLiBJSU8gcHJvdmlkZXMNCj4gPiA+IC0gYnVmZmVyZWQgYWNjZXNz\n"
- "IHZpYSAvZGV2L2lpbzpkZXZpY2VYIG5vZGUgd2l0aCBzZWxlY3QvcG9sbA0KPiA+ID4gY2FwYWJp\n"
- "bGl0eQ0KPiA+ID4gLSB0ZW1wZXJhdHVyZSB0aHJlc2hvbGRzIHNldHRpbmcgdmlhIGlpbyBldmVu\n"
- "dCB0aHJlc2hvbGRzDQo+ID4gPiAtIFdhaXQgYW5kIHJlY2VpdmUgZXZlbnRzDQo+ID4gPiAtIEFi\n"
- "bGUgdG8gdXNlIGRpZmZlcmVudCBleHRlcm5hbCB0cmlnZ2VyIChkYXRhIHJlYWR5IGluZGljYXRp\n"
- "b25zKQ0KPiA+ID4gYW5kIHB1c2gNCj4gPiA+IHNhbXBsZXMgdG8gYnVmZmVycw0KPiA+ID4gDQo+\n"
- "ID4gPiBOZXh0IHNldCBvZiBwYXRjaGVzIHVzZXMgdGhlIElJTyBiaW5kaW5nIGludHJvZHVjZWQg\n"
- "aW4gdGhpcw0KPiA+ID4gcGF0Y2hzZXQuDQo+ID4gPiBUaGUgaWlvIGRldmljZSBjcmVhdGVkIGR1\n"
- "cmluZyBjYWxsIHRvDQo+ID4gPiB0aGVybWFsX3pvbmVfZGV2aWNlX3JlZ2lzdGVyLg0KPiA+ID4g\n"
- "U2FtcGxlcw0KPiA+ID4gYXJlIHB1c2hlZCB0byBpaW8gYnVmZmVycyB3aGVuIHRoZXJtYWxfem9u\n"
- "ZV9kZXZpY2VfdXBkYXRlIGlzDQo+ID4gPiBjYWxsZWQNCj4gPiA+IGZyb20NCj4gPiA+IGNsaWVu\n"
- "dCBkcml2ZXJzLg0KPiA+ID4gDQo+ID4gPiBOZXcgdGhlcm1hbCB6b25lIGRldmljZSBjYWxsYmFj\n"
- "a3M6DQo+ID4gPiBJdCBpbnRyb2R1Y2VzIHRocmVlIG5ldyBjYWxsYmFja3MgZm9yIHRoZXJtYWwg\n"
- "Y2xpZW50IGRyaXZlcnM6DQo+ID4gPiBnZXRfdGhyZXNob2xkX3RlbXA6IEdldCB0aGUgY3VycmVu\n"
- "dCB0aHJlc2hvbGQgdGVtcGVyYXR1cmUNCj4gPiA+IHNldF90aHJlc2hvbGRfdGVtcDogU2V0IHRo\n"
- "ZSBjdXJyZW50IHRocmVzaG9sZCB0ZW1wZXJhdHVyZQ0KPiA+ID4gY2hlY2tfbm90aWZpY2F0aW9u\n"
- "X3N1cHBvcnQ6IEluZm9ybSB0aGF0IHRoZSBjbGllbnQgZHJpdmVyIGhhcw0KPiA+ID4gYXN5bmNo\n"
- "cm9ub3VzDQo+ID4gPiBub3RpZmljYXRpb24gbWVjaGFuaXNtLiBJZiBpdCBpcyB0aGVuIHBvbGxp\n"
- "bmcgY2FuIGJlIGF2b2lkZWQgZm9yDQo+ID4gPiB0aGUNCj4gPiA+IHRlbXBlcmF0dXJlIHNlbnNv\n"
- "ci4NCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogU3Jpbml2YXMgUGFuZHJ1dmFkYSA8DQo+\n"
- "ID4gPiBzcmluaXZhcy5wYW5kcnV2YWRhQGxpbnV4LmludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiAN\n"
- "Cj4gW0N1dF0NCj4gDQo+ID4gPiANCj4gPiA+ICsJaW50ICgqZ2V0X3RocmVzaG9sZF90ZW1wKShz\n"
- "dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLA0KPiA+ID4gPiA+IA0KPiA+ID4gaW50LA0KPiA+\n"
- "ID4gKwkJCQkgIGludCAqKTsNCj4gPiA+ICsJaW50ICgqc2V0X3RocmVzaG9sZF90ZW1wKShzdHJ1\n"
- "Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLA0KPiA+ID4gaW50LA0KPiA+ID4gKwkJCQkgIGludCk7\n"
- "DQo+ID4gPiArCWludCAoKnNldF9ub3RpZmljYXRpb25fc3RhdHVzKShzdHJ1Y3QNCj4gPiA+IHRo\n"
- "ZXJtYWxfem9uZV9kZXZpY2UNCj4gPiA+ICosDQo+ID4gPiArCQkJCSAgICAgICBib29sIHN0YXR1\n"
- "cyk7DQo+ID4gPiArCWJvb2wgKCpjaGVja19ub3RpZmljYXRpb25fc3VwcG9ydCkoc3RydWN0DQo+\n"
- "ID4gPiB0aGVybWFsX3pvbmVfZGV2aWNlICopOw0KPiA+IA0KPiA+IA0KPiA+IENhbiBhbiBleGlz\n"
- "dGluZyB0aGVybWFsIHNlbnNvciBiZW5lZml0IG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eT8gSWYN\n"
- "Cj4gPiB5ZXMsDQo+IA0KPiBZZXMuIFRoZSBleGlzdGluZyBkcml2ZXIgd2lsbCBiZSB1c2luZyB0\n"
- "aGUgdHJpcHMgaW5zdGVhZCBvZg0KPiB0aHJlc2hvbGRzLg0KPiBBcyB3ZSBkaXNjdXNzZWQgZHVy\n"
- "aW5nIExQQywNCj4gdHJpcHMgKHBhc2l2ZS9hY3RpdmUvLi4pOiBUaGVzZSBhcmUgdGVtcGVyYXR1\n"
- "cmUgcG9pbnRzIHRvIHdoaWNoIGENCj4gY29vbGluZyBhY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBi\n"
- "eSBiaW5kaW5nIGEgY29vbGluZyBkZXZpY2UuIFRoZQ0KPiBleGlzdGluZyBkcml2ZXJzIHdobyBz\n"
- "dXBwb3J0IFJXIHRyaXBzLCB1c2VyIHNwYWNlIHN0aWxsIGNhbiB1cGRhdGUNCj4gdGhvc2UgYW5k\n"
- "IGdldCBzYW1wbGUgbm90aWZpY2F0aW9ucy4gRXhpc3RpbmcgZHJpdmVycyBlaXRoZXIgaGF2ZQ0K\n"
- "PiBwb2xsaW5nIG9yIGludGVycnVwdCBzdXBvcnQgdG8gZXZhbHVhdGUgdHJpcHMgYW5kIGNhbGwN\n"
- "Cj4gdGhlcm1hbF96b25lX2RldmljZV91cGRhdGUoKSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gc2Ft\n"
- "cGxlIHB1c2hlZCB0bw0KPiB1c2VyIHNwYWNlLg0KPiAgDQo+IFRocmVzaG9sZHM6IFRoZXNlIGFy\n"
- "ZSBzZW5zb3IgdGVtcGVyYXR1cmUgcG9pbnRzIHdoaWNoIHVzZXIgc3BhY2UNCj4gd2FudHMNCj4g\n"
- "dG8gZ2V0IG5vdGlmaWNhdGlvbiBvZiB0ZW1wZXJhdHVyZSBjaGFuZ2UuIFRoZXkgd2lsbCBub3Qg\n"
- "YmUgcHJlc2VudGVkDQo+IGFzIHBhc3NpdmUvYWN0aXZlL2hvdCB0cmlwcy4gVXNlciBzcGFjZSBj\n"
- "YW4gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aA0KPiB0aGUNCj4gbm90aWZpY2F0aW9ucy4gSWYgZXhp\n"
- "c3RpbmcgZHJpdmVycyBkb24ndCB3YW50IHRvIHByZXNlbnQgYXMgZmFrZQ0KPiB0cmlwcywNCj4g\n"
- "dGhlbiB0aGV5IG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFjayBzdXBwb3J0Lg0KPiANCj4gPiBUaGUg\n"
- "cHJvYmxlbSBJIGhhdmUgd2l0aCB0aGUgYWJvdmUgaXMgdGhlIGZhY3QgdGhhdCB0aGV5IGFkZA0K\n"
- "PiA+IGNhbGxiYWNrcw0KPiA+IGFuZCBiZWhhdmlvciBlbGlnaWJsZSBvbmx5IGZvciBhIHN1YnNl\n"
- "dCBvZiB0aGVybWFsIHpvbmVzLg0KPiA+IA0KPiA+IElmIHdlIGFyZSBtb3ZpbmcgdG8gSUlPIGlu\n"
- "dGVncmF0ZWQgbW9kZSwgdGhlIGV4aXN0aW5nIGRyaXZlcnMgbmVlZA0KPiA+IHRvDQo+ID4gYmUN\n"
- "Cj4gPiBjb252ZXJ0ZWQsIHRvIGF2b2lkIGRpdmVyc2lmaWNhdGlvbiBvZiBiZWhhdmlvci4gRm9y\n"
- "IGV4YW1wbGUsIHRoZXJlDQo+ID4gaXMNCj4gPiBleGlzdGluZyBub3RpZmljYXRpb24gY2FsbGJh\n"
- "Y2tzLiBBbHNvLCBob3QgdHJpcCBwb2ludHMgYXJlDQo+ID4gZGVzY3JpYmVkDQo+ID4gYXMNCj4g\n"
- "PiBub3RpZmljYXRpb24gcG9pbnRzLg0KPiA+IA0KPiA+IEkgYmVsaWV2ZSB0aGUgcGF0Y2ggc2V0\n"
- "IG5lZWRzIHRvIGRvY3VtZW50IGFsc28gdGhlIG5leHQgc3RlcHMgb24NCj4gPiB0aGlzDQo+ID4g\n"
- "bW92ZS4NCj4gPiANCj4gDQo+IElmIHdlIGRlY2lkZSB0byBtZXJnZSB0aGlzIGZ1bmN0aW9uYWxp\n"
- "dHksIEkgd2lsbCBwdXNoIGEgZG9jdW1lbnRhdGlvbg0KPiBhbmQgSUlPIHNhbXBsZSBwcm9ncmFt\n"
- "IHRvIHVzZSB0aGVzZSBmZWF0dXJlcy4NCj4gDQpUaGUgc2VyaXMgaXMgb2xkIGVub3VnaCwgSSBm\n"
- "b3Jnb3QuIFRoZSBwYXRjaCBhZGRzIGRvY3VtZW50YXRpb24NCltQQVRDSCA1LzZdIHRoZXJtYWw6\n"
- "IGlpbyBEb2N1bWVudGF0aW9uDQpUaGVyZSBpcyBhbHdheXMgc2NvcGUgdG8gYWRkIG1vcmUuDQoN\n"
- "ClRoYW5rcywNClNyaW5pdmFzDQoNCg0KPiBUaGFua3MsDQo+IFNyaW5pdmFzDQo+IA0KPiA+IA0K\n"
- "PiA+ID4gIAlpbnQgKCpub3RpZnkpIChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLCBpbnQs\n"
- "DQo+ID4gPiAgCQkgICAgICAgZW51bSB0aGVybWFsX3RyaXBfdHlwZSk7DQo+ID4gPiAgfTsNCj4g\n"
- "PiA+IEBAIC0xNDgsNiArMTU1LDggQEAgc3RydWN0IHRoZXJtYWxfYXR0ciB7DQo+ID4gPiAgCWNo\n"
- "YXIgbmFtZVtUSEVSTUFMX05BTUVfTEVOR1RIXTsNCj4gPiA+ICB9Ow0KPiA+ID4gIA0KPiA+ID4g\n"
- "K3N0cnVjdCBpaW9fZGV2Ow0KPiA+ID4gKw0KPiA+ID4gIC8qKg0KPiA+ID4gICAqIHN0cnVjdCB0\n"
- "aGVybWFsX3pvbmVfZGV2aWNlIC0gc3RydWN0dXJlIGZvciBhIHRoZXJtYWwgem9uZQ0KPiA+ID4g\n"
- "ICAqIEBpZDoJCXVuaXF1ZSBpZCBudW1iZXIgZm9yIGVhY2ggdGhlcm1hbCB6b25lDQo+ID4gPiBA\n"
- "QCAtMTgyLDYgKzE5MSw3IEBAIHN0cnVjdCB0aGVybWFsX2F0dHIgew0KPiA+ID4gICAqIEBsb2Nr\n"
- "Oglsb2NrIHRvIHByb3RlY3QgdGhlcm1hbF9pbnN0YW5jZXMgbGlzdA0KPiA+ID4gICAqIEBub2Rl\n"
- "Oglub2RlIGluIHRoZXJtYWxfdHpfbGlzdCAoaW4gdGhlcm1hbF9jb3JlLmMpDQo+ID4gPiAgICog\n"
- "QHBvbGxfcXVldWU6CWRlbGF5ZWQgd29yayBmb3IgcG9sbGluZw0KPiA+ID4gKyAqIEBpbmRpb19k\n"
- "ZXY6CXBvaW50ZXIgdG8gaW5zdGFuY2Ugb2YgYW4gSUlPIGRldiBmb3IgdGhpcw0KPiA+ID4gem9u\n"
- "ZQ0KPiA+ID4gICAqLw0KPiA+ID4gIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlIHsNCj4gPiA+\n"
- "ICAJaW50IGlkOw0KPiA+ID4gQEAgLTIwOCw2ICsyMTgsOSBAQCBzdHJ1Y3QgdGhlcm1hbF96b25l\n"
- "X2RldmljZSB7DQo+ID4gPiAgCXN0cnVjdCBtdXRleCBsb2NrOw0KPiA+ID4gIAlzdHJ1Y3QgbGlz\n"
- "dF9oZWFkIG5vZGU7DQo+ID4gPiAgCXN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbF9xdWV1ZTsNCj4g\n"
- "PiA+ICsjaWYgZGVmaW5lZChDT05GSUdfVEhFUk1BTF9JSU8pDQo+ID4gPiArCXN0cnVjdCBpaW9f\n"
- ZGV2ICppbmRpb19kZXY7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiAgfTsNCj4gPiA+ICA=
+ "On Thu, 2015-12-31 at 15:18 -0800, Srinivas Pandruvada wrote:\n"
+ "> On Thu, 2015-12-31 at 11:18 -0800, Eduardo Valentin wrote:\n"
+ "> > On Sat, Sep 26, 2015 at 03:05:08PM -0700, Srinivas Pandruvada\n"
+ "> > wrote:\n"
+ "> > > This change registers temperature sensor in a thermal zone as an\n"
+ "> > > IIO\n"
+ "> > > temperature device. This allows user space thermal application to\n"
+ "> > > fully\n"
+ "> > > utilize IIO capability to read temperature events and samples.\n"
+ "> > > The primary motivation for this change to improve performance for\n"
+ "> > > user\n"
+ "> > > space thermal controllers like Linux thermal daemon or Intel\302\256\n"
+ "> > > Dynamic\n"
+ "> > > Platform and Thermal Framework (DPTF) for Chromium OS.\n"
+ "> > > The current sysfs has several limitations, which forces the\n"
+ "> > > current\n"
+ "> > > user space to use polling as the safe way. This polling causes\n"
+ "> > > performance\n"
+ "> > > bottlenecks as some devices requires extremely aggressive\n"
+ "> > > response\n"
+ "> > > to\n"
+ "> > > changing temperature conditions.\n"
+ "> > > These are some limitations, which this change tries to address:\n"
+ "> > > - Temperature reading via sysfs attribute, which needs conversion\n"
+ "> > > from\n"
+ "> > > string to int\n"
+ "> > > - No way to set threshold settings to avoid polling for\n"
+ "> > > temperature\n"
+ "> > > change\n"
+ "> > > without using a RW passive trip point.\n"
+ "> > > - Event notifications via slow kobject uevents, which needs\n"
+ "> > > parsing\n"
+ "> > > to id\n"
+ "> > > the zone and read temperature\n"
+ "> > > - Only pull interface from user space, kernel drivers can't send\n"
+ "> > > samples\n"
+ "> > > - One sample at a time read from user space\n"
+ "> > > These limitations can be addressed by registering temperature\n"
+ "> > > sensor\n"
+ "> > > as an IIO device. IIO provides\n"
+ "> > > - buffered access via /dev/iio:deviceX node with select/poll\n"
+ "> > > capability\n"
+ "> > > - temperature thresholds setting via iio event thresholds\n"
+ "> > > - Wait and receive events\n"
+ "> > > - Able to use different external trigger (data ready indications)\n"
+ "> > > and push\n"
+ "> > > samples to buffers\n"
+ "> > > \n"
+ "> > > Next set of patches uses the IIO binding introduced in this\n"
+ "> > > patchset.\n"
+ "> > > The iio device created during call to\n"
+ "> > > thermal_zone_device_register.\n"
+ "> > > Samples\n"
+ "> > > are pushed to iio buffers when thermal_zone_device_update is\n"
+ "> > > called\n"
+ "> > > from\n"
+ "> > > client drivers.\n"
+ "> > > \n"
+ "> > > New thermal zone device callbacks:\n"
+ "> > > It introduces three new callbacks for thermal client drivers:\n"
+ "> > > get_threshold_temp: Get the current threshold temperature\n"
+ "> > > set_threshold_temp: Set the current threshold temperature\n"
+ "> > > check_notification_support: Inform that the client driver has\n"
+ "> > > asynchronous\n"
+ "> > > notification mechanism. If it is then polling can be avoided for\n"
+ "> > > the\n"
+ "> > > temperature sensor.\n"
+ "> > > \n"
+ "> > > Signed-off-by: Srinivas Pandruvada <\n"
+ "> > > srinivas.pandruvada@linux.intel.com>\n"
+ "> > > ---\n"
+ "> \n"
+ "> [Cut]\n"
+ "> \n"
+ "> > > \n"
+ "> > > +\tint (*get_threshold_temp)(struct thermal_zone_device *,\n"
+ "> > > > > \n"
+ "> > > int,\n"
+ "> > > +\t\t\t\t  int *);\n"
+ "> > > +\tint (*set_threshold_temp)(struct thermal_zone_device *,\n"
+ "> > > int,\n"
+ "> > > +\t\t\t\t  int);\n"
+ "> > > +\tint (*set_notification_status)(struct\n"
+ "> > > thermal_zone_device\n"
+ "> > > *,\n"
+ "> > > +\t\t\t\t       bool status);\n"
+ "> > > +\tbool (*check_notification_support)(struct\n"
+ "> > > thermal_zone_device *);\n"
+ "> > \n"
+ "> > \n"
+ "> > Can an existing thermal sensor benefit of the new functionality? If\n"
+ "> > yes,\n"
+ "> \n"
+ "> Yes. The existing driver will be using the trips instead of\n"
+ "> thresholds.\n"
+ "> As we discussed during LPC,\n"
+ "> trips (pasive/active/..): These are temperature points to which a\n"
+ "> cooling action can be performed by binding a cooling device. The\n"
+ "> existing drivers who support RW trips, user space still can update\n"
+ "> those and get sample notifications. Existing drivers either have\n"
+ "> polling or interrupt suport to evaluate trips and call\n"
+ "> thermal_zone_device_update(), which will result in sample pushed to\n"
+ "> user space.\n"
+ ">  \n"
+ "> Thresholds: These are sensor temperature points which user space\n"
+ "> wants\n"
+ "> to get notification of temperature change. They will not be presented\n"
+ "> as passive/active/hot trips. User space can decide what to do with\n"
+ "> the\n"
+ "> notifications. If existing drivers don't want to present as fake\n"
+ "> trips,\n"
+ "> then they need to add the callback support.\n"
+ "> \n"
+ "> > The problem I have with the above is the fact that they add\n"
+ "> > callbacks\n"
+ "> > and behavior eligible only for a subset of thermal zones.\n"
+ "> > \n"
+ "> > If we are moving to IIO integrated mode, the existing drivers need\n"
+ "> > to\n"
+ "> > be\n"
+ "> > converted, to avoid diversification of behavior. For example, there\n"
+ "> > is\n"
+ "> > existing notification callbacks. Also, hot trip points are\n"
+ "> > described\n"
+ "> > as\n"
+ "> > notification points.\n"
+ "> > \n"
+ "> > I believe the patch set needs to document also the next steps on\n"
+ "> > this\n"
+ "> > move.\n"
+ "> > \n"
+ "> \n"
+ "> If we decide to merge this functionality, I will push a documentation\n"
+ "> and IIO sample program to use these features.\n"
+ "> \n"
+ "The seris is old enough, I forgot. The patch adds documentation\n"
+ "[PATCH 5/6] thermal: iio Documentation\n"
+ "There is always scope to add more.\n"
+ "\n"
+ "Thanks,\n"
+ "Srinivas\n"
+ "\n"
+ "\n"
+ "> Thanks,\n"
+ "> Srinivas\n"
+ "> \n"
+ "> > \n"
+ "> > >  \tint (*notify) (struct thermal_zone_device *, int,\n"
+ "> > >  \t\t       enum thermal_trip_type);\n"
+ "> > >  };\n"
+ "> > > @@ -148,6 +155,8 @@ struct thermal_attr {\n"
+ "> > >  \tchar name[THERMAL_NAME_LENGTH];\n"
+ "> > >  };\n"
+ "> > >  \n"
+ "> > > +struct iio_dev;\n"
+ "> > > +\n"
+ "> > >  /**\n"
+ "> > >   * struct thermal_zone_device - structure for a thermal zone\n"
+ "> > >   * @id:\t\tunique id number for each thermal zone\n"
+ "> > > @@ -182,6 +191,7 @@ struct thermal_attr {\n"
+ "> > >   * @lock:\tlock to protect thermal_instances list\n"
+ "> > >   * @node:\tnode in thermal_tz_list (in thermal_core.c)\n"
+ "> > >   * @poll_queue:\tdelayed work for polling\n"
+ "> > > + * @indio_dev:\tpointer to instance of an IIO dev for this\n"
+ "> > > zone\n"
+ "> > >   */\n"
+ "> > >  struct thermal_zone_device {\n"
+ "> > >  \tint id;\n"
+ "> > > @@ -208,6 +218,9 @@ struct thermal_zone_device {\n"
+ "> > >  \tstruct mutex lock;\n"
+ "> > >  \tstruct list_head node;\n"
+ "> > >  \tstruct delayed_work poll_queue;\n"
+ "> > > +#if defined(CONFIG_THERMAL_IIO)\n"
+ "> > > +\tstruct iio_dev *indio_dev;\n"
+ "> > > +#endif\n"
+ "> > >  };\n"
+ > > >
 
-6432129788be236e8c463e27698970da774a26d1ba5a8ae892a566246e91ce2c
+d2da6604bdf5e27a3df76a291efe0e6865f0c31391ae4a621711bdba0b1c1074

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.