From mboxrd@z Thu Jan 1 00:00:00 1970 From: Constantine Shulyupin Date: Sat, 25 Jul 2015 21:45:50 +0000 Subject: [lm-sensors] [PATCH v4] hwmon: (nct7802) Add autopoint attributes Message-Id: <1437860750-10339-1-git-send-email-const@MakeLinux.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Jean Delvare , Guenter Roeck , Jonathan Corbet , "open list:HARDWARE MONITORING" , "open list:DOCUMENTATION" , open list Cc: Constantine Shulyupin 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755084AbbGYVqL (ORCPT ); Sat, 25 Jul 2015 17:46:11 -0400 Received: from gproxy4-pub.mail.unifiedlayer.com ([69.89.23.142]:50844 "HELO gproxy4-pub.mail.unifiedlayer.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1753895AbbGYVqJ (ORCPT ); Sat, 25 Jul 2015 17:46:09 -0400 X-Authority-Analysis: v=2.1 cv=Qc314Krv c=1 sm=1 tr=0 a=J7Q474dc+DFtUK1fo70nSg==:117 a=J7Q474dc+DFtUK1fo70nSg==:17 a=cNaOj0WVAAAA:8 a=f5113yIGAAAA:8 a=dSbym95GAAAA:8 a=IkcTkHD0fZMA:10 a=ZhRHZX3j7ZUA:10 a=e_YdpGJV3rkA:10 a=zOBTXjUuO1YA:10 a=BxgfbMJPAAAA:8 a=_jlGtV7tAAAA:8 a=hJR-1PrGiWxBQ3YpeLQA:9 a=QEXdDO2ut3YA:10 From: Constantine Shulyupin To: Jean Delvare , Guenter Roeck , Jonathan Corbet , 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 Subject: [PATCH v4] hwmon: (nct7802) Add autopoint attributes Date: Sun, 26 Jul 2015 00:45:50 +0300 Message-Id: <1437860750-10339-1-git-send-email-const@MakeLinux.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Identified-User: {1470:box668.bluehost.com:makelinu:makelinux.net} {sentby:smtp auth 84.228.148.33 authed with poster@makelinux.net} Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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 @@ -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