From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28BE8ECAAD5 for ; Tue, 6 Sep 2022 12:00:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233074AbiIFMAw (ORCPT ); Tue, 6 Sep 2022 08:00:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57762 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232295AbiIFMAs (ORCPT ); Tue, 6 Sep 2022 08:00:48 -0400 Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EB4E87821A for ; Tue, 6 Sep 2022 05:00:44 -0700 (PDT) Received: from lichenyang$loongson.cn ( [10.20.42.75] ) by ajax-webmail-localhost.localdomain (Coremail) ; Tue, 6 Sep 2022 20:00:06 +0800 (GMT+08:00) X-Originating-IP: [10.20.42.75] Date: Tue, 6 Sep 2022 20:00:06 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5p2O5pmo6Ziz?= To: "Maxime Ripard" , "Maarten Lankhorst" , "Thomas Zimmermann" , "Dan Carpenter" , "David Airlie" , "Daniel Vetter" , dri-devel@lists.freedesktop.org, devel@linuxdriverproject.org Cc: "Sam Ravnborg" , linux-kernel@vger.kernel.org Subject: [PATCH v7 2/4] drm/loongson: Add GPIO and I2C driver for loongson drm. X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20220411(feba7c69) Copyright (c) 2002-2022 www.mailtech.cn .loongson.cn In-Reply-To: <20220625090715.3663-1-lichenyang@loongson.cn> References: <20220625090715.3663-1-lichenyang@loongson.cn> Content-Transfer-Encoding: base64 X-CM-CTRLDATA: R1AocmZvb3Rlcl90eHQ9MTEyNzY6NjEy Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <14667c95.6327.18312ac0551.Coremail.lichenyang@loongson.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID: AQAAf8Ax1OFHNhdjWbcSAA--.4035W X-CM-SenderInfo: xolfxvxq1d0wo6or00hjvr0hdfq/1tbiAQABA2MV5tsWagABs1 X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SW1wbGVtZW50IHVzZSBHUElPIGFuZCBJMkMgZHJpdmVyIHRvIGRldGVjdCBjb25uZWN0b3IKYW5k IGZldGNoIEVESUQgdmlhIEREQy4KCnY1OgotIFVzZSBicmFpZGdlLT5kZGMgdG8gZ2V0IEVESUQg YW5kIGRldGVjdCBjb25uZWN0b3IuCgp2NDoKLSBEZWxldGUgdGhlIGdwaW9fY2hpcCBzdWJzeXN0 ZW0gY2FsbC4KLSBEZWxldGUgc29tZSByZWR1bmRhbnQgcHJpbnRzLgoKdjM6Ci0gQ2hhbmdlIHNv bWUgZHJpdmVyIGxvZyB0byB0aGUgZHJtXyB2ZXJzaW9uLgoKdjI6Ci0gT3B0aW1pemUgdGhlIGVy cm9yIGhhbmRsaW5nIHByb2Nlc3MuCi0gRGVsZXRlIGxvb25nc29uX2kyY19idXNfbWF0Y2ggYW5k IGxvb25nc29uX2kyY19hZGQgZnVuY3Rpb24uCi0gT3B0aW1pemUgcGFydCBvZiB0aGUgY29kZSBm bG93LgoKU2lnbmVkLW9mZi1ieTogWWkgTGkgPGxpeWlAbG9vbmdzb24uY24+ClNpZ25lZC1vZmYt Ynk6IENoZW55YW5nIExpIDxsaWNoZW55YW5nQGxvb25nc29uLmNuPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9sb29uZ3Nvbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2xvb25nc29uL2xvb25nc29uX2Rydi5jICAgICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xvb25nc29uX2Rydi5oICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdz b24vbG9vbmdzb25fZW5jb2Rlci5jIHwgIDMxICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sb29uZ3Nvbl9pMmMuYyAgICAgfCAxOTEgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9pMmMuaCAgICAgfCAgMzMgKysrKwogNiBmaWxlcyBj aGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2kyYy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2kyYy5oCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2xvb25nc29uL01ha2VmaWxlCmluZGV4IDUzNGE2NDA0N2ZiNi4uNGE1ZmFiN2QwMDBiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9n cHUvZHJtL2xvb25nc29uL01ha2VmaWxlCkBAIC05LDUgKzksNiBAQCBsb29uZ3Nvbi15IDo9IGxv b25nc29uX2Nvbm5lY3Rvci5vIFwKIAlsb29uZ3Nvbl9kZXZpY2UubyBcCiAJbG9vbmdzb25fZHJ2 Lm8gXAogCWxvb25nc29uX2VuY29kZXIubyBcCisJbG9vbmdzb25faTJjLm8gXAogCWxvb25nc29u X3BsYW5lLm8KIG9iai0kKENPTkZJR19EUk1fTE9PTkdTT04pICs9IGxvb25nc29uLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuYwppbmRleCA0OTkzYjhkOWU4Y2EuLjJlM2Vm NjE5Mzc2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuYwpAQCAtMjIs OSArMjIsMTAgQEAKIAogLyogSW50ZXJmYWNlIGhpc3Rvcnk6CiAgKiAwLjEgLSBvcmlnaW5hbC4K KyAqIDAuMiAtIGFkZCBpMmMgYW5kIGNvbm5lY3RvciBkZXRlY3QuCiAgKi8KICNkZWZpbmUgRFJJ VkVSX01BSk9SIDAKLSNkZWZpbmUgRFJJVkVSX01JTk9SIDEKKyNkZWZpbmUgRFJJVkVSX01JTk9S IDIKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgbG9vbmdzb25f bW9kZV9mdW5jcyA9IHsKIAkuZmJfY3JlYXRlID0gZHJtX2dlbV9mYl9jcmVhdGUsCkBAIC04OCw2 ICs4OSwxNCBAQCBzdGF0aWMgaW50IGxvb25nc29uX2RldmljZV9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAKIAlsZGV2LT5udW1fY3J0YyA9IDI7CiAKKwlyZXQgPSBsb29uZ3Nvbl9kY19n cGlvX2luaXQobGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGxvb25n c29uX2kyY19pbml0KGxkZXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlkcm1faW5m byhkZXYsICJEQyBtbWlvIGJhc2UgMHglbGx4IHNpemUgMHglbGx4IGlvIDB4JWxseFxuIiwKIAkJ IG1taW9fYmFzZSwgbW1pb19zaXplLCAqKHU2NCAqKWxkZXYtPmlvKTsKIAlkcm1faW5mbyhkZXYs ICJHUFUgdnJhbSBzdGFydCA9IDB4JXggc2l6ZSA9IDB4JXhcbiIsCkBAIC05Niw3ICsxMDUsNyBA QCBzdGF0aWMgaW50IGxvb25nc29uX2RldmljZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJcmV0dXJuIDA7CiB9CiAKLWludCBsb29uZ3Nvbl9tb2Rlc2V0X2luaXQoc3RydWN0IGxvb25n c29uX2RldmljZSAqbGRldikKK3N0YXRpYyBpbnQgbG9vbmdzb25fbW9kZXNldF9pbml0KHN0cnVj dCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYpCiB7CiAJaW50IGk7CiAJaW50IHJldDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuaAppbmRleCBlOWU5N2RiMDAxMTAuLjViZTI5ZDJk MWE0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuaApAQCAtMTAsNiAr MTAsOCBAQAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmg+CiAjaW5jbHVkZSA8 ZHJtL2RybV9icmlkZ2UuaD4KIAorI2luY2x1ZGUgImxvb25nc29uX2kyYy5oIgorCiAvKiBHZW5l cmFsIGN1c3RvbWl6YXRpb246CiAgKi8KICNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiTG9vbmdzb24g Z3JhcGhpY3MgZHJpdmVyIHRlYW0iCkBAIC0xMDIsNiArMTA0LDggQEAgc3RydWN0IGxvb25nc29u X2RldmljZSB7CiAJdTMyIG51bV9jcnRjOwogCXN0cnVjdCBsb29uZ3Nvbl9tb2RlX2luZm8gbW9k ZV9pbmZvWzJdOwogCXN0cnVjdCBwY2lfZGV2ICpncHVfcGRldjsgLyogTFM3QSBncHUgZGV2aWNl IGluZm8gKi8KKworCXN0cnVjdCBsb29uZ3Nvbl9pMmMgaTJjX2J1c1tEQ19NQVhfSTJDX0JVU107 CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKnRvX2xvb25nc29u X2RldmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMTIxLDYgKzEyNSw5IEBAIGludCBs b29uZ3Nvbl9lbmNvZGVyX2luaXQoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgaW50IGlu ZGV4KTsKIC8qIHBsYW5lICovCiBzdHJ1Y3QgbG9vbmdzb25fcGxhbmUgKmxvb25nc29uX3BsYW5l X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGluZGV4KTsKIAorLyogaTJjICovCitp bnQgbG9vbmdzb25fZGNfZ3Bpb19pbml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYpOwor CiAvKiBkZXZpY2UgKi8KIHUzMiBsb29uZ3Nvbl9ncHVfb2Zmc2V0KHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlLAogCQkJc3RydWN0IGxvb25nc29uX2RldmljZSAqZGV2KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9lbmNvZGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZW5jb2Rlci5jCmluZGV4IDViOTRmNzA3ZjFhMC4u YWNjZjE0NDQ3OWY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdz b25fZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9lbmNv ZGVyLmMKQEAgLTcsMTkgKzcsMzEgQEAKIAogI2luY2x1ZGUgImxvb25nc29uX2Rydi5oIgogCi1z dGF0aWMgaW50IGxvb25nc29uX2JyaWRnZV9nZXRfbW9kZXMoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKLQkJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCitlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIGxvb25nc29uX2JyaWRnZV9kZXRlY3Qoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkKIHsKLQlpbnQgY291bnQ7CisJdW5zaWduZWQgY2hhciBzdGFydCA9IDB4MDsK KwlzdHJ1Y3QgaTJjX21zZyBtc2dzID0geworCQkuYWRkciA9IEREQ19BRERSLAorCQkuZmxhZ3Mg PSAwLAorCQkubGVuID0gMSwKKwkJLmJ1ZiA9ICZzdGFydCwKKwl9OwogCi0JY291bnQgPSBkcm1f YWRkX21vZGVzX25vZWRpZChjb25uZWN0b3IsIDE5MjAsIDEwODApOwotCWRybV9zZXRfcHJlZmVy cmVkX21vZGUoY29ubmVjdG9yLCAxMDI0LCA3NjgpOworCWlmIChpMmNfdHJhbnNmZXIoYnJpZGdl LT5kZGMsICZtc2dzLCAxKSAhPSAxKQorCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25u ZWN0ZWQ7CisJZWxzZQorCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CiAK LQlyZXR1cm4gY291bnQ7CitzdGF0aWMgc3RydWN0IGVkaWQgKmxvb25nc29uX2JyaWRnZV9nZXRf ZWRpZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJCQkgICAgIHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0dXJuIGRybV9nZXRfZWRpZChjb25uZWN0b3IsIGJy aWRnZS0+ZGRjKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIGxv b25nc29uX2VuY29kZXJfYnJpZGdlX2Z1bmNzID0gewotCS5nZXRfbW9kZXMgPSBsb29uZ3Nvbl9i cmlkZ2VfZ2V0X21vZGVzLAorCS5kZXRlY3QgPSBsb29uZ3Nvbl9icmlkZ2VfZGV0ZWN0LAorCS5n ZXRfZWRpZCA9IGxvb25nc29uX2JyaWRnZV9nZXRfZWRpZCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2Rlc3Ryb3lfc3RhdGUs CiAJLmF0b21pY19yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9yZXNldCwKQEAgLTQw LDcgKzUyLDEwIEBAIGludCBsb29uZ3Nvbl9lbmNvZGVyX2luaXQoc3RydWN0IGxvb25nc29uX2Rl dmljZSAqbGRldiwgaW50IGluZGV4KQogCWxkZXYtPm1vZGVfaW5mb1tpbmRleF0uZW5jb2RlciA9 IGxlbmNvZGVyOwogCiAJbGVuY29kZXItPmJyaWRnZS5mdW5jcyA9ICZsb29uZ3Nvbl9lbmNvZGVy X2JyaWRnZV9mdW5jczsKLQlsZW5jb2Rlci0+YnJpZGdlLm9wcyA9IERSTV9CUklER0VfT1BfTU9E RVM7CisJbGVuY29kZXItPmJyaWRnZS5kZGMgPSBsZGV2LT5pMmNfYnVzW2luZGV4XS5hZGFwdGVy OworCWxlbmNvZGVyLT5icmlkZ2Uub3BzID0gRFJNX0JSSURHRV9PUF9ERVRFQ1QgfCBEUk1fQlJJ REdFX09QX0VESUQKKwkJCSAgICAgICB8IERSTV9CUklER0VfT1BfTU9ERVM7CisKIAlpZiAoaW5k ZXggPT0gMCkKIAkJbGVuY29kZXItPmJyaWRnZS50eXBlID0gRFJNX01PREVfQ09OTkVDVE9SX1ZH QTsKIAllbHNlIGlmIChpbmRleCA9PSAxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xvb25nc29uX2kyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29u X2kyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWNjNTBjYTNk ZjIyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29u X2kyYy5jCkBAIC0wLDAgKzEsMTkxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vci1sYXRlcgorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIExvb25nc29uIFRl Y2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZAorICovCisKKyNpbmNsdWRlICJsb29uZ3Nvbl9k cnYuaCIKKyNpbmNsdWRlICJsb29uZ3Nvbl9pMmMuaCIKKworc3RhdGljIGlubGluZSB2b2lkIGRj X2dwaW9fc2V0X2RpcihzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LAorCQkJCSAgIHVuc2ln bmVkIGludCBwaW4sIGludCBpbnB1dCkKK3sKKwl1MzIgdGVtcDsKKworCXRlbXAgPSBsczdhX21t X3JyZWcobGRldiwgTFM3QV9EQ19HUElPX0NGR19PRkZTRVQpOworCWlmIChpbnB1dCkKKwkJdGVt cCB8PSAxVUwgPDwgcGluOworCWVsc2UKKwkJdGVtcCAmPSB+KDFVTCA8PCBwaW4pOworCisJbHM3 YV9tbV93cmVnKGxkZXYsIExTN0FfRENfR1BJT19DRkdfT0ZGU0VULCB0ZW1wKTsKK30KKworc3Rh dGljIHZvaWQgZGNfZ3Bpb19zZXRfdmFsKHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYsIHVu c2lnbmVkIGludCBwaW4sCisJCQkgICAgaW50IGhpZ2gpCit7CisJdTMyIHRlbXA7CisKKwl0ZW1w ID0gbHM3YV9tbV9ycmVnKGxkZXYsIExTN0FfRENfR1BJT19PVVRfT0ZGU0VUKTsKKwlpZiAoaGln aCkKKwkJdGVtcCB8PSAxVUwgPDwgcGluOworCWVsc2UKKwkJdGVtcCAmPSB+KDFVTCA8PCBwaW4p OworCisJbHM3YV9tbV93cmVnKGxkZXYsIExTN0FfRENfR1BJT19PVVRfT0ZGU0VULCB0ZW1wKTsK K30KKworc3RhdGljIHZvaWQgbG9vbmdzb25faTJjX3NldF9kYXRhKHZvaWQgKmkyYywgaW50IHZh bHVlKQoreworCXN0cnVjdCBsb29uZ3Nvbl9pMmMgKmxpMmMgPSBpMmM7CisJc3RydWN0IGxvb25n c29uX2RldmljZSAqbGRldiA9IGxpMmMtPmxkZXY7CisJdW5zaWduZWQgaW50IHBpbiA9IGxpMmMt PmRhdGE7CisKKwlpZiAodmFsdWUpCisJCWRjX2dwaW9fc2V0X2RpcihsZGV2LCBwaW4sIDEpOwor CWVsc2UgeworCQlkY19ncGlvX3NldF92YWwobGRldiwgcGluLCAwKTsKKwkJZGNfZ3Bpb19zZXRf ZGlyKGxkZXYsIHBpbiwgMCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBsb29uZ3Nvbl9pMmNfc2V0 X2Nsb2NrKHZvaWQgKmkyYywgaW50IHZhbHVlKQoreworCXN0cnVjdCBsb29uZ3Nvbl9pMmMgKmxp MmMgPSBpMmM7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiA9IGxpMmMtPmxkZXY7CisJ dW5zaWduZWQgaW50IHBpbiA9IGxpMmMtPmNsb2NrOworCisJaWYgKHZhbHVlKQorCQlkY19ncGlv X3NldF9kaXIobGRldiwgcGluLCAxKTsKKwllbHNlIHsKKwkJZGNfZ3Bpb19zZXRfdmFsKGxkZXYs IHBpbiwgMCk7CisJCWRjX2dwaW9fc2V0X2RpcihsZGV2LCBwaW4sIDApOworCX0KK30KKworc3Rh dGljIGludCBsb29uZ3Nvbl9pMmNfZ2V0X2RhdGEodm9pZCAqaTJjKQoreworCWludCB2YWw7CisJ c3RydWN0IGxvb25nc29uX2kyYyAqbGkyYyA9IGkyYzsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNl ICpsZGV2ID0gbGkyYy0+bGRldjsKKwl1bnNpZ25lZCBpbnQgcGluID0gbGkyYy0+ZGF0YTsKKwor CXZhbCA9IGxzN2FfbW1fcnJlZyhsZGV2LCBMUzdBX0RDX0dQSU9fSU5fT0ZGU0VUKTsKKworCXJl dHVybiAodmFsID4+IHBpbikgJiAxOworfQorCitzdGF0aWMgaW50IGxvb25nc29uX2kyY19nZXRf Y2xvY2sodm9pZCAqaTJjKQoreworCWludCB2YWw7CisJc3RydWN0IGxvb25nc29uX2kyYyAqbGky YyA9IGkyYzsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2ID0gbGkyYy0+bGRldjsKKwl1 bnNpZ25lZCBpbnQgcGluID0gbGkyYy0+Y2xvY2s7CisKKwl2YWwgPSBsczdhX21tX3JyZWcobGRl diwgTFM3QV9EQ19HUElPX0lOX09GRlNFVCk7CisKKwlyZXR1cm4gKHZhbCA+PiBwaW4pICYgMTsK K30KKworc3RhdGljIGludCBsb29uZ3Nvbl9pMmNfY3JlYXRlKHN0cnVjdCBsb29uZ3Nvbl9kZXZp Y2UgKmxkZXYsCisJCQkgICAgICAgc3RydWN0IGxvb25nc29uX2kyYyAqbGkyYywgY29uc3QgY2hh ciAqbmFtZSkKK3sKKwlpbnQgcmV0OworCXVuc2lnbmVkIGludCBpMmNfbnVtOworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSAmbGRldi0+ZGV2OworCXN0cnVjdCBpMmNfY2xpZW50ICppMmNfY2xp OworCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXB0ZXI7CisJc3RydWN0IGkyY19hbGdvX2Jp dF9kYXRhICppMmNfYWxnb19kYXRhOworCWNvbnN0IHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBpMmNf aW5mbyA9IHsKKwkJLnR5cGUgPSAiZGRjLWRldiIsCisJCS5hZGRyID0gRERDX0FERFIsCisJCS5m bGFncyA9IEkyQ19DTEFTU19EREMsCisJfTsKKworCWkyY19udW0gPSBsaTJjLT5pMmNfaWQ7CisJ aTJjX2FkYXB0ZXIgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqaTJjX2FkYXB0ZXIp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWkyY19hZGFwdGVyKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWkyY19hbGdvX2RhdGEgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqaTJjX2FsZ29f ZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghaTJjX2FsZ29fZGF0YSkgeworCQlyZXQgPSAtRU5P TUVNOworCQlnb3RvIGZyZWVfYWRhcHRlcjsKKwl9CisKKwlpMmNfYWRhcHRlci0+b3duZXIgPSBU SElTX01PRFVMRTsKKwlpMmNfYWRhcHRlci0+Y2xhc3MgPSBJMkNfQ0xBU1NfRERDOworCWkyY19h ZGFwdGVyLT5hbGdvX2RhdGEgPSBpMmNfYWxnb19kYXRhOworCWkyY19hZGFwdGVyLT5kZXYucGFy ZW50ID0gZGV2LT5kZXY7CisJaTJjX2FkYXB0ZXItPm5yID0gLTE7CisJc25wcmludGYoaTJjX2Fk YXB0ZXItPm5hbWUsIHNpemVvZihpMmNfYWRhcHRlci0+bmFtZSksICIlcyVkIiwKKwkJIG5hbWUs IGkyY19udW0pOworCisJbGkyYy0+ZGF0YSA9IGkyY19udW0gKiAyOworCWxpMmMtPmNsb2NrID0g aTJjX251bSAqIDIgKyAxOworCURSTV9JTkZPKCJDcmVhdGVkIGkyYy0lZCwgc2RhPSVkLCBzY2w9 JWRcbiIsCisJCSBpMmNfbnVtLCBsaTJjLT5kYXRhLCBsaTJjLT5jbG9jayk7CisKKwlpMmNfYWxn b19kYXRhLT5zZXRzZGEgPSBsb29uZ3Nvbl9pMmNfc2V0X2RhdGE7CisJaTJjX2FsZ29fZGF0YS0+ c2V0c2NsID0gbG9vbmdzb25faTJjX3NldF9jbG9jazsKKwlpMmNfYWxnb19kYXRhLT5nZXRzZGEg PSBsb29uZ3Nvbl9pMmNfZ2V0X2RhdGE7CisJaTJjX2FsZ29fZGF0YS0+Z2V0c2NsID0gbG9vbmdz b25faTJjX2dldF9jbG9jazsKKwlpMmNfYWxnb19kYXRhLT51ZGVsYXkgPSBEQ19JMkNfVE9OOwor CWkyY19hbGdvX2RhdGEtPnRpbWVvdXQgPSB1c2Vjc190b19qaWZmaWVzKDIyMDApOworCisJcmV0 ID0gaTJjX2JpdF9hZGRfbnVtYmVyZWRfYnVzKGkyY19hZGFwdGVyKTsKKwlpZiAocmV0KQorCQln b3RvIGZyZWVfYWxnb19kYXRhOworCisJbGkyYy0+YWRhcHRlciA9IGkyY19hZGFwdGVyOworCWky Y19hbGdvX2RhdGEtPmRhdGEgPSBsaTJjOworCWkyY19zZXRfYWRhcGRhdGEobGkyYy0+YWRhcHRl ciwgbGkyYyk7CisJbGkyYy0+bGRldiA9IGxkZXY7CisJRFJNX0lORk8oIlJlZ2lzdGVyIGkyYyBh bGdvLWJpdCBhZGFwdGVyIFslc11cbiIsIGkyY19hZGFwdGVyLT5uYW1lKTsKKworCWkyY19jbGkg PSBpMmNfbmV3X2NsaWVudF9kZXZpY2UoaTJjX2FkYXB0ZXIsICZpMmNfaW5mbyk7CisJaWYgKElT X0VSUihpMmNfY2xpKSkgeworCQlyZXQgPSBQVFJfRVJSKGkyY19jbGkpOworCQlnb3RvIHJlbW92 ZV9pMmNfYWRhcHRlcjsKKwl9CisKKwlyZXR1cm4gMDsKKworcmVtb3ZlX2kyY19hZGFwdGVyOgor CWRybV9lcnIoZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBpMmMgY2xpZW50XG4iKTsKKwlpMmNfZGVs X2FkYXB0ZXIoaTJjX2FkYXB0ZXIpOworZnJlZV9hbGdvX2RhdGE6CisJZHJtX2VycihkZXYsICJG YWlsZWQgdG8gcmVnaXN0ZXIgaTJjIGFkYXB0ZXIgJXNcbiIsIGkyY19hZGFwdGVyLT5uYW1lKTsK KwlrZnJlZShpMmNfYWxnb19kYXRhKTsKK2ZyZWVfYWRhcHRlcjoKKwlrZnJlZShpMmNfYWRhcHRl cik7CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgbG9vbmdzb25fZGNfZ3Bpb19pbml0KHN0cnVj dCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYpCit7CisJaW50IHBpbjsKKworCS8qIHNldCBncGlvIGRp ciBvdXRwdXQgMC0zICovCisJZm9yIChwaW4gPSAwOyBwaW4gPCA0OyBwaW4rKykgeworCQlkY19n cGlvX3NldF92YWwobGRldiwgcGluLCAwKTsKKwkJZGNfZ3Bpb19zZXRfZGlyKGxkZXYsIHBpbiwg MCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBsb29uZ3Nvbl9pMmNfaW5pdChzdHJ1Y3Qg bG9vbmdzb25fZGV2aWNlICpsZGV2KQoreworCWludCByZXQ7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgMjsgaSsrKSB7CisJCWxkZXYtPmkyY19idXNbMV0uaTJjX2lkID0gaTsKKwkJcmV0 ID0gbG9vbmdzb25faTJjX2NyZWF0ZShsZGV2LCAmbGRldi0+aTJjX2J1c1tpXSwgRENfSTJDX05B TUUpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9pMmMuaCBiL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9pMmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjk5NDRjODM4ZDNlNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9pMmMuaApAQCAtMCwwICsxLDMzIEBACisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogQ29weXJpZ2h0 IChDKSAyMDIwLTIwMjIgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCisg Ki8KKworI2lmbmRlZiBfX0xPT05HU09OX0kyQ19IX18KKyNkZWZpbmUgX19MT09OR1NPTl9JMkNf SF9fCisKKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMtYWxnby1i aXQuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgorCisjZGVmaW5lIERDX0kyQ19UT04g NQorI2RlZmluZSBEQ19JMkNfTkFNRSAibHNfZGNfaTJjIgorI2RlZmluZSBEQ19NQVhfSTJDX0JV UyAyCisKKyNkZWZpbmUgTFM3QV9EQ19HUElPX0NGR19PRkZTRVQgKDB4MTY2MCkKKyNkZWZpbmUg TFM3QV9EQ19HUElPX0lOX09GRlNFVCAoMHgxNjUwKQorI2RlZmluZSBMUzdBX0RDX0dQSU9fT1VU X09GRlNFVCAoMHgxNjUwKQorCitzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlOworc3RydWN0IGxvb25n c29uX2kyYyB7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldjsKKwlzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXI7CisJdTMyIGRhdGE7CisJdTMyIGNsb2NrOworCXUzMiBpMmNfaWQ7Cit9 OworCitpbnQgbG9vbmdzb25faTJjX2luaXQoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldik7 CisKKyNlbmRpZiAvKiBfX0xPT05HU09OX0kyQ19IX18gKi8KLS0gCjIuMjUuMQoNCg0K5pys6YKu 5Lu25Y+K5YW26ZmE5Lu25ZCr5pyJ6b6Z6Iqv5Lit56eR55qE5ZWG5Lia56eY5a+G5L+h5oGv77yM 5LuF6ZmQ5LqO5Y+R6YCB57uZ5LiK6Z2i5Zyw5Z2A5Lit5YiX5Ye655qE5Liq5Lq65oiW576k57uE 44CC56aB5q2i5Lu75L2V5YW25LuW5Lq65Lul5Lu75L2V5b2i5byP5L2/55So77yI5YyF5ous5L2G 5LiN6ZmQ5LqO5YWo6YOo5oiW6YOo5YiG5Zyw5rOE6Zyy44CB5aSN5Yi25oiW5pWj5Y+R77yJ5pys 6YKu5Lu25Y+K5YW26ZmE5Lu25Lit55qE5L+h5oGv44CC5aaC5p6c5oKo6ZSZ5pS25pys6YKu5Lu2 77yM6K+35oKo56uL5Y2z55S16K+d5oiW6YKu5Lu26YCa55+l5Y+R5Lu25Lq65bm25Yig6Zmk5pys 6YKu5Lu244CCIA0KVGhpcyBlbWFpbCBhbmQgaXRzIGF0dGFjaG1lbnRzIGNvbnRhaW4gY29uZmlk ZW50aWFsIGluZm9ybWF0aW9uIGZyb20gTG9vbmdzb24gVGVjaG5vbG9neSAsIHdoaWNoIGlzIGlu dGVuZGVkIG9ubHkgZm9yIHRoZSBwZXJzb24gb3IgZW50aXR5IHdob3NlIGFkZHJlc3MgaXMgbGlz dGVkIGFib3ZlLiBBbnkgdXNlIG9mIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlu IGFueSB3YXkgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCB0b3RhbCBvciBwYXJ0aWFs IGRpc2Nsb3N1cmUsIHJlcHJvZHVjdGlvbiBvciBkaXNzZW1pbmF0aW9uKSBieSBwZXJzb25zIG90 aGVyIHRoYW4gdGhlIGludGVuZGVkIHJlY2lwaWVudChzKSBpcyBwcm9oaWJpdGVkLiBJZiB5b3Ug cmVjZWl2ZSB0aGlzIGVtYWlsIGluIGVycm9yLCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgYnkg cGhvbmUgb3IgZW1haWwgaW1tZWRpYXRlbHkgYW5kIGRlbGV0ZSBpdC4g