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.