From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quentin Schulz Subject: [PATCH v2 10/25] power: supply: add AC power supply driver for AXP20X and AXP22X PMICs Date: Fri, 27 Jan 2017 09:54:43 +0100 Message-ID: <20170127085458.18270-11-quentin.schulz@free-electrons.com> References: <20170127085458.18270-1-quentin.schulz@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170127085458.18270-1-quentin.schulz@free-electrons.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: knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, robh+dt@kernel.org, mark.rutland@arm.com, wens@csie.org, sre@kernel.org, linux@armlinux.org.uk, maxime.ripard@free-electrons.com, lee.jones@linaro.org Cc: thomas.petazzoni@free-electrons.com, devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Quentin Schulz , bonbons@linux-vserver.org, icenowy@aosc.xyz, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhlIFgtUG93ZXJzIEFYUDIwWCBhbmQgQVhQMjJYIFBNSUNzIGV4cG9zZSB0aGUgc3RhdHVzIG9m IEFDIHBvd2VyCnN1cHBseS4KCk1vcmVvdmVyLCB0aGUgQVhQMjBYIGNhbiBhbHNvIGV4cG9zZSB0 aGUgY3VycmVudCBjdXJyZW50IGFuZCB2b2x0YWdlCnZhbHVlcyBvZiB0aGUgQUMgcG93ZXIgc3Vw cGx5LgoKVGhpcyBhZGRzIHRoZSBkcml2ZXIgd2hpY2ggZXhwb3NlcyB0aGUgc3RhdHVzIG9mIHRo ZSBBQyBwb3dlciBzdXBwbHkgb2YKdGhlIEFYUDIwWCBhbmQgQVhQMjJYIFBNSUNzLgoKU2lnbmVk LW9mZi1ieTogUXVlbnRpbiBTY2h1bHogPHF1ZW50aW4uc2NodWx6QGZyZWUtZWxlY3Ryb25zLmNv bT4KQWNrZWQtYnk6IEpvbmF0aGFuIENhbWVyb24gPGppYzIzQGtlcm5lbC5vcmc+Ci0tLQoKdjI6 CiAtIHJlcGxhY2VkIMK1IGNoYXJhY3RlciBieSBhIGNvbW1vbiB1IGZvciBtaWNybyB1bml0cyB0 byBtYWtlIGNoZWNrcGF0Y2gKIGhhcHB5LAogLSB1c2Ugb2Ygc3RydWN0dXJlIGZvciBzcGVjaWZp YyBkYXRhIGluc3RlYWQgb2YgYW4gSUQgYW5kIGlmCiBjb25kaWZ0aW9ucywKIC0gdXNlIGRldl9n ZXRfcmVnbWFwIGluc3RlYWQgb2YgbWFudWFsbHkgbG9va2luZyBmb3IgaXQgaW4gdGhlIHBhcmVu dAogZHJ2ZGF0YSwKCiBkcml2ZXJzL3Bvd2VyL3N1cHBseS9LY29uZmlnICAgICAgICAgICB8ICAx MiArKwogZHJpdmVycy9wb3dlci9zdXBwbHkvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwogZHJp dmVycy9wb3dlci9zdXBwbHkvYXhwMjB4X2FjX3Bvd2VyLmMgfCAyNTAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wb3dlci9zdXBwbHkvYXhwMjB4X2FjX3Bvd2VyLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9LY29uZmlnIGIvZHJpdmVycy9wb3dl ci9zdXBwbHkvS2NvbmZpZwppbmRleCA3NjgwNmEwLi5jNTUyYjRiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3Bvd2VyL3N1cHBseS9LY29uZmlnCisrKyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25m aWcKQEAgLTIxNCw2ICsyMTQsMTggQEAgY29uZmlnIEJBVFRFUllfREE5MTUwCiAJICBUaGlzIGRy aXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGUgd2ls bCBiZQogCSAgY2FsbGVkIGRhOTE1MC1mZy4KIAorY29uZmlnIENIQVJHRVJfQVhQMjBYCisJdHJp c3RhdGUgIlgtUG93ZXJzIEFYUDIwWCBhbmQgQVhQMjJYIEFDIHBvd2VyIHN1cHBseSBkcml2ZXIi CisJZGVwZW5kcyBvbiBNRkRfQVhQMjBYCisJZGVwZW5kcyBvbiBBWFAyMFhfQURDCisJZGVwZW5k cyBvbiBJSU8KKwloZWxwCisJICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBYLVBv d2VycyBBWFAyMFggYW5kIEFYUDIyWCBQTUlDcycgQUMKKwkgIHBvd2VyIHN1cHBseS4KKworCSAg VGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9k dWxlIHdpbGwgYmUKKwkgIGNhbGxlZCBheHAyMHhfYWNfcG93ZXIuCisKIGNvbmZpZyBBWFAyODhf Q0hBUkdFUgogCXRyaXN0YXRlICJYLVBvd2VycyBBWFAyODggQ2hhcmdlciIKIAlkZXBlbmRzIG9u IE1GRF9BWFAyMFggJiYgRVhUQ09OX0FYUDI4OApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9z dXBwbHkvTWFrZWZpbGUgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9NYWtlZmlsZQppbmRleCAzNmM1 OTlkLi43ZDIyNDE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9NYWtlZmlsZQor KysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9NYWtlZmlsZQpAQCAtMTgsNiArMTgsNyBAQCBvYmot JChDT05GSUdfVEVTVF9QT1dFUikJKz0gdGVzdF9wb3dlci5vCiAKIG9iai0kKENPTkZJR19CQVRU RVJZXzg4UE04NjBYKQkrPSA4OHBtODYweF9iYXR0ZXJ5Lm8KIG9iai0kKENPTkZJR19CQVRURVJZ X0FDVDg5NDVBKQkrPSBhY3Q4OTQ1YV9jaGFyZ2VyLm8KK29iai0kKENPTkZJR19DSEFSR0VSX0FY UDIwWCkJKz0gYXhwMjB4X2FjX3Bvd2VyLm8KIG9iai0kKENPTkZJR19CQVRURVJZX0RTMjc2MCkJ Kz0gZHMyNzYwX2JhdHRlcnkubwogb2JqLSQoQ09ORklHX0JBVFRFUllfRFMyNzgwKQkrPSBkczI3 ODBfYmF0dGVyeS5vCiBvYmotJChDT05GSUdfQkFUVEVSWV9EUzI3ODEpCSs9IGRzMjc4MV9iYXR0 ZXJ5Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2F4cDIweF9hY19wb3dlci5j IGIvZHJpdmVycy9wb3dlci9zdXBwbHkvYXhwMjB4X2FjX3Bvd2VyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhYjRmMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv cG93ZXIvc3VwcGx5L2F4cDIweF9hY19wb3dlci5jCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICog QVhQMjBYIGFuZCBBWFAyMlggUE1JQ3MnIEFDSU4gcG93ZXIgc3VwcGx5IGRyaXZlcgorICoKKyAq IENvcHlyaWdodCAoQykgMjAxNiBGcmVlIEVsZWN0cm9ucworICoJUXVlbnRpbiBTY2h1bHogPHF1 ZW50aW4uc2NodWx6QGZyZWUtZWxlY3Ryb25zLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAor ICogdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL2F4cDIweC5oPgorI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2Zf ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8 bGludXgvcG93ZXJfc3VwcGx5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2lpby9jb25zdW1lci5oPgorCisjZGVm aW5lIEFYUDIwWF9QV1JfU1RBVFVTX0FDSU5fUFJFU0VOVAlCSVQoNykKKyNkZWZpbmUgQVhQMjBY X1BXUl9TVEFUVVNfQUNJTl9BVkFJTAlCSVQoNikKKworI2RlZmluZSBEUlZOQU1FICJheHAyMHgt YWMtcG93ZXItc3VwcGx5IgorCitzdHJ1Y3QgYXhwMjB4X2FjX3Bvd2VyIHsKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5wOworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlzdHJ1Y3QgcG93ZXJfc3Vw cGx5ICpzdXBwbHk7CisJaW50IGF4cDIweF9pZDsKKwlzdHJ1Y3QgaWlvX2NoYW5uZWwgKmFjaW5f djsKKwlzdHJ1Y3QgaWlvX2NoYW5uZWwgKmFjaW5faTsKK307CisKK3N0YXRpYyBpcnFyZXR1cm5f dCBheHAyMHhfYWNfcG93ZXJfaXJxKGludCBpcnEsIHZvaWQgKmRldmlkKQoreworCXN0cnVjdCBh eHAyMHhfYWNfcG93ZXIgKnBvd2VyID0gZGV2aWQ7CisKKwlwb3dlcl9zdXBwbHlfY2hhbmdlZChw b3dlci0+c3VwcGx5KTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBh eHAyMHhfYWNfcG93ZXJfZ2V0X3Byb3BlcnR5KHN0cnVjdCBwb3dlcl9zdXBwbHkgKnBzeSwKKwkJ CQkJZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgcHNwLAorCQkJCQl1bmlvbiBwb3dlcl9zdXBw bHlfcHJvcHZhbCAqdmFsKQoreworCXN0cnVjdCBheHAyMHhfYWNfcG93ZXIgKnBvd2VyID0gcG93 ZXJfc3VwcGx5X2dldF9kcnZkYXRhKHBzeSk7CisJaW50IHJldCwgcmVnOworCisJc3dpdGNoIChw c3ApIHsKKwljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0hFQUxUSDoKKwkJcmV0ID0gcmVnbWFwX3Jl YWQocG93ZXItPnJlZ21hcCwgQVhQMjBYX1BXUl9JTlBVVF9TVEFUVVMsICZyZWcpOworCQlpZiAo cmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlpZiAocmVnICYgQVhQMjBYX1BXUl9TVEFUVVNfQUNJ Tl9QUkVTRU5UKSB7CisJCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9IRUFMVEhfR09PRDsK KwkJCXJldHVybiAwOworCQl9CisKKwkJdmFsLT5pbnR2YWwgPSBQT1dFUl9TVVBQTFlfSEVBTFRI X1VOS05PV047CisJCXJldHVybiAwOworCisJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9QUkVTRU5U OgorCQlyZXQgPSByZWdtYXBfcmVhZChwb3dlci0+cmVnbWFwLCBBWFAyMFhfUFdSX0lOUFVUX1NU QVRVUywgJnJlZyk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXZhbC0+aW50dmFs ID0gISEocmVnICYgQVhQMjBYX1BXUl9TVEFUVVNfQUNJTl9QUkVTRU5UKTsKKwkJcmV0dXJuIDA7 CisKKwljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX09OTElORToKKwkJcmV0ID0gcmVnbWFwX3JlYWQo cG93ZXItPnJlZ21hcCwgQVhQMjBYX1BXUl9JTlBVVF9TVEFUVVMsICZyZWcpOworCQlpZiAocmV0 KQorCQkJcmV0dXJuIHJldDsKKworCQl2YWwtPmludHZhbCA9ICEhKHJlZyAmIEFYUDIwWF9QV1Jf U1RBVFVTX0FDSU5fQVZBSUwpOworCQlyZXR1cm4gMDsKKworCWNhc2UgUE9XRVJfU1VQUExZX1BS T1BfVk9MVEFHRV9OT1c6CisJCXJldCA9IGlpb19yZWFkX2NoYW5uZWxfcHJvY2Vzc2VkKHBvd2Vy LT5hY2luX3YsICZ2YWwtPmludHZhbCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJ CS8qIElJTyBmcmFtZXdvcmsgZ2l2ZXMgbVYgYnV0IFBvd2VyIFN1cHBseSBmcmFtZXdvcmsgZ2l2 ZXMgdVYgKi8KKwkJdmFsLT5pbnR2YWwgKj0gMTAwMDsKKworCQlyZXR1cm4gMDsKKworCWNhc2Ug UE9XRVJfU1VQUExZX1BST1BfQ1VSUkVOVF9OT1c6CisJCXJldCA9IGlpb19yZWFkX2NoYW5uZWxf cHJvY2Vzc2VkKHBvd2VyLT5hY2luX2ksICZ2YWwtPmludHZhbCk7CisJCWlmIChyZXQpCisJCQly ZXR1cm4gcmV0OworCisJCS8qIElJTyBmcmFtZXdvcmsgZ2l2ZXMgbUEgYnV0IFBvd2VyIFN1cHBs eSBmcmFtZXdvcmsgZ2l2ZXMgdUEgKi8KKwkJdmFsLT5pbnR2YWwgKj0gMTAwMDsKKworCQlyZXR1 cm4gMDsKKworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAtRUlO VkFMOworfQorCitzdGF0aWMgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgYXhwMjB4X2FjX3Bv d2VyX3Byb3BlcnRpZXNbXSA9IHsKKwlQT1dFUl9TVVBQTFlfUFJPUF9IRUFMVEgsCisJUE9XRVJf U1VQUExZX1BST1BfUFJFU0VOVCwKKwlQT1dFUl9TVVBQTFlfUFJPUF9PTkxJTkUsCisJUE9XRVJf U1VQUExZX1BST1BfVk9MVEFHRV9OT1csCisJUE9XRVJfU1VQUExZX1BST1BfQ1VSUkVOVF9OT1cs Cit9OworCitzdGF0aWMgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgYXhwMjJ4X2FjX3Bvd2Vy X3Byb3BlcnRpZXNbXSA9IHsKKwlQT1dFUl9TVVBQTFlfUFJPUF9IRUFMVEgsCisJUE9XRVJfU1VQ UExZX1BST1BfUFJFU0VOVCwKKwlQT1dFUl9TVVBQTFlfUFJPUF9PTkxJTkUsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IHBvd2VyX3N1cHBseV9kZXNjIGF4cDIweF9hY19wb3dlcl9kZXNjID0g eworCS5uYW1lID0gImF4cDIweC1hYyIsCisJLnR5cGUgPSBQT1dFUl9TVVBQTFlfVFlQRV9NQUlO UywKKwkucHJvcGVydGllcyA9IGF4cDIweF9hY19wb3dlcl9wcm9wZXJ0aWVzLAorCS5udW1fcHJv cGVydGllcyA9IEFSUkFZX1NJWkUoYXhwMjB4X2FjX3Bvd2VyX3Byb3BlcnRpZXMpLAorCS5nZXRf cHJvcGVydHkgPSBheHAyMHhfYWNfcG93ZXJfZ2V0X3Byb3BlcnR5LAorfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBwb3dlcl9zdXBwbHlfZGVzYyBheHAyMnhfYWNfcG93ZXJfZGVzYyA9IHsKKwku bmFtZSA9ICJheHAyMngtYWMiLAorCS50eXBlID0gUE9XRVJfU1VQUExZX1RZUEVfTUFJTlMsCisJ LnByb3BlcnRpZXMgPSBheHAyMnhfYWNfcG93ZXJfcHJvcGVydGllcywKKwkubnVtX3Byb3BlcnRp ZXMgPSBBUlJBWV9TSVpFKGF4cDIyeF9hY19wb3dlcl9wcm9wZXJ0aWVzKSwKKwkuZ2V0X3Byb3Bl cnR5ID0gYXhwMjB4X2FjX3Bvd2VyX2dldF9wcm9wZXJ0eSwKK307CisKK3N0cnVjdCBheHBfZGF0 YSB7CisJY29uc3Qgc3RydWN0IHBvd2VyX3N1cHBseV9kZXNjCSpwb3dlcl9kZXNjOworCWJvb2wJ CQkJYWNpbl9hZGM7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF4cF9kYXRhIGF4cDIweF9k YXRhID0geworCS5wb3dlcl9kZXNjID0gJmF4cDIweF9hY19wb3dlcl9kZXNjLAorCS5hY2luX2Fk YyA9IHRydWUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF4cF9kYXRhIGF4cDIyeF9kYXRh ID0geworCS5wb3dlcl9kZXNjID0gJmF4cDIyeF9hY19wb3dlcl9kZXNjLAorCS5hY2luX2FkYyA9 IGZhbHNlLAorfTsKKworc3RhdGljIGludCBheHAyMHhfYWNfcG93ZXJfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgYXhwMjB4X2RldiAqYXhwMjB4ID0gZGV2 X2dldF9kcnZkYXRhKHBkZXYtPmRldi5wYXJlbnQpOworCXN0cnVjdCBwb3dlcl9zdXBwbHlfY29u ZmlnIHBzeV9jZmcgPSB7fTsKKwlzdHJ1Y3QgYXhwMjB4X2FjX3Bvd2VyICpwb3dlcjsKKwlzdHJ1 Y3QgYXhwX2RhdGEgKmF4cF9kYXRhOworCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaXJxX25h bWVzW10gPSB7ICJBQ0lOX1BMVUdJTiIsICJBQ0lOX1JFTU9WQUwiLAorCQlOVUxMIH07CisJaW50 IGksIGlycSwgcmV0OworCisJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBkZXYtPmRldi5v Zl9ub2RlKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoIWF4cDIweCkgeworCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJQYXJlbnQgZHJ2ZGF0YSBub3Qgc2V0XG4iKTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcG93ZXIgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwb3dl ciksIEdGUF9LRVJORUwpOworCWlmICghcG93ZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJYXhw X2RhdGEgPSAoc3RydWN0IGF4cF9kYXRhICopb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2 LT5kZXYpOworCisJaWYgKGF4cF9kYXRhLT5hY2luX2FkYykgeworCQlwb3dlci0+YWNpbl92ID0g ZGV2bV9paW9fY2hhbm5lbF9nZXQoJnBkZXYtPmRldiwgImFjaW5fdiIpOworCQlpZiAoSVNfRVJS KHBvd2VyLT5hY2luX3YpKSB7CisJCQlpZiAoUFRSX0VSUihwb3dlci0+YWNpbl92KSA9PSAtRU5P REVWKQorCQkJCXJldHVybiAtRVBST0JFX0RFRkVSOworCQkJcmV0dXJuIFBUUl9FUlIocG93ZXIt PmFjaW5fdik7CisJCX0KKworCQlwb3dlci0+YWNpbl9pID0gZGV2bV9paW9fY2hhbm5lbF9nZXQo JnBkZXYtPmRldiwgImFjaW5faSIpOworCQlpZiAoSVNfRVJSKHBvd2VyLT5hY2luX2kpKSB7CisJ CQlpZiAoUFRSX0VSUihwb3dlci0+YWNpbl9pKSA9PSAtRU5PREVWKQorCQkJCXJldHVybiAtRVBS T0JFX0RFRkVSOworCQkJcmV0dXJuIFBUUl9FUlIocG93ZXItPmFjaW5faSk7CisJCX0KKwl9CisK Kwlwb3dlci0+cmVnbWFwID0gZGV2X2dldF9yZWdtYXAocGRldi0+ZGV2LnBhcmVudCwgTlVMTCk7 CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwb3dlcik7CisKKwlwc3lfY2ZnLm9mX25v ZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsKKwlwc3lfY2ZnLmRydl9kYXRhID0gcG93ZXI7CisKKwlw b3dlci0+c3VwcGx5ID0gZGV2bV9wb3dlcl9zdXBwbHlfcmVnaXN0ZXIoJnBkZXYtPmRldiwKKwkJ CQkJCSAgIGF4cF9kYXRhLT5wb3dlcl9kZXNjLAorCQkJCQkJICAgJnBzeV9jZmcpOworCWlmIChJ U19FUlIocG93ZXItPnN1cHBseSkpCisJCXJldHVybiBQVFJfRVJSKHBvd2VyLT5zdXBwbHkpOwor CisJLyogUmVxdWVzdCBpcnFzIGFmdGVyIHJlZ2lzdGVyaW5nLCBhcyBpcnFzIG1heSB0cmlnZ2Vy IGltbWVkaWF0ZWx5ICovCisJZm9yIChpID0gMDsgaXJxX25hbWVzW2ldOyBpKyspIHsKKwkJaXJx ID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgaXJxX25hbWVzW2ldKTsKKwkJaWYgKGly cSA8IDApIHsKKwkJCWRldl93YXJuKCZwZGV2LT5kZXYsICJObyBJUlEgZm9yICVzOiAlZFxuIiwK KwkJCQkgaXJxX25hbWVzW2ldLCBpcnEpOworCQkJY29udGludWU7CisJCX0KKwkJaXJxID0gcmVn bWFwX2lycV9nZXRfdmlycShheHAyMHgtPnJlZ21hcF9pcnFjLCBpcnEpOworCQlyZXQgPSBkZXZt X3JlcXVlc3RfYW55X2NvbnRleHRfaXJxKCZwZGV2LT5kZXYsIGlycSwKKwkJCQkJCSAgIGF4cDIw eF9hY19wb3dlcl9pcnEsIDAsCisJCQkJCQkgICBEUlZOQU1FLCBwb3dlcik7CisJCWlmIChyZXQg PCAwKQorCQkJZGV2X3dhcm4oJnBkZXYtPmRldiwgIkVycm9yIHJlcXVlc3RpbmcgJXMgSVJROiAl ZFxuIiwKKwkJCQkgaXJxX25hbWVzW2ldLCByZXQpOworCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBheHAyMHhfYWNfcG93ZXJfbWF0Y2hbXSA9 IHsKKwl7CisJCS5jb21wYXRpYmxlID0gIngtcG93ZXJzLGF4cDIwMi1hYy1wb3dlci1zdXBwbHki LAorCQkuZGF0YSA9ICh2b2lkICopJmF4cDIweF9kYXRhLAorCX0sIHsKKwkJLmNvbXBhdGlibGUg PSAieC1wb3dlcnMsYXhwMjIxLWFjLXBvd2VyLXN1cHBseSIsCisJCS5kYXRhID0gKHZvaWQgKikm YXhwMjJ4X2RhdGEsCisJfSwgeyAvKiBzZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgYXhwMjB4X2FjX3Bvd2VyX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgYXhwMjB4X2FjX3Bvd2VyX2RyaXZlciA9IHsKKwkucHJvYmUgPSBheHAyMHhfYWNf cG93ZXJfcHJvYmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUlZOQU1FLAorCQkub2ZfbWF0 Y2hfdGFibGUgPSBheHAyMHhfYWNfcG93ZXJfbWF0Y2gsCisJfSwKK307CisKK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIoYXhwMjB4X2FjX3Bvd2VyX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIlF1 ZW50aW4gU2NodWx6IDxxdWVudGluLnNjaHVsekBmcmVlLWVsZWN0cm9ucy5jb20+Iik7CitNT0RV TEVfREVTQ1JJUFRJT04oIkFYUDIwWCBhbmQgQVhQMjJYIFBNSUNzJyBBQyBwb3dlciBzdXBwbHkg ZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0tIAoyLjkuMwoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK