From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haojian Zhuang Subject: Re: [PATCH 1/4] pxa: add namespace on ssp Date: Thu, 15 Apr 2010 23:54:08 -0400 Message-ID: References: <20100409111609.GA13281@sirena.org.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=00504502bd9137a7bc048452905f Return-path: Received: from mail-pw0-f51.google.com (mail-pw0-f51.google.com [209.85.160.51]) by alsa0.perex.cz (Postfix) with ESMTP id 0AD6224387 for ; Fri, 16 Apr 2010 05:54:09 +0200 (CEST) Received: by pwj8 with SMTP id 8so1518164pwj.38 for ; Thu, 15 Apr 2010 20:54:08 -0700 (PDT) In-Reply-To: <20100409111609.GA13281@sirena.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Mark Brown Cc: alsa-devel@alsa-project.org, Eric Miao , linux-arm-kernel , Liam Girdwood List-Id: alsa-devel@alsa-project.org --00504502bd9137a7bc048452905f Content-Type: text/plain; charset=ISO-8859-1 On Fri, Apr 9, 2010 at 7:16 AM, Mark Brown wrote: > On Wed, Mar 31, 2010 at 08:46:42AM -0400, Haojian Zhuang wrote: >> From b52a0d2687e82f81d38198cb450b6a39a9e53851 Mon Sep 17 00:00:00 2001 >> From: Haojian Zhuang >> Date: Wed, 31 Mar 2010 15:08:55 -0400 >> Subject: [PATCH] [ARM] pxa: add namespace on ssp >> >> In order to prevent code ambiguous, add namespace on functions in ssp driver. > > Liam acked these on IRC so I was going to apply them (the interface for > the sysclk configuration should be fixed, but that can be done as a > followup patch) but I can't seem to find a branch that these apply to - > they don't apply cleanly to either Eric's ssp_cleanup branch, the ASoC > for-2.6.35 branch, nor a merge of the two. > Hi Mark, Excuse me for late response. Now patches are refreshed and they're still based on Eric's ssp-cleanup branch. Since these patches are relied on some ssp's fix. Do you want to immigrate these patches into ASoC's tree? Would you pull eric's ssp-cleanup branch into ASoC tree? Thanks Haojian --00504502bd9137a7bc048452905f Content-Type: text/x-patch; charset=US-ASCII; name="0001--ARM-pxa-add-namespace-on-ssp.patch" Content-Disposition: attachment; filename="0001--ARM-pxa-add-namespace-on-ssp.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g82wzza60 RnJvbSBiNTJhMGQyNjg3ZTgyZjgxZDM4MTk4Y2I0NTBiNmEzOWE5ZTUzODUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFydmVs bC5jb20+CkRhdGU6IFdlZCwgMzEgTWFyIDIwMTAgMTU6MDg6NTUgLTA0MDAKU3ViamVjdDogW1BB VENIXSBbQVJNXSBweGE6IGFkZCBuYW1lc3BhY2Ugb24gc3NwCgpJbiBvcmRlciB0byBwcmV2ZW50 IGNvZGUgYW1iaWd1b3VzLCBhZGQgbmFtZXNwYWNlIG9uIGZ1bmN0aW9ucyBpbiBzc3AgZHJpdmVy LgoKU2lnbmVkLW9mZi1ieTogSGFvamlhbiBaaHVhbmcgPGhhb2ppYW4uemh1YW5nQG1hcnZlbGwu Y29tPgotLS0KIGFyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9zc3AuaCB8ICAgMTIgKyst LQogYXJjaC9hcm0vcGxhdC1weGEvc3NwLmMgICAgICAgICAgICAgIHwgICAyMiArKystLS0KIGRy aXZlcnMvc3BpL3B4YTJ4eF9zcGkuYyAgICAgICAgICAgICB8ICAgIDggKy0KIHNvdW5kL3NvYy9w eGEvcHhhLXNzcC5jICAgICAgICAgICAgICB8ICAxMzIgKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvc3NwLmgg Yi9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvc3NwLmgKaW5kZXggZDE2ZDc5YS4uZmU0 MzE1MCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9wbGF0L3NzcC5oCisr KyBiL2FyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9zc3AuaApAQCAtMTU5LDI4ICsxNTks MjggQEAgc3RydWN0IHNzcF9kZXZpY2UgewogfTsKIAogLyoqCi0gKiBzc3Bfd3JpdGVfcmVnIC0g V3JpdGUgdG8gYSBTU1AgcmVnaXN0ZXIKKyAqIHB4YV9zc3Bfd3JpdGVfcmVnIC0gV3JpdGUgdG8g YSBTU1AgcmVnaXN0ZXIKICAqCiAgKiBAZGV2OiBTU1AgZGV2aWNlIHRvIGFjY2VzcwogICogQHJl ZzogUmVnaXN0ZXIgdG8gd3JpdGUgdG8KICAqIEB2YWw6IFZhbHVlIHRvIGJlIHdyaXR0ZW4uCiAg Ki8KLXN0YXRpYyBpbmxpbmUgdm9pZCBzc3Bfd3JpdGVfcmVnKHN0cnVjdCBzc3BfZGV2aWNlICpk ZXYsIHUzMiByZWcsIHUzMiB2YWwpCitzdGF0aWMgaW5saW5lIHZvaWQgcHhhX3NzcF93cml0ZV9y ZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTMyIHZhbCkKIHsKIAlfX3Jhd193 cml0ZWwodmFsLCBkZXYtPm1taW9fYmFzZSArIHJlZyk7CiB9CiAKIC8qKgotICogc3NwX3JlYWRf cmVnIC0gUmVhZCBmcm9tIGEgU1NQIHJlZ2lzdGVyCisgKiBweGFfc3NwX3JlYWRfcmVnIC0gUmVh ZCBmcm9tIGEgU1NQIHJlZ2lzdGVyCiAgKgogICogQGRldjogU1NQIGRldmljZSB0byBhY2Nlc3MK ICAqIEByZWc6IFJlZ2lzdGVyIHRvIHJlYWQgZnJvbQogICovCi1zdGF0aWMgaW5saW5lIHUzMiBz c3BfcmVhZF9yZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZykKK3N0YXRpYyBpbmxp bmUgdTMyIHB4YV9zc3BfcmVhZF9yZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZykK IHsKIAlyZXR1cm4gX19yYXdfcmVhZGwoZGV2LT5tbWlvX2Jhc2UgKyByZWcpOwogfQogCi1zdHJ1 Y3Qgc3NwX2RldmljZSAqc3NwX3JlcXVlc3QoaW50IHBvcnQsIGNvbnN0IGNoYXIgKmxhYmVsKTsK LXZvaWQgc3NwX2ZyZWUoc3RydWN0IHNzcF9kZXZpY2UgKik7CitzdHJ1Y3Qgc3NwX2RldmljZSAq cHhhX3NzcF9yZXF1ZXN0KGludCBwb3J0LCBjb25zdCBjaGFyICpsYWJlbCk7Cit2b2lkIHB4YV9z c3BfZnJlZShzdHJ1Y3Qgc3NwX2RldmljZSAqKTsKICNlbmRpZiAvKiBfX0FTTV9BUkNIX1NTUF9I ICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXB4YS9zc3AuYyBiL2FyY2gvYXJtL3BsYXQt cHhhL3NzcC5jCmluZGV4IGNmZWJjZDguLjUxMTgwNWUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3Bs YXQtcHhhL3NzcC5jCisrKyBiL2FyY2gvYXJtL3BsYXQtcHhhL3NzcC5jCkBAIC0zNyw3ICszNyw3 IEBACiBzdGF0aWMgREVGSU5FX01VVEVYKHNzcF9sb2NrKTsKIHN0YXRpYyBMSVNUX0hFQUQoc3Nw X2xpc3QpOwogCi1zdHJ1Y3Qgc3NwX2RldmljZSAqc3NwX3JlcXVlc3QoaW50IHBvcnQsIGNvbnN0 IGNoYXIgKmxhYmVsKQorc3RydWN0IHNzcF9kZXZpY2UgKnB4YV9zc3BfcmVxdWVzdChpbnQgcG9y dCwgY29uc3QgY2hhciAqbGFiZWwpCiB7CiAJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IE5VTEw7 CiAKQEAgLTU4LDkgKzU4LDkgQEAgc3RydWN0IHNzcF9kZXZpY2UgKnNzcF9yZXF1ZXN0KGludCBw b3J0LCBjb25zdCBjaGFyICpsYWJlbCkKIAogCXJldHVybiBzc3A7CiB9Ci1FWFBPUlRfU1lNQk9M KHNzcF9yZXF1ZXN0KTsKK0VYUE9SVF9TWU1CT0wocHhhX3NzcF9yZXF1ZXN0KTsKIAotdm9pZCBz c3BfZnJlZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQordm9pZCBweGFfc3NwX2ZyZWUoc3RydWN0 IHNzcF9kZXZpY2UgKnNzcCkKIHsKIAltdXRleF9sb2NrKCZzc3BfbG9jayk7CiAJaWYgKHNzcC0+ dXNlX2NvdW50KSB7CkBAIC03MCw5ICs3MCw5IEBAIHZvaWQgc3NwX2ZyZWUoc3RydWN0IHNzcF9k ZXZpY2UgKnNzcCkKIAkJZGV2X2Vycigmc3NwLT5wZGV2LT5kZXYsICJkZXZpY2UgYWxyZWFkeSBm cmVlXG4iKTsKIAltdXRleF91bmxvY2soJnNzcF9sb2NrKTsKIH0KLUVYUE9SVF9TWU1CT0woc3Nw X2ZyZWUpOworRVhQT1JUX1NZTUJPTChweGFfc3NwX2ZyZWUpOwogCi1zdGF0aWMgaW50IF9fZGV2 aW5pdCBzc3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3N0YXRpYyBpbnQg X19kZXZpbml0IHB4YV9zc3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsK IAljb25zdCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2lkICppZCA9IHBsYXRmb3JtX2dldF9kZXZp Y2VfaWQocGRldik7CiAJc3RydWN0IHJlc291cmNlICpyZXM7CkBAIC0xNjQsNyArMTY0LDcgQEAg ZXJyX2ZyZWU6CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBfX2RldmV4aXQgc3NwX3Jl bW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQorc3RhdGljIGludCBfX2RldmV4aXQg cHhhX3NzcF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3Qg cmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwOwpAQCAtMTk2LDkgKzE5Niw5 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2lkIHNzcF9pZF90YWJsZVtd ID0gewogCXsgfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNzcF9kcml2 ZXIgPSB7Ci0JLnByb2JlCQk9IHNzcF9wcm9iZSwKLQkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKHNz cF9yZW1vdmUpLAorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcHhhX3NzcF9kcml2ZXIg PSB7CisJLnByb2JlCQk9IHB4YV9zc3BfcHJvYmUsCisJLnJlbW92ZQkJPSBfX2RldmV4aXRfcChw eGFfc3NwX3JlbW92ZSksCiAJLmRyaXZlcgkJPSB7CiAJCS5vd25lcgk9IFRISVNfTU9EVUxFLAog CQkubmFtZQk9ICJweGEyeHgtc3NwIiwKQEAgLTIwOCwxMiArMjA4LDEyIEBAIHN0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIHNzcF9kcml2ZXIgPSB7CiAKIHN0YXRpYyBpbnQgX19pbml0IHB4 YV9zc3BfaW5pdCh2b2lkKQogewotCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnNz cF9kcml2ZXIpOworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnB4YV9zc3BfZHJp dmVyKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IHB4YV9zc3BfZXhpdCh2b2lkKQogewotCXBs YXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzc3BfZHJpdmVyKTsKKwlwbGF0Zm9ybV9kcml2ZXJf dW5yZWdpc3RlcigmcHhhX3NzcF9kcml2ZXIpOwogfQogCiBhcmNoX2luaXRjYWxsKHB4YV9zc3Bf aW5pdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMgYi9kcml2ZXJzL3Nw aS9weGEyeHhfc3BpLmMKaW5kZXggNGE2NGRhNy4uMmZkN2Q1YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zcGkvcHhhMnh4X3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYwpAQCAtMTQ2 NCw3ICsxNDY0LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHhhMnh4X3NwaV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJcGxhdGZvcm1faW5mbyA9IGRldi0+cGxhdGZvcm1f ZGF0YTsKIAotCXNzcCA9IHNzcF9yZXF1ZXN0KHBkZXYtPmlkLCBwZGV2LT5uYW1lKTsKKwlzc3Ag PSBweGFfc3NwX3JlcXVlc3QocGRldi0+aWQsIHBkZXYtPm5hbWUpOwogCWlmIChzc3AgPT0gTlVM TCkgewogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVxdWVzdCBTU1AlZFxuIiwg cGRldi0+aWQpOwogCQlyZXR1cm4gLUVOT0RFVjsKQEAgLTE0NzQsNyArMTQ3NCw3IEBAIHN0YXRp YyBpbnQgX19pbml0IHB4YTJ4eF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKIAltYXN0ZXIgPSBzcGlfYWxsb2NfbWFzdGVyKGRldiwgc2l6ZW9mKHN0cnVjdCBkcml2ZXJf ZGF0YSkgKyAxNik7CiAJaWYgKCFtYXN0ZXIpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2Fu bm90IGFsbG9jIHNwaV9tYXN0ZXJcbiIpOwotCQlzc3BfZnJlZShzc3ApOworCQlweGFfc3NwX2Zy ZWUoc3NwKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCWRydl9kYXRhID0gc3BpX21hc3Rlcl9n ZXRfZGV2ZGF0YShtYXN0ZXIpOwpAQCAtMTYwMyw3ICsxNjAzLDcgQEAgb3V0X2Vycm9yX2lycV9h bGxvYzoKIAogb3V0X2Vycm9yX21hc3Rlcl9hbGxvYzoKIAlzcGlfbWFzdGVyX3B1dChtYXN0ZXIp OwotCXNzcF9mcmVlKHNzcCk7CisJcHhhX3NzcF9mcmVlKHNzcCk7CiAJcmV0dXJuIHN0YXR1czsK IH0KIApAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgc3RhdGljIGludCBweGEyeHhfc3BpX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWZyZWVfaXJxKHNzcC0+aXJxLCBkcnZfZGF0 YSk7CiAKIAkvKiBSZWxlYXNlIFNTUCAqLwotCXNzcF9mcmVlKHNzcCk7CisJcHhhX3NzcF9mcmVl KHNzcCk7CiAKIAkvKiBEaXNjb25uZWN0IGZyb20gdGhlIFNQSSBmcmFtZXdvcmsgKi8KIAlzcGlf dW5yZWdpc3Rlcl9tYXN0ZXIoZHJ2X2RhdGEtPm1hc3Rlcik7CmRpZmYgLS1naXQgYS9zb3VuZC9z b2MvcHhhL3B4YS1zc3AuYyBiL3NvdW5kL3NvYy9weGEvcHhhLXNzcC5jCmluZGV4IDRjYTkyNDUu LmVkNTRiZWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9weGEvcHhhLXNzcC5jCisrKyBiL3NvdW5k L3NvYy9weGEvcHhhLXNzcC5jCkBAIC01NSwxNSArNTUsMTUgQEAgc3RydWN0IHNzcF9wcml2IHsK IHN0YXRpYyB2b2lkIGR1bXBfcmVnaXN0ZXJzKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCiB7CiAJ ZGV2X2RiZygmc3NwLT5wZGV2LT5kZXYsICJTU0NSMCAweCUwOHggU1NDUjEgMHglMDh4IFNTVE8g MHglMDh4XG4iLAotCQkgc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApLCBzc3BfcmVhZF9yZWcoc3Nw LCBTU0NSMSksCi0JCSBzc3BfcmVhZF9yZWcoc3NwLCBTU1RPKSk7CisJCSBweGFfc3NwX3JlYWRf cmVnKHNzcCwgU1NDUjApLCBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjEpLAorCQkgcHhhX3Nz cF9yZWFkX3JlZyhzc3AsIFNTVE8pKTsKIAogCWRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LCAiU1NQ U1AgMHglMDh4IFNTU1IgMHglMDh4IFNTQUNEIDB4JTA4eFxuIiwKLQkJIHNzcF9yZWFkX3JlZyhz c3AsIFNTUFNQKSwgc3NwX3JlYWRfcmVnKHNzcCwgU1NTUiksCi0JCSBzc3BfcmVhZF9yZWcoc3Nw LCBTU0FDRCkpOworCQkgcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKSwgcHhhX3NzcF9yZWFk X3JlZyhzc3AsIFNTU1IpLAorCQkgcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKSk7CiB9CiAK LXN0YXRpYyB2b2lkIHNzcF9lbmFibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkKK3N0YXRpYyB2 b2lkIHB4YV9zc3BfZW5hYmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCiB7CiAJdWludDMyX3Qg c3NjcjA7CiAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgc3NwX2VuYWJsZShzdHJ1Y3Qg c3NwX2RldmljZSAqc3NwKQogCV9fcmF3X3dyaXRlbChzc2NyMCwgc3NwLT5tbWlvX2Jhc2UgKyBT U0NSMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNzcF9kaXNhYmxlKHN0cnVjdCBzc3BfZGV2aWNlICpz c3ApCitzdGF0aWMgdm9pZCBweGFfc3NwX2Rpc2FibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkK IHsKIAl1aW50MzJfdCBzc2NyMDsKIApAQCAtODUsNyArODUsNyBAQCBzdHJ1Y3QgcHhhMnh4X3Bj bV9kbWFfZGF0YSB7CiB9OwogCiBzdGF0aWMgc3RydWN0IHB4YTJ4eF9wY21fZG1hX3BhcmFtcyAq Ci1zc3BfZ2V0X2RtYV9wYXJhbXMoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCwgaW50IHdpZHRoNCwg aW50IG91dCkKK3B4YV9zc3BfZ2V0X2RtYV9wYXJhbXMoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCwg aW50IHdpZHRoNCwgaW50IG91dCkKIHsKIAlzdHJ1Y3QgcHhhMnh4X3BjbV9kbWFfZGF0YSAqZG1h OwogCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIGludCBweGFfc3NwX3N0YXJ0dXAoc3RydWN0 IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAKIAlpZiAoIWNwdV9kYWktPmFjdGl2ZSkg ewogCQljbGtfZW5hYmxlKHNzcC0+Y2xrKTsKLQkJc3NwX2Rpc2FibGUoc3NwKTsKKwkJcHhhX3Nz cF9kaXNhYmxlKHNzcCk7CiAJfQogCiAJaWYgKGNwdV9kYWktPmRtYV9kYXRhKSB7CkBAIC0xMzYs NyArMTM2LDcgQEAgc3RhdGljIHZvaWQgcHhhX3NzcF9zaHV0ZG93bihzdHJ1Y3Qgc25kX3BjbV9z dWJzdHJlYW0gKnN1YnN0cmVhbSwKIAlzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+c3Nw OwogCiAJaWYgKCFjcHVfZGFpLT5hY3RpdmUpIHsKLQkJc3NwX2Rpc2FibGUoc3NwKTsKKwkJcHhh X3NzcF9kaXNhYmxlKHNzcCk7CiAJCWNsa19kaXNhYmxlKHNzcC0+Y2xrKTsKIAl9CiAKQEAgLTE2 MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc3VzcGVuZChzdHJ1Y3Qgc25kX3NvY19k YWkgKmNwdV9kYWkpCiAJcHJpdi0+dG8gID0gX19yYXdfcmVhZGwoc3NwLT5tbWlvX2Jhc2UgKyBT U1RPKTsKIAlwcml2LT5wc3AgPSBfX3Jhd19yZWFkbChzc3AtPm1taW9fYmFzZSArIFNTUFNQKTsK IAotCXNzcF9kaXNhYmxlKHNzcCk7CisJcHhhX3NzcF9kaXNhYmxlKHNzcCk7CiAJY2xrX2Rpc2Fi bGUoc3NwLT5jbGspOwogCXJldHVybiAwOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBp bnQgcHhhX3NzcF9yZXN1bWUoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpKQogCV9fcmF3X3dy aXRlbChwcml2LT5wc3AsIHNzcC0+bW1pb19iYXNlICsgU1NQU1ApOwogCiAJaWYgKGNwdV9kYWkt PmFjdGl2ZSkKLQkJc3NwX2VuYWJsZShzc3ApOworCQlweGFfc3NwX2VuYWJsZShzc3ApOwogCWVs c2UKIAkJY2xrX2Rpc2FibGUoc3NwLT5jbGspOwogCkBAIC0xOTcsOSArMTk3LDkgQEAgc3RhdGlj IGludCBweGFfc3NwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkpCiAgKiBzc3Bf c2V0X2Nsa2RpdiAtIHNldCBTU1AgY2xvY2sgZGl2aWRlcgogICogQGRpdjogc2VyaWFsIGNsb2Nr IHJhdGUgZGl2aWRlcgogICovCi1zdGF0aWMgdm9pZCBzc3Bfc2V0X3NjcihzdHJ1Y3Qgc3NwX2Rl dmljZSAqc3NwLCB1MzIgZGl2KQorc3RhdGljIHZvaWQgcHhhX3NzcF9zZXRfc2NyKHN0cnVjdCBz c3BfZGV2aWNlICpzc3AsIHUzMiBkaXYpCiB7Ci0JdTMyIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNz cCwgU1NDUjApOworCXUzMiBzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7CiAK IAlpZiAoY3B1X2lzX3B4YTI1eCgpICYmIHNzcC0+dHlwZSA9PSBQWEEyNXhfU1NQKSB7CiAJCXNz Y3IwICY9IH4weDAwMDBmZjAwOwpAQCAtMjA4LDE1ICsyMDgsMTUgQEAgc3RhdGljIHZvaWQgc3Nw X3NldF9zY3Ioc3RydWN0IHNzcF9kZXZpY2UgKnNzcCwgdTMyIGRpdikKIAkJc3NjcjAgJj0gfjB4 MDAwZmZmMDA7CiAJCXNzY3IwIHw9IChkaXYgLSAxKSA8PCA4OyAgICAgLyogMS4uNDA5NiAqLwog CX0KLQlzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKKwlweGFfc3NwX3dyaXRlX3Jl Zyhzc3AsIFNTQ1IwLCBzc2NyMCk7CiB9CiAKIC8qKgotICogc3NwX2dldF9jbGtkaXYgLSBnZXQg U1NQIGNsb2NrIGRpdmlkZXIKKyAqIHB4YV9zc3BfZ2V0X2Nsa2RpdiAtIGdldCBTU1AgY2xvY2sg ZGl2aWRlcgogICovCi1zdGF0aWMgdTMyIHNzcF9nZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpz c3ApCitzdGF0aWMgdTMyIHB4YV9zc3BfZ2V0X3NjcihzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQog ewotCXUzMiBzc2NyMCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsKKwl1MzIgc3NjcjAgPSBw eGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwogCXUzMiBkaXY7CiAKIAlpZiAoY3B1X2lzX3B4 YTI1eCgpICYmIHNzcC0+dHlwZSA9PSBQWEEyNXhfU1NQKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0 YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3N5c2NsayhzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9k YWksCiAJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKIAlpbnQgdmFsOwogCi0J dTMyIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYKKwl1MzIgc3NjcjAgPSBweGFf c3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYKIAkJfihTU0NSMF9FQ1MgfCAgU1NDUjBfTkNTIHwg U1NDUjBfTU9EIHwgU1NDUjBfQUNTKTsKIAogCWRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LApAQCAt MjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3N5c2NsayhzdHJ1Y3Qg c25kX3NvY19kYWkgKmNwdV9kYWksCiAJCWJyZWFrOwogCWNhc2UgUFhBX1NTUF9DTEtfQVVESU86 CiAJCXByaXYtPnN5c2NsayA9IDA7Ci0JCXNzcF9zZXRfc2NyKHNzcCwgMSk7CisJCXB4YV9zc3Bf c2V0X3Njcihzc3AsIDEpOwogCQlzc2NyMCB8PSBTU0NSMF9BQ1M7CiAJCWJyZWFrOwogCWRlZmF1 bHQ6CkBAIC0yNzUsOCArMjc1LDggQEAgc3RhdGljIGludCBweGFfc3NwX3NldF9kYWlfc3lzY2xr KHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwKIAkgKiBvbiBQWEEyeHguICBPbiBQWEEzeHgg aXQgbXVzdCBiZSBlbmFibGVkIHdoZW4gZG9pbmcgc28uICovCiAJaWYgKCFjcHVfaXNfcHhhM3h4 KCkpCiAJCWNsa19kaXNhYmxlKHNzcC0+Y2xrKTsKLQl2YWwgPSBzc3BfcmVhZF9yZWcoc3NwLCBT U0NSMCkgfCBzc2NyMDsKLQlzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHZhbCk7CisJdmFsID0g cHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSB8IHNzY3IwOworCXB4YV9zc3Bfd3JpdGVfcmVn KHNzcCwgU1NDUjAsIHZhbCk7CiAJaWYgKCFjcHVfaXNfcHhhM3h4KCkpCiAJCWNsa19lbmFibGUo c3NwLT5jbGspOwogCkBAIC0yOTUsMTEgKzI5NSwxMSBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0 X2RhaV9jbGtkaXYoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpLAogCiAJc3dpdGNoIChkaXZf aWQpIHsKIAljYXNlIFBYQV9TU1BfQVVESU9fRElWX0FDRFM6Ci0JCXZhbCA9IChzc3BfcmVhZF9y ZWcoc3NwLCBTU0FDRCkgJiB+MHg3KSB8IFNTQUNEX0FDRFMoZGl2KTsKLQkJc3NwX3dyaXRlX3Jl Zyhzc3AsIFNTQUNELCB2YWwpOworCQl2YWwgPSAocHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNE KSAmIH4weDcpIHwgU1NBQ0RfQUNEUyhkaXYpOworCQlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNT QUNELCB2YWwpOwogCQlicmVhazsKIAljYXNlIFBYQV9TU1BfQVVESU9fRElWX1NDREI6Ci0JCXZh bCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKTsKKwkJdmFsID0gcHhhX3NzcF9yZWFkX3JlZyhz c3AsIFNTQUNEKTsKIAkJdmFsICY9IH5TU0FDRF9TQ0RCOwogI2lmIGRlZmluZWQoQ09ORklHX1BY QTN4eCkKIAkJaWYgKGNwdV9pc19weGEzeHgoKSkKQEAgLTMyMiwxMCArMzIyLDEwIEBAIHN0YXRp YyBpbnQgcHhhX3NzcF9zZXRfZGFpX2Nsa2RpdihzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWks CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQotCQlzc3Bfd3JpdGVfcmVnKHNz cCwgU1NBQ0QsIHZhbCk7CisJCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHZhbCk7CiAJ CWJyZWFrOwogCWNhc2UgUFhBX1NTUF9ESVZfU0NSOgotCQlzc3Bfc2V0X3Njcihzc3AsIGRpdik7 CisJCXB4YV9zc3Bfc2V0X3Njcihzc3AsIGRpdik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJl dHVybiAtRU5PREVWOwpAQCAtMzQyLDExICszNDIsMTEgQEAgc3RhdGljIGludCBweGFfc3NwX3Nl dF9kYWlfcGxsKHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwgaW50IHBsbF9pZCwKIHsKIAlz dHJ1Y3Qgc3NwX3ByaXYgKnByaXYgPSBjcHVfZGFpLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IHNz cF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKLQl1MzIgc3NhY2QgPSBzc3BfcmVhZF9yZWcoc3Nw LCBTU0FDRCkgJiB+MHg3MDsKKwl1MzIgc3NhY2QgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NB Q0QpICYgfjB4NzA7CiAKICNpZiBkZWZpbmVkKENPTkZJR19QWEEzeHgpCiAJaWYgKGNwdV9pc19w eGEzeHgoKSkKLQkJc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNERCwgMCk7CisJCXB4YV9zc3Bfd3Jp dGVfcmVnKHNzcCwgU1NBQ0RELCAwKTsKICNlbmRpZgogCiAJc3dpdGNoIChmcmVxX291dCkgewpA QCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3BsbChzdHJ1Y3Qg c25kX3NvY19kYWkgKmNwdV9kYWksIGludCBwbGxfaWQsCiAJCQl2YWwgPSB0bXA7CiAKIAkJCXZh bCA9ICh2YWwgPDwgMTYpIHwgNjQ7Ci0JCQlzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCB2YWwp OworCQkJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0FDREQsIHZhbCk7CiAKIAkJCXNzYWNkIHw9 ICgweDYgPDwgNCk7CiAKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0 X2RhaV9wbGwoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpLCBpbnQgcGxsX2lkLAogCQlyZXR1 cm4gLUVJTlZBTDsKIAl9CiAKLQlzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHNzYWNkKTsKKwlw eGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNELCBzc2FjZCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90ZG1fc2xvdChzdHJ1 Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksCiAJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYt PnNzcDsKIAl1MzIgc3NjcjA7CiAKLQlzc2NyMCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsK Kwlzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7CiAJc3NjcjAgJj0gfihTU0NS MF9NT0QgfCBTU0NSMF9TbG90c1BlckZybSg4KSB8IFNTQ1IwX0VEU1MgfCBTU0NSMF9EU1MpOwog CiAJLyogc2V0IHNsb3Qgd2lkdGggKi8KQEAgLTQzMCwxMCArNDMwLDEwIEBAIHN0YXRpYyBpbnQg cHhhX3NzcF9zZXRfZGFpX3RkbV9zbG90KHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwKIAkJ c3NjcjAgfD0gU1NDUjBfU2xvdHNQZXJGcm0oc2xvdHMpOwogCiAJCS8qIHNldCBhY3RpdmUgc2xv dCBtYXNrICovCi0JCXNzcF93cml0ZV9yZWcoc3NwLCBTU1RTQSwgdHhfbWFzayk7Ci0JCXNzcF93 cml0ZV9yZWcoc3NwLCBTU1JTQSwgcnhfbWFzayk7CisJCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwg U1NUU0EsIHR4X21hc2spOworCQlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTUlNBLCByeF9tYXNr KTsKIAl9Ci0Jc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7CisJcHhhX3NzcF93cml0 ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00NDgsMTIgKzQ0 OCwxMiBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90cmlzdGF0ZShzdHJ1Y3Qgc25kX3Nv Y19kYWkgKmNwdV9kYWksCiAJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKIAl1 MzIgc3NjcjE7CiAKLQlzc2NyMSA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKKwlzc2NyMSA9 IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7CiAJaWYgKHRyaXN0YXRlKQogCQlzc2NyMSAm PSB+U1NDUjFfVFRFOwogCWVsc2UKIAkJc3NjcjEgfD0gU1NDUjFfVFRFOwotCXNzcF93cml0ZV9y ZWcoc3NwLCBTU0NSMSwgc3NjcjEpOworCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHNz Y3IxKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDc3LDE0ICs0NzcsMTQgQEAgc3RhdGljIGludCBw eGFfc3NwX3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwKIAkJcmV0dXJu IDA7CiAKIAkvKiB3ZSBjYW4gb25seSBjaGFuZ2UgdGhlIHNldHRpbmdzIGlmIHRoZSBwb3J0IGlz IG5vdCBpbiB1c2UgKi8KLQlpZiAoc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYgU1NDUjBfU1NF KSB7CisJaWYgKHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJiBTU0NSMF9TU0UpIHsKIAkJ ZGV2X2Vycigmc3NwLT5wZGV2LT5kZXYsCiAJCQkiY2FuJ3QgY2hhbmdlIGhhcmR3YXJlIGRhaSBm b3JtYXQ6IHN0cmVhbSBpcyBpbiB1c2UiKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJLyog cmVzZXQgcG9ydCBzZXR0aW5ncyAqLwotCXNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjAp ICYKKwlzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJgogCQkoU1NDUjBfRUNT IHwgIFNTQ1IwX05DUyB8IFNTQ1IwX01PRCB8IFNTQ1IwX0FDUyk7CiAJc3NjcjEgPSBTU0NSMV9S eFRyZXNoKDgpIHwgU1NDUjFfVHhUcmVzaCg3KTsKIAlzc3BzcCA9IDA7CkBAIC01MzYsOSArNTM2 LDkgQEAgc3RhdGljIGludCBweGFfc3NwX3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAq Y3B1X2RhaSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0Jc3NwX3dyaXRlX3JlZyhzc3AsIFNT Q1IwLCBzc2NyMCk7Ci0Jc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCBzc2NyMSk7Ci0Jc3NwX3dy aXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7CisJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NS MCwgc3NjcjApOworCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHNzY3IxKTsKKwlweGFf c3NwX3dyaXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7CiAKIAlkdW1wX3JlZ2lzdGVycyhzc3Ap OwogCkBAIC01NjcsNyArNTY3LDcgQEAgc3RhdGljIGludCBweGFfc3NwX2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAl1MzIgc3NjcjA7CiAJdTMyIHNzcHNw OwogCWludCB3aWR0aCA9IHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKHBhcmFtc19mb3Jt YXQocGFyYW1zKSk7Ci0JaW50IHR0c2EgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU1RTQSkgJiAweGY7 CisJaW50IHR0c2EgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NUU0EpICYgMHhmOwogCiAJLyog Z2VuZXJhdGUgY29ycmVjdCBETUEgcGFyYW1zICovCiAJaWYgKGNwdV9kYWktPmRtYV9kYXRhKQpA QCAtNTc3LDIwICs1NzcsMjAgQEAgc3RhdGljIGludCBweGFfc3NwX2h3X3BhcmFtcyhzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkgKiB0byBmb3JjZSAxNi1iaXQgZnJhbWUg d2lkdGggb24gdGhlIHdpcmUgKGZvciBTMTZfTEUpLCBldmVuCiAJICogd2l0aCB0d28gY2hhbm5l bHMuIFVzZSAxNi1iaXQgRE1BIHRyYW5zZmVycyBmb3IgdGhpcyBjYXNlLgogCSAqLwotCWNwdV9k YWktPmRtYV9kYXRhID0gc3NwX2dldF9kbWFfcGFyYW1zKHNzcCwKKwljcHVfZGFpLT5kbWFfZGF0 YSA9IHB4YV9zc3BfZ2V0X2RtYV9wYXJhbXMoc3NwLAogCQkJKChjaG4gPT0gMikgJiYgKHR0c2Eg IT0gMSkpIHx8ICh3aWR0aCA9PSAzMiksCiAJCQlzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9Q Q01fU1RSRUFNX1BMQVlCQUNLKTsKIAogCS8qIHdlIGNhbiBvbmx5IGNoYW5nZSB0aGUgc2V0dGlu Z3MgaWYgdGhlIHBvcnQgaXMgbm90IGluIHVzZSAqLwotCWlmIChzc3BfcmVhZF9yZWcoc3NwLCBT U0NSMCkgJiBTU0NSMF9TU0UpCisJaWYgKHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJiBT U0NSMF9TU0UpCiAJCXJldHVybiAwOwogCiAJLyogY2xlYXIgc2VsZWN0ZWQgU1NQIGJpdHMgKi8K LQlzc2NyMCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSAmIH4oU1NDUjBfRFNTIHwgU1NDUjBf RURTUyk7Ci0Jc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7CisJc3NjcjAgPSBweGFf c3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYgfihTU0NSMF9EU1MgfCBTU0NSMF9FRFNTKTsKKwlw eGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7CiAKIAkvKiBiaXQgc2l6ZSAqLwot CXNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOworCXNzY3IwID0gcHhhX3NzcF9yZWFk X3JlZyhzc3AsIFNTQ1IwKTsKIAlzd2l0Y2ggKHBhcmFtc19mb3JtYXQocGFyYW1zKSkgewogCWNh c2UgU05EUlZfUENNX0ZPUk1BVF9TMTZfTEU6CiAjaWZkZWYgQ09ORklHX1BYQTN4eApAQCAtNjA2 LDEzICs2MDYsMTMgQEAgc3RhdGljIGludCBweGFfc3NwX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3Bj bV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJc3NjcjAgfD0gKFNTQ1IwX0VEU1MgfCBTU0NSMF9E YXRhU2l6ZSgxNikpOwogCQlicmVhazsKIAl9Ci0Jc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBz c2NyMCk7CisJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwogCiAJc3dpdGNo IChwcml2LT5kYWlfZm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsKIAljYXNlIFNO RF9TT0NfREFJRk1UX0kyUzoKLQkgICAgICAgc3Nwc3AgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU1BT UCk7CisJICAgICAgIHNzcHNwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKTsKIAotCQlp ZiAoKHNzcF9nZXRfc2NyKHNzcCkgPT0gNCkgJiYgKHdpZHRoID09IDE2KSkgeworCQlpZiAoKHB4 YV9zc3BfZ2V0X3Njcihzc3ApID09IDQpICYmICh3aWR0aCA9PSAxNikpIHsKIAkJCS8qIFRoaXMg aXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGJpdGNsayBpcyA2NGZzCiAJCQkqIGFuZCB3ZSdy ZSBub3QgZGVhbGluZyB3aXRoIDIqMzIgYml0cyBvZiBhdWRpbwogCQkJKiBzYW1wbGVzLgpAQCAt NjQ2LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9od19wYXJhbXMoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCQlzc3BzcCB8PSBTU1BTUF9ETVlTVFJUKDEpOwog CQl9CiAKLQkJc3NwX3dyaXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7CisJCXB4YV9zc3Bfd3Jp dGVfcmVnKHNzcCwgU1NQU1AsIHNzcHNwKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7 CkBAIC02NzcsNDUgKzY3Nyw0NSBAQCBzdGF0aWMgaW50IHB4YV9zc3BfdHJpZ2dlcihzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNtZCwKIAogCXN3aXRjaCAoY21kKSB7 CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6Ci0JCXNzcF9lbmFibGUoc3NwKTsKKwkJ cHhhX3NzcF9lbmFibGUoc3NwKTsKIAkJYnJlYWs7CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9Q QVVTRV9SRUxFQVNFOgotCQl2YWwgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7CisJCXZhbCA9 IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7CiAJCWlmIChzdWJzdHJlYW0tPnN0cmVhbSA9 PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKQogCQkJdmFsIHw9IFNTQ1IxX1RTUkU7CiAJCWVs c2UKIAkJCXZhbCB8PSBTU0NSMV9SU1JFOwotCQlzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHZh bCk7Ci0JCXZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTU1IpOwotCQlzc3Bfd3JpdGVfcmVnKHNz cCwgU1NTUiwgdmFsKTsKKwkJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKKwkJ dmFsID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTU1IpOworCQlweGFfc3NwX3dyaXRlX3JlZyhz c3AsIFNTU1IsIHZhbCk7CiAJCWJyZWFrOwogCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6 Ci0JCXZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKKwkJdmFsID0gcHhhX3NzcF9yZWFk X3JlZyhzc3AsIFNTQ1IxKTsKIAkJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9T VFJFQU1fUExBWUJBQ0spCiAJCQl2YWwgfD0gU1NDUjFfVFNSRTsKIAkJZWxzZQogCQkJdmFsIHw9 IFNTQ1IxX1JTUkU7Ci0JCXNzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKLQkJc3NwX2Vu YWJsZShzc3ApOworCQlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOworCQlweGFf c3NwX2VuYWJsZShzc3ApOwogCQlicmVhazsKIAljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6 Ci0JCXZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKKwkJdmFsID0gcHhhX3NzcF9yZWFk X3JlZyhzc3AsIFNTQ1IxKTsKIAkJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9T VFJFQU1fUExBWUJBQ0spCiAJCQl2YWwgJj0gflNTQ1IxX1RTUkU7CiAJCWVsc2UKIAkJCXZhbCAm PSB+U1NDUjFfUlNSRTsKLQkJc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOworCQlweGFf c3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwogCQlicmVhazsKIAljYXNlIFNORFJWX1BD TV9UUklHR0VSX1NVU1BFTkQ6Ci0JCXNzcF9kaXNhYmxlKHNzcCk7CisJCXB4YV9zc3BfZGlzYWJs ZShzc3ApOwogCQlicmVhazsKIAljYXNlIFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1BVU0g6Ci0J CXZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKKwkJdmFsID0gcHhhX3NzcF9yZWFkX3Jl Zyhzc3AsIFNTQ1IxKTsKIAkJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJF QU1fUExBWUJBQ0spCiAJCQl2YWwgJj0gflNTQ1IxX1RTUkU7CiAJCWVsc2UKIAkJCXZhbCAmPSB+ U1NDUjFfUlNSRTsKLQkJc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOworCQlweGFfc3Nw X3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwogCQlicmVhazsKIAogCWRlZmF1bHQ6CkBAIC03 MzcsNyArNzM3LDcgQEAgc3RhdGljIGludCBweGFfc3NwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsCiAJaWYgKCFwcml2KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXByaXYtPnNz cCA9IHNzcF9yZXF1ZXN0KGRhaS0+aWQgKyAxLCAiU29DIGF1ZGlvIik7CisJcHJpdi0+c3NwID0g cHhhX3NzcF9yZXF1ZXN0KGRhaS0+aWQgKyAxLCAiU29DIGF1ZGlvIik7CiAJaWYgKHByaXYtPnNz cCA9PSBOVUxMKSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gZXJyX3ByaXY7CkBAIC03NTcs NyArNzU3LDcgQEAgc3RhdGljIHZvaWQgcHhhX3NzcF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwKIAkJCSAgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQogewogCXN0cnVj dCBzc3BfcHJpdiAqcHJpdiA9IGRhaS0+cHJpdmF0ZV9kYXRhOwotCXNzcF9mcmVlKHByaXYtPnNz cCk7CisJcHhhX3NzcF9mcmVlKHByaXYtPnNzcCk7CiB9CiAKICNkZWZpbmUgUFhBX1NTUF9SQVRF UyAoU05EUlZfUENNX1JBVEVfODAwMCB8IFNORFJWX1BDTV9SQVRFXzExMDI1IHxcCi0tIAoxLjUu Ni41Cgo= --00504502bd9137a7bc048452905f Content-Type: text/x-patch; charset=US-ASCII; name="0002-ASoC-split-pxa-ssp-for-reusing-code.patch" Content-Disposition: attachment; filename="0002-ASoC-split-pxa-ssp-for-reusing-code.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g82x0kdi1 RnJvbSA3NGRkNDhlZjcyOTg5ZmVjMGFkNzA2YzE5Mjc4NGQ0ODdmMjE5Y2M1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFydmVs bC5jb20+CkRhdGU6IFdlZCwgMzEgTWFyIDIwMTAgMTU6Mjg6MzcgLTA0MDAKU3ViamVjdDogW1BB VENIXSBBU29DOiBzcGxpdCBweGEgc3NwIGZvciByZXVzaW5nIGNvZGUKClNpbmNlIGJhc2ljIFNT UCBmZWF0dXJlcyBhcmUgc2hhcmVkIGJldHdlZW4gUFhBMnh4IGFuZCBQWEExNjgsIHRoZSBkaWZm ZXJlbmNlCmlzIGZvY3VzZWQgb24gY2xvY2sgZ2VuZXJhdGluZy4gTm93IHNwbGl0IHNzcCBjb2Rl IGludG8gdHdvIHBhcnRzLiBPbmUgaXMgZm9yCmdlbmVyYWwgc3NwIGZlYXR1cmUuIFRoZSBvdGhl ciBpcyBmb3IgcHhhMnh4IHBhcnRzLgoKVXBkYXRlIHRoZSBTU1AgdGltaW5nIGNvbmZpZ3VyYXRp b24gaW4gaHdfcGFyYW1zKCkuIFRoZSBTU1AgdGltaW5nIGlzIHZlcmlmaWVkCm9uIEkyUyBhbmQg TGVmdCBKIGludGVyZmFjZSBvZiBQWEExNjggd2l0aCAxNi1iaXQgc2FtcGxlIHN0cmVhbS4KClNp Z25lZC1vZmYtYnk6IEhhb2ppYW4gWmh1YW5nIDxoYW9qaWFuLnpodWFuZ0BtYXJ2ZWxsLmNvbT4K LS0tCiBzb3VuZC9zb2MvcHhhL0tjb25maWcgICAgICB8ICAgIDggKy0KIHNvdW5kL3NvYy9weGEv TWFrZWZpbGUgICAgIHwgICAgNCArLQogc291bmQvc29jL3B4YS9tYWdpY2lhbi5jICAgfCAgIDM4 ICsrLS0KIHNvdW5kL3NvYy9weGEvcHhhLXNzcC5jICAgIHwgIDcyOCArKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc291bmQvc29jL3B4YS9weGEtc3NwLmggICAg fCAgIDUyICsrLS0KIHNvdW5kL3NvYy9weGEvcHhhMnh4LXNzcC5jIHwgIDMxOCArKysrKysrKysr KysrKysrKysrCiBzb3VuZC9zb2MvcHhhL3B4YTJ4eC1zc3AuaCB8ICAgNDggKysrCiBzb3VuZC9z b2MvcHhhL3JhdW1mZWxkLmMgICB8ICAgMTQgKy0KIHNvdW5kL3NvYy9weGEvenlsb25pdGUuYyAg IHwgICAgNiArLQogOSBmaWxlcyBjaGFuZ2VkLCA2MDMgaW5zZXJ0aW9ucygrKSwgNjEzIGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9weGEvcHhhMnh4LXNzcC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3B4YS9weGEyeHgtc3NwLmgKCmRpZmYgLS1naXQg YS9zb3VuZC9zb2MvcHhhL0tjb25maWcgYi9zb3VuZC9zb2MvcHhhL0tjb25maWcKaW5kZXggNzhl NjEyMS4uN2JlMWQ1ZiAxMDA2NDQKLS0tIGEvc291bmQvc29jL3B4YS9LY29uZmlnCisrKyBiL3Nv dW5kL3NvYy9weGEvS2NvbmZpZwpAQCAtMjEsNyArMjEsNyBAQCBjb25maWcgU05EX1BYQTJYWF9T T0NfQUM5NwogY29uZmlnIFNORF9QWEEyWFhfU09DX0kyUwogCXRyaXN0YXRlCiAKLWNvbmZpZyBT TkRfUFhBX1NPQ19TU1AKK2NvbmZpZyBTTkRfUFhBMlhYX1NPQ19TU1AKIAl0cmlzdGF0ZQogCXNl bGVjdCBQWEFfU1NQCiAKQEAgLTExMyw3ICsxMTMsNyBAQCBjb25maWcgU05EX1NPQ19aWUxPTklU RQogCXRyaXN0YXRlICJTb0MgQXVkaW8gc3VwcG9ydCBmb3IgTWFydmVsbCBaeWxvbml0ZSIKIAlk ZXBlbmRzIG9uIFNORF9QWEEyWFhfU09DICYmIE1BQ0hfWllMT05JVEUKIAlzZWxlY3QgU05EX1BY QTJYWF9TT0NfQUM5NwotCXNlbGVjdCBTTkRfUFhBX1NPQ19TU1AKKwlzZWxlY3QgU05EX1BYQTJY WF9TT0NfU1NQCiAJc2VsZWN0IFNORF9TT0NfV005NzEzCiAJaGVscAogCSAgU2F5IFkgaWYgeW91 IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFNvQyBhdWRpbyBvbiB0aGUKQEAgLTEyMiw3ICsxMjIs NyBAQCBjb25maWcgU05EX1NPQ19aWUxPTklURQogY29uZmlnIFNORF9TT0NfUkFVTUZFTEQKIAl0 cmlzdGF0ZSAiU29DIEF1ZGlvIHN1cHBvcnQgUmF1bWZlbGQgYXVkaW8gYWRhcHRlciIKIAlkZXBl bmRzIG9uIFNORF9QWEEyWFhfU09DICYmIChNQUNIX1JBVU1GRUxEX1NQRUFLRVIgfHwgTUFDSF9S QVVNRkVMRF9DT05ORUNUT1IpCi0Jc2VsZWN0IFNORF9QWEFfU09DX1NTUAorCXNlbGVjdCBTTkRf UFhBMlhYX1NPQ19TU1AKIAlzZWxlY3QgU05EX1NPQ19DUzQyNzAKIAlzZWxlY3QgU05EX1NPQ19B SzQxMDQKIAloZWxwCkBAIC0xMzIsNyArMTMyLDcgQEAgY29uZmlnIFNORF9QWEEyWFhfU09DX01B R0lDSUFOCiAJdHJpc3RhdGUgIlNvQyBBdWRpbyBzdXBwb3J0IGZvciBIVEMgTWFnaWNpYW4iCiAJ ZGVwZW5kcyBvbiBTTkRfUFhBMlhYX1NPQyAmJiBNQUNIX01BR0lDSUFOCiAJc2VsZWN0IFNORF9Q WEEyWFhfU09DX0kyUwotCXNlbGVjdCBTTkRfUFhBX1NPQ19TU1AKKwlzZWxlY3QgU05EX1BYQTJY WF9TT0NfU1NQCiAJc2VsZWN0IFNORF9TT0NfVURBMTM4MAogCWhlbHAKIAkgIFNheSBZIGlmIHlv dSB3YW50IHRvIGFkZCBzdXBwb3J0IGZvciBTb0MgYXVkaW8gb24gdGhlCmRpZmYgLS1naXQgYS9z b3VuZC9zb2MvcHhhL01ha2VmaWxlIGIvc291bmQvc29jL3B4YS9NYWtlZmlsZQppbmRleCBmM2Uw OGZkLi4zM2MxNTc5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvcHhhL01ha2VmaWxlCisrKyBiL3Nv dW5kL3NvYy9weGEvTWFrZWZpbGUKQEAgLTIsMTIgKzIsMTIgQEAKIHNuZC1zb2MtcHhhMnh4LW9i anMgOj0gcHhhMnh4LXBjbS5vCiBzbmQtc29jLXB4YTJ4eC1hYzk3LW9ianMgOj0gcHhhMnh4LWFj OTcubwogc25kLXNvYy1weGEyeHgtaTJzLW9ianMgOj0gcHhhMnh4LWkycy5vCi1zbmQtc29jLXB4 YS1zc3Atb2JqcyA6PSBweGEtc3NwLm8KK3NuZC1zb2MtcHhhMnh4LXNzcC1vYmpzIDo9IHB4YS1z c3AubyBweGEyeHgtc3NwLm8KIAogb2JqLSQoQ09ORklHX1NORF9QWEEyWFhfU09DKSArPSBzbmQt c29jLXB4YTJ4eC5vCiBvYmotJChDT05GSUdfU05EX1BYQTJYWF9TT0NfQUM5NykgKz0gc25kLXNv Yy1weGEyeHgtYWM5Ny5vCiBvYmotJChDT05GSUdfU05EX1BYQTJYWF9TT0NfSTJTKSArPSBzbmQt c29jLXB4YTJ4eC1pMnMubwotb2JqLSQoQ09ORklHX1NORF9QWEFfU09DX1NTUCkgKz0gc25kLXNv Yy1weGEtc3NwLm8KK29iai0kKENPTkZJR19TTkRfUFhBMlhYX1NPQ19TU1ApICs9IHNuZC1zb2Mt cHhhMnh4LXNzcC5vCiAKICMgUFhBIE1hY2hpbmUgU3VwcG9ydAogc25kLXNvYy1jb3JnaS1vYmpz IDo9IGNvcmdpLm8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9weGEvbWFnaWNpYW4uYyBiL3NvdW5k L3NvYy9weGEvbWFnaWNpYW4uYwppbmRleCA0YzhkOTlhLi5kYTZmZjgzIDEwMDY0NAotLS0gYS9z b3VuZC9zb2MvcHhhL21hZ2ljaWFuLmMKKysrIGIvc291bmQvc29jL3B4YS9tYWdpY2lhbi5jCkBA IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiLi4vY29kZWNzL3VkYTEzODAuaCIKICNpbmNsdWRl ICJweGEyeHgtcGNtLmgiCiAjaW5jbHVkZSAicHhhMnh4LWkycy5oIgotI2luY2x1ZGUgInB4YS1z c3AuaCIKKyNpbmNsdWRlICJweGEyeHgtc3NwLmgiCiAKICNkZWZpbmUgTUFHSUNJQU5fTUlDICAg ICAgIDAKICNkZWZpbmUgTUFHSUNJQU5fTUlDX0VYVCAgIDEKQEAgLTg5LDcgKzg5LDcgQEAgc3Rh dGljIGludCBtYWdpY2lhbl9wbGF5YmFja19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0sCiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWkgPSBydGQtPmRh aS0+Y29kZWNfZGFpOwogCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+ZGFpLT5j cHVfZGFpOwogCXVuc2lnbmVkIGludCBhY3BzLCBhY2RzLCB3aWR0aCwgcmF0ZTsKLQl1bnNpZ25l ZCBpbnQgZGl2NCA9IFBYQV9TU1BfQ0xLX1NDREJfNDsKKwl1bnNpZ25lZCBpbnQgZGl2NCA9IFBY QTJYWF9TU1BfQ0xLX1NDREJfNDsKIAlpbnQgcmV0ID0gMDsKIAogCXJhdGUgPSBwYXJhbXNfcmF0 ZShwYXJhbXMpOwpAQCAtMTA2LDExICsxMDYsMTEgQEAgc3RhdGljIGludCBtYWdpY2lhbl9wbGF5 YmFja19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCXN3 aXRjaCAod2lkdGgpIHsKIAkJY2FzZSAxNjoKIAkJCS8qIDUxMzE1NiBIeiB+PSBfMl8gKiA4MDAw IEh6ICogMzIgKCswLjIzJSkgKi8KLQkJCWFjZHMgPSBQWEFfU1NQX0NMS19BVURJT19ESVZfMTY7 CisJCQlhY2RzID0gUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzE2OwogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6IC8qIDMyICovCiAJCQkvKiAxMDI2MzEyIEh6IH49IF8yXyAqIDgwMDAgSHogKiA2NCAo KzAuMjMlKSAqLwotCQkJYWNkcyA9IFBYQV9TU1BfQ0xLX0FVRElPX0RJVl84OworCQkJYWNkcyA9 IFBYQTJYWF9TU1BfQ0xLX0FVRElPX0RJVl84OwogCQl9CiAJCWJyZWFrOwogCWNhc2UgMTEwMjU6 CkBAIC0xMTgsMTEgKzExOCwxMSBAQCBzdGF0aWMgaW50IG1hZ2ljaWFuX3BsYXliYWNrX2h3X3Bh cmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJc3dpdGNoICh3aWR0 aCkgewogCQljYXNlIDE2OgogCQkJLyogMzUxMzc1IEh6IH49IDExMDI1IEh6ICogMzIgKC0wLjQx JSkgKi8KLQkJCWFjZHMgPSBQWEFfU1NQX0NMS19BVURJT19ESVZfNDsKKwkJCWFjZHMgPSBQWEEy WFhfU1NQX0NMS19BVURJT19ESVZfNDsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OiAvKiAzMiAqLwog CQkJLyogNzAyNzUwIEh6IH49IDExMDI1IEh6ICogNjQgKC0wLjQxJSkgKi8KLQkJCWFjZHMgPSBQ WEFfU1NQX0NMS19BVURJT19ESVZfMjsKKwkJCWFjZHMgPSBQWEEyWFhfU1NQX0NMS19BVURJT19E SVZfMjsKIAkJfQogCQlicmVhazsKIAljYXNlIDIyMDUwOgpAQCAtMTMwLDExICsxMzAsMTEgQEAg c3RhdGljIGludCBtYWdpY2lhbl9wbGF5YmFja19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0sCiAJCXN3aXRjaCAod2lkdGgpIHsKIAkJY2FzZSAxNjoKIAkJCS8q IDcwMjc1MCBIeiB+PSAyMjA1MCBIeiAqIDMyICgtMC40MSUpICovCi0JCQlhY2RzID0gUFhBX1NT UF9DTEtfQVVESU9fRElWXzI7CisJCQlhY2RzID0gUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzI7 CiAJCQlicmVhazsKIAkJZGVmYXVsdDogLyogMzIgKi8KIAkJCS8qIDE0MDU1MDAgSHogfj0gMjIw NTAgSHogKiA2NCAoLTAuNDElKSAqLwotCQkJYWNkcyA9IFBYQV9TU1BfQ0xLX0FVRElPX0RJVl8x OworCQkJYWNkcyA9IFBYQTJYWF9TU1BfQ0xLX0FVRElPX0RJVl8xOwogCQl9CiAJCWJyZWFrOwog CWNhc2UgNDQxMDA6CkBAIC0xNDIsMTEgKzE0MiwxMSBAQCBzdGF0aWMgaW50IG1hZ2ljaWFuX3Bs YXliYWNrX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJ c3dpdGNoICh3aWR0aCkgewogCQljYXNlIDE2OgogCQkJLyogMTQwNTUwMCBIeiB+PSA0NDEwMCBI eiAqIDMyICgtMC40MSUpICovCi0JCQlhY2RzID0gUFhBX1NTUF9DTEtfQVVESU9fRElWXzI7CisJ CQlhY2RzID0gUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzI7CiAJCQlicmVhazsKIAkJZGVmYXVs dDogLyogMzIgKi8KIAkJCS8qIDI4MTEwMDAgSHogfj0gNDQxMDAgSHogKiA2NCAoLTAuNDElKSAq LwotCQkJYWNkcyA9IFBYQV9TU1BfQ0xLX0FVRElPX0RJVl8xOworCQkJYWNkcyA9IFBYQTJYWF9T U1BfQ0xLX0FVRElPX0RJVl8xOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgNDgwMDA6CkBAIC0xNTQs MTEgKzE1NCwxMSBAQCBzdGF0aWMgaW50IG1hZ2ljaWFuX3BsYXliYWNrX2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJc3dpdGNoICh3aWR0aCkgewogCQlj YXNlIDE2OgogCQkJLyogMTUyOTM3NSBIeiB+PSA0ODAwMCBIeiAqIDMyICgtMC40NCUpICovCi0J CQlhY2RzID0gUFhBX1NTUF9DTEtfQVVESU9fRElWXzI7CisJCQlhY2RzID0gUFhBMlhYX1NTUF9D TEtfQVVESU9fRElWXzI7CiAJCQlicmVhazsKIAkJZGVmYXVsdDogLyogMzIgKi8KIAkJCS8qIDMw NTg3NTAgSHogfj0gNDgwMDAgSHogKiA2NCAoLTAuNDQlKSAqLwotCQkJYWNkcyA9IFBYQV9TU1Bf Q0xLX0FVRElPX0RJVl8xOworCQkJYWNkcyA9IFBYQTJYWF9TU1BfQ0xLX0FVRElPX0RJVl8xOwog CQl9CiAJCWJyZWFrOwogCWNhc2UgOTYwMDA6CkBAIC0xNjcsMTIgKzE2NywxMiBAQCBzdGF0aWMg aW50IG1hZ2ljaWFuX3BsYXliYWNrX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSwKIAkJc3dpdGNoICh3aWR0aCkgewogCQljYXNlIDE2OgogCQkJLyogMzA1ODc1 MCBIeiB+PSA5NjAwMCBIeiAqIDMyICgtMC40NCUpICovCi0JCQlhY2RzID0gUFhBX1NTUF9DTEtf QVVESU9fRElWXzE7CisJCQlhY2RzID0gUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzE7CiAJCQli cmVhazsKIAkJZGVmYXVsdDogLyogMzIgKi8KIAkJCS8qIDYxMTc1MDAgSHogfj0gOTYwMDAgSHog KiA2NCAoLTAuNDQlKSAqLwotCQkJYWNkcyA9IFBYQV9TU1BfQ0xLX0FVRElPX0RJVl8yOwotCQkJ ZGl2NCA9IFBYQV9TU1BfQ0xLX1NDREJfMTsKKwkJCWFjZHMgPSBQWEEyWFhfU1NQX0NMS19BVURJ T19ESVZfMjsKKwkJCWRpdjQgPSBQWEEyWFhfU1NQX0NMS19TQ0RCXzE7CiAJCQlicmVhazsKIAkJ fQogCQlicmVhazsKQEAgLTE5NSwyMCArMTk1LDIwIEBAIHN0YXRpYyBpbnQgbWFnaWNpYW5fcGxh eWJhY2tfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQly ZXR1cm4gcmV0OwogCiAJLyogc2V0IGF1ZGlvIGNsb2NrIGFzIGNsb2NrIHNvdXJjZSAqLwotCXJl dCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY3B1X2RhaSwgUFhBX1NTUF9DTEtfQVVESU8sIDAs CisJcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2NsayhjcHVfZGFpLCBQWEEyWFhfU1NQX0NMS19B VURJTywgMCwKIAkJCVNORF9TT0NfQ0xPQ0tfT1VUKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJu IHJldDsKIAogCS8qIHNldCB0aGUgU1NQIGF1ZGlvIHN5c3RlbSBjbG9jayBBQ0RTIGRpdmlkZXIg Ki8KIAlyZXQgPSBzbmRfc29jX2RhaV9zZXRfY2xrZGl2KGNwdV9kYWksCi0JCQlQWEFfU1NQX0FV RElPX0RJVl9BQ0RTLCBhY2RzKTsKKwkJCVBYQTJYWF9TU1BfQVVESU9fRElWX0FDRFMsIGFjZHMp OwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCiAJLyogc2V0IHRoZSBTU1AgYXVkaW8g c3lzdGVtIGNsb2NrIFNDREIgZGl2aWRlcjQgKi8KIAlyZXQgPSBzbmRfc29jX2RhaV9zZXRfY2xr ZGl2KGNwdV9kYWksCi0JCQlQWEFfU1NQX0FVRElPX0RJVl9TQ0RCLCBkaXY0KTsKKwkJCVBYQTJY WF9TU1BfQVVESU9fRElWX1NDREIsIGRpdjQpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0 OwogCkBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9saW5rIG1h Z2ljaWFuX2RhaVtdID0gewogewogCS5uYW1lID0gInVkYTEzODAiLAogCS5zdHJlYW1fbmFtZSA9 ICJVREExMzgwIFBsYXliYWNrIiwKLQkuY3B1X2RhaSA9ICZweGFfc3NwX2RhaVtQWEFfREFJX1NT UDFdLAorCS5jcHVfZGFpID0gJnB4YTJ4eF9zc3BfZGFpW1BYQTJYWF9EQUlfU1NQMV0sCiAJLmNv ZGVjX2RhaSA9ICZ1ZGExMzgwX2RhaVtVREExMzgwX0RBSV9QTEFZQkFDS10sCiAJLmluaXQgPSBt YWdpY2lhbl91ZGExMzgwX2luaXQsCiAJLm9wcyA9ICZtYWdpY2lhbl9wbGF5YmFja19vcHMsCmRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvcHhhL3B4YS1zc3AuYyBiL3NvdW5kL3NvYy9weGEvcHhhLXNz cC5jCmluZGV4IGVkNTRiZWYuLmJkNWU4MDAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9weGEvcHhh LXNzcC5jCisrKyBiL3NvdW5kL3NvYy9weGEvcHhhLXNzcC5jCkBAIC01LDYgKzUsOSBAQAogICog QXV0aG9yOiBMaWFtIEdpcmR3b29kCiAgKiAgICAgICAgIE1hcmsgQnJvd24gPGJyb29uaWVAb3Bl bnNvdXJjZS53b2xmc29ubWljcm8uY29tPgogICoKKyAqIENvcHlyaWdodCAyMDEwIE1hcnZlbGwg SW50ZXJuYXRpb25hbCBMdGQuCisgKiAJSGFvamlhbiBaaHVhbmcgPGhhb2ppYW4uemh1YW5nQG1h cnZlbGwuY29tPgorICoKICAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKICAqICB1bmRlciAgdGhlIHRlcm1z IG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUK ICAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAg TGljZW5zZSwgb3IgKGF0IHlvdXIKQEAgLTE0LDQ0ICsxNywyMCBAQAogICogIG8gVGVzdCBuZXR3 b3JrIG1vZGUgZm9yID4gMTZiaXQgc2FtcGxlIHNpemUKICAqLwogCi0jaW5jbHVkZSA8bGludXgv aW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgotI2luY2x1ZGUgPGxpbnV4L2lv Lmg+Ci0KLSNpbmNsdWRlIDxhc20vaXJxLmg+Ci0KICNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+Cisj aW5jbHVkZSA8c291bmQvc29jLmg+CiAjaW5jbHVkZSA8c291bmQvcGNtLmg+Ci0jaW5jbHVkZSA8 c291bmQvaW5pdHZhbC5oPgogI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4KLSNpbmNsdWRl IDxzb3VuZC9zb2MuaD4KICNpbmNsdWRlIDxzb3VuZC9weGEyeHgtbGliLmg+CiAKICNpbmNsdWRl IDxtYWNoL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8bWFjaC9kbWEuaD4KLSNpbmNsdWRlIDxtYWNo L2F1ZGlvLmg+CiAjaW5jbHVkZSA8cGxhdC9zc3AuaD4KIAogI2luY2x1ZGUgInB4YTJ4eC1wY20u aCIKICNpbmNsdWRlICJweGEtc3NwLmgiCiAKLS8qCi0gKiBTU1AgYXVkaW8gcHJpdmF0ZSBkYXRh Ci0gKi8KLXN0cnVjdCBzc3BfcHJpdiB7Ci0Jc3RydWN0IHNzcF9kZXZpY2UgKnNzcDsKLQl1bnNp Z25lZCBpbnQgc3lzY2xrOwotCWludCBkYWlfZm10OwotI2lmZGVmIENPTkZJR19QTQotCXVpbnQz Ml90CWNyMDsKLQl1aW50MzJfdAljcjE7Ci0JdWludDMyX3QJdG87Ci0JdWludDMyX3QJcHNwOwot I2VuZGlmCi19OwotCiBzdGF0aWMgdm9pZCBkdW1wX3JlZ2lzdGVycyhzdHJ1Y3Qgc3NwX2Rldmlj ZSAqc3NwKQogewogCWRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LCAiU1NDUjAgMHglMDh4IFNTQ1Ix IDB4JTA4eCBTU1RPIDB4JTA4eFxuIiwKQEAgLTYzLDcgKzQyLDcgQEAgc3RhdGljIHZvaWQgZHVt cF9yZWdpc3RlcnMoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkKIAkJIHB4YV9zc3BfcmVhZF9yZWco c3NwLCBTU0FDRCkpOwogfQogCi1zdGF0aWMgdm9pZCBweGFfc3NwX2VuYWJsZShzdHJ1Y3Qgc3Nw X2RldmljZSAqc3NwKQordm9pZCBweGFfc3NwX2VuYWJsZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3Nw KQogewogCXVpbnQzMl90IHNzY3IwOwogCkBAIC03MSw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHB4 YV9zc3BfZW5hYmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCiAJX19yYXdfd3JpdGVsKHNzY3Iw LCBzc3AtPm1taW9fYmFzZSArIFNTQ1IwKTsKIH0KIAotc3RhdGljIHZvaWQgcHhhX3NzcF9kaXNh YmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCit2b2lkIHB4YV9zc3BfZGlzYWJsZShzdHJ1Y3Qg c3NwX2RldmljZSAqc3NwKQogewogCXVpbnQzMl90IHNzY3IwOwogCkBAIC04NCw3ICs2Myw3IEBA IHN0cnVjdCBweGEyeHhfcGNtX2RtYV9kYXRhIHsKIAljaGFyIG5hbWVbMjBdOwogfTsKIAotc3Rh dGljIHN0cnVjdCBweGEyeHhfcGNtX2RtYV9wYXJhbXMgKgorc3RydWN0IHB4YTJ4eF9wY21fZG1h X3BhcmFtcyAqCiBweGFfc3NwX2dldF9kbWFfcGFyYW1zKHN0cnVjdCBzc3BfZGV2aWNlICpzc3As IGludCB3aWR0aDQsIGludCBvdXQpCiB7CiAJc3RydWN0IHB4YTJ4eF9wY21fZG1hX2RhdGEgKmRt YTsKQEAgLTEwNSw2ICs4NCwxMDIgQEAgcHhhX3NzcF9nZXRfZG1hX3BhcmFtcyhzdHJ1Y3Qgc3Nw X2RldmljZSAqc3NwLCBpbnQgd2lkdGg0LCBpbnQgb3V0KQogCiAJcmV0dXJuICZkbWEtPnBhcmFt czsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHB4YV9zc3BfZ2V0X2RtYV9wYXJhbXMpOworCisvKgor ICogU2V0IHVwIHRoZSBTU1AgREFJIGZvcm1hdC4KKyAqIFRoZSBTU1AgUG9ydCBtdXN0IGJlIGlu YWN0aXZlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYXMgdGhlCisgKiBwaHlzaWNhbCBp bnRlcmZhY2UgZm9ybWF0IGlzIGNoYW5nZWQuCisgKi8KK3N0YXRpYyBpbnQgcHhhX3NzcF9zZXRf ZGFpX2ZtdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksCisJCQkJdW5zaWduZWQgaW50IGZt dCkKK3sKKwlzdHJ1Y3Qgc3NwX3ByaXYgKnByaXYgPSBjcHVfZGFpLT5wcml2YXRlX2RhdGE7CisJ c3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKKwl1MzIgc3NjcjA7CisJdTMyIHNz Y3IxOworCXUzMiBzc3BzcDsKKworCS8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gY2hhbmdlIGFueXRo aW5nIGF0IGFsbCAqLworCWlmIChwcml2LT5kYWlfZm10ID09IGZtdCkKKwkJcmV0dXJuIDA7CisK KwlweGFfc3NwX2Rpc2FibGUoc3NwKTsKKworCS8qIHJlc2V0IHBvcnQgc2V0dGluZ3MgKi8KKwlz c2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJgorCQkoU1NDUjBfRUNTIHwgIFNT Q1IwX05DUyB8IFNTQ1IwX01PRCB8IFNTQ1IwX0FDUyk7CisJc3NjcjEgPSBTU0NSMV9SeFRyZXNo KDgpIHwgU1NDUjFfVHhUcmVzaCg3KTsKKwlzc3BzcCA9IDA7CisKKwlzd2l0Y2ggKGZtdCAmIFNO RF9TT0NfREFJRk1UX01BU1RFUl9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZN OgorCQlzc2NyMSB8PSBTU0NSMV9TQ0xLRElSIHwgU1NDUjFfU0ZSTURJUjsKKwkJYnJlYWs7CisJ Y2FzZSBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZTOgorCQlzc2NyMSB8PSBTU0NSMV9TQ0xLRElSOwor CQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCU19DRlM6CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlG TVRfSU5WX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX05CX05GOgorCQlzc3BzcCB8PSBT U1BTUF9TRlJNUDsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9OQl9JRjoKKwkJYnJl YWs7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9JQl9JRjoKKwkJc3Nwc3AgfD0gU1NQU1BfU0NNT0RF KDIpOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0lCX05GOgorCQlzc3BzcCB8PSBT U1BTUF9TQ01PREUoMikgfCBTU1BTUF9TRlJNUDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9GT1JNQVRf TUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfSTJTOgorCQlzc2NyMCB8PSBTU0NSMF9QU1A7 CisJCXNzY3IxIHw9IFNTQ1IxX1JXT1QgfCBTU0NSMV9UUkFJTDsKKwkJLyogU2VlIGh3X3BhcmFt cygpICovCisJCWJyZWFrOworCisJY2FzZSBTTkRfU09DX0RBSUZNVF9MRUZUX0o6CisJCXNzY3Iw IHw9IFNTQ1IwX1BTUDsKKwkJc3NjcjEgfD0gU1NDUjFfUldPVCB8IFNTQ1IxX1RSQUlMOworCQkv KiBTZWUgaHdfcGFyYW1zKCkgKi8KKwkJYnJlYWs7CisKKwljYXNlIFNORF9TT0NfREFJRk1UX0RT UF9BOgorCQlzc3BzcCB8PSBTU1BTUF9GU1JUOworCWNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0I6 CisJCXNzY3IwIHw9IFNTQ1IwX01PRCB8IFNTQ1IwX1BTUDsKKwkJc3NjcjEgfD0gU1NDUjFfVFJB SUwgfCBTU0NSMV9SV09UOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKKwlweGFfc3Nw X3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCBzc2NyMSk7CisJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBT U1BTUCwgc3Nwc3ApOworCXB4YV9zc3BfZW5hYmxlKHNzcCk7CisKKwkvKiBTaW5jZSB3ZSBhcmUg Y29uZmlndXJpbmcgdGhlIHRpbWluZ3MgZm9yIHRoZSBmb3JtYXQgYnkgaGFuZAorCSAqIHdlIGhh dmUgdG8gZGVmZXIgc29tZSB0aGluZ3MgdW50aWwgaHdfcGFyYW1zKCkgd2hlcmUgd2UKKwkgKiBr bm93IHBhcmFtZXRlcnMgbGlrZSB0aGUgc2FtcGxlIHNpemUuCisJICovCisJcHJpdi0+ZGFpX2Zt dCA9IGZtdDsKKworCWR1bXBfcmVnaXN0ZXJzKHNzcCk7CisKKwlyZXR1cm4gMDsKK30KIAogc3Rh dGljIGludCBweGFfc3NwX3N0YXJ0dXAoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJl YW0sCiAJCQkgICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKQEAgLTE5MywyMTIgKzI2OCw4OCBA QCBzdGF0aWMgaW50IHB4YV9zc3BfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSkK ICNkZWZpbmUgcHhhX3NzcF9yZXN1bWUJTlVMTAogI2VuZGlmCiAKLS8qKgotICogc3NwX3NldF9j bGtkaXYgLSBzZXQgU1NQIGNsb2NrIGRpdmlkZXIKLSAqIEBkaXY6IHNlcmlhbCBjbG9jayByYXRl IGRpdmlkZXIKLSAqLwotc3RhdGljIHZvaWQgcHhhX3NzcF9zZXRfc2NyKHN0cnVjdCBzc3BfZGV2 aWNlICpzc3AsIHUzMiBkaXYpCi17Ci0JdTMyIHNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3As IFNTQ1IwKTsKLQotCWlmIChjcHVfaXNfcHhhMjV4KCkgJiYgc3NwLT50eXBlID09IFBYQTI1eF9T U1ApIHsKLQkJc3NjcjAgJj0gfjB4MDAwMGZmMDA7Ci0JCXNzY3IwIHw9ICgoZGl2IC0gMikvMikg PDwgODsgLyogMi4uNTEyICovCi0JfSBlbHNlIHsKLQkJc3NjcjAgJj0gfjB4MDAwZmZmMDA7Ci0J CXNzY3IwIHw9IChkaXYgLSAxKSA8PCA4OyAgICAgLyogMS4uNDA5NiAqLwotCX0KLQlweGFfc3Nw X3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7Ci19Ci0KLS8qKgotICogcHhhX3NzcF9nZXRf Y2xrZGl2IC0gZ2V0IFNTUCBjbG9jayBkaXZpZGVyCi0gKi8KLXN0YXRpYyB1MzIgcHhhX3NzcF9n ZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCi17Ci0JdTMyIHNzY3IwID0gcHhhX3NzcF9y ZWFkX3JlZyhzc3AsIFNTQ1IwKTsKLQl1MzIgZGl2OwotCi0JaWYgKGNwdV9pc19weGEyNXgoKSAm JiBzc3AtPnR5cGUgPT0gUFhBMjV4X1NTUCkKLQkJZGl2ID0gKChzc2NyMCA+PiA4KSAmIDB4ZmYp ICogMiArIDI7Ci0JZWxzZQotCQlkaXYgPSAoKHNzY3IwID4+IDgpICYgMHhmZmYpICsgMTsKLQly ZXR1cm4gZGl2OwotfQotCiAvKgotICogU2V0IHRoZSBTU1AgcG9ydHMgU1lTQ0xLLgorICogV2hp bGUgY29uZmlndXJpbmcgU1NQIHRpbWluZywgdHdvIGZvcm11bGEgb24gU1NQIGNsb2NrcyBzaG91 bGQgYmUgZm9sbG93ZWQuCisgKgorICogMSkgKGZyYW1lIGRlbGF5ICsgZnJhbWUgd2lkdGgpIDw9 IChzdGFydCBkZWxheSArIGR1bW15IHN0YXJ0CisgKgkrIGRhdGEgc2l6ZSArIGR1bW15IHN0b3Ap CisgKgorICogMikgMSA8PSBmcmFtZSB3aWR0aCA8IChkdW1teSBzdGFydCArIGRhdGEgc2l6ZSAr IGR1bW15IHN0b3ApCiAgKi8KLXN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3N5c2NsayhzdHJ1 Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksCi0JaW50IGNsa19pZCwgdW5zaWduZWQgaW50IGZyZXEs IGludCBkaXIpCitzdGF0aWMgaW50IHB4YV9zc3BfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1 YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJICAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBh cmFtcywKKwkJCSAgICAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCiB7CisJc3RydWN0IHNuZF9z b2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBz bmRfc29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+ZGFpLT5jcHVfZGFpOwogCXN0cnVjdCBzc3BfcHJp diAqcHJpdiA9IGNwdV9kYWktPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3Qgc3NwX2RldmljZSAqc3Nw ID0gcHJpdi0+c3NwOwotCWludCB2YWw7CisJaW50IHdpZHRoID0gc25kX3BjbV9mb3JtYXRfcGh5 c2ljYWxfd2lkdGgocGFyYW1zX2Zvcm1hdChwYXJhbXMpKTsKKwlpbnQgY2hhbm5lbHMgPSBwYXJh bXNfY2hhbm5lbHMocGFyYW1zKTsKKwlpbnQgZG1hXzMyYiA9IDAsIHN0cmVhbV9vdXQgPSAwLCBk YXRhX3NpemU7CisJdTMyIHNzY3IwLCBzc3BzcDsKIAotCXUzMiBzc2NyMCA9IHB4YV9zc3BfcmVh ZF9yZWcoc3NwLCBTU0NSMCkgJgotCQl+KFNTQ1IwX0VDUyB8ICBTU0NSMF9OQ1MgfCBTU0NSMF9N T0QgfCBTU0NSMF9BQ1MpOworCS8qIGdlbmVyYXRlIGNvcnJlY3QgRE1BIHBhcmFtcyAqLworCWtm cmVlKGNwdV9kYWktPmRtYV9kYXRhKTsKIAotCWRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LAotCQki cHhhX3NzcF9zZXRfZGFpX3N5c2NsayBpZDogJWQsIGNsa19pZCAlZCwgZnJlcSAldVxuIiwKLQkJ Y3B1X2RhaS0+aWQsIGNsa19pZCwgZnJlcSk7CisJaWYgKCh3aWR0aCA9PSAzMikgfHwgKGNoYW5u ZWxzID09IDEpKQorCQlkbWFfMzJiID0gMTsKKwlpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05E UlZfUENNX1NUUkVBTV9QTEFZQkFDSykKKwkJc3RyZWFtX291dCA9IDE7CisJY3B1X2RhaS0+ZG1h X2RhdGEgPSBweGFfc3NwX2dldF9kbWFfcGFyYW1zKHNzcCwgZG1hXzMyYiwgc3RyZWFtX291dCk7 CiAKLQlzd2l0Y2ggKGNsa19pZCkgewotCWNhc2UgUFhBX1NTUF9DTEtfTkVUX1BMTDoKLQkJc3Nj cjAgfD0gU1NDUjBfTU9EOwotCQlicmVhazsKLQljYXNlIFBYQV9TU1BfQ0xLX1BMTDoKLQkJLyog SW50ZXJuYWwgUExMIGlzIGZpeGVkICovCi0JCWlmIChjcHVfaXNfcHhhMjV4KCkpCi0JCQlwcml2 LT5zeXNjbGsgPSAxODQzMjAwOwotCQllbHNlCi0JCQlwcml2LT5zeXNjbGsgPSAxMzAwMDAwMDsK LQkJYnJlYWs7Ci0JY2FzZSBQWEFfU1NQX0NMS19FWFQ6Ci0JCXByaXYtPnN5c2NsayA9IGZyZXE7 Ci0JCXNzY3IwIHw9IFNTQ1IwX0VDUzsKLQkJYnJlYWs7Ci0JY2FzZSBQWEFfU1NQX0NMS19ORVQ6 Ci0JCXByaXYtPnN5c2NsayA9IGZyZXE7Ci0JCXNzY3IwIHw9IFNTQ1IwX05DUyB8IFNTQ1IwX01P RDsKKwkvKiBjbGVhciBzZWxlY3RlZCBTU1AgYml0cyAqLworCXNzY3IwID0gcHhhX3NzcF9yZWFk X3JlZyhzc3AsIFNTQ1IwKSAmIH4oU1NDUjBfRFNTIHwgU1NDUjBfRURTUyk7CisKKwkvKiBkYXRh X3NpemUgc2hvdWxkIG9ubHkgYmUgMTYtYml0IG9yIDMyLWJpdCBiZWNhdXNlIG9mIERNQS4KKwkg KiAyNC1iaXQgZGF0YSBpcyB0cmVhdGVkIGFzIDMyLWJpdCBkYXRhLgorCSAqLworCWRhdGFfc2l6 ZSA9IHdpZHRoICogY2hhbm5lbHM7CisJc3dpdGNoIChkYXRhX3NpemUpIHsKKwljYXNlIDE2Ogor CQlzc2NyMCB8PSBTU0NSMF9EYXRhU2l6ZSgxNik7CiAJCWJyZWFrOwotCWNhc2UgUFhBX1NTUF9D TEtfQVVESU86Ci0JCXByaXYtPnN5c2NsayA9IDA7Ci0JCXB4YV9zc3Bfc2V0X3Njcihzc3AsIDEp OwotCQlzc2NyMCB8PSBTU0NSMF9BQ1M7CisJY2FzZSAzMjoKKwkJc3NjcjAgfD0gKFNTQ1IwX0VE U1MgfCBTU0NSMF9EYXRhU2l6ZSgxNikpOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlyZXR1cm4g LUVOT0RFVjsKKwkJZGV2X2Vycigmc3NwLT5wZGV2LT5kZXYsICJJbnZhbGlkIGRhdGEgc2l6ZTol ZFxuIiwgZGF0YV9zaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JLyogVGhlIFNTUCBj bG9jayBtdXN0IGJlIGRpc2FibGVkIHdoZW4gY2hhbmdpbmcgU1NQIGNsb2NrIG1vZGUKLQkgKiBv biBQWEEyeHguICBPbiBQWEEzeHggaXQgbXVzdCBiZSBlbmFibGVkIHdoZW4gZG9pbmcgc28uICov Ci0JaWYgKCFjcHVfaXNfcHhhM3h4KCkpCi0JCWNsa19kaXNhYmxlKHNzcC0+Y2xrKTsKLQl2YWwg PSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApIHwgc3NjcjA7Ci0JcHhhX3NzcF93cml0ZV9y ZWcoc3NwLCBTU0NSMCwgdmFsKTsKLQlpZiAoIWNwdV9pc19weGEzeHgoKSkKLQkJY2xrX2VuYWJs ZShzc3AtPmNsayk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIFNldCB0aGUgU1NQIGNsb2Nr IGRpdmlkZXJzLgotICovCi1zdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV9jbGtkaXYoc3RydWN0 IHNuZF9zb2NfZGFpICpjcHVfZGFpLAotCWludCBkaXZfaWQsIGludCBkaXYpCi17Ci0Jc3RydWN0 IHNzcF9wcml2ICpwcml2ID0gY3B1X2RhaS0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBzc3BfZGV2 aWNlICpzc3AgPSBwcml2LT5zc3A7Ci0JaW50IHZhbDsKLQotCXN3aXRjaCAoZGl2X2lkKSB7Ci0J Y2FzZSBQWEFfU1NQX0FVRElPX0RJVl9BQ0RTOgotCQl2YWwgPSAocHhhX3NzcF9yZWFkX3JlZyhz c3AsIFNTQUNEKSAmIH4weDcpIHwgU1NBQ0RfQUNEUyhkaXYpOwotCQlweGFfc3NwX3dyaXRlX3Jl Zyhzc3AsIFNTQUNELCB2YWwpOwotCQlicmVhazsKLQljYXNlIFBYQV9TU1BfQVVESU9fRElWX1ND REI6Ci0JCXZhbCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCk7Ci0JCXZhbCAmPSB+U1NB Q0RfU0NEQjsKLSNpZiBkZWZpbmVkKENPTkZJR19QWEEzeHgpCi0JCWlmIChjcHVfaXNfcHhhM3h4 KCkpCi0JCQl2YWwgJj0gflNTQUNEX1NDRFg4OwotI2VuZGlmCi0JCXN3aXRjaCAoZGl2KSB7Ci0J CWNhc2UgUFhBX1NTUF9DTEtfU0NEQl8xOgotCQkJdmFsIHw9IFNTQUNEX1NDREI7Ci0JCQlicmVh azsKLQkJY2FzZSBQWEFfU1NQX0NMS19TQ0RCXzQ6Ci0JCQlicmVhazsKLSNpZiBkZWZpbmVkKENP TkZJR19QWEEzeHgpCi0JCWNhc2UgUFhBX1NTUF9DTEtfU0NEQl84OgotCQkJaWYgKGNwdV9pc19w eGEzeHgoKSkKLQkJCQl2YWwgfD0gU1NBQ0RfU0NEWDg7Ci0JCQllbHNlCi0JCQkJcmV0dXJuIC1F SU5WQUw7Ci0JCQlicmVhazsKLSNlbmRpZgotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7 CisJcHhhX3NzcF9kaXNhYmxlKHNzcCk7CisJc3Nwc3AgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwg U1NQU1ApOworCXNzcHNwICY9IH5TU1BTUF9USU1JTkdfTUFTSzsKKwlzd2l0Y2ggKHByaXYtPmRh aV9mbXQgJiBTTkRfU09DX0RBSUZNVF9GT1JNQVRfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlG TVRfSTJTOgorCQlpZiAoY2hhbm5lbHMgPT0gMSkgeworCQkJc3Nwc3AgfD0gU1NQU1BfRE1ZU1RS VCgxKTsKKwkJCXNzcHNwIHw9IFNTUFNQX0VETVlTVE9QKCgod2lkdGggLSAxKSA+PiAyKSAmIDcp OworCQkJc3Nwc3AgfD0gU1NQU1BfRE1ZU1RPUCgod2lkdGggLSAxKSAmIDMpOworCQkJc3Nwc3Ag fD0gU1NQU1BfU0ZSTURMWSh3aWR0aCA8PCAxKTsKKwkJCXNzcHNwIHw9IFNTUFNQX1NGUk1XRFRI KHdpZHRoKTsKKwkJfSBlbHNlIHsKKwkJCS8qIGNoYW5uZWxzID09IDIgKi8KKwkJCXNzcHNwIHw9 IFNTUFNQX1NGUk1XRFRIKHdpZHRoKTsKKwkJCS8qIERvbid0IHNldCBhbnkgdGltaW5nIHdoaWxl IEZTUlQgaXMgc2V0ICovCisJCQlzc3BzcCB8PSBTU1BTUF9GU1JUOwogCQl9Ci0JCXB4YV9zc3Bf d3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHZhbCk7CiAJCWJyZWFrOwotCWNhc2UgUFhBX1NTUF9ESVZf U0NSOgotCQlweGFfc3NwX3NldF9zY3Ioc3NwLCBkaXYpOworCWNhc2UgU05EX1NPQ19EQUlGTVRf TEVGVF9KOgorCQlpZiAoY2hhbm5lbHMgPT0gMSkgeworCQkJc3Nwc3AgfD0gU1NQU1BfRURNWVNU T1AoKHdpZHRoID4+IDIpICYgNyk7CisJCQlzc3BzcCB8PSBTU1BTUF9ETVlTVE9QKHdpZHRoICYg Myk7CisJCX0KKwkJc3Nwc3AgfD0gU1NQU1BfU0ZSTVdEVEgod2lkdGgpOwogCQlicmVhazsKLQlk ZWZhdWx0OgotCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAq IENvbmZpZ3VyZSB0aGUgUExMIGZyZXF1ZW5jeSBweGEyN3ggYW5kIChhZmFpayAtIHB4YTMyMCBv bmx5KQotICovCi1zdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV9wbGwoc3RydWN0IHNuZF9zb2Nf ZGFpICpjcHVfZGFpLCBpbnQgcGxsX2lkLAotCWludCBzb3VyY2UsIHVuc2lnbmVkIGludCBmcmVx X2luLCB1bnNpZ25lZCBpbnQgZnJlcV9vdXQpCi17Ci0Jc3RydWN0IHNzcF9wcml2ICpwcml2ID0g Y3B1X2RhaS0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBzc3BfZGV2aWNlICpzc3AgPSBwcml2LT5z c3A7Ci0JdTMyIHNzYWNkID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKSAmIH4weDcwOwot Ci0jaWYgZGVmaW5lZChDT05GSUdfUFhBM3h4KQotCWlmIChjcHVfaXNfcHhhM3h4KCkpCi0JCXB4 YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCAwKTsKLSNlbmRpZgotCi0Jc3dpdGNoIChmcmVx X291dCkgewotCWNhc2UgNTYyMjAwMDoKLQkJYnJlYWs7Ci0JY2FzZSAxMTM0NTAwMDoKLQkJc3Nh Y2QgfD0gKDB4MSA8PCA0KTsKLQkJYnJlYWs7Ci0JY2FzZSAxMjIzNTAwMDoKLQkJc3NhY2QgfD0g KDB4MiA8PCA0KTsKLQkJYnJlYWs7Ci0JY2FzZSAxNDg1NzAwMDoKLQkJc3NhY2QgfD0gKDB4MyA8 PCA0KTsKLQkJYnJlYWs7Ci0JY2FzZSAzMjg0MjAwMDoKLQkJc3NhY2QgfD0gKDB4NCA8PCA0KTsK LQkJYnJlYWs7Ci0JY2FzZSA0ODAwMDAwMDoKLQkJc3NhY2QgfD0gKDB4NSA8PCA0KTsKLQkJYnJl YWs7Ci0JY2FzZSAwOgotCQkvKiBEaXNhYmxlICovCi0JCWJyZWFrOwotCi0JZGVmYXVsdDoKLSNp ZmRlZiBDT05GSUdfUFhBM3h4Ci0JCS8qIFBYQTN4eCBoYXMgYSBjbG9jayBkaXRoZXJlciB3aGlj aCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZQotCQkgKiBhIHdpZGVyIHJhbmdlIG9mIGZyZXF1ZW5j aWVzIC0gY2FsY3VsYXRlIGEgdmFsdWUgZm9yIGl0LgotCQkgKi8KLQkJaWYgKGNwdV9pc19weGEz eHgoKSkgewotCQkJdTMyIHZhbDsKLQkJCXU2NCB0bXAgPSAxOTk2ODsKLQkJCXRtcCAqPSAxMDAw MDAwOwotCQkJZG9fZGl2KHRtcCwgZnJlcV9vdXQpOwotCQkJdmFsID0gdG1wOwotCi0JCQl2YWwg PSAodmFsIDw8IDE2KSB8IDY0OwotCQkJcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0FDREQsIHZh bCk7Ci0KLQkJCXNzYWNkIHw9ICgweDYgPDwgNCk7Ci0KLQkJCWRldl9kYmcoJnNzcC0+cGRldi0+ ZGV2LAotCQkJCSJVc2luZyBTU0FDREQgJXggdG8gc3VwcGx5ICV1SHpcbiIsCi0JCQkJdmFsLCBm cmVxX291dCk7Ci0JCQlicmVhazsKLQkJfQotI2VuZGlmCi0KLQkJcmV0dXJuIC1FSU5WQUw7Ci0J fQorCS8qIHVwZGF0ZSBTU1AgcmVnaXN0ZXIgYXQgdGhlIHNhbWUgdGltZSAqLworCXB4YV9zc3Bf d3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKKwlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNT UFNQLCBzc3BzcCk7CisJcHhhX3NzcF9lbmFibGUoc3NwKTsKIAotCXB4YV9zc3Bfd3JpdGVfcmVn KHNzcCwgU1NBQ0QsIHNzYWNkKTsKKwlkdW1wX3JlZ2lzdGVycyhzc3ApOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC00NTgsMjEzICs0MDksNiBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90cmlz dGF0ZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksCiAJcmV0dXJuIDA7CiB9CiAKLS8qCi0g KiBTZXQgdXAgdGhlIFNTUCBEQUkgZm9ybWF0LgotICogVGhlIFNTUCBQb3J0IG11c3QgYmUgaW5h Y3RpdmUgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhcyB0aGUKLSAqIHBoeXNpY2FsIGlu dGVyZmFjZSBmb3JtYXQgaXMgY2hhbmdlZC4KLSAqLwotc3RhdGljIGludCBweGFfc3NwX3NldF9k YWlfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwKLQkJdW5zaWduZWQgaW50IGZtdCkK LXsKLQlzdHJ1Y3Qgc3NwX3ByaXYgKnByaXYgPSBjcHVfZGFpLT5wcml2YXRlX2RhdGE7Ci0Jc3Ry dWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKLQl1MzIgc3NjcjA7Ci0JdTMyIHNzY3Ix OwotCXUzMiBzc3BzcDsKLQotCS8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gY2hhbmdlIGFueXRoaW5n IGF0IGFsbCAqLwotCWlmIChwcml2LT5kYWlfZm10ID09IGZtdCkKLQkJcmV0dXJuIDA7Ci0KLQkv KiB3ZSBjYW4gb25seSBjaGFuZ2UgdGhlIHNldHRpbmdzIGlmIHRoZSBwb3J0IGlzIG5vdCBpbiB1 c2UgKi8KLQlpZiAocHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSAmIFNTQ1IwX1NTRSkgewot CQlkZXZfZXJyKCZzc3AtPnBkZXYtPmRldiwKLQkJCSJjYW4ndCBjaGFuZ2UgaGFyZHdhcmUgZGFp IGZvcm1hdDogc3RyZWFtIGlzIGluIHVzZSIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQkv KiByZXNldCBwb3J0IHNldHRpbmdzICovCi0Jc3NjcjAgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwg U1NDUjApICYKLQkJKFNTQ1IwX0VDUyB8ICBTU0NSMF9OQ1MgfCBTU0NSMF9NT0QgfCBTU0NSMF9B Q1MpOwotCXNzY3IxID0gU1NDUjFfUnhUcmVzaCg4KSB8IFNTQ1IxX1R4VHJlc2goNyk7Ci0Jc3Nw c3AgPSAwOwotCi0Jc3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9NQVNURVJfTUFTSykgewot CWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGTToKLQkJc3NjcjEgfD0gU1NDUjFfU0NMS0RJUiB8 IFNTQ1IxX1NGUk1ESVI7Ci0JCWJyZWFrOwotCWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGUzoK LQkJc3NjcjEgfD0gU1NDUjFfU0NMS0RJUjsKLQkJYnJlYWs7Ci0JY2FzZSBTTkRfU09DX0RBSUZN VF9DQlNfQ0ZTOgotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0K LQlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0lOVl9NQVNLKSB7Ci0JY2FzZSBTTkRfU09D X0RBSUZNVF9OQl9ORjoKLQkJc3Nwc3AgfD0gU1NQU1BfU0ZSTVA7Ci0JCWJyZWFrOwotCWNhc2Ug U05EX1NPQ19EQUlGTVRfTkJfSUY6Ci0JCWJyZWFrOwotCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJf SUY6Ci0JCXNzcHNwIHw9IFNTUFNQX1NDTU9ERSgyKTsKLQkJYnJlYWs7Ci0JY2FzZSBTTkRfU09D X0RBSUZNVF9JQl9ORjoKLQkJc3Nwc3AgfD0gU1NQU1BfU0NNT0RFKDIpIHwgU1NQU1BfU0ZSTVA7 Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAo Zm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsKLQljYXNlIFNORF9TT0NfREFJRk1U X0kyUzoKLQkJc3NjcjAgfD0gU1NDUjBfUFNQOwotCQlzc2NyMSB8PSBTU0NSMV9SV09UIHwgU1ND UjFfVFJBSUw7Ci0JCS8qIFNlZSBod19wYXJhbXMoKSAqLwotCQlicmVhazsKLQotCWNhc2UgU05E X1NPQ19EQUlGTVRfRFNQX0E6Ci0JCXNzcHNwIHw9IFNTUFNQX0ZTUlQ7Ci0JY2FzZSBTTkRfU09D X0RBSUZNVF9EU1BfQjoKLQkJc3NjcjAgfD0gU1NDUjBfTU9EIHwgU1NDUjBfUFNQOwotCQlzc2Ny MSB8PSBTU0NSMV9UUkFJTCB8IFNTQ1IxX1JXT1Q7Ci0JCWJyZWFrOwotCi0JZGVmYXVsdDoKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgc3Nj cjApOwotCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHNzY3IxKTsKLQlweGFfc3NwX3dy aXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7Ci0KLQlkdW1wX3JlZ2lzdGVycyhzc3ApOwotCi0J LyogU2luY2Ugd2UgYXJlIGNvbmZpZ3VyaW5nIHRoZSB0aW1pbmdzIGZvciB0aGUgZm9ybWF0IGJ5 IGhhbmQKLQkgKiB3ZSBoYXZlIHRvIGRlZmVyIHNvbWUgdGhpbmdzIHVudGlsIGh3X3BhcmFtcygp IHdoZXJlIHdlCi0JICoga25vdyBwYXJhbWV0ZXJzIGxpa2UgdGhlIHNhbXBsZSBzaXplLgotCSAq LwotCXByaXYtPmRhaV9mbXQgPSBmbXQ7Ci0KLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIFNldCB0 aGUgU1NQIGF1ZGlvIERNQSBwYXJhbWV0ZXJzIGFuZCBzYW1wbGUgc2l6ZS4KLSAqIENhbiBiZSBj YWxsZWQgbXVsdGlwbGUgdGltZXMgYnkgb3NzIGVtdWxhdGlvbi4KLSAqLwotc3RhdGljIGludCBw eGFfc3NwX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKLQkJ CQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQlzdHJ1Y3Qgc25kX3NvY19k YWkgKmRhaSkKLXsKLQlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFt LT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gcnRkLT5kYWkt PmNwdV9kYWk7Ci0Jc3RydWN0IHNzcF9wcml2ICpwcml2ID0gY3B1X2RhaS0+cHJpdmF0ZV9kYXRh OwotCXN0cnVjdCBzc3BfZGV2aWNlICpzc3AgPSBwcml2LT5zc3A7Ci0JaW50IGNobiA9IHBhcmFt c19jaGFubmVscyhwYXJhbXMpOwotCXUzMiBzc2NyMDsKLQl1MzIgc3Nwc3A7Ci0JaW50IHdpZHRo ID0gc25kX3BjbV9mb3JtYXRfcGh5c2ljYWxfd2lkdGgocGFyYW1zX2Zvcm1hdChwYXJhbXMpKTsK LQlpbnQgdHRzYSA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU1RTQSkgJiAweGY7Ci0KLQkvKiBn ZW5lcmF0ZSBjb3JyZWN0IERNQSBwYXJhbXMgKi8KLQlpZiAoY3B1X2RhaS0+ZG1hX2RhdGEpCi0J CWtmcmVlKGNwdV9kYWktPmRtYV9kYXRhKTsKLQotCS8qIE5ldHdvcmsgbW9kZSB3aXRoIG9uZSBh Y3RpdmUgc2xvdCAodHRzYSA9PSAxKSBjYW4gYmUgdXNlZAotCSAqIHRvIGZvcmNlIDE2LWJpdCBm cmFtZSB3aWR0aCBvbiB0aGUgd2lyZSAoZm9yIFMxNl9MRSksIGV2ZW4KLQkgKiB3aXRoIHR3byBj aGFubmVscy4gVXNlIDE2LWJpdCBETUEgdHJhbnNmZXJzIGZvciB0aGlzIGNhc2UuCi0JICovCi0J Y3B1X2RhaS0+ZG1hX2RhdGEgPSBweGFfc3NwX2dldF9kbWFfcGFyYW1zKHNzcCwKLQkJCSgoY2hu ID09IDIpICYmICh0dHNhICE9IDEpKSB8fCAod2lkdGggPT0gMzIpLAotCQkJc3Vic3RyZWFtLT5z dHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSyk7Ci0KLQkvKiB3ZSBjYW4gb25seSBj aGFuZ2UgdGhlIHNldHRpbmdzIGlmIHRoZSBwb3J0IGlzIG5vdCBpbiB1c2UgKi8KLQlpZiAocHhh X3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSAmIFNTQ1IwX1NTRSkKLQkJcmV0dXJuIDA7Ci0KLQkv KiBjbGVhciBzZWxlY3RlZCBTU1AgYml0cyAqLwotCXNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhz c3AsIFNTQ1IwKSAmIH4oU1NDUjBfRFNTIHwgU1NDUjBfRURTUyk7Ci0JcHhhX3NzcF93cml0ZV9y ZWcoc3NwLCBTU0NSMCwgc3NjcjApOwotCi0JLyogYml0IHNpemUgKi8KLQlzc2NyMCA9IHB4YV9z c3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7Ci0Jc3dpdGNoIChwYXJhbXNfZm9ybWF0KHBhcmFtcykp IHsKLQljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFOgotI2lmZGVmIENPTkZJR19QWEEzeHgK LQkJaWYgKGNwdV9pc19weGEzeHgoKSkKLQkJCXNzY3IwIHw9IFNTQ1IwX0ZQQ0tFOwotI2VuZGlm Ci0JCXNzY3IwIHw9IFNTQ1IwX0RhdGFTaXplKDE2KTsKLQkJYnJlYWs7Ci0JY2FzZSBTTkRSVl9Q Q01fRk9STUFUX1MyNF9MRToKLQkJc3NjcjAgfD0gKFNTQ1IwX0VEU1MgfCBTU0NSMF9EYXRhU2l6 ZSg4KSk7Ci0JCWJyZWFrOwotCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMzJfTEU6Ci0JCXNzY3Iw IHw9IChTU0NSMF9FRFNTIHwgU1NDUjBfRGF0YVNpemUoMTYpKTsKLQkJYnJlYWs7Ci0JfQotCXB4 YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKLQotCXN3aXRjaCAocHJpdi0+ZGFp X2ZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7Ci0JY2FzZSBTTkRfU09DX0RBSUZN VF9JMlM6Ci0JICAgICAgIHNzcHNwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKTsKLQot CQlpZiAoKHB4YV9zc3BfZ2V0X3Njcihzc3ApID09IDQpICYmICh3aWR0aCA9PSAxNikpIHsKLQkJ CS8qIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGJpdGNsayBpcyA2NGZzCi0JCQkq IGFuZCB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIDIqMzIgYml0cyBvZiBhdWRpbwotCQkJKiBzYW1w bGVzLgotCQkJKgotCQkJKiBUaGUgU1NQIHZhbHVlcyB1c2VkIGZvciB0aGF0IGFyZSBhbGwgZm91 bmQgb3V0IGJ5Ci0JCQkqIHRyeWluZyBhbmQgZmFpbGluZyBhIGxvdDsgc29tZSBvZiB0aGUgcmVn aXN0ZXJzCi0JCQkqIG5lZWRlZCBmb3IgdGhhdCBtb2RlIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBQ WEEzeHguCi0JCQkqLwotCi0jaWZkZWYgQ09ORklHX1BYQTN4eAotCQkJaWYgKCFjcHVfaXNfcHhh M3h4KCkpCi0JCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJCXNzcHNwIHw9IFNTUFNQX1NGUk1XRFRI KHdpZHRoICogMik7Ci0JCQlzc3BzcCB8PSBTU1BTUF9TRlJNRExZKHdpZHRoICogNCk7Ci0JCQlz c3BzcCB8PSBTU1BTUF9FRE1ZU1RPUCgzKTsKLQkJCXNzcHNwIHw9IFNTUFNQX0RNWVNUT1AoMyk7 Ci0JCQlzc3BzcCB8PSBTU1BTUF9ETVlTVFJUKDEpOwotI2Vsc2UKLQkJCXJldHVybiAtRUlOVkFM OwotI2VuZGlmCi0JCX0gZWxzZSB7Ci0JCQkvKiBUaGUgZnJhbWUgd2lkdGggaXMgdGhlIHdpZHRo IHRoZSBMUkNMSyBpcwotCQkJICogYXNzZXJ0ZWQgZm9yOyB0aGUgZGVsYXkgaXMgZXhwcmVzc2Vk IGluCi0JCQkgKiBoYWxmIGN5Y2xlIHVuaXRzLiAgV2UgbmVlZCB0aGUgZXh0cmEgY3ljbGUKLQkJ CSAqIGJlY2F1c2UgdGhlIGRhdGEgc3RhcnRzIGNsb2NraW5nIG91dCBvbmUgQkNMSwotCQkJICog YWZ0ZXIgTFJDTEsgY2hhbmdlcyBwb2xhcml0eS4KLQkJCSAqLwotCQkJc3Nwc3AgfD0gU1NQU1Bf U0ZSTVdEVEgod2lkdGggKyAxKTsKLQkJCXNzcHNwIHw9IFNTUFNQX1NGUk1ETFkoKHdpZHRoICsg MSkgKiAyKTsKLQkJCXNzcHNwIHw9IFNTUFNQX0RNWVNUUlQoMSk7Ci0JCX0KLQotCQlweGFfc3Nw X3dyaXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWJy ZWFrOwotCX0KLQotCS8qIFdoZW4gd2UgdXNlIGEgbmV0d29yayBtb2RlLCB3ZSBhbHdheXMgcmVx dWlyZSBURE0gc2xvdHMKLQkgKiAtIGNvbXBsYWluIGxvdWRseSBhbmQgZmFpbCBpZiB0aGV5J3Zl IG5vdCBiZWVuIHNldCB1cCB5ZXQuCi0JICovCi0JaWYgKChzc2NyMCAmIFNTQ1IwX01PRCkgJiYg IXR0c2EpIHsKLQkJZGV2X2Vycigmc3NwLT5wZGV2LT5kZXYsICJObyBURE0gdGltZXNsb3QgY29u ZmlndXJlZFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWR1bXBfcmVnaXN0ZXJzKHNz cCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBweGFfc3NwX3RyaWdnZXIoc3RydWN0 IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjbWQsCiAJCQkgICBzdHJ1Y3Qgc25k X3NvY19kYWkgKmRhaSkKIHsKQEAgLTc2MCwxMjggKzUwNCwyMiBAQCBzdGF0aWMgdm9pZCBweGFf c3NwX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCXB4YV9zc3BfZnJlZShw cml2LT5zc3ApOwogfQogCi0jZGVmaW5lIFBYQV9TU1BfUkFURVMgKFNORFJWX1BDTV9SQVRFXzgw MDAgfCBTTkRSVl9QQ01fUkFURV8xMTAyNSB8XAotCQkJICBTTkRSVl9QQ01fUkFURV8xNjAwMCB8 IFNORFJWX1BDTV9SQVRFXzIyMDUwIHwJXAotCQkJICBTTkRSVl9QQ01fUkFURV80NDEwMCB8IFNO RFJWX1BDTV9SQVRFXzQ4MDAwIHwJXAotCQkJICBTTkRSVl9QQ01fUkFURV84ODIwMCB8IFNORFJW X1BDTV9SQVRFXzk2MDAwKQotCi0jZGVmaW5lIFBYQV9TU1BfRk9STUFUUyAoU05EUlZfUENNX0ZN VEJJVF9TMTZfTEUgfFwKLQkJCSAgICBTTkRSVl9QQ01fRk1UQklUX1MyNF9MRSB8CVwKLQkJCSAg ICBTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSkKLQotc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9v cHMgcHhhX3NzcF9kYWlfb3BzID0gewotCS5zdGFydHVwCT0gcHhhX3NzcF9zdGFydHVwLAotCS5z aHV0ZG93bgk9IHB4YV9zc3Bfc2h1dGRvd24sCi0JLnRyaWdnZXIJPSBweGFfc3NwX3RyaWdnZXIs Ci0JLmh3X3BhcmFtcwk9IHB4YV9zc3BfaHdfcGFyYW1zLAotCS5zZXRfc3lzY2xrCT0gcHhhX3Nz cF9zZXRfZGFpX3N5c2NsaywKLQkuc2V0X2Nsa2Rpdgk9IHB4YV9zc3Bfc2V0X2RhaV9jbGtkaXYs Ci0JLnNldF9wbGwJPSBweGFfc3NwX3NldF9kYWlfcGxsLAotCS5zZXRfZm10CT0gcHhhX3NzcF9z ZXRfZGFpX2ZtdCwKLQkuc2V0X3RkbV9zbG90CT0gcHhhX3NzcF9zZXRfZGFpX3RkbV9zbG90LAot CS5zZXRfdHJpc3RhdGUJPSBweGFfc3NwX3NldF9kYWlfdHJpc3RhdGUsCi19OwotCi1zdHJ1Y3Qg c25kX3NvY19kYWkgcHhhX3NzcF9kYWlbXSA9IHsKLQl7Ci0JCS5uYW1lID0gInB4YTJ4eC1zc3Ax IiwKLQkJLmlkID0gMCwKLQkJLnByb2JlID0gcHhhX3NzcF9wcm9iZSwKLQkJLnJlbW92ZSA9IHB4 YV9zc3BfcmVtb3ZlLAotCQkuc3VzcGVuZCA9IHB4YV9zc3Bfc3VzcGVuZCwKLQkJLnJlc3VtZSA9 IHB4YV9zc3BfcmVzdW1lLAotCQkucGxheWJhY2sgPSB7Ci0JCQkuY2hhbm5lbHNfbWluID0gMSwK LQkJCS5jaGFubmVsc19tYXggPSA4LAotCQkJLnJhdGVzID0gUFhBX1NTUF9SQVRFUywKLQkJCS5m b3JtYXRzID0gUFhBX1NTUF9GT1JNQVRTLAotCQl9LAotCQkuY2FwdHVyZSA9IHsKLQkJCSAuY2hh bm5lbHNfbWluID0gMSwKLQkJCSAuY2hhbm5lbHNfbWF4ID0gOCwKLQkJCS5yYXRlcyA9IFBYQV9T U1BfUkFURVMsCi0JCQkuZm9ybWF0cyA9IFBYQV9TU1BfRk9STUFUUywKLQkJIH0sCi0JCS5vcHMg PSAmcHhhX3NzcF9kYWlfb3BzLAotCX0sCi0JewkubmFtZSA9ICJweGEyeHgtc3NwMiIsCi0JCS5p ZCA9IDEsCi0JCS5wcm9iZSA9IHB4YV9zc3BfcHJvYmUsCi0JCS5yZW1vdmUgPSBweGFfc3NwX3Jl bW92ZSwKLQkJLnN1c3BlbmQgPSBweGFfc3NwX3N1c3BlbmQsCi0JCS5yZXN1bWUgPSBweGFfc3Nw X3Jlc3VtZSwKLQkJLnBsYXliYWNrID0gewotCQkJLmNoYW5uZWxzX21pbiA9IDEsCi0JCQkuY2hh bm5lbHNfbWF4ID0gOCwKLQkJCS5yYXRlcyA9IFBYQV9TU1BfUkFURVMsCi0JCQkuZm9ybWF0cyA9 IFBYQV9TU1BfRk9STUFUUywKLQkJfSwKLQkJLmNhcHR1cmUgPSB7Ci0JCQkuY2hhbm5lbHNfbWlu ID0gMSwKLQkJCS5jaGFubmVsc19tYXggPSA4LAotCQkJLnJhdGVzID0gUFhBX1NTUF9SQVRFUywK LQkJCS5mb3JtYXRzID0gUFhBX1NTUF9GT1JNQVRTLAotCQkgfSwKLQkJLm9wcyA9ICZweGFfc3Nw X2RhaV9vcHMsCi0JfSwKLQl7Ci0JCS5uYW1lID0gInB4YTJ4eC1zc3AzIiwKLQkJLmlkID0gMiwK LQkJLnByb2JlID0gcHhhX3NzcF9wcm9iZSwKLQkJLnJlbW92ZSA9IHB4YV9zc3BfcmVtb3ZlLAot CQkuc3VzcGVuZCA9IHB4YV9zc3Bfc3VzcGVuZCwKLQkJLnJlc3VtZSA9IHB4YV9zc3BfcmVzdW1l LAotCQkucGxheWJhY2sgPSB7Ci0JCQkuY2hhbm5lbHNfbWluID0gMSwKLQkJCS5jaGFubmVsc19t YXggPSA4LAotCQkJLnJhdGVzID0gUFhBX1NTUF9SQVRFUywKLQkJCS5mb3JtYXRzID0gUFhBX1NT UF9GT1JNQVRTLAotCQl9LAotCQkuY2FwdHVyZSA9IHsKLQkJCS5jaGFubmVsc19taW4gPSAxLAot CQkJLmNoYW5uZWxzX21heCA9IDgsCi0JCQkucmF0ZXMgPSBQWEFfU1NQX1JBVEVTLAotCQkJLmZv cm1hdHMgPSBQWEFfU1NQX0ZPUk1BVFMsCi0JCSB9LAotCQkub3BzID0gJnB4YV9zc3BfZGFpX29w cywKLQl9LAotCXsKLQkJLm5hbWUgPSAicHhhMnh4LXNzcDQiLAotCQkuaWQgPSAzLAotCQkucHJv YmUgPSBweGFfc3NwX3Byb2JlLAotCQkucmVtb3ZlID0gcHhhX3NzcF9yZW1vdmUsCi0JCS5zdXNw ZW5kID0gcHhhX3NzcF9zdXNwZW5kLAotCQkucmVzdW1lID0gcHhhX3NzcF9yZXN1bWUsCi0JCS5w bGF5YmFjayA9IHsKLQkJCS5jaGFubmVsc19taW4gPSAxLAotCQkJLmNoYW5uZWxzX21heCA9IDgs Ci0JCQkucmF0ZXMgPSBQWEFfU1NQX1JBVEVTLAotCQkJLmZvcm1hdHMgPSBQWEFfU1NQX0ZPUk1B VFMsCi0JCX0sCi0JCS5jYXB0dXJlID0gewotCQkJLmNoYW5uZWxzX21pbiA9IDEsCi0JCQkuY2hh bm5lbHNfbWF4ID0gOCwKLQkJCS5yYXRlcyA9IFBYQV9TU1BfUkFURVMsCi0JCQkuZm9ybWF0cyA9 IFBYQV9TU1BfRk9STUFUUywKLQkJIH0sCi0JCS5vcHMgPSAmcHhhX3NzcF9kYWlfb3BzLAotCX0s Ci19OwotRVhQT1JUX1NZTUJPTF9HUEwocHhhX3NzcF9kYWkpOwotCi1zdGF0aWMgaW50IF9faW5p dCBweGFfc3NwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gc25kX3NvY19yZWdpc3Rlcl9kYWlzKHB4 YV9zc3BfZGFpLCBBUlJBWV9TSVpFKHB4YV9zc3BfZGFpKSk7Ci19Ci1tb2R1bGVfaW5pdChweGFf c3NwX2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgcHhhX3NzcF9leGl0KHZvaWQpCitpbnQg cHhhX3NzcF9yZWdpc3Rlcl9kYWkoc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCiB7Ci0Jc25kX3Nv Y191bnJlZ2lzdGVyX2RhaXMocHhhX3NzcF9kYWksIEFSUkFZX1NJWkUocHhhX3NzcF9kYWkpKTsK KwlzdHJ1Y3Qgc25kX3NvY19kYWlfb3BzICpvcHMgPSBkYWktPm9wczsKKworCW9wcy0+c3RhcnR1 cCA9IHB4YV9zc3Bfc3RhcnR1cDsKKwlvcHMtPnNodXRkb3duID0gcHhhX3NzcF9zaHV0ZG93bjsK KwlvcHMtPnRyaWdnZXIgPSBweGFfc3NwX3RyaWdnZXI7CisJb3BzLT5od19wYXJhbXMgPSBweGFf c3NwX2h3X3BhcmFtczsKKwlvcHMtPnNldF9mbXQgPSBweGFfc3NwX3NldF9kYWlfZm10OworCW9w cy0+c2V0X3RkbV9zbG90ID0gcHhhX3NzcF9zZXRfZGFpX3RkbV9zbG90OworCW9wcy0+c2V0X3Ry aXN0YXRlID0gcHhhX3NzcF9zZXRfZGFpX3RyaXN0YXRlOworCisJZGFpLT5wcm9iZSA9IHB4YV9z c3BfcHJvYmU7CisJZGFpLT5yZW1vdmUgPSBweGFfc3NwX3JlbW92ZTsKKwlkYWktPnN1c3BlbmQg PSBweGFfc3NwX3N1c3BlbmQ7CisJZGFpLT5yZXN1bWUgPSBweGFfc3NwX3Jlc3VtZTsKKworCXJl dHVybiBzbmRfc29jX3JlZ2lzdGVyX2RhaShkYWkpOwogfQotbW9kdWxlX2V4aXQocHhhX3NzcF9l eGl0KTsKLQotLyogTW9kdWxlIGluZm9ybWF0aW9uICovCi1NT0RVTEVfQVVUSE9SKCJNYXJrIEJy b3duIDxicm9vbmllQG9wZW5zb3VyY2Uud29sZnNvbm1pY3JvLmNvbT4iKTsKLU1PRFVMRV9ERVND UklQVElPTigiUFhBIFNTUC9QQ00gU29DIEludGVyZmFjZSIpOwotTU9EVUxFX0xJQ0VOU0UoIkdQ TCIpOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3B4YS9weGEtc3NwLmggYi9zb3VuZC9zb2MvcHhh L3B4YS1zc3AuaAppbmRleCA5MWRlYWRkLi5hZjRhMDliIDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mv cHhhL3B4YS1zc3AuaAorKysgYi9zb3VuZC9zb2MvcHhhL3B4YS1zc3AuaApAQCAtOSwzOSArOSwy NSBAQAogI2lmbmRlZiBfUFhBX1NTUF9ICiAjZGVmaW5lIF9QWEFfU1NQX0gKIAotLyogcHhhIERB SSBTU1AgSURzICovCi0jZGVmaW5lIFBYQV9EQUlfU1NQMQkJCTAKLSNkZWZpbmUgUFhBX0RBSV9T U1AyCQkJMQotI2RlZmluZSBQWEFfREFJX1NTUDMJCQkyCi0jZGVmaW5lIFBYQV9EQUlfU1NQNAkJ CTMKLQotLyogU1NQIGNsb2NrIHNvdXJjZXMgKi8KLSNkZWZpbmUgUFhBX1NTUF9DTEtfUExMCTAK LSNkZWZpbmUgUFhBX1NTUF9DTEtfRVhUCTEKLSNkZWZpbmUgUFhBX1NTUF9DTEtfTkVUCTIKLSNk ZWZpbmUgUFhBX1NTUF9DTEtfQVVESU8JMwotI2RlZmluZSBQWEFfU1NQX0NMS19ORVRfUExMCTQK LQotLyogU1NQIGF1ZGlvIGRpdmlkZXJzICovCi0jZGVmaW5lIFBYQV9TU1BfQVVESU9fRElWX0FD RFMJCTAKLSNkZWZpbmUgUFhBX1NTUF9BVURJT19ESVZfU0NEQgkJMQotI2RlZmluZSBQWEFfU1NQ X0RJVl9TQ1IJCQkJMgotCi0vKiBTU1AgQUNEUyBhdWRpbyBkaXZpZGVycyB2YWx1ZXMgKi8KLSNk ZWZpbmUgUFhBX1NTUF9DTEtfQVVESU9fRElWXzEJCTAKLSNkZWZpbmUgUFhBX1NTUF9DTEtfQVVE SU9fRElWXzIJCTEKLSNkZWZpbmUgUFhBX1NTUF9DTEtfQVVESU9fRElWXzQJCTIKLSNkZWZpbmUg UFhBX1NTUF9DTEtfQVVESU9fRElWXzgJCTMKLSNkZWZpbmUgUFhBX1NTUF9DTEtfQVVESU9fRElW XzE2CTQKLSNkZWZpbmUgUFhBX1NTUF9DTEtfQVVESU9fRElWXzMyCTUKLQotLyogU1NQIGRpdmlk ZXIgYnlwYXNzICovCi0jZGVmaW5lIFBYQV9TU1BfQ0xLX1NDREJfNAkJMAotI2RlZmluZSBQWEFf U1NQX0NMS19TQ0RCXzEJCTEKLSNkZWZpbmUgUFhBX1NTUF9DTEtfU0NEQl84CQkyCi0KLSNkZWZp bmUgUFhBX1NTUF9QTExfT1VUICAwCisvKgorICogU1NQIGF1ZGlvIGRhdGEKKyAqLworc3RydWN0 IHNzcF9wcml2IHsKKwlzdHJ1Y3Qgc3NwX2RldmljZQkqc3NwOworCXVuc2lnbmVkIGludAkJc3lz Y2xrOworCWludAkJCWRhaV9mbXQ7CisjaWZkZWYgQ09ORklHX1BNCisJdWludDMyX3QJCWNyMDsK Kwl1aW50MzJfdAkJY3IxOworCXVpbnQzMl90CQl0bzsKKwl1aW50MzJfdAkJcHNwOworI2VuZGlm Cit9OwogCi1leHRlcm4gc3RydWN0IHNuZF9zb2NfZGFpIHB4YV9zc3BfZGFpWzRdOworZXh0ZXJu IHZvaWQgcHhhX3NzcF9lbmFibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCk7CitleHRlcm4gdm9p ZCBweGFfc3NwX2Rpc2FibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCk7CitleHRlcm4gc3RydWN0 IHB4YTJ4eF9wY21fZG1hX3BhcmFtcyAqCitweGFfc3NwX2dldF9kbWFfcGFyYW1zKHN0cnVjdCBz c3BfZGV2aWNlICpzc3AsIGludCB3aWR0aDQsIGludCBvdXQpOworZXh0ZXJuIGludCBweGFfc3Nw X3JlZ2lzdGVyX2RhaShzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSk7CiAKICNlbmRpZgpkaWZmIC0t Z2l0IGEvc291bmQvc29jL3B4YS9weGEyeHgtc3NwLmMgYi9zb3VuZC9zb2MvcHhhL3B4YTJ4eC1z c3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY1MzM0Ci0tLSAvZGV2 L251bGwKKysrIGIvc291bmQvc29jL3B4YS9weGEyeHgtc3NwLmMKQEAgLTAsMCArMSwzMTggQEAK Ky8qCisgKiBweGEyeHgtc3NwLmMgIC0tICBBTFNBIFNvYyBBdWRpbyBMYXllcgorICoKKyAqIENv cHlyaWdodCAyMDA1LDIwMDggV29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzIFBMQy4KKyAqIEF1dGhv cjogTGlhbSBHaXJkd29vZAorICogICAgICAgICBNYXJrIEJyb3duIDxicm9vbmllQG9wZW5zb3Vy Y2Uud29sZnNvbm1pY3JvLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgMjAxMCBNYXJ2ZWxsIEludGVy bmF0aW9uYWwgTHRkLgorICoJSGFvamlhbiBaaHVhbmcgPGhhb2ppYW4uemh1YW5nQG1hcnZlbGwu Y29tPgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqICB1bmRlciAgdGhlIHRlcm1zIG9mICB0 aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqICBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5z ZSwgb3IgKGF0IHlvdXIKKyAqICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRP RE86CisgKiAgbyBUZXN0IG5ldHdvcmsgbW9kZSBmb3IgPiAxNmJpdCBzYW1wbGUgc2l6ZQorICov CisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cisj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+ CisKKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8c291bmQvcGNtLmg+CisjaW5j bHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPgorI2luY2x1ZGUgPHNvdW5kL3NvYy5oPgorI2luY2x1 ZGUgPHNvdW5kL3B4YTJ4eC1saWIuaD4KKworI2luY2x1ZGUgPG1hY2gvaGFyZHdhcmUuaD4KKyNp bmNsdWRlIDxtYWNoL2RtYS5oPgorI2luY2x1ZGUgPHBsYXQvc3NwLmg+CisKKyNpbmNsdWRlICJw eGEyeHgtcGNtLmgiCisjaW5jbHVkZSAicHhhMnh4LXNzcC5oIgorI2luY2x1ZGUgInB4YS1zc3Au aCIKKworLyoqCisgKiBweGFfc3NwX3NldF9jbGtkaXYgLSBzZXQgU1NQIGNsb2NrIGRpdmlkZXIK KyAqIEBkaXY6IHNlcmlhbCBjbG9jayByYXRlIGRpdmlkZXIKKyAqLworc3RhdGljIHZvaWQgcHhh X3NzcF9zZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpzc3AsIHUzMiBkaXYpCit7CisJdTMyIHNz Y3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsKKworCWlmIChjcHVfaXNfcHhhMjV4 KCkgJiYgc3NwLT50eXBlID09IFBYQTI1eF9TU1ApIHsKKwkJc3NjcjAgJj0gfjB4MDAwMGZmMDA7 CisJCXNzY3IwIHw9ICgoZGl2IC0gMikvMikgPDwgODsgLyogMi4uNTEyICovCisJfSBlbHNlIHsK KwkJc3NjcjAgJj0gfjB4MDAwZmZmMDA7CisJCXNzY3IwIHw9IChkaXYgLSAxKSA8PCA4OyAgICAg LyogMS4uNDA5NiAqLworCX0KKwlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7 Cit9CisKKy8qKgorICogcHhhX3NzcF9nZXRfY2xrZGl2IC0gZ2V0IFNTUCBjbG9jayBkaXZpZGVy CisgKi8KK3N0YXRpYyB1MzIgcHhhX3NzcF9nZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpzc3Ap Cit7CisJdTMyIHNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsKKwl1MzIgZGl2 OworCisJaWYgKGNwdV9pc19weGEyNXgoKSAmJiBzc3AtPnR5cGUgPT0gUFhBMjV4X1NTUCkKKwkJ ZGl2ID0gKChzc2NyMCA+PiA4KSAmIDB4ZmYpICogMiArIDI7CisJZWxzZQorCQlkaXYgPSAoKHNz Y3IwID4+IDgpICYgMHhmZmYpICsgMTsKKwlyZXR1cm4gZGl2OworfQorCisvKgorICogU2V0IHRo ZSBTU1AgcG9ydHMgU1lTQ0xLLgorICovCitzdGF0aWMgaW50IHB4YTJ4eF9zc3Bfc2V0X2RhaV9z eXNjbGsoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpLAorCQkJCWludCBjbGtfaWQsIHVuc2ln bmVkIGludCBmcmVxLCBpbnQgZGlyKQoreworCXN0cnVjdCBzc3BfcHJpdiAqcHJpdiA9IGNwdV9k YWktPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+c3NwOwor CWludCB2YWw7CisKKwl1MzIgc3NjcjAgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYK KwkJfihTU0NSMF9FQ1MgfCAgU1NDUjBfTkNTIHwgU1NDUjBfTU9EIHwgU1NDUjBfQUNTKTsKKwor CWRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LAorCQkicHhhX3NzcF9zZXRfZGFpX3N5c2NsayBpZDog JWQsIGNsa19pZCAlZCwgZnJlcSAldVxuIiwKKwkJY3B1X2RhaS0+aWQsIGNsa19pZCwgZnJlcSk7 CisKKwlzd2l0Y2ggKGNsa19pZCkgeworCWNhc2UgUFhBMlhYX1NTUF9DTEtfTkVUX1BMTDoKKwkJ c3NjcjAgfD0gU1NDUjBfTU9EOworCQlicmVhazsKKwljYXNlIFBYQTJYWF9TU1BfQ0xLX1BMTDoK KwkJLyogSW50ZXJuYWwgUExMIGlzIGZpeGVkICovCisJCWlmIChjcHVfaXNfcHhhMjV4KCkpCisJ CQlwcml2LT5zeXNjbGsgPSAxODQzMjAwOworCQllbHNlCisJCQlwcml2LT5zeXNjbGsgPSAxMzAw MDAwMDsKKwkJYnJlYWs7CisJY2FzZSBQWEEyWFhfU1NQX0NMS19FWFQ6CisJCXByaXYtPnN5c2Ns ayA9IGZyZXE7CisJCXNzY3IwIHw9IFNTQ1IwX0VDUzsKKwkJYnJlYWs7CisJY2FzZSBQWEEyWFhf U1NQX0NMS19ORVQ6CisJCXByaXYtPnN5c2NsayA9IGZyZXE7CisJCXNzY3IwIHw9IFNTQ1IwX05D UyB8IFNTQ1IwX01PRDsKKwkJYnJlYWs7CisJY2FzZSBQWEEyWFhfU1NQX0NMS19BVURJTzoKKwkJ cHJpdi0+c3lzY2xrID0gMDsKKwkJcHhhX3NzcF9zZXRfc2NyKHNzcCwgMSk7CisJCXNzY3IwIHw9 IFNTQ1IwX0FDUzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQor CisJLyogVGhlIFNTUCBjbG9jayBtdXN0IGJlIGRpc2FibGVkIHdoZW4gY2hhbmdpbmcgU1NQIGNs b2NrIG1vZGUKKwkgKiBvbiBQWEEyeHguICBPbiBQWEEzeHggaXQgbXVzdCBiZSBlbmFibGVkIHdo ZW4gZG9pbmcgc28uICovCisJaWYgKCFjcHVfaXNfcHhhM3h4KCkpCisJCWNsa19kaXNhYmxlKHNz cC0+Y2xrKTsKKwl2YWwgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApIHwgc3NjcjA7CisJ cHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgdmFsKTsKKwlpZiAoIWNwdV9pc19weGEzeHgo KSkKKwkJY2xrX2VuYWJsZShzc3AtPmNsayk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFNl dCB0aGUgU1NQIGNsb2NrIGRpdmlkZXJzLgorICovCitzdGF0aWMgaW50IHB4YTJ4eF9zc3Bfc2V0 X2RhaV9jbGtkaXYoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpLAorCQkJCWludCBkaXZfaWQs IGludCBkaXYpCit7CisJc3RydWN0IHNzcF9wcml2ICpwcml2ID0gY3B1X2RhaS0+cHJpdmF0ZV9k YXRhOworCXN0cnVjdCBzc3BfZGV2aWNlICpzc3AgPSBwcml2LT5zc3A7CisJaW50IHZhbDsKKwor CXN3aXRjaCAoZGl2X2lkKSB7CisJY2FzZSBQWEEyWFhfU1NQX0FVRElPX0RJVl9BQ0RTOgorCQl2 YWwgPSAocHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKSAmIH4weDcpIHwgU1NBQ0RfQUNEUyhk aXYpOworCQlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNELCB2YWwpOworCQlicmVhazsKKwlj YXNlIFBYQTJYWF9TU1BfQVVESU9fRElWX1NDREI6CisJCXZhbCA9IHB4YV9zc3BfcmVhZF9yZWco c3NwLCBTU0FDRCk7CisJCXZhbCAmPSB+U1NBQ0RfU0NEQjsKKyNpZiBkZWZpbmVkKENPTkZJR19Q WEEzeHgpCisJCWlmIChjcHVfaXNfcHhhM3h4KCkpCisJCQl2YWwgJj0gflNTQUNEX1NDRFg4Owor I2VuZGlmCisJCXN3aXRjaCAoZGl2KSB7CisJCWNhc2UgUFhBMlhYX1NTUF9DTEtfU0NEQl8xOgor CQkJdmFsIHw9IFNTQUNEX1NDREI7CisJCQlicmVhazsKKwkJY2FzZSBQWEEyWFhfU1NQX0NMS19T Q0RCXzQ6CisJCQlicmVhazsKKyNpZiBkZWZpbmVkKENPTkZJR19QWEEzeHgpCisJCWNhc2UgUFhB MlhYX1NTUF9DTEtfU0NEQl84OgorCQkJaWYgKGNwdV9pc19weGEzeHgoKSkKKwkJCQl2YWwgfD0g U1NBQ0RfU0NEWDg7CisJCQllbHNlCisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQlicmVhazsKKyNl bmRpZgorCQlkZWZhdWx0OgorCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJcHhhX3NzcF93cml0 ZV9yZWcoc3NwLCBTU0FDRCwgdmFsKTsKKwkJYnJlYWs7CisJY2FzZSBQWEEyWFhfU1NQX0RJVl9T Q1I6CisJCXB4YV9zc3Bfc2V0X3Njcihzc3AsIGRpdik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXJldHVybiAtRU5PREVWOworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogQ29uZmlndXJl IHRoZSBQTEwgZnJlcXVlbmN5IHB4YTI3eCBhbmQgKGFmYWlrIC0gcHhhMzIwIG9ubHkpCisgKi8K K3N0YXRpYyBpbnQgcHhhMnh4X3NzcF9zZXRfZGFpX3BsbChzdHJ1Y3Qgc25kX3NvY19kYWkgKmNw dV9kYWksIGludCBwbGxfaWQsCisJCQkJaW50IHNvdXJjZSwgdW5zaWduZWQgaW50IGZyZXFfaW4s CisJCQkJdW5zaWduZWQgaW50IGZyZXFfb3V0KQoreworCXN0cnVjdCBzc3BfcHJpdiAqcHJpdiA9 IGNwdV9kYWktPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+ c3NwOworCXUzMiBzc2FjZCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCkgJiB+MHg3MDsK KworI2lmIGRlZmluZWQoQ09ORklHX1BYQTN4eCkKKwlpZiAoY3B1X2lzX3B4YTN4eCgpKQorCQlw eGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNERCwgMCk7CisjZW5kaWYKKworCXN3aXRjaCAoZnJl cV9vdXQpIHsKKwljYXNlIDU2MjIwMDA6CisJCWJyZWFrOworCWNhc2UgMTEzNDUwMDA6CisJCXNz YWNkIHw9ICgweDEgPDwgNCk7CisJCWJyZWFrOworCWNhc2UgMTIyMzUwMDA6CisJCXNzYWNkIHw9 ICgweDIgPDwgNCk7CisJCWJyZWFrOworCWNhc2UgMTQ4NTcwMDA6CisJCXNzYWNkIHw9ICgweDMg PDwgNCk7CisJCWJyZWFrOworCWNhc2UgMzI4NDIwMDA6CisJCXNzYWNkIHw9ICgweDQgPDwgNCk7 CisJCWJyZWFrOworCWNhc2UgNDgwMDAwMDA6CisJCXNzYWNkIHw9ICgweDUgPDwgNCk7CisJCWJy ZWFrOworCWNhc2UgMDoKKwkJLyogRGlzYWJsZSAqLworCQlicmVhazsKKworCWRlZmF1bHQ6Cisj aWZkZWYgQ09ORklHX1BYQTN4eAorCQkvKiBQWEEzeHggaGFzIGEgY2xvY2sgZGl0aGVyZXIgd2hp Y2ggY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUKKwkJICogYSB3aWRlciByYW5nZSBvZiBmcmVxdWVu Y2llcyAtIGNhbGN1bGF0ZSBhIHZhbHVlIGZvciBpdC4KKwkJICovCisJCWlmIChjcHVfaXNfcHhh M3h4KCkpIHsKKwkJCXUzMiB2YWw7CisJCQl1NjQgdG1wID0gMTk5Njg7CisJCQl0bXAgKj0gMTAw MDAwMDsKKwkJCWRvX2Rpdih0bXAsIGZyZXFfb3V0KTsKKwkJCXZhbCA9IHRtcDsKKworCQkJdmFs ID0gKHZhbCA8PCAxNikgfCA2NDsKKwkJCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCB2 YWwpOworCisJCQlzc2FjZCB8PSAoMHg2IDw8IDQpOworCisJCQlkZXZfZGJnKCZzc3AtPnBkZXYt PmRldiwKKwkJCQkiVXNpbmcgU1NBQ0REICV4IHRvIHN1cHBseSAldUh6XG4iLAorCQkJCXZhbCwg ZnJlcV9vdXQpOworCQkJYnJlYWs7CisJCX0KKyNlbmRpZgorCisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCXB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHNzYWNkKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBweGEyeHhfc3NwX2RhaV9vcHMg PSB7CisJLnNldF9zeXNjbGsJPSBweGEyeHhfc3NwX3NldF9kYWlfc3lzY2xrLAorCS5zZXRfY2xr ZGl2CT0gcHhhMnh4X3NzcF9zZXRfZGFpX2Nsa2RpdiwKKwkuc2V0X3BsbAk9IHB4YTJ4eF9zc3Bf c2V0X2RhaV9wbGwsCit9OworCisjZGVmaW5lIFBYQTJYWF9TU1BfUkFURVMJU05EUlZfUENNX1JB VEVfODAwMF85NjAwMAorI2RlZmluZSBQWEEyWFhfU1NQX0ZPUk1BVFMJKFNORFJWX1BDTV9GTVRC SVRfUzE2X0xFIHwJXAorCQkJCVNORFJWX1BDTV9GTVRCSVRfUzI0X0xFIHwJXAorCQkJCVNORFJW X1BDTV9GTVRCSVRfUzMyX0xFKQorCisjZGVmaW5lIFBYQTJYWF9TU1BfREFJKF9pZCkJCQkJCVwK K3sJCQkJCQkJCVwKKwkubmFtZQk9ICJweGEyeHgtc3NwIiwJCQkJCVwKKwkuaWQJPSBfaWQsCQkJ CQkJXAorCS5wbGF5YmFjayA9IHsJCQkJCQlcCisJCS5jaGFubmVsc19taW4gPSAxLAkJCQlcCisJ CS5jaGFubmVsc19tYXggPSA4LAkJCQlcCisJCS5yYXRlcyA9IFBYQTJYWF9TU1BfUkFURVMsCQkJ XAorCQkuZm9ybWF0cyA9IFBYQTJYWF9TU1BfRk9STUFUUywJCQlcCisJfSwJCQkJCQkJXAorCS5j YXB0dXJlID0gewkJCQkJCVwKKwkJLmNoYW5uZWxzX21pbiA9IDEsCQkJCVwKKwkJLmNoYW5uZWxz X21heCA9IDgsCQkJCVwKKwkJLnJhdGVzID0gUFhBMlhYX1NTUF9SQVRFUywJCQlcCisJCS5mb3Jt YXRzID0gUFhBMlhYX1NTUF9GT1JNQVRTLAkJCVwKKwl9LAkJCQkJCQlcCisJLm9wcyA9ICZweGEy eHhfc3NwX2RhaV9vcHMsCQkJCVwKK30KKworc3RydWN0IHNuZF9zb2NfZGFpIHB4YTJ4eF9zc3Bf ZGFpW10gPSB7CisJUFhBMlhYX1NTUF9EQUkoUFhBMlhYX0RBSV9TU1AxKSwKKwlQWEEyWFhfU1NQ X0RBSShQWEEyWFhfREFJX1NTUDIpLAorCVBYQTJYWF9TU1BfREFJKFBYQTJYWF9EQUlfU1NQMyks CisJUFhBMlhYX1NTUF9EQUkoUFhBMlhYX0RBSV9TU1A0KSwKK307CitFWFBPUlRfU1lNQk9MX0dQ TChweGEyeHhfc3NwX2RhaSk7CisKK3N0YXRpYyBpbnQgX19pbml0IHB4YTJ4eF9zc3BfaW5pdCh2 b2lkKQoreworCXN0cnVjdCBzbmRfc29jX2RhaSAqZGFpOworCWludCBpLCByZXQ7CisKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShweGEyeHhfc3NwX2RhaSk7IGkrKykgeworCQlkYWkgPSAm cHhhMnh4X3NzcF9kYWlbaV07CisJCXJldCA9IHB4YV9zc3BfcmVnaXN0ZXJfZGFpKGRhaSk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKwlyZXR1cm4gcmV0OworfQorbW9kdWxlX2lu aXQocHhhMnh4X3NzcF9pbml0KTsKKworc3RhdGljIHZvaWQgX19leGl0IHB4YTJ4eF9zc3BfZXhp dCh2b2lkKQoreworCXN0cnVjdCBzbmRfc29jX2RhaSAqZGFpID0gTlVMTDsKKwlpbnQgaTsKKwor CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHB4YTJ4eF9zc3BfZGFpKTsgaSsrKSB7CisJCWRh aSA9ICZweGEyeHhfc3NwX2RhaVtpXTsKKwkJc25kX3NvY191bnJlZ2lzdGVyX2RhaShkYWkpOwor CX0KK30KK21vZHVsZV9leGl0KHB4YTJ4eF9zc3BfZXhpdCk7CisKKy8qIE1vZHVsZSBpbmZvcm1h dGlvbiAqLworTU9EVUxFX0FVVEhPUigiTWFyayBCcm93biA8YnJvb25pZUBvcGVuc291cmNlLndv bGZzb25taWNyby5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlBYQTJ4eCBTU1AvUENNIFNv QyBJbnRlcmZhY2UiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9weGEvcHhhMnh4LXNzcC5oIGIvc291bmQvc29jL3B4YS9weGEyeHgtc3NwLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0ZTBiNQotLS0gL2Rldi9udWxsCisrKyBi L3NvdW5kL3NvYy9weGEvcHhhMnh4LXNzcC5oCkBAIC0wLDAgKzEsNDggQEAKKworLyoKKyAqIEFT b0MgUFhBIFNTUCBwb3J0IHN1cHBvcnQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMK KyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNp Zm5kZWYgX19QWEEyWFhfU09DX1NTUF9ICisjZGVmaW5lIF9fUFhBMlhYX1NPQ19TU1BfSAorCisv KiBweGEgREFJIFNTUCBJRHMgKi8KKyNkZWZpbmUgUFhBMlhYX0RBSV9TU1AxCQkJCTAKKyNkZWZp bmUgUFhBMlhYX0RBSV9TU1AyCQkJCTEKKyNkZWZpbmUgUFhBMlhYX0RBSV9TU1AzCQkJCTIKKyNk ZWZpbmUgUFhBMlhYX0RBSV9TU1A0CQkJCTMKKworLyogU1NQIGNsb2NrIHNvdXJjZXMgKi8KKyNk ZWZpbmUgUFhBMlhYX1NTUF9DTEtfUExMCQkJMAorI2RlZmluZSBQWEEyWFhfU1NQX0NMS19FWFQJ CQkxCisjZGVmaW5lIFBYQTJYWF9TU1BfQ0xLX05FVAkJCTIKKyNkZWZpbmUgUFhBMlhYX1NTUF9D TEtfQVVESU8JCQkzCisjZGVmaW5lIFBYQTJYWF9TU1BfQ0xLX05FVF9QTEwJCQk0CisKKy8qIFNT UCBhdWRpbyBkaXZpZGVycyAqLworI2RlZmluZSBQWEEyWFhfU1NQX0FVRElPX0RJVl9BQ0RTCQkw CisjZGVmaW5lIFBYQTJYWF9TU1BfQVVESU9fRElWX1NDREIJCTEKKyNkZWZpbmUgUFhBMlhYX1NT UF9ESVZfU0NSCQkJMgorCisvKiBTU1AgQUNEUyBhdWRpbyBkaXZpZGVycyB2YWx1ZXMgKi8KKyNk ZWZpbmUgUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzEJCTAKKyNkZWZpbmUgUFhBMlhYX1NTUF9D TEtfQVVESU9fRElWXzIJCTEKKyNkZWZpbmUgUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzQJCTIK KyNkZWZpbmUgUFhBMlhYX1NTUF9DTEtfQVVESU9fRElWXzgJCTMKKyNkZWZpbmUgUFhBMlhYX1NT UF9DTEtfQVVESU9fRElWXzE2CQk0CisjZGVmaW5lIFBYQTJYWF9TU1BfQ0xLX0FVRElPX0RJVl8z MgkJNQorCisvKiBTU1AgZGl2aWRlciBieXBhc3MgKi8KKyNkZWZpbmUgUFhBMlhYX1NTUF9DTEtf U0NEQl80CQkJMAorI2RlZmluZSBQWEEyWFhfU1NQX0NMS19TQ0RCXzEJCQkxCisjZGVmaW5lIFBY QTJYWF9TU1BfQ0xLX1NDREJfOAkJCTIKKworI2RlZmluZSBQWEEyWFhfU1NQX1BMTF9PVVQgIAkJ CTAKKworZXh0ZXJuIHN0cnVjdCBzbmRfc29jX2RhaSBweGEyeHhfc3NwX2RhaVtdOworCisjZW5k aWYJCS8qIF9fUFhBMlhYX1NPQ19TU1BfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3B4YS9y YXVtZmVsZC5jIGIvc291bmQvc29jL3B4YS9yYXVtZmVsZC5jCmluZGV4IDdlM2Y0MTYuLmU2NmRj MTIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9weGEvcmF1bWZlbGQuYworKysgYi9zb3VuZC9zb2Mv cHhhL3JhdW1mZWxkLmMKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICIuLi9jb2RlY3MvY3M0 MjcwLmgiCiAjaW5jbHVkZSAiLi4vY29kZWNzL2FrNDEwNC5oIgogI2luY2x1ZGUgInB4YTJ4eC1w Y20uaCIKLSNpbmNsdWRlICJweGEtc3NwLmgiCisjaW5jbHVkZSAicHhhMnh4LXNzcC5oIgogCiAj ZGVmaW5lIEdQSU9fU1BESUZfUkVTRVQJKDM4KQogI2RlZmluZSBHUElPX01DTEtfUkVTRVQJCSgx MTEpCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBzdGF0aWMgaW50IHJhdW1mZWxkX2NzNDI3MF9od19w YXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJaWYgKHJldCA8IDAp CiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBzbmRfc29jX2RhaV9zZXRfY2xrZGl2KGNwdV9kYWks IFBYQV9TU1BfRElWX1NDUiwgNCk7CisJcmV0ID0gc25kX3NvY19kYWlfc2V0X2Nsa2RpdihjcHVf ZGFpLCBQWEEyWFhfU1NQX0RJVl9TQ1IsIDQpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0 OwogCi0JcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2NsayhjcHVfZGFpLCBQWEFfU1NQX0NMS19F WFQsIGNsaywgMSk7CisJcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2NsayhjcHVfZGFpLCBQWEEy WFhfU1NQX0NMS19FWFQsIGNsaywgMSk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAK QEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgaW50IHJhdW1mZWxkX2xpbmVfcmVzdW1lKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiBzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsg cmF1bWZlbGRfbGluZV9kYWkgPSB7CiAJLm5hbWUJCT0gIkNTNDI3MCIsCiAJLnN0cmVhbV9uYW1l CT0gIkNTNDI3MCIsCi0JLmNwdV9kYWkJPSAmcHhhX3NzcF9kYWlbUFhBX0RBSV9TU1AxXSwKKwku Y3B1X2RhaQk9ICZweGEyeHhfc3NwX2RhaVtQWEEyWFhfREFJX1NTUDFdLAogCS5jb2RlY19kYWkJ PSAmY3M0MjcwX2RhaSwKIAkub3BzCQk9ICZyYXVtZmVsZF9jczQyNzBfb3BzLAogfTsKQEAgLTIz MiwxMSArMjMyLDExIEBAIHN0YXRpYyBpbnQgcmF1bWZlbGRfYWs0MTA0X2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJu IHJldDsKIAotCXJldCA9IHNuZF9zb2NfZGFpX3NldF9jbGtkaXYoY3B1X2RhaSwgUFhBX1NTUF9E SVZfU0NSLCA0KTsKKwlyZXQgPSBzbmRfc29jX2RhaV9zZXRfY2xrZGl2KGNwdV9kYWksIFBYQTJY WF9TU1BfRElWX1NDUiwgNCk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAKLQlyZXQg PSBzbmRfc29jX2RhaV9zZXRfc3lzY2xrKGNwdV9kYWksIFBYQV9TU1BfQ0xLX0VYVCwgY2xrLCAx KTsKKwlyZXQgPSBzbmRfc29jX2RhaV9zZXRfc3lzY2xrKGNwdV9kYWksIFBYQTJYWF9TU1BfQ0xL X0VYVCwgY2xrLCAxKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjUwLDcg KzI1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19vcHMgcmF1bWZlbGRfYWs0MTA0X29wcyA9 IHsKIHN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfbGluayByYXVtZmVsZF9zcGRpZl9kYWkgPSB7 CiAJLm5hbWUJCT0gImFrNDEwNCIsCiAJLnN0cmVhbV9uYW1lCT0gIlBsYXliYWNrIiwKLQkuY3B1 X2RhaQk9ICZweGFfc3NwX2RhaVtQWEFfREFJX1NTUDJdLAorCS5jcHVfZGFpCT0gJnB4YTJ4eF9z c3BfZGFpW1BYQTJYWF9EQUlfU1NQMl0sCiAJLmNvZGVjX2RhaQk9ICZhazQxMDRfZGFpLAogCS5v cHMJCT0gJnJhdW1mZWxkX2FrNDEwNF9vcHMsCiB9OwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3B4 YS96eWxvbml0ZS5jIGIvc291bmQvc29jL3B4YS96eWxvbml0ZS5jCmluZGV4IGRkNjc4YWUuLmM2 NWUwZGIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9weGEvenlsb25pdGUuYworKysgYi9zb3VuZC9z b2MvcHhhL3p5bG9uaXRlLmMKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICIuLi9jb2RlY3Mv d205NzEzLmgiCiAjaW5jbHVkZSAicHhhMnh4LXBjbS5oIgogI2luY2x1ZGUgInB4YTJ4eC1hYzk3 LmgiCi0jaW5jbHVkZSAicHhhLXNzcC5oIgorI2luY2x1ZGUgInB4YTJ4eC1zc3AuaCIKIAogLyoK ICAqIFRoZXJlIGlzIGEgcGh5c2ljYWwgc3dpdGNoIFNXMTUgb24gdGhlIGJvYXJkIHdoaWNoIGNo YW5nZXMgdGhlIE1DTEsKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgaW50IHp5bG9uaXRlX3Zv aWNlX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkvKiBB ZGQgMSB0byB0aGUgd2lkdGggZm9yIHRoZSBsZWFkaW5nIGNsb2NrIGN5Y2xlICovCiAJcGxsX291 dCA9IHJhdGUgKiAod2lkdGggKyAxKSAqIDg7CiAKLQlyZXQgPSBzbmRfc29jX2RhaV9zZXRfc3lz Y2xrKGNwdV9kYWksIFBYQV9TU1BfQ0xLX0FVRElPLCAwLCAxKTsKKwlyZXQgPSBzbmRfc29jX2Rh aV9zZXRfc3lzY2xrKGNwdV9kYWksIFBYQTJYWF9TU1BfQ0xLX0FVRElPLCAwLCAxKTsKIAlpZiAo cmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc25kX3NvY19kYWlfbGluayB6eWxvbml0ZV9kYWlbXSA9IHsKIHsKIAkubmFtZSA9ICJXTTk3 MTMgVm9pY2UiLAogCS5zdHJlYW1fbmFtZSA9ICJXTTk3MTMgVm9pY2UiLAotCS5jcHVfZGFpID0g JnB4YV9zc3BfZGFpW1BYQV9EQUlfU1NQM10sCisJLmNwdV9kYWkgPSAmcHhhMnh4X3NzcF9kYWlb UFhBMlhYX0RBSV9TU1AzXSwKIAkuY29kZWNfZGFpID0gJndtOTcxM19kYWlbV005NzEzX0RBSV9Q Q01fVk9JQ0VdLAogCS5vcHMgPSAmenlsb25pdGVfdm9pY2Vfb3BzLAogfSwKLS0gCjEuNS42LjUK Cg== --00504502bd9137a7bc048452905f Content-Type: text/x-patch; charset=US-ASCII; name="0003-ASoC-support-pxa168-ssp-in-ASoC.patch" Content-Disposition: attachment; filename="0003-ASoC-support-pxa168-ssp-in-ASoC.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g82x0nm02 RnJvbSAwNTM5NjA2YTA5ZWNjOTRmNDVkY2Y0Yzc5M2JhNDZjMWYxMDczOGIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFydmVs bC5jb20+CkRhdGU6IFdlZCwgMTcgTWFyIDIwMTAgMTc6MzE6MDQgLTA0MDAKU3ViamVjdDogW1BB VENIXSBBU29DOiBzdXBwb3J0IHB4YTE2OCBzc3AgaW4gQVNvQwoKU3VwcG9ydCBweGExNjggc3Nw IGluIEFTb0MuIFRoZSBTU1AgYml0IGNsb2NrIG1lY2hhbmlzbSBpcyB0b3RhbGx5IGRpZmZlcmVu dApmcm9tIHB4YTJ4eCBzZXJpZXMuCgpTaWduZWQtb2ZmLWJ5OiBIYW9qaWFuIFpodWFuZyA8aGFv amlhbi56aHVhbmdAbWFydmVsbC5jb20+Ci0tLQogYXJjaC9hcm0vbWFjaC1tbXAvaW5jbHVkZS9t YWNoL3JlZ3MtbXBtdS5oIHwgICA0OCArKysrKysKIHNvdW5kL3NvYy9weGEvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNvdW5kL3NvYy9weGEvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICB8ICAgIDIgKwogc291bmQvc29jL3B4YS9weGEtc3NwLmggICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCiBzb3VuZC9zb2MvcHhhL3B4YTE2OC1zc3AuYyAgICAgICAgICAg ICAgICAgfCAgMjMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNvdW5kL3NvYy9weGEv cHhhMTY4LXNzcC5oICAgICAgICAgICAgICAgICB8ICAgMjcgKysrKwogNiBmaWxlcyBjaGFuZ2Vk LCAzMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBh cmNoL2FybS9tYWNoLW1tcC9pbmNsdWRlL21hY2gvcmVncy1tcG11LmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzb3VuZC9zb2MvcHhhL3B4YTE2OC1zc3AuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5k L3NvYy9weGEvcHhhMTY4LXNzcC5oCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tbXAvaW5j bHVkZS9tYWNoL3JlZ3MtbXBtdS5oIGIvYXJjaC9hcm0vbWFjaC1tbXAvaW5jbHVkZS9tYWNoL3Jl Z3MtbXBtdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNTcyMzYKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLW1tcC9pbmNsdWRlL21hY2gvcmVncy1tcG11 LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIGxpbnV4L2FyY2gvYXJtL21hY2gtbW1wL2luY2x1 ZGUvbWFjaC9yZWdzLW1wbXUuaAorICoKKyAqICAgTWFpbiBQb3dlciBNYW5hZ2VtZW50IFVuaXQK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fTUFDSF9SRUdTX01Q TVVfSAorI2RlZmluZSBfX0FTTV9NQUNIX1JFR1NfTVBNVV9ICisKKyNpbmNsdWRlIDxtYWNoL2Fk ZHItbWFwLmg+CisKKyNkZWZpbmUgTVBNVV9WSVJUX0JBU0UJKEFQQl9WSVJUX0JBU0UgKyAweDUw MDAwKQorI2RlZmluZSBNUE1VX1JFRyhvZmYpCShNUE1VX1ZJUlRfQkFTRSArIChvZmYpKQorCisj ZGVmaW5lIE1QTVVfQ1BDUglNUE1VX1JFRygweDAwMDApCisjZGVmaW5lIE1QTVVfRkNDUglNUE1V X1JFRygweDAwMDgpCisjZGVmaW5lIE1QTVVfUE9DUglNUE1VX1JFRygweDAwMGMpCisjZGVmaW5l IE1QTVVfUE9TUglNUE1VX1JFRygweDAwMTApCisjZGVmaW5lIE1QTVVfU1VDQ1IJTVBNVV9SRUco MHgwMDE0KQorI2RlZmluZSBNUE1VX1ZSQ1IJTVBNVV9SRUcoMHgwMDE4KQorI2RlZmluZSBNUE1V X09IQ1IJTVBNVV9SRUcoMHgwMDFjKQorI2RlZmluZSBNUE1VX0dQQ1IJTVBNVV9SRUcoMHgwMDMw KQorI2RlZmluZSBNUE1VX1BMTDJDUglNUE1VX1JFRygweDAwMzQpCisjZGVmaW5lIE1QTVVfU0ND UglNUE1VX1JFRygweDAwMzgpCisjZGVmaW5lIE1QTVVfQ1dVQ1JNCU1QTVVfUkVHKDB4MDA0YykK KyNkZWZpbmUgTVBNVV9QTEwxX1JFRzEJTVBNVV9SRUcoMHgwMDUwKQorI2RlZmluZSBNUE1VX1BM TDFfUkVHMglNUE1VX1JFRygweDAwNTQpCisjZGVmaW5lIE1QTVVfUExMMV9TU0MJTVBNVV9SRUco MHgwMDU4KQorI2RlZmluZSBNUE1VX1BMTDJfUkVHMQlNUE1VX1JFRygweDAwNjApCisjZGVmaW5l IE1QTVVfUExMMl9SRUcyCU1QTVVfUkVHKDB4MDA2NCkKKyNkZWZpbmUgTVBNVV9QTEwyX1NTQwlN UE1VX1JFRygweDAwNjgpCisjZGVmaW5lIE1QTVVfVFMJCU1QTVVfUkVHKDB4MDA4MCkKKyNkZWZp bmUgTVBNVV9XRFRQQ1IJTVBNVV9SRUcoMHgwMjAwKQorI2RlZmluZSBNUE1VX0FQQ1IJTVBNVV9S RUcoMHgxMDAwKQorI2RlZmluZSBNUE1VX0FQU1IJTVBNVV9SRUcoMHgxMDA0KQorI2RlZmluZSBN UE1VX0FQUlIJTVBNVV9SRUcoMHgxMDIwKQorI2RlZmluZSBNUE1VX0FDR1IJTVBNVV9SRUcoMHgx MDI0KQorI2RlZmluZSBNUE1VX0FSU1IJTVBNVV9SRUcoMHgxMDI4KQorI2RlZmluZSBNUE1VX0FX VUNSUwlNUE1VX1JFRygweDEwNDgpCisjZGVmaW5lIE1QTVVfQVdVQ1JNCU1QTVVfUkVHKDB4MTA0 YykKKyNkZWZpbmUgTVBNVV9BU1lTRFIJTVBNVV9SRUcoMHgxMDUwKQorI2RlZmluZSBNUE1VX0FT U1BEUglNUE1VX1JFRygweDEwNTQpCisKKyNlbmRpZiAvKiBfX0FTTV9NQUNIX1JFR1NfQVBNVV9I ICovCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvcHhhL0tjb25maWcgYi9zb3VuZC9zb2MvcHhhL0tj b25maWcKaW5kZXggN2JlMWQ1Zi4uMjg2ZDUyYSAxMDA2NDQKLS0tIGEvc291bmQvc29jL3B4YS9L Y29uZmlnCisrKyBiL3NvdW5kL3NvYy9weGEvS2NvbmZpZwpAQCAtMSw2ICsxLDYgQEAKIGNvbmZp ZyBTTkRfUFhBMlhYX1NPQwogCXRyaXN0YXRlICJTb0MgQXVkaW8gZm9yIHRoZSBJbnRlbCBQWEEy eHggY2hpcCIKLQlkZXBlbmRzIG9uIEFSQ0hfUFhBCisJZGVwZW5kcyBvbiBBUkNIX1BYQSB8fCBB UkNIX01NUAogCXNlbGVjdCBTTkRfUFhBMlhYX0xJQgogCWhlbHAKIAkgIFNheSBZIG9yIE0gaWYg eW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIGNvZGVjcyBhdHRhY2hlZCB0bwpAQCAtMjUsNiAr MjUsMTAgQEAgY29uZmlnIFNORF9QWEEyWFhfU09DX1NTUAogCXRyaXN0YXRlCiAJc2VsZWN0IFBY QV9TU1AKIAorY29uZmlnIFNORF9QWEExNjhfU09DX1NTUAorCXRyaXN0YXRlCisJc2VsZWN0IFBY QV9TU1AKKwogY29uZmlnIFNORF9QWEEyWFhfU09DX0NPUkdJCiAJdHJpc3RhdGUgIlNvQyBBdWRp byBzdXBwb3J0IGZvciBTaGFycCBaYXVydXMgU0wtQzd4MCIKIAlkZXBlbmRzIG9uIFNORF9QWEEy WFhfU09DICYmIFBYQV9TSEFSUF9DN3h4CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvcHhhL01ha2Vm aWxlIGIvc291bmQvc29jL3B4YS9NYWtlZmlsZQppbmRleCAzM2MxNTc5Li5hNzRlNmM5IDEwMDY0 NAotLS0gYS9zb3VuZC9zb2MvcHhhL01ha2VmaWxlCisrKyBiL3NvdW5kL3NvYy9weGEvTWFrZWZp bGUKQEAgLTMsMTEgKzMsMTMgQEAgc25kLXNvYy1weGEyeHgtb2JqcyA6PSBweGEyeHgtcGNtLm8K IHNuZC1zb2MtcHhhMnh4LWFjOTctb2JqcyA6PSBweGEyeHgtYWM5Ny5vCiBzbmQtc29jLXB4YTJ4 eC1pMnMtb2JqcyA6PSBweGEyeHgtaTJzLm8KIHNuZC1zb2MtcHhhMnh4LXNzcC1vYmpzIDo9IHB4 YS1zc3AubyBweGEyeHgtc3NwLm8KK3NuZC1zb2MtcHhhMTY4LXNzcC1vYmpzIDo9IHB4YS1zc3Au byBweGExNjgtc3NwLm8KIAogb2JqLSQoQ09ORklHX1NORF9QWEEyWFhfU09DKSArPSBzbmQtc29j LXB4YTJ4eC5vCiBvYmotJChDT05GSUdfU05EX1BYQTJYWF9TT0NfQUM5NykgKz0gc25kLXNvYy1w eGEyeHgtYWM5Ny5vCiBvYmotJChDT05GSUdfU05EX1BYQTJYWF9TT0NfSTJTKSArPSBzbmQtc29j LXB4YTJ4eC1pMnMubwogb2JqLSQoQ09ORklHX1NORF9QWEEyWFhfU09DX1NTUCkgKz0gc25kLXNv Yy1weGEyeHgtc3NwLm8KK29iai0kKENPTkZJR19TTkRfUFhBMTY4X1NPQ19TU1ApICs9IHNuZC1z b2MtcHhhMTY4LXNzcC5vCiAKICMgUFhBIE1hY2hpbmUgU3VwcG9ydAogc25kLXNvYy1jb3JnaS1v YmpzIDo9IGNvcmdpLm8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9weGEvcHhhLXNzcC5oIGIvc291 bmQvc29jL3B4YS9weGEtc3NwLmgKaW5kZXggYWY0YTA5Yi4uODUyNjYwYSAxMDA2NDQKLS0tIGEv c291bmQvc29jL3B4YS9weGEtc3NwLmgKKysrIGIvc291bmQvc29jL3B4YS9weGEtc3NwLmgKQEAg LTE1LDYgKzE1LDcgQEAKIHN0cnVjdCBzc3BfcHJpdiB7CiAJc3RydWN0IHNzcF9kZXZpY2UJKnNz cDsKIAl1bnNpZ25lZCBpbnQJCXN5c2NsazsKKwl1bnNpZ25lZCBpbnQJCXN5c2Nsa19pZHg7CiAJ aW50CQkJZGFpX2ZtdDsKICNpZmRlZiBDT05GSUdfUE0KIAl1aW50MzJfdAkJY3IwOwpkaWZmIC0t Z2l0IGEvc291bmQvc29jL3B4YS9weGExNjgtc3NwLmMgYi9zb3VuZC9zb2MvcHhhL3B4YTE2OC1z c3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODdlODk5Ci0tLSAvZGV2 L251bGwKKysrIGIvc291bmQvc29jL3B4YS9weGExNjgtc3NwLmMKQEAgLTAsMCArMSwyMzMgQEAK Ky8qCisgKiBweGExNjgtc3NwLmMgIC0tICBBTFNBIFNvYyBBdWRpbyBMYXllcgorICoKKyAqIENv cHlyaWdodCAyMDA5LTIwMTAgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4KKyAqCUhhb2ppYW4g Wmh1YW5nIDxoYW9qaWFuLnpodWFuZ0BtYXJ2ZWxsLmNvbT4KKyAqCisgKiAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5 IGl0CisgKiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiAgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUT0RPOgorICogIG8gVGVzdCBuZXR3b3JrIG1v ZGUKKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvY2xrLmg+CisKKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8c291bmQvc29j Lmg+CisjaW5jbHVkZSA8c291bmQvcGNtLmg+CisjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5o PgorI2luY2x1ZGUgPHNvdW5kL3B4YTJ4eC1saWIuaD4KKworI2luY2x1ZGUgPG1hY2gvaGFyZHdh cmUuaD4KKyNpbmNsdWRlIDxtYWNoL2RtYS5oPgorI2luY2x1ZGUgPG1hY2gvcmVncy1hcGJjLmg+ CisjaW5jbHVkZSA8bWFjaC9yZWdzLWFwbXUuaD4KKyNpbmNsdWRlIDxtYWNoL3JlZ3MtbXBtdS5o PgorI2luY2x1ZGUgPHBsYXQvc3NwLmg+CisKKyNpbmNsdWRlICJweGEyeHgtcGNtLmgiCisjaW5j bHVkZSAicHhhMTY4LXNzcC5oIgorI2luY2x1ZGUgInB4YS1zc3AuaCIKKworc3RydWN0IHB4YTE2 OF9zc3BfbWNsayB7CisJdW5zaWduZWQgaW50CXJhdGU7CisJdW5zaWduZWQgaW50CWZvcm1hdDsK Kwl1bnNpZ25lZCBpbnQJY2hhbm5lbDsKKwl1bnNpZ25lZCBpbnQJbWNsazsKKwl1bnNpZ25lZCBp bnQJbWNsa19kZW5vbTsKKwl1bnNpZ25lZCBpbnQJbWNsa19udW07CisJdW5zaWduZWQgaW50CWJj bGs7CisJdW5zaWduZWQgaW50CWJjbGtfZGVub207CisJdW5zaWduZWQgaW50CWJjbGtfbnVtOwor fTsKKworLyoKKyAqIFRoaXMgdGFibGUgaXMgdXNlZCB3aGlsZSBDUFUgaXMgY2xvY2sgbWFzdGVy LgorICogTUNMSyA9IDMxMk1IeiAqIEFTWVNDTEtfREVOT00gLyBBU1lTQ0xLX05VTQorICogQkNM SyA9IE1DTEsgKiBTU1BTQ0xLX0RFTk9NIC8gU1NQU0NMS19OVU0KKyAqLworc3RhdGljIGNvbnN0 IHN0cnVjdCBweGExNjhfc3NwX21jbGsgbWNsa19jb25mW10gPSB7CisJLyogcmF0ZSwgZm10LCBj aG4sIG1jbGssICAgZGVuLCBudW0sIGJjbGssIGRlbiwgbnVtICovCisJezk2MDAwLCAxNiwgMiwg MTIyODgwMDAsICA2NCwgMTYyNSwgNjE0NDAwMCwgIDEsICAyfSwKKwl7OTYwMDAsIDE2LCAxLCAx MjI4ODAwMCwgIDY0LCAxNjI1LCAxNTM2MDAwLCAgMSwgIDh9LAorCXs4ODIwMCwgMTYsIDIsIDEx Mjg5NjAwLCAyOTQsIDgxMjUsIDU2NDQ4MDAsICAxLCAgMn0sCisJezg4MjAwLCAxNiwgMSwgMTEy ODk2MDAsIDI5NCwgODEyNSwgMTQxMTIwMCwgIDEsICA4fSwKKwl7NDgwMDAsIDE2LCAyLCAxMjI4 ODAwMCwgIDY0LCAxNjI1LCAzMDcyMDAwLCAgMSwgIDR9LAorCXs0ODAwMCwgMTYsIDEsIDEyMjg4 MDAwLCAgNjQsIDE2MjUsICA3NjgwMDAsICAxLCAxNn0sCisJezQ0MTAwLCAxNiwgMiwgMTEyODk2 MDAsIDI5NCwgODEyNSwgMjgyMjQwMCwgIDEsICA0fSwKKwl7NDQxMDAsIDE2LCAxLCAxMTI4OTYw MCwgMjk0LCA4MTI1LCAgNzA1NjAwLCAgMSwgMTZ9LAorCXszMjAwMCwgMTYsIDIsIDEyMjg4MDAw LCAgNjQsIDE2MjUsIDIwNDgwMDAsICAxLCAgNn0sCisJezMyMDAwLCAxNiwgMSwgMTIyODgwMDAs ICA2NCwgMTYyNSwgIDUxMjAwMCwgIDEsIDI0fSwKKwl7MjIwNTAsIDE2LCAyLCAxMTI4OTYwMCwg Mjk0LCA4MTI1LCAxNDExMjAwLCAgMSwgIDh9LAorCXsyMjA1MCwgMTYsIDEsIDExMjg5NjAwLCAy OTQsIDgxMjUsICAzNTI4MDAsICAxLCAzMn0sCisJezE2MDAwLCAxNiwgMiwgMTIyODgwMDAsICA2 NCwgMTYyNSwgMTAyNDAwMCwgIDEsIDEyfSwKKwl7MTYwMDAsIDE2LCAxLCAxMjI4ODAwMCwgIDY0 LCAxNjI1LCAgMjU2MDAwLCAgMSwgNDh9LAorCXsxMTAyNSwgMTYsIDIsIDExMjg5NjAwLCAyOTQs IDgxMjUsICA3MDU2MDAsICAxLCAxNn0sCisJezExMDI1LCAxNiwgMSwgMTEyODk2MDAsIDI5NCwg ODEyNSwgIDE3NjQwMCwgIDEsIDY0fSwKKwl7IDgwMDAsIDE2LCAyLCAxMjI4ODAwMCwgIDY0LCAx NjI1LCAgNTEyMDAwLCAgMSwgMjR9LAorCXsgODAwMCwgMTYsIDEsIDEyMjg4MDAwLCAgNjQsIDE2 MjUsICAxMjgwMDAsICAxLCA5Nn0sCit9OworCitpbnQgcHhhMTY4X3F1ZXJ5X21jbGsoc3RydWN0 IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCSAgICAgIHN0cnVjdCBzbmRfcGNtX2h3 X3BhcmFtcyAqcGFyYW1zKQoreworCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQgPSBz dWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkgPSBy dGQtPmRhaS0+Y3B1X2RhaTsKKwlzdHJ1Y3Qgc3NwX3ByaXYgKnByaXYgPSBjcHVfZGFpLT5wcml2 YXRlX2RhdGE7CisJdW5zaWduZWQgaW50IHJhdGUsIHdpZHRoLCBjaGFubmVsOworCWludCBpLCBy ZXQgPSAtRUlOVkFMOworCisJcmF0ZSA9ICBwYXJhbXNfcmF0ZShwYXJhbXMpOworCXdpZHRoID0g c25kX3BjbV9mb3JtYXRfcGh5c2ljYWxfd2lkdGgocGFyYW1zX2Zvcm1hdChwYXJhbXMpKTsKKwlj aGFubmVsID0gcGFyYW1zX2NoYW5uZWxzKHBhcmFtcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShtY2xrX2NvbmYpOyBpKyspIHsKKwkJaWYgKChtY2xrX2NvbmZbaV0ucmF0ZSA9PSBy YXRlKQorCQkJJiYgKG1jbGtfY29uZltpXS5mb3JtYXQgPT0gd2lkdGgpCisJCQkmJiAobWNsa19j b25mW2ldLmNoYW5uZWwgPT0gY2hhbm5lbCkpIHsKKwkJCS8qIHNhdmUgYm90aCBtY2xrIGFuZCBt Y2xrIGluZGV4IGludG8gc3NwX3ByaXYgKi8KKwkJCXByaXYtPnN5c2NsayA9IG1jbGtfY29uZltp XS5tY2xrOworCQkJcHJpdi0+c3lzY2xrX2lkeCA9IGk7CisJCQlyZXQgPSBwcml2LT5zeXNjbGs7 CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTF9HUEwo cHhhMTY4X3F1ZXJ5X21jbGspOworCisvKgorICogU2V0IHRoZSBTU1AgcG9ydHMgU1lTQ0xLIG9u bHkgZnJvbSBBdWRpbyBTWVNDTEsuCisgKi8KK3N0YXRpYyBpbnQgcHhhMTY4X3NzcF9zZXRfZGFp X3N5c2NsayhzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksIGludCBjbGtfaWQsCisJCQkJICAg ICB1bnNpZ25lZCBpbnQgZnJlcSwgaW50IGRpcikKK3sKKwlzdHJ1Y3Qgc3NwX3ByaXYgKnByaXYg PSBjcHVfZGFpLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYt PnNzcDsKKwl1bnNpZ25lZCBpbnQgc3NjcjAsIGRhdGEsIGFzeXNkciwgYXNzcGRyOworCisJZGV2 X2RiZygmc3NwLT5wZGV2LT5kZXYsICIlcyBpZDogJWQsIGNsa19pZCAlZCwgZnJlcSAldVxuIiwK KwkJX19mdW5jX18sIGNwdV9kYWktPmlkLCBjbGtfaWQsIGZyZXEpOworCisJLyogZnJlcSBpcyB0 aGUgaW5kZXggb2YgbWNsa19jb25mIHRhYmxlICovCisJaWYgKChmcmVxIDwgMCkgfHwgKHByaXYt PnN5c2Nsa19pZHggPj0gQVJSQVlfU0laRShtY2xrX2NvbmYpKSkgeworCQlkZXZfd2Fybigmc3Nw LT5wZGV2LT5kZXYsICJXcm9uZyBmcmVxdWVuY3kgb24gU1lTQ0xLXG4iKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCWFzeXNkciA9IChtY2xrX2NvbmZbcHJpdi0+c3lzY2xrX2lkeF0ubWNsa19u dW0gPDwgMTYpCisJCXwgbWNsa19jb25mW3ByaXYtPnN5c2Nsa19pZHhdLm1jbGtfZGVub207CisJ YXNzcGRyID0gMDsKKwkvKiBJZiBBU1lTQ0xLIGlzIHN1cHBsaWVkIGJ5IHB4YTE2OCwgQVNTUERS IHNob3VsZCBiZSBjb25maWd1cmVkLiAqLworCWlmIChkaXIgPT0gU05EX1NPQ19DTE9DS19PVVQp CisJCWFzc3BkciA9IChtY2xrX2NvbmZbcHJpdi0+c3lzY2xrX2lkeF0uYmNsa19udW0gPDwgMTYp CisJCQl8IG1jbGtfY29uZltwcml2LT5zeXNjbGtfaWR4XS5iY2xrX2Rlbm9tOworCisJcHhhX3Nz cF9kaXNhYmxlKHNzcCk7CisJY2xrX2Rpc2FibGUoc3NwLT5jbGspOwkJCS8qIFNTUCBwb3J0IGlu dGVybmFsIGNsb2NrICovCisKKwkvKiBjbGVhciBFQ1MsIE5DUywgTU9ELCBBQ1MgKi8KKwlzc2Ny MCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7CisJZGF0YSA9IHNzY3IwICYgfihTU0NS MF9FQ1MgfCBTU0NSMF9OQ1MgfCBTU0NSMF9NT0QgfCBTU0NSMF9BQ1MpOworCWlmIChzc2NyMCAh PSBkYXRhKQorCQlweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBkYXRhKTsKKworCS8qIHVw ZGF0ZSBkaXZpZGVyIHJlZ2lzdGVyIGluIE1QTVUgKi8KKwlfX3Jhd193cml0ZWwoYXN5c2RyLCBN UE1VX0FTWVNEUik7CisJX19yYXdfd3JpdGVsKGFzc3BkciwgTVBNVV9BU1NQRFIpOworCisJY2xr X2VuYWJsZShzc3AtPmNsayk7CQkJLyogU1NQIHBvcnQgaW50ZXJuYWwgY2xvY2sgKi8KKwlweGFf c3NwX2VuYWJsZShzc3ApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHB4YTE2OF9zc3Bf aHdfZnJlZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICAgIHN0 cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpy dGQgPSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9k YWkgPSBydGQtPmRhaS0+Y3B1X2RhaTsKKwlzdHJ1Y3Qgc3NwX3ByaXYgKnByaXYgPSBjcHVfZGFp LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKKwor CXB4YV9zc3BfZGlzYWJsZShzc3ApOworCS8qIHVwZGF0ZSBkaXZpZGVyIHJlZ2lzdGVyIGluIE1Q TVUgKi8KKwlfX3Jhd193cml0ZWwoMCwgTVBNVV9BU1lTRFIpOworCV9fcmF3X3dyaXRlbCgwLCBN UE1VX0FTU1BEUik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlf b3BzIHB4YTE2OF9zc3BfZGFpX29wcyA9IHsKKwkuaHdfZnJlZQk9IHB4YTE2OF9zc3BfaHdfZnJl ZSwKKwkuc2V0X3N5c2Nsawk9IHB4YTE2OF9zc3Bfc2V0X2RhaV9zeXNjbGssCit9OworCisjZGVm aW5lIFBYQTE2OF9TU1BfUkFURVMJU05EUlZfUENNX1JBVEVfODAwMF85NjAwMAorI2RlZmluZSBQ WEExNjhfU1NQX0ZPUk1BVFMJKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwJXAorCQkJCVNORFJW X1BDTV9GTVRCSVRfUzI0X0xFIHwJXAorCQkJCVNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKQorCisj ZGVmaW5lIFBYQTE2OF9TU1BfREFJKF9pZCkJCQkJCVwKK3sJCQkJCQkJCVwKKwkubmFtZQk9ICJw eGExNjgtc3NwIiwJCQkJCVwKKwkuaWQJPSBfaWQsCQkJCQkJXAorCS5wbGF5YmFjayA9IHsJCQkJ CQlcCisJCS5jaGFubmVsc19taW4gPSAxLAkJCQlcCisJCS5jaGFubmVsc19tYXggPSAyLAkJCQlc CisJCS5yYXRlcyA9IFBYQTE2OF9TU1BfUkFURVMsCQkJXAorCQkuZm9ybWF0cyA9IFBYQTE2OF9T U1BfRk9STUFUUywJCQlcCisJfSwJCQkJCQkJXAorCS5jYXB0dXJlID0gewkJCQkJCVwKKwkJLmNo YW5uZWxzX21pbiA9IDEsCQkJCVwKKwkJLmNoYW5uZWxzX21heCA9IDIsCQkJCVwKKwkJLnJhdGVz ID0gUFhBMTY4X1NTUF9SQVRFUywJCQlcCisJCS5mb3JtYXRzID0gUFhBMTY4X1NTUF9GT1JNQVRT LAkJCVwKKwl9LAkJCQkJCQlcCisJLm9wcyA9ICZweGExNjhfc3NwX2RhaV9vcHMsCQkJCVwKK30K Kworc3RydWN0IHNuZF9zb2NfZGFpIHB4YTE2OF9zc3BfZGFpW10gPSB7CisJUFhBMTY4X1NTUF9E QUkoUFhBMTY4X0RBSV9TU1AxKSwKKwlQWEExNjhfU1NQX0RBSShQWEExNjhfREFJX1NTUDIpLAor CVBYQTE2OF9TU1BfREFJKFBYQTE2OF9EQUlfU1NQMyksCisJUFhBMTY4X1NTUF9EQUkoUFhBMTY4 X0RBSV9TU1A0KSwKKwlQWEExNjhfU1NQX0RBSShQWEExNjhfREFJX1NTUDUpLAorfTsKK0VYUE9S VF9TWU1CT0xfR1BMKHB4YTE2OF9zc3BfZGFpKTsKKworc3RhdGljIGludCBfX2luaXQgcHhhMTY4 X3NzcF9pbml0KHZvaWQpCit7CisJc3RydWN0IHNuZF9zb2NfZGFpICpkYWk7CisJaW50IGksIHJl dDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHB4YTE2OF9zc3BfZGFpKTsgaSsrKSB7 CisJCWRhaSA9ICZweGExNjhfc3NwX2RhaVtpXTsKKwkJcmV0ID0gcHhhX3NzcF9yZWdpc3Rlcl9k YWkoZGFpKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCXJldHVybiByZXQ7Cit9 Cittb2R1bGVfaW5pdChweGExNjhfc3NwX2luaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgcHhh MTY4X3NzcF9leGl0KHZvaWQpCit7CisJc3RydWN0IHNuZF9zb2NfZGFpICpkYWkgPSBOVUxMOwor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocHhhMTY4X3NzcF9kYWkpOyBp KyspIHsKKwkJZGFpID0gJnB4YTE2OF9zc3BfZGFpW2ldOworCQlzbmRfc29jX3VucmVnaXN0ZXJf ZGFpKGRhaSk7CisJfQorfQorbW9kdWxlX2V4aXQocHhhMTY4X3NzcF9leGl0KTsKKworLyogTW9k dWxlIGluZm9ybWF0aW9uICovCitNT0RVTEVfQVVUSE9SKCJIYW9qaWFuIFpodWFuZyA8aGFvamlh bi56aHVhbmdAbWFydmVsbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlBYQTE2OCBTU1Ag U29DIEludGVyZmFjZSIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCmRpZmYgLS1naXQgYS9z b3VuZC9zb2MvcHhhL3B4YTE2OC1zc3AuaCBiL3NvdW5kL3NvYy9weGEvcHhhMTY4LXNzcC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZTIzYzcKLS0tIC9kZXYvbnVsbAor KysgYi9zb3VuZC9zb2MvcHhhL3B4YTE2OC1zc3AuaApAQCAtMCwwICsxLDI3IEBACisvKgorICog QVNvQyBQWEExNjggU1NQIHBvcnQgc3VwcG9ydAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8K KworI2lmbmRlZiBfUFhBMTY4X1NTUF9ICisjZGVmaW5lIF9QWEExNjhfU1NQX0gKKworLyogcHhh IERBSSBTU1AgSURzICovCisjZGVmaW5lIFBYQTE2OF9EQUlfU1NQMQkJCTAKKyNkZWZpbmUgUFhB MTY4X0RBSV9TU1AyCQkJMQorI2RlZmluZSBQWEExNjhfREFJX1NTUDMJCQkyCisjZGVmaW5lIFBY QTE2OF9EQUlfU1NQNAkJCTMKKyNkZWZpbmUgUFhBMTY4X0RBSV9TU1A1CQkJNAorCisvKiBQWEEx NjggU1NQIFNZU0NMSyBzb3VyY2UgKi8KKyNkZWZpbmUgUFhBMTY4X0FTWVNDTEtfTUFTVEVSCQkw CS8qIEFTWVNDTEsgbWFzdGVyIC0tIHB4YTE2OCAqLworI2RlZmluZSBQWEExNjhfQVNZU0NMS19T TEFWRQkJMQkvKiBBU1lTQ0xLIHNsYXZlIC0tIHB4YTE2OCAqLworCitleHRlcm4gc3RydWN0IHNu ZF9zb2NfZGFpIHB4YTE2OF9zc3BfZGFpW107CisKK2V4dGVybiBpbnQgcHhhMTY4X3F1ZXJ5X21j bGsoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkgICAgIHN0cnVjdCBz bmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKTsKKyNlbmRpZgotLSAKMS41LjYuNQoK --00504502bd9137a7bc048452905f Content-Type: text/x-patch; charset=US-ASCII; name="0004-ASoC-enable-wm8753-in-aspenite.patch" Content-Disposition: attachment; filename="0004-ASoC-enable-wm8753-in-aspenite.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g82x0qm23 RnJvbSA1ZDk0YjIwYjg5MTg1YWU1YTY5YzdiYTVkMWU5OThkNTY4MDY0ZGVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFydmVs bC5jb20+CkRhdGU6IEZyaSwgMTkgTWFyIDIwMTAgMTg6MTM6MzIgLTA0MDAKU3ViamVjdDogW1BB VENIXSBBU29DOiBlbmFibGUgd204NzUzIGluIGFzcGVuaXRlCgpFbmFibGUgd204NzUzIGNvZGVj IGluIGFzcGVuaXRlIHZpYSBzc3AgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1ieTogSGFvamlhbiBa aHVhbmcgPGhhb2ppYW4uemh1YW5nQG1hcnZlbGwuY29tPgotLS0KIHNvdW5kL3NvYy9weGEvS2Nv bmZpZyAgICB8ICAgIDkgKysKIHNvdW5kL3NvYy9weGEvTWFrZWZpbGUgICB8ICAgIDIgKwogc291 bmQvc29jL3B4YS9hc3Blbml0ZS5jIHwgIDE5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIwMSBpbnNlcnRpb25zKCspLCAw IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9weGEvYXNwZW5pdGUu YwoKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9weGEvS2NvbmZpZyBiL3NvdW5kL3NvYy9weGEvS2Nv bmZpZwppbmRleCAyODZkNTJhLi4wZjEwZWUyIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvcHhhL0tj b25maWcKKysrIGIvc291bmQvc29jL3B4YS9LY29uZmlnCkBAIC0xMTMsNiArMTEzLDE1IEBAIGNv bmZpZyBTTkRfUFhBMlhYX1NPQ19QQUxNMjdYCiAJICBTYXkgWSBpZiB5b3Ugd2FudCB0byBhZGQg c3VwcG9ydCBmb3IgU29DIGF1ZGlvIG9uCiAJICBQYWxtIFR8WCwgVDUsIEUyIG9yIExpZmVEcml2 ZSBoYW5kaGVsZCBjb21wdXRlci4KIAorY29uZmlnIFNORF9TT0NfQVNQRU5JVEUKKwl0cmlzdGF0 ZSAiU29DIEF1ZGlvIHN1cHBvcnQgZm9yIE1hcnZlbGwgQXNwZW5pdGUiCisJZGVwZW5kcyBvbiBT TkRfUFhBMlhYX1NPQyAmJiBNQUNIX0FTUEVOSVRFCisJc2VsZWN0IFNORF9QWEExNjhfU09DX1NT UAorCXNlbGVjdCBTTkRfU09DX1dNODc1MworCWhlbHAKKwkgIFNheSBZIGlmIHlvdSB3YW50IHRv IGFkZCBzdXBwb3J0IGZvciBTb0MgYXVkaW8gb24gdGhlCisJICBNYXJ2ZWxsIEFzcGVuaXRlIHJl ZmVyZW5jZSBwbGF0Zm9ybS4KKwogY29uZmlnIFNORF9TT0NfWllMT05JVEUKIAl0cmlzdGF0ZSAi U29DIEF1ZGlvIHN1cHBvcnQgZm9yIE1hcnZlbGwgWnlsb25pdGUiCiAJZGVwZW5kcyBvbiBTTkRf UFhBMlhYX1NPQyAmJiBNQUNIX1pZTE9OSVRFCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvcHhhL01h a2VmaWxlIGIvc291bmQvc29jL3B4YS9NYWtlZmlsZQppbmRleCBhNzRlNmM5Li43NDA1NGFhIDEw MDY0NAotLS0gYS9zb3VuZC9zb2MvcHhhL01ha2VmaWxlCisrKyBiL3NvdW5kL3NvYy9weGEvTWFr ZWZpbGUKQEAgLTEyLDYgKzEyLDcgQEAgb2JqLSQoQ09ORklHX1NORF9QWEEyWFhfU09DX1NTUCkg Kz0gc25kLXNvYy1weGEyeHgtc3NwLm8KIG9iai0kKENPTkZJR19TTkRfUFhBMTY4X1NPQ19TU1Ap ICs9IHNuZC1zb2MtcHhhMTY4LXNzcC5vCiAKICMgUFhBIE1hY2hpbmUgU3VwcG9ydAorc25kLXNv Yy1hc3Blbml0ZS1vYmpzIDo9IGFzcGVuaXRlLm8KIHNuZC1zb2MtY29yZ2ktb2JqcyA6PSBjb3Jn aS5vCiBzbmQtc29jLXBvb2RsZS1vYmpzIDo9IHBvb2RsZS5vCiBzbmQtc29jLXRvc2Etb2JqcyA6 PSB0b3NhLm8KQEAgLTM4LDYgKzM5LDcgQEAgb2JqLSQoQ09ORklHX1NORF9QWEEyWFhfU09DX0VN X1gyNzApICs9IHNuZC1zb2MtZW0teDI3MC5vCiBvYmotJChDT05GSUdfU05EX1BYQTJYWF9TT0Nf UEFMTTI3WCkgKz0gc25kLXNvYy1wYWxtMjd4Lm8KIG9iai0kKENPTkZJR19TTkRfUFhBMlhYX1NP Q19NQUdJQ0lBTikgKz0gc25kLXNvYy1tYWdpY2lhbi5vCiBvYmotJChDT05GSUdfU05EX1BYQTJY WF9TT0NfTUlPQTcwMSkgKz0gc25kLXNvYy1taW9hNzAxLm8KK29iai0kKENPTkZJR19TTkRfU09D X0FTUEVOSVRFKSArPSBzbmQtc29jLWFzcGVuaXRlLm8KIG9iai0kKENPTkZJR19TTkRfU09DX1pZ TE9OSVRFKSArPSBzbmQtc29jLXp5bG9uaXRlLm8KIG9iai0kKENPTkZJR19TTkRfUFhBMlhYX1NP Q19JTU9URTIpICs9IHNuZC1zb2MtaW1vdGUyLm8KIG9iai0kKENPTkZJR19TTkRfU09DX1JBVU1G RUxEKSArPSBzbmQtc29jLXJhdW1mZWxkLm8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9weGEvYXNw ZW5pdGUuYyBiL3NvdW5kL3NvYy9weGEvYXNwZW5pdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mODJhY2RjCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL3B4YS9h c3Blbml0ZS5jCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogYXNwZW5pdGUuYyAtLSBTb0MgYXVk aW8gZm9yIEFzcGVuaXRlCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgTWFydmVsbCBJ bnRlcm5hdGlvbmFsIEx0ZC4KKyAqIAlIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFy dmVsbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgor I2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4KKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4KKyNp bmNsdWRlIDxzb3VuZC9zb2MtZGFwbS5oPgorCisjaW5jbHVkZSA8cGxhdC9zc3AuaD4KKworI2lu Y2x1ZGUgIi4uL2NvZGVjcy93bTg3NTMuaCIKKyNpbmNsdWRlICJweGEyeHgtcGNtLmgiCisjaW5j bHVkZSAicHhhMTY4LXNzcC5oIgorCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfY2FyZCBhc3Blbml0 ZTsKKworLyogYXNwZW5pdGUgbWFjaGluZSBkYXBtIHdpZGdldHMgKi8KK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBhc3Blbml0ZV9kYXBtX3dpZGdldHNbXSA9IHsKKwlT TkRfU09DX0RBUE1fSFAoIkhlYWRwaG9uZSIsIE5VTEwpLAorCVNORF9TT0NfREFQTV9NSUMoIkhl YWRzZXQgTWljIiwgTlVMTCksCisJU05EX1NPQ19EQVBNX1NQSygiSGVhZHNldCBTcGVha2VyIEwi LCBOVUxMKSwKKwlTTkRfU09DX0RBUE1fU1BLKCJIZWFkc2V0IFNwZWFrZXIgUiIsIE5VTEwpLAor CVNORF9TT0NfREFQTV9MSU5FKCJMaW5lIExJTiIsIE5VTEwpLAorCVNORF9TT0NfREFQTV9MSU5F KCJMaW5lIFJJTiIsIE5VTEwpLAorfTsKKworLyogYXNwZW5pdGUgbWFjaGluZSBhdWRpbyBtYXAg Ki8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIGF1ZGlvX21hcFtdID0g eworCS8qIEhlYWRwaG9uZSBjb25uZWN0ZWQgdG8gTE9VVDEvUk9VVDEgKi8KKwl7IkhlYWRwaG9u ZSIsIE5VTEwsICJMT1VUMSJ9LAorCXsiSGVhZHBob25lIiwgTlVMTCwgIlJPVVQxIn0sCisKKwkv KiBTcGVha2VyIGNvbm5lY3RlZCB0byBMT1VUMi9PVVQ0ICYgT1VUMy9ST1VUMiAqLworCXsiSGVh ZHNldCBTcGVha2VyIEwiLCBOVUxMLCAiTE9VVDIifSwKKwl7IkhlYWRzZXQgU3BlYWtlciBMIiwg TlVMTCwgIk9VVDQifSwKKwl7IkhlYWRzZXQgU3BlYWtlciBSIiwgTlVMTCwgIk9VVDMifSwKKwl7 IkhlYWRzZXQgU3BlYWtlciBSIiwgTlVMTCwgIlJPVVQyIn0sCisKKwkvKiBMaW5lIGNvbm5lY3Rl ZCB0byBMSU5FMS9MSU5FMiAqLworCXsiTGluZSBMSU4iLCBOVUxMLCAiTElORTEifSwKKwl7Ikxp bmUgUklOIiwgTlVMTCwgIkxJTkUyIn0sCisKKwkvKiBNaWMgKi8KKwl7Ik1JQzEiLCBOVUxMLCAi TWljIEJpYXMifSwKKwl7Ik1pYyBCaWFzIiwgTlVMTCwgIkhlYWRzZXQgTWljIn0sCisKKwkvKiBD b25uZWN0IHRoZSBBTEMgcGlucyAqLworCXsiQUNJTiIsIE5VTEwsICJBQ09QIn0sCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgd204NzUzX2FzcGVuaXRlX2NvbnRy b2xzW10gPSB7CisJU09DX0RBUE1fUElOX1NXSVRDSCgiSGVhZHNldCBTcGVha2VyIEwiKSwKKwlT T0NfREFQTV9QSU5fU1dJVENIKCJIZWFkc2V0IFNwZWFrZXIgUiIpLAorCVNPQ19EQVBNX1BJTl9T V0lUQ0goIkhlYWRzZXQgTWljIiksCisJU09DX0RBUE1fUElOX1NXSVRDSCgiSGVhZHBob25lIiks CisJU09DX0RBUE1fUElOX1NXSVRDSCgiTGluZSBMSU4iKSwKKwlTT0NfREFQTV9QSU5fU1dJVENI KCJMaW5lIFJJTiIpLAorfTsKKworc3RhdGljIGludCBhc3Blbml0ZV9oaWZpX2h3X3BhcmFtcyhz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCQkgICBzdHJ1Y3Qgc25kX3Bj bV9od19wYXJhbXMgKnBhcmFtcykKK3sKKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRk ID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19k YWkgPSBydGQtPmRhaS0+Y29kZWNfZGFpOworCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9 IHJ0ZC0+ZGFpLT5jcHVfZGFpOworCWludCBtY2xrLCByZXQ7CisKKwltY2xrID0gcHhhMTY4X3F1 ZXJ5X21jbGsoc3Vic3RyZWFtLCBwYXJhbXMpOworCWlmIChtY2xrIDwgMCkKKwkJcmV0dXJuIG1j bGs7CisKKwkvKiBzZXQgY29kZWMgREFJIGNvbmZpZ3VyYXRpb24gKi8KKwlyZXQgPSBzbmRfc29j X2RhaV9zZXRfZm10KGNvZGVjX2RhaSwgU05EX1NPQ19EQUlGTVRfSTJTCisJCQkJICB8IFNORF9T T0NfREFJRk1UX05CX05GCisJCQkJICB8IFNORF9TT0NfREFJRk1UX0NCU19DRlMpOworCWlmIChy ZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJLyogc2V0IGNwdSBEQUkgY29uZmlndXJhdGlvbiAq LworCXJldCA9IHNuZF9zb2NfZGFpX3NldF9mbXQoY3B1X2RhaSwgU05EX1NPQ19EQUlGTVRfSTJT CisJCQkJICB8IFNORF9TT0NfREFJRk1UX05CX05GCisJCQkJICB8IFNORF9TT0NfREFJRk1UX0NC U19DRlMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJLyogc2V0IHRoZSBjb2Rl YyBzeXN0ZW0gY2xvY2sgZm9yIERBQyBhbmQgQURDICovCisJcmV0ID0gc25kX3NvY19kYWlfc2V0 X3N5c2Nsayhjb2RlY19kYWksIFdNODc1M19NQ0xLLCBtY2xrLAorCQkJCSAgICAgU05EX1NPQ19D TE9DS19JTik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBzZXQgY3B1IHN5 c3RlbSBjbG9jayAqLworCXJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY3B1X2RhaSwgMCwg bWNsaywKKwkJCQkgICAgIFNORF9TT0NfQ0xPQ0tfT1VUKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0 dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9zb2Nfb3BzIGFz cGVuaXRlX2hpZmlfb3BzID0geworCS5od19wYXJhbXMJPSBhc3Blbml0ZV9oaWZpX2h3X3BhcmFt cywKK307CisKK3N0YXRpYyBpbnQgYXNwZW5pdGVfd204NzUzX2luaXQoc3RydWN0IHNuZF9zb2Nf Y29kZWMgKmNvZGVjKQoreworCWludCByZXQ7CisKKwkvKiBzZXQgdXAgTkMgY29kZWMgcGlucyAq LworCXNuZF9zb2NfZGFwbV9uY19waW4oY29kZWMsICJNT05PMSIpOworCXNuZF9zb2NfZGFwbV9u Y19waW4oY29kZWMsICJNT05PMiIpOworCXNuZF9zb2NfZGFwbV9uY19waW4oY29kZWMsICJSWFAi KTsKKwlzbmRfc29jX2RhcG1fbmNfcGluKGNvZGVjLCAiUlhOIik7CisKKwlzbmRfc29jX2RhcG1f bmV3X2NvbnRyb2xzKGNvZGVjLCBhc3Blbml0ZV9kYXBtX3dpZGdldHMsCisJCQkJICBBUlJBWV9T SVpFKGFzcGVuaXRlX2RhcG1fd2lkZ2V0cykpOworCXJldCA9IHNuZF9zb2NfYWRkX2NvbnRyb2xz KGNvZGVjLCB3bTg3NTNfYXNwZW5pdGVfY29udHJvbHMsCisJCQkJICAgQVJSQVlfU0laRSh3bTg3 NTNfYXNwZW5pdGVfY29udHJvbHMpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwor CXNuZF9zb2NfZGFwbV9hZGRfcm91dGVzKGNvZGVjLCBhdWRpb19tYXAsIEFSUkFZX1NJWkUoYXVk aW9fbWFwKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9s aW5rIGFzcGVuaXRlX2RhaVtdID0geworCXsKKwkJLm5hbWUJCT0gIldNODc1MyBIaUZpIiwKKwkJ LnN0cmVhbV9uYW1lCT0gIldNODc1MyBIaUZpIiwKKwkJLmNwdV9kYWkJPSAmcHhhMTY4X3NzcF9k YWlbUFhBMTY4X0RBSV9TU1AxXSwKKwkJLmNvZGVjX2RhaQk9ICZ3bTg3NTNfZGFpWzBdLAorCQku aW5pdAkJPSBhc3Blbml0ZV93bTg3NTNfaW5pdCwKKwkJLm9wcwkJPSAmYXNwZW5pdGVfaGlmaV9v cHMsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19jYXJkIGFzcGVuaXRlID0gewor CS5uYW1lCQk9ICJBc3Blbml0ZSIsCisJLnBsYXRmb3JtCT0gJnB4YTJ4eF9zb2NfcGxhdGZvcm0s CisJLmRhaV9saW5rCT0gYXNwZW5pdGVfZGFpLAorCS5udW1fbGlua3MJPSBBUlJBWV9TSVpFKGFz cGVuaXRlX2RhaSksCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGV2aWNlIGFzcGVuaXRl X3NuZF9kZXZkYXRhID0geworCS5jYXJkCQk9ICZhc3Blbml0ZSwKKwkuY29kZWNfZGV2CT0gJnNv Y19jb2RlY19kZXZfd204NzUzLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KmFzcGVuaXRlX3NuZF9kZXZpY2U7CisKK3N0YXRpYyBpbnQgX19pbml0IGFzcGVuaXRlX2luaXQo dm9pZCkKK3sKKwlpbnQgcmV0OworCisJYXNwZW5pdGVfc25kX2RldmljZSA9IHBsYXRmb3JtX2Rl dmljZV9hbGxvYygic29jLWF1ZGlvIiwgLTEpOworCWlmICghYXNwZW5pdGVfc25kX2RldmljZSkK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShhc3Blbml0ZV9zbmRf ZGV2aWNlLCAmYXNwZW5pdGVfc25kX2RldmRhdGEpOworCWFzcGVuaXRlX3NuZF9kZXZkYXRhLmRl diA9ICZhc3Blbml0ZV9zbmRfZGV2aWNlLT5kZXY7CisKKwlyZXQgPSBwbGF0Zm9ybV9kZXZpY2Vf YWRkKGFzcGVuaXRlX3NuZF9kZXZpY2UpOworCWlmIChyZXQpCisJCXBsYXRmb3JtX2RldmljZV9w dXQoYXNwZW5pdGVfc25kX2RldmljZSk7CisJcmV0dXJuIHJldDsKK30KK21vZHVsZV9pbml0KGFz cGVuaXRlX2luaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgYXNwZW5pdGVfZXhpdCh2b2lkKQor eworCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGFzcGVuaXRlX3NuZF9kZXZpY2UpOworfQor bW9kdWxlX2V4aXQoYXNwZW5pdGVfZXhpdCk7CisKK01PRFVMRV9ERVNDUklQVElPTigiQUxTQSBT b0MgV004NzUzIEFzcGVuaXRlIik7CitNT0RVTEVfQVVUSE9SKCJIYW9qaWFuIFpodWFuZyA8aGFv amlhbi56aHVhbmdAbWFydmVsbC5jb20+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0tIAox LjUuNi41Cgo= --00504502bd9137a7bc048452905f Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel --00504502bd9137a7bc048452905f--