From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aleix Roca Nonell Subject: [PATCH 2/6] irqchip: Add Realtek RTD129x intc driver Date: Sun, 7 Jul 2019 15:22:56 +0200 Message-ID: <20190707132256.GC13340@arks.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Andreas =?utf-8?Q?F=C3=A4rber?= , Rob Herring , Mark Rutland , Thomas Gleixner , Jason Cooper , Marc Zyngier Cc: Matthias Brugger , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB0aGUgUlREMTI5NiBhbmQgUlREMTI5NSBpbnRl cnJ1cHQKY29udHJvbGxlciAoaW50YykuIEl0IGlzIGJhc2VkIG9uIGJvdGggdGhlIEJQSS1TSU5P Vk9JUCBwcm9qZWN0IGFuZApBbmRyZWFzIEbDpHJiZXIncyBwcmV2aW91cyBhdHRlbXB0IHRvIHN1 Ym1pdCBhIHNpbWlsYXIgZHJpdmVyLgoKVGhlcmUgaXMgY3VycmVudGx5IG5vIHB1YmxpY2x5IGF2 YWlsYWJsZSBkYXRhc2hlZXQgb24gdGhpcyBTb0MgYW5kIHRoZQpleGFjdCBiZWhhdmlvdXIgb2Yg dGhlIHJlZ2lzdGVycyBjb250cm9sbGluZyB0aGUgaW50YyByZW1haW4gdW5jZXJ0YWluLgoKVGhp cyBkcml2ZXIgY29udHJvbHMgdHdvIGludGNzOiAiaXNvIiBhbmQgIm1pc2MiLiBFYWNoIGludGMg aGFzIGl0cyBvd24KSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAoSUVSKSBhbmQgSW50ZXJydXB0 IFN0YXR1cyBSZXNnaXN0ZXIgKElTUikuCkhvd2V2ZXIsIG5vdCBhbGwgIm1pc2MiIGludGMgaXJx cyBoYXZlIHRoZSBzYW1lIG9mZnNldHMgZm9yIGJvdGggSVNSIGFuZApJRVIuIEZvciB0aGlzIHJl YXNvbiBhbiBJU1IgdG8gSUVSIG9mZnNldHMgdGFibGUgaXMgZGVmaW5lZC4KClRoZSBkcml2ZXIg Y2F0Y2hlcyB0aGUgSUVSIHZhbHVlIHRvIHJlZHVjZSBhY2Nlc3NlcyB0byB0aGUgdGFibGUgaW5z aWRlIHRoZQppbnRlcnJ1cHQgaGFuZGxlci4gQWN0dWFsbHksIHRoZSBkcml2ZXIgc3RvcmVzIHRo ZSBJU1Igb2Zmc2V0cyBvZiBjdXJyZW50bHkKZW5hYmxlZCBpbnRlcnJ1cHRzIGluIGEgdmFyaWFi bGUuCgpTaWduZWQtb2ZmLWJ5OiBBbGVpeCBSb2NhIE5vbmVsbCA8a2VybmVscm9ja3NAZ21haWwu Y29tPgotLS0KIGRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZSAgICAgIHwgICAxICsKIGRyaXZlcnMv aXJxY2hpcC9pcnEtcnRkMTI5eC5jIHwgMzcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzcyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2lycWNoaXAvaXJxLXJ0ZDEyOXguYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aXJxY2hpcC9NYWtlZmlsZSBiL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQppbmRleCA2MDZhMDAz YTAwMDAuLjA2ODljMzk1NjI1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQpAQCAtMTAwLDMgKzEwMCw0IEBAIG9iai0k KENPTkZJR19NQURFUkFfSVJRKQkJKz0gaXJxLW1hZGVyYS5vCiBvYmotJChDT05GSUdfTFMxWF9J UlEpCQkJKz0gaXJxLWxzMXgubwogb2JqLSQoQ09ORklHX1RJX1NDSV9JTlRSX0lSUUNISVApCSs9 IGlycS10aS1zY2ktaW50ci5vCiBvYmotJChDT05GSUdfVElfU0NJX0lOVEFfSVJRQ0hJUCkJKz0g aXJxLXRpLXNjaS1pbnRhLm8KK29iai0kKENPTkZJR19BUkNIX1JFQUxURUspCQkrPSBpcnEtcnRk MTI5eC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLXJ0ZDEyOXguYyBiL2RyaXZl cnMvaXJxY2hpcC9pcnEtcnRkMTI5eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNzYzNThjYTUwZjEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9pcnFjaGlw L2lycS1ydGQxMjl4LmMKQEAgLTAsMCArMSwzNzEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCisKKyNpbmNsdWRlIDxsaW51eC9pcnFjaGlwLmg+CisjaW5jbHVkZSA8bGlu dXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CisjaW5jbHVkZSA8bGludXgv b2ZfaXJxLmg+CisjaW5jbHVkZSA8bGludXgvaXJxZG9tYWluLmg+CisjaW5jbHVkZSA8bGludXgv aW8uaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2lycWNo aXAuaD4KKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+CisjaW5jbHVkZSA8bGludXgvaXJxY2hpcC9j aGFpbmVkX2lycS5oPgorCisjZGVmaW5lIFJURDEyOVhfSU5UQ19OUl9JUlFTIDMyCisjZGVmaW5l IERFVl9OQU1FICJSVEQxMjk2X0lOVEMiCisKKy8qCisgKiBUaGlzIGludGVycnVwdCBjb250cm9s bGVyIChoZXJlaW5hZnRlciBpbnRjKSBkcml2ZXIgY29udHJvbHMgdHdvIGludGNzOiAiaXNvIgor ICogYW5kICJtaXNjIi4gRWFjaCBpbnRjIGhhcyBpdHMgb3duIEludGVycnVwdCBFbmFibGUgUmVn aXN0ZXIgKElFUikgYW5kCisgKiBJbnRlcnJ1cHQgU3RhdHVzIFJlc2dpc3RlciAoSVNSKS4gSG93 ZXZlciwgbm90IGFsbCAibWlzYyIgaW50YyBpcnFzIGhhdmUgdGhlCisgKiBzYW1lIG9mZnNldHMg Zm9yIGJvdGggSVNSIGFuZCBJRVIuIEZvciB0aGlzIHJlYXNvbiBhbiBJU1IgdG8gSUVSIG9mZnNl dHMKKyAqIHRhYmxlIGlzIGRlZmluZWQuIEFsc28sIHRvIHJlZHVjZSBhY2Nlc3NlcyB0byB0aGlz IHRhYmxlIGluIHRoZSBpbnRlcnJ1cHQKKyAqIGhhbmRsZXIsIHRoZSBkcml2ZXIgc3RvcmVzIHRo ZSBJU1Igb2Zmc2V0cyBvZiBjdXJyZW50bHkgZW5hYmxlZCBpbnRlcnJ1cHRzIGluCisgKiBhIHZh cmlhYmxlLgorICovCisKK2VudW0gbWlzY19pbnRfZW4geworCU1JU0NfSU5UX0ZBSUwJCT0gMHhG RiwKKwlNSVNDX0lOVF9SVkQJCT0gMHhGRSwKKwlNSVNDX0lOVF9FTl9GQU4JCT0gMjksCisJTUlT Q19JTlRfRU5fSTJDMwk9IDI4LAorCU1JU0NfSU5UX0VOX0dTUEkJPSAyNywKKwlNSVNDX0lOVF9F Tl9JMkMyCT0gMjYsCisJTUlTQ19JTlRfRU5fU0MwCQk9IDI0LAorCU1JU0NfSU5UX0VOX0xTQURD MQk9IDIyLAorCU1JU0NfSU5UX0VOX0xTQURDMAk9IDIxLAorCU1JU0NfSU5UX0VOX0dQSU9EQQk9 IDIwLAorCU1JU0NfSU5UX0VOX0dQSU9BCT0gMTksCisJTUlTQ19JTlRfRU5fSTJDNAk9IDE1LAor CU1JU0NfSU5UX0VOX0kyQzUJPSAxNCwKKwlNSVNDX0lOVF9FTl9SVENfREFUQQk9IDEyLAorCU1J U0NfSU5UX0VOX1JUQ19IT1VSCT0gMTEsCisJTUlTQ19JTlRfRU5fUlRDX01JTgk9IDEwLAorCU1J U0NfSU5UX0VOX1VSMgkJPSA3LAorCU1JU0NfSU5UX0VOX1VSMl9UTwk9IDYsCisJTUlTQ19JTlRf RU5fVVIxX1RPCT0gNSwKKwlNSVNDX0lOVF9FTl9VUjEJCT0gMywKK307CisKK2VudW0gaXNvX2lu dF9lbiB7CisJSVNPX0lOVF9GQUlMCQk9IDB4RkYsCisJSVNPX0lOVF9SVkQJCT0gMHhGRSwKKwlJ U09fSU5UX0VOX0kyQzFfUkVRCT0gMzEsCisJSVNPX0lOVF9FTl9HUEhZX0FWCT0gMzAsCisJSVNP X0lOVF9FTl9HUEhZX0RWCT0gMjksCisJSVNPX0lOVF9FTl9HUElPREEJPSAyMCwKKwlJU09fSU5U X0VOX0dQSU9BCT0gMTksCisJSVNPX0lOVF9FTl9SVENfQUxBUk0JPSAxMywKKwlJU09fSU5UX0VO X1JUQ19IU0VDCT0gMTIsCisJSVNPX0lOVF9FTl9JMkMxCQk9IDExLAorCUlTT19JTlRfRU5fSTJD MAkJPSA4LAorCUlTT19JTlRfRU5fSVJEQQkJPSA1LAorCUlTT19JTlRfRU5fVVIwCQk9IDIsCit9 OworCit1bnNpZ25lZCBjaGFyIHJ0ZDEyOXhfaW50Y19lbmFibGVfbWFwX21pc2NbUlREMTI5WF9J TlRDX05SX0lSUVNdID0geworCU1JU0NfSU5UX0ZBSUwsCQkvKiBCaXQwICovCisJTUlTQ19JTlRf RkFJTCwJCS8qIEJpdDEgKi8KKwlNSVNDX0lOVF9SVkQsCQkvKiBCaXQyICovCisJTUlTQ19JTlRf RU5fVVIxLAkvKiBCaXQzICovCisJTUlTQ19JTlRfRkFJTCwJCS8qIEJpdDQgKi8KKwlNSVNDX0lO VF9FTl9VUjFfVE8sCS8qIEJpdDUgKi8KKwlNSVNDX0lOVF9SVkQsCQkvKiBCaXQ2ICovCisJTUlT Q19JTlRfUlZELAkJLyogQml0NyAqLworCU1JU0NfSU5UX0VOX1VSMiwJLyogQml0OCAqLworCU1J U0NfSU5UX1JWRCwJCS8qIEJpdDkgKi8KKwlNSVNDX0lOVF9FTl9SVENfTUlOLAkvKiBCaXQxMCAq LworCU1JU0NfSU5UX0VOX1JUQ19IT1VSLAkvKiBCaXQxMSAqLworCU1JU0NfSU5UX0VOX1JUQ19E QVRBLAkvKiBCaXQxMiAqLworCU1JU0NfSU5UX0VOX1VSMl9UTywJLyogQml0MTMgKi8KKwlNSVND X0lOVF9FTl9JMkM1LAkvKiBCaXQxNCAqLworCU1JU0NfSU5UX0VOX0kyQzQsCS8qIEJpdDE1ICov CisJTUlTQ19JTlRfRkFJTCwJCS8qIEJpdDE2ICovCisJTUlTQ19JTlRfRkFJTCwJCS8qIEJpdDE3 ICovCisJTUlTQ19JTlRfRkFJTCwJCS8qIEJpdDE4ICovCisJTUlTQ19JTlRfRU5fR1BJT0EsCS8q IEJpdDE5ICovCisJTUlTQ19JTlRfRU5fR1BJT0RBLAkvKiBCaXQyMCAqLworCU1JU0NfSU5UX0VO X0xTQURDMCwJLyogQml0MjEgKi8KKwlNSVNDX0lOVF9FTl9MU0FEQzEsCS8qIEJpdDIyICovCisJ TUlTQ19JTlRfRU5fSTJDMywJLyogQml0MjMgKi8KKwlNSVNDX0lOVF9FTl9TQzAsCS8qIEJpdDI0 ICovCisJTUlTQ19JTlRfRkFJTCwJCS8qIEJpdDI1ICovCisJTUlTQ19JTlRfRU5fSTJDMiwJLyog Qml0MjYgKi8KKwlNSVNDX0lOVF9FTl9HU1BJLAkvKiBCaXQyNyAqLworCU1JU0NfSU5UX0ZBSUws CQkvKiBCaXQyOCAqLworCU1JU0NfSU5UX0VOX0ZBTiwJLyogQml0MjkgKi8KKwlNSVNDX0lOVF9G QUlMLAkJLyogQml0MzAgKi8KKwlNSVNDX0lOVF9GQUlMCQkvKiBCaXQzMSAqLworfTsKKwordW5z aWduZWQgY2hhciBydGQxMjl4X2ludGNfZW5hYmxlX21hcF9pc29bUlREMTI5WF9JTlRDX05SX0lS UVNdID0geworCUlTT19JTlRfRkFJTCwJCS8qIEJpdDAgKi8KKwlJU09fSU5UX1JWRCwJCS8qIEJp dDEgKi8KKwlJU09fSU5UX0VOX1VSMCwJCS8qIEJpdDIgKi8KKwlJU09fSU5UX0ZBSUwsCQkvKiBC aXQzICovCisJSVNPX0lOVF9GQUlMLAkJLyogQml0NCAqLworCUlTT19JTlRfRU5fSVJEQSwJLyog Qml0NSAqLworCUlTT19JTlRfRkFJTCwJCS8qIEJpdDYgKi8KKwlJU09fSU5UX1JWRCwJCS8qIEJp dDcgKi8KKwlJU09fSU5UX0VOX0kyQzAsCS8qIEJpdDggKi8KKwlJU09fSU5UX1JWRCwJCS8qIEJp dDkgKi8KKwlJU09fSU5UX0ZBSUwsCQkvKiBCaXQxMCAqLworCUlTT19JTlRfRU5fSTJDMSwJLyog Qml0MTEgKi8KKwlJU09fSU5UX0VOX1JUQ19IU0VDLAkvKiBCaXQxMiAqLworCUlTT19JTlRfRU5f UlRDX0FMQVJNLAkvKiBCaXQxMyAqLworCUlTT19JTlRfRkFJTCwJCS8qIEJpdDE0ICovCisJSVNP X0lOVF9GQUlMLAkJLyogQml0MTUgKi8KKwlJU09fSU5UX0ZBSUwsCQkvKiBCaXQxNiAqLworCUlT T19JTlRfRkFJTCwJCS8qIEJpdDE3ICovCisJSVNPX0lOVF9GQUlMLAkJLyogQml0MTggKi8KKwlJ U09fSU5UX0VOX0dQSU9BLAkvKiBCaXQxOSAqLworCUlTT19JTlRfRU5fR1BJT0RBLAkvKiBCaXQy MCAqLworCUlTT19JTlRfUlZELAkJLyogQml0MjEgKi8KKwlJU09fSU5UX1JWRCwJCS8qIEJpdDIy ICovCisJSVNPX0lOVF9SVkQsCQkvKiBCaXQyMyAqLworCUlTT19JTlRfUlZELAkJLyogQml0MjQg Ki8KKwlJU09fSU5UX0ZBSUwsCQkvKiBCaXQyNSAqLworCUlTT19JTlRfRkFJTCwJCS8qIEJpdDI2 ICovCisJSVNPX0lOVF9GQUlMLAkJLyogQml0MjcgKi8KKwlJU09fSU5UX0ZBSUwsCQkvKiBCaXQy OCAqLworCUlTT19JTlRfRU5fR1BIWV9EViwJLyogQml0MjkgKi8KKwlJU09fSU5UX0VOX0dQSFlf QVYsCS8qIEJpdDMwICovCisJSVNPX0lOVF9FTl9JMkMxX1JFUQkvKiBCaXQzMSAqLworfTsKKwor c3RydWN0IHJ0ZDEyOXhfaW50Y19kYXRhIHsKKwl2b2lkIF9faW9tZW0JCSp1bm1hc2s7CisJdm9p ZCBfX2lvbWVtCQkqaXNyOworCXZvaWQgX19pb21lbQkJKmllcjsKKwl1MzIJCQlpZXJfY2FjaGVk OworCXUzMgkJCWlzcl9lbjsKKwlyYXdfc3BpbmxvY2tfdAkJbG9jazsKKwl1bnNpZ25lZCBpbnQJ CXBhcmVudF9pcnE7CisJY29uc3QgdW5zaWduZWQgY2hhcgkqZW5fbWFwOworfTsKKworc3RhdGlj IHN0cnVjdCBpcnFfZG9tYWluICpydGQxMjl4X2ludGNfZG9tYWluOworCitzdGF0aWMgdm9pZCBy dGQxMjl4X2ludGNfaXJxX2hhbmRsZShzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCit7CisJc3RydWN0 IHJ0ZDEyOXhfaW50Y19kYXRhICpwcml2ID0gaXJxX2Rlc2NfZ2V0X2hhbmRsZXJfZGF0YShkZXNj KTsKKwlzdHJ1Y3QgaXJxX2NoaXAgKmNoaXAgPSBpcnFfZGVzY19nZXRfY2hpcChkZXNjKTsKKwl1 bnNpZ25lZCBpbnQgbG9jYWxfaXJxOworCXUzMiBzdGF0dXM7CisJaW50IGk7CisKKwljaGFpbmVk X2lycV9lbnRlcihjaGlwLCBkZXNjKTsKKworCXJhd19zcGluX2xvY2soJnByaXYtPmxvY2spOwor CXN0YXR1cyA9IHJlYWRsX3JlbGF4ZWQocHJpdi0+aXNyKTsKKwlzdGF0dXMgJj0gcHJpdi0+aXNy X2VuOworCXJhd19zcGluX3VubG9jaygmcHJpdi0+bG9jayk7CisKKwl3aGlsZSAoc3RhdHVzKSB7 CisJCWkgPSBfX2ZmcyhzdGF0dXMpOworCQlzdGF0dXMgJj0gfkJJVChpKTsKKworCQlsb2NhbF9p cnEgPSBpcnFfZmluZF9tYXBwaW5nKHJ0ZDEyOXhfaW50Y19kb21haW4sIGkpOworCQlpZiAobGlr ZWx5KGxvY2FsX2lycSkpIHsKKwkJCWlmICghZ2VuZXJpY19oYW5kbGVfaXJxKGxvY2FsX2lycSkp CisJCQkJd3JpdGVsX3JlbGF4ZWQoQklUKGkpLCBwcml2LT5pc3IpOworCQl9IGVsc2UgeworCQkJ aGFuZGxlX2JhZF9pcnEoZGVzYyk7CisJCX0KKwl9CisKKwljaGFpbmVkX2lycV9leGl0KGNoaXAs IGRlc2MpOworfQorCitzdGF0aWMgdm9pZCBydGQxMjl4X2ludGNfbWFzayhzdHJ1Y3QgaXJxX2Rh dGEgKmRhdGEpCit7CisJc3RydWN0IHJ0ZDEyOXhfaW50Y19kYXRhICpwcml2ID0gaXJxX2RhdGFf Z2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7CisKKwl3cml0ZWxfcmVsYXhlZChCSVQoZGF0YS0+aHdp cnEpLCBwcml2LT5pc3IpOworfQorCitzdGF0aWMgdm9pZCBydGQxMjl4X2ludGNfdW5tYXNrKHN0 cnVjdCBpcnFfZGF0YSAqZGF0YSkKK3sKKwlzdHJ1Y3QgcnRkMTI5eF9pbnRjX2RhdGEgKnByaXYg PSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsKKworCXdyaXRlbF9yZWxheGVkKEJJ VChkYXRhLT5od2lycSksIHByaXYtPnVubWFzayk7Cit9CisKK3N0YXRpYyB2b2lkIHJ0ZDEyOXhf aW50Y19lbmFibGUoc3RydWN0IGlycV9kYXRhICpkYXRhKQoreworCXN0cnVjdCBydGQxMjl4X2lu dGNfZGF0YSAqcHJpdiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisJdTggZW5fb2Zmc2V0OworCisJZW5fb2Zmc2V0ID0gcHJpdi0+ZW5f bWFwW2RhdGEtPmh3aXJxXTsKKworCWlmICgoZW5fb2Zmc2V0ICE9IE1JU0NfSU5UX1JWRCkgJiYg KGVuX29mZnNldCAhPSBNSVNDX0lOVF9GQUlMKSkgeworCQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUo JnByaXYtPmxvY2ssIGZsYWdzKTsKKworCQlwcml2LT5pc3JfZW4gfD0gQklUKGRhdGEtPmh3aXJx KTsKKwkJcHJpdi0+aWVyX2NhY2hlZCB8PSBCSVQoZW5fb2Zmc2V0KTsKKwkJd3JpdGVsX3JlbGF4 ZWQocHJpdi0+aWVyX2NhY2hlZCwgcHJpdi0+aWVyKTsKKworCQlyYXdfc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCX0gZWxzZSBpZiAoZW5fb2Zmc2V0ID09IE1J U0NfSU5UX0ZBSUwpIHsKKwkJcHJfZXJyKCJbJXNdIEVuYWJsZSBpcnEoJWx1KSBmYWlsZWRcbiIs IERFVl9OQU1FLCBkYXRhLT5od2lycSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBydGQxMjl4X2lu dGNfZGlzYWJsZShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IHJ0ZDEyOXhfaW50 Y19kYXRhICpwcml2ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwl1OCBlbl9vZmZzZXQ7CisKKwllbl9vZmZzZXQgPSBwcml2LT5lbl9t YXBbZGF0YS0+aHdpcnFdOworCisJaWYgKChlbl9vZmZzZXQgIT0gTUlTQ19JTlRfUlZEKSAmJiAo ZW5fb2Zmc2V0ICE9IE1JU0NfSU5UX0ZBSUwpKSB7CisJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgm cHJpdi0+bG9jaywgZmxhZ3MpOworCisJCXByaXYtPmlzcl9lbiAmPSB+QklUKGRhdGEtPmh3aXJx KTsKKwkJcHJpdi0+aWVyX2NhY2hlZCAmPSB+QklUKGVuX29mZnNldCk7CisJCXdyaXRlbF9yZWxh eGVkKHByaXYtPmllcl9jYWNoZWQsIHByaXYtPmllcik7CisKKwkJcmF3X3NwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwl9IGVsc2UgaWYgKGVuX29mZnNldCA9PSBN SVNDX0lOVF9GQUlMKSB7CisJCXByX2VycigiWyVzXSBEaXNhYmxlIGlycSglbHUpIGZhaWxlZFxu IiwgREVWX05BTUUsIGRhdGEtPmh3aXJxKTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXJxX2No aXAgcnRkMTI5eF9pbnRjX2NoaXAgPSB7CisJLm5hbWUJCT0gREVWX05BTUUsCisJLmlycV9tYXNr CT0gcnRkMTI5eF9pbnRjX21hc2ssCisJLmlycV91bm1hc2sJPSBydGQxMjl4X2ludGNfdW5tYXNr LAorCS5pcnFfZW5hYmxlCT0gcnRkMTI5eF9pbnRjX2VuYWJsZSwKKwkuaXJxX2Rpc2FibGUJPSBy dGQxMjl4X2ludGNfZGlzYWJsZSwKK307CisKK3N0YXRpYyBpbnQgcnRkMTI5eF9pbnRjX21hcChz dHJ1Y3QgaXJxX2RvbWFpbiAqZCwgdW5zaWduZWQgaW50IHZpcnEsCisJCQkgICAgaXJxX2h3X251 bWJlcl90IGh3X2lycSkKK3sKKwlzdHJ1Y3QgcnRkMTI5eF9pbnRjX2RhdGEgKnByaXYgPSBkLT5o b3N0X2RhdGE7CisKKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIodmlycSwgJnJ0ZDEyOXhfaW50 Y19jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTsKKwlpcnFfc2V0X2NoaXBfZGF0YSh2aXJxLCBwcml2 KTsKKwlpcnFfc2V0X3Byb2JlKHZpcnEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgcnRkMTI5eF9pbnRjX2RvbWFpbl9vcHMgPSB7CisJLnhs YXRlCQkJPSBpcnFfZG9tYWluX3hsYXRlX29uZWNlbGwsCisJLm1hcAkJCT0gcnRkMTI5eF9pbnRj X21hcCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0ZDEyOXhfaW50 Y19tYXRjaGVzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDEyOXgtaW50Yy1t aXNjIiwKKwkJLmRhdGEgPSBydGQxMjl4X2ludGNfZW5hYmxlX21hcF9taXNjCisJfSwKKwl7IC5j b21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTI5eC1pbnRjLWlzbyIsCisJCS5kYXRhID0gcnRkMTI5 eF9pbnRjX2VuYWJsZV9tYXBfaXNvCisJfSwKKwl7IH0KK307CisKK3N0YXRpYyBpbnQgcnRkMTI5 eF9pbnRjX29mX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlLAorCQkJCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqcGFyZW50KQoreworCXN0cnVjdCBydGQxMjl4X2ludGNfZGF0YSAqcHJpdjsKKwlj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKKwl1MzIgaXNyX3RtcCwgaWVyX3RtcCwg aWVyX2JpdDsKKwlpbnQgcmV0LCBpOworCisJcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKCpwcml2KSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2KSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJy OworCX0KKworCXJhd19zcGluX2xvY2tfaW5pdCgmcHJpdi0+bG9jayk7CisKKwlwcml2LT5pc3Ig PSBvZl9pb21hcChub2RlLCAwKTsKKwlpZiAoIXByaXYtPmlzcikgeworCQlwcl9lcnIoInVuYWJs ZSB0byBvYnRhaW4gc3RhdHVzIHJlZyBpb21hcCBhZGRyZXNzXG4iKTsKKwkJcmV0ID0gLUVOT01F TTsKKwkJZ290byBmcmVlX3ByaXY7CisJfQorCisJcHJpdi0+aWVyID0gb2ZfaW9tYXAobm9kZSwg MSk7CisJaWYgKCFwcml2LT5pZXIpIHsKKwkJcHJfZXJyKCJ1bmFibGUgdG8gb2J0YWluIGVuYWJs ZSByZWcgaW9tYXAgYWRkcmVzc1xuIik7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gaW91bm1h cF9zdGF0dXM7CisJfQorCisJcHJpdi0+dW5tYXNrID0gb2ZfaW9tYXAobm9kZSwgMik7CisJaWYg KCFwcml2LT51bm1hc2spIHsKKwkJcHJfZXJyKCJ1bmFibGUgdG8gb2J0YWluIHVubWFzayByZWcg aW9tYXAgYWRkcmVzc1xuIik7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gaW91bm1hcF9lbmFi bGU7CisJfQorCisJcHJpdi0+cGFyZW50X2lycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5vZGUs IDApOworCWlmICghcHJpdi0+cGFyZW50X2lycSkgeworCQlwcl9lcnIoImZhaWxlZCB0byBtYXAg cGFyZW50IGludGVycnVwdCAlZFxuIiwgcHJpdi0+cGFyZW50X2lycSk7CisJCXJldCA9IC1FSU5W QUw7CisJCWdvdG8gaW91bm1hcF9hbGw7CisJfQorCisJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKHJ0 ZDEyOXhfaW50Y19tYXRjaGVzLCBub2RlKTsKKwlpZiAoIW1hdGNoKSB7CisJCXByX2VycigiZmFp bGVkIHRvIGZpbmQgbWF0Y2hpbmcgbm9kZVxuIik7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8g aW91bm1hcF9hbGw7CisJfQorCXByaXYtPmVuX21hcCA9IG1hdGNoLT5kYXRhOworCisJLy8gaW5p dGlhbGl6ZSBlbmFibGVkIGlycSdzIG1hcCB0byBpdHMgbWF0Y2hpbmcgc3RhdHVzIGJpdCBpbiBp c3IgYnkKKwkvLyBpbnZlcnNlIHdhbGtpbmcgdGhlIGVuYWJsZSB0byBzdGF0dXMgb2Zmc2V0cyBt YXAuIE9ubHkgbmVlZGVkIGZvcgorCS8vIG1pc2MKKwlwcml2LT5pZXJfY2FjaGVkID0gcmVhZGxf cmVsYXhlZChwcml2LT5pZXIpOworCWlmIChwcml2LT5lbl9tYXAgPT0gcnRkMTI5eF9pbnRjX2Vu YWJsZV9tYXBfbWlzYykgeworCQlpZXJfdG1wID0gcHJpdi0+aWVyX2NhY2hlZDsKKwkJaXNyX3Rt cCA9IDA7CisJCXdoaWxlIChpZXJfdG1wKSB7CisJCQlpZXJfYml0ID0gX19mZnMoaWVyX3RtcCk7 CisJCQlpZXJfdG1wICY9IH5CSVQoaWVyX2JpdCk7CisJCQlmb3IgKGkgPSAwOyBpIDwgUlREMTI5 WF9JTlRDX05SX0lSUVM7IGkrKykKKwkJCQlpZiAocHJpdi0+ZW5fbWFwW2ldID09IGllcl9iaXQp CisJCQkJCWlzcl90bXAgfD0gQklUKGkpOworCQl9CisJCXByaXYtPmlzcl9lbiA9IGlzcl90bXA7 CisJfSBlbHNlIHsKKwkJcHJpdi0+aXNyX2VuID0gcHJpdi0+aWVyX2NhY2hlZDsKKwl9CisKKwly dGQxMjl4X2ludGNfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKG5vZGUsIFJURDEyOVhf SU5UQ19OUl9JUlFTLAorCQkJCQkJICAgICZydGQxMjl4X2ludGNfZG9tYWluX29wcywKKwkJCQkJ CSAgICBwcml2KTsKKwlpZiAoIXJ0ZDEyOXhfaW50Y19kb21haW4pIHsKKwkJcHJfZXJyKCJmYWls ZWQgdG8gY3JlYXRlIGlycSBkb21haW5cbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGlv dW5tYXBfYWxsOworCX0KKworCWlycV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKHByaXYt PnBhcmVudF9pcnEsCisJCQkJCSBydGQxMjl4X2ludGNfaXJxX2hhbmRsZSwgcHJpdik7CisKKwly ZXR1cm4gMDsKKworaW91bm1hcF9hbGw6CisJaW91bm1hcChwcml2LT51bm1hc2spOworaW91bm1h cF9lbmFibGU6CisJaW91bm1hcChwcml2LT5pZXIpOworaW91bm1hcF9zdGF0dXM6CisJaW91bm1h cChwcml2LT5pc3IpOworZnJlZV9wcml2OgorCWtmcmVlKHByaXYpOworZXJyOgorCXJldHVybiBy ZXQ7Cit9CisKK0lSUUNISVBfREVDTEFSRShydGQxMjl4X2ludGNfbWlzYywgInJlYWx0ZWsscnRk MTI5eC1pbnRjLW1pc2MiLAorCQlydGQxMjl4X2ludGNfb2ZfaW5pdCk7CitJUlFDSElQX0RFQ0xB UkUocnRkMTI5eF9pbnRjX2lzbywgInJlYWx0ZWsscnRkMTI5eC1pbnRjLWlzbyIsCisJCXJ0ZDEy OXhfaW50Y19vZl9pbml0KTsKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK