All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Mike Looijmans <mike.looijmans@topic.nl>
Cc: lm-sensors@lm-sensors.org, jdelvare@suse.com,
	linux-kernel@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH v3] hwmon: Add LTC2990 sensor driver
Date: Thu, 14 Jan 2016 19:14:15 +0000	[thread overview]
Message-ID: <20160114191415.GA30413@roeck-us.net> (raw)
In-Reply-To: <1452696301-28761-1-git-send-email-mike.looijmans@topic.nl>

T24gV2VkLCBKYW4gMTMsIDIwMTYgYXQgMDM6NDU6MDFQTSArMDEwMCwgTWlrZSBMb29pam1hbnMg
d3JvdGU6Cj4gVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMaW5lYXIgVGVjaG5vbG9neSBMVEMy
OTkwICBJMkMgU3lzdGVtIE1vbml0b3IuCj4gVGhlIExUQzI5OTAgc3VwcG9ydHMgYSBjb21iaW5h
dGlvbiBvZiB2b2x0YWdlLCBjdXJyZW50IGFuZCB0ZW1wZXJhdHVyZQo+IG1vbml0b3JpbmcuIFRo
aXMgZHJpdmVyIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHJlYWRpbmcgdHdvIGN1cnJlbnRzCj4g
YnkgbWVhc3VyaW5nIHR3byBkaWZmZXJlbnRpYWwgdm9sdGFnZXMgYWNyb3NzIHNlcmllcyByZXNp
c3RvcnMsIGluCj4gYWRkaXRpb24gdG8gdGhlIFZjYyBzdXBwbHkgdm9sdGFnZSBhbmQgaW50ZXJu
YWwgdGVtcGVyYXR1cmUuCj4gCj4gVGhpcyBpcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgdGhlIFRv
cGljIE1pYW1pIFNPTSB3aGljaCB1c2VzIHRoaXMgY2hpcAo+IHRvIG1vbml0b3IgdGhlIGN1cnJl
bnRzIGZsb3dpbmcgaW50byB0aGUgRlBHQSBhbmQgdGhlIENQVSBwYXJ0cy4KPiAKPiBTaWduZWQt
b2ZmLWJ5OiBNaWtlIExvb2lqbWFucyA8bWlrZS5sb29pam1hbnNAdG9waWMubmw+CgpIaSBNaWtl
LAoKYWxtb3N0IHRoZXJlLiBQbGVhc2Ugc2VlIGlubGluZS4KClRoYW5rcywKR3VlbnRlcgoKPiAt
LS0KPiB2MzogUmVtb3ZlIHVudXNlZCBpbmNsdWRlcy4KPiAgICAgUmVtb3ZlIChtb3N0KSB1bnVz
ZWQgcmVnaXN0ZXIgZGVmaW5lcy4KPiAgICAgQWxzbyBjaGVjayBvbiBTTUJVUyBXT1JEIGNhcGFi
aWxpdHkuCj4gICAgIFVzZSByZWdpc3RlciBkZWZpbmVzIGFzIHZhbHVlIGluZGljZXMuCj4gICAg
IEFsaWdubWVudCBmaXh1cHMgd2l0aCAiKCIuCj4gdjI6IFByb2Nlc3NlZCBhbGwgcmV2aWV3IGNv
bW1lbnRzLgo+ICAgICAgUHV0IGNoaXAgaW50byBjb250aW51b3VzIG1lYXN1cmVtZW50IG1vZGUu
Cj4gICAgICBBZGRlZCBkdWN1bWVudGF0aW9uLgo+ICAgICAgVXNlIHN0YW5kYXJkIGh3bW9uIGlu
dGVyZmFjZXMgYW5kIG1hY3Jvcy4KPiAKPiAgRG9jdW1lbnRhdGlvbi9od21vbi9sdGMyOTkwIHwg
IDQ0ICsrKysrKysrKysrKwo+ICBkcml2ZXJzL2h3bW9uL0tjb25maWcgICAgICAgfCAgMTQgKysr
Kwo+ICBkcml2ZXJzL2h3bW9uL01ha2VmaWxlICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2h3bW9u
L2x0YzI5OTAuYyAgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUg
bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9od21vbi9sdGMyOTkwCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBkcml2ZXJzL2h3bW9uL2x0YzI5OTAuYwo+IAo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0
aW9uL2h3bW9uL2x0YzI5OTAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzI5OTAKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjgzOGI3NGUKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sdGMyOTkwCj4gQEAgLTAsMCArMSw0NCBAQAo+ICtL
ZXJuZWwgZHJpdmVyIGx0YzI5OTAKPiArPT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICtTdXBw
b3J0ZWQgY2hpcHM6Cj4gKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVEMyOTkwCj4gKyAgICBQcmVm
aXg6ICdsdGMyOTkwJwo+ICsgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KPiArICAgIERhdGFzaGVl
dDogaHR0cDovL3d3dy5saW5lYXIuY29tL3Byb2R1Y3QvbHRjMjk5MAo+ICsKPiArQXV0aG9yOiBN
aWtlIExvb2lqbWFucyA8bWlrZS5sb29pam1hbnNAdG9waWMubmw+Cj4gKwo+ICsKPiArRGVzY3Jp
cHRpb24KPiArLS0tLS0tLS0tLS0KPiArCj4gK0xUQzI5OTAgaXMgYSBRdWFkIEkyQyBWb2x0YWdl
LCBDdXJyZW50IGFuZCBUZW1wZXJhdHVyZSBNb25pdG9yLgo+ICtUaGUgY2hpcCdzIGlucHV0cyBj
YW4gbWVhc3VyZSA0IHZvbHRhZ2VzLCBvciB0d28gaW5wdXRzIHRvZ2V0aGVyICgxKzIgYW5kIDMr
NCkKPiArY2FuIGJlIGNvbWJpbmVkIHRvIG1lYXN1cmUgYSBkaWZmZXJlbnRpYWwgdm9sdGFnZSwg
d2hpY2ggaXMgdHlwaWNhbGx5IHVzZWQgdG8KPiArbWVhc3VyZSBjdXJyZW50IHRocm91Z2ggYSBz
ZXJpZXMgcmVzaXN0b3IsIG9yIGEgdGVtcGVyYXR1cmUuCj4gKwo+ICtUaGlzIGRyaXZlciBjdXJy
ZW50bHkgdXNlcyB0aGUgMnggZGlmZmVyZW50aWFsIG1vZGUgb25seS4gSW4gb3JkZXIgdG8gc3Vw
cG9ydAo+ICtvdGhlciBtb2RlcywgdGhlIGRyaXZlciB3aWxsIG5lZWQgdG8gYmUgZXhwYW5kZWQu
Cj4gKwo+ICsKPiArVXNhZ2UgTm90ZXMKPiArLS0tLS0tLS0tLS0KPiArCj4gK1RoaXMgZHJpdmVy
IGRvZXMgbm90IHByb2JlIGZvciBQTUJ1cyBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3Rh
bnRpYXRlCj4gK2RldmljZXMgZXhwbGljaXRseS4KPiArCj4gKwo+ICtTeXNmcyBhdHRyaWJ1dGVz
Cj4gKy0tLS0tLS0tLS0tLS0tLS0KPiArCj4gK1RoZSAiY3VycipfaW5wdXQiIG1lYXN1cmVtZW50
cyBhY3R1YWxseSByZXBvcnQgdGhlIHZvbHRhZ2UgZHJvcCBhY3Jvc3MgdGhlCj4gK2lucHV0IHBp
bnMgaW4gbWljcm92b2x0cy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBjdXJyZW50IHRocm91
Z2ggYSAxbU9obQo+ICtzZW5zZSByZXNpc3Rvci4gRGl2aWRlIHRoZSByZXBvcnRlZCB2YWx1ZSBi
eSB0aGUgYWN0dWFsIHNlbnNlIHJlc2lzdG9yIHZhbHVlCj4gK2luIG1PaG0gdG8gZ2V0IHRoZSBh
Y3R1YWwgdmFsdWUuCj4gKwo+ICtpbjBfaW5wdXQgICAgIFZvbHRhZ2UgYXQgVmNjIHBpbiBpbiBt
aWxsaXZvbHQgKHJhbmdlIDIuNVYgdG8gNVYpCj4gK3RlbXAxX2lucHV0ICAgSW50ZXJuYWwgY2hp
cCB0ZW1wZXJhdHVyZSBpbiBtaWxsaWRlZ3JlZXMgQ2VsY2l1cwo+ICtjdXJyMV9pbnB1dCAgIEN1
cnJlbnQgaW4gbUEgYWNyb3NzIHYxLXYyIGFzc3VtaW5nIGEgMW1PaG0gc2Vuc2UgcmVzaXN0b3Iu
Cj4gK2N1cnIyX2lucHV0ICAgQ3VycmVudCBpbiBtQSBhY3Jvc3MgdjMtdjQgYXNzdW1pbmcgYSAx
bU9obSBzZW5zZSByZXNpc3Rvci4KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vS2Nv
bmZpZyBiL2RyaXZlcnMvaHdtb24vS2NvbmZpZwo+IGluZGV4IDgwYTczYmYuLjhhMzFkNjQgMTAw
NjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9od21vbi9L
Y29uZmlnCj4gQEAgLTY4NSw2ICs2ODUsMjAgQEAgY29uZmlnIFNFTlNPUlNfTFRDMjk0NQo+ICAJ
ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBt
b2R1bGUgd2lsbAo+ICAJICBiZSBjYWxsZWQgbHRjMjk0NS4KPiAgCj4gK2NvbmZpZyBTRU5TT1JT
X0xUQzI5OTAKPiArCXRyaXN0YXRlICJMaW5lYXIgVGVjaG5vbG9neSBMVEMyOTkwIChjdXJyZW50
IG1vbml0b3JpbmcgbW9kZSBvbmx5KSIKPiArCWRlcGVuZHMgb24gSTJDCj4gKwloZWxwCj4gKwkg
IElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciBMaW5lYXIgVGVjaG5vbG9n
eSBMVEMyOTkwCj4gKwkgIEkyQyBTeXN0ZW0gTW9uaXRvci4gVGhlIExUQzI5OTAgc3VwcG9ydHMg
YSBjb21iaW5hdGlvbiBvZiB2b2x0YWdlLAo+ICsJICBjdXJyZW50IGFuZCB0ZW1wZXJhdHVyZSBt
b25pdG9yaW5nLCBidXQgaW4gYWRkaXRpb24gdG8gdGhlIFZjYyBzdXBwbHkKPiArCSAgdm9sdGFn
ZSBhbmQgY2hpcCB0ZW1wZXJhdHVyZSwgdGhpcyBkcml2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9y
dHMKPiArCSAgcmVhZGluZyB0d28gY3VycmVudHMgYnkgbWVhc3VyaW5nIHR3byBkaWZmZXJlbnRp
YWwgdm9sdGFnZXMgYWNyb3NzCj4gKwkgIHNlcmllcyByZXNpc3RvcnMuCj4gKwo+ICsJICBUaGlz
IGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGUg
d2lsbAo+ICsJICBiZSBjYWxsZWQgbHRjMjk5MC4KPiArCj4gIGNvbmZpZyBTRU5TT1JTX0xUQzQx
NTEKPiAgCXRyaXN0YXRlICJMaW5lYXIgVGVjaG5vbG9neSBMVEM0MTUxIgo+ICAJZGVwZW5kcyBv
biBJMkMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9NYWtlZmlsZSBiL2RyaXZlcnMvaHdt
b24vTWFrZWZpbGUKPiBpbmRleCAxMmEzMjM5Li5lNGJkMTViIDEwMDY0NAo+IC0tLSBhL2RyaXZl
cnMvaHdtb24vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2h3bW9uL01ha2VmaWxlCj4gQEAgLTEw
MSw2ICsxMDEsNyBAQCBvYmotJChDT05GSUdfU0VOU09SU19MTTk1MjM0KQkrPSBsbTk1MjM0Lm8K
PiAgb2JqLSQoQ09ORklHX1NFTlNPUlNfTE05NTI0MSkJKz0gbG05NTI0MS5vCj4gIG9iai0kKENP
TkZJR19TRU5TT1JTX0xNOTUyNDUpCSs9IGxtOTUyNDUubwo+ICBvYmotJChDT05GSUdfU0VOU09S
U19MVEMyOTQ1KQkrPSBsdGMyOTQ1Lm8KPiArb2JqLSQoQ09ORklHX1NFTlNPUlNfTFRDMjk5MCkJ
Kz0gbHRjMjk5MC5vCj4gIG9iai0kKENPTkZJR19TRU5TT1JTX0xUQzQxNTEpCSs9IGx0YzQxNTEu
bwo+ICBvYmotJChDT05GSUdfU0VOU09SU19MVEM0MjE1KQkrPSBsdGM0MjE1Lm8KPiAgb2JqLSQo
Q09ORklHX1NFTlNPUlNfTFRDNDIyMikJKz0gbHRjNDIyMi5vCj4gZGlmZiAtLWdpdCBhL2RyaXZl
cnMvaHdtb24vbHRjMjk5MC5jIGIvZHJpdmVycy9od21vbi9sdGMyOTkwLmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjM3Y2E1ZjQKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvZHJpdmVycy9od21vbi9sdGMyOTkwLmMKPiBAQCAtMCwwICsxLDE1OSBAQAo+ICsvKgo+ICsg
KiBEcml2ZXIgZm9yIExpbmVhciBUZWNobm9sb2d5IExUQzI5OTAgcG93ZXIgbW9uaXRvcgo+ICsg
Kgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVG9waWMgRW1iZWRkZWQgUHJvZHVjdHMKPiArICog
QXV0aG9yOiBNaWtlIExvb2lqbWFucyA8bWlrZS5sb29pam1hbnNAdG9waWMubmw+Cj4gKyAqCj4g
KyAqIExpY2Vuc2U6IEdQTHYyCj4gKyAqCj4gKyAqIFRoaXMgZHJpdmVyIGFzc3VtZXMgdGhlIGNo
aXAgaXMgd2lyZWQgYXMgYSBkdWFsIGN1cnJlbnQgbW9uaXRvciwgYW5kCj4gKyAqIHJlcG9ydHMg
dGhlIHZvbHRhZ2UgZHJvcCBhY3Jvc3MgdHdvIHNlcmllcyByZXNpc3RvcnMuIEl0IGFsc28gcmVw
b3J0cwo+ICsgKiB0aGUgY2hpcCdzIGludGVybmFsIHRlbXBlcmF0dXJlIGFuZCBWY2MgcG93ZXIg
c3VwcGx5IHZvbHRhZ2UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsj
aW5jbHVkZSA8bGludXgvaHdtb24uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+
Cj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+
ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKwo+ICsjZGVmaW5lIExUQzI5OTBfU1RBVFVT
CTB4MDAKPiArI2RlZmluZSBMVEMyOTkwX0NPTlRST0wJMHgwMQo+ICsjZGVmaW5lIExUQzI5OTBf
VFJJR0dFUgkweDAyCj4gKyNkZWZpbmUgTFRDMjk5MF9USU5UX01TQgkweDA0Cj4gKyNkZWZpbmUg
TFRDMjk5MF9WMV9NU0IJMHgwNgo+ICsjZGVmaW5lIExUQzI5OTBfVjJfTVNCCTB4MDgKPiArI2Rl
ZmluZSBMVEMyOTkwX1YzX01TQgkweDBBCj4gKyNkZWZpbmUgTFRDMjk5MF9WNF9NU0IJMHgwQwo+
ICsjZGVmaW5lIExUQzI5OTBfVkNDX01TQgkweDBFCj4gKwo+ICsjZGVmaW5lIExUQzI5OTBfQ09O
VFJPTF9LRUxWSU4JCUJJVCg3KQo+ICsjZGVmaW5lIExUQzI5OTBfQ09OVFJPTF9TSU5HTEUJCUJJ
VCg2KQo+ICsjZGVmaW5lIExUQzI5OTBfQ09OVFJPTF9NRUFTVVJFX0FMTAkoMHgzIDw8IDMpCj4g
KyNkZWZpbmUgTFRDMjk5MF9DT05UUk9MX01PREVfQ1VSUkVOVAkweDA2Cj4gKyNkZWZpbmUgTFRD
Mjk5MF9DT05UUk9MX01PREVfVk9MVEFHRQkweDA3Cj4gKwo+ICsvKiBjb252ZXJ0IHJhdyByZWdp
c3RlciB2YWx1ZSB0byBzaWduLWV4dGVuZGVkIGludGVnZXIgaW4gMTYtYml0IHJhbmdlICovCj4g
K3N0YXRpYyBpbnQgbHRjMjk5MF92b2x0YWdlX3RvX2ludChpbnQgcmF3KQo+ICt7Cj4gKwlpZiAo
cmF3ICYgQklUKDE0KSkgewo+ICsJCXJldHVybiAtKDB4NDAwMCAtIChyYXcgJiAweDNGRkYpKSA8
PCAyOwo+ICsJfSBlbHNlIHsKPiArCQlyZXR1cm4gKHJhdyAmIDB4M0ZGRikgPDwgMjsKPiArCX0K
ClVubmVjZXNzYXJ5IHsgfS4gUGxlYXNlIHNlZSBjaGVja3BhdGNoIHdhcm5pbmcuCgo+ICt9Cj4g
Kwo+ICsvKiBSZXR1cm4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHRoZSBnaXZlbiByZWdpc3Rl
ciBpbiB1ViBvciBtQyAqLwo+ICtzdGF0aWMgaW50IGx0YzI5OTBfZ2V0X3ZhbHVlKHN0cnVjdCBp
MmNfY2xpZW50ICppMmMsIHU4IHJlZykKPiArewo+ICsJaW50IHZhbDsKPiArCWludCByZXN1bHQ7
Cj4gKwo+ICsJdmFsID0gaTJjX3NtYnVzX3JlYWRfd29yZF9zd2FwcGVkKGkyYywgcmVnKTsKPiAr
CWlmICh1bmxpa2VseSh2YWwgPCAwKSkKPiArCQlyZXR1cm4gdmFsOwoKVGhpcyBzdWdnZXN0cyB0
aGUgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlIDwgMCBvbiBlcnJvciAuLi4KCj4gKwlzd2l0Y2gg
KHJlZykgewo+ICsJY2FzZSBMVEMyOTkwX1RJTlRfTVNCOgo+ICsJCS8qIGludGVybmFsIHRlbXAs
IDAuMDYyNSBkZWdyZWVzL0xTQiwgMTMtYml0ICAqLwo+ICsJCXZhbCA9ICh2YWwgJiAweDFGRkYp
IDw8IDM7Cj4gKwkJcmVzdWx0ID0gKHZhbCAqIDEwMDApID4+IDc7Cj4gKwkJYnJlYWs7Cj4gKwlj
YXNlIExUQzI5OTBfVjFfTVNCOgo+ICsJY2FzZSBMVEMyOTkwX1YzX01TQjoKPiArCQkgLyogVngt
VnksIDE5LjQydVYvTFNCLiBEZXBlbmRzIG9uIG1vZGUuICovCj4gKwkJcmVzdWx0ID0gbHRjMjk5
MF92b2x0YWdlX3RvX2ludCh2YWwpICogMTk0MiAvICg0ICogMTAwKTsKPiArCQlicmVhazsKPiAr
CWNhc2UgTFRDMjk5MF9WQ0NfTVNCOgo+ICsJCS8qIFZjYywgMzA1LjE4zrxWL0xTQiwgMi41ViBv
ZmZzZXQgKi8KPiArCQlyZXN1bHQgPSBsdGMyOTkwX3ZvbHRhZ2VfdG9faW50KHZhbCkgKiAzMDUx
OCAvICg0ICogMTAwICogMTAwMCk7Cj4gKwkJcmVzdWx0ICs9IDI1MDA7Cj4gKwkJYnJlYWs7Cj4g
KwlkZWZhdWx0Ogo+ICsJCXJlc3VsdCA9IDA7IC8qIHdvbid0IGhhcHBlbiwga2VlcCBjb21waWxl
ciBoYXBweSAqLwoKR2l2ZW4gdGhhdCwgd2UgY2FuIHJldHVybiBzb21lIGVycm9yIGhlcmUsIGFu
ZCAuLi4KCj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJlc3VsdDsKPiArfQo+ICsK
PiArc3RhdGljIHNzaXplX3QgbHRjMjk5MF9zaG93X3ZhbHVlKHN0cnVjdCBkZXZpY2UgKmRldiwK
PiArCQkJCSAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRhLCBjaGFyICpidWYpCj4gK3sKPiAr
CXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0
cihkYSk7Cj4gKwlpbnQgdmFsdWU7Cj4gKwo+ICsJdmFsdWUgPSBsdGMyOTkwX2dldF92YWx1ZShk
ZXZfZ2V0X2RydmRhdGEoZGV2KSwgYXR0ci0+aW5kZXgpOwoKLi4uIHdlIHNob3VsZCBhY3R1YWxs
eSBjaGVjayB0aGUgZXJyb3IgcmV0dXJuIGhlcmUuCgoJaWYgKHZhbHVlIDwgMCkKCQlyZXR1cm4g
dmFsdWU7Cgo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIHZhbHVl
KTsKPiArfQo+ICsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9pbnB1dCwgU19J
UlVHTywgbHRjMjk5MF9zaG93X3ZhbHVlLCBOVUxMLAo+ICsJCQkgIExUQzI5OTBfVElOVF9NU0Ip
Owo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGN1cnIxX2lucHV0LCBTX0lSVUdPLCBsdGMy
OTkwX3Nob3dfdmFsdWUsIE5VTEwsCj4gKwkJCSAgTFRDMjk5MF9WMV9NU0IpOwo+ICtzdGF0aWMg
U0VOU09SX0RFVklDRV9BVFRSKGN1cnIyX2lucHV0LCBTX0lSVUdPLCBsdGMyOTkwX3Nob3dfdmFs
dWUsIE5VTEwsCj4gKwkJCSAgTFRDMjk5MF9WM19NU0IpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklD
RV9BVFRSKGluMF9pbnB1dCwgU19JUlVHTywgbHRjMjk5MF9zaG93X3ZhbHVlLCBOVUxMLAo+ICsJ
CQkgIExUQzI5OTBfVkNDX01TQik7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbHRj
Mjk5MF9hdHRyc1tdID0gewo+ICsJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0
ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl9jdXJyMV9pbnB1dC5kZXZfYXR0ci5hdHRyLAo+
ICsJJnNlbnNvcl9kZXZfYXR0cl9jdXJyMl9pbnB1dC5kZXZfYXR0ci5hdHRyLAo+ICsJJnNlbnNv
cl9kZXZfYXR0cl9pbjBfaW5wdXQuZGV2X2F0dHIuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gK0FU
VFJJQlVURV9HUk9VUFMobHRjMjk5MCk7Cj4gKwo+ICtzdGF0aWMgaW50IGx0YzI5OTBfaTJjX3By
b2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGkyY19k
ZXZpY2VfaWQgKmlkKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGRldmljZSAqaHdtb25f
ZGV2Owo+ICsKPiArCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoaTJjLT5hZGFwdGVyLCBJ
MkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfAo+ICsJCQkJICAgICBJMkNfRlVOQ19TTUJVU19XT1JE
X0RBVEEpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCS8qIFNldHVwIGNvbnRpbnVvdXMg
bW9kZSwgY3VycmVudCBtb25pdG9yICovCj4gKwlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9k
YXRhKGkyYywgTFRDMjk5MF9DT05UUk9MLAo+ICsJCQkJCUxUQzI5OTBfQ09OVFJPTF9NRUFTVVJF
X0FMTCB8Cj4gKwkJCQkJTFRDMjk5MF9DT05UUk9MX01PREVfQ1VSUkVOVCk7Cj4gKwlpZiAocmV0
IDwgMCkgewo+ICsJCWRldl9lcnIoJmkyYy0+ZGV2LCAiRXJyb3I6IEZhaWxlZCB0byBzZXQgY29u
dHJvbCBtb2RlLlxuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCS8qIFRyaWdnZXIgb25j
ZSB0byBzdGFydCBjb250aW51b3VzIGNvbnZlcnNpb24gKi8KPiArCXJldCA9IGkyY19zbWJ1c193
cml0ZV9ieXRlX2RhdGEoaTJjLCBMVEMyOTkwX1RSSUdHRVIsIDEpOwo+ICsJaWYgKHJldCA8IDAp
IHsKPiArCQlkZXZfZXJyKCZpMmMtPmRldiwgIkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgYWNxdWlz
aXRpb24uXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWh3bW9uX2RldiA9IGRl
dm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKCZpMmMtPmRldiwKPiArCQkJCQkJ
CSAgIGkyYy0+bmFtZSwKPiArCQkJCQkJCSAgIGkyYywKPiArCQkJCQkJCSAgIGx0YzI5OTBfZ3Jv
dXBzKTsKPiArCj4gKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uX2Rldik7Cj4gK30KPiAr
Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBsdGMyOTkwX2kyY19pZFtdID0g
ewo+ICsJeyAibHRjMjk5MCIsIDAgfSwKPiArCXt9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFC
TEUoaTJjLCBsdGMyOTkwX2kyY19pZCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIg
bHRjMjk5MF9pMmNfZHJpdmVyID0gewo+ICsJLmRyaXZlciA9IHsKPiArCQkubmFtZSA9ICJsdGMy
OTkwIiwKPiArCX0sCj4gKwkucHJvYmUgICAgPSBsdGMyOTkwX2kyY19wcm9iZSwKPiArCS5pZF90
YWJsZSA9IGx0YzI5OTBfaTJjX2lkLAo+ICt9Owo+ICsKPiArbW9kdWxlX2kyY19kcml2ZXIobHRj
Mjk5MF9pMmNfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9ERVNDUklQVElPTigiTFRDMjk5MCBTZW5z
b3IgRHJpdmVyIik7Cj4gK01PRFVMRV9BVVRIT1IoIlRvcGljIEVtYmVkZGVkIFByb2R1Y3RzIik7
Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiAtLSAKPiAxLjkuMQo+IAoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5n
IGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5v
cmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Mike Looijmans <mike.looijmans@topic.nl>
Cc: lm-sensors@lm-sensors.org, jdelvare@suse.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] hwmon: Add LTC2990 sensor driver
Date: Thu, 14 Jan 2016 11:14:15 -0800	[thread overview]
Message-ID: <20160114191415.GA30413@roeck-us.net> (raw)
In-Reply-To: <1452696301-28761-1-git-send-email-mike.looijmans@topic.nl>

On Wed, Jan 13, 2016 at 03:45:01PM +0100, Mike Looijmans wrote:
> This adds support for the Linear Technology LTC2990  I2C System Monitor.
> The LTC2990 supports a combination of voltage, current and temperature
> monitoring. This driver currently only supports reading two currents
> by measuring two differential voltages across series resistors, in
> addition to the Vcc supply voltage and internal temperature.
> 
> This is sufficient to support the Topic Miami SOM which uses this chip
> to monitor the currents flowing into the FPGA and the CPU parts.
> 
> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>

Hi Mike,

almost there. Please see inline.

Thanks,
Guenter

> ---
> v3: Remove unused includes.
>     Remove (most) unused register defines.
>     Also check on SMBUS WORD capability.
>     Use register defines as value indices.
>     Alignment fixups with "(".
> v2: Processed all review comments.
>      Put chip into continuous measurement mode.
>      Added ducumentation.
>      Use standard hwmon interfaces and macros.
> 
>  Documentation/hwmon/ltc2990 |  44 ++++++++++++
>  drivers/hwmon/Kconfig       |  14 ++++
>  drivers/hwmon/Makefile      |   1 +
>  drivers/hwmon/ltc2990.c     | 159 ++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 218 insertions(+)
>  create mode 100644 Documentation/hwmon/ltc2990
>  create mode 100644 drivers/hwmon/ltc2990.c
> 
> diff --git a/Documentation/hwmon/ltc2990 b/Documentation/hwmon/ltc2990
> new file mode 100644
> index 0000000..838b74e
> --- /dev/null
> +++ b/Documentation/hwmon/ltc2990
> @@ -0,0 +1,44 @@
> +Kernel driver ltc2990
> +=====================
> +
> +Supported chips:
> +  * Linear Technology LTC2990
> +    Prefix: 'ltc2990'
> +    Addresses scanned: -
> +    Datasheet: http://www.linear.com/product/ltc2990
> +
> +Author: Mike Looijmans <mike.looijmans@topic.nl>
> +
> +
> +Description
> +-----------
> +
> +LTC2990 is a Quad I2C Voltage, Current and Temperature Monitor.
> +The chip's inputs can measure 4 voltages, or two inputs together (1+2 and 3+4)
> +can be combined to measure a differential voltage, which is typically used to
> +measure current through a series resistor, or a temperature.
> +
> +This driver currently uses the 2x differential mode only. In order to support
> +other modes, the driver will need to be expanded.
> +
> +
> +Usage Notes
> +-----------
> +
> +This driver does not probe for PMBus devices. You will have to instantiate
> +devices explicitly.
> +
> +
> +Sysfs attributes
> +----------------
> +
> +The "curr*_input" measurements actually report the voltage drop across the
> +input pins in microvolts. This is equivalent to the current through a 1mOhm
> +sense resistor. Divide the reported value by the actual sense resistor value
> +in mOhm to get the actual value.
> +
> +in0_input     Voltage at Vcc pin in millivolt (range 2.5V to 5V)
> +temp1_input   Internal chip temperature in millidegrees Celcius
> +curr1_input   Current in mA across v1-v2 assuming a 1mOhm sense resistor.
> +curr2_input   Current in mA across v3-v4 assuming a 1mOhm sense resistor.
> +
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index 80a73bf..8a31d64 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -685,6 +685,20 @@ config SENSORS_LTC2945
>  	  This driver can also be built as a module. If so, the module will
>  	  be called ltc2945.
>  
> +config SENSORS_LTC2990
> +	tristate "Linear Technology LTC2990 (current monitoring mode only)"
> +	depends on I2C
> +	help
> +	  If you say yes here you get support for Linear Technology LTC2990
> +	  I2C System Monitor. The LTC2990 supports a combination of voltage,
> +	  current and temperature monitoring, but in addition to the Vcc supply
> +	  voltage and chip temperature, this driver currently only supports
> +	  reading two currents by measuring two differential voltages across
> +	  series resistors.
> +
> +	  This driver can also be built as a module. If so, the module will
> +	  be called ltc2990.
> +
>  config SENSORS_LTC4151
>  	tristate "Linear Technology LTC4151"
>  	depends on I2C
> diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
> index 12a3239..e4bd15b 100644
> --- a/drivers/hwmon/Makefile
> +++ b/drivers/hwmon/Makefile
> @@ -101,6 +101,7 @@ obj-$(CONFIG_SENSORS_LM95234)	+= lm95234.o
>  obj-$(CONFIG_SENSORS_LM95241)	+= lm95241.o
>  obj-$(CONFIG_SENSORS_LM95245)	+= lm95245.o
>  obj-$(CONFIG_SENSORS_LTC2945)	+= ltc2945.o
> +obj-$(CONFIG_SENSORS_LTC2990)	+= ltc2990.o
>  obj-$(CONFIG_SENSORS_LTC4151)	+= ltc4151.o
>  obj-$(CONFIG_SENSORS_LTC4215)	+= ltc4215.o
>  obj-$(CONFIG_SENSORS_LTC4222)	+= ltc4222.o
> diff --git a/drivers/hwmon/ltc2990.c b/drivers/hwmon/ltc2990.c
> new file mode 100644
> index 0000000..37ca5f4
> --- /dev/null
> +++ b/drivers/hwmon/ltc2990.c
> @@ -0,0 +1,159 @@
> +/*
> + * Driver for Linear Technology LTC2990 power monitor
> + *
> + * Copyright (C) 2014 Topic Embedded Products
> + * Author: Mike Looijmans <mike.looijmans@topic.nl>
> + *
> + * License: GPLv2
> + *
> + * This driver assumes the chip is wired as a dual current monitor, and
> + * reports the voltage drop across two series resistors. It also reports
> + * the chip's internal temperature and Vcc power supply voltage.
> + */
> +
> +#include <linux/err.h>
> +#include <linux/hwmon.h>
> +#include <linux/hwmon-sysfs.h>
> +#include <linux/i2c.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +
> +#define LTC2990_STATUS	0x00
> +#define LTC2990_CONTROL	0x01
> +#define LTC2990_TRIGGER	0x02
> +#define LTC2990_TINT_MSB	0x04
> +#define LTC2990_V1_MSB	0x06
> +#define LTC2990_V2_MSB	0x08
> +#define LTC2990_V3_MSB	0x0A
> +#define LTC2990_V4_MSB	0x0C
> +#define LTC2990_VCC_MSB	0x0E
> +
> +#define LTC2990_CONTROL_KELVIN		BIT(7)
> +#define LTC2990_CONTROL_SINGLE		BIT(6)
> +#define LTC2990_CONTROL_MEASURE_ALL	(0x3 << 3)
> +#define LTC2990_CONTROL_MODE_CURRENT	0x06
> +#define LTC2990_CONTROL_MODE_VOLTAGE	0x07
> +
> +/* convert raw register value to sign-extended integer in 16-bit range */
> +static int ltc2990_voltage_to_int(int raw)
> +{
> +	if (raw & BIT(14)) {
> +		return -(0x4000 - (raw & 0x3FFF)) << 2;
> +	} else {
> +		return (raw & 0x3FFF) << 2;
> +	}

Unnecessary { }. Please see checkpatch warning.

> +}
> +
> +/* Return the converted value from the given register in uV or mC */
> +static int ltc2990_get_value(struct i2c_client *i2c, u8 reg)
> +{
> +	int val;
> +	int result;
> +
> +	val = i2c_smbus_read_word_swapped(i2c, reg);
> +	if (unlikely(val < 0))
> +		return val;

This suggests the function returns a value < 0 on error ...

> +	switch (reg) {
> +	case LTC2990_TINT_MSB:
> +		/* internal temp, 0.0625 degrees/LSB, 13-bit  */
> +		val = (val & 0x1FFF) << 3;
> +		result = (val * 1000) >> 7;
> +		break;
> +	case LTC2990_V1_MSB:
> +	case LTC2990_V3_MSB:
> +		 /* Vx-Vy, 19.42uV/LSB. Depends on mode. */
> +		result = ltc2990_voltage_to_int(val) * 1942 / (4 * 100);
> +		break;
> +	case LTC2990_VCC_MSB:
> +		/* Vcc, 305.18μV/LSB, 2.5V offset */
> +		result = ltc2990_voltage_to_int(val) * 30518 / (4 * 100 * 1000);
> +		result += 2500;
> +		break;
> +	default:
> +		result = 0; /* won't happen, keep compiler happy */

Given that, we can return some error here, and ...

> +		break;
> +	}
> +
> +	return result;
> +}
> +
> +static ssize_t ltc2990_show_value(struct device *dev,
> +				  struct device_attribute *da, char *buf)
> +{
> +	struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
> +	int value;
> +
> +	value = ltc2990_get_value(dev_get_drvdata(dev), attr->index);

... we should actually check the error return here.

	if (value < 0)
		return value;

> +	return snprintf(buf, PAGE_SIZE, "%d\n", value);
> +}
> +
> +static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ltc2990_show_value, NULL,
> +			  LTC2990_TINT_MSB);
> +static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc2990_show_value, NULL,
> +			  LTC2990_V1_MSB);
> +static SENSOR_DEVICE_ATTR(curr2_input, S_IRUGO, ltc2990_show_value, NULL,
> +			  LTC2990_V3_MSB);
> +static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, ltc2990_show_value, NULL,
> +			  LTC2990_VCC_MSB);
> +
> +static struct attribute *ltc2990_attrs[] = {
> +	&sensor_dev_attr_temp1_input.dev_attr.attr,
> +	&sensor_dev_attr_curr1_input.dev_attr.attr,
> +	&sensor_dev_attr_curr2_input.dev_attr.attr,
> +	&sensor_dev_attr_in0_input.dev_attr.attr,
> +	NULL,
> +};
> +ATTRIBUTE_GROUPS(ltc2990);
> +
> +static int ltc2990_i2c_probe(struct i2c_client *i2c,
> +			     const struct i2c_device_id *id)
> +{
> +	int ret;
> +	struct device *hwmon_dev;
> +
> +	if (!i2c_check_functionality(i2c->adapter, I2C_FUNC_SMBUS_BYTE_DATA |
> +				     I2C_FUNC_SMBUS_WORD_DATA))
> +		return -ENODEV;
> +
> +	/* Setup continuous mode, current monitor */
> +	ret = i2c_smbus_write_byte_data(i2c, LTC2990_CONTROL,
> +					LTC2990_CONTROL_MEASURE_ALL |
> +					LTC2990_CONTROL_MODE_CURRENT);
> +	if (ret < 0) {
> +		dev_err(&i2c->dev, "Error: Failed to set control mode.\n");
> +		return ret;
> +	}
> +	/* Trigger once to start continuous conversion */
> +	ret = i2c_smbus_write_byte_data(i2c, LTC2990_TRIGGER, 1);
> +	if (ret < 0) {
> +		dev_err(&i2c->dev, "Error: Failed to start acquisition.\n");
> +		return ret;
> +	}
> +
> +	hwmon_dev = devm_hwmon_device_register_with_groups(&i2c->dev,
> +							   i2c->name,
> +							   i2c,
> +							   ltc2990_groups);
> +
> +	return PTR_ERR_OR_ZERO(hwmon_dev);
> +}
> +
> +static const struct i2c_device_id ltc2990_i2c_id[] = {
> +	{ "ltc2990", 0 },
> +	{}
> +};
> +MODULE_DEVICE_TABLE(i2c, ltc2990_i2c_id);
> +
> +static struct i2c_driver ltc2990_i2c_driver = {
> +	.driver = {
> +		.name = "ltc2990",
> +	},
> +	.probe    = ltc2990_i2c_probe,
> +	.id_table = ltc2990_i2c_id,
> +};
> +
> +module_i2c_driver(ltc2990_i2c_driver);
> +
> +MODULE_DESCRIPTION("LTC2990 Sensor Driver");
> +MODULE_AUTHOR("Topic Embedded Products");
> +MODULE_LICENSE("GPL v2");
> -- 
> 1.9.1
> 

  reply	other threads:[~2016-01-14 19:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-06  8:07 [lm-sensors] [PATCH] hwmon: Add LTC2990 sensor driver Mike Looijmans
2016-01-06  8:07 ` Mike Looijmans
2016-01-06 15:22 ` Guenter Roeck
2016-01-07 18:59   ` [lm-sensors] " Mike Looijmans
2016-01-07 18:59     ` Mike Looijmans
2016-01-08 15:09     ` [lm-sensors] " Guenter Roeck
2016-01-08 15:09       ` Guenter Roeck
2016-01-13 11:05       ` [lm-sensors] [PATCH v2] " Mike Looijmans
2016-01-13 11:05         ` Mike Looijmans
2016-01-13 13:24         ` [lm-sensors] " Guenter Roeck
2016-01-13 13:24           ` Guenter Roeck
2016-01-13 13:51           ` [lm-sensors] " Mike Looijmans
2016-01-13 13:51             ` Mike Looijmans
2016-01-13 13:57             ` [lm-sensors] " Guenter Roeck
2016-01-13 13:57               ` Guenter Roeck
2016-01-13 14:03               ` [lm-sensors] " Mike Looijmans
2016-01-13 14:03                 ` Mike Looijmans
2016-01-13 14:45         ` [lm-sensors] [PATCH v3] " Mike Looijmans
2016-01-13 14:45           ` Mike Looijmans
2016-01-14 19:14           ` Guenter Roeck [this message]
2016-01-14 19:14             ` Guenter Roeck
2016-01-15  9:54             ` [lm-sensors] " Mike Looijmans
2016-01-15  9:54               ` Mike Looijmans
2016-01-15  9:54           ` [lm-sensors] [PATCH v4] " Mike Looijmans
2016-01-15  9:54             ` Mike Looijmans
2016-01-15 15:40             ` [lm-sensors] " Guenter Roeck
2016-01-15 15:40               ` Guenter Roeck
2016-01-13 11:22       ` [lm-sensors] [PATCH] " Mike Looijmans
2016-01-13 11:22         ` Mike Looijmans

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20160114191415.GA30413@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=jdelvare@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=mike.looijmans@topic.nl \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.