From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 3/4] drm/bridge: Add support for the Raspberry Pi 7" Touchscreen. Date: Thu, 11 May 2017 16:56:24 -0700 Message-ID: <20170511235625.22427-4-eric@anholt.net> References: <20170511235625.22427-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170511235625.22427-1-eric@anholt.net> 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, Thierry Reding , Rob Herring , Mark Rutland , Archit Taneja , Andrzej Hajda , Laurent Pinchart , devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org List-Id: devicetree@vger.kernel.org VGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggdGhlIEF0bWVsIG1pY3JvY29udHJvbGxlciBm b3Igc2VxdWVuY2luZwp0aGUgcG93ZXJvbiBvZiB0aGUgVEMzNTg3NjIgRFNJLURQSSBicmlkZ2Ug YW5kIGNvbnRyb2xsaW5nIHRoZQpiYWNrbGlnaHQgUFdNLgoKVGhlIGZvbGxvd2luZyBsaW5lcyBh cmUgcmVxdWlyZWQgaW4gY29uZmlnLnR4dCwgdG8ga2VlcCB0aGUgZmlybXdhcmUKZnJvbSB0cnlp bmcgdG8gYmFzaCBvdXIgSTJDIGxpbmVzIGFuZCBzdGVhbCB0aGUgRFNJIGludGVycnVwdHM6Cgog ICAgZGlzYWJsZV90b3VjaHNjcmVlbj0xCiAgICBpZ25vcmVfbGNkPTIKICAgIG1hc2tfZ3B1X2lu dGVycnVwdDE9MHgxMDAwCgpUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcm13YXJlIHdvbid0IHBvd2Vy IG9uIHRoZSBwYW5lbCBhdCBib290IHRpbWUgKG5vCnJhaW5ib3cpIGFuZCB0aGUgdG91Y2hzY3Jl ZW4gaW5wdXQgd29uJ3Qgd29yay4gIEEgbmF0aXZlIGlucHV0IGRyaXZlcgpmb3IgdGhlIHRvdWNo c2NyZWVuIHN0aWxsIG5lZWRzIHRvIGJlIHdyaXR0ZW4uCgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFu aG9sdCA8ZXJpY0BhbmhvbHQubmV0PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9yYXNw YmVycnlwaS10b3VjaHNjcmVlbi5jIHwgNDYwICsrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDQ3MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9yYXNwYmVycnlwaS10b3VjaHNjcmVlbi5jCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9L Y29uZmlnCmluZGV4IGM0ZGFjYTM4NzQzYy4uOWFkZGE2MmY0NWRmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9L Y29uZmlnCkBAIC03Niw2ICs3NiwxNSBAQCBjb25maWcgRFJNX1NJTF9TSUk4NjIwCiAJaGVscAog CSAgU2lsaWNvbiBJbWFnZSBTSUk4NjIwIEhETUkvTUhMIGJyaWRnZSBjaGlwIGRyaXZlci4KIAor Y29uZmlnIERSTV9SQVNQQkVSUllQSV9UT1VDSFNDUkVFTl9CUklER0UKKwl0cmlzdGF0ZSAiUmFz cGJlcnJ5IFBpIDctaW5jaCB0b3VjaHNjcmVlbiBicmlkZ2UiCisJZGVwZW5kcyBvbiBPRgorCXNl bGVjdCBEUk1fS01TX0hFTFBFUgorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8g ZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBSYXNwYmVycnkKKwkgIFBpIDciIFRvdWNoc2NyZWVuLiAg VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwKKwkgIGNob29zZSBNIGhlcmUuCisK IGNvbmZpZyBEUk1fU0lJOTAyWAogCXRyaXN0YXRlICJTaWxpY29uIEltYWdlIHNpaTkwMnggUkdC L0hETUkgYnJpZGdlIgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCmluZGV4 IDNmZTIyMjZlZTJmMi4uNjIyNmVkNDFmNGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKQEAg LTYsNiArNiw3IEBAIG9iai0kKENPTkZJR19EUk1fTFZEU19FTkNPREVSKSArPSBsdmRzLWVuY29k ZXIubwogb2JqLSQoQ09ORklHX0RSTV9NRUdBQ0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZXKSAr PSBtZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3Lm8KIG9iai0kKENPTkZJR19EUk1fTlhQ X1BUTjM0NjApICs9IG54cC1wdG4zNDYwLm8KIG9iai0kKENPTkZJR19EUk1fUEFSQURFX1BTODYy MikgKz0gcGFyYWRlLXBzODYyMi5vCitvYmotJChDT05GSUdfRFJNX1JBU1BCRVJSWVBJX1RPVUNI U0NSRUVOX0JSSURHRSkgKz0gcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4ubwogb2JqLSQoQ09ORklH X0RSTV9TSUxfU0lJODYyMCkgKz0gc2lsLXNpaTg2MjAubwogb2JqLSQoQ09ORklHX0RSTV9TSUk5 MDJYKSArPSBzaWk5MDJ4Lm8KIG9iai0kKENPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2NykgKz0g dGMzNTg3NjcubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9yYXNwYmVycnlw aS10b3VjaHNjcmVlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9yYXNwYmVycnlwaS10b3Vj aHNjcmVlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjE5YjVh ODNmMjEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9yYXNwYmVy cnlwaS10b3VjaHNjcmVlbi5jCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogQ29weXJpZ2h0IMKp IDIwMTYtMjAxNyBCcm9hZGNvbQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICog cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUG9ydGlv bnMgb2YgdGhpcyBmaWxlIChkZXJpdmVkIGZyb20gcGFuZWwtc2ltcGxlLmMpIGFyZToKKyAqCisg KiBDb3B5cmlnaHQgKEMpIDIwMTMsIE5WSURJQSBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5H RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAq LworCisvKioKKyAqIFJhc3BiZXJyeSBQaSA3IiB0b3VjaHNjcmVlbiBwYW5lbCBicmlkZ2UgZHJp dmVyLgorICoKKyAqIFRoZSA3IiB0b3VjaHNjcmVlbiBjb25zaXN0cyBvZiBhIERQSSBMQ0QgcGFu ZWwsIGEgVG9zaGliYQorICogVEMzNTg3NjJYQkcgRFNJLURQSSBicmlkZ2UsIGFuZCBhbiBJMkMt Y29ubmVjdGVkIEF0bWVsIEFUVElOWTg4LU1VUgorICogY29udHJvbGxpbmcgcG93ZXIgbWFuYWdl bWVudCwgdGhlIExDRCBQV00sIGFuZCBpbml0aWFsIHJlZ2lzdGVyCisgKiBzZXR1cCBvZiB0aGUg VG9oc2liYS4KKyAqCisgKiBUaGlzIGRyaXZlciBjb250cm9scyB0aGUgVEMzNTg3NjIgYW5kIEFU VElOWTg4LCBicmlkZ2luZyBiZXR3ZWVuCisgKiB0aGUgRFNJIGhvc3QgYW5kIHRoZSBMQ0QgcGFu ZWwuICBUaGUgcGFuZWwtc2ltcGxlIGRyaXZlciBoYXMgdGhlCisgKiBhY3R1YWwgcGFuZWwuCisg Ki8KKworI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+Cisj aW5jbHVkZSA8bGludXgvZmIuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+CisjaW5jbHVkZSA8 bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgv b2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRlIDxsaW51 eC9wbS5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUg PGRybS9kcm1fb2YuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKy8qIEkyQyByZWdp c3RlcnMgb2YgdGhlIEF0bWVsIG1pY3JvY29udHJvbGxlci4gKi8KK2VudW0gUkVHX0FERFIgewor CVJFR19JRCA9IDB4ODAsCisJUkVHX1BPUlRBLCAvKiBCSVQoMikgZm9yIGhvcml6b250YWwgZmxp cCwgQklUKDMpIGZvciB2ZXJ0aWNhbCBmbGlwICovCisJUkVHX1BPUlRCLAorCVJFR19QT1JUQywK KwlSRUdfUE9SVEQsCisJUkVHX1BPV0VST04sCisJUkVHX1BXTSwKKwlSRUdfRERSQSwKKwlSRUdf RERSQiwKKwlSRUdfRERSQywKKwlSRUdfRERSRCwKKwlSRUdfVEVTVCwKKwlSRUdfV1JfQUREUkws CisJUkVHX1dSX0FERFJILAorCVJFR19SRUFESCwKKwlSRUdfUkVBREwsCisJUkVHX1dSSVRFSCwK KwlSRUdfV1JJVEVMLAorCVJFR19JRDIsCit9OworCisvKiBXZSBvbmx5IHR1cm4gdGhlIFBXTSBv biBvciBvZmYsIHdpdGhvdXQgdmFyeWluZyB2YWx1ZXMuICovCisjZGVmaW5lIFJQSV9UT1VDSFND UkVFTl9NQVhfQlJJR0hUTkVTUyAxCisKKy8qIERTSSBELVBIWSBMYXllciBSZWdpc3RlcnMgKi8K KyNkZWZpbmUgRDBXX0RQSFlDT05UVFgJCTB4MDAwNAorI2RlZmluZSBDTFdfRFBIWUNPTlRSWAkJ MHgwMDIwCisjZGVmaW5lIEQwV19EUEhZQ09OVFJYCQkweDAwMjQKKyNkZWZpbmUgRDFXX0RQSFlD T05UUlgJCTB4MDAyOAorI2RlZmluZSBDT01fRFBIWUNPTlRSWAkJMHgwMDM4CisjZGVmaW5lIENM V19DTlRSTAkJMHgwMDQwCisjZGVmaW5lIEQwV19DTlRSTAkJMHgwMDQ0CisjZGVmaW5lIEQxV19D TlRSTAkJMHgwMDQ4CisjZGVmaW5lIERGVE1PREVfQ05UUkwJCTB4MDA1NAorCisvKiBEU0kgUFBJ IExheWVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBQUElfU1RBUlRQUEkJCTB4MDEwNAorI2RlZmlu ZSBQUElfQlVTWVBQSQkJMHgwMTA4CisjZGVmaW5lIFBQSV9MSU5FSU5JVENOVAkJMHgwMTEwCisj ZGVmaW5lIFBQSV9MUFRYVElNRUNOVAkJMHgwMTE0CisjZGVmaW5lIFBQSV9MQU5FRU5BQkxFCQkw eDAxMzQKKyNkZWZpbmUgUFBJX1RYX1JYX1RBCQkweDAxM0MKKyNkZWZpbmUgUFBJX0NMU19BVE1S CQkweDAxNDAKKyNkZWZpbmUgUFBJX0QwU19BVE1SCQkweDAxNDQKKyNkZWZpbmUgUFBJX0QxU19B VE1SCQkweDAxNDgKKyNkZWZpbmUgUFBJX0QwU19DTFJTSVBPQ09VTlQJMHgwMTY0CisjZGVmaW5l IFBQSV9EMVNfQ0xSU0lQT0NPVU5UCTB4MDE2OAorI2RlZmluZSBDTFNfUFJFCQkJMHgwMTgwCisj ZGVmaW5lIEQwU19QUkUJCQkweDAxODQKKyNkZWZpbmUgRDFTX1BSRQkJCTB4MDE4OAorI2RlZmlu ZSBDTFNfUFJFUAkJMHgwMUEwCisjZGVmaW5lIEQwU19QUkVQCQkweDAxQTQKKyNkZWZpbmUgRDFT X1BSRVAJCTB4MDFBOAorI2RlZmluZSBDTFNfWkVSTwkJMHgwMUMwCisjZGVmaW5lIEQwU19aRVJP CQkweDAxQzQKKyNkZWZpbmUgRDFTX1pFUk8JCTB4MDFDOAorI2RlZmluZSBQUElfQ0xSRkxHCQkw eDAxRTAKKyNkZWZpbmUgUFBJX0NMUlNJUE8JCTB4MDFFNAorI2RlZmluZSBIU1RJTUVPVVQJCTB4 MDFGMAorI2RlZmluZSBIU1RJTUVPVVRFTkFCTEUJCTB4MDFGNAorCisvKiBEU0kgUHJvdG9jb2wg TGF5ZXIgUmVnaXN0ZXJzICovCisjZGVmaW5lIERTSV9TVEFSVERTSQkJMHgwMjA0CisjZGVmaW5l IERTSV9CVVNZRFNJCQkweDAyMDgKKyNkZWZpbmUgRFNJX0xBTkVFTkFCTEUJCTB4MDIxMAorIyBk ZWZpbmUgRFNJX0xBTkVFTkFCTEVfQ0xPQ0sJCUJJVCgwKQorIyBkZWZpbmUgRFNJX0xBTkVFTkFC TEVfRDAJCUJJVCgxKQorIyBkZWZpbmUgRFNJX0xBTkVFTkFCTEVfRDEJCUJJVCgyKQorCisjZGVm aW5lIERTSV9MQU5FU1RBVFVTMAkJMHgwMjE0CisjZGVmaW5lIERTSV9MQU5FU1RBVFVTMQkJMHgw MjE4CisjZGVmaW5lIERTSV9JTlRTVEFUVVMJCTB4MDIyMAorI2RlZmluZSBEU0lfSU5UTUFTSwkJ MHgwMjI0CisjZGVmaW5lIERTSV9JTlRDTFIJCTB4MDIyOAorI2RlZmluZSBEU0lfTFBUWFRPCQkw eDAyMzAKKyNkZWZpbmUgRFNJX01PREUJCTB4MDI2MAorI2RlZmluZSBEU0lfUEFZTE9BRDAJCTB4 MDI2OAorI2RlZmluZSBEU0lfUEFZTE9BRDEJCTB4MDI2QworI2RlZmluZSBEU0lfU0hPUlRQS1RE QVQJCTB4MDI3MAorI2RlZmluZSBEU0lfU0hPUlRQS1RSRVEJCTB4MDI3NAorI2RlZmluZSBEU0lf QlRBU1RBCQkweDAyNzgKKyNkZWZpbmUgRFNJX0JUQUNMUgkJMHgwMjdDCisKKy8qIERTSSBHZW5l cmFsIFJlZ2lzdGVycyAqLworI2RlZmluZSBEU0lFUlJDTlQJCTB4MDMwMAorI2RlZmluZSBEU0lT SUdNT0QJCTB4MDMwNAorCisvKiBEU0kgQXBwbGljYXRpb24gTGF5ZXIgUmVnaXN0ZXJzICovCisj ZGVmaW5lIEFQTENUUkwJCQkweDA0MDAKKyNkZWZpbmUgQVBMU1RBVAkJCTB4MDQwNAorI2RlZmlu ZSBBUExFUlIJCQkweDA0MDgKKyNkZWZpbmUgUFdSTU9ECQkJMHgwNDBDCisjZGVmaW5lIFJEUEtU TE4JCQkweDA0MTAKKyNkZWZpbmUgUFhMRk1UCQkJMHgwNDE0CisjZGVmaW5lIE1FTVdSQ01ECQkw eDA0MTgKKworLyogTENEQy9EUEkgSG9zdCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgTENEQ1RSTAkJ CTB4MDQyMAorI2RlZmluZSBIU1IJCQkweDA0MjQKKyNkZWZpbmUgSERJU1BSCQkJMHgwNDI4Cisj ZGVmaW5lIFZTUgkJCTB4MDQyQworI2RlZmluZSBWRElTUFIJCQkweDA0MzAKKyNkZWZpbmUgVkZV RU4JCQkweDA0MzQKKworLyogREJJLUIgSG9zdCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgREJJQkNU UkwJCTB4MDQ0MAorCisvKiBTUEkgTWFzdGVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBTUElDTVIJ CQkweDA0NTAKKyNkZWZpbmUgU1BJVENSCQkJMHgwNDU0CisKKy8qIFN5c3RlbSBDb250cm9sbGVy IFJlZ2lzdGVycyAqLworI2RlZmluZSBTWVNTVEFUCQkJMHgwNDYwCisjZGVmaW5lIFNZU0NUUkwJ CQkweDA0NjQKKyNkZWZpbmUgU1lTUExMMQkJCTB4MDQ2OAorI2RlZmluZSBTWVNQTEwyCQkJMHgw NDZDCisjZGVmaW5lIFNZU1BMTDMJCQkweDA0NzAKKyNkZWZpbmUgU1lTUE1DVFJMCQkweDA0N0MK KworLyogR1BJTyBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgR1BJT0MJCQkweDA0ODAKKyNkZWZpbmUg R1BJT08JCQkweDA0ODQKKyNkZWZpbmUgR1BJT0kJCQkweDA0ODgKKworLyogSTJDIFJlZ2lzdGVy cyAqLworI2RlZmluZSBJMkNDTEtDVFJMCQkweDA0OTAKKworLyogQ2hpcC9SZXYgUmVnaXN0ZXJz ICovCisjZGVmaW5lIElEUkVHCQkJMHgwNEEwCisKKy8qIERlYnVnIFJlZ2lzdGVycyAqLworI2Rl ZmluZSBXQ01EUVVFVUUJCTB4MDUwMAorI2RlZmluZSBSQ01EUVVFVUUJCTB4MDUwNAorCitzdHJ1 Y3QgcnBpX3RvdWNoc2NyZWVuIHsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSBiYXNlOworCXN0cnVjdCBk cm1fYnJpZGdlICpwYW5lbF9icmlkZ2U7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpOwor CXN0cnVjdCBpMmNfY2xpZW50ICpicmlkZ2VfaTJjOworfTsKKworc3RhdGljIHN0cnVjdCBycGlf dG91Y2hzY3JlZW4gKmJyaWRnZV90b190cyhzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQorewor CXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuLCBiYXNl KTsKK30KKworc3RhdGljIHU4IHJwaV90b3VjaHNjcmVlbl9pMmNfcmVhZChzdHJ1Y3QgcnBpX3Rv dWNoc2NyZWVuICp0cywgdTggcmVnKQoreworCXJldHVybiBpMmNfc21idXNfcmVhZF9ieXRlX2Rh dGEodHMtPmJyaWRnZV9pMmMsIHJlZyk7Cit9CisKK3N0YXRpYyB2b2lkIHJwaV90b3VjaHNjcmVl bl9pMmNfd3JpdGUoc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHMsCisJCQkJICAgICAgdTggcmVn LCB1OCB2YWwpCit7CisJaW50IHJldDsKKworCXJldCA9IGkyY19zbWJ1c193cml0ZV9ieXRlX2Rh dGEodHMtPmJyaWRnZV9pMmMsIHJlZywgdmFsKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZ0cy0+ ZHNpLT5kZXYsICJJMkMgd3JpdGUgZmFpbGVkOiAlZFxuIiwgcmV0KTsKK30KKworc3RhdGljIGlu dCBycGlfdG91Y2hzY3JlZW5fd3JpdGUoc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHMsIHUxNiBy ZWcsIHUzMiB2YWwpCit7CisjaWYgMAorCS8qIFRoZSBmaXJtd2FyZSB1c2VzIExQIERTSSB0cmFu c2FjdGlvbnMgbGlrZSB0aGlzIHRvIGJyaW5nIHVwCisJICogdGhlIGhhcmR3YXJlLCB3aGljaCBz aG91bGQgYmUgZmFzdGVyIHRoYW4gdXNpbmcgSTJDIHRvIHRoZW4KKwkgKiBwYXNzIHRvIHRoZSBU b3NoaWJhLiAgSG93ZXZlciwgSSB3YXMgdW5hYmxlIHRvIGdldCBpdCB0bworCSAqIHdvcmsuCisJ ICovCisJdTggbXNnW10gPSB7CisJCXJlZywKKwkJcmVnID4+IDgsCisJCXZhbCwKKwkJdmFsID4+ IDgsCisJCXZhbCA+PiAxNiwKKwkJdmFsID4+IDI0LAorCX07CisKKwltaXBpX2RzaV9kY3Nfd3Jp dGVfYnVmZmVyKHRzLT5kc2ksIG1zZywgc2l6ZW9mKG1zZykpOworI2Vsc2UKKwlycGlfdG91Y2hz Y3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfV1JfQUREUkgsIHJlZyA+PiA4KTsKKwlycGlfdG91Y2hz Y3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfV1JfQUREUkwsIHJlZyk7CisJcnBpX3RvdWNoc2NyZWVu X2kyY193cml0ZSh0cywgUkVHX1dSSVRFSCwgdmFsID4+IDgpOworCXJwaV90b3VjaHNjcmVlbl9p MmNfd3JpdGUodHMsIFJFR19XUklURUwsIHZhbCk7CisjZW5kaWYKKworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCBycGlfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSkKK3sKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0cyA9IGJyaWRnZV90b190cyhicmlkZ2Up OworCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BXTSwgMCk7CisKKwlycGlf dG91Y2hzY3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfUE9XRVJPTiwgMCk7CisJdWRlbGF5KDEpOwor fQorCitzdGF0aWMgdm9pZCBycGlfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQoreworCXN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzID0gYnJpZGdlX3RvX3RzKGJyaWRn ZSk7CisJaW50IGk7CisKKwlycGlfdG91Y2hzY3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfUE9XRVJP TiwgMSk7CisJLyogV2FpdCBmb3IgblBXUkRXTiB0byBnbyBsb3cgdG8gaW5kaWNhdGUgcG93ZXJv biBpcyBkb25lLiAqLworCWZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgeworCQlpZiAocnBpX3Rv dWNoc2NyZWVuX2kyY19yZWFkKHRzLCBSRUdfUE9SVEIpICYgMSkKKwkJCWJyZWFrOworCX0KKwor CXJwaV90b3VjaHNjcmVlbl93cml0ZSh0cywgRFNJX0xBTkVFTkFCTEUsCisJCQkgICAgICBEU0lf TEFORUVOQUJMRV9DTE9DSyB8CisJCQkgICAgICBEU0lfTEFORUVOQUJMRV9EMCk7CisJcnBpX3Rv dWNoc2NyZWVuX3dyaXRlKHRzLCBQUElfRDBTX0NMUlNJUE9DT1VOVCwgMHgwNSk7CisJcnBpX3Rv dWNoc2NyZWVuX3dyaXRlKHRzLCBQUElfRDFTX0NMUlNJUE9DT1VOVCwgMHgwNSk7CisJcnBpX3Rv dWNoc2NyZWVuX3dyaXRlKHRzLCBQUElfRDBTX0FUTVIsIDB4MDApOworCXJwaV90b3VjaHNjcmVl bl93cml0ZSh0cywgUFBJX0QxU19BVE1SLCAweDAwKTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUo dHMsIFBQSV9MUFRYVElNRUNOVCwgMHgwMyk7CisKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMs IFNQSUNNUiwgMHgwMCk7CisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBMQ0RDVFJMLCAweDAw MTAwMTUwKTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFNZU0NUUkwsIDB4MDQwZik7CisJ bXNsZWVwKDEwMCk7CisKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQSV9TVEFSVFBQSSwg MHgwMSk7CisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBEU0lfU1RBUlREU0ksIDB4MDEpOwor CW1zbGVlcCgxMDApOworCisJLyogVHVybiBvbiB0aGUgYmFja2xpZ2h0LiAqLworCXJwaV90b3Vj aHNjcmVlbl9pMmNfd3JpdGUodHMsIFJFR19QV00sIDI1NSk7CisKKwkvKiBEZWZhdWx0IHRvIHRo ZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBjbG9zZWQgc291cmNlCisJICogZmlybXdhcmUgdXNl ZCBmb3IgdGhlIHBhbmVsLiAgUnVudGltZSByb3RhdGlvbgorCSAqIGNvbmZpZ3VyYXRpb24gd2ls bCBiZSBzdXBwb3J0ZWQgdXNpbmcgVkM0J3MgcGxhbmUKKwkgKiBvcmllbnRhdGlvbiBiaXRzLgor CSAqLworCXJwaV90b3VjaHNjcmVlbl9pMmNfd3JpdGUodHMsIFJFR19QT1JUQSwgQklUKDIpKTsK K30KKworc3RhdGljIGludCBycGlfYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQoreworCXN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzID0gYnJpZGdlX3RvX3RzKGJyaWRn ZSk7CisKKwlyZXR1cm4gZHJtX2JyaWRnZV9hdHRhY2goYnJpZGdlLT5lbmNvZGVyLCB0cy0+cGFu ZWxfYnJpZGdlLCBicmlkZ2UpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mg cnBpX2JyaWRnZV9mdW5jcyA9IHsKKwkuZW5hYmxlID0gcnBpX2JyaWRnZV9lbmFibGUsCisJLmRp c2FibGUgPSBycGlfYnJpZGdlX2Rpc2FibGUsCisJLmF0dGFjaCA9IHJwaV9icmlkZ2VfYXR0YWNo LAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50ICpycGlfdG91Y2hzY3JlZW5fZ2V0X2ky YyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3Ry dWN0IGRldmljZV9ub2RlICpub2RlOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CisKKwlu b2RlID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsIG5hbWUsIDApOworCWlmICghbm9k ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwljbGllbnQgPSBvZl9maW5kX2kyY19k ZXZpY2VfYnlfbm9kZShub2RlKTsKKwlvZl9ub2RlX3B1dChub2RlKTsKKwlpZiAoIWNsaWVudCkK KwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwlyZXR1cm4gY2xpZW50OworfQorCitzdGF0 aWMgaW50IHJwaV90b3VjaHNjcmVlbl9kc2lfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAq ZHNpKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKKwlzdHJ1Y3QgZHJtX3Bh bmVsICpwYW5lbDsKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0czsKKwlpbnQgcmV0LCB2ZXI7 CisKKwl0cyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqdHMpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIXRzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHRzKTsK KworCXRzLT5kc2kgPSBkc2k7CisJZHNpLT5tb2RlX2ZsYWdzID0gKE1JUElfRFNJX01PREVfVklE RU8gfAorCQkJICAgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNFIHwKKwkJCSAgIE1JUElf RFNJX01PREVfTFBNKTsKKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJZHNp LT5sYW5lcyA9IDE7CisKKwl0cy0+YnJpZGdlX2kyYyA9CisJCXJwaV90b3VjaHNjcmVlbl9nZXRf aTJjKGRldiwgInJhc3BiZXJyeXBpLHRvdWNoc2NyZWVuLWJyaWRnZSIpOworCWlmIChJU19FUlIo dHMtPmJyaWRnZV9pMmMpKSB7CisJCXJldCA9IC1FUFJPQkVfREVGRVI7CisJCXJldHVybiByZXQ7 CisJfQorCisJdmVyID0gcnBpX3RvdWNoc2NyZWVuX2kyY19yZWFkKHRzLCBSRUdfSUQpOworCWlm ICh2ZXIgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiQXRtZWwgSTJDIHJlYWQgZmFpbGVkOiAlZFxu IiwgdmVyKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJc3dpdGNoICh2ZXIpIHsKKwljYXNl IDB4ZGU6IC8qIHZlciAxICovCisJY2FzZSAweGMzOiAvKiB2ZXIgMiAqLworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlkZXZfZXJyKGRldiwgIlVua25vd24gQXRtZWwgZmlybXdhcmUgcmV2aXNpb246 IDB4JTAyeFxuIiwgdmVyKTsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byBlcnJfcmVsZWFzZV9p MmM7CisJfQorCisJZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdlKGRldi0+b2Zfbm9kZSwgMCwg MCwgJnBhbmVsLCBOVUxMKTsKKwlpZiAoIXBhbmVsKQorCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsK KworCXRzLT5wYW5lbF9icmlkZ2UgPSBkcm1fcGFuZWxfYnJpZGdlX2FkZChwYW5lbCwgRFJNX01P REVfQ09OTkVDVE9SX0RTSSk7CisJaWYgKElTX0VSUih0cy0+cGFuZWxfYnJpZGdlKSkgeworCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byBjcmVhdGUgcGFuZWwgYnJpZGdlXG4iKTsKKwkJcmV0ID0g UFRSX0VSUih0cy0+cGFuZWxfYnJpZGdlKTsKKwkJZ290byBlcnJfcmVsZWFzZV9pMmM7CisJfQor CisJLyogVHVybiBvZmYgYXQgYm9vdCwgc28gd2UgY2FuIGNsZWFubHkgc2VxdWVuY2UgcG93ZXJp bmcgb24uICovCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BPV0VST04sIDAp OworCisJdHMtPmJhc2UuZnVuY3MgPSAmcnBpX2JyaWRnZV9mdW5jczsKKwl0cy0+YmFzZS5vZl9u b2RlID0gZGV2LT5vZl9ub2RlOworCisJcmV0ID0gZHJtX2JyaWRnZV9hZGQoJnRzLT5iYXNlKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBicmlkZ2VcbiIpOwor CQlnb3RvIGVycl9yZW1vdmVfYnJpZGdlOworCX0KKworCXJldHVybiBtaXBpX2RzaV9hdHRhY2go ZHNpKTsKKworZXJyX3JlbW92ZV9icmlkZ2U6CisJZHJtX3BhbmVsX2JyaWRnZV9yZW1vdmUodHMt PnBhbmVsX2JyaWRnZSk7CitlcnJfcmVsZWFzZV9pMmM6CisJcHV0X2RldmljZSgmdHMtPmJyaWRn ZV9pMmMtPmRldik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBycGlfdG91Y2hzY3Jl ZW5fZHNpX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gJmRzaS0+ZGV2OworCXN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldDsKKworCXJldCA9IG1pcGlfZHNpX2RldGFjaChk c2kpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoJmRzaS0+ZGV2LCAiZmFpbGVkIHRvIGRl dGFjaCBmcm9tIERTSSBob3N0OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlk cm1fcGFuZWxfYnJpZGdlX3JlbW92ZSh0cy0+cGFuZWxfYnJpZGdlKTsKKwlkcm1fYnJpZGdlX3Jl bW92ZSgmdHMtPmJhc2UpOworCisJcHV0X2RldmljZSgmdHMtPmJyaWRnZV9pMmMtPmRldik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcnBpX3RvdWNoc2NyZWVuX2RzaV9zaHV0ZG93 bihzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0g JmRzaS0+ZGV2OworCXN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisKKwlycGlfdG91Y2hzY3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfUE9XRVJPTiwgMCk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJwaV90b3VjaHNjcmVlbl9v Zl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAicmFzcGJlcnJ5cGksN2luY2gtdG91Y2hz Y3JlZW4tYnJpZGdlIiB9LAorCXsgfSAvKiBzZW50aW5lbCAqLworfTsKK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIHJwaV90b3VjaHNjcmVlbl9vZl9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgbWlw aV9kc2lfZHJpdmVyIHJwaV90b3VjaHNjcmVlbl9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJ Lm5hbWUgPSAicmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4tYnJpZGdlIiwKKwkJLm9mX21hdGNoX3Rh YmxlID0gcnBpX3RvdWNoc2NyZWVuX29mX21hdGNoLAorCX0sCisJLnByb2JlID0gcnBpX3RvdWNo c2NyZWVuX2RzaV9wcm9iZSwKKwkucmVtb3ZlID0gcnBpX3RvdWNoc2NyZWVuX2RzaV9yZW1vdmUs CisJLnNodXRkb3duID0gcnBpX3RvdWNoc2NyZWVuX2RzaV9zaHV0ZG93biwKK307Cittb2R1bGVf bWlwaV9kc2lfZHJpdmVyKHJwaV90b3VjaHNjcmVlbl9kcml2ZXIpOworCitNT0RVTEVfQVVUSE9S KCJFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJS YXNwYmVycnkgUGkgNy1pbmNoIHRvdWNoc2NyZWVuIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0Uo IkdQTCB2MiIpOwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK