From: Oleg Chernovskiy Subject: [PATCH 2/3] add hwmon interface for managing fan pwm Date: Mon, 8 Dec 2014 00:10:45 +0300 Message-ID: <1417986646-8989-2-git-send-email-algonkvel@gmail.com> References: <1417986646-8989-1-git-send-email-algonkvel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lb0-f181.google.com (mail-lb0-f181.google.com [209.85.217.181]) by gabe.freedesktop.org (Postfix) with ESMTP id 2894C6E2EC for ; Sun, 7 Dec 2014 13:10:49 -0800 (PST) Received: by mail-lb0-f181.google.com with SMTP id l4so2835577lbv.26 for ; Sun, 07 Dec 2014 13:10:48 -0800 (PST) In-Reply-To: <1417986646-8989-1-git-send-email-algonkvel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIHBlcmNlbnQtYmFzZWQgZmFuIGNvbnRyb2wuIEF0dHJpYnV0ZXMgKEkgaG9wZSkg Zm9sbG93IHRoZQpzeXNmcy1pbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbjoKKiBwd20xIC0gZmFuIHNw ZWVkIHF1ZXJ5L21hbmFnZQoqIHB3bTFfbWF4LCBwd20xX21pbiAtIG1pbi9tYXggdmFsdWVzIGZv ciBmYW4gcHdtIChjb25zdGFudCkKKiBwd20xX2VuYWJsZSAtIGZhbiBjb250cm9sIHF1ZXJ5L21h bmFnZSAoZW5hYmxlL2Rpc2FibGUpCgooVGhlcmUgaXMgbm8gcnBtLWJhc2VkIGNvbnRyb2wgZm9y IG5vdykKClNpZ25lZC1vZmYtYnk6IE9sZWcgQ2hlcm5vdnNraXkgPGFsZ29ua3ZlbEBnbWFpbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcG0uYyB8IDEyOSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTI4IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcG0uYwppbmRl eCAzMjUyMmNjLi41OGRhYTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3BtLmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJyYWRlb24uaCIKICNpbmNsdWRlICJhdml2b2QuaCIKICNp bmNsdWRlICJhdG9tLmgiCisjaW5jbHVkZSAicjYwMF9kcG0uaCIKICNpbmNsdWRlIDxsaW51eC9w b3dlcl9zdXBwbHkuaD4KICNpbmNsdWRlIDxsaW51eC9od21vbi5oPgogI2luY2x1ZGUgPGxpbnV4 L2h3bW9uLXN5c2ZzLmg+CkBAIC01NTQsNiArNTU1LDk0IEBAIGZhaWw6CiAJcmV0dXJuIGNvdW50 OwogfQogCitzdGF0aWMgc3NpemVfdCByYWRlb25faHdtb25fZ2V0X3B3bTFfZW5hYmxlKHN0cnVj dCBkZXZpY2UgKmRldiwKKwkJCQkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwK KwkJCQkJCQkgICBjaGFyICpidWYpCit7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgcHdtX21vZGUgPSAwOworCisJaWYocmRldi0+YXNp Yy0+ZHBtLmZhbl9jdHJsX2dldF9tb2RlKQorCQlwd21fbW9kZSA9IHJkZXYtPmFzaWMtPmRwbS5m YW5fY3RybF9nZXRfbW9kZShyZGV2KTsKKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVpXG4iLCBw d21fbW9kZSA9PSBGRE9fUFdNX01PREVfU1RBVElDKTsKK30KKworc3RhdGljIHNzaXplX3QgcmFk ZW9uX2h3bW9uX3NldF9wd20xX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkJICAg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCQkJICAgY29uc3QgY2hhciAqYnVm LAorCQkJCQkJCSAgIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRl diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCBlcnI7CisJaW50IHZhbHVlOworCisJaWYo IXJkZXYtPmFzaWMtPmRwbS5mYW5fY3RybF9zZXRfbW9kZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwllcnIgPSBrc3RydG9pbnQoYnVmLCAxMCwgJnZhbHVlKTsKKwlpZihlcnIpCisJCXJldHVybiBl cnI7CisKKwlzd2l0Y2godmFsdWUpIHsKKwljYXNlIDE6IC8vIG1hbnVhbCwgcGVyY2VudC1iYXNl ZAorCQlyZGV2LT5hc2ljLT5kcG0uZmFuX2N0cmxfc2V0X21vZGUocmRldiwgRkRPX1BXTV9NT0RF X1NUQVRJQyk7CisJCWJyZWFrOworCWRlZmF1bHQ6IC8vIGRpc2FibGUKKwkJcmRldi0+YXNpYy0+ ZHBtLmZhbl9jdHJsX3NldF9tb2RlKHJkZXYsIDApOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4g Y291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHJhZGVvbl9od21vbl9nZXRfcHdtMV9taW4oc3Ry dWN0IGRldmljZSAqZGV2LAorCQkJCQkJCSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LAorCQkJCQkJCSAgIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlaVxuIiwg MCk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHJhZGVvbl9od21vbl9nZXRfcHdtMV9tYXgoc3RydWN0 IGRldmljZSAqZGV2LAorCQkJCQkJCSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAor CQkJCQkJCSAgIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlaVxuIiwgMTAw KTsgLy8gcHdtIHVzZXMgcGVyY2VudC1iYXNlZCBmYW4tY29udHJvbAorfQorCitzdGF0aWMgc3Np emVfdCByYWRlb25faHdtb25fc2V0X3B3bTEoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkJCSAg IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmJ1 Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7CisJaW50IGVycjsKKwl1MzIgdmFsdWU7CisKKwllcnIgPSBrc3RydG91 MzIoYnVmLCAxMCwgJnZhbHVlKTsKKwlpZihlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBy ZGV2LT5hc2ljLT5kcG0uc2V0X2Zhbl9zcGVlZF9wZXJjZW50KHJkZXYsIHZhbHVlKTsKKwlpZihl cnIpCisJCXJldHVybiBlcnI7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90 IHJhZGVvbl9od21vbl9nZXRfcHdtMShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkJICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCQkJICAgY2hhciAqYnVmKQoreworCXN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IGVy cjsKKwl1MzIgc3BlZWQ7CisJZXJyID0gcmRldi0+YXNpYy0+ZHBtLmdldF9mYW5fc3BlZWRfcGVy Y2VudChyZGV2LCAmc3BlZWQpOworCWlmKGVycikKKwkJcmV0dXJuIGVycjsKKworCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVpXG4iLCBzcGVlZCk7Cit9CisKIHN0YXRpYyBERVZJQ0VfQVRUUihwb3dl cl9wcm9maWxlLCBTX0lSVUdPIHwgU19JV1VTUiwgcmFkZW9uX2dldF9wbV9wcm9maWxlLCByYWRl b25fc2V0X3BtX3Byb2ZpbGUpOwogc3RhdGljIERFVklDRV9BVFRSKHBvd2VyX21ldGhvZCwgU19J UlVHTyB8IFNfSVdVU1IsIHJhZGVvbl9nZXRfcG1fbWV0aG9kLCByYWRlb25fc2V0X3BtX21ldGhv ZCk7CiBzdGF0aWMgREVWSUNFX0FUVFIocG93ZXJfZHBtX3N0YXRlLCBTX0lSVUdPIHwgU19JV1VT UiwgcmFkZW9uX2dldF9kcG1fc3RhdGUsIHJhZGVvbl9zZXRfZHBtX3N0YXRlKTsKQEAgLTYwMSwx MSArNjkwLDIwIEBAIHN0YXRpYyBzc2l6ZV90IHJhZGVvbl9od21vbl9zaG93X3RlbXBfdGhyZXNo KHN0cnVjdCBkZXZpY2UgKmRldiwKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfaW5w dXQsIFNfSVJVR08sIHJhZGVvbl9od21vbl9zaG93X3RlbXAsIE5VTEwsIDApOwogc3RhdGljIFNF TlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9jcml0LCBTX0lSVUdPLCByYWRlb25faHdtb25fc2hvd190 ZW1wX3RocmVzaCwgTlVMTCwgMCk7CiBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2Ny aXRfaHlzdCwgU19JUlVHTywgcmFkZW9uX2h3bW9uX3Nob3dfdGVtcF90aHJlc2gsIE5VTEwsIDEp Oworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20xLCBTX0lSVUdPIHwgU19JV1VTUiwgcmFk ZW9uX2h3bW9uX2dldF9wd20xLCByYWRlb25faHdtb25fc2V0X3B3bTEsIDApOworc3RhdGljIFNF TlNPUl9ERVZJQ0VfQVRUUihwd20xX2VuYWJsZSwgU19JUlVHTyB8IFNfSVdVU1IsIHJhZGVvbl9o d21vbl9nZXRfcHdtMV9lbmFibGUsIHJhZGVvbl9od21vbl9zZXRfcHdtMV9lbmFibGUsIDApOwor c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20xX21pbiwgU19JUlVHTywgcmFkZW9uX2h3bW9u X2dldF9wd20xX21pbiwgTlVMTCwgMCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bTFf bWF4LCBTX0lSVUdPLCByYWRlb25faHdtb25fZ2V0X3B3bTFfbWF4LCBOVUxMLCAwKTsKKwogCiBz dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaHdtb25fYXR0cmlidXRlc1tdID0gewogCSZzZW5zb3Jf ZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0ciwKIAkmc2Vuc29yX2Rldl9hdHRyX3Rl bXAxX2NyaXQuZGV2X2F0dHIuYXR0ciwKIAkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX2NyaXRfaHlz dC5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcHdtMS5kZXZfYXR0ci5hdHRyLAor CSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9lbmFibGUuZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rl dl9hdHRyX3B3bTFfbWluLmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX21h eC5kZXZfYXR0ci5hdHRyLAogCU5VTEwKIH07CiAKQEAgLTYxNCw2ICs3MTIsNyBAQCBzdGF0aWMg dW1vZGVfdCBod21vbl9hdHRyaWJ1dGVzX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiB7 CiAJc3RydWN0IGRldmljZSAqZGV2ID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkZXZpY2Us IGtvYmopOwogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7CisJdW1vZGVfdCBlZmZlY3RpdmVfbW9kZSA9IGF0dHItPm1vZGU7CiAKIAkvKiBTa2lwIGxp bWl0IGF0dHJpYnV0ZXMgaWYgRFBNIGlzIG5vdCBlbmFibGVkICovCiAJaWYgKHJkZXYtPnBtLnBt X21ldGhvZCAhPSBQTV9NRVRIT0RfRFBNICYmCkBAIC02MjEsNyArNzIwLDM1IEBAIHN0YXRpYyB1 bW9kZV90IGh3bW9uX2F0dHJpYnV0ZXNfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKIAkg ICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9jcml0X2h5c3QuZGV2X2F0dHIuYXR0 cikpCiAJCXJldHVybiAwOwogCi0JcmV0dXJuIGF0dHItPm1vZGU7CisJLyogU2tpcCBmYW4gYXR0 cmlidXRlcyBpZiBmYW4gaXMgbm90IHByZXNlbnQgKi8KKwlpZihyZGV2LT5wbS5ub19mYW4gJiYK KwkJKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xLmRldl9hdHRyLmF0dHIgfHwKKwkJIGF0 dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX2VuYWJsZS5kZXZfYXR0ci5hdHRyIHx8CisJCSBh dHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9tYXguZGV2X2F0dHIuYXR0ciB8fAorCQkgYXR0 ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTFfbWluLmRldl9hdHRyLmF0dHIpKQorCQlyZXR1cm4g MDsKKworCS8qIG1hc2sgZmFuIGF0dHJpYnV0ZXMgaWYgd2UgaGF2ZSBubyBiaW5kaW5ncyBmb3Ig dGhpcyBhc2ljIHRvIGV4cG9zZSAqLworCWlmKCghcmRldi0+YXNpYy0+ZHBtLmdldF9mYW5fc3Bl ZWRfcGVyY2VudCAmJgorCQkgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTEuZGV2X2F0dHIu YXR0cikgfHwgLy8gY2FuJ3QgcXVlcnkgZmFuCisJCSAoIXJkZXYtPmFzaWMtPmRwbS5mYW5fY3Ry bF9nZXRfbW9kZSAmJgorCQkgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX2VuYWJsZS5k ZXZfYXR0ci5hdHRyKSkgLy8gY2FuJ3QgcXVlcnkgc3RhdGUKKwkJZWZmZWN0aXZlX21vZGUgJj0g flNfSVJVR087CisKKwlpZigoIXJkZXYtPmFzaWMtPmRwbS5zZXRfZmFuX3NwZWVkX3BlcmNlbnQg JiYKKwkJIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xLmRldl9hdHRyLmF0dHIpIHx8IC8v IGNhbid0IG1hbmFnZSBmYW4KKwkJICghcmRldi0+YXNpYy0+ZHBtLmZhbl9jdHJsX3NldF9tb2Rl ICYmCisJCSAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTFfZW5hYmxlLmRldl9hdHRyLmF0 dHIpKSAvLyBjYW4ndCBtYW5hZ2Ugc3RhdGUKKwkJZWZmZWN0aXZlX21vZGUgJj0gflNfSVdVU1I7 CisKKwkvKiBoaWRlIG1heC9taW4gdmFsdWVzIGlmIHdlIGNhbid0IGJvdGggcXVlcnkgYW5kIG1h bmFnZSB0aGUgZmFuICovCisJaWYoKCFyZGV2LT5hc2ljLT5kcG0uc2V0X2Zhbl9zcGVlZF9wZXJj ZW50ICYmCisJCSAhcmRldi0+YXNpYy0+ZHBtLmdldF9mYW5fc3BlZWRfcGVyY2VudCkgJiYKKwkJ IChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9tYXguZGV2X2F0dHIuYXR0ciB8fAorCQkg IGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX21pbi5kZXZfYXR0ci5hdHRyKSkKKwkJcmV0 dXJuIDA7CisKKwlyZXR1cm4gZWZmZWN0aXZlX21vZGU7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGh3bW9uX2F0dHJncm91cCA9IHsKLS0gCjIuMS4zCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=