From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Wahren Subject: [PATCH RFC 3/6] hwmon: Add support for RPi voltage sensor Date: Wed, 16 May 2018 15:37:04 +0200 Message-ID: <1526477827-10859-4-git-send-email-stefan.wahren@i2se.com> References: <1526477827-10859-1-git-send-email-stefan.wahren@i2se.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526477827-10859-1-git-send-email-stefan.wahren@i2se.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Rob Herring , Mark Rutland , Jean Delvare , Guenter Roeck , Eric Anholt Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, Florian Fainelli , Scott Branden , Ray Jui , Stefan Wahren , Phil Elwell , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org Q3VycmVudGx5IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRldGVjdCB1bmRlci12b2x0YWdlIGNv bmRpdGlvbnMgb24gYSByZW1vdGUKUmFzcGJlcnJ5IFBpLiBUaGlzIGh3bW9uIGRyaXZlciByZXRy aWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSB1bmRlci12b2x0YWdlIHNlbnNvcgp2aWEgbWFpbGJveCBp bnRlcmZhY2UuIFRoZSBoYW5kbGluZyBiYXNlZCBvbiBOb3JhbGYncyBtb2RpZmljYXRpb25zIHRv IHRoZQpkb3duc3RyZWFtIGZpcm13YXJlIGRyaXZlci4gSW4gY2FzZSBvZiBhbiB1bmRlci12b2x0 YWdlIGNvbmRpdGlvbiBvbmx5IGFuIGVudHJ5CmlzIHdyaXR0ZW4gdG8gdGhlIGtlcm5lbCBsb2cu CgpDQzogIk5vcmFsZiBUcsO4bm5lcyIgPG5vcmFsZkB0cm9ubmVzLm9yZz4KU2lnbmVkLW9mZi1i eTogU3RlZmFuIFdhaHJlbiA8c3RlZmFuLndhaHJlbkBpMnNlLmNvbT4KLS0tCiBkcml2ZXJzL2h3 bW9uL0tjb25maWcgICAgICAgICAgICAgfCAgMTAgKysKIGRyaXZlcnMvaHdtb24vTWFrZWZpbGUg ICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2h3bW9uL3Jhc3BiZXJyeXBpLWh3bW9uLmMgfCAy MDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMjE4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2h3bW9uL3Jh c3BiZXJyeXBpLWh3bW9uLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL0tjb25maWcgYi9k cml2ZXJzL2h3bW9uL0tjb25maWcKaW5kZXggNzY4YWVkNS4uN2Y5MzVjZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9od21vbi9LY29uZmlnCisrKyBiL2RyaXZlcnMvaHdtb24vS2NvbmZpZwpAQCAtMTI5 OCw2ICsxMjk4LDE2IEBAIGNvbmZpZyBTRU5TT1JTX1BXTV9GQU4KIAkgIFRoaXMgZHJpdmVyIGNh biBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwg YmUgY2FsbGVkIHB3bS1mYW4uCiAKK2NvbmZpZyBTRU5TT1JTX1JBU1BCRVJSWVBJX0hXTU9OCisJ dHJpc3RhdGUgIlJhc3BiZXJyeSBQaSB2b2x0YWdlIG1vbml0b3IiCisJZGVwZW5kcyBvbiAoQVJD SF9CQ00yODM1ICYmIFJBU1BCRVJSWVBJX0ZJUk1XQVJFKSB8fCAoQ09NUElMRV9URVNUICYmICFS QVNQQkVSUllQSV9GSVJNV0FSRSkKKwloZWxwCisJICBJZiB5b3Ugc2F5IHllcyBoZXJlIHlvdSBn ZXQgc3VwcG9ydCBmb3Igdm9sdGFnZSBzZW5zb3Igb24gdGhlCisJICBSYXNwYmVycnkgUGkuCisK KwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhl IG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgcmFzcGJlcnJ5cGktaHdtb24uCisKIGNvbmZpZyBT RU5TT1JTX1NIVDE1CiAJdHJpc3RhdGUgIlNlbnNpcm9uIGh1bWlkaXR5IGFuZCB0ZW1wZXJhdHVy ZSBzZW5zb3JzLiBTSFQxNSBhbmQgY29tcGF0LiIKIAlkZXBlbmRzIG9uIEdQSU9MSUIgfHwgQ09N UElMRV9URVNUCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlIGIvZHJpdmVycy9o d21vbi9NYWtlZmlsZQppbmRleCBlN2Q1MmEzLi5hOTI5NzcwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2h3bW9uL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvaHdtb24vTWFrZWZpbGUKQEAgLTE0MSw2ICsx NDEsNyBAQCBvYmotJChDT05GSUdfU0VOU09SU19QQzg3NDI3KQkrPSBwYzg3NDI3Lm8KIG9iai0k KENPTkZJR19TRU5TT1JTX1BDRjg1OTEpCSs9IHBjZjg1OTEubwogb2JqLSQoQ09ORklHX1NFTlNP UlNfUE9XUjEyMjApICArPSBwb3dyMTIyMC5vCiBvYmotJChDT05GSUdfU0VOU09SU19QV01fRkFO KQkrPSBwd20tZmFuLm8KK29iai0kKENPTkZJR19TRU5TT1JTX1JBU1BCRVJSWVBJX0hXTU9OKQkr PSByYXNwYmVycnlwaS1od21vbi5vCiBvYmotJChDT05GSUdfU0VOU09SU19TM0MpCSs9IHMzYy1o d21vbi5vCiBvYmotJChDT05GSUdfU0VOU09SU19TQ0g1NlhYX0NPTU1PTikrPSBzY2g1Nnh4LWNv bW1vbi5vCiBvYmotJChDT05GSUdfU0VOU09SU19TQ0g1NjI3KQkrPSBzY2g1NjI3Lm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvaHdtb24vcmFzcGJlcnJ5cGktaHdtb24uYyBiL2RyaXZlcnMvaHdtb24v cmFzcGJlcnJ5cGktaHdtb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y MDAzZjZjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9od21vbi9yYXNwYmVycnlwaS1od21v bi5jCkBAIC0wLDAgKzEsMjA3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCsKKy8qCisgKiBSYXNwYmVycnkgUGkgdm9sdGFnZSBzZW5zb3IgZHJpdmVyCisgKgorICogQmFz ZWQgb24gZmlybXdhcmUvcmFzcGJlcnJ5cGkuYyBieSBOb3JhbGYgVHLDuG5uZXMKKyAqCisgKiBD b3B5cmlnaHQgKEMpIDIwMTggU3RlZmFuIFdhaHJlbiA8c3RlZmFuLndhaHJlbkBpMnNlLmNvbT4K KyAqLworI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgor I2luY2x1ZGUgPGxpbnV4L2h3bW9uLmg+CisjaW5jbHVkZSA8bGludXgvaHdtb24tc3lzZnMuaD4K KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4K KyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8c29jL2JjbTI4MzUv cmFzcGJlcnJ5cGktZmlybXdhcmUuaD4KKworI2RlZmluZSBVTkRFUlZPTFRBR0VfU1RJQ0tZX0JJ VAlCSVQoMTYpCisKK3N0cnVjdCBycGlfaHdtb25fZGF0YSB7CisJc3RydWN0IGRldmljZSAqaHdt b25fZGV2OworCXN0cnVjdCBycGlfZmlybXdhcmUgKmZ3OworCXUzMiBsYXN0X3Rocm90dGxlZDsK KwlzdHJ1Y3QgZGVsYXllZF93b3JrIGdldF92YWx1ZXNfcG9sbF93b3JrOworfTsKKworc3RhdGlj IHZvaWQgcnBpX2Zpcm13YXJlX2dldF90aHJvdHRsZWQoc3RydWN0IHJwaV9od21vbl9kYXRhICpk YXRhKQoreworCXUzMiBuZXdfdXYsIG9sZF91diwgdmFsdWU7CisJaW50IHJldDsKKworCS8qIENs ZWFyIHN0aWNreSBiaXRzICovCisJdmFsdWUgPSAweGZmZmY7CisKKwlyZXQgPSBycGlfZmlybXdh cmVfcHJvcGVydHkoZGF0YS0+ZncsIFJQSV9GSVJNV0FSRV9HRVRfVEhST1RUTEVELAorCQkJCSAg ICAmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycl9vbmNlKGRh dGEtPmh3bW9uX2RldiwgIiVzOiBGYWlsZWQgdG8gZ2V0IHRocm90dGxlZCAoJWQpXG4iLAorCQkJ ICAgICBfX2Z1bmNfXywgcmV0KTsKKwkJcmV0dXJuOworCX0KKworCW5ld191diA9IHZhbHVlICYg VU5ERVJWT0xUQUdFX1NUSUNLWV9CSVQ7CisJb2xkX3V2ID0gZGF0YS0+bGFzdF90aHJvdHRsZWQg JiBVTkRFUlZPTFRBR0VfU1RJQ0tZX0JJVDsKKwlkYXRhLT5sYXN0X3Rocm90dGxlZCA9IHZhbHVl OworCisJaWYgKG5ld191diA9PSBvbGRfdXYpCisJCXJldHVybjsKKworCWlmIChuZXdfdXYpCisJ CWRldl9jcml0KGRhdGEtPmh3bW9uX2RldiwgIlVuZGVyLXZvbHRhZ2UgZGV0ZWN0ZWQhICgweCUw OHgpXG4iLAorCQkJIHZhbHVlKTsKKwllbHNlCisJCWRldl9pbmZvKGRhdGEtPmh3bW9uX2Rldiwg IlZvbHRhZ2Ugbm9ybWFsaXNlZCAoMHglMDh4KVxuIiwKKwkJCSB2YWx1ZSk7CisKKwlzeXNmc19u b3RpZnkoJmRhdGEtPmh3bW9uX2Rldi0+a29iaiwgTlVMTCwgImluMF9sY3JpdF9hbGFybSIpOwor fQorCitzdGF0aWMgdm9pZCBnZXRfdmFsdWVzX3BvbGwoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQoreworCXN0cnVjdCBycGlfaHdtb25fZGF0YSAqZGF0YTsKKworCWRhdGEgPSBjb250YWluZXJf b2Yod29yaywgc3RydWN0IHJwaV9od21vbl9kYXRhLAorCQkJICAgIGdldF92YWx1ZXNfcG9sbF93 b3JrLndvcmspOworCisJcnBpX2Zpcm13YXJlX2dldF90aHJvdHRsZWQoZGF0YSk7CisKKwkvKgor CSAqIFdlIGNhbid0IHJ1biBmYXN0ZXIgdGhhbiB0aGUgc3RpY2t5IHNoaWZ0ICgxMDBtcykgc2lu Y2Ugd2UgZ2V0CisJICogZmxpcHBpbmcgaW4gdGhlIHN0aWNreSBiaXRzIHRoYXQgYXJlIGNsZWFy ZWQuCisJICovCisJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkYXRhLT5nZXRfdmFsdWVzX3BvbGxf d29yaywgMiAqIEhaKTsKK30KKworc3RhdGljIGludCBycGlfcmVhZChzdHJ1Y3QgZGV2aWNlICpk ZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsCisJCSAgICB1MzIgYXR0ciwgaW50IGNo YW5uZWwsIGxvbmcgKnZhbCkKK3sKKwlzdHJ1Y3QgcnBpX2h3bW9uX2RhdGEgKmRhdGEgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKKworCWlmICh0eXBlICE9IGh3bW9uX2luKQorCQlyZXR1cm4gLUVP UE5PVFNVUFA7CisKKwlpZiAoYXR0ciAhPSBod21vbl9pbl9sY3JpdF9hbGFybSkKKwkJcmV0dXJu IC1FT1BOT1RTVVBQOworCisJaWYgKGNoYW5uZWwpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwor CSp2YWwgPSAhIShkYXRhLT5sYXN0X3Rocm90dGxlZCAmIFVOREVSVk9MVEFHRV9TVElDS1lfQklU KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVtb2RlX3QgcnBpX2lzX3Zpc2libGUoY29uc3Qg dm9pZCAqX2RhdGEsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsCisJCQkgICAgICB1MzIg YXR0ciwgaW50IGNoYW5uZWwpCit7CisJaWYgKHR5cGUgIT0gaHdtb25faW4pCisJCXJldHVybiAw OworCisJaWYgKGF0dHIgIT0gaHdtb25faW5fbGNyaXRfYWxhcm0pCisJCXJldHVybiAwOworCisJ aWYgKGNoYW5uZWwpCisJCXJldHVybiAwOworCisJcmV0dXJuIDA0NDQ7Cit9CisKK3N0YXRpYyBj b25zdCB1MzIgcnBpX2luX2NvbmZpZ1tdID0geworCUhXTU9OX0lfTENSSVRfQUxBUk0sCisJMAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVsX2luZm8gcnBpX2luID0gewor CS50eXBlID0gaHdtb25faW4sCisJLmNvbmZpZyA9IHJwaV9pbl9jb25maWcsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGh3bW9uX2NoYW5uZWxfaW5mbyAqcnBpX2luZm9bXSA9IHsKKwkmcnBp X2luLAorCU5VTEwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIHJwaV9od21v bl9vcHMgPSB7CisJLmlzX3Zpc2libGUgPSBycGlfaXNfdmlzaWJsZSwKKwkucmVhZCA9IHJwaV9y ZWFkLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gcnBpX2NoaXBf aW5mbyA9IHsKKwkub3BzID0gJnJwaV9od21vbl9vcHMsCisJLmluZm8gPSBycGlfaW5mbywKK307 CisKK3N0YXRpYyBpbnQgcnBpX2h3bW9uX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKmZ3X25vZGU7CisJc3RydWN0IHJwaV9od21vbl9kYXRhICpkYXRhOworCWludCByZXQ7 CisKKwlkYXRhID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkYXRhKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFkYXRhKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZ3X25vZGUgPSBvZl9nZXRfcGFy ZW50KGRldi0+b2Zfbm9kZSk7CisJaWYgKCFmd19ub2RlKSB7CisJCWRldl9lcnIoZGV2LCAiTWlz c2luZyBmaXJtd2FyZSBub2RlXG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJZGF0YS0+ ZncgPSBycGlfZmlybXdhcmVfZ2V0KGZ3X25vZGUpOworCW9mX25vZGVfcHV0KGZ3X25vZGUpOwor CWlmICghZGF0YS0+ZncpCisJCXJldHVybiAtRVBST0JFX0RFRkVSOworCisJcmV0ID0gcnBpX2Zp cm13YXJlX3Byb3BlcnR5KGRhdGEtPmZ3LCBSUElfRklSTVdBUkVfR0VUX1RIUk9UVExFRCwKKwkJ CQkgICAgJmRhdGEtPmxhc3RfdGhyb3R0bGVkLAorCQkJCSAgICBzaXplb2YoZGF0YS0+bGFzdF90 aHJvdHRsZWQpKTsKKwlpZiAocmV0KSB7CisJCWRldl9pbmZvKGRldiwgIkZpcm13YXJlIGRvZXNu J3Qgc3VwcG9ydCBHRVRfVEhST1RUTEVEXG4iKTsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCX0K KworCWRhdGEtPmh3bW9uX2RldiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5m byhkZXYsICJycGlfdm9sdCIsCisJCQkJCQkJICAgICAgIGRhdGEsCisJCQkJCQkJICAgICAgICZy cGlfY2hpcF9pbmZvLAorCQkJCQkJCSAgICAgICBOVUxMKTsKKworCUlOSVRfREVMQVlFRF9XT1JL KCZkYXRhLT5nZXRfdmFsdWVzX3BvbGxfd29yaywgZ2V0X3ZhbHVlc19wb2xsKTsKKwlwbGF0Zm9y bV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRhKTsKKworCWlmICghUFRSX0VSUl9PUl9aRVJPKGRhdGEt Pmh3bW9uX2RldikpCisJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZGF0YS0+Z2V0X3ZhbHVlc19w b2xsX3dvcmssIDIgKiBIWik7CisKKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGRhdGEtPmh3bW9u X2Rldik7Cit9CisKK3N0YXRpYyBpbnQgcnBpX2h3bW9uX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBycGlfaHdtb25fZGF0YSAqZGF0YSA9IHBsYXRmb3Jt X2dldF9kcnZkYXRhKHBkZXYpOworCisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkYXRhLT5n ZXRfdmFsdWVzX3BvbGxfd29yayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgcnBpX2h3bW9uX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJs ZSA9ICJyYXNwYmVycnlwaSxiY20yODM1LWh3bW9uIiwgfSwKKwl7IC8qIHNlbnRpbmVsICovfSwK K307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBycGlfaHdtb25fb2ZfbWF0Y2gpOworCitzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBycGlfaHdtb25fZHJpdmVyID0geworCS5wcm9iZSA9 IHJwaV9od21vbl9wcm9iZSwKKwkucmVtb3ZlID0gcnBpX2h3bW9uX3JlbW92ZSwKKwkuZHJpdmVy ID0geworCQkubmFtZSA9ICJyYXNwYmVycnlwaS1od21vbiIsCisJCS5vZl9tYXRjaF90YWJsZSA9 IHJwaV9od21vbl9vZl9tYXRjaCwKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocnBp X2h3bW9uX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIlN0ZWZhbiBXYWhyZW4gPHN0ZWZhbi53 YWhyZW5AaTJzZS5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlJhc3BiZXJyeSBQaSB2b2x0 YWdlIHNlbnNvciBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIuNy40 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=