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 X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63982C5519F for ; Mon, 30 Nov 2020 08:25:54 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F149720719 for ; Mon, 30 Nov 2020 08:25:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A7GdB+Xm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F149720719 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A2DB76E44B; Mon, 30 Nov 2020 08:25:52 +0000 (UTC) Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id CFD946E3FE for ; Mon, 30 Nov 2020 06:25:05 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id e25so3777203wme.0 for ; Sun, 29 Nov 2020 22:25:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TxMFwICoqSoDfQzs3jsqy5jI9KXugvjuOIUzoSPn7sw=; b=A7GdB+XmGvEzsBqjN4TuDQ4BAz4McGHtf9o14xUS9Lo9pOxRzd6JBsMCX+EZ0PEegd McAE52SdaPDlU8YaJA7PTexgknlWHd5kwc8uVDbec+rUNWEoIPpWb7UVMtyuqmPbxDAZ zAv1Ghphvl7iyl6SmKFKFmGfBy2vp/SI2D+qBQcxuhFbFc0VqAWj8OTWsu2CEqtcQ/7Q jL1wfBIdYWJb6HQJHy5gpY4LxGfF9M6TANvR23TlBNNTztwAD6vvGrrB5/a/SzUZegO5 4sK/0fvtIiw91p+1ofVtpEM8lAwMJKJxwwx+usri7891VlyrFT4FLjtTyZIMycPHZF/b a/dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TxMFwICoqSoDfQzs3jsqy5jI9KXugvjuOIUzoSPn7sw=; b=KVwFVjfPr/gLsCyTjQr7kfPRphCmcPVYSG6kjj5qHipC7GCVpNoWumrWozGnP4PT3z 8R4qr8sFT13OmcEd/qQeGw7D5dzz7kCMzDvfMo+sjagsbMx6rdgGFD5YKIjUOrQWYpmT TQuPsEa1tEReMqkueFzT1Pkd7ty1jjcp0MMygKXsGO/tBS9gL5SQEKVG0JAusOLo7uwK FbNIGUSy3xBqWI7pNEYhpi/NOULcaDlXLjfA27U2FhMb8wi7pY2mcd+Rg577Si2iSNNJ 0RrYZgbRtjaK5uRrrHLHJZKWiN9UCd9/Tw2PNzWFcezGF22nElRfBFxp3KL1kVV6vs0Y dHvQ== X-Gm-Message-State: AOAM533WKFHQrnSGnIiH5OJIAXXmLy26OOaNKGfemQOKNT68sdpAsIZe Vy2KCUpSdNvZNQNDcUUshKc= X-Google-Smtp-Source: ABdhPJwsaUtx3oZEoda71t6ADAtaO2e6AlTmsPUVWfRVODhkEePUvL9VTefw5IXXFIaeoUVK8DMzHw== X-Received: by 2002:a7b:c145:: with SMTP id z5mr21371777wmi.164.1606717504463; Sun, 29 Nov 2020 22:25:04 -0800 (PST) Received: from rum-mikhail-dt.world.mentorg.com (nat-rum.mentorg.com. [139.181.33.34]) by smtp.gmail.com with ESMTPSA id u129sm22594649wme.9.2020.11.29.22.25.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Nov 2020 22:25:04 -0800 (PST) From: mdurnev@gmail.com X-Google-Original-From: mikhail_durnev@mentor.com To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, noralf@tronnes.org Subject: [PATCH v1 2/3] drm/tiny: Add driver for ili9341 with parallel bus Date: Mon, 30 Nov 2020 16:23:58 +1000 Message-Id: <1606717439-18383-3-git-send-email-mikhail_durnev@mentor.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1606717439-18383-1-git-send-email-mikhail_durnev@mentor.com> References: <1606717439-18383-1-git-send-email-mikhail_durnev@mentor.com> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 30 Nov 2020 08:25:11 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mikhail_durnev@mentor.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogTWlraGFpbCBEdXJuZXYgPG1pa2hhaWxfZHVybmV2QG1lbnRvci5jb20+CgpNUkIyODAx IGRpc3BsYXkgbW9kdWxlIFsxXSBpcyBhbiBleGFtcGxlIG9mIElMSTkzNDEgZGlzcGxheSB0aGF0 IGNvbm5lY3RzIHRvCkludGVsIDgwODAgcGFyYWxsZWwgYnVzLiBJdHMgY29ubmVjdG9yIGlzIGNv bXBhdGlibGUgd2l0aCB0aGUgQUxJRU5URUsgU1RNMzIKZGV2ZWxvcG1lbnQgYm9hcmQuCgpJdCBj YW4gYmUgdXNlZCB3aXRoIHRoZSBkcm0vbWlwaS1kYmkgYnVzIGRyaXZlciBpZiB0aGUgYnVzIGlz IGVtdWxhdGVkIHdpdGgKR1BJTy4KClsxXSBodHRwOi8vd3d3LmxjZHdpa2kuY29tLzIuOGluY2hf MTZCSVRfTW9kdWxlX0lMSTkzNDFfU0tVOk1SQjI4MDEKClNpZ25lZC1vZmYtYnk6IE1pa2hhaWwg RHVybmV2IDxtaWtoYWlsX2R1cm5ldkBtZW50b3IuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS90 aW55L0tjb25maWcgICAgICAgIHwgIDEzICsrCiBkcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmls ZSAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MzQxX2dwaW8uYyB8IDI5 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MzA0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGlu eS9pbGk5MzQxX2dwaW8uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnCmluZGV4IDJiNjQxNGYuLmU0OGUyNjgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWcKKysrIGIvZHJpdmVycy9n cHUvZHJtL3RpbnkvS2NvbmZpZwpAQCAtNjYsNiArNjYsMTkgQEAgY29uZmlnIFRJTllEUk1fSUxJ OTM0MQogCiAJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaWxp OTM0MS4KIAorY29uZmlnIFRJTllEUk1fSUxJOTM0MV9HUElPCisJdHJpc3RhdGUgIkRSTSBzdXBw b3J0IGZvciBJTEk5MzQxIGRpc3BsYXkgcGFuZWxzIHdpdGggcGFyYWxsZWwgYnVzIGludGVyZmFj ZSBvdmVyIEdQSU8iCisJZGVwZW5kcyBvbiBEUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlz ZWxlY3QgRFJNX0tNU19DTUFfSEVMUEVSCisJc2VsZWN0IERSTV9NSVBJX0RCSQorCXNlbGVjdCBC QUNLTElHSFRfQ0xBU1NfREVWSUNFCisJaGVscAorCSAgRFJNIGRyaXZlciBmb3IgdGhlIGZvbGxv d2luZyBJbGl0ZWsgSUxJOTM0MSBwYW5lbHM6CisJICAqIE1SQjI4MDEgMi44IiAyNDB4MzIwIFRG VAorCisJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaWxpOTM0 MV9ncGlvLgorCiBjb25maWcgVElOWURSTV9JTEk5NDg2CiAJdHJpc3RhdGUgIkRSTSBzdXBwb3J0 IGZvciBJTEk5NDg2IGRpc3BsYXkgcGFuZWxzIgogCWRlcGVuZHMgb24gRFJNICYmIFNQSQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v dGlueS9NYWtlZmlsZQppbmRleCA2YWU0ZTllNS4uMWFkMmMwZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZp bGUKQEAgLTUsNiArNSw3IEBAIG9iai0kKENPTkZJR19EUk1fR00xMlUzMjApCQkrPSBnbTEydTMy MC5vCiBvYmotJChDT05GSUdfVElOWURSTV9IWDgzNTdEKQkJKz0gaHg4MzU3ZC5vCiBvYmotJChD T05GSUdfVElOWURSTV9JTEk5MjI1KQkJKz0gaWxpOTIyNS5vCiBvYmotJChDT05GSUdfVElOWURS TV9JTEk5MzQxKQkJKz0gaWxpOTM0MS5vCitvYmotJChDT05GSUdfVElOWURSTV9JTEk5MzQxX0dQ SU8pCSs9IGlsaTkzNDFfZ3Bpby5vCiBvYmotJChDT05GSUdfVElOWURSTV9JTEk5NDg2KQkJKz0g aWxpOTQ4Ni5vCiBvYmotJChDT05GSUdfVElOWURSTV9NSTAyODNRVCkJCSs9IG1pMDI4M3F0Lm8K IG9iai0kKENPTkZJR19USU5ZRFJNX1JFUEFQRVIpCQkrPSByZXBhcGVyLm8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS90aW55L2lsaTkzNDFfZ3Bpby5jIGIvZHJpdmVycy9ncHUvZHJtL3Rp bnkvaWxpOTM0MV9ncGlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4 YTYzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MzQxX2dw aW8uYwpAQCAtMCwwICsxLDI5MCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjArCisvKgorICogRFJNIGRyaXZlciBmb3IgSWxpdGVrIElMSTkzNDEgcGFuZWxzIHdpdGggcGFy YWxsZWwgYnVzIGludGVyZmFjZQorICoKKyAqIENvcHlyaWdodCAyMDIwIE1pa2hhaWwgRHVybmV2 IDxtaWtoYWlsX2R1cm5ldkBtZW50b3IuY29tPgorICoKKyAqIEJhc2VkIG9uIGlsaTkzNDEuYzoK KyAqIENvcHlyaWdodCAyMDE4IERhdmlkIExlY2huZXIgPGRhdmlkQGxlY2hub2xvZ3kuY29tPgor ICoKKyAqIEJhc2VkIG9uIG1pMDI4M3F0LmM6CisgKiBDb3B5cmlnaHQgMjAxNiBOb3JhbGYgVHLD uG5uZXMKKyAqLworCisjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+CisjaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvcHJvcGVydHkuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxw ZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2Ri aS5oPgorI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxwZXIuaD4KKyNpbmNsdWRlIDx2aWRl by9taXBpX2Rpc3BsYXkuaD4KKworI2RlZmluZSBJTEk5MzQxX0ZSTUNUUjEJCTB4YjEKKyNkZWZp bmUgSUxJOTM0MV9ESVNDVFJMCQkweGI2CisjZGVmaW5lIElMSTkzNDFfRVRNT0QJCTB4YjcKKwor I2RlZmluZSBJTEk5MzQxX1BXQ1RSTDEJCTB4YzAKKyNkZWZpbmUgSUxJOTM0MV9QV0NUUkwyCQkw eGMxCisjZGVmaW5lIElMSTkzNDFfVk1DVFJMMQkJMHhjNQorI2RlZmluZSBJTEk5MzQxX1ZNQ1RS TDIJCTB4YzcKKyNkZWZpbmUgSUxJOTM0MV9QV0NUUkxBCQkweGNiCisjZGVmaW5lIElMSTkzNDFf UFdDVFJMQgkJMHhjZgorCisjZGVmaW5lIElMSTkzNDFfUEdBTUNUUkwJMHhlMAorI2RlZmluZSBJ TEk5MzQxX05HQU1DVFJMCTB4ZTEKKyNkZWZpbmUgSUxJOTM0MV9EVENUUkxBCQkweGU4CisjZGVm aW5lIElMSTkzNDFfRFRDVFJMQgkJMHhlYQorI2RlZmluZSBJTEk5MzQxX1BXUlNFUQkJMHhlZAor CisjZGVmaW5lIElMSTkzNDFfRU4zR0FNCQkweGYyCisjZGVmaW5lIElMSTkzNDFfUFVNUENUUkwJ MHhmNworCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX0JHUglCSVQoMykKKyNkZWZpbmUgSUxJOTM0 MV9NQURDVExfTVYJQklUKDUpCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01YCUJJVCg2KQorI2Rl ZmluZSBJTEk5MzQxX01BRENUTF9NWQlCSVQoNykKKworc3RhdGljIHZvaWQgeXgyNDBxdjI5X2Vu YWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCisJCQkgICAgIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJc3RydWN0IG1pcGlfZGJpX2RldiAqZGJpZGV2ID0gZHJt X3RvX21pcGlfZGJpX2RldihwaXBlLT5jcnRjLmRldik7CisJc3RydWN0IG1pcGlfZGJpICpkYmkg PSAmZGJpZGV2LT5kYmk7CisJdTggYWRkcl9tb2RlOworCWludCByZXQsIGlkeDsKKworCWlmICgh ZHJtX2Rldl9lbnRlcihwaXBlLT5jcnRjLmRldiwgJmlkeCkpCisJCXJldHVybjsKKworCURSTV9E RUJVR19LTVMoIlxuIik7CisKKwlyZXQgPSBtaXBpX2RiaV9wb3dlcm9uX2NvbmRpdGlvbmFsX3Jl c2V0KGRiaWRldik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0X2V4aXQ7CisJaWYgKHJldCA9 PSAxKQorCQlnb3RvIG91dF9lbmFibGU7CisKKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgTUlQSV9E Q1NfU0VUX0RJU1BMQVlfT0ZGKTsKKworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQxX1BX Q1RSTEIsIDB4MDAsIDB4YzEsIDB4MzApOworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQx X1BXUlNFUSwgMHg2NCwgMHgwMywgMHgxMiwgMHg4MSk7CisJbWlwaV9kYmlfY29tbWFuZChkYmks IElMSTkzNDFfRFRDVFJMQSwgMHg4NSwgMHgwMCwgMHg3OCk7CisJbWlwaV9kYmlfY29tbWFuZChk YmksIElMSTkzNDFfUFdDVFJMQSwgMHgzOSwgMHgyYywgMHgwMCwgMHgzNCwgMHgwMik7CisJbWlw aV9kYmlfY29tbWFuZChkYmksIElMSTkzNDFfUFVNUENUUkwsIDB4MjApOworCW1pcGlfZGJpX2Nv bW1hbmQoZGJpLCBJTEk5MzQxX0RUQ1RSTEIsIDB4MDAsIDB4MDApOworCisJLyogUG93ZXIgQ29u dHJvbCAqLworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQxX1BXQ1RSTDEsIDB4MjMpOwor CW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQxX1BXQ1RSTDIsIDB4MTApOworCS8qIFZDT00g Ki8KKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTM0MV9WTUNUUkwxLCAweDNlLCAweDI4KTsK KwltaXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTM0MV9WTUNUUkwyLCAweDg2KTsKKworCS8qIE1l bW9yeSBBY2Nlc3MgQ29udHJvbCAqLworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBNSVBJX0RDU19T RVRfUElYRUxfRk9STUFULCBNSVBJX0RDU19QSVhFTF9GTVRfMTZCSVQpOworCisJLyogRnJhbWUg UmF0ZSAqLworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQxX0ZSTUNUUjEsIDB4MDAsIDB4 MWIpOworCisJLyogR2FtbWEgKi8KKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTM0MV9FTjNH QU0sIDB4MDApOworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBNSVBJX0RDU19TRVRfR0FNTUFfQ1VS VkUsIDB4MDEpOworCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBJTEk5MzQxX1BHQU1DVFJMLAorCQkJ IDB4MGYsIDB4MzEsIDB4MmIsIDB4MGMsIDB4MGUsIDB4MDgsIDB4NGUsIDB4ZjEsCisJCQkgMHgz NywgMHgwNywgMHgxMCwgMHgwMywgMHgwZSwgMHgwOSwgMHgwMCk7CisJbWlwaV9kYmlfY29tbWFu ZChkYmksIElMSTkzNDFfTkdBTUNUUkwsCisJCQkgMHgwMCwgMHgwZSwgMHgxNCwgMHgwMywgMHgx MSwgMHgwNywgMHgzMSwgMHhjMSwKKwkJCSAweDQ4LCAweDA4LCAweDBmLCAweDBjLCAweDMxLCAw eDM2LCAweDBmKTsKKworCS8qIEREUkFNICovCisJbWlwaV9kYmlfY29tbWFuZChkYmksIElMSTkz NDFfRVRNT0QsIDB4MDcpOworCisJLyogRGlzcGxheSAqLworCW1pcGlfZGJpX2NvbW1hbmQoZGJp LCBJTEk5MzQxX0RJU0NUUkwsIDB4MDgsIDB4ODIsIDB4MjcsIDB4MDApOworCW1pcGlfZGJpX2Nv bW1hbmQoZGJpLCBNSVBJX0RDU19FWElUX1NMRUVQX01PREUpOworCW1zbGVlcCgxMDApOworCisJ bWlwaV9kYmlfY29tbWFuZChkYmksIE1JUElfRENTX1NFVF9ESVNQTEFZX09OKTsKKwltc2xlZXAo MTAwKTsKKworb3V0X2VuYWJsZToKKwlzd2l0Y2ggKGRiaWRldi0+cm90YXRpb24pIHsKKwlkZWZh dWx0OgorCQlhZGRyX21vZGUgPSBJTEk5MzQxX01BRENUTF9NWDsKKwkJYnJlYWs7CisJY2FzZSA5 MDoKKwkJYWRkcl9tb2RlID0gSUxJOTM0MV9NQURDVExfTVY7CisJCWJyZWFrOworCWNhc2UgMTgw OgorCQlhZGRyX21vZGUgPSBJTEk5MzQxX01BRENUTF9NWTsKKwkJYnJlYWs7CisJY2FzZSAyNzA6 CisJCWFkZHJfbW9kZSA9IElMSTkzNDFfTUFEQ1RMX01WIHwgSUxJOTM0MV9NQURDVExfTVkgfAor CQkJICAgIElMSTkzNDFfTUFEQ1RMX01YOworCQlicmVhazsKKwl9CisJYWRkcl9tb2RlIHw9IElM STkzNDFfTUFEQ1RMX0JHUjsKKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgTUlQSV9EQ1NfU0VUX0FE RFJFU1NfTU9ERSwgYWRkcl9tb2RlKTsKKwltaXBpX2RiaV9lbmFibGVfZmx1c2goZGJpZGV2LCBj cnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CitvdXRfZXhpdDoKKwlkcm1fZGV2X2V4aXQoaWR4KTsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBp bGk5MzQxZ3Bpb19waXBlX2Z1bmNzID0geworCS5lbmFibGUgPSB5eDI0MHF2MjlfZW5hYmxlLAor CS5kaXNhYmxlID0gbWlwaV9kYmlfcGlwZV9kaXNhYmxlLAorCS51cGRhdGUgPSBtaXBpX2RiaV9w aXBlX3VwZGF0ZSwKKwkucHJlcGFyZV9mYiA9IGRybV9nZW1fZmJfc2ltcGxlX2Rpc3BsYXlfcGlw ZV9wcmVwYXJlX2ZiLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl IHl4MjQwcXYyOV9tb2RlID0geworCURSTV9TSU1QTEVfTU9ERSgyNDAsIDMyMCwgMzcsIDQ5KSwK K307CisKK0RFRklORV9EUk1fR0VNX0NNQV9GT1BTKGlsaTkzNDFncGlvX2ZvcHMpOworCitzdGF0 aWMgc3RydWN0IGRybV9kcml2ZXIgaWxpOTM0MWdwaW9fZHJpdmVyID0geworCS5kcml2ZXJfZmVh dHVyZXMJPSBEUklWRVJfR0VNIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDLAorCS5m b3BzCQkJPSAmaWxpOTM0MWdwaW9fZm9wcywKKwkucmVsZWFzZQkJPSBtaXBpX2RiaV9yZWxlYXNl LAorCURSTV9HRU1fQ01BX1ZNQVBfRFJJVkVSX09QUywKKwkuZGVidWdmc19pbml0CQk9IG1pcGlf ZGJpX2RlYnVnZnNfaW5pdCwKKwkubmFtZQkJCT0gImlsaTkzNDFncGlvIiwKKwkuZGVzYwkJCT0g IklsaXRlayBJTEk5MzQxIiwKKwkuZGF0ZQkJCT0gIjIwMjAxMTE0IiwKKwkubWFqb3IJCQk9IDEs CisJLm1pbm9yCQkJPSAwLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg aWxpOTM0MWdwaW9fb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInJvbmJvLG1yYjI4 MDEiIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaWxpOTM0MWdwaW9fb2Zf bWF0Y2gpOworCitzdGF0aWMgaW50IGlsaTkzNDFncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1 Y3QgbWlwaV9kYmlfZGV2ICpkYmlkZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlzdHJ1 Y3QgbWlwaV9kYmkgKmRiaTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpkYzsKKwlzdHJ1Y3QgZ3Bpb19k ZXNjICp3cjsKKwlzdHJ1Y3QgZ3Bpb19kZXNjcyAqZGI7CisJdTMyIHJvdGF0aW9uID0gMDsKKwl1 MzIgd3JfZGVsYXlzWzJdID0gezE1LCA2MH07CisJaW50IHJldDsKKworCWRiaWRldiA9IGt6YWxs b2Moc2l6ZW9mKCpkYmlkZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRiaWRldikKKwkJcmV0dXJu IC1FTk9NRU07CisKKwlkYmkgPSAmZGJpZGV2LT5kYmk7CisJZHJtID0gJmRiaWRldi0+ZHJtOwor CXJldCA9IGRldm1fZHJtX2Rldl9pbml0KGRldiwgZHJtLCAmaWxpOTM0MWdwaW9fZHJpdmVyKTsK KwlpZiAocmV0KSB7CisJCWtmcmVlKGRiaWRldik7CisJCXJldHVybiByZXQ7CisJfQorCisJZHJt X21vZGVfY29uZmlnX2luaXQoZHJtKTsKKworCWRiaS0+cmVzZXQgPSBkZXZtX2dwaW9kX2dldF9v cHRpb25hbChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGRiaS0+ cmVzZXQpKSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdyZXNl dCdcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkYmktPnJlc2V0KTsKKwl9CisKKwlkYyA9IGRldm1f Z3Bpb2RfZ2V0KGRldiwgImRjIiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIoZGMpKSB7 CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdkYydcbiIpOworCQly ZXR1cm4gUFRSX0VSUihkYyk7CisJfQorCisJd3IgPSBkZXZtX2dwaW9kX2dldChkZXYsICJ3ciIs IEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHdyKSkgeworCQlEUk1fREVWX0VSUk9SKGRl diwgIkZhaWxlZCB0byBnZXQgZ3BpbyAnd3InXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIod3IpOwor CX0KKworCWRiID0gZGV2bV9ncGlvZF9nZXRfYXJyYXkoZGV2LCAiZGIiLCBHUElPRF9PVVRfTE9X KTsKKwlpZiAoSVNfRVJSKGRiKSkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgIkZhaWxlZCB0byBn ZXQgZ3BpbyAnZGInXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZGIpOworCX0KKwlpZiAoZGItPm5k ZXNjcyAhPSAxNiAmJiBkYi0+bmRlc2NzICE9IDgpIHsKKwkJLyoKKwkJICogVGhlIGRhdGEgYnVz IGNhbiBiZSBlaXRoZXIgOCBvciAxNiBiaXRzIHdpZGUuCisJCSAqIElMSTkzNDEgY2FuIHdvcmsg d2l0aCA2LCA4LCA5LCAxNiwgYW5kIDE4LWJpdCBwYXJhbGxlbCBpbnRlcmZhY2VzLAorCQkgKiBi dXQgdGhlIE1SQjI4MDEgYm9hcmQgc3VwcG9ydHMgb25seSA4IG9yIDE2LWJpdCBpbnRlcmZhY2Vz LgorCQkgKi8KKwkJRFJNX0RFVl9FUlJPUihkZXYsICJXcm9uZyBudW1iZXIgb2YgYml0cyBpbiBn cGlvICdkYic6ICV1XG4iLCBkYi0+bmRlc2NzKTsKKwkJcmV0dXJuIFBUUl9FUlIoZGIpOworCX0K KworCWRiaWRldi0+YmFja2xpZ2h0ID0gZGV2bV9vZl9maW5kX2JhY2tsaWdodChkZXYpOworCWlm IChJU19FUlIoZGJpZGV2LT5iYWNrbGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihkYmlkZXYtPmJh Y2tsaWdodCk7CisKKwlkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAicm90YXRpb24iLCAm cm90YXRpb24pOworCisJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5KGRldiwgIndyLXVw LWRvd24tZGVsYXlzIiwgd3JfZGVsYXlzLCAyKTsKKworCXJldCA9IG1pcGlfZGJpX2dwaW9faW5p dChkYmksIGRjLCB3ciwgZGIsIHdyX2RlbGF5c1swXSwgd3JfZGVsYXlzWzFdKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbWlwaV9kYmlfZGV2X2luaXQoZGJpZGV2LCAmaWxp OTM0MWdwaW9fcGlwZV9mdW5jcywgJnl4MjQwcXYyOV9tb2RlLCByb3RhdGlvbik7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOworCisJcmV0 ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcm0pOworCisJZHJtX2ZiZGV2X2dlbmVyaWNf c2V0dXAoZHJtLCAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlsaTkzNDFncGlv X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm0gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWRybV9kZXZfdW5wbHVn KGRybSk7CisJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCBpbGk5MzQxZ3Bpb19zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQoreworCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpKTsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaWxpOTM0 MWdwaW9fcGxhdGZvcm1fZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImlsaTkz NDFncGlvIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gaWxpOTM0MWdwaW9fb2ZfbWF0Y2gsCisJfSwK KwkucHJvYmUgPSBpbGk5MzQxZ3Bpb19wcm9iZSwKKwkucmVtb3ZlID0gaWxpOTM0MWdwaW9fcmVt b3ZlLAorCS5zaHV0ZG93biA9IGlsaTkzNDFncGlvX3NodXRkb3duLAorfTsKK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIoaWxpOTM0MWdwaW9fcGxhdGZvcm1fZHJpdmVyKTsKKworTU9EVUxFX0RFU0NS SVBUSU9OKCJJbGl0ZWsgSUxJOTM0MSA4LzE2LWJpdCBEUk0gZHJpdmVyIik7CitNT0RVTEVfQVVU SE9SKCJNaWtoYWlsIER1cm5ldiA8bWlraGFpbF9kdXJuZXZAbWVudG9yLmNvbT4iKTsKK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK