From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v3 7/7] drm/tinydrm: Add support for Multi-Inno MI0283QT display Date: Tue, 31 Jan 2017 17:03:19 +0100 Message-ID: <20170131160319.9695-8-noralf@tronnes.org> References: <20170131160319.9695-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170131160319.9695-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+ Ci0tLQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJz L2dwdS9kcm0vdGlueWRybS9LY29uZmlnICAgIHwgICA4ICsrCiBkcml2ZXJzL2dwdS9kcm0vdGlu eWRybS9NYWtlZmlsZSAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0 LmMgfCAyNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9k cm0vdGlueWRybS9pbGk5MzQxLmggICAgICB8ICA1NCArKysrKysrCiA1IGZpbGVzIGNoYW5nZWQs IDM1MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vbWkwMjgzcXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL3Rpbnlkcm0v aWxpOTM0MS5oCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBk OTM1MTM1Li41YzQ2NjZiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVS UwpAQCAtNDI3OCw2ICs0Mjc4LDEyIEBAIFM6CVN1cHBvcnRlZAogRjoJZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrLwogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkv bWVkaWF0ZWsvCiAKK0RSTSBEUklWRVIgRk9SIE1JMDI4M1FUCitNOglOb3JhbGYgVHLDuG5uZXMg PG5vcmFsZkB0cm9ubmVzLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90 aW55ZHJtL21pMDI4M3F0LmMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9k aXNwbGF5L211bHRpLWlubm8sbWkwMjgzcXQudHh0CisKIERSTSBEUklWRVIgRk9SIE1TTSBBRFJF Tk8gR1BVCiBNOglSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CiBMOglsaW51eC1hcm0t bXNtQHZnZXIua2VybmVsLm9yZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0v S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKaW5kZXggMTI4ZDJmMy4u ZDMxNjFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCkBAIC05LDMgKzksMTEgQEAgbWVudWNv bmZpZyBEUk1fVElOWURSTQogCiBjb25maWcgVElOWURSTV9NSVBJX0RCSQogCXRyaXN0YXRlCisK K2NvbmZpZyBUSU5ZRFJNX01JMDI4M1FUCisJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBNSTAy ODNRVCIKKwlkZXBlbmRzIG9uIERSTV9USU5ZRFJNICYmIFNQSQorCXNlbGVjdCBUSU5ZRFJNX01J UElfREJJCisJaGVscAorCSAgRFJNIGRyaXZlciBmb3IgdGhlIE11bHRpLUlubm8gTUkwMjgzUVQg ZGlzcGxheSBwYW5lbAorCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2Fs bGVkIG1pMDI4M3F0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQppbmRleCBmZTVkNGM2Li43YTM2 MDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQpAQCAtMiwzICsyLDYgQEAgb2JqLSQoQ09O RklHX0RSTV9USU5ZRFJNKQkJKz0gY29yZS8KIAogIyBDb250cm9sbGVycwogb2JqLSQoQ09ORklH X1RJTllEUk1fTUlQSV9EQkkpCQkrPSBtaXBpLWRiaS5vCisKKyMgRGlzcGxheXMKK29iai0kKENP TkZJR19USU5ZRFJNX01JMDI4M1FUKQkJKz0gbWkwMjgzcXQubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Rpbnlkcm0vbWkwMjgzcXQuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21p MDI4M3F0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI5ZmU4NgotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmMKQEAgLTAs MCArMSwyNzkgQEAKKy8qCisgKiBEUk0gZHJpdmVyIGZvciBNdWx0aS1Jbm5vIE1JMDI4M1FUIHBh bmVscworICoKKyAqIENvcHlyaWdodCAyMDE2IE5vcmFsZiBUcsO4bm5lcworICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS90aW55ZHJtL2lsaTkzNDEu aD4KKyNpbmNsdWRlIDxkcm0vdGlueWRybS9taXBpLWRiaS5oPgorI2luY2x1ZGUgPGRybS90aW55 ZHJtL3Rpbnlkcm0taGVscGVycy5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVk ZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1 bWVyLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPHZpZGVvL21pcGlf ZGlzcGxheS5oPgorCitzdGF0aWMgaW50IG1pMDI4M3F0X2luaXQoc3RydWN0IG1pcGlfZGJpICpt aXBpKQoreworCXN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldiA9ICZtaXBpLT50aW55ZHJtOwor CXN0cnVjdCBkZXZpY2UgKmRldiA9IHRkZXYtPmRybS0+ZGV2OworCXU4IGFkZHJfbW9kZTsKKwlp bnQgcmV0OworCisJRFJNX0RFQlVHX0tNUygiXG4iKTsKKworCXJldCA9IHJlZ3VsYXRvcl9lbmFi bGUobWlwaS0+cmVndWxhdG9yKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGVuYWJsZSByZWd1bGF0b3IgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJ LyogQXZvaWQgZmxpY2tlciBieSBza2lwcGluZyBzZXR1cCBpZiB0aGUgYm9vdGxvYWRlciBoYXMg ZG9uZSBpdCAqLworCWlmIChtaXBpX2RiaV9kaXNwbGF5X2lzX29uKG1pcGkpKQorCQlyZXR1cm4g MDsKKworCW1pcGlfZGJpX2h3X3Jlc2V0KG1pcGkpOworCXJldCA9IG1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgTUlQSV9EQ1NfU09GVF9SRVNFVCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwg IkVycm9yIHNlbmRpbmcgY29tbWFuZCAlZFxuIiwgcmV0KTsKKwkJcmVndWxhdG9yX2Rpc2FibGUo bWlwaS0+cmVndWxhdG9yKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc2xlZXAoMjApOworCisJ bWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfRElTUExBWV9PRkYpOworCisJbWlw aV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX1BXQ1RSTEIsIDB4MDAsIDB4ODMsIDB4MzApOwor CW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9QV1JTRVEsIDB4NjQsIDB4MDMsIDB4MTIs IDB4ODEpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9EVENUUkxBLCAweDg1LCAw eDAxLCAweDc5KTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfUFdDVFJMQSwgMHgz OSwgMHgyYywgMHgwMCwgMHgzNCwgMHgwMik7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5 MzQxX1BVTVBDVFJMLCAweDIwKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfRFRD VFJMQiwgMHgwMCwgMHgwMCk7CisKKwkvKiBQb3dlciBDb250cm9sICovCisJbWlwaV9kYmlfY29t bWFuZChtaXBpLCBJTEk5MzQxX1BXQ1RSTDEsIDB4MjYpOworCW1pcGlfZGJpX2NvbW1hbmQobWlw aSwgSUxJOTM0MV9QV0NUUkwyLCAweDExKTsKKwkvKiBWQ09NICovCisJbWlwaV9kYmlfY29tbWFu ZChtaXBpLCBJTEk5MzQxX1ZNQ1RSTDEsIDB4MzUsIDB4M2UpOworCW1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgSUxJOTM0MV9WTUNUUkwyLCAweGJlKTsKKworCS8qIE1lbW9yeSBBY2Nlc3MgQ29udHJv bCAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfU0VUX1BJWEVMX0ZPUk1BVCwg MHg1NSk7CisKKwlzd2l0Y2ggKG1pcGktPnJvdGF0aW9uKSB7CisJZGVmYXVsdDoKKwkJYWRkcl9t b2RlID0gSUxJOTM0MV9NQURDVExfTVYgfCBJTEk5MzQxX01BRENUTF9NWSB8CisJCQkgICAgSUxJ OTM0MV9NQURDVExfTVg7CisJCWJyZWFrOworCWNhc2UgOTA6CisJCWFkZHJfbW9kZSA9IElMSTkz NDFfTUFEQ1RMX01ZOworCQlicmVhazsKKwljYXNlIDE4MDoKKwkJYWRkcl9tb2RlID0gSUxJOTM0 MV9NQURDVExfTVY7CisJCWJyZWFrOworCWNhc2UgMjcwOgorCQlhZGRyX21vZGUgPSBJTEk5MzQx X01BRENUTF9NWDsKKwkJYnJlYWs7CisJfQorCWFkZHJfbW9kZSB8PSBJTEk5MzQxX01BRENUTF9C R1I7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfQUREUkVTU19NT0RFLCBh ZGRyX21vZGUpOworCisJLyogRnJhbWUgUmF0ZSAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwg SUxJOTM0MV9GUk1DVFIxLCAweDAwLCAweDFiKTsKKworCS8qIEdhbW1hICovCisJbWlwaV9kYmlf Y29tbWFuZChtaXBpLCBJTEk5MzQxX0VOM0dBTSwgMHgwOCk7CisJbWlwaV9kYmlfY29tbWFuZCht aXBpLCBNSVBJX0RDU19TRVRfR0FNTUFfQ1VSVkUsIDB4MDEpOworCW1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgSUxJOTM0MV9QR0FNQ1RSTCwKKwkJICAgICAgIDB4MWYsIDB4MWEsIDB4MTgsIDB4MGEs IDB4MGYsIDB4MDYsIDB4NDUsIDB4ODcsCisJCSAgICAgICAweDMyLCAweDBhLCAweDA3LCAweDAy LCAweDA3LCAweDA1LCAweDAwKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfTkdB TUNUUkwsCisJCSAgICAgICAweDAwLCAweDI1LCAweDI3LCAweDA1LCAweDEwLCAweDA5LCAweDNh LCAweDc4LAorCQkgICAgICAgMHg0ZCwgMHgwNSwgMHgxOCwgMHgwZCwgMHgzOCwgMHgzYSwgMHgx Zik7CisKKwkvKiBERFJBTSAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9FVE1P RCwgMHgwNyk7CisKKwkvKiBEaXNwbGF5ICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5 MzQxX0RJU0NUUkwsIDB4MGEsIDB4ODIsIDB4MjcsIDB4MDApOworCW1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgTUlQSV9EQ1NfRVhJVF9TTEVFUF9NT0RFKTsKKwltc2xlZXAoMTAwKTsKKworCW1pcGlf ZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOworCW1zbGVlcCgxMDAp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG1pMDI4M3F0X2Zpbmkodm9pZCAqZGF0 YSkKK3sKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGkgPSBkYXRhOworCisJRFJNX0RFQlVHX0tNUygi XG4iKTsKKwlyZWd1bGF0b3JfZGlzYWJsZShtaXBpLT5yZWd1bGF0b3IpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIG1pMDI4M3F0X3BpcGVf ZnVuY3MgPSB7CisJLmVuYWJsZSA9IG1pcGlfZGJpX3BpcGVfZW5hYmxlLAorCS5kaXNhYmxlID0g bWlwaV9kYmlfcGlwZV9kaXNhYmxlLAorCS51cGRhdGUgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV91 cGRhdGUsCisJLnByZXBhcmVfZmIgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1pMDI4M3F0X21vZGUg PSB7CisJVElOWURSTV9NT0RFKDMyMCwgMjQwLCA1OCwgNDMpLAorfTsKKworc3RhdGljIHN0cnVj dCBkcm1fZHJpdmVyIG1pMDI4M3F0X2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJ VkVSX0dFTSB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX1BSSU1FIHwKKwkJCQkgIERSSVZFUl9B VE9NSUMsCisJVElOWURSTV9HRU1fRFJJVkVSX09QUywKKwkubGFzdGNsb3NlCQk9IHRpbnlkcm1f bGFzdGNsb3NlLAorCS5kZWJ1Z2ZzX2luaXQJCT0gbWlwaV9kYmlfZGVidWdmc19pbml0LAorCS5u YW1lCQkJPSAibWkwMjgzcXQiLAorCS5kZXNjCQkJPSAiTXVsdGktSW5ubyBNSTAyODNRVCIsCisJ LmRhdGUJCQk9ICIyMDE2MDYxNCIsCisJLm1ham9yCQkJPSAxLAorCS5taW5vcgkJCT0gMCwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1pMDI4M3F0X29mX21hdGNoW10g PSB7CisJeyAuY29tcGF0aWJsZSA9ICJtdWx0aS1pbm5vLG1pMDI4M3F0IiB9LAorCXt9LAorfTsK K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1pMDI4M3F0X29mX21hdGNoKTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIG1pMDI4M3F0X2lkW10gPSB7CisJeyAibWkwMjgzcXQi LCAwIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBtaTAyODNxdF9pZCk7 CisKK3N0YXRpYyBpbnQgbWkwMjgzcXRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNl ICp0ZGV2OworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpkYzsK Kwl1MzIgcm90YXRpb24gPSAwOworCWludCByZXQ7CisKKwltaXBpID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCptaXBpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtaXBpKQorCQlyZXR1cm4gLUVO T01FTTsKKworCW1pcGktPnJlc2V0ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAicmVz ZXQiLCBHUElPRF9PVVRfSElHSCk7CisJaWYgKElTX0VSUihtaXBpLT5yZXNldCkpIHsKKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGdwaW8gJ3Jlc2V0J1xuIik7CisJCXJldHVybiBQVFJf RVJSKG1pcGktPnJlc2V0KTsKKwl9CisKKwlkYyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRl diwgImRjIiwgR1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihkYykpIHsKKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gZ2V0IGdwaW8gJ2RjJ1xuIik7CisJCXJldHVybiBQVFJfRVJSKGRjKTsK Kwl9CisKKwltaXBpLT5yZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicG93ZXIi KTsKKwlpZiAoSVNfRVJSKG1pcGktPnJlZ3VsYXRvcikpCisJCXJldHVybiBQVFJfRVJSKG1pcGkt PnJlZ3VsYXRvcik7CisKKwltaXBpLT5iYWNrbGlnaHQgPSB0aW55ZHJtX29mX2ZpbmRfYmFja2xp Z2h0KGRldik7CisJaWYgKElTX0VSUihtaXBpLT5iYWNrbGlnaHQpKQorCQlyZXR1cm4gUFRSX0VS UihtaXBpLT5iYWNrbGlnaHQpOworCisJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgInJv dGF0aW9uIiwgJnJvdGF0aW9uKTsKKworCXJldCA9IG1pcGlfZGJpX3NwaV9pbml0KHNwaSwgbWlw aSwgZGMsICZtaTAyODNxdF9waXBlX2Z1bmNzLAorCQkJCSZtaTAyODNxdF9kcml2ZXIsICZtaTAy ODNxdF9tb2RlLCByb3RhdGlvbik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IG1pMDI4M3F0X2luaXQobWlwaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHVz ZSBkZXZyZXMgdG8gZmluaSBhZnRlciBkcm0gdW5yZWdpc3RlciAoZHJ2LT5yZW1vdmUgaXMgYmVm b3JlKSAqLworCXJldCA9IGRldm1fYWRkX2FjdGlvbihkZXYsIG1pMDI4M3F0X2ZpbmksIG1pcGkp OworCWlmIChyZXQpIHsKKwkJbWkwMjgzcXRfZmluaShtaXBpKTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwl0ZGV2ID0gJm1pcGktPnRpbnlkcm07CisKKwlyZXQgPSBkZXZtX3Rpbnlkcm1fcmVnaXN0 ZXIodGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXNwaV9zZXRfZHJ2ZGF0YShz cGksIG1pcGkpOworCisJRFJNX0RFQlVHX0RSSVZFUigiSW5pdGlhbGl6ZWQgJXM6JXMgQCV1TUh6 IG9uIG1pbm9yICVkXG4iLAorCQkJIHRkZXYtPmRybS0+ZHJpdmVyLT5uYW1lLCBkZXZfbmFtZShk ZXYpLAorCQkJIHNwaS0+bWF4X3NwZWVkX2h6IC8gMTAwMDAwMCwKKwkJCSB0ZGV2LT5kcm0tPnBy aW1hcnktPmluZGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtaTAyODNxdF9z aHV0ZG93bihzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVjdCBtaXBpX2RiaSAqbWlw aSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOworCisJdGlueWRybV9zaHV0ZG93bigmbWlwaS0+dGlu eWRybSk7Cit9CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbWkwMjgzcXRfcG1fc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IG1pcGlfZGJpICptaXBpID0gZGV2X2dl dF9kcnZkYXRhKGRldik7CisJaW50IHJldDsKKworCXJldCA9IHRpbnlkcm1fc3VzcGVuZCgmbWlw aS0+dGlueWRybSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1pMDI4M3F0X2Zpbmko bWlwaSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX21heWJlX3VudXNlZCBtaTAy ODNxdF9wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBtaXBpX2RiaSAq bWlwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlyZXQgPSBtaTAyODNx dF9pbml0KG1pcGkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gdGlueWRy bV9yZXN1bWUoJm1pcGktPnRpbnlkcm0pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9w bV9vcHMgbWkwMjgzcXRfcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKG1pMDI4 M3F0X3BtX3N1c3BlbmQsIG1pMDI4M3F0X3BtX3Jlc3VtZSkKK307CisKK3N0YXRpYyBzdHJ1Y3Qg c3BpX2RyaXZlciBtaTAyODNxdF9zcGlfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1l ID0gIm1pMDI4M3F0IiwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJCS5vZl9tYXRjaF90YWJs ZSA9IG1pMDI4M3F0X29mX21hdGNoLAorCQkucG0gPSAmbWkwMjgzcXRfcG1fb3BzLAorCX0sCisJ LmlkX3RhYmxlID0gbWkwMjgzcXRfaWQsCisJLnByb2JlID0gbWkwMjgzcXRfcHJvYmUsCisJLnNo dXRkb3duID0gbWkwMjgzcXRfc2h1dGRvd24sCit9OworbW9kdWxlX3NwaV9kcml2ZXIobWkwMjgz cXRfc3BpX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiTXVsdGktSW5ubyBNSTAyODNR VCBEUk0gZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJOb3JhbGYgVHLDuG5uZXMiKTsKK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3Rpbnlkcm0vaWxpOTM0 MS5oIGIvaW5jbHVkZS9kcm0vdGlueWRybS9pbGk5MzQxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODA3YTA5ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL3Rp bnlkcm0vaWxpOTM0MS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBJTEk5MzQxIExDRCBjb250 cm9sbGVyCisgKgorICogQ29weXJpZ2h0IDIwMTYgTm9yYWxmIFRyw7hubmVzCisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fTElOVVhfSUxJOTM0MV9ICisj ZGVmaW5lIF9fTElOVVhfSUxJOTM0MV9ICisKKyNkZWZpbmUgSUxJOTM0MV9GUk1DVFIxICAgIDB4 YjEKKyNkZWZpbmUgSUxJOTM0MV9GUk1DVFIyICAgIDB4YjIKKyNkZWZpbmUgSUxJOTM0MV9GUk1D VFIzICAgIDB4YjMKKyNkZWZpbmUgSUxJOTM0MV9JTlZUUiAgICAgIDB4YjQKKyNkZWZpbmUgSUxJ OTM0MV9QUkNUUiAgICAgIDB4YjUKKyNkZWZpbmUgSUxJOTM0MV9ESVNDVFJMICAgIDB4YjYKKyNk ZWZpbmUgSUxJOTM0MV9FVE1PRCAgICAgIDB4YjcKKworI2RlZmluZSBJTEk5MzQxX1BXQ1RSTDEg ICAgMHhjMAorI2RlZmluZSBJTEk5MzQxX1BXQ1RSTDIgICAgMHhjMQorI2RlZmluZSBJTEk5MzQx X1ZNQ1RSTDEgICAgMHhjNQorI2RlZmluZSBJTEk5MzQxX1ZNQ1RSTDIgICAgMHhjNworI2RlZmlu ZSBJTEk5MzQxX1BXQ1RSTEEgICAgMHhjYgorI2RlZmluZSBJTEk5MzQxX1BXQ1RSTEIgICAgMHhj ZgorCisjZGVmaW5lIElMSTkzNDFfUkRJRDEgICAgICAweGRhCisjZGVmaW5lIElMSTkzNDFfUkRJ RDIgICAgICAweGRiCisjZGVmaW5lIElMSTkzNDFfUkRJRDMgICAgICAweGRjCisjZGVmaW5lIElM STkzNDFfUkRJRDQgICAgICAweGQzCisKKyNkZWZpbmUgSUxJOTM0MV9QR0FNQ1RSTCAgIDB4ZTAK KyNkZWZpbmUgSUxJOTM0MV9OR0FNQ1RSTCAgIDB4ZTEKKyNkZWZpbmUgSUxJOTM0MV9ER0FNQ1RS TDEgIDB4ZTIKKyNkZWZpbmUgSUxJOTM0MV9ER0FNQ1RSTDIgIDB4ZTMKKyNkZWZpbmUgSUxJOTM0 MV9EVENUUkxBICAgIDB4ZTgKKyNkZWZpbmUgSUxJOTM0MV9EVENUUkxCICAgIDB4ZWEKKyNkZWZp bmUgSUxJOTM0MV9QV1JTRVEgICAgIDB4ZWQKKworI2RlZmluZSBJTEk5MzQxX0VOM0dBTSAgICAg MHhmMgorI2RlZmluZSBJTEk5MzQxX0lGQ1RSTCAgICAgMHhmNgorI2RlZmluZSBJTEk5MzQxX1BV TVBDVFJMICAgMHhmNworCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01IICBCSVQoMikKKyNkZWZp bmUgSUxJOTM0MV9NQURDVExfQkdSIEJJVCgzKQorI2RlZmluZSBJTEk5MzQxX01BRENUTF9NTCAg QklUKDQpCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01WICBCSVQoNSkKKyNkZWZpbmUgSUxJOTM0 MV9NQURDVExfTVggIEJJVCg2KQorI2RlZmluZSBJTEk5MzQxX01BRENUTF9NWSAgQklUKDcpCisK KyNlbmRpZiAvKiBfX0xJTlVYX0lMSTkzNDFfSCAqLwotLSAKMi4xMC4yCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK