All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <56A24278.8050909@roeck-us.net>

diff --git a/a/1.txt b/N1/1.txt
index 72c9de6..22bd28a 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,117 +1,186 @@
-T24gMDEvMjEvMjAxNiAxMTozNCBBTSwgU3TDqXBoYW4gS29jaGVuIHdyb3RlOgo+IEFsbG93IGEg
-ZGV2aWNlIHRyZWUgdG8gc2V0IGluaXRpYWwgdGVtcGVyYXR1cmUgc2Vuc29yIHBhcmFtZXRlcnMu
-Cj4KPiBVc2Vyc3BhY2UgY2FuIHN0aWxsIG92ZXJyaWRlIGFjdHVhbCB2YWx1ZXMgdGhyb3VnaCBz
-eXNmcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFN0w6lwaGFuIEtvY2hlbiA8c3RlcGhhbkBrb2NoZW4u
-bmw+Cj4gLS0tCj4gICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbG05
-MC50eHQgfCA0MCArKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9od21vbi9sbTkwLmMgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKy0tCj4g
-ICAyIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4KPiBk
-aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAu
-dHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAudHh0Cj4g
-aW5kZXggZTg2MzI0OC4uMDQ1ZTk0YiAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2Rldmlj
-ZXRyZWUvYmluZGluZ3MvaHdtb24vbG05MC50eHQKPiArKysgYi9Eb2N1bWVudGF0aW9uL2Rldmlj
-ZXRyZWUvYmluZGluZ3MvaHdtb24vbG05MC50eHQKPiBAQCAtMzMsNiArMzMsMzggQEAgT3B0aW9u
-YWwgcHJvcGVydGllczoKPiAgICAgICAgICAgICAgICAgTE05MCAiLUFMRVJUIiBwaW4gb3V0cHV0
-Lgo+ICAgICAgICAgICAgICAgICBTZWUgaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50
-eHQgZm9yIHRoZSBmb3JtYXQuCj4KPiArLSB1cGRhdGUtaW50ZXJ2YWw6IEludGVydmFsIGF0IHdo
-aWNoIHRlbXBlcmF0dXJlcyBhcmUgc2FtcGxlZCwKPiArICBUeXBlOiB1bnNpZ25lZCAgIGluIG1p
-bGxpc2Vjb25kcy4KPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSBsb2NhbC1sb3c6ICAgICAg
-VmFsaWQgdGVtcGVyYXR1cmUgcmFuZ2UgZm9yIHRoZSBjaGlwIGludGVybmFsIHNlbnNvciwKPiAr
-ICBsb2NhbC1oaWdoOiAgICAgb3V0c2lkZSB3aGljaCB0aGUgYWxlcnQgd2lsbCBiZSBzZXQuIFZh
-bHVlcyBhcmUgaW4KPiArICBsb2NhbC1jcml0aWNhbDogbWlsbGljZWxjaXVzLgo+ICsgIFR5cGU6
-IHNpZ25lZAo+ICsgIFNpemU6IG9uZSBjZWxsCj4gKwo+ICstIHJlbW90ZS1sb3c6ICAgICAgVmFs
-aWQgdGVtcGVyYXR1cmUgcmFuZ2UgZm9yIHRoZSBleHRlcm5hbCBzZW5zb3IsCj4gKyAgcmVtb3Rl
-LWhpZ2g6ICAgICBvdXRzaWRlIHdoaWNoIHRoZSBhbGVydCB3aWxsIGJlIHNldC4gVmFsdWVzIGFy
-ZSBpbgo+ICsgIHJlbW90ZS1jcml0aWNhbDogbWlsbGljZWxjaWl1cy4KPiArICBUeXBlOiBzaWdu
-ZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSByZW1vdGUtb2Zmc2V0OiAgIFdoZXJlIGF2
-YWlsYWJsZSwgYW4gZXh0ZXJuYWwgc2Vuc29yIHRlbXBlcmF0dXJlIG9mZnNldC4KPiArICBUeXBl
-OiBzaWduZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSBsb2NhbC1lbWVyZ2VuY3k6ICBP
-biBtYXg2NjU5LCBtYXg2Njk1IGFuZCBtYXg2Njk2LCBhIGNvbmZpZ3VyYWJsZQo+ICsgIHJlbW90
-ZS1lbWVyZ2VuY3k6IDNyZCB1cHBlciBib3VuZCBvbiB0ZW1wZXJhdHVyZS4KPiArICBUeXBlOiBz
-aWduZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSByZW1vdGUyLWxvdzogICAgICBPbiBt
-YXg2Njk1IGFuZCBtYXg2Njk2LCBhIHNlY29uZCBleHRlcm5hbCBzZW5zb3IuCj4gKyAgcmVtb3Rl
-Mi1oaWdoOgo+ICsgIHJlbW90ZTItY3JpdGljYWw6Cj4gKyAgcmVtb3RlMi1lbWVyZ2VuY3k6Cj4g
-KyAgVHlwZTogc2lnbmVkCj4gKyAgU2l6ZTogb25lIGNlbGwKPiArCgpUaGlzIHZlcnkgbXVjaCBz
-bWVsbHMgbGlrZSBjb25maWd1cmF0aW9uLCBub3QgaGFyZHdhcmUgZGVzY3JpcHRpb24uCgpIYXZp
-bmcgc2FpZCB0aGF0LCB0aGUgdGhlcm1hbCBzdWJzeXN0ZW0gZG9lcyBzb21ldGhpbmcgc2ltaWxh
-ci4gVGhpcyByYWlzZXMgZXZlbiBtb3JlCnF1ZXN0aW9ucywgdGhvdWdoLiBTaW5jZSBwYXRjaCAz
-IG9mIHRoZSBzZXJpZXMgaW50cm9kdWNlcyByZWdpc3RyYXRpb24gd2l0aCB0aGUgdGhlcm1hbApz
-dWJzeXN0ZW0sIGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIHRoZXJtYWwgc3Vic3lzdGVtIHNob3Vs
-ZCBwcm92aWRlIGFueSBsaW1pdHMgdXNlZAp0byBwcm9ncmFtIHRoZSBjaGlwcywgYW5kIHRoYXQg
-dGhlcmUgc2hvdWxkIGJlIGEgbWVjaGFuaXNtIGZvciB0aGUgdGhlcm1hbCBzdWJzeXN0ZW0KdG8g
-aW50ZXJhY3Qgd2l0aCB0aGUgZHJpdmVyIHRvIGJvdGggc2V0IHRoZSBsaW1pdHMgYW5kIHRvIGJl
-IGluZm9ybWVkIGlmIGEgbGltaXQKaXMgZXhjZWVkZWQuCgpBbHNvLCBfaWZfIHN1Y2ggYSBzZXQg
-b2YgcHJvcGVydGllcyBpcyBpbnRyb2R1Y2VkIGFuZCBhY2NlcHRlZCBieSB0aGUgZGV2aWNldHJl
-ZQpyZXZpZXdlcnMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSBhIHNldCBvZiBwcm9wZXJ0aWVzIHdo
-aWNoIGFwcGxpZXMgdG8gX2FsbF8gaGFyZHdhcmUKbW9uaXRvcmluZyBkcml2ZXJzLCBub3QganVz
-dCB0byBvbmUuIEV2ZW4gaWYgc3VwcG9ydCBpcyBub3QgaW1wbGVtZW50ZWQgaW1tZWRpYXRlbHkK
-aW4gdGhlIGh3bW9uIGNvcmUsIHRoZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSB1c2FibGUgaW4gYSBn
-ZW5lcmljIHdheSwgYW5kIG5vdApyZWZsZWN0IHN5c2ZzIGF0dHJpYnV0ZSBuYW1lcyB1c2VkIGJ5
-IHRoZSBod21vbiBzdWJzeXN0ZW0uCgpUaGFua3MsCkd1ZW50ZXIKCj4gICBFeGFtcGxlIExNOTAg
-bm9kZToKPgo+ICAgdGVtcC1zZW5zb3Igewo+IEBAIC00MSw0ICs3MywxMiBAQCB0ZW1wLXNlbnNv
-ciB7Cj4gICAJdmNjLXN1cHBseSA9IDwmcGFsbWFzX2xkbzZfcmVnPjsKPiAgIAlpbnRlcnJ1cHQt
-cGFyZW50ID0gPCZncGlvPjsKPiAgIAlpbnRlcnJ1cHRzID0gPFRFR1JBX0dQSU8oTywgNCkgSVJR
-X1RZUEVfTEVWRUxfTE9XPjsKPiArCXVwZGF0ZS1pbnRlcnZhbCA9IDw1MDA+Owo+ICsJbG9jYWwt
-bG93ID0gPDUwMDA+Owo+ICsJbG9jYWwtaGlnaCA9IDw4MDAwMD47Cj4gKwlsb2NhbC1jcml0aWNh
-bCA9IDw5MDAwMD47Cj4gKwlyZW1vdGUtbG93ID0gPDUwMDA+Owo+ICsJcmVtb3RlLWhpZ2ggPSA8
-ODAwMDA+Owo+ICsJcmVtb3RlLWNyaXRpY2FsID0gPDkwMDAwPjsKPiArCXJlbW90ZS1vZmZzZXQg
-PSA8KC02MjEyNSk+Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTAuYyBi
-L2RyaXZlcnMvaHdtb24vbG05MC5jCj4gaW5kZXggODhkYWY3Mi4uOGFlODc5MSAxMDA2NDQKPiAt
-LS0gYS9kcml2ZXJzL2h3bW9uL2xtOTAuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vbG05MC5jCj4g
-QEAgLTkzLDYgKzkzLDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+ICAgI2luY2x1
-ZGUgPGxpbnV4L2Vyci5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gKyNpbmNsdWRl
-IDxsaW51eC9vZi5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cj4gICAjaW5jbHVkZSA8
-bGludXgvaW50ZXJydXB0Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy
-Lmg+Cj4gQEAgLTE1MDQsOCArMTUwNSwxNiBAQCBzdGF0aWMgdm9pZCBsbTkwX3Jlc3RvcmVfY29u
-ZihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAg
-c3RhdGljIHZvaWQgbG05MF9pbml0X2NsaWVudChzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAg
-ewo+ICAgCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7Cj4gKwlzdHJ1
-Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gICAJdTggY29uZmlnLCBjb252cmF0ZTsK
-PiArCXUzMiBtczsKPiArI2lmZGVmIENPTkZJR19PRgo+ICsJczMyIHRlbXA7Cj4gKyNlbmRpZgo+
-Cj4gKwkvKgo+ICsJICogU2F2ZSBvbGQgY29udmVyc2lvbiByYXRlLgo+ICsJICovCj4gICAJaWYg
-KGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0NPTlZSQVRFLCAmY29udnJhdGUpIDwg
-MCkgewo+ICAgCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJGYWlsZWQgdG8gcmVhZCBjb252cmF0
-ZSByZWdpc3RlciFcbiIpOwo+ICAgCQljb252cmF0ZSA9IExNOTBfREVGX0NPTlZSQVRFX1JWQUw7
-Cj4gQEAgLTE1MTUsMTQgKzE1MjQsMjQgQEAgc3RhdGljIHZvaWQgbG05MF9pbml0X2NsaWVudChz
-dHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAgCS8qCj4gICAJICogU3RhcnQgdGhlIGNvbnZlcnNp
-b25zLgo+ICAgCSAqLwo+IC0JbG05MF9zZXRfY29udnJhdGVfbG9ja2VkKGRhdGEsIDUwMCk7ICAv
-KiA1MDBtcyAvIDJIeiAgKi8KPiArI2lmZGVmIENPTkZJR19PRgo+ICsJaWYgKG9mX3Byb3BlcnR5
-X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgInVwZGF0ZS1pbnRlcnZhbCIsICZtcykgPCAwKQo+ICsj
-ZW5kaWYKPiArCQltcyA9IDUwMDsgIC8qIGRlZmF1bHQgcmF0ZTogMkh6ICovCj4gKwlsbTkwX3Nl
-dF9jb252cmF0ZV9sb2NrZWQoZGF0YSwgbXMpOwo+ICsKPiArCS8qCj4gKwkgKiBTYXZlIG9sZCBj
-b25maWcKPiArCSAqLwo+ICAgCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9D
-T05GSUcxLCAmY29uZmlnKSA8IDApIHsKPiAtCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJJbml0
-aWFsaXphdGlvbiBmYWlsZWQhXG4iKTsKPiArCQlkZXZfd2FybihkZXYsICJJbml0aWFsaXphdGlv
-biBmYWlsZWQhXG4iKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAgIAlkYXRhLT5jb25maWdfb3Jp
-ZyA9IGNvbmZpZzsKPgo+IC0JLyogQ2hlY2sgVGVtcGVyYXR1cmUgUmFuZ2UgU2VsZWN0ICovCj4g
-KwkvKgo+ICsJICogQ2hlY2sgVGVtcGVyYXR1cmUgUmFuZ2UgU2VsZWN0Cj4gKwkgKi8KPiAgIAlp
-ZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxIHx8IGRhdGEtPmtpbmQgPT0gdG1wNDUxKSB7Cj4gICAJ
-CWlmIChjb25maWcgJiAweDA0KQo+ICAgCQkJZGF0YS0+ZmxhZ3MgfD0gTE05MF9GTEFHX0FEVDc0
-NjFfRVhUOwo+IEBAIC0xNTQ1LDYgKzE1NjQsMzYgQEAgc3RhdGljIHZvaWQgbG05MF9pbml0X2Ns
-aWVudChzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAgCWNvbmZpZyAmPSAweEJGOwkvKiBydW4g
-Ki8KPiAgIAlpZiAoY29uZmlnICE9IGRhdGEtPmNvbmZpZ19vcmlnKSAvKiBPbmx5IHdyaXRlIGlm
-IGNoYW5nZWQgKi8KPiAgIAkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIExNOTBf
-UkVHX1dfQ09ORklHMSwgY29uZmlnKTsKPiArCj4gKyNpZmRlZiBDT05GSUdfT0YKPiArCS8qCj4g
-KwkgKiBTZXQgaW5pdGlhbCB2YWx1ZXMgZnJvbSBkZXZpY2V0cmVlCj4gKwkgKi8KPiArI2RlZmlu
-ZSBJTklUX1JFRyhfcHJvcGVydHksIF9pbmRleCwgX2JpdHMpIHsgXAo+ICsJaWYgKG9mX3Byb3Bl
-cnR5X3JlYWRfczMyKGRldi0+b2Zfbm9kZSwgX3Byb3BlcnR5LCAmdGVtcCkgPT0gMCkgXAo+ICsJ
-CWxtOTBfc2V0X3RlbXAjI19iaXRzIyNfbG9ja2VkKGRhdGEsIF9pbmRleCwgdGVtcCk7IFwKPiAr
-fQo+ICsJSU5JVF9SRUcoImxvY2FsLWxvdyIsIExPQ0FMX0xPVywgOCk7Cj4gKwlJTklUX1JFRygi
-bG9jYWwtaGlnaCIsIExPQ0FMX0hJR0gsIDgpOwo+ICsJSU5JVF9SRUcoImxvY2FsLWNyaXRpY2Fs
-IiwgTE9DQUxfQ1JJVCwgOCk7Cj4gKwlJTklUX1JFRygicmVtb3RlLWxvdyIsIFJFTU9URV9MT1cs
-IDExKTsKPiArCUlOSVRfUkVHKCJyZW1vdGUtaGlnaCIsIFJFTU9URV9ISUdILCAxMSk7Cj4gKwlJ
-TklUX1JFRygicmVtb3RlLWNyaXRpY2FsIiwgUkVNT1RFX0NSSVQsIDgpOwo+ICsJaWYgKGRhdGEt
-PmZsYWdzICYgTE05MF9IQVZFX09GRlNFVCkgewo+ICsJCUlOSVRfUkVHKCJyZW1vdGUtb2Zmc2V0
-IiwgUkVNT1RFX09GRlNFVCwgMTEpOwo+ICsJfQo+ICsJaWYgKGRhdGEtPmZsYWdzICYgTE05MF9I
-QVZFX0VNRVJHRU5DWSkgewo+ICsJCUlOSVRfUkVHKCJsb2NhbC1lbWVyZ2VuY3kiLCBMT0NBTF9F
-TUVSRywgOCk7Cj4gKwkJSU5JVF9SRUcoInJlbW90ZS1lbWVyZ2VuY3kiLCBSRU1PVEVfRU1FUkcs
-IDgpOwo+ICsJfQo+ICsJaWYgKGRhdGEtPmZsYWdzICYgTE05MF9IQVZFX1RFTVAzKSB7Cj4gKwkJ
-SU5JVF9SRUcoInJlbW90ZTItbG93IiwgUkVNT1RFMl9MT1csIDExKTsKPiArCQlJTklUX1JFRygi
-cmVtb3RlMi1oaWdoIiwgUkVNT1RFMl9ISUdILCAxMSk7Cj4gKwkJSU5JVF9SRUcoInJlbW90ZTIt
-Y3JpdGljYWwiLCBSRU1PVEUyX0NSSVQsIDgpOwo+ICsJCUlOSVRfUkVHKCJyZW1vdGUyLWVtZXJn
-ZW5jeSIsIFJFTU9URTJfRU1FUkcsIDgpOwo+ICsJfQo+ICsjdW5kZWYgSU5JVF9SRUcKPiArI2Vu
-ZGlmCj4gICB9Cj4KPiAgIHN0YXRpYyBib29sIGxtOTBfaXNfdHJpcHBlZChzdHJ1Y3QgaTJjX2Ns
-aWVudCAqY2xpZW50LCB1MTYgKnN0YXR1cykKPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
-X19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNA
-bG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGlu
-Zm8vbG0tc2Vuc29ycw=
+On 01/21/2016 11:34 AM, Stéphan Kochen wrote:
+> Allow a device tree to set initial temperature sensor parameters.
+>
+> Userspace can still override actual values through sysfs.
+>
+> Signed-off-by: Stéphan Kochen <stephan-j6uo2F6POYhmR6Xm/wNWPw@public.gmane.org>
+> ---
+>   Documentation/devicetree/bindings/hwmon/lm90.txt | 40 +++++++++++++++++
+>   drivers/hwmon/lm90.c                             | 55 ++++++++++++++++++++++--
+>   2 files changed, 92 insertions(+), 3 deletions(-)
+>
+> diff --git a/Documentation/devicetree/bindings/hwmon/lm90.txt b/Documentation/devicetree/bindings/hwmon/lm90.txt
+> index e863248..045e94b 100644
+> --- a/Documentation/devicetree/bindings/hwmon/lm90.txt
+> +++ b/Documentation/devicetree/bindings/hwmon/lm90.txt
+> @@ -33,6 +33,38 @@ Optional properties:
+>                 LM90 "-ALERT" pin output.
+>                 See interrupt-controller/interrupts.txt for the format.
+>
+> +- update-interval: Interval at which temperatures are sampled,
+> +  Type: unsigned   in milliseconds.
+> +  Size: one cell
+> +
+> +- local-low:      Valid temperature range for the chip internal sensor,
+> +  local-high:     outside which the alert will be set. Values are in
+> +  local-critical: millicelcius.
+> +  Type: signed
+> +  Size: one cell
+> +
+> +- remote-low:      Valid temperature range for the external sensor,
+> +  remote-high:     outside which the alert will be set. Values are in
+> +  remote-critical: millicelciius.
+> +  Type: signed
+> +  Size: one cell
+> +
+> +- remote-offset:   Where available, an external sensor temperature offset.
+> +  Type: signed
+> +  Size: one cell
+> +
+> +- local-emergency:  On max6659, max6695 and max6696, a configurable
+> +  remote-emergency: 3rd upper bound on temperature.
+> +  Type: signed
+> +  Size: one cell
+> +
+> +- remote2-low:      On max6695 and max6696, a second external sensor.
+> +  remote2-high:
+> +  remote2-critical:
+> +  remote2-emergency:
+> +  Type: signed
+> +  Size: one cell
+> +
+
+This very much smells like configuration, not hardware description.
+
+Having said that, the thermal subsystem does something similar. This raises even more
+questions, though. Since patch 3 of the series introduces registration with the thermal
+subsystem, it seems to me that the thermal subsystem should provide any limits used
+to program the chips, and that there should be a mechanism for the thermal subsystem
+to interact with the driver to both set the limits and to be informed if a limit
+is exceeded.
+
+Also, _if_ such a set of properties is introduced and accepted by the devicetree
+reviewers, it should probably be a set of properties which applies to _all_ hardware
+monitoring drivers, not just to one. Even if support is not implemented immediately
+in the hwmon core, the properties should be usable in a generic way, and not
+reflect sysfs attribute names used by the hwmon subsystem.
+
+Thanks,
+Guenter
+
+>   Example LM90 node:
+>
+>   temp-sensor {
+> @@ -41,4 +73,12 @@ temp-sensor {
+>   	vcc-supply = <&palmas_ldo6_reg>;
+>   	interrupt-parent = <&gpio>;
+>   	interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;
+> +	update-interval = <500>;
+> +	local-low = <5000>;
+> +	local-high = <80000>;
+> +	local-critical = <90000>;
+> +	remote-low = <5000>;
+> +	remote-high = <80000>;
+> +	remote-critical = <90000>;
+> +	remote-offset = <(-62125)>;
+>   }
+> diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
+> index 88daf72..8ae8791 100644
+> --- a/drivers/hwmon/lm90.c
+> +++ b/drivers/hwmon/lm90.c
+> @@ -93,6 +93,7 @@
+>   #include <linux/hwmon.h>
+>   #include <linux/err.h>
+>   #include <linux/mutex.h>
+> +#include <linux/of.h>
+>   #include <linux/sysfs.h>
+>   #include <linux/interrupt.h>
+>   #include <linux/regulator/consumer.h>
+> @@ -1504,8 +1505,16 @@ static void lm90_restore_conf(struct i2c_client *client, struct lm90_data *data)
+>   static void lm90_init_client(struct lm90_data *data)
+>   {
+>   	struct i2c_client *client = data->client;
+> +	struct device *dev = &client->dev;
+>   	u8 config, convrate;
+> +	u32 ms;
+> +#ifdef CONFIG_OF
+> +	s32 temp;
+> +#endif
+>
+> +	/*
+> +	 * Save old conversion rate.
+> +	 */
+>   	if (lm90_read_reg(client, LM90_REG_R_CONVRATE, &convrate) < 0) {
+>   		dev_warn(&client->dev, "Failed to read convrate register!\n");
+>   		convrate = LM90_DEF_CONVRATE_RVAL;
+> @@ -1515,14 +1524,24 @@ static void lm90_init_client(struct lm90_data *data)
+>   	/*
+>   	 * Start the conversions.
+>   	 */
+> -	lm90_set_convrate_locked(data, 500);  /* 500ms / 2Hz  */
+> +#ifdef CONFIG_OF
+> +	if (of_property_read_u32(dev->of_node, "update-interval", &ms) < 0)
+> +#endif
+> +		ms = 500;  /* default rate: 2Hz */
+> +	lm90_set_convrate_locked(data, ms);
+> +
+> +	/*
+> +	 * Save old config
+> +	 */
+>   	if (lm90_read_reg(client, LM90_REG_R_CONFIG1, &config) < 0) {
+> -		dev_warn(&client->dev, "Initialization failed!\n");
+> +		dev_warn(dev, "Initialization failed!\n");
+>   		return;
+>   	}
+>   	data->config_orig = config;
+>
+> -	/* Check Temperature Range Select */
+> +	/*
+> +	 * Check Temperature Range Select
+> +	 */
+>   	if (data->kind == adt7461 || data->kind == tmp451) {
+>   		if (config & 0x04)
+>   			data->flags |= LM90_FLAG_ADT7461_EXT;
+> @@ -1545,6 +1564,36 @@ static void lm90_init_client(struct lm90_data *data)
+>   	config &= 0xBF;	/* run */
+>   	if (config != data->config_orig) /* Only write if changed */
+>   		i2c_smbus_write_byte_data(client, LM90_REG_W_CONFIG1, config);
+> +
+> +#ifdef CONFIG_OF
+> +	/*
+> +	 * Set initial values from devicetree
+> +	 */
+> +#define INIT_REG(_property, _index, _bits) { \
+> +	if (of_property_read_s32(dev->of_node, _property, &temp) == 0) \
+> +		lm90_set_temp##_bits##_locked(data, _index, temp); \
+> +}
+> +	INIT_REG("local-low", LOCAL_LOW, 8);
+> +	INIT_REG("local-high", LOCAL_HIGH, 8);
+> +	INIT_REG("local-critical", LOCAL_CRIT, 8);
+> +	INIT_REG("remote-low", REMOTE_LOW, 11);
+> +	INIT_REG("remote-high", REMOTE_HIGH, 11);
+> +	INIT_REG("remote-critical", REMOTE_CRIT, 8);
+> +	if (data->flags & LM90_HAVE_OFFSET) {
+> +		INIT_REG("remote-offset", REMOTE_OFFSET, 11);
+> +	}
+> +	if (data->flags & LM90_HAVE_EMERGENCY) {
+> +		INIT_REG("local-emergency", LOCAL_EMERG, 8);
+> +		INIT_REG("remote-emergency", REMOTE_EMERG, 8);
+> +	}
+> +	if (data->flags & LM90_HAVE_TEMP3) {
+> +		INIT_REG("remote2-low", REMOTE2_LOW, 11);
+> +		INIT_REG("remote2-high", REMOTE2_HIGH, 11);
+> +		INIT_REG("remote2-critical", REMOTE2_CRIT, 8);
+> +		INIT_REG("remote2-emergency", REMOTE2_EMERG, 8);
+> +	}
+> +#undef INIT_REG
+> +#endif
+>   }
+>
+>   static bool lm90_is_tripped(struct i2c_client *client, u16 *status)
+>
+
+--
+To unsubscribe from this list: send the line "unsubscribe devicetree" in
+the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff --git a/a/content_digest b/N1/content_digest
index 72774e9..0320d91 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,9 +1,9 @@
  "ref\01453404877-17897-1-git-send-email-stephan@kochen.nl\0"
  "ref\01453404877-17897-3-git-send-email-stephan@kochen.nl\0"
  "ref\01453404877-17897-3-git-send-email-stephan-j6uo2F6POYhmR6Xm/wNWPw@public.gmane.org\0"
- "From\0Guenter Roeck <linux@roeck-us.net>\0"
- "Subject\0Re: [lm-sensors] [PATCH 2/3] lm90: initialize parameters from devicetree\0"
- "Date\0Fri, 22 Jan 2016 14:53:44 +0000\0"
+ "From\0Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>\0"
+ "Subject\0Re: [PATCH 2/3] lm90: initialize parameters from devicetree\0"
+ "Date\0Fri, 22 Jan 2016 06:53:44 -0800\0"
  "To\0St\303\251phan Kochen <stephan-j6uo2F6POYhmR6Xm/wNWPw@public.gmane.org>"
  " Jean Delvare <jdelvare-IBi9RG/b67k@public.gmane.org>\0"
  "Cc\0Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>"
@@ -15,122 +15,191 @@
  " devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\0"
  "\00:1\0"
  "b\0"
- "T24gMDEvMjEvMjAxNiAxMTozNCBBTSwgU3TDqXBoYW4gS29jaGVuIHdyb3RlOgo+IEFsbG93IGEg\n"
- "ZGV2aWNlIHRyZWUgdG8gc2V0IGluaXRpYWwgdGVtcGVyYXR1cmUgc2Vuc29yIHBhcmFtZXRlcnMu\n"
- "Cj4KPiBVc2Vyc3BhY2UgY2FuIHN0aWxsIG92ZXJyaWRlIGFjdHVhbCB2YWx1ZXMgdGhyb3VnaCBz\n"
- "eXNmcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFN0w6lwaGFuIEtvY2hlbiA8c3RlcGhhbkBrb2NoZW4u\n"
- "bmw+Cj4gLS0tCj4gICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbG05\n"
- "MC50eHQgfCA0MCArKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9od21vbi9sbTkwLmMgICAg\n"
- "ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKy0tCj4g\n"
- "ICAyIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4KPiBk\n"
- "aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAu\n"
- "dHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAudHh0Cj4g\n"
- "aW5kZXggZTg2MzI0OC4uMDQ1ZTk0YiAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2Rldmlj\n"
- "ZXRyZWUvYmluZGluZ3MvaHdtb24vbG05MC50eHQKPiArKysgYi9Eb2N1bWVudGF0aW9uL2Rldmlj\n"
- "ZXRyZWUvYmluZGluZ3MvaHdtb24vbG05MC50eHQKPiBAQCAtMzMsNiArMzMsMzggQEAgT3B0aW9u\n"
- "YWwgcHJvcGVydGllczoKPiAgICAgICAgICAgICAgICAgTE05MCAiLUFMRVJUIiBwaW4gb3V0cHV0\n"
- "Lgo+ICAgICAgICAgICAgICAgICBTZWUgaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50\n"
- "eHQgZm9yIHRoZSBmb3JtYXQuCj4KPiArLSB1cGRhdGUtaW50ZXJ2YWw6IEludGVydmFsIGF0IHdo\n"
- "aWNoIHRlbXBlcmF0dXJlcyBhcmUgc2FtcGxlZCwKPiArICBUeXBlOiB1bnNpZ25lZCAgIGluIG1p\n"
- "bGxpc2Vjb25kcy4KPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSBsb2NhbC1sb3c6ICAgICAg\n"
- "VmFsaWQgdGVtcGVyYXR1cmUgcmFuZ2UgZm9yIHRoZSBjaGlwIGludGVybmFsIHNlbnNvciwKPiAr\n"
- "ICBsb2NhbC1oaWdoOiAgICAgb3V0c2lkZSB3aGljaCB0aGUgYWxlcnQgd2lsbCBiZSBzZXQuIFZh\n"
- "bHVlcyBhcmUgaW4KPiArICBsb2NhbC1jcml0aWNhbDogbWlsbGljZWxjaXVzLgo+ICsgIFR5cGU6\n"
- "IHNpZ25lZAo+ICsgIFNpemU6IG9uZSBjZWxsCj4gKwo+ICstIHJlbW90ZS1sb3c6ICAgICAgVmFs\n"
- "aWQgdGVtcGVyYXR1cmUgcmFuZ2UgZm9yIHRoZSBleHRlcm5hbCBzZW5zb3IsCj4gKyAgcmVtb3Rl\n"
- "LWhpZ2g6ICAgICBvdXRzaWRlIHdoaWNoIHRoZSBhbGVydCB3aWxsIGJlIHNldC4gVmFsdWVzIGFy\n"
- "ZSBpbgo+ICsgIHJlbW90ZS1jcml0aWNhbDogbWlsbGljZWxjaWl1cy4KPiArICBUeXBlOiBzaWdu\n"
- "ZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSByZW1vdGUtb2Zmc2V0OiAgIFdoZXJlIGF2\n"
- "YWlsYWJsZSwgYW4gZXh0ZXJuYWwgc2Vuc29yIHRlbXBlcmF0dXJlIG9mZnNldC4KPiArICBUeXBl\n"
- "OiBzaWduZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSBsb2NhbC1lbWVyZ2VuY3k6ICBP\n"
- "biBtYXg2NjU5LCBtYXg2Njk1IGFuZCBtYXg2Njk2LCBhIGNvbmZpZ3VyYWJsZQo+ICsgIHJlbW90\n"
- "ZS1lbWVyZ2VuY3k6IDNyZCB1cHBlciBib3VuZCBvbiB0ZW1wZXJhdHVyZS4KPiArICBUeXBlOiBz\n"
- "aWduZWQKPiArICBTaXplOiBvbmUgY2VsbAo+ICsKPiArLSByZW1vdGUyLWxvdzogICAgICBPbiBt\n"
- "YXg2Njk1IGFuZCBtYXg2Njk2LCBhIHNlY29uZCBleHRlcm5hbCBzZW5zb3IuCj4gKyAgcmVtb3Rl\n"
- "Mi1oaWdoOgo+ICsgIHJlbW90ZTItY3JpdGljYWw6Cj4gKyAgcmVtb3RlMi1lbWVyZ2VuY3k6Cj4g\n"
- "KyAgVHlwZTogc2lnbmVkCj4gKyAgU2l6ZTogb25lIGNlbGwKPiArCgpUaGlzIHZlcnkgbXVjaCBz\n"
- "bWVsbHMgbGlrZSBjb25maWd1cmF0aW9uLCBub3QgaGFyZHdhcmUgZGVzY3JpcHRpb24uCgpIYXZp\n"
- "bmcgc2FpZCB0aGF0LCB0aGUgdGhlcm1hbCBzdWJzeXN0ZW0gZG9lcyBzb21ldGhpbmcgc2ltaWxh\n"
- "ci4gVGhpcyByYWlzZXMgZXZlbiBtb3JlCnF1ZXN0aW9ucywgdGhvdWdoLiBTaW5jZSBwYXRjaCAz\n"
- "IG9mIHRoZSBzZXJpZXMgaW50cm9kdWNlcyByZWdpc3RyYXRpb24gd2l0aCB0aGUgdGhlcm1hbApz\n"
- "dWJzeXN0ZW0sIGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIHRoZXJtYWwgc3Vic3lzdGVtIHNob3Vs\n"
- "ZCBwcm92aWRlIGFueSBsaW1pdHMgdXNlZAp0byBwcm9ncmFtIHRoZSBjaGlwcywgYW5kIHRoYXQg\n"
- "dGhlcmUgc2hvdWxkIGJlIGEgbWVjaGFuaXNtIGZvciB0aGUgdGhlcm1hbCBzdWJzeXN0ZW0KdG8g\n"
- "aW50ZXJhY3Qgd2l0aCB0aGUgZHJpdmVyIHRvIGJvdGggc2V0IHRoZSBsaW1pdHMgYW5kIHRvIGJl\n"
- "IGluZm9ybWVkIGlmIGEgbGltaXQKaXMgZXhjZWVkZWQuCgpBbHNvLCBfaWZfIHN1Y2ggYSBzZXQg\n"
- "b2YgcHJvcGVydGllcyBpcyBpbnRyb2R1Y2VkIGFuZCBhY2NlcHRlZCBieSB0aGUgZGV2aWNldHJl\n"
- "ZQpyZXZpZXdlcnMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSBhIHNldCBvZiBwcm9wZXJ0aWVzIHdo\n"
- "aWNoIGFwcGxpZXMgdG8gX2FsbF8gaGFyZHdhcmUKbW9uaXRvcmluZyBkcml2ZXJzLCBub3QganVz\n"
- "dCB0byBvbmUuIEV2ZW4gaWYgc3VwcG9ydCBpcyBub3QgaW1wbGVtZW50ZWQgaW1tZWRpYXRlbHkK\n"
- "aW4gdGhlIGh3bW9uIGNvcmUsIHRoZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSB1c2FibGUgaW4gYSBn\n"
- "ZW5lcmljIHdheSwgYW5kIG5vdApyZWZsZWN0IHN5c2ZzIGF0dHJpYnV0ZSBuYW1lcyB1c2VkIGJ5\n"
- "IHRoZSBod21vbiBzdWJzeXN0ZW0uCgpUaGFua3MsCkd1ZW50ZXIKCj4gICBFeGFtcGxlIExNOTAg\n"
- "bm9kZToKPgo+ICAgdGVtcC1zZW5zb3Igewo+IEBAIC00MSw0ICs3MywxMiBAQCB0ZW1wLXNlbnNv\n"
- "ciB7Cj4gICAJdmNjLXN1cHBseSA9IDwmcGFsbWFzX2xkbzZfcmVnPjsKPiAgIAlpbnRlcnJ1cHQt\n"
- "cGFyZW50ID0gPCZncGlvPjsKPiAgIAlpbnRlcnJ1cHRzID0gPFRFR1JBX0dQSU8oTywgNCkgSVJR\n"
- "X1RZUEVfTEVWRUxfTE9XPjsKPiArCXVwZGF0ZS1pbnRlcnZhbCA9IDw1MDA+Owo+ICsJbG9jYWwt\n"
- "bG93ID0gPDUwMDA+Owo+ICsJbG9jYWwtaGlnaCA9IDw4MDAwMD47Cj4gKwlsb2NhbC1jcml0aWNh\n"
- "bCA9IDw5MDAwMD47Cj4gKwlyZW1vdGUtbG93ID0gPDUwMDA+Owo+ICsJcmVtb3RlLWhpZ2ggPSA8\n"
- "ODAwMDA+Owo+ICsJcmVtb3RlLWNyaXRpY2FsID0gPDkwMDAwPjsKPiArCXJlbW90ZS1vZmZzZXQg\n"
- "PSA8KC02MjEyNSk+Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTAuYyBi\n"
- "L2RyaXZlcnMvaHdtb24vbG05MC5jCj4gaW5kZXggODhkYWY3Mi4uOGFlODc5MSAxMDA2NDQKPiAt\n"
- "LS0gYS9kcml2ZXJzL2h3bW9uL2xtOTAuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vbG05MC5jCj4g\n"
- "QEAgLTkzLDYgKzkzLDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+ICAgI2luY2x1\n"
- "ZGUgPGxpbnV4L2Vyci5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gKyNpbmNsdWRl\n"
- "IDxsaW51eC9vZi5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cj4gICAjaW5jbHVkZSA8\n"
- "bGludXgvaW50ZXJydXB0Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy\n"
- "Lmg+Cj4gQEAgLTE1MDQsOCArMTUwNSwxNiBAQCBzdGF0aWMgdm9pZCBsbTkwX3Jlc3RvcmVfY29u\n"
- "ZihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAg\n"
- "c3RhdGljIHZvaWQgbG05MF9pbml0X2NsaWVudChzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAg\n"
- "ewo+ICAgCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7Cj4gKwlzdHJ1\n"
- "Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gICAJdTggY29uZmlnLCBjb252cmF0ZTsK\n"
- "PiArCXUzMiBtczsKPiArI2lmZGVmIENPTkZJR19PRgo+ICsJczMyIHRlbXA7Cj4gKyNlbmRpZgo+\n"
- "Cj4gKwkvKgo+ICsJICogU2F2ZSBvbGQgY29udmVyc2lvbiByYXRlLgo+ICsJICovCj4gICAJaWYg\n"
- "KGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0NPTlZSQVRFLCAmY29udnJhdGUpIDwg\n"
- "MCkgewo+ICAgCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJGYWlsZWQgdG8gcmVhZCBjb252cmF0\n"
- "ZSByZWdpc3RlciFcbiIpOwo+ICAgCQljb252cmF0ZSA9IExNOTBfREVGX0NPTlZSQVRFX1JWQUw7\n"
- "Cj4gQEAgLTE1MTUsMTQgKzE1MjQsMjQgQEAgc3RhdGljIHZvaWQgbG05MF9pbml0X2NsaWVudChz\n"
- "dHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAgCS8qCj4gICAJICogU3RhcnQgdGhlIGNvbnZlcnNp\n"
- "b25zLgo+ICAgCSAqLwo+IC0JbG05MF9zZXRfY29udnJhdGVfbG9ja2VkKGRhdGEsIDUwMCk7ICAv\n"
- "KiA1MDBtcyAvIDJIeiAgKi8KPiArI2lmZGVmIENPTkZJR19PRgo+ICsJaWYgKG9mX3Byb3BlcnR5\n"
- "X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgInVwZGF0ZS1pbnRlcnZhbCIsICZtcykgPCAwKQo+ICsj\n"
- "ZW5kaWYKPiArCQltcyA9IDUwMDsgIC8qIGRlZmF1bHQgcmF0ZTogMkh6ICovCj4gKwlsbTkwX3Nl\n"
- "dF9jb252cmF0ZV9sb2NrZWQoZGF0YSwgbXMpOwo+ICsKPiArCS8qCj4gKwkgKiBTYXZlIG9sZCBj\n"
- "b25maWcKPiArCSAqLwo+ICAgCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9D\n"
- "T05GSUcxLCAmY29uZmlnKSA8IDApIHsKPiAtCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJJbml0\n"
- "aWFsaXphdGlvbiBmYWlsZWQhXG4iKTsKPiArCQlkZXZfd2FybihkZXYsICJJbml0aWFsaXphdGlv\n"
- "biBmYWlsZWQhXG4iKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAgIAlkYXRhLT5jb25maWdfb3Jp\n"
- "ZyA9IGNvbmZpZzsKPgo+IC0JLyogQ2hlY2sgVGVtcGVyYXR1cmUgUmFuZ2UgU2VsZWN0ICovCj4g\n"
- "KwkvKgo+ICsJICogQ2hlY2sgVGVtcGVyYXR1cmUgUmFuZ2UgU2VsZWN0Cj4gKwkgKi8KPiAgIAlp\n"
- "ZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxIHx8IGRhdGEtPmtpbmQgPT0gdG1wNDUxKSB7Cj4gICAJ\n"
- "CWlmIChjb25maWcgJiAweDA0KQo+ICAgCQkJZGF0YS0+ZmxhZ3MgfD0gTE05MF9GTEFHX0FEVDc0\n"
- "NjFfRVhUOwo+IEBAIC0xNTQ1LDYgKzE1NjQsMzYgQEAgc3RhdGljIHZvaWQgbG05MF9pbml0X2Ns\n"
- "aWVudChzdHJ1Y3QgbG05MF9kYXRhICpkYXRhKQo+ICAgCWNvbmZpZyAmPSAweEJGOwkvKiBydW4g\n"
- "Ki8KPiAgIAlpZiAoY29uZmlnICE9IGRhdGEtPmNvbmZpZ19vcmlnKSAvKiBPbmx5IHdyaXRlIGlm\n"
- "IGNoYW5nZWQgKi8KPiAgIAkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIExNOTBf\n"
- "UkVHX1dfQ09ORklHMSwgY29uZmlnKTsKPiArCj4gKyNpZmRlZiBDT05GSUdfT0YKPiArCS8qCj4g\n"
- "KwkgKiBTZXQgaW5pdGlhbCB2YWx1ZXMgZnJvbSBkZXZpY2V0cmVlCj4gKwkgKi8KPiArI2RlZmlu\n"
- "ZSBJTklUX1JFRyhfcHJvcGVydHksIF9pbmRleCwgX2JpdHMpIHsgXAo+ICsJaWYgKG9mX3Byb3Bl\n"
- "cnR5X3JlYWRfczMyKGRldi0+b2Zfbm9kZSwgX3Byb3BlcnR5LCAmdGVtcCkgPT0gMCkgXAo+ICsJ\n"
- "CWxtOTBfc2V0X3RlbXAjI19iaXRzIyNfbG9ja2VkKGRhdGEsIF9pbmRleCwgdGVtcCk7IFwKPiAr\n"
- "fQo+ICsJSU5JVF9SRUcoImxvY2FsLWxvdyIsIExPQ0FMX0xPVywgOCk7Cj4gKwlJTklUX1JFRygi\n"
- "bG9jYWwtaGlnaCIsIExPQ0FMX0hJR0gsIDgpOwo+ICsJSU5JVF9SRUcoImxvY2FsLWNyaXRpY2Fs\n"
- "IiwgTE9DQUxfQ1JJVCwgOCk7Cj4gKwlJTklUX1JFRygicmVtb3RlLWxvdyIsIFJFTU9URV9MT1cs\n"
- "IDExKTsKPiArCUlOSVRfUkVHKCJyZW1vdGUtaGlnaCIsIFJFTU9URV9ISUdILCAxMSk7Cj4gKwlJ\n"
- "TklUX1JFRygicmVtb3RlLWNyaXRpY2FsIiwgUkVNT1RFX0NSSVQsIDgpOwo+ICsJaWYgKGRhdGEt\n"
- "PmZsYWdzICYgTE05MF9IQVZFX09GRlNFVCkgewo+ICsJCUlOSVRfUkVHKCJyZW1vdGUtb2Zmc2V0\n"
- "IiwgUkVNT1RFX09GRlNFVCwgMTEpOwo+ICsJfQo+ICsJaWYgKGRhdGEtPmZsYWdzICYgTE05MF9I\n"
- "QVZFX0VNRVJHRU5DWSkgewo+ICsJCUlOSVRfUkVHKCJsb2NhbC1lbWVyZ2VuY3kiLCBMT0NBTF9F\n"
- "TUVSRywgOCk7Cj4gKwkJSU5JVF9SRUcoInJlbW90ZS1lbWVyZ2VuY3kiLCBSRU1PVEVfRU1FUkcs\n"
- "IDgpOwo+ICsJfQo+ICsJaWYgKGRhdGEtPmZsYWdzICYgTE05MF9IQVZFX1RFTVAzKSB7Cj4gKwkJ\n"
- "SU5JVF9SRUcoInJlbW90ZTItbG93IiwgUkVNT1RFMl9MT1csIDExKTsKPiArCQlJTklUX1JFRygi\n"
- "cmVtb3RlMi1oaWdoIiwgUkVNT1RFMl9ISUdILCAxMSk7Cj4gKwkJSU5JVF9SRUcoInJlbW90ZTIt\n"
- "Y3JpdGljYWwiLCBSRU1PVEUyX0NSSVQsIDgpOwo+ICsJCUlOSVRfUkVHKCJyZW1vdGUyLWVtZXJn\n"
- "ZW5jeSIsIFJFTU9URTJfRU1FUkcsIDgpOwo+ICsJfQo+ICsjdW5kZWYgSU5JVF9SRUcKPiArI2Vu\n"
- "ZGlmCj4gICB9Cj4KPiAgIHN0YXRpYyBib29sIGxtOTBfaXNfdHJpcHBlZChzdHJ1Y3QgaTJjX2Ns\n"
- "aWVudCAqY2xpZW50LCB1MTYgKnN0YXR1cykKPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f\n"
- "X19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNA\n"
- "bG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGlu\n"
- Zm8vbG0tc2Vuc29ycw=
+ "On 01/21/2016 11:34 AM, St\303\251phan Kochen wrote:\n"
+ "> Allow a device tree to set initial temperature sensor parameters.\n"
+ ">\n"
+ "> Userspace can still override actual values through sysfs.\n"
+ ">\n"
+ "> Signed-off-by: St\303\251phan Kochen <stephan-j6uo2F6POYhmR6Xm/wNWPw@public.gmane.org>\n"
+ "> ---\n"
+ ">   Documentation/devicetree/bindings/hwmon/lm90.txt | 40 +++++++++++++++++\n"
+ ">   drivers/hwmon/lm90.c                             | 55 ++++++++++++++++++++++--\n"
+ ">   2 files changed, 92 insertions(+), 3 deletions(-)\n"
+ ">\n"
+ "> diff --git a/Documentation/devicetree/bindings/hwmon/lm90.txt b/Documentation/devicetree/bindings/hwmon/lm90.txt\n"
+ "> index e863248..045e94b 100644\n"
+ "> --- a/Documentation/devicetree/bindings/hwmon/lm90.txt\n"
+ "> +++ b/Documentation/devicetree/bindings/hwmon/lm90.txt\n"
+ "> @@ -33,6 +33,38 @@ Optional properties:\n"
+ ">                 LM90 \"-ALERT\" pin output.\n"
+ ">                 See interrupt-controller/interrupts.txt for the format.\n"
+ ">\n"
+ "> +- update-interval: Interval at which temperatures are sampled,\n"
+ "> +  Type: unsigned   in milliseconds.\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "> +- local-low:      Valid temperature range for the chip internal sensor,\n"
+ "> +  local-high:     outside which the alert will be set. Values are in\n"
+ "> +  local-critical: millicelcius.\n"
+ "> +  Type: signed\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "> +- remote-low:      Valid temperature range for the external sensor,\n"
+ "> +  remote-high:     outside which the alert will be set. Values are in\n"
+ "> +  remote-critical: millicelciius.\n"
+ "> +  Type: signed\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "> +- remote-offset:   Where available, an external sensor temperature offset.\n"
+ "> +  Type: signed\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "> +- local-emergency:  On max6659, max6695 and max6696, a configurable\n"
+ "> +  remote-emergency: 3rd upper bound on temperature.\n"
+ "> +  Type: signed\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "> +- remote2-low:      On max6695 and max6696, a second external sensor.\n"
+ "> +  remote2-high:\n"
+ "> +  remote2-critical:\n"
+ "> +  remote2-emergency:\n"
+ "> +  Type: signed\n"
+ "> +  Size: one cell\n"
+ "> +\n"
+ "\n"
+ "This very much smells like configuration, not hardware description.\n"
+ "\n"
+ "Having said that, the thermal subsystem does something similar. This raises even more\n"
+ "questions, though. Since patch 3 of the series introduces registration with the thermal\n"
+ "subsystem, it seems to me that the thermal subsystem should provide any limits used\n"
+ "to program the chips, and that there should be a mechanism for the thermal subsystem\n"
+ "to interact with the driver to both set the limits and to be informed if a limit\n"
+ "is exceeded.\n"
+ "\n"
+ "Also, _if_ such a set of properties is introduced and accepted by the devicetree\n"
+ "reviewers, it should probably be a set of properties which applies to _all_ hardware\n"
+ "monitoring drivers, not just to one. Even if support is not implemented immediately\n"
+ "in the hwmon core, the properties should be usable in a generic way, and not\n"
+ "reflect sysfs attribute names used by the hwmon subsystem.\n"
+ "\n"
+ "Thanks,\n"
+ "Guenter\n"
+ "\n"
+ ">   Example LM90 node:\n"
+ ">\n"
+ ">   temp-sensor {\n"
+ "> @@ -41,4 +73,12 @@ temp-sensor {\n"
+ ">   \tvcc-supply = <&palmas_ldo6_reg>;\n"
+ ">   \tinterrupt-parent = <&gpio>;\n"
+ ">   \tinterrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;\n"
+ "> +\tupdate-interval = <500>;\n"
+ "> +\tlocal-low = <5000>;\n"
+ "> +\tlocal-high = <80000>;\n"
+ "> +\tlocal-critical = <90000>;\n"
+ "> +\tremote-low = <5000>;\n"
+ "> +\tremote-high = <80000>;\n"
+ "> +\tremote-critical = <90000>;\n"
+ "> +\tremote-offset = <(-62125)>;\n"
+ ">   }\n"
+ "> diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c\n"
+ "> index 88daf72..8ae8791 100644\n"
+ "> --- a/drivers/hwmon/lm90.c\n"
+ "> +++ b/drivers/hwmon/lm90.c\n"
+ "> @@ -93,6 +93,7 @@\n"
+ ">   #include <linux/hwmon.h>\n"
+ ">   #include <linux/err.h>\n"
+ ">   #include <linux/mutex.h>\n"
+ "> +#include <linux/of.h>\n"
+ ">   #include <linux/sysfs.h>\n"
+ ">   #include <linux/interrupt.h>\n"
+ ">   #include <linux/regulator/consumer.h>\n"
+ "> @@ -1504,8 +1505,16 @@ static void lm90_restore_conf(struct i2c_client *client, struct lm90_data *data)\n"
+ ">   static void lm90_init_client(struct lm90_data *data)\n"
+ ">   {\n"
+ ">   \tstruct i2c_client *client = data->client;\n"
+ "> +\tstruct device *dev = &client->dev;\n"
+ ">   \tu8 config, convrate;\n"
+ "> +\tu32 ms;\n"
+ "> +#ifdef CONFIG_OF\n"
+ "> +\ts32 temp;\n"
+ "> +#endif\n"
+ ">\n"
+ "> +\t/*\n"
+ "> +\t * Save old conversion rate.\n"
+ "> +\t */\n"
+ ">   \tif (lm90_read_reg(client, LM90_REG_R_CONVRATE, &convrate) < 0) {\n"
+ ">   \t\tdev_warn(&client->dev, \"Failed to read convrate register!\\n\");\n"
+ ">   \t\tconvrate = LM90_DEF_CONVRATE_RVAL;\n"
+ "> @@ -1515,14 +1524,24 @@ static void lm90_init_client(struct lm90_data *data)\n"
+ ">   \t/*\n"
+ ">   \t * Start the conversions.\n"
+ ">   \t */\n"
+ "> -\tlm90_set_convrate_locked(data, 500);  /* 500ms / 2Hz  */\n"
+ "> +#ifdef CONFIG_OF\n"
+ "> +\tif (of_property_read_u32(dev->of_node, \"update-interval\", &ms) < 0)\n"
+ "> +#endif\n"
+ "> +\t\tms = 500;  /* default rate: 2Hz */\n"
+ "> +\tlm90_set_convrate_locked(data, ms);\n"
+ "> +\n"
+ "> +\t/*\n"
+ "> +\t * Save old config\n"
+ "> +\t */\n"
+ ">   \tif (lm90_read_reg(client, LM90_REG_R_CONFIG1, &config) < 0) {\n"
+ "> -\t\tdev_warn(&client->dev, \"Initialization failed!\\n\");\n"
+ "> +\t\tdev_warn(dev, \"Initialization failed!\\n\");\n"
+ ">   \t\treturn;\n"
+ ">   \t}\n"
+ ">   \tdata->config_orig = config;\n"
+ ">\n"
+ "> -\t/* Check Temperature Range Select */\n"
+ "> +\t/*\n"
+ "> +\t * Check Temperature Range Select\n"
+ "> +\t */\n"
+ ">   \tif (data->kind == adt7461 || data->kind == tmp451) {\n"
+ ">   \t\tif (config & 0x04)\n"
+ ">   \t\t\tdata->flags |= LM90_FLAG_ADT7461_EXT;\n"
+ "> @@ -1545,6 +1564,36 @@ static void lm90_init_client(struct lm90_data *data)\n"
+ ">   \tconfig &= 0xBF;\t/* run */\n"
+ ">   \tif (config != data->config_orig) /* Only write if changed */\n"
+ ">   \t\ti2c_smbus_write_byte_data(client, LM90_REG_W_CONFIG1, config);\n"
+ "> +\n"
+ "> +#ifdef CONFIG_OF\n"
+ "> +\t/*\n"
+ "> +\t * Set initial values from devicetree\n"
+ "> +\t */\n"
+ "> +#define INIT_REG(_property, _index, _bits) { \\\n"
+ "> +\tif (of_property_read_s32(dev->of_node, _property, &temp) == 0) \\\n"
+ "> +\t\tlm90_set_temp##_bits##_locked(data, _index, temp); \\\n"
+ "> +}\n"
+ "> +\tINIT_REG(\"local-low\", LOCAL_LOW, 8);\n"
+ "> +\tINIT_REG(\"local-high\", LOCAL_HIGH, 8);\n"
+ "> +\tINIT_REG(\"local-critical\", LOCAL_CRIT, 8);\n"
+ "> +\tINIT_REG(\"remote-low\", REMOTE_LOW, 11);\n"
+ "> +\tINIT_REG(\"remote-high\", REMOTE_HIGH, 11);\n"
+ "> +\tINIT_REG(\"remote-critical\", REMOTE_CRIT, 8);\n"
+ "> +\tif (data->flags & LM90_HAVE_OFFSET) {\n"
+ "> +\t\tINIT_REG(\"remote-offset\", REMOTE_OFFSET, 11);\n"
+ "> +\t}\n"
+ "> +\tif (data->flags & LM90_HAVE_EMERGENCY) {\n"
+ "> +\t\tINIT_REG(\"local-emergency\", LOCAL_EMERG, 8);\n"
+ "> +\t\tINIT_REG(\"remote-emergency\", REMOTE_EMERG, 8);\n"
+ "> +\t}\n"
+ "> +\tif (data->flags & LM90_HAVE_TEMP3) {\n"
+ "> +\t\tINIT_REG(\"remote2-low\", REMOTE2_LOW, 11);\n"
+ "> +\t\tINIT_REG(\"remote2-high\", REMOTE2_HIGH, 11);\n"
+ "> +\t\tINIT_REG(\"remote2-critical\", REMOTE2_CRIT, 8);\n"
+ "> +\t\tINIT_REG(\"remote2-emergency\", REMOTE2_EMERG, 8);\n"
+ "> +\t}\n"
+ "> +#undef INIT_REG\n"
+ "> +#endif\n"
+ ">   }\n"
+ ">\n"
+ ">   static bool lm90_is_tripped(struct i2c_client *client, u16 *status)\n"
+ ">\n"
+ "\n"
+ "--\n"
+ "To unsubscribe from this list: send the line \"unsubscribe devicetree\" in\n"
+ "the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\n"
+ More majordomo info at  http://vger.kernel.org/majordomo-info.html
 
-37cfc71ba56a699417fc53299b1d66113d800472b1f90822647fa612ce1432a3
+69e356bc9cbef5c9ed8eb087fbe369131d310369f87ef4bdc0164dd94ebe8510

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.