All of lore.kernel.org
 help / color / mirror / Atom feed
From: Constantine Shulyupin <const@MakeLinux.com>
To: Jean Delvare <jdelvare@suse.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jonathan Corbet <corbet@lwn.net>,
	"open list:HARDWARE MONITORING" <lm-sensors@lm-sensors.org>,
	"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Cc: Constantine Shulyupin <const@MakeLinux.com>
Subject: [lm-sensors] [PATCH v4] hwmon: (nct7802) Add autopoint attributes
Date: Sat, 25 Jul 2015 21:45:50 +0000	[thread overview]
Message-ID: <1437860750-10339-1-git-send-email-const@MakeLinux.com> (raw)

SW50cm9kdWNlZCBSRUdfUFdNLCBwd21bMS4uM11fYXV0b19wb2ludFsxLi41XV90ZW1wLApwd21b
MS4uM11fYXV0b19wb2ludFsxLi41XV9wd20sIG5jdDc4MDJfYXV0b19wb2ludF9hdHRycywKbmN0
NzgwMl9hdXRvX3BvaW50X2dyb3VwLCB1cGRhdGVkIG5jdDc4MDJfcmVnbWFwX2lzX3ZvbGF0aWxl
CgpTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluZSBTaHVseXVwaW4gPGNvbnN0QE1ha2VMaW51eC5j
b20+Ci0tLQoKQ2hhbmdlZCBpbiB2NDoKLSBmaXhlZCBleHByZXNzaW9uIGluIG5jdDc4MDJfcmVn
bWFwX2lzX3ZvbGF0aWxlCi0gYWRkZWQgcHdtWF9hdXRvX3RlbXAgdG8gZHJpdmVyJ3MgZG9jdW1l
bnRhdGlvbgpDaGFuZ2VkIGluIHYzOgotIHJlbW92ZWQgbmN0NzgwMl9hdXRvX3BvaW50X2lzX3Zp
c2libGUKLSByZW1vdmVkIHVzYWdlIG9mIHN5c2ZzX3VwZGF0ZV9ncm91cAotIGludHJvZHVjZWQg
UkVHX1BXTQotIHJlbW92ZWQgU19JV1VTUiBmcm9tIFJPIGF0dHJpYnV0ZXMKLSBhZGRlZCBQV00g
cmVnaXN0ZXJzIHRvIG5jdDc4MDJfcmVnbWFwX2lzX3ZvbGF0aWxlCkNoYW5nZWQgaW4gdjI6Ci0g
cmVtb3ZlZCBQV01fUkVHLCBURU1QX1JFRwotIHJlbW92ZWQgYXV0b19wb2ludFsxLi40XV90ZW1w
LCBhdXRvX3BvaW50WzEuLjRdX3B3bQogIGFuZCBhdXRvX3BvaW50X2NyaXRfdGVtcAotIGludHJv
ZHVjZWQgcHdtWzEuLjNdX2F1dG9fcG9pbnRbMS4uNV1fdGVtcAogIGFuZCBwd21bMS4uM11fYXV0
b19wb2ludFsxLi41XV9wd20uCi0gaW50cm9kdWNlZCBuY3Q3ODAyX2F1dG9fcG9pbnRfaXNfdmlz
aWJsZQotIHVzZWQgc3lzZnNfdXBkYXRlX2dyb3VwIGluIHN0b3JlX3B3bV9lbmFibGUKCkRlZmF1
bHQgdmFsdWVzIG9uIG15IHBsYXRmb3JtOgoKZmFuMV9hbGFybTowICAgICAgICAgICAgICAgICAg
ICBwd20yX2F1dG9fcG9pbnQxX3RlbXA6MjUwMDAKZmFuMV9iZWVwOjAgICAgICAgICAgICAgICAg
ICAgICBwd20yX2F1dG9fcG9pbnQyX3B3bToxNzAKZmFuMV9pbnB1dDoxNTAwMDAgICAgICAgICAg
ICAgICBwd20yX2F1dG9fcG9pbnQyX3RlbXA6MzUwMDAKZmFuMV9taW46MCAgICAgICAgICAgICAg
ICAgICAgICBwd20yX2F1dG9fcG9pbnQzX3B3bToyMDAKZmFuMl9hbGFybTowICAgICAgICAgICAg
ICAgICAgICBwd20yX2F1dG9fcG9pbnQzX3RlbXA6NDUwMDAKZmFuMl9iZWVwOjAgICAgICAgICAg
ICAgICAgICAgICBwd20yX2F1dG9fcG9pbnQ0X3B3bToyMzAKZmFuMl9pbnB1dDowICAgICAgICAg
ICAgICAgICAgICBwd20yX2F1dG9fcG9pbnQ0X3RlbXA6NTUwMDAKZmFuMl9taW46MCAgICAgICAg
ICAgICAgICAgICAgICBwd20yX2F1dG9fcG9pbnQ1X3B3bToyNTUKZmFuM19hbGFybTowICAgICAg
ICAgICAgICAgICAgICBwd20yX2F1dG9fcG9pbnQ1X3RlbXA6NjAwMDAKZmFuM19iZWVwOjAgICAg
ICAgICAgICAgICAgICAgICBwd20yX2VuYWJsZToxCmZhbjNfaW5wdXQ6MCAgICAgICAgICAgICAg
ICAgICAgcHdtMl9tb2RlOjEKZmFuM19taW46MCAgICAgICAgICAgICAgICAgICAgICBwd20zOjEy
NwppbjBfYWxhcm06MCAgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDFfcHdtOjE0
MAppbjBfYmVlcDowICAgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDFfdGVtcDoy
NTAwMAppbjBfaW5wdXQ6MzMxMiAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDJfcHdt
OjE3MAppbjBfbWF4OjQwOTIgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDJfdGVt
cDozNTAwMAppbjBfbWluOjAgICAgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDNf
cHdtOjIwMAppbjFfaW5wdXQ6OTAyICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2ludDNf
dGVtcDo0NTAwMAppbjNfYWxhcm06MCAgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2lu
dDRfcHdtOjIzMAppbjNfYmVlcDowICAgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19wb2lu
dDRfdGVtcDo1NTAwMAppbjNfaW5wdXQ6MTgwOCAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19w
b2ludDVfcHdtOjI1NQppbjNfbWF4OjIwNDYgICAgICAgICAgICAgICAgICAgIHB3bTNfYXV0b19w
b2ludDVfdGVtcDo2MDAwMAppbjNfbWluOjAgICAgICAgICAgICAgICAgICAgICAgIHB3bTNfZW5h
YmxlOjEKaW40X2FsYXJtOjAgICAgICAgICAgICAgICAgICAgICBwd20zX21vZGU6MQppbjRfYmVl
cDowICAgICAgICAgICAgICAgICAgICAgIHRlbXAxX2JlZXA6MAppbjRfaW5wdXQ6MTUwOCAgICAg
ICAgICAgICAgICAgIHRlbXAxX2NyaXQ6MTAwMDAwCmluNF9tYXg6MjA0NiAgICAgICAgICAgICAg
ICAgICAgdGVtcDFfY3JpdF9hbGFybTowCmluNF9taW46MCAgICAgICAgICAgICAgICAgICAgICAg
dGVtcDFfZmF1bHQ6MApuYW1lOm5jdDc4MDIgICAgICAgICAgICAgICAgICAgIHRlbXAxX2lucHV0
OjM1NTAwCnB3bTE6MTI3ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcDFfbWF4Ojg1MDAwCnB3
bTFfYXV0b19wb2ludDFfcHdtOjE0MCAgICAgICAgdGVtcDFfbWF4X2FsYXJtOjAKcHdtMV9hdXRv
X3BvaW50MV90ZW1wOjI1MDAwICAgICB0ZW1wMV9taW46MApwd20xX2F1dG9fcG9pbnQyX3B3bTox
NzAgICAgICAgIHRlbXAxX21pbl9hbGFybTowCnB3bTFfYXV0b19wb2ludDJfdGVtcDozNTAwMCAg
ICAgdGVtcDFfdHlwZTo0CnB3bTFfYXV0b19wb2ludDNfcHdtOjIwMCAgICAgICAgdGVtcDRfYmVl
cDowCnB3bTFfYXV0b19wb2ludDNfdGVtcDo0NTAwMCAgICAgdGVtcDRfY3JpdDoxMDAwMDAKcHdt
MV9hdXRvX3BvaW50NF9wd206MjMwICAgICAgICB0ZW1wNF9jcml0X2FsYXJtOjAKcHdtMV9hdXRv
X3BvaW50NF90ZW1wOjU1MDAwICAgICB0ZW1wNF9pbnB1dDozOTAwMApwd20xX2F1dG9fcG9pbnQ1
X3B3bToyNTUgICAgICAgIHRlbXA0X21heDo4NTAwMApwd20xX2F1dG9fcG9pbnQ1X3RlbXA6NjAw
MDAgICAgIHRlbXA0X21heF9hbGFybTowCnB3bTFfZW5hYmxlOjEgICAgICAgICAgICAgICAgICAg
dGVtcDRfbWluOjAKcHdtMV9tb2RlOjEgICAgICAgICAgICAgICAgICAgICB0ZW1wNF9taW5fYWxh
cm06MApwd20yOjEyNyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXA2X2JlZXA6MApwd20yX2F1
dG9fcG9pbnQxX3B3bToxNDAgICAgICAgIHRlbXA2X2lucHV0OjAKCi0tLQogRG9jdW1lbnRhdGlv
bi9od21vbi9uY3Q3ODAyIHwgICA1ICstCiBkcml2ZXJzL2h3bW9uL25jdDc4MDIuYyAgICAgfCAx
MzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDIgZmlsZXMg
Y2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
RG9jdW1lbnRhdGlvbi9od21vbi9uY3Q3ODAyIGIvRG9jdW1lbnRhdGlvbi9od21vbi9uY3Q3ODAy
CmluZGV4IDJlMDBmNWUuLmM1YzI1YTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24v
bmN0NzgwMgorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDc4MDIKQEAgLTUsNyArNSw3IEBA
IFN1cHBvcnRlZCBjaGlwczoKICAgKiBOdXZvdG9uIE5DVDc4MDJZCiAgICAgUHJlZml4OiAnbmN0
NzgwMicKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MjguLjB4MmYKLSAgICBEYXRhc2hl
ZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gd2ViIHNpdGUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6
Ly93d3cubnV2b3Rvbi5jb20vaHEvcHJvZHVjdHMvY2xvdWQtY29tcHV0aW5nL2hhcmR3YXJlLW1v
bml0b3JzL2Rlc2t0b3Atc2VydmVyLXNlcmllcy9uY3Q3ODAyeS8KIAogQXV0aG9yczoKICAgICAg
ICAgR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgpAQCAtMTcsOCArMTcsNyBAQCBU
aGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOdXZvdG9uIE5DVDc4MDJZIGhh
cmR3YXJlIG1vbml0b3JpbmcKIGNoaXAuIE5DVDc4MDJZIHN1cHBvcnRzIDYgdGVtcGVyYXR1cmUg
c2Vuc29ycywgNSB2b2x0YWdlIHNlbnNvcnMsIGFuZCAzIGZhbgogc3BlZWQgc2Vuc29ycy4KIAot
VGhlIGNoaXAgYWxzbyBzdXBwb3J0cyBpbnRlbGxpZ2VudCBmYW4gc3BlZWQgY29udHJvbC4gVGhp
cyBmdW5jdGlvbmFsaXR5IGlzCi1ub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVy
LgorU21hcnQgRmFu4oSiIHNwZWVkIGNvbnRyb2wgaXMgYXZpbGFiZWwgdmlhIHB3bVhfYXV0b190
ZW1wIGF0dHJpYnV0ZXMuCiAKIFRlc3RlZCBCb2FyZHMgYW5kIEJJT1MgVmVyc2lvbnMKIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbmN0
NzgwMi5jIGIvZHJpdmVycy9od21vbi9uY3Q3ODAyLmMKaW5kZXggZDAxODU3MS4uYzE4OThiYSAx
MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9uY3Q3ODAyLmMKKysrIGIvZHJpdmVycy9od21vbi9u
Y3Q3ODAyLmMKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGNvbnN0IHU4IFJFR19WT0xUQUdFX0xJ
TUlUX01TQl9TSElGVFsyXVs1XSA9IHsKICNkZWZpbmUgUkVHX1BFQ0lfRU5BQkxFCQkweDIzCiAj
ZGVmaW5lIFJFR19GQU5fRU5BQkxFCQkweDI0CiAjZGVmaW5lIFJFR19WTU9OX0VOQUJMRQkJMHgy
NQorI2RlZmluZSBSRUdfUFdNKHgpCQkoMHg2MCArICh4KSkKICNkZWZpbmUgUkVHX1NNQVJURkFO
X0VOKHgpICAgICAgKDB4NjQgKyAoeCkgLyAyKQogI2RlZmluZSBTTUFSVEZBTl9FTl9TSElGVCh4
KSAgICAoKHgpICUgMiAqIDQpCiAjZGVmaW5lIFJFR19WRU5ET1JfSUQJCTB4ZmQKQEAgLTEzMCw2
ICsxMzEsOSBAQCBzdGF0aWMgc3NpemVfdCBzaG93X3B3bShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0
cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLAogCXVuc2lnbmVkIGludCB2YWw7CiAJaW50
IHJldDsKIAorCWlmICghYXR0ci0+aW5kZXgpCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjI1NVxu
Iik7CisKIAlyZXQgPSByZWdtYXBfcmVhZChkYXRhLT5yZWdtYXAsIGF0dHItPmluZGV4LCAmdmFs
KTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKQEAgLTgyNiw5ICs4MzAsMTIgQEAgc3Rh
dGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20yX21vZGUsIFNfSVJVR08sIHNob3dfcHdtX21vZGUs
IE5VTEwsIDEpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20zX21vZGUsIFNfSVJVR08s
IHNob3dfcHdtX21vZGUsIE5VTEwsIDIpOwogCiAvKiA3LjIuOTEuLi4gRmFuIENvbnRyb2wgT3V0
cHV0IFZhbHVlICovCi1zdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bTEsIFNfSVJVR08gfCBT
X0lXVVNSLCBzaG93X3B3bSwgc3RvcmVfcHdtLCAweDYwKTsKLXN0YXRpYyBTRU5TT1JfREVWSUNF
X0FUVFIocHdtMiwgU19JUlVHTyB8IFNfSVdVU1IsIHNob3dfcHdtLCBzdG9yZV9wd20sIDB4NjEp
Owotc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20zLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hv
d19wd20sIHN0b3JlX3B3bSwgMHg2Mik7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bTEs
IFNfSVJVR08gfCBTX0lXVVNSLCBzaG93X3B3bSwgc3RvcmVfcHdtLAorCQkJICBSRUdfUFdNKDAp
KTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtMiwgU19JUlVHTyB8IFNfSVdVU1IsIHNo
b3dfcHdtLCBzdG9yZV9wd20sCisJCQkgIFJFR19QV00oMSkpOworc3RhdGljIFNFTlNPUl9ERVZJ
Q0VfQVRUUihwd20zLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hvd19wd20sIHN0b3JlX3B3bSwKKwkJ
CSAgUkVHX1BXTSgyKSk7CiAKIC8qIDcuMi45NS4uLiBUZW1wZXJhdHVyZSB0byBGYW4gbWFwcGlu
ZyBSZWxhdGlvbnNoaXBzIFJlZ2lzdGVyICovCiBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3
bTFfZW5hYmxlLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hvd19wd21fZW5hYmxlLApAQCAtODkzLDEx
ICs5MDAsMTI1IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG5jdDc4MDJfcHdtX2dy
b3VwID0gewogCS5hdHRycyA9IG5jdDc4MDJfcHdtX2F0dHJzLAogfTsKIAorLyogNy4yLjExNS4u
LiAweDgwLTB4ODMsIDB4ODQgVGVtcGVyYXR1cmUgKFgtYXhpcykgdHJhbnNpdGlvbiAqLworc3Rh
dGljIFNFTlNPUl9ERVZJQ0VfQVRUUl8yKHB3bTFfYXV0b19wb2ludDFfdGVtcCwgU19JUlVHTyB8
IFNfSVdVU1IsCisJCQkgICAgc2hvd190ZW1wLCBzdG9yZV90ZW1wLCAweDgwLCAwKTsKK3N0YXRp
YyBTRU5TT1JfREVWSUNFX0FUVFJfMihwd20xX2F1dG9fcG9pbnQyX3RlbXAsIFNfSVJVR08gfCBT
X0lXVVNSLAorCQkJICAgIHNob3dfdGVtcCwgc3RvcmVfdGVtcCwgMHg4MSwgMCk7CitzdGF0aWMg
U0VOU09SX0RFVklDRV9BVFRSXzIocHdtMV9hdXRvX3BvaW50M190ZW1wLCBTX0lSVUdPIHwgU19J
V1VTUiwKKwkJCSAgICBzaG93X3RlbXAsIHN0b3JlX3RlbXAsIDB4ODIsIDApOworc3RhdGljIFNF
TlNPUl9ERVZJQ0VfQVRUUl8yKHB3bTFfYXV0b19wb2ludDRfdGVtcCwgU19JUlVHTyB8IFNfSVdV
U1IsCisJCQkgICAgc2hvd190ZW1wLCBzdG9yZV90ZW1wLCAweDgzLCAwKTsKK3N0YXRpYyBTRU5T
T1JfREVWSUNFX0FUVFJfMihwd20xX2F1dG9fcG9pbnQ1X3RlbXAsIFNfSVJVR08gfCBTX0lXVVNS
LAorCQkJICAgIHNob3dfdGVtcCwgc3RvcmVfdGVtcCwgMHg4NCwgMCk7CisKKy8qIDcuMi4xMjAu
Li4gMHg4NS0weDg4IFBXTSAoWS1heGlzKSB0cmFuc2l0aW9uICovCitzdGF0aWMgU0VOU09SX0RF
VklDRV9BVFRSKHB3bTFfYXV0b19wb2ludDFfcHdtLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAg
c2hvd19wd20sIHN0b3JlX3B3bSwgMHg4NSk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3
bTFfYXV0b19wb2ludDJfcHdtLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAgc2hvd19wd20sIHN0
b3JlX3B3bSwgMHg4Nik7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bTFfYXV0b19wb2lu
dDNfcHdtLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAgc2hvd19wd20sIHN0b3JlX3B3bSwgMHg4
Nyk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bTFfYXV0b19wb2ludDRfcHdtLCBTX0lS
VUdPIHwgU19JV1VTUiwKKwkJCSAgc2hvd19wd20sIHN0b3JlX3B3bSwgMHg4OCk7CitzdGF0aWMg
U0VOU09SX0RFVklDRV9BVFRSKHB3bTFfYXV0b19wb2ludDVfcHdtLCBTX0lSVUdPLCBzaG93X3B3
bSwgTlVMTCwgMCk7CisKKy8qIDcuMi4xMjQgVGFibGUgMiBYLWF4aXMgVHJhbnNpdGlvbiBQb2lu
dCAxIFJlZ2lzdGVyICovCitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSXzIocHdtMl9hdXRvX3Bv
aW50MV90ZW1wLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAgICBzaG93X3RlbXAsIHN0b3JlX3Rl
bXAsIDB4OTAsIDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl8yKHB3bTJfYXV0b19wb2lu
dDJfdGVtcCwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkgICAgc2hvd190ZW1wLCBzdG9yZV90ZW1w
LCAweDkxLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfMihwd20yX2F1dG9fcG9pbnQz
X3RlbXAsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJICAgIHNob3dfdGVtcCwgc3RvcmVfdGVtcCwg
MHg5MiwgMCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSXzIocHdtMl9hdXRvX3BvaW50NF90
ZW1wLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAgICBzaG93X3RlbXAsIHN0b3JlX3RlbXAsIDB4
OTMsIDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl8yKHB3bTJfYXV0b19wb2ludDVfdGVt
cCwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkgICAgc2hvd190ZW1wLCBzdG9yZV90ZW1wLCAweDk0
LCAwKTsKKworLyogNy4yLjEyOSBUYWJsZSAyIFktYXhpcyBUcmFuc2l0aW9uIFBvaW50IDEgUmVn
aXN0ZXIgKi8KK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtMl9hdXRvX3BvaW50MV9wd20s
IFNfSVJVR08gfCBTX0lXVVNSLAorCQkJICBzaG93X3B3bSwgc3RvcmVfcHdtLCAweDk1KTsKK3N0
YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtMl9hdXRvX3BvaW50Ml9wd20sIFNfSVJVR08gfCBT
X0lXVVNSLAorCQkJICBzaG93X3B3bSwgc3RvcmVfcHdtLCAweDk2KTsKK3N0YXRpYyBTRU5TT1Jf
REVWSUNFX0FUVFIocHdtMl9hdXRvX3BvaW50M19wd20sIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJ
ICBzaG93X3B3bSwgc3RvcmVfcHdtLCAweDk3KTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIo
cHdtMl9hdXRvX3BvaW50NF9wd20sIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJICBzaG93X3B3bSwg
c3RvcmVfcHdtLCAweDk4KTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtMl9hdXRvX3Bv
aW50NV9wd20sIFNfSVJVR08sIHNob3dfcHdtLCBOVUxMLCAwKTsKKworLyogNy4yLjEzMyBUYWJs
ZSAzIFgtYXhpcyBUcmFuc2l0aW9uIFBvaW50IDEgUmVnaXN0ZXIgKi8KK3N0YXRpYyBTRU5TT1Jf
REVWSUNFX0FUVFJfMihwd20zX2F1dG9fcG9pbnQxX3RlbXAsIFNfSVJVR08gfCBTX0lXVVNSLAor
CQkJICAgIHNob3dfdGVtcCwgc3RvcmVfdGVtcCwgMHhBMCwgMCk7CitzdGF0aWMgU0VOU09SX0RF
VklDRV9BVFRSXzIocHdtM19hdXRvX3BvaW50Ml90ZW1wLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJ
CSAgICBzaG93X3RlbXAsIHN0b3JlX3RlbXAsIDB4QTEsIDApOworc3RhdGljIFNFTlNPUl9ERVZJ
Q0VfQVRUUl8yKHB3bTNfYXV0b19wb2ludDNfdGVtcCwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkg
ICAgc2hvd190ZW1wLCBzdG9yZV90ZW1wLCAweEEyLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNF
X0FUVFJfMihwd20zX2F1dG9fcG9pbnQ0X3RlbXAsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJICAg
IHNob3dfdGVtcCwgc3RvcmVfdGVtcCwgMHhBMywgMCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9B
VFRSXzIocHdtM19hdXRvX3BvaW50NV90ZW1wLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCSAgICBz
aG93X3RlbXAsIHN0b3JlX3RlbXAsIDB4QTQsIDApOworCisvKiA3LjIuMTM4IFRhYmxlIDMgWS1h
eGlzIFRyYW5zaXRpb24gUG9pbnQgMSBSZWdpc3RlciAqLworc3RhdGljIFNFTlNPUl9ERVZJQ0Vf
QVRUUihwd20zX2F1dG9fcG9pbnQxX3B3bSwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkgIHNob3df
cHdtLCBzdG9yZV9wd20sIDB4QTUpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20zX2F1
dG9fcG9pbnQyX3B3bSwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkgIHNob3dfcHdtLCBzdG9yZV9w
d20sIDB4QTYpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20zX2F1dG9fcG9pbnQzX3B3
bSwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQkgIHNob3dfcHdtLCBzdG9yZV9wd20sIDB4QTcpOwor
c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20zX2F1dG9fcG9pbnQ0X3B3bSwgU19JUlVHTyB8
IFNfSVdVU1IsCisJCQkgIHNob3dfcHdtLCBzdG9yZV9wd20sIDB4QTgpOworc3RhdGljIFNFTlNP
Ul9ERVZJQ0VfQVRUUihwd20zX2F1dG9fcG9pbnQ1X3B3bSwgU19JUlVHTywgc2hvd19wd20sIE5V
TEwsIDApOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbmN0NzgwMl9hdXRvX3BvaW50X2F0
dHJzW10gPSB7CisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2F1dG9fcG9pbnQxX3RlbXAuZGV2X2F0
dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3B3bTFfYXV0b19wb2ludDJfdGVtcC5kZXZfYXR0
ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9hdXRvX3BvaW50M190ZW1wLmRldl9hdHRy
LmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2F1dG9fcG9pbnQ0X3RlbXAuZGV2X2F0dHIu
YXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3B3bTFfYXV0b19wb2ludDVfdGVtcC5kZXZfYXR0ci5h
dHRyLAorCisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2F1dG9fcG9pbnQxX3B3bS5kZXZfYXR0ci5h
dHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9hdXRvX3BvaW50Ml9wd20uZGV2X2F0dHIuYXR0
ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3B3bTFfYXV0b19wb2ludDNfcHdtLmRldl9hdHRyLmF0dHIs
CisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2F1dG9fcG9pbnQ0X3B3bS5kZXZfYXR0ci5hdHRyLAor
CSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9hdXRvX3BvaW50NV9wd20uZGV2X2F0dHIuYXR0ciwKKwor
CSZzZW5zb3JfZGV2X2F0dHJfcHdtMl9hdXRvX3BvaW50MV90ZW1wLmRldl9hdHRyLmF0dHIsCisJ
JnNlbnNvcl9kZXZfYXR0cl9wd20yX2F1dG9fcG9pbnQyX3RlbXAuZGV2X2F0dHIuYXR0ciwKKwkm
c2Vuc29yX2Rldl9hdHRyX3B3bTJfYXV0b19wb2ludDNfdGVtcC5kZXZfYXR0ci5hdHRyLAorCSZz
ZW5zb3JfZGV2X2F0dHJfcHdtMl9hdXRvX3BvaW50NF90ZW1wLmRldl9hdHRyLmF0dHIsCisJJnNl
bnNvcl9kZXZfYXR0cl9wd20yX2F1dG9fcG9pbnQ1X3RlbXAuZGV2X2F0dHIuYXR0ciwKKworCSZz
ZW5zb3JfZGV2X2F0dHJfcHdtMl9hdXRvX3BvaW50MV9wd20uZGV2X2F0dHIuYXR0ciwKKwkmc2Vu
c29yX2Rldl9hdHRyX3B3bTJfYXV0b19wb2ludDJfcHdtLmRldl9hdHRyLmF0dHIsCisJJnNlbnNv
cl9kZXZfYXR0cl9wd20yX2F1dG9fcG9pbnQzX3B3bS5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3Jf
ZGV2X2F0dHJfcHdtMl9hdXRvX3BvaW50NF9wd20uZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rl
dl9hdHRyX3B3bTJfYXV0b19wb2ludDVfcHdtLmRldl9hdHRyLmF0dHIsCisKKwkmc2Vuc29yX2Rl
dl9hdHRyX3B3bTNfYXV0b19wb2ludDFfdGVtcC5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2
X2F0dHJfcHdtM19hdXRvX3BvaW50Ml90ZW1wLmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZf
YXR0cl9wd20zX2F1dG9fcG9pbnQzX3RlbXAuZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9h
dHRyX3B3bTNfYXV0b19wb2ludDRfdGVtcC5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0
dHJfcHdtM19hdXRvX3BvaW50NV90ZW1wLmRldl9hdHRyLmF0dHIsCisKKwkmc2Vuc29yX2Rldl9h
dHRyX3B3bTNfYXV0b19wb2ludDFfcHdtLmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0
cl9wd20zX2F1dG9fcG9pbnQyX3B3bS5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJf
cHdtM19hdXRvX3BvaW50M19wd20uZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3B3
bTNfYXV0b19wb2ludDRfcHdtLmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wd20z
X2F1dG9fcG9pbnQ1X3B3bS5kZXZfYXR0ci5hdHRyLAorCisJTlVMTAorfTsKKworc3RhdGljIHN0
cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbmN0NzgwMl9hdXRvX3BvaW50X2dyb3VwID0geworCS5hdHRy
cyA9IG5jdDc4MDJfYXV0b19wb2ludF9hdHRycywKK307CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
YXR0cmlidXRlX2dyb3VwICpuY3Q3ODAyX2dyb3Vwc1tdID0gewogCSZuY3Q3ODAyX3RlbXBfZ3Jv
dXAsCiAJJm5jdDc4MDJfaW5fZ3JvdXAsCiAJJm5jdDc4MDJfZmFuX2dyb3VwLAogCSZuY3Q3ODAy
X3B3bV9ncm91cCwKKwkmbmN0NzgwMl9hdXRvX3BvaW50X2dyb3VwLAogCU5VTEwKIH07CiAKQEAg
LTk0NSw3ICsxMDY2LDggQEAgc3RhdGljIGludCBuY3Q3ODAyX2RldGVjdChzdHJ1Y3QgaTJjX2Ns
aWVudCAqY2xpZW50LAogCiBzdGF0aWMgYm9vbCBuY3Q3ODAyX3JlZ21hcF9pc192b2xhdGlsZShz
dHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpCiB7Ci0JcmV0dXJuIHJlZyAhPSBS
RUdfQkFOSyAmJiByZWcgPD0gMHgyMDsKKwlyZXR1cm4gKHJlZyAhPSBSRUdfQkFOSyAmJiByZWcg
PD0gMHgyMCkgfHwKKwkJKHJlZyA+PSBSRUdfUFdNKDApICYmIHJlZyA8PSBSRUdfUFdNKDIpKTsK
IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIG5jdDc4MDJfcmVnbWFwX2Nv
bmZpZyA9IHsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3Jz
Lm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5z
b3Jz

WARNING: multiple messages have this Message-ID (diff)
From: Constantine Shulyupin <const@MakeLinux.com>
To: Jean Delvare <jdelvare@suse.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jonathan Corbet <corbet@lwn.net>,
	lm-sensors@lm-sensors.org (open list:HARDWARE MONITORING),
	linux-doc@vger.kernel.org (open list:DOCUMENTATION),
	linux-kernel@vger.kernel.org (open list)
Cc: Constantine Shulyupin <const@MakeLinux.com>
Subject: [PATCH v4] hwmon: (nct7802) Add autopoint attributes
Date: Sun, 26 Jul 2015 00:45:50 +0300	[thread overview]
Message-ID: <1437860750-10339-1-git-send-email-const@MakeLinux.com> (raw)

Introduced REG_PWM, pwm[1..3]_auto_point[1..5]_temp,
pwm[1..3]_auto_point[1..5]_pwm, nct7802_auto_point_attrs,
nct7802_auto_point_group, updated nct7802_regmap_is_volatile

Signed-off-by: Constantine Shulyupin <const@MakeLinux.com>
---

Changed in v4:
- fixed expression in nct7802_regmap_is_volatile
- added pwmX_auto_temp to driver's documentation
Changed in v3:
- removed nct7802_auto_point_is_visible
- removed usage of sysfs_update_group
- introduced REG_PWM
- removed S_IWUSR from RO attributes
- added PWM registers to nct7802_regmap_is_volatile
Changed in v2:
- removed PWM_REG, TEMP_REG
- removed auto_point[1..4]_temp, auto_point[1..4]_pwm
  and auto_point_crit_temp
- introduced pwm[1..3]_auto_point[1..5]_temp
  and pwm[1..3]_auto_point[1..5]_pwm.
- introduced nct7802_auto_point_is_visible
- used sysfs_update_group in store_pwm_enable

Default values on my platform:

fan1_alarm:0                    pwm2_auto_point1_temp:25000
fan1_beep:0                     pwm2_auto_point2_pwm:170
fan1_input:150000               pwm2_auto_point2_temp:35000
fan1_min:0                      pwm2_auto_point3_pwm:200
fan2_alarm:0                    pwm2_auto_point3_temp:45000
fan2_beep:0                     pwm2_auto_point4_pwm:230
fan2_input:0                    pwm2_auto_point4_temp:55000
fan2_min:0                      pwm2_auto_point5_pwm:255
fan3_alarm:0                    pwm2_auto_point5_temp:60000
fan3_beep:0                     pwm2_enable:1
fan3_input:0                    pwm2_mode:1
fan3_min:0                      pwm3:127
in0_alarm:0                     pwm3_auto_point1_pwm:140
in0_beep:0                      pwm3_auto_point1_temp:25000
in0_input:3312                  pwm3_auto_point2_pwm:170
in0_max:4092                    pwm3_auto_point2_temp:35000
in0_min:0                       pwm3_auto_point3_pwm:200
in1_input:902                   pwm3_auto_point3_temp:45000
in3_alarm:0                     pwm3_auto_point4_pwm:230
in3_beep:0                      pwm3_auto_point4_temp:55000
in3_input:1808                  pwm3_auto_point5_pwm:255
in3_max:2046                    pwm3_auto_point5_temp:60000
in3_min:0                       pwm3_enable:1
in4_alarm:0                     pwm3_mode:1
in4_beep:0                      temp1_beep:0
in4_input:1508                  temp1_crit:100000
in4_max:2046                    temp1_crit_alarm:0
in4_min:0                       temp1_fault:0
name:nct7802                    temp1_input:35500
pwm1:127                        temp1_max:85000
pwm1_auto_point1_pwm:140        temp1_max_alarm:0
pwm1_auto_point1_temp:25000     temp1_min:0
pwm1_auto_point2_pwm:170        temp1_min_alarm:0
pwm1_auto_point2_temp:35000     temp1_type:4
pwm1_auto_point3_pwm:200        temp4_beep:0
pwm1_auto_point3_temp:45000     temp4_crit:100000
pwm1_auto_point4_pwm:230        temp4_crit_alarm:0
pwm1_auto_point4_temp:55000     temp4_input:39000
pwm1_auto_point5_pwm:255        temp4_max:85000
pwm1_auto_point5_temp:60000     temp4_max_alarm:0
pwm1_enable:1                   temp4_min:0
pwm1_mode:1                     temp4_min_alarm:0
pwm2:127                        temp6_beep:0
pwm2_auto_point1_pwm:140        temp6_input:0

---
 Documentation/hwmon/nct7802 |   5 +-
 drivers/hwmon/nct7802.c     | 130 ++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 128 insertions(+), 7 deletions(-)

diff --git a/Documentation/hwmon/nct7802 b/Documentation/hwmon/nct7802
index 2e00f5e..c5c25a5 100644
--- a/Documentation/hwmon/nct7802
+++ b/Documentation/hwmon/nct7802
@@ -5,7 +5,7 @@ Supported chips:
   * Nuvoton NCT7802Y
     Prefix: 'nct7802'
     Addresses scanned: I2C 0x28..0x2f
-    Datasheet: Available from Nuvoton web site
+    Datasheet: http://www.nuvoton.com/hq/products/cloud-computing/hardware-monitors/desktop-server-series/nct7802y/
 
 Authors:
         Guenter Roeck <linux@roeck-us.net>
@@ -17,8 +17,7 @@ This driver implements support for the Nuvoton NCT7802Y hardware monitoring
 chip. NCT7802Y supports 6 temperature sensors, 5 voltage sensors, and 3 fan
 speed sensors.
 
-The chip also supports intelligent fan speed control. This functionality is
-not currently supported by the driver.
+Smart Fan™ speed control is avilabel via pwmX_auto_temp attributes.
 
 Tested Boards and BIOS Versions
 -------------------------------
diff --git a/drivers/hwmon/nct7802.c b/drivers/hwmon/nct7802.c
index d018571..c1898ba 100644
--- a/drivers/hwmon/nct7802.c
+++ b/drivers/hwmon/nct7802.c
@@ -53,6 +53,7 @@ static const u8 REG_VOLTAGE_LIMIT_MSB_SHIFT[2][5] = {
 #define REG_PECI_ENABLE		0x23
 #define REG_FAN_ENABLE		0x24
 #define REG_VMON_ENABLE		0x25
+#define REG_PWM(x)		(0x60 + (x))
 #define REG_SMARTFAN_EN(x)      (0x64 + (x) / 2)
 #define SMARTFAN_EN_SHIFT(x)    ((x) % 2 * 4)
 #define REG_VENDOR_ID		0xfd
@@ -130,6 +131,9 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr,
 	unsigned int val;
 	int ret;
 
+	if (!attr->index)
+		return sprintf(buf, "255\n");
+
 	ret = regmap_read(data->regmap, attr->index, &val);
 	if (ret < 0)
 		return ret;
@@ -826,9 +830,12 @@ static SENSOR_DEVICE_ATTR(pwm2_mode, S_IRUGO, show_pwm_mode, NULL, 1);
 static SENSOR_DEVICE_ATTR(pwm3_mode, S_IRUGO, show_pwm_mode, NULL, 2);
 
 /* 7.2.91... Fan Control Output Value */
-static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR, show_pwm, store_pwm, 0x60);
-static SENSOR_DEVICE_ATTR(pwm2, S_IRUGO | S_IWUSR, show_pwm, store_pwm, 0x61);
-static SENSOR_DEVICE_ATTR(pwm3, S_IRUGO | S_IWUSR, show_pwm, store_pwm, 0x62);
+static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR, show_pwm, store_pwm,
+			  REG_PWM(0));
+static SENSOR_DEVICE_ATTR(pwm2, S_IRUGO | S_IWUSR, show_pwm, store_pwm,
+			  REG_PWM(1));
+static SENSOR_DEVICE_ATTR(pwm3, S_IRUGO | S_IWUSR, show_pwm, store_pwm,
+			  REG_PWM(2));
 
 /* 7.2.95... Temperature to Fan mapping Relationships Register */
 static SENSOR_DEVICE_ATTR(pwm1_enable, S_IRUGO | S_IWUSR, show_pwm_enable,
@@ -893,11 +900,125 @@ static struct attribute_group nct7802_pwm_group = {
 	.attrs = nct7802_pwm_attrs,
 };
 
+/* 7.2.115... 0x80-0x83, 0x84 Temperature (X-axis) transition */
+static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x80, 0);
+static SENSOR_DEVICE_ATTR_2(pwm1_auto_point2_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x81, 0);
+static SENSOR_DEVICE_ATTR_2(pwm1_auto_point3_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x82, 0);
+static SENSOR_DEVICE_ATTR_2(pwm1_auto_point4_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x83, 0);
+static SENSOR_DEVICE_ATTR_2(pwm1_auto_point5_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x84, 0);
+
+/* 7.2.120... 0x85-0x88 PWM (Y-axis) transition */
+static SENSOR_DEVICE_ATTR(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x85);
+static SENSOR_DEVICE_ATTR(pwm1_auto_point2_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x86);
+static SENSOR_DEVICE_ATTR(pwm1_auto_point3_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x87);
+static SENSOR_DEVICE_ATTR(pwm1_auto_point4_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x88);
+static SENSOR_DEVICE_ATTR(pwm1_auto_point5_pwm, S_IRUGO, show_pwm, NULL, 0);
+
+/* 7.2.124 Table 2 X-axis Transition Point 1 Register */
+static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x90, 0);
+static SENSOR_DEVICE_ATTR_2(pwm2_auto_point2_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x91, 0);
+static SENSOR_DEVICE_ATTR_2(pwm2_auto_point3_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x92, 0);
+static SENSOR_DEVICE_ATTR_2(pwm2_auto_point4_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x93, 0);
+static SENSOR_DEVICE_ATTR_2(pwm2_auto_point5_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0x94, 0);
+
+/* 7.2.129 Table 2 Y-axis Transition Point 1 Register */
+static SENSOR_DEVICE_ATTR(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x95);
+static SENSOR_DEVICE_ATTR(pwm2_auto_point2_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x96);
+static SENSOR_DEVICE_ATTR(pwm2_auto_point3_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x97);
+static SENSOR_DEVICE_ATTR(pwm2_auto_point4_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0x98);
+static SENSOR_DEVICE_ATTR(pwm2_auto_point5_pwm, S_IRUGO, show_pwm, NULL, 0);
+
+/* 7.2.133 Table 3 X-axis Transition Point 1 Register */
+static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0xA0, 0);
+static SENSOR_DEVICE_ATTR_2(pwm3_auto_point2_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0xA1, 0);
+static SENSOR_DEVICE_ATTR_2(pwm3_auto_point3_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0xA2, 0);
+static SENSOR_DEVICE_ATTR_2(pwm3_auto_point4_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0xA3, 0);
+static SENSOR_DEVICE_ATTR_2(pwm3_auto_point5_temp, S_IRUGO | S_IWUSR,
+			    show_temp, store_temp, 0xA4, 0);
+
+/* 7.2.138 Table 3 Y-axis Transition Point 1 Register */
+static SENSOR_DEVICE_ATTR(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0xA5);
+static SENSOR_DEVICE_ATTR(pwm3_auto_point2_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0xA6);
+static SENSOR_DEVICE_ATTR(pwm3_auto_point3_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0xA7);
+static SENSOR_DEVICE_ATTR(pwm3_auto_point4_pwm, S_IRUGO | S_IWUSR,
+			  show_pwm, store_pwm, 0xA8);
+static SENSOR_DEVICE_ATTR(pwm3_auto_point5_pwm, S_IRUGO, show_pwm, NULL, 0);
+
+static struct attribute *nct7802_auto_point_attrs[] = {
+	&sensor_dev_attr_pwm1_auto_point1_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point2_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point3_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point4_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point5_temp.dev_attr.attr,
+
+	&sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point3_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point4_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm1_auto_point5_pwm.dev_attr.attr,
+
+	&sensor_dev_attr_pwm2_auto_point1_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point2_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point3_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point4_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point5_temp.dev_attr.attr,
+
+	&sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point3_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point4_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm2_auto_point5_pwm.dev_attr.attr,
+
+	&sensor_dev_attr_pwm3_auto_point1_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point2_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point3_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point4_temp.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point5_temp.dev_attr.attr,
+
+	&sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point3_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point4_pwm.dev_attr.attr,
+	&sensor_dev_attr_pwm3_auto_point5_pwm.dev_attr.attr,
+
+	NULL
+};
+
+static struct attribute_group nct7802_auto_point_group = {
+	.attrs = nct7802_auto_point_attrs,
+};
+
 static const struct attribute_group *nct7802_groups[] = {
 	&nct7802_temp_group,
 	&nct7802_in_group,
 	&nct7802_fan_group,
 	&nct7802_pwm_group,
+	&nct7802_auto_point_group,
 	NULL
 };
 
@@ -945,7 +1066,8 @@ static int nct7802_detect(struct i2c_client *client,
 
 static bool nct7802_regmap_is_volatile(struct device *dev, unsigned int reg)
 {
-	return reg != REG_BANK && reg <= 0x20;
+	return (reg != REG_BANK && reg <= 0x20) ||
+		(reg >= REG_PWM(0) && reg <= REG_PWM(2));
 }
 
 static const struct regmap_config nct7802_regmap_config = {
-- 
1.9.1


             reply	other threads:[~2015-07-25 21:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-25 21:45 Constantine Shulyupin [this message]
2015-07-25 21:45 ` [PATCH v4] hwmon: (nct7802) Add autopoint attributes Constantine Shulyupin
2015-07-26 11:40 ` [lm-sensors] " Guenter Roeck
2015-07-27  4:05 ` Guenter Roeck

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=1437860750-10339-1-git-send-email-const@MakeLinux.com \
    --to=const@makelinux.com \
    --cc=corbet@lwn.net \
    --cc=jdelvare@suse.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lm-sensors@lm-sensors.org \
    /path/to/YOUR_REPLY

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

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