From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HSK6D-0002vM-Oa for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:36:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HSK6A-0002uz-UY for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:36:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HSK6A-0002us-P1 for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:36:30 -0500 Received: from wr-out-0506.google.com ([64.233.184.236]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HSK50-0002vx-Fc for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:35:19 -0400 Received: by wr-out-0506.google.com with SMTP id q50so701990wrq for ; Fri, 16 Mar 2007 14:35:17 -0700 (PDT) Message-ID: Date: Fri, 16 Mar 2007 22:35:16 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_99810_22115322.1174080916925" Subject: [Qemu-devel] [PATCH] Wolfson Microsystems WM8750 audio CODEC (i2c chip). Reply-To: balrogg@gmail.com, qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_99810_22115322.1174080916925 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline An audio codec used in various embedded devices, has both inputs and outputs. Mainline linux contains the driver for it in the recently added ASOC framework. It connects to a processor through I2C (control) and I2S (audio data). Cheers, Andrew ------=_Part_99810_22115322.1174080916925 Content-Type: text/plain; name=0010-Wolfson-Microsystems-WM8750-audio-CODEC-i2c-chip.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezd7ibsg Content-Disposition: attachment; filename="0010-Wolfson-Microsystems-WM8750-audio-CODEC-i2c-chip.txt" RnJvbSAxOGJkODJhOWE2OTI5ZmEyZGUzOWU3OGY0NzkyODc5YWZiOGFlMDg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IEZyaSwgMTYgTWFyIDIwMDcgMTY6NDc6MTYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBX b2xmc29uIE1pY3Jvc3lzdGVtcyBXTTg3NTAgYXVkaW8gQ09ERUMgKGkyYyBjaGlwKS4KCi0tLQog aHcvaTJjLmggICAgfCAgICA4ICsKIGh3L3dtODc1MC5jIHwgIDUyNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFu Z2VkLCA1MzIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9p MmMuaCBiL2h3L2kyYy5oCmluZGV4IGQ4NjZmMjguLjczZTAwZWQgMTAwNjQ0Ci0tLSBhL2h3L2ky Yy5oCisrKyBiL2h3L2kyYy5oCkBAIC0xNTgsMyArMTU4LDExIEBAIHZvaWQgbWF4NzMxMF9yZXNl dChzdHJ1Y3QgaTJjX3NsYXZlX3MgKmkyYyk7CiB2b2lkIG1heDczMTBfZ3Bpb19zZXQoc3RydWN0 IGkyY19zbGF2ZV9zICppMmMsIGludCBsaW5lLCBpbnQgbGV2ZWwpOwogdm9pZCBtYXg3MzEwX2dw aW9faGFuZGxlcl9zZXQoc3RydWN0IGkyY19zbGF2ZV9zICppMmMsIGludCBsaW5lLAogICAgICAg ICAgICAgICAgIGdwaW9faGFuZGxlcl90IGhhbmRsZXIsIHZvaWQgKm9wYXF1ZSk7CisKKy8qIHdt ODc1MC5jICovCitzdHJ1Y3QgaTJjX3NsYXZlX3MgKndtODc1MF9pbml0KEF1ZGlvU3RhdGUgKmF1 ZGlvKTsKK3ZvaWQgd204NzUwX3Jlc2V0KHN0cnVjdCBpMmNfc2xhdmVfcyAqaTJjKTsKK3ZvaWQg d204NzUwX2RhdGFfcmVxX3NldChzdHJ1Y3QgaTJjX3NsYXZlX3MgKmkyYywKKyAgICAgICAgICAg ICAgICB2b2lkICgqZGF0YV9yZXEpKHZvaWQgKiwgaW50LCBpbnQpLCB2b2lkICpvcGFxdWUpOwor dm9pZCB3bTg3NTBfZGFjX2RhdCh2b2lkICpvcGFxdWUsIHVpbnQzMl90IHNhbXBsZSk7Cit1aW50 MzJfdCB3bTg3NTBfYWRjX2RhdCh2b2lkICpvcGFxdWUpOwpkaWZmIC0tZ2l0IGEvaHcvd204NzUw LmMgYi9ody93bTg3NTAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWZm MWRlCi0tLSAvZGV2L251bGwKKysrIGIvaHcvd204NzUwLmMKQEAgLTAsMCArMSw1MjQgQEAKKy8q CisgKiBXTTg3NTAgYXVkaW8gQ09ERUMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA2IE9wZW5l ZGhhbmQgTHRkLgorICogV3JpdHRlbiBieSBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJv ci5vcmc+CisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIEdOVSBHUEwuCisgKi8K KworI2luY2x1ZGUgInZsLmgiCisKKyNkZWZpbmUgSU5fUE9SVF9OCTMKKyNkZWZpbmUgT1VUX1BP UlRfTgkzCisKKyNkZWZpbmUgQ09ERUMJCSJ3bTg3NTAiCisKK3N0cnVjdCB3bV9yYXRlX3M7Citz dHJ1Y3Qgd204NzUwX3MgeworICAgIGludCBpMmNfZGlyOworICAgIHN0cnVjdCBpMmNfc2xhdmVf cyBpMmM7CisgICAgUUVNVVNvdW5kQ2FyZCBjYXJkOworICAgIFNXVm9pY2VJbiAqYWRjX3ZvaWNl W0lOX1BPUlRfTl07CisgICAgU1dWb2ljZU91dCAqZGFjX3ZvaWNlW09VVF9QT1JUX05dOworICAg IGludCBlbmFibGU7CisgICAgdm9pZCAoKmRhdGFfcmVxKSh2b2lkICosIGludCwgaW50KTsKKyAg ICB2b2lkICpvcGFxdWU7CisgICAgdWludDhfdCBkYXRhX2luWzQwOTZdOworICAgIHVpbnQ4X3Qg ZGF0YV9vdXRbNDA5Nl07CisgICAgaW50IGlkeF9pbiwgcmVxX2luOworICAgIGludCBpZHhfb3V0 LCByZXFfb3V0OworCisgICAgU1dWb2ljZU91dCAqKm91dFsyXTsKKyAgICB1aW50OF90IG91dHZv bFs3XSwgb3V0bXV0ZVsyXTsKKyAgICBTV1ZvaWNlSW4gKippblsyXTsKKyAgICB1aW50OF90IGlu dm9sWzRdLCBpbm11dGVbMl07CisKKyAgICB1aW50OF90IGRpZmZbMl0sIHBvbCwgZHMsIG1vbm9t aXhbMl0sIGFsYywgbXV0ZTsKKyAgICB1aW50OF90IHBhdGhbNF0sIG1wYXRoWzJdLCBwb3dlciwg Zm9ybWF0OworICAgIHVpbnQzMl90IGlubWFzaywgb3V0bWFzazsKKyAgICBjb25zdCBzdHJ1Y3Qg d21fcmF0ZV9zICpyYXRlOworfTsKKworc3RhdGljIGlubGluZSB2b2lkIHdtODc1MF9pbl9sb2Fk KHN0cnVjdCB3bTg3NTBfcyAqcykKK3sKKyAgICBpbnQgYWNxdWlyZWQ7CisgICAgaWYgKHMtPmlk eF9pbiArIHMtPnJlcV9pbiA8PSBzaXplb2Yocy0+ZGF0YV9pbikpCisgICAgICAgIHJldHVybjsK KyAgICBzLT5pZHhfaW4gPSBhdWRpb19NQVgoMCwgKGludCkgc2l6ZW9mKHMtPmRhdGFfaW4pIC0g cy0+cmVxX2luKTsKKyAgICBhY3F1aXJlZCA9IEFVRF9yZWFkKCpzLT5pblswXSwgcy0+ZGF0YV9p biArIHMtPmlkeF9pbiwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHMtPmRhdGFfaW4pIC0g cy0+aWR4X2luKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHdtODc1MF9vdXRfZmx1c2goc3Ry dWN0IHdtODc1MF9zICpzKQoreworICAgIGludCBzZW50OworICAgIGlmICghcy0+aWR4X291dCkK KyAgICAgICAgcmV0dXJuOworICAgIHNlbnQgPSBBVURfd3JpdGUoKnMtPm91dFswXSwgcy0+ZGF0 YV9vdXQsIHMtPmlkeF9vdXQpOworICAgIHMtPmlkeF9vdXQgPSAwOworfQorCitzdGF0aWMgdm9p ZCB3bTg3NTBfYXVkaW9faW5fY2Iodm9pZCAqb3BhcXVlLCBpbnQgYXZhaWxfYikKK3sKKyAgICBz dHJ1Y3Qgd204NzUwX3MgKnMgPSAoc3RydWN0IHdtODc1MF9zICopIG9wYXF1ZTsKKyAgICBzLT5y ZXFfaW4gPSBhdmFpbF9iOworICAgIHMtPmRhdGFfcmVxKHMtPm9wYXF1ZSwgcy0+cmVxX291dCA+ PiAyLCBhdmFpbF9iID4+IDIpOworCisjaWYgMAorICAgIHdtODc1MF9pbl9sb2FkKHMpOworI2Vu ZGlmCit9CisKK3N0YXRpYyB2b2lkIHdtODc1MF9hdWRpb19vdXRfY2Iodm9pZCAqb3BhcXVlLCBp bnQgZnJlZV9iKQoreworICAgIHN0cnVjdCB3bTg3NTBfcyAqcyA9IChzdHJ1Y3Qgd204NzUwX3Mg Kikgb3BhcXVlOworICAgIHdtODc1MF9vdXRfZmx1c2gocyk7CisKKyAgICBzLT5yZXFfb3V0ID0g ZnJlZV9iOworICAgIHMtPmRhdGFfcmVxKHMtPm9wYXF1ZSwgZnJlZV9iID4+IDIsIHMtPnJlcV9p biA+PiAyKTsKK30KKworc3RydWN0IHdtX3JhdGVfcyB7CisgICAgaW50IGFkYzsKKyAgICBpbnQg YWRjX2h6OworICAgIGludCBkYWM7CisgICAgaW50IGRhY19oejsKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgd21fcmF0ZV9zIHdtX3JhdGVfdGFibGVbXSA9IHsKKyAgICB7ICAyNTYsIDQ4MDAw LCAgMjU2LCA0ODAwMCB9LAkvKiBTUjogMDAwMDAgKi8KKyAgICB7ICAzODQsIDQ4MDAwLCAgMzg0 LCA0ODAwMCB9LAkvKiBTUjogMDAwMDEgKi8KKyAgICB7ICAyNTYsIDQ4MDAwLCAxNTM2LCAgODAw MCB9LAkvKiBTUjogMDAwMTAgKi8KKyAgICB7ICAzODQsIDQ4MDAwLCAyMzA0LCAgODAwMCB9LAkv KiBTUjogMDAwMTEgKi8KKyAgICB7IDE1MzYsICA4MDAwLCAgMjU2LCA0ODAwMCB9LAkvKiBTUjog MDAxMDAgKi8KKyAgICB7IDIzMDQsICA4MDAwLCAgMzg0LCA0ODAwMCB9LAkvKiBTUjogMDAxMDEg Ki8KKyAgICB7IDE1MzYsICA4MDAwLCAxNTM2LCAgODAwMCB9LAkvKiBTUjogMDAxMTAgKi8KKyAg ICB7IDIzMDQsICA4MDAwLCAyMzA0LCAgODAwMCB9LAkvKiBTUjogMDAxMTEgKi8KKyAgICB7IDEw MjQsIDEyMDAwLCAxMDI0LCAxMjAwMCB9LAkvKiBTUjogMDEwMDAgKi8KKyAgICB7IDE1MjYsIDEy MDAwLCAxNTM2LCAxMjAwMCB9LAkvKiBTUjogMDEwMDEgKi8KKyAgICB7ICA3NjgsIDE2MDAwLCAg NzY4LCAxNjAwMCB9LAkvKiBTUjogMDEwMTAgKi8KKyAgICB7IDExNTIsIDE2MDAwLCAxMTUyLCAx NjAwMCB9LAkvKiBTUjogMDEwMTEgKi8KKyAgICB7ICAzODQsIDMyMDAwLCAgMzg0LCAzMjAwMCB9 LAkvKiBTUjogMDExMDAgKi8KKyAgICB7ICA1NzYsIDMyMDAwLCAgNTc2LCAzMjAwMCB9LAkvKiBT UjogMDExMDEgKi8KKyAgICB7ICAxMjgsIDk2MDAwLCAgMTI4LCA5NjAwMCB9LAkvKiBTUjogMDEx MTAgKi8KKyAgICB7ICAxOTIsIDk2MDAwLCAgMTkyLCA5NjAwMCB9LAkvKiBTUjogMDExMTEgKi8K KyAgICB7ICAyNTYsIDQ0MTAwLCAgMjU2LCA0NDEwMCB9LAkvKiBTUjogMTAwMDAgKi8KKyAgICB7 ICAzODQsIDQ0MTAwLCAgMzg0LCA0NDEwMCB9LAkvKiBTUjogMTAwMDEgKi8KKyAgICB7ICAyNTYs IDQ0MTAwLCAxNDA4LCAgODAxOCB9LAkvKiBTUjogMTAwMTAgKi8KKyAgICB7ICAzODQsIDQ0MTAw LCAyMTEyLCAgODAxOCB9LAkvKiBTUjogMTAwMTEgKi8KKyAgICB7IDE0MDgsICA4MDE4LCAgMjU2 LCA0NDEwMCB9LAkvKiBTUjogMTAxMDAgKi8KKyAgICB7IDIxMTIsICA4MDE4LCAgMzg0LCA0NDEw MCB9LAkvKiBTUjogMTAxMDEgKi8KKyAgICB7IDE0MDgsICA4MDE4LCAxNDA4LCAgODAxOCB9LAkv KiBTUjogMTAxMTAgKi8KKyAgICB7IDIxMTIsICA4MDE4LCAyMTEyLCAgODAxOCB9LAkvKiBTUjog MTAxMTEgKi8KKyAgICB7IDEwMjQsIDExMDI1LCAxMDI0LCAxMTAyNSB9LAkvKiBTUjogMTEwMDAg Ki8KKyAgICB7IDE1MzYsIDExMDI1LCAxNTM2LCAxMTAyNSB9LAkvKiBTUjogMTEwMDEgKi8KKyAg ICB7ICA1MTIsIDIyMDUwLCAgNTEyLCAyMjA1MCB9LAkvKiBTUjogMTEwMTAgKi8KKyAgICB7ICA3 NjgsIDIyMDUwLCAgNzY4LCAyMjA1MCB9LAkvKiBTUjogMTEwMTEgKi8KKyAgICB7ICA1MTIsIDI0 MDAwLCAgNTEyLCAyNDAwMCB9LAkvKiBTUjogMTExMDAgKi8KKyAgICB7ICA3NjgsIDI0MDAwLCAg NzY4LCAyNDAwMCB9LAkvKiBTUjogMTExMDEgKi8KKyAgICB7ICAxMjgsIDg4MjAwLCAgMTI4LCA4 ODIwMCB9LAkvKiBTUjogMTExMTAgKi8KKyAgICB7ICAxOTIsIDg4MjAwLCAgMTI4LCA4ODIwMCB9 LAkvKiBTUjogMTExMTEgKi8KK307CisKK3ZvaWQgd204NzUwX3NldF9mb3JtYXQoc3RydWN0IHdt ODc1MF9zICpzKQoreworICAgIGludCBpOworICAgIGF1ZHNldHRpbmdzX3QgaW5fZm10OworICAg IGF1ZHNldHRpbmdzX3Qgb3V0X2ZtdDsKKyAgICBhdWRzZXR0aW5nc190IG1vbm9vdXRfZm10Owor CisgICAgd204NzUwX291dF9mbHVzaChzKTsKKworICAgIGlmIChzLT5pblswXSAmJiAqcy0+aW5b MF0pCisgICAgICAgIEFVRF9zZXRfYWN0aXZlX2luKCpzLT5pblswXSwgMCk7CisgICAgaWYgKHMt Pm91dFswXSAmJiAqcy0+b3V0WzBdKQorICAgICAgICBBVURfc2V0X2FjdGl2ZV9vdXQoKnMtPm91 dFswXSwgMCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgSU5fUE9SVF9OOyBpICsrKQorICAgICAg ICBpZiAocy0+YWRjX3ZvaWNlW2ldKSB7CisgICAgICAgICAgICBBVURfY2xvc2VfaW4oJnMtPmNh cmQsIHMtPmFkY192b2ljZVtpXSk7CisgICAgICAgICAgICBzLT5hZGNfdm9pY2VbaV0gPSAwOwor ICAgICAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IE9VVF9QT1JUX047IGkgKyspCisgICAgICAg IGlmIChzLT5kYWNfdm9pY2VbaV0pIHsKKyAgICAgICAgICAgIEFVRF9jbG9zZV9vdXQoJnMtPmNh cmQsIHMtPmRhY192b2ljZVtpXSk7CisgICAgICAgICAgICBzLT5kYWNfdm9pY2VbaV0gPSAwOwor ICAgICAgICB9CisKKyAgICBpZiAoIXMtPmVuYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg LyogU2V0dXAgaW5wdXQgKi8KKyAgICBpbl9mbXQuZW5kaWFubmVzcyA9IDA7CisgICAgaW5fZm10 Lm5jaGFubmVscyA9IDI7CisgICAgaW5fZm10LmZyZXEgPSBzLT5yYXRlLT5hZGNfaHo7CisgICAg aW5fZm10LmZtdCA9IEFVRF9GTVRfUzE2OworCisgICAgcy0+YWRjX3ZvaWNlWzBdID0gQVVEX29w ZW5faW4oJnMtPmNhcmQsIHMtPmFkY192b2ljZVswXSwKKyAgICAgICAgICAgICAgICAgICAgQ09E RUMgIi5pbnB1dDEiLCBzLCB3bTg3NTBfYXVkaW9faW5fY2IsICZpbl9mbXQpOworICAgIHMtPmFk Y192b2ljZVsxXSA9IEFVRF9vcGVuX2luKCZzLT5jYXJkLCBzLT5hZGNfdm9pY2VbMV0sCisgICAg ICAgICAgICAgICAgICAgIENPREVDICIuaW5wdXQyIiwgcywgd204NzUwX2F1ZGlvX2luX2NiLCAm aW5fZm10KTsKKyAgICBzLT5hZGNfdm9pY2VbMl0gPSBBVURfb3Blbl9pbigmcy0+Y2FyZCwgcy0+ YWRjX3ZvaWNlWzJdLAorICAgICAgICAgICAgICAgICAgICBDT0RFQyAiLmlucHV0MyIsIHMsIHdt ODc1MF9hdWRpb19pbl9jYiwgJmluX2ZtdCk7CisKKyAgICAvKiBTZXR1cCBvdXRwdXQgKi8KKyAg ICBvdXRfZm10LmVuZGlhbm5lc3MgPSAwOworICAgIG91dF9mbXQubmNoYW5uZWxzID0gMjsKKyAg ICBvdXRfZm10LmZyZXEgPSBzLT5yYXRlLT5kYWNfaHo7CisgICAgb3V0X2ZtdC5mbXQgPSBBVURf Rk1UX1MxNjsKKyAgICBtb25vb3V0X2ZtdC5lbmRpYW5uZXNzID0gMDsKKyAgICBtb25vb3V0X2Zt dC5uY2hhbm5lbHMgPSAxOworICAgIG1vbm9vdXRfZm10LmZyZXEgPSBzLT5yYXRlLT5kYWNfaHo7 CisgICAgbW9ub291dF9mbXQuZm10ID0gQVVEX0ZNVF9TMTY7CisKKyAgICBzLT5kYWNfdm9pY2Vb MF0gPSBBVURfb3Blbl9vdXQoJnMtPmNhcmQsIHMtPmRhY192b2ljZVswXSwKKyAgICAgICAgICAg ICAgICAgICAgQ09ERUMgIi5zcGVha2VyIiwgcywgd204NzUwX2F1ZGlvX291dF9jYiwgJm91dF9m bXQpOworICAgIHMtPmRhY192b2ljZVsxXSA9IEFVRF9vcGVuX291dCgmcy0+Y2FyZCwgcy0+ZGFj X3ZvaWNlWzFdLAorICAgICAgICAgICAgICAgICAgICBDT0RFQyAiLmhlYWRwaG9uZSIsIHMsIHdt ODc1MF9hdWRpb19vdXRfY2IsICZvdXRfZm10KTsKKyAgICAvKiBNT05PTUlYIGlzIGFsc28gaW4g c3RlcmVvIGZvciBzaW1wbGljaXR5ICovCisgICAgcy0+ZGFjX3ZvaWNlWzJdID0gQVVEX29wZW5f b3V0KCZzLT5jYXJkLCBzLT5kYWNfdm9pY2VbMl0sCisgICAgICAgICAgICAgICAgICAgIENPREVD ICIubW9ub21peCIsIHMsIHdtODc1MF9hdWRpb19vdXRfY2IsICZvdXRfZm10KTsKKyAgICAvKiBu byBzZW5zZSBlbXVsYXRpbmcgT1VUMyB3aGljaCBpcyBhIG1peCBvZiBvdGhlciBvdXRwdXRzICov CisKKyAgICAvKiBXZSBzaG91bGQgY29ubmVjdCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbHMg dG8gdGhlaXIKKyAgICAgKiByZXNwZWN0aXZlIGlucHV0cy9vdXRwdXRzIGJ1dCB3ZSBoYXZlIGNv bXBsZXRlbHkgbm8gbmVlZAorICAgICAqIGZvciBtaXhpbmcgb3IgY29tYmluaW5nIHBhdGhzIHRv IGRpZmZlcmVudCBwb3J0cywgc28gd2UKKyAgICAgKiBjb25uZWN0IGJvdGggY2hhbm5lbHMgdG8g d2hlcmUgdGhlIGxlZnQgY2hhbm5lbCBpcyByb3V0ZWQuICAqLworICAgIGlmIChzLT5pblswXSAm JiAqcy0+aW5bMF0pCisgICAgICAgIEFVRF9zZXRfYWN0aXZlX2luKCpzLT5pblswXSwgMSk7Cisg ICAgaWYgKHMtPm91dFswXSAmJiAqcy0+b3V0WzBdKQorICAgICAgICBBVURfc2V0X2FjdGl2ZV9v dXQoKnMtPm91dFswXSwgMSk7Cit9CisKK3ZvaWQgaW5saW5lIHdtODc1MF9tYXNrX3VwZGF0ZShz dHJ1Y3Qgd204NzUwX3MgKnMpCit7CisjZGVmaW5lIFJfT05MWQkweDAwMDBmZmZmCisjZGVmaW5l IExfT05MWQkweGZmZmYwMDAwCisjZGVmaW5lIEJPVEgJKFJfT05MWSB8IExfT05MWSkKKyNkZWZp bmUgTk9ORQkoUl9PTkxZICYgTF9PTkxZKQorICAgIHMtPmlubWFzayA9CisgICAgICAgICAgICAo cy0+aW5tdXRlWzBdID8gUl9PTkxZIDogQk9USCkgJgorICAgICAgICAgICAgKHMtPmlubXV0ZVsx XSA/IExfT05MWSA6IEJPVEgpICYKKyAgICAgICAgICAgIChzLT5tdXRlID8gTk9ORSA6IEJPVEgp OworICAgIHMtPm91dG1hc2sgPQorICAgICAgICAgICAgKHMtPm91dG11dGVbMF0gPyBSX09OTFkg OiBCT1RIKSAmCisgICAgICAgICAgICAocy0+b3V0bXV0ZVsxXSA/IExfT05MWSA6IEJPVEgpICYK KyAgICAgICAgICAgIChzLT5tdXRlID8gTk9ORSA6IEJPVEgpOworfQorCit2b2lkIHdtODc1MF9y ZXNldChzdHJ1Y3QgaTJjX3NsYXZlX3MgKmkyYykKK3sKKyAgICBzdHJ1Y3Qgd204NzUwX3MgKnMg PSAoc3RydWN0IHdtODc1MF9zICopIGkyYy0+b3BhcXVlOworICAgIHMtPmVuYWJsZSA9IDA7Cisg ICAgd204NzUwX3NldF9mb3JtYXQocyk7CisgICAgcy0+ZGlmZlswXSA9IDA7CisgICAgcy0+ZGlm ZlsxXSA9IDA7CisgICAgcy0+ZHMgPSAwOworICAgIHMtPmFsYyA9IDA7CisgICAgcy0+aW5bMF0g PSAmcy0+YWRjX3ZvaWNlWzBdOworICAgIHMtPmludm9sWzBdID0gMHgxNzsKKyAgICBzLT5pbnZv bFsxXSA9IDB4MTc7CisgICAgcy0+aW52b2xbMl0gPSAweGMzOworICAgIHMtPmludm9sWzNdID0g MHhjMzsKKyAgICBzLT5vdXRbMF0gPSAmcy0+ZGFjX3ZvaWNlWzBdOworICAgIHMtPm91dHZvbFsw XSA9IDB4ZmY7CisgICAgcy0+b3V0dm9sWzFdID0gMHhmZjsKKyAgICBzLT5vdXR2b2xbMl0gPSAw eDc5OworICAgIHMtPm91dHZvbFszXSA9IDB4Nzk7CisgICAgcy0+b3V0dm9sWzRdID0gMHg3OTsK KyAgICBzLT5vdXR2b2xbNV0gPSAweDc5OworICAgIHMtPmlubXV0ZVswXSA9IDA7CisgICAgcy0+ aW5tdXRlWzFdID0gMDsKKyAgICBzLT5vdXRtdXRlWzBdID0gMDsKKyAgICBzLT5vdXRtdXRlWzFd ID0gMDsKKyAgICBzLT5tdXRlID0gMTsKKyAgICBzLT5wYXRoWzBdID0gMDsKKyAgICBzLT5wYXRo WzFdID0gMDsKKyAgICBzLT5wYXRoWzJdID0gMDsKKyAgICBzLT5wYXRoWzNdID0gMDsKKyAgICBz LT5tcGF0aFswXSA9IDA7CisgICAgcy0+bXBhdGhbMV0gPSAwOworICAgIHMtPmZvcm1hdCA9IDB4 MGE7CisgICAgcy0+aWR4X2luID0gc2l6ZW9mKHMtPmRhdGFfaW4pOworICAgIHMtPnJlcV9pbiA9 IDA7CisgICAgcy0+aWR4X291dCA9IDA7CisgICAgcy0+cmVxX291dCA9IDA7CisgICAgd204NzUw X21hc2tfdXBkYXRlKHMpOworfQorCitzdGF0aWMgdm9pZCB3bTg3NTBfc3RhcnQodm9pZCAqb3Bh cXVlLCBpbnQgZGlyKQoreworICAgIHN0cnVjdCB3bTg3NTBfcyAqcyA9IChzdHJ1Y3Qgd204NzUw X3MgKikgb3BhcXVlOworICAgIHMtPmkyY19kaXIgPSBkaXI7Cit9CisKKyNkZWZpbmUgV004NzUw X0xJTlZPTAkweDAwCisjZGVmaW5lIFdNODc1MF9SSU5WT0wJMHgwMQorI2RlZmluZSBXTTg3NTBf TE9VVDFWCTB4MDIKKyNkZWZpbmUgV004NzUwX1JPVVQxVgkweDAzCisjZGVmaW5lIFdNODc1MF9B RENEQUMJMHgwNQorI2RlZmluZSBXTTg3NTBfSUZBQ0UJMHgwNworI2RlZmluZSBXTTg3NTBfU1JB VEUJMHgwOAorI2RlZmluZSBXTTg3NTBfTERBQwkweDBhCisjZGVmaW5lIFdNODc1MF9SREFDCTB4 MGIKKyNkZWZpbmUgV004NzUwX0JBU1MJMHgwYworI2RlZmluZSBXTTg3NTBfVFJFQkxFCTB4MGQK KyNkZWZpbmUgV004NzUwX1JFU0VUCTB4MGYKKyNkZWZpbmUgV004NzUwXzNECTB4MTAKKyNkZWZp bmUgV004NzUwX0FMQzEJMHgxMQorI2RlZmluZSBXTTg3NTBfQUxDMgkweDEyCisjZGVmaW5lIFdN ODc1MF9BTEMzCTB4MTMKKyNkZWZpbmUgV004NzUwX05HQVRFCTB4MTQKKyNkZWZpbmUgV004NzUw X0xBREMJMHgxNQorI2RlZmluZSBXTTg3NTBfUkFEQwkweDE2CisjZGVmaW5lIFdNODc1MF9BRENU TDEJMHgxNworI2RlZmluZSBXTTg3NTBfQURDVEwyCTB4MTgKKyNkZWZpbmUgV004NzUwX1BXUjEJ MHgxOQorI2RlZmluZSBXTTg3NTBfUFdSMgkweDFhCisjZGVmaW5lIFdNODc1MF9BRENUTDMJMHgx YgorI2RlZmluZSBXTTg3NTBfQURDSU4JMHgxZgorI2RlZmluZSBXTTg3NTBfTEFEQ0lOCTB4MjAK KyNkZWZpbmUgV004NzUwX1JBRENJTgkweDIxCisjZGVmaW5lIFdNODc1MF9MT1VUTTEJMHgyMgor I2RlZmluZSBXTTg3NTBfTE9VVE0yCTB4MjMKKyNkZWZpbmUgV004NzUwX1JPVVRNMQkweDI0Cisj ZGVmaW5lIFdNODc1MF9ST1VUTTIJMHgyNQorI2RlZmluZSBXTTg3NTBfTU9VVE0xCTB4MjYKKyNk ZWZpbmUgV004NzUwX01PVVRNMgkweDI3CisjZGVmaW5lIFdNODc1MF9MT1VUMlYJMHgyOAorI2Rl ZmluZSBXTTg3NTBfUk9VVDJWCTB4MjkKKyNkZWZpbmUgV004NzUwX01PVVRWCTB4MmEKKworc3Rh dGljIGludCB3bTg3NTBfdHgodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhLCBpbnQgbGVuKQor eworICAgIHN0cnVjdCB3bTg3NTBfcyAqcyA9IChzdHJ1Y3Qgd204NzUwX3MgKikgb3BhcXVlOwor ICAgIHVpbnQ4X3QgY21kOworICAgIHVpbnQxNl90IHZhbHVlOworCisgICAgaWYgKHMtPmkyY19k aXIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChsZW4gPCAyKSB7CisjaWZkZWYgVkVSQk9T RQorICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdlIHRvbyBzaG9ydCAoJWkgYnl0ZXMpXG4iLCBf X0ZVTkNUSU9OX18sIGxlbik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg IGNtZCA9IGRhdGFbMF0gPj4gMTsKKyAgICB2YWx1ZSA9ICgoZGF0YVswXSA8PCA4KSB8IGRhdGFb MV0pICYgMHgxZmY7CisjaWZkZWYgVkVSQk9TRQorICAgIGlmIChsZW4gPiAyKQorICAgICAgICBw cmludGYoIiVzOiBsb25nIG1lc3NhZ2UgKCVpIGJ5dGVzKVxuIiwgX19GVU5DVElPTl9fLCBsZW4p OworI2VuZGlmCisKKyAgICBzd2l0Y2ggKGNtZCkgeworICAgIGNhc2UgV004NzUwX0xBRENJTjoJ LyogQURDIFNpZ25hbCBQYXRoIENvbnRyb2wgKExlZnQpICovCisgICAgICAgIHMtPmRpZmZbMF0g PSAoKCh2YWx1ZSA+PiA2KSAmIDMpID09IDMpOwkvKiBMSU5TRUwgKi8KKyAgICAgICAgaWYgKHMt PmRpZmZbMF0pCisgICAgICAgICAgICBzLT5pblswXSA9ICZzLT5hZGNfdm9pY2VbMCArIHMtPmRz ICogMV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPmluWzBdID0gJnMtPmFkY192b2lj ZVsoKHZhbHVlID4+IDYpICYgMykgKiAxICsgMF07CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz ZSBXTTg3NTBfUkFEQ0lOOgkvKiBBREMgU2lnbmFsIFBhdGggQ29udHJvbCAoUmlnaHQpICovCisg ICAgICAgIHMtPmRpZmZbMV0gPSAoKCh2YWx1ZSA+PiA2KSAmIDMpID09IDMpOwkvKiBSSU5TRUwg Ki8KKyAgICAgICAgaWYgKHMtPmRpZmZbMV0pCisgICAgICAgICAgICBzLT5pblsxXSA9ICZzLT5h ZGNfdm9pY2VbMCArIHMtPmRzICogMV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPmlu WzFdID0gJnMtPmFkY192b2ljZVsoKHZhbHVlID4+IDYpICYgMykgKiAxICsgMF07CisgICAgICAg IGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfQURDSU46CS8qIEFEQyBJbnB1dCBNb2RlICovCisg ICAgICAgIHMtPmRzID0gKHZhbHVlID4+IDgpICYgMTsJLyogRFMgKi8KKyAgICAgICAgaWYgKHMt PmRpZmZbMF0pCisgICAgICAgICAgICBzLT5pblswXSA9ICZzLT5hZGNfdm9pY2VbMCArIHMtPmRz ICogMV07CisgICAgICAgIGlmIChzLT5kaWZmWzFdKQorICAgICAgICAgICAgcy0+aW5bMV0gPSAm cy0+YWRjX3ZvaWNlWzAgKyBzLT5kcyAqIDFdOworICAgICAgICBzLT5tb25vbWl4WzBdID0gKHZh bHVlID4+IDYpICYgMzsJLyogTU9OT01JWCAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug V004NzUwX0FEQ1RMMToJLyogQWRkaXRpb25hbCBDb250cm9sICgxKSAqLworICAgICAgICBzLT5t b25vbWl4WzFdID0gKHZhbHVlID4+IDEpICYgMTsJLyogRE1PTk9NSVggKi8KKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFdNODc1MF9QV1IxOgkvKiBQb3dlciBNYW5hZ2VtZW50ICgxKSAqLwor ICAgICAgICBzLT5lbmFibGUgPSAoKHZhbHVlID4+IDYpICYgNykgPT0gMzsJLyogVk1JRFNFTCwg VlJFRiAqLworICAgICAgICB3bTg3NTBfc2V0X2Zvcm1hdChzKTsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIFdNODc1MF9MSU5WT0w6CS8qIExlZnQgQ2hhbm5lbCBQR0EgKi8KKyAgICAgICAg cy0+aW52b2xbMF0gPSB2YWx1ZSAmIDB4M2Y7CQkvKiBMSU5WT0wgKi8KKyAgICAgICAgcy0+aW5t dXRlWzBdID0gKHZhbHVlID4+IDcpICYgMTsJLyogTElOTVVURSAqLworICAgICAgICB3bTg3NTBf bWFza191cGRhdGUocyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfUklOVk9M OgkvKiBSaWdodCBDaGFubmVsIFBHQSAqLworICAgICAgICBzLT5pbnZvbFsxXSA9IHZhbHVlICYg MHgzZjsJCS8qIFJJTlZPTCAqLworICAgICAgICBzLT5pbm11dGVbMV0gPSAodmFsdWUgPj4gNykg JiAxOwkvKiBSSU5NVVRFICovCisgICAgICAgIHdtODc1MF9tYXNrX3VwZGF0ZShzKTsKKyAgICAg ICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9BRENEQUM6CS8qIEFEQyBhbmQgREFDIENvbnRy b2wgKi8KKyAgICAgICAgcy0+cG9sID0gKHZhbHVlID4+IDUpICYgMzsJCS8qIEFEQ1BPTCAqLwor ICAgICAgICBzLT5tdXRlID0gKHZhbHVlID4+IDMpICYgMTsJCS8qIERBQ01VICovCisgICAgICAg IHdtODc1MF9tYXNrX3VwZGF0ZShzKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1 MF9BRENUTDM6CS8qIEFkZGl0aW9uYWwgQ29udHJvbCAoMykgKi8KKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIFdNODc1MF9MQURDOgkvKiBMZWZ0IEFEQyBEaWdpdGFsIFZvbHVtZSAqLworICAg ICAgICBzLT5pbnZvbFsyXSA9IHZhbHVlICYgMHhmZjsJCS8qIExBRENWT0wgKi8KKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9SQURDOgkvKiBSaWdodCBBREMgRGlnaXRhbCBWb2x1 bWUgKi8KKyAgICAgICAgcy0+aW52b2xbM10gPSB2YWx1ZSAmIDB4ZmY7CQkvKiBSQURDVk9MICov CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfQUxDMToJLyogQUxDIENvbnRyb2wg KDEpICovCisgICAgICAgIHMtPmFsYyA9ICh2YWx1ZSA+PiA3KSAmIDM7CQkvKiBBTENTRUwgKi8K KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9OR0FURToJLyogTm9pc2UgR2F0ZSBD b250cm9sICovCisgICAgY2FzZSBXTTg3NTBfM0Q6CS8qIDNEIGVuaGFuY2UgKi8KKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9MREFDOgkvKiBMZWZ0IENoYW5uZWwgRGlnaXRhbCBW b2x1bWUgKi8KKyAgICAgICAgcy0+b3V0dm9sWzBdID0gdmFsdWUgJiAweGZmOwkJLyogTERBQ1ZP TCAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2UgV004NzUwX1JEQUM6CS8qIFJpZ2h0IENo YW5uZWwgRGlnaXRhbCBWb2x1bWUgKi8KKyAgICAgICAgcy0+b3V0dm9sWzFdID0gdmFsdWUgJiAw eGZmOwkJLyogUkRBQ1ZPTCAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2UgV004NzUwX0JB U1M6CS8qIEJhc3MgQ29udHJvbCAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2UgV004NzUw X0xPVVRNMToJLyogTGVmdCBNaXhlciBDb250cm9sICgxKSAqLworICAgICAgICBzLT5wYXRoWzBd ID0gKHZhbHVlID4+IDgpICYgMTsJCS8qIExEMkxPICovCisgICAgICAgIGJyZWFrOworCisgICAg Y2FzZSBXTTg3NTBfTE9VVE0yOgkvKiBMZWZ0IE1peGVyIENvbnRyb2wgKDIpICovCisgICAgICAg IHMtPnBhdGhbMV0gPSAodmFsdWUgPj4gOCkgJiAxOwkJLyogUkQyTE8gKi8KKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFdNODc1MF9ST1VUTTE6CS8qIFJpZ2h0IE1peGVyIENvbnRyb2wgKDEp ICovCisgICAgICAgIHMtPnBhdGhbMl0gPSAodmFsdWUgPj4gOCkgJiAxOwkJLyogTEQyUk8gKi8K KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9ST1VUTTI6CS8qIFJpZ2h0IE1peGVy IENvbnRyb2wgKDIpICovCisgICAgICAgIHMtPnBhdGhbM10gPSAodmFsdWUgPj4gOCkgJiAxOwkJ LyogUkQyUk8gKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1MF9NT1VUTTE6CS8q IE1vbm8gTWl4ZXIgQ29udHJvbCAoMSkgKi8KKyAgICAgICAgcy0+bXBhdGhbMF0gPSAodmFsdWUg Pj4gOCkgJiAxOwkJLyogTEQyTU8gKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdNODc1 MF9NT1VUTTI6CS8qIE1vbm8gTWl4ZXIgQ29udHJvbCAoMikgKi8KKyAgICAgICAgcy0+bXBhdGhb MV0gPSAodmFsdWUgPj4gOCkgJiAxOwkJLyogUkQyTU8gKi8KKyAgICAgICAgYnJlYWs7CisKKyAg ICBjYXNlIFdNODc1MF9MT1VUMVY6CS8qIExPVVQxIFZvbHVtZSAqLworICAgICAgICBzLT5vdXR2 b2xbMl0gPSB2YWx1ZSAmIDB4N2Y7CQkvKiBMT1VUMlZPTCAqLworICAgICAgICBicmVhazsKKwor ICAgIGNhc2UgV004NzUwX0xPVVQyVjoJLyogTE9VVDIgVm9sdW1lICovCisgICAgICAgIHMtPm91 dHZvbFs0XSA9IHZhbHVlICYgMHg3ZjsJCS8qIExPVVQyVk9MICovCisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBXTTg3NTBfUk9VVDFWOgkvKiBST1VUMSBWb2x1bWUgKi8KKyAgICAgICAgcy0+ b3V0dm9sWzNdID0gdmFsdWUgJiAweDdmOwkJLyogUk9VVDJWT0wgKi8KKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFdNODc1MF9ST1VUMlY6CS8qIFJPVVQyIFZvbHVtZSAqLworICAgICAgICBz LT5vdXR2b2xbNV0gPSB2YWx1ZSAmIDB4N2Y7CQkvKiBST1VUMlZPTCAqLworICAgICAgICBicmVh azsKKworICAgIGNhc2UgV004NzUwX01PVVRWOgkvKiBNT05PT1VUIFZvbHVtZSAqLworICAgICAg ICBzLT5vdXR2b2xbNl0gPSB2YWx1ZSAmIDB4N2Y7CQkvKiBNT05PT1VUVk9MICovCisgICAgICAg IGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfQURDVEwyOgkvKiBBZGRpdGlvbmFsIENvbnRyb2wg KDIpICovCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfUFdSMjoJLyogUG93ZXIg TWFuYWdlbWVudCAoMikgKi8KKyAgICAgICAgcy0+cG93ZXIgPSB2YWx1ZSAmIDB4N2U7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBXTTg3NTBfSUZBQ0U6CS8qIERpZ2l0YWwgQXVkaW8gSW50 ZXJmYWNlIEZvcm1hdCAqLworI2lmZGVmIFZFUkJPU0UKKyAgICAgICAgaWYgKHZhbHVlICYgMHg0 MCkJCQkvKiBNUyAqLworICAgICAgICAgICAgcHJpbnRmKCIlczogYXR0ZW1wdCB0byBlbmFibGUg TWFzdGVyIE1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7CisjZW5kaWYKKyAgICAgICAgcy0+Zm9ybWF0 ID0gdmFsdWU7CisgICAgICAgIHdtODc1MF9zZXRfZm9ybWF0KHMpOworICAgICAgICBicmVhazsK KworICAgIGNhc2UgV004NzUwX1NSQVRFOgkvKiBDbG9ja2luZyBhbmQgU2FtcGxlIFJhdGUgQ29u dHJvbCAqLworICAgICAgICBzLT5yYXRlID0gJndtX3JhdGVfdGFibGVbKHZhbHVlID4+IDEpICYg MHgxZl07CisgICAgICAgIHdtODc1MF9zZXRfZm9ybWF0KHMpOworICAgICAgICBicmVhazsKKwor ICAgIGNhc2UgV004NzUwX1JFU0VUOgkvKiBSZXNldCAqLworICAgICAgICB3bTg3NTBfcmVzZXQo JnMtPmkyYyk7CisgICAgICAgIGJyZWFrOworCisjaWZkZWYgVkVSQk9TRQorICAgIGRlZmF1bHQ6 CisgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElP Tl9fLCBjbWQpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBp MmNfc2xhdmVfcyAqd204NzUwX2luaXQoQXVkaW9TdGF0ZSAqYXVkaW8pCit7CisgICAgc3RydWN0 IHdtODc1MF9zICpzID0gcWVtdV9tYWxsb2N6KHNpemVvZihzdHJ1Y3Qgd204NzUwX3MpKTsKKyAg ICBzLT5pMmMub3BhcXVlID0gczsKKyAgICBzLT5pMmMudHggPSB3bTg3NTBfdHg7CisgICAgcy0+ aTJjLnN0YXJ0ID0gd204NzUwX3N0YXJ0OworCisgICAgQVVEX3JlZ2lzdGVyX2NhcmQoYXVkaW8s IENPREVDLCAmcy0+Y2FyZCk7CisgICAgd204NzUwX3Jlc2V0KCZzLT5pMmMpOworICAgIHJldHVy biAmcy0+aTJjOworfQorCit2b2lkIHdtODc1MF9maW5pKHN0cnVjdCBpMmNfc2xhdmVfcyAqaTJj KQoreworICAgIHN0cnVjdCB3bTg3NTBfcyAqcyA9IChzdHJ1Y3Qgd204NzUwX3MgKikgaTJjLT5v cGFxdWU7CisgICAgd204NzUwX3Jlc2V0KCZzLT5pMmMpOworICAgIEFVRF9yZW1vdmVfY2FyZCgm cy0+Y2FyZCk7CisgICAgcWVtdV9mcmVlKHMpOworfQorCit2b2lkIHdtODc1MF9kYXRhX3JlcV9z ZXQoc3RydWN0IGkyY19zbGF2ZV9zICppMmMsCisgICAgICAgICAgICAgICAgdm9pZCAoKmRhdGFf cmVxKSh2b2lkICosIGludCwgaW50KSwgdm9pZCAqb3BhcXVlKQoreworICAgIHN0cnVjdCB3bTg3 NTBfcyAqcyA9IChzdHJ1Y3Qgd204NzUwX3MgKikgaTJjLT5vcGFxdWU7CisgICAgcy0+ZGF0YV9y ZXEgPSBkYXRhX3JlcTsKKyAgICBzLT5vcGFxdWUgPSBvcGFxdWU7Cit9CisKK3ZvaWQgd204NzUw X2RhY19kYXQodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBzYW1wbGUpCit7CisgICAgc3RydWN0IHdt ODc1MF9zICpzID0gKHN0cnVjdCB3bTg3NTBfcyAqKSBvcGFxdWU7CisgICAgdWludDMyX3QgKmRh dGEgPSAodWludDMyX3QgKikgJnMtPmRhdGFfb3V0W3MtPmlkeF9vdXRdOworICAgICpkYXRhID0g c2FtcGxlICYgcy0+b3V0bWFzazsKKyAgICBzLT5yZXFfb3V0IC09IDQ7CisgICAgcy0+aWR4X291 dCArPSA0OworICAgIGlmIChzLT5pZHhfb3V0ID49IHNpemVvZihzLT5kYXRhX291dCkgfHwgcy0+ cmVxX291dCA8PSAwKQorICAgICAgICB3bTg3NTBfb3V0X2ZsdXNoKHMpOworfQorCit1aW50MzJf dCB3bTg3NTBfYWRjX2RhdCh2b2lkICpvcGFxdWUpCit7CisgICAgc3RydWN0IHdtODc1MF9zICpz ID0gKHN0cnVjdCB3bTg3NTBfcyAqKSBvcGFxdWU7CisgICAgdWludDMyX3QgKmRhdGE7CisgICAg aWYgKHMtPmlkeF9pbiA+PSBzaXplb2Yocy0+ZGF0YV9pbikpCisgICAgICAgIHdtODc1MF9pbl9s b2FkKHMpOworICAgIGRhdGEgPSAodWludDMyX3QgKikgJnMtPmRhdGFfaW5bcy0+aWR4X2luXTsK KyAgICBzLT5yZXFfaW4gLT0gNDsKKyAgICBzLT5pZHhfaW4gKz0gNDsKKyAgICByZXR1cm4gKmRh dGEgJiBzLT5pbm1hc2s7Cit9Ci0tIAoxLjQuNC4zCgo= ------=_Part_99810_22115322.1174080916925--