From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v4 7/7] drm/tinydrm: Add support for Multi-Inno MI0283QT display Date: Sat, 11 Feb 2017 19:48:58 +0100 Message-ID: <20170211184858.26421-8-noralf@tronnes.org> References: <20170211184858.26421-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170211184858.26421-1-noralf@tronnes.org> 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, devicetree@vger.kernel.org Cc: thomas.petazzoni@free-electrons.com, linux-kernel@vger.kernel.org List-Id: devicetree@vger.kernel.org QWRkIGRyaXZlciB0byBzdXBwb3J0IHRoZSBNdWx0aS1Jbm5vIE1JMDI4M1FUIGRpc3BsYXkgcGFu ZWwuCkl0IGhhcyBhbiBJTEk5MzQxIE1JUEkgREJJIGNvbXBhdGlibGUgZGlzcGxheSBjb250cm9s bGVyLgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ CkFja2VkLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotLS0KIE1BSU5U QUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vS2NvbmZpZyAgICB8ICAgOCArKwogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZp bGUgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAyODNxdC5jIHwgMjc5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL3Rpbnlkcm0v aWxpOTM0MS5oICAgICAgfCAgNTQgKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4 M3F0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS90aW55ZHJtL2lsaTkzNDEuaAoK ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMjBiODdlYi4uYmM1 MDJhZSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTQyOTcs NiArNDI5NywxMiBAQCBTOglTdXBwb3J0ZWQKIEY6CWRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay8K IEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21lZGlhdGVrLwog CitEUk0gRFJJVkVSIEZPUiBNSTAyODNRVAorTToJTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJv bm5lcy5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAy ODNxdC5jCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tdWx0 aS1pbm5vLG1pMDI4M3F0LnR4dAorCiBEUk0gRFJJVkVSIEZPUiBNU00gQURSRU5PIEdQVQogTToJ Um9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgogTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtl cm5lbC5vcmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCmluZGV4IGUwMGJjZmMuLjM1MDRjNTMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9n cHUvZHJtL3Rpbnlkcm0vS2NvbmZpZwpAQCAtMTEsMyArMTEsMTEgQEAgbWVudWNvbmZpZyBEUk1f VElOWURSTQogCiBjb25maWcgVElOWURSTV9NSVBJX0RCSQogCXRyaXN0YXRlCisKK2NvbmZpZyBU SU5ZRFJNX01JMDI4M1FUCisJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBNSTAyODNRVCIKKwlk ZXBlbmRzIG9uIERSTV9USU5ZRFJNICYmIFNQSQorCXNlbGVjdCBUSU5ZRFJNX01JUElfREJJCisJ aGVscAorCSAgRFJNIGRyaXZlciBmb3IgdGhlIE11bHRpLUlubm8gTUkwMjgzUVQgZGlzcGxheSBw YW5lbAorCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1pMDI4 M3F0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQppbmRleCBmZTVkNGM2Li43YTM2MDRjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vdGlueWRybS9NYWtlZmlsZQpAQCAtMiwzICsyLDYgQEAgb2JqLSQoQ09ORklHX0RSTV9U SU5ZRFJNKQkJKz0gY29yZS8KIAogIyBDb250cm9sbGVycwogb2JqLSQoQ09ORklHX1RJTllEUk1f TUlQSV9EQkkpCQkrPSBtaXBpLWRiaS5vCisKKyMgRGlzcGxheXMKK29iai0kKENPTkZJR19USU5Z RFJNX01JMDI4M1FUKQkJKz0gbWkwMjgzcXQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3Rpbnlkcm0vbWkwMjgzcXQuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI5ZmU4NgotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmMKQEAgLTAsMCArMSwyNzkg QEAKKy8qCisgKiBEUk0gZHJpdmVyIGZvciBNdWx0aS1Jbm5vIE1JMDI4M1FUIHBhbmVscworICoK KyAqIENvcHlyaWdodCAyMDE2IE5vcmFsZiBUcsO4bm5lcworICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS90aW55ZHJtL2lsaTkzNDEuaD4KKyNpbmNs dWRlIDxkcm0vdGlueWRybS9taXBpLWRiaS5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJtL3Rpbnlk cm0taGVscGVycy5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgv Z3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxp bnV4L3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cisj aW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5o PgorCitzdGF0aWMgaW50IG1pMDI4M3F0X2luaXQoc3RydWN0IG1pcGlfZGJpICptaXBpKQorewor CXN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldiA9ICZtaXBpLT50aW55ZHJtOworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHRkZXYtPmRybS0+ZGV2OworCXU4IGFkZHJfbW9kZTsKKwlpbnQgcmV0Owor CisJRFJNX0RFQlVHX0tNUygiXG4iKTsKKworCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUobWlwaS0+ cmVndWxhdG9yKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJs ZSByZWd1bGF0b3IgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogQXZvaWQg ZmxpY2tlciBieSBza2lwcGluZyBzZXR1cCBpZiB0aGUgYm9vdGxvYWRlciBoYXMgZG9uZSBpdCAq LworCWlmIChtaXBpX2RiaV9kaXNwbGF5X2lzX29uKG1pcGkpKQorCQlyZXR1cm4gMDsKKworCW1p cGlfZGJpX2h3X3Jlc2V0KG1pcGkpOworCXJldCA9IG1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQ SV9EQ1NfU09GVF9SRVNFVCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkVycm9yIHNl bmRpbmcgY29tbWFuZCAlZFxuIiwgcmV0KTsKKwkJcmVndWxhdG9yX2Rpc2FibGUobWlwaS0+cmVn dWxhdG9yKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc2xlZXAoMjApOworCisJbWlwaV9kYmlf Y29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfRElTUExBWV9PRkYpOworCisJbWlwaV9kYmlfY29t bWFuZChtaXBpLCBJTEk5MzQxX1BXQ1RSTEIsIDB4MDAsIDB4ODMsIDB4MzApOworCW1pcGlfZGJp X2NvbW1hbmQobWlwaSwgSUxJOTM0MV9QV1JTRVEsIDB4NjQsIDB4MDMsIDB4MTIsIDB4ODEpOwor CW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9EVENUUkxBLCAweDg1LCAweDAxLCAweDc5 KTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfUFdDVFJMQSwgMHgzOSwgMHgyYywg MHgwMCwgMHgzNCwgMHgwMik7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX1BVTVBD VFJMLCAweDIwKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfRFRDVFJMQiwgMHgw MCwgMHgwMCk7CisKKwkvKiBQb3dlciBDb250cm9sICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBp LCBJTEk5MzQxX1BXQ1RSTDEsIDB4MjYpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0 MV9QV0NUUkwyLCAweDExKTsKKwkvKiBWQ09NICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJ TEk5MzQxX1ZNQ1RSTDEsIDB4MzUsIDB4M2UpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJ OTM0MV9WTUNUUkwyLCAweGJlKTsKKworCS8qIE1lbW9yeSBBY2Nlc3MgQ29udHJvbCAqLworCW1p cGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfU0VUX1BJWEVMX0ZPUk1BVCwgMHg1NSk7CisK Kwlzd2l0Y2ggKG1pcGktPnJvdGF0aW9uKSB7CisJZGVmYXVsdDoKKwkJYWRkcl9tb2RlID0gSUxJ OTM0MV9NQURDVExfTVYgfCBJTEk5MzQxX01BRENUTF9NWSB8CisJCQkgICAgSUxJOTM0MV9NQURD VExfTVg7CisJCWJyZWFrOworCWNhc2UgOTA6CisJCWFkZHJfbW9kZSA9IElMSTkzNDFfTUFEQ1RM X01ZOworCQlicmVhazsKKwljYXNlIDE4MDoKKwkJYWRkcl9tb2RlID0gSUxJOTM0MV9NQURDVExf TVY7CisJCWJyZWFrOworCWNhc2UgMjcwOgorCQlhZGRyX21vZGUgPSBJTEk5MzQxX01BRENUTF9N WDsKKwkJYnJlYWs7CisJfQorCWFkZHJfbW9kZSB8PSBJTEk5MzQxX01BRENUTF9CR1I7CisJbWlw aV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfQUREUkVTU19NT0RFLCBhZGRyX21vZGUp OworCisJLyogRnJhbWUgUmF0ZSAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9G Uk1DVFIxLCAweDAwLCAweDFiKTsKKworCS8qIEdhbW1hICovCisJbWlwaV9kYmlfY29tbWFuZCht aXBpLCBJTEk5MzQxX0VOM0dBTSwgMHgwOCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJ X0RDU19TRVRfR0FNTUFfQ1VSVkUsIDB4MDEpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJ OTM0MV9QR0FNQ1RSTCwKKwkJICAgICAgIDB4MWYsIDB4MWEsIDB4MTgsIDB4MGEsIDB4MGYsIDB4 MDYsIDB4NDUsIDB4ODcsCisJCSAgICAgICAweDMyLCAweDBhLCAweDA3LCAweDAyLCAweDA3LCAw eDA1LCAweDAwKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfTkdBTUNUUkwsCisJ CSAgICAgICAweDAwLCAweDI1LCAweDI3LCAweDA1LCAweDEwLCAweDA5LCAweDNhLCAweDc4LAor CQkgICAgICAgMHg0ZCwgMHgwNSwgMHgxOCwgMHgwZCwgMHgzOCwgMHgzYSwgMHgxZik7CisKKwkv KiBERFJBTSAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9FVE1PRCwgMHgwNyk7 CisKKwkvKiBEaXNwbGF5ICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX0RJU0NU UkwsIDB4MGEsIDB4ODIsIDB4MjcsIDB4MDApOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQ SV9EQ1NfRVhJVF9TTEVFUF9NT0RFKTsKKwltc2xlZXAoMTAwKTsKKworCW1pcGlfZGJpX2NvbW1h bmQobWlwaSwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOworCW1zbGVlcCgxMDApOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG1pMDI4M3F0X2Zpbmkodm9pZCAqZGF0YSkKK3sKKwlz dHJ1Y3QgbWlwaV9kYmkgKm1pcGkgPSBkYXRhOworCisJRFJNX0RFQlVHX0tNUygiXG4iKTsKKwly ZWd1bGF0b3JfZGlzYWJsZShtaXBpLT5yZWd1bGF0b3IpOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIG1pMDI4M3F0X3BpcGVfZnVuY3MgPSB7 CisJLmVuYWJsZSA9IG1pcGlfZGJpX3BpcGVfZW5hYmxlLAorCS5kaXNhYmxlID0gbWlwaV9kYmlf cGlwZV9kaXNhYmxlLAorCS51cGRhdGUgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV91cGRhdGUsCisJ LnByZXBhcmVfZmIgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiLAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1pMDI4M3F0X21vZGUgPSB7CisJVElO WURSTV9NT0RFKDMyMCwgMjQwLCA1OCwgNDMpLAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fZHJp dmVyIG1pMDI4M3F0X2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJVkVSX0dFTSB8 IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX1BSSU1FIHwKKwkJCQkgIERSSVZFUl9BVE9NSUMsCisJ VElOWURSTV9HRU1fRFJJVkVSX09QUywKKwkubGFzdGNsb3NlCQk9IHRpbnlkcm1fbGFzdGNsb3Nl LAorCS5kZWJ1Z2ZzX2luaXQJCT0gbWlwaV9kYmlfZGVidWdmc19pbml0LAorCS5uYW1lCQkJPSAi bWkwMjgzcXQiLAorCS5kZXNjCQkJPSAiTXVsdGktSW5ubyBNSTAyODNRVCIsCisJLmRhdGUJCQk9 ICIyMDE2MDYxNCIsCisJLm1ham9yCQkJPSAxLAorCS5taW5vcgkJCT0gMCwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1pMDI4M3F0X29mX21hdGNoW10gPSB7CisJeyAu Y29tcGF0aWJsZSA9ICJtdWx0aS1pbm5vLG1pMDI4M3F0IiB9LAorCXt9LAorfTsKK01PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIG1pMDI4M3F0X29mX21hdGNoKTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBzcGlfZGV2aWNlX2lkIG1pMDI4M3F0X2lkW10gPSB7CisJeyAibWkwMjgzcXQiLCAwIH0sCisJ eyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBtaTAyODNxdF9pZCk7CisKK3N0YXRp YyBpbnQgbWkwMjgzcXRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2Owor CXN0cnVjdCBtaXBpX2RiaSAqbWlwaTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpkYzsKKwl1MzIgcm90 YXRpb24gPSAwOworCWludCByZXQ7CisKKwltaXBpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCptaXBpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtaXBpKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CW1pcGktPnJlc2V0ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAicmVzZXQiLCBHUElP RF9PVVRfSElHSCk7CisJaWYgKElTX0VSUihtaXBpLT5yZXNldCkpIHsKKwkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gZ2V0IGdwaW8gJ3Jlc2V0J1xuIik7CisJCXJldHVybiBQVFJfRVJSKG1pcGkt PnJlc2V0KTsKKwl9CisKKwlkYyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgImRjIiwg R1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihkYykpIHsKKwkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gZ2V0IGdwaW8gJ2RjJ1xuIik7CisJCXJldHVybiBQVFJfRVJSKGRjKTsKKwl9CisKKwlt aXBpLT5yZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicG93ZXIiKTsKKwlpZiAo SVNfRVJSKG1pcGktPnJlZ3VsYXRvcikpCisJCXJldHVybiBQVFJfRVJSKG1pcGktPnJlZ3VsYXRv cik7CisKKwltaXBpLT5iYWNrbGlnaHQgPSB0aW55ZHJtX29mX2ZpbmRfYmFja2xpZ2h0KGRldik7 CisJaWYgKElTX0VSUihtaXBpLT5iYWNrbGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihtaXBpLT5i YWNrbGlnaHQpOworCisJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgInJvdGF0aW9uIiwg JnJvdGF0aW9uKTsKKworCXJldCA9IG1pcGlfZGJpX3NwaV9pbml0KHNwaSwgbWlwaSwgZGMsICZt aTAyODNxdF9waXBlX2Z1bmNzLAorCQkJCSZtaTAyODNxdF9kcml2ZXIsICZtaTAyODNxdF9tb2Rl LCByb3RhdGlvbik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IG1pMDI4M3F0 X2luaXQobWlwaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHVzZSBkZXZyZXMg dG8gZmluaSBhZnRlciBkcm0gdW5yZWdpc3RlciAoZHJ2LT5yZW1vdmUgaXMgYmVmb3JlKSAqLwor CXJldCA9IGRldm1fYWRkX2FjdGlvbihkZXYsIG1pMDI4M3F0X2ZpbmksIG1pcGkpOworCWlmIChy ZXQpIHsKKwkJbWkwMjgzcXRfZmluaShtaXBpKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl0ZGV2 ID0gJm1pcGktPnRpbnlkcm07CisKKwlyZXQgPSBkZXZtX3Rpbnlkcm1fcmVnaXN0ZXIodGRldik7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXNwaV9zZXRfZHJ2ZGF0YShzcGksIG1pcGkp OworCisJRFJNX0RFQlVHX0RSSVZFUigiSW5pdGlhbGl6ZWQgJXM6JXMgQCV1TUh6IG9uIG1pbm9y ICVkXG4iLAorCQkJIHRkZXYtPmRybS0+ZHJpdmVyLT5uYW1lLCBkZXZfbmFtZShkZXYpLAorCQkJ IHNwaS0+bWF4X3NwZWVkX2h6IC8gMTAwMDAwMCwKKwkJCSB0ZGV2LT5kcm0tPnByaW1hcnktPmlu ZGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtaTAyODNxdF9zaHV0ZG93bihz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IHNwaV9n ZXRfZHJ2ZGF0YShzcGkpOworCisJdGlueWRybV9zaHV0ZG93bigmbWlwaS0+dGlueWRybSk7Cit9 CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbWkwMjgzcXRfcG1fc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IG1pcGlfZGJpICptaXBpID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisJaW50IHJldDsKKworCXJldCA9IHRpbnlkcm1fc3VzcGVuZCgmbWlwaS0+dGlueWRy bSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1pMDI4M3F0X2ZpbmkobWlwaSk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX21heWJlX3VudXNlZCBtaTAyODNxdF9wbV9y ZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlyZXQgPSBtaTAyODNxdF9pbml0KG1p cGkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gdGlueWRybV9yZXN1bWUo Jm1pcGktPnRpbnlkcm0pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgbWkw MjgzcXRfcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKG1pMDI4M3F0X3BtX3N1 c3BlbmQsIG1pMDI4M3F0X3BtX3Jlc3VtZSkKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZl ciBtaTAyODNxdF9zcGlfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gIm1pMDI4 M3F0IiwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJCS5vZl9tYXRjaF90YWJsZSA9IG1pMDI4 M3F0X29mX21hdGNoLAorCQkucG0gPSAmbWkwMjgzcXRfcG1fb3BzLAorCX0sCisJLmlkX3RhYmxl ID0gbWkwMjgzcXRfaWQsCisJLnByb2JlID0gbWkwMjgzcXRfcHJvYmUsCisJLnNodXRkb3duID0g bWkwMjgzcXRfc2h1dGRvd24sCit9OworbW9kdWxlX3NwaV9kcml2ZXIobWkwMjgzcXRfc3BpX2Ry aXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiTXVsdGktSW5ubyBNSTAyODNRVCBEUk0gZHJp dmVyIik7CitNT0RVTEVfQVVUSE9SKCJOb3JhbGYgVHLDuG5uZXMiKTsKK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5oIGIvaW5j bHVkZS9kcm0vdGlueWRybS9pbGk5MzQxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uODA3YTA5ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL3Rpbnlkcm0vaWxp OTM0MS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBJTEk5MzQxIExDRCBjb250cm9sbGVyCisg KgorICogQ29weXJpZ2h0IDIwMTYgTm9yYWxmIFRyw7hubmVzCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fTElOVVhfSUxJOTM0MV9ICisjZGVmaW5lIF9f TElOVVhfSUxJOTM0MV9ICisKKyNkZWZpbmUgSUxJOTM0MV9GUk1DVFIxICAgIDB4YjEKKyNkZWZp bmUgSUxJOTM0MV9GUk1DVFIyICAgIDB4YjIKKyNkZWZpbmUgSUxJOTM0MV9GUk1DVFIzICAgIDB4 YjMKKyNkZWZpbmUgSUxJOTM0MV9JTlZUUiAgICAgIDB4YjQKKyNkZWZpbmUgSUxJOTM0MV9QUkNU UiAgICAgIDB4YjUKKyNkZWZpbmUgSUxJOTM0MV9ESVNDVFJMICAgIDB4YjYKKyNkZWZpbmUgSUxJ OTM0MV9FVE1PRCAgICAgIDB4YjcKKworI2RlZmluZSBJTEk5MzQxX1BXQ1RSTDEgICAgMHhjMAor I2RlZmluZSBJTEk5MzQxX1BXQ1RSTDIgICAgMHhjMQorI2RlZmluZSBJTEk5MzQxX1ZNQ1RSTDEg ICAgMHhjNQorI2RlZmluZSBJTEk5MzQxX1ZNQ1RSTDIgICAgMHhjNworI2RlZmluZSBJTEk5MzQx X1BXQ1RSTEEgICAgMHhjYgorI2RlZmluZSBJTEk5MzQxX1BXQ1RSTEIgICAgMHhjZgorCisjZGVm aW5lIElMSTkzNDFfUkRJRDEgICAgICAweGRhCisjZGVmaW5lIElMSTkzNDFfUkRJRDIgICAgICAw eGRiCisjZGVmaW5lIElMSTkzNDFfUkRJRDMgICAgICAweGRjCisjZGVmaW5lIElMSTkzNDFfUkRJ RDQgICAgICAweGQzCisKKyNkZWZpbmUgSUxJOTM0MV9QR0FNQ1RSTCAgIDB4ZTAKKyNkZWZpbmUg SUxJOTM0MV9OR0FNQ1RSTCAgIDB4ZTEKKyNkZWZpbmUgSUxJOTM0MV9ER0FNQ1RSTDEgIDB4ZTIK KyNkZWZpbmUgSUxJOTM0MV9ER0FNQ1RSTDIgIDB4ZTMKKyNkZWZpbmUgSUxJOTM0MV9EVENUUkxB ICAgIDB4ZTgKKyNkZWZpbmUgSUxJOTM0MV9EVENUUkxCICAgIDB4ZWEKKyNkZWZpbmUgSUxJOTM0 MV9QV1JTRVEgICAgIDB4ZWQKKworI2RlZmluZSBJTEk5MzQxX0VOM0dBTSAgICAgMHhmMgorI2Rl ZmluZSBJTEk5MzQxX0lGQ1RSTCAgICAgMHhmNgorI2RlZmluZSBJTEk5MzQxX1BVTVBDVFJMICAg MHhmNworCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01IICBCSVQoMikKKyNkZWZpbmUgSUxJOTM0 MV9NQURDVExfQkdSIEJJVCgzKQorI2RlZmluZSBJTEk5MzQxX01BRENUTF9NTCAgQklUKDQpCisj ZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01WICBCSVQoNSkKKyNkZWZpbmUgSUxJOTM0MV9NQURDVExf TVggIEJJVCg2KQorI2RlZmluZSBJTEk5MzQxX01BRENUTF9NWSAgQklUKDcpCisKKyNlbmRpZiAv KiBfX0xJTlVYX0lMSTkzNDFfSCAqLwotLSAKMi4xMC4yCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK