From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HSJLw-00088g-8g for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:48:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HSJLu-00088U-Ha for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:48:43 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HSJLu-00088R-Bt for qemu-devel@nongnu.org; Fri, 16 Mar 2007 15:48:42 -0500 Received: from ug-out-1314.google.com ([66.249.92.175]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HSJKh-0005xp-Fq for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:47:30 -0400 Received: by ug-out-1314.google.com with SMTP id j40so879637ugd for ; Fri, 16 Mar 2007 13:46:46 -0700 (PDT) Message-ID: Date: Fri, 16 Mar 2007 21:46:44 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_98866_18121991.1174078004737" Subject: [Qemu-devel] [PATCH] Maxim MAX7310 GPIO expander. I2C bus support. 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_98866_18121991.1174078004737 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Adds an 8-port GPIO expansion chip that connects over I2C and a simple I2C bus api. Cheers, Andrew ------=_Part_98866_18121991.1174078004737 Content-Type: text/plain; name=0002-Maxim-MAX7310-GPIO-expander.-I2C-bus-support.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezd5skcx Content-Disposition: attachment; filename="0002-Maxim-MAX7310-GPIO-expander.-I2C-bus-support.txt" RnJvbSAwYmFiZWNlNWZkMzc4YTEyYTcxYzQzNzkxYzc2MzA4NzUxYzZkYzk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IEZyaSwgMTYgTWFyIDIwMDcgMTU6MTE6MjMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBN YXhpbSBNQVg3MzEwIEdQSU8gZXhwYW5kZXIuIEkyQyBidXMgc3VwcG9ydC4KCi0tLQogaHcvaTJj LmggICAgIHwgIDE2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBody9tYXg3MzEwLmMgfCAgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHZsLmggICAgICAgICB8ICAgIDQgKwog MyBmaWxlcyBjaGFuZ2VkLCAzNDAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9ody9pMmMuaCBiL2h3L2kyYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQ4NjZmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9ody9pMmMuaApAQCAtMCwwICsxLDE2 MCBAQAorLyoKKyAqIFNpbXBsaWZpZWQgSTJDKHRtKSBidXMgLyBTTUJ1cyh0bSkuCisgKgorICog Q29weXJpZ2h0IChjKSAyMDA2IE9wZW5lZGhhbmQgTHRkLgorICogV3JpdHRlbiBieSBBbmRyemVq IFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+CisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vu c2VkIHVuZGVyIEdOVSBHUEwgdjIuCisgKi8KKworI2RlZmluZSBJMkNfTUFYX01TRwk0MDk2CisK K3N0cnVjdCBpMmNfc2xhdmVfcyB7CisgICAgdWludDhfdCBhZGRyZXNzOworICAgIGludCAoKnR4 KSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEsIGludCBsZW4pOworICAgIHZvaWQgKCpzdGFy dCkodm9pZCAqb3BhcXVlLCBpbnQgZGlyKTsKKyAgICB2b2lkICgqc3RvcCkodm9pZCAqb3BhcXVl KTsKKyAgICB2b2lkICpvcGFxdWU7Cit9OworCitzdHJ1Y3QgaTJjX2J1c19zIHsKKyAgICBzdHJ1 Y3QgaTJjX3NsYXZlX3MgKnNsYXZlWzB4ODBdOworICAgIHVpbnQ4X3QgY3VycmVudDsKKyAgICBp bnQgZGlyOworfTsKKworLyogSTJDIG1hc3RlciAtIGRyaXZlcyB0aGUgY2xvY2sgc2lnbmFsIG9u IGEgYnVzLiAgVGhlcmUgY2FuIGJlIG11bHRpcGxlCisgKiBtYXN0ZXJzIG9uIG9uZSBidXMuICAq Lworc3RydWN0IGkyY19tYXN0ZXJfcyB7CisgICAgc3RydWN0IGkyY19idXNfcyAqYnVzOworICAg IHVpbnQ4X3QgbWVzc2FnZVtJMkNfTUFYX01TR107CisgICAgaW50IG1lc3NhZ2VfbGVuOworICAg IGludCBhY2s7CisKKyAgICB1aW50OF90IGRhdGE7Cit9OworCitzdGF0aWMgaW5saW5lIGludCBp MmNfYnVzX3N0YXJ0KHN0cnVjdCBpMmNfYnVzX3MgKmJ1cywgdWludDhfdCBieXRlKQoreworICAg IHN0cnVjdCBpMmNfc2xhdmVfcyAqc2xhdmU7CisKKyAgICBidXMtPmN1cnJlbnQgPSBieXRlID4+ IDE7CisgICAgYnVzLT5kaXIgPSBieXRlICYgMTsKKyAgICBzbGF2ZSA9IGJ1cy0+c2xhdmVbYnVz LT5jdXJyZW50XTsKKworICAgIHJldHVybiAhc2xhdmU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50 IGkyY19zdGFydF9zdWJtaXQoc3RydWN0IGkyY19idXNfcyAqYnVzKQoreworICAgIHN0cnVjdCBp MmNfc2xhdmVfcyAqc2xhdmUgPSBidXMtPnNsYXZlW2J1cy0+Y3VycmVudF07CisgICAgaWYgKCFz bGF2ZSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoc2xhdmUtPnN0YXJ0KQorICAgICAg ICBzbGF2ZS0+c3RhcnQoc2xhdmUtPm9wYXF1ZSwgYnVzLT5kaXIpOworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW5saW5lIGludCBpMmNfc3RvcF9zdWJtaXQoc3RydWN0IGkyY19idXNfcyAq YnVzKQoreworICAgIHN0cnVjdCBpMmNfc2xhdmVfcyAqc2xhdmUgPSBidXMtPnNsYXZlW2J1cy0+ Y3VycmVudF07CisgICAgaWYgKCFzbGF2ZSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAo c2xhdmUtPnN0b3ApCisgICAgICAgIHNsYXZlLT5zdG9wKHNsYXZlLT5vcGFxdWUpOworICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBpMmNfbXNnX3N1Ym1pdChzdHJ1Y3QgaTJj X2J1c19zICpidXMsCisgICAgICAgICAgICAgICAgdWludDhfdCBtZXNzYWdlW10sIGludCBsZW4p Cit7CisgICAgc3RydWN0IGkyY19zbGF2ZV9zICpzbGF2ZSA9IGJ1cy0+c2xhdmVbYnVzLT5jdXJy ZW50XTsKKyAgICBpZiAoIXNsYXZlKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHJldHVybiBz bGF2ZS0+dHggPyBzbGF2ZS0+dHgoc2xhdmUtPm9wYXF1ZSwgbWVzc2FnZSwgbGVuKSA6IDE7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpMmNfbWFzdGVyX3N1Ym1pdChzdHJ1Y3QgaTJjX21hc3Rl cl9zICptYXN0ZXIsCisgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBpbnQgc3RvcCkKK3sKKyAg ICBpbnQgcmV0ID0gMDsKKworICAgIGlmICghbWFzdGVyLT5idXMpIHsKKyAgICAgICAgbWFzdGVy LT5hY2sgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YXJ0KSB7Cisg ICAgICAgIGlmIChtYXN0ZXItPm1lc3NhZ2VfbGVuKQorICAgICAgICAgICAgaWYgKCFtYXN0ZXIt PmJ1cy0+ZGlyKSB7CS8qIE1hc3RlciAtLT4gU2xhdmUgKi8KKyAgICAgICAgICAgICAgICBpMmNf c3RhcnRfc3VibWl0KG1hc3Rlci0+YnVzKTsKKyAgICAgICAgICAgICAgICByZXQgPSBpMmNfbXNn X3N1Ym1pdChtYXN0ZXItPmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFz dGVyLT5tZXNzYWdlLCBtYXN0ZXItPm1lc3NhZ2VfbGVuKTsKKyAgICAgICAgICAgICAgICBtYXN0 ZXItPm1lc3NhZ2VfbGVuID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICByZXQgPSBpMmNf YnVzX3N0YXJ0KG1hc3Rlci0+YnVzLCBtYXN0ZXItPmRhdGEpOworICAgICAgICBtYXN0ZXItPm1l c3NhZ2VfbGVuID0gMDsKKworICAgICAgICBpZiAobWFzdGVyLT5idXMtPmRpcikgewkJLyogTWFz dGVyIDwtLSBTbGF2ZSAqLworICAgICAgICAgICAgaTJjX3N0YXJ0X3N1Ym1pdChtYXN0ZXItPmJ1 cyk7CisgICAgICAgICAgICBtYXN0ZXItPm1lc3NhZ2VfbGVuID0gMTsKKyAgICAgICAgICAgIGlm IChzdG9wKQorICAgICAgICAgICAgICAgIGkyY19tc2dfc3VibWl0KG1hc3Rlci0+YnVzLCBtYXN0 ZXItPm1lc3NhZ2UsIDApOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzdG9wIDwgMikgewor ICAgICAgICBpZiAoIW1hc3Rlci0+YnVzLT5kaXIpIHsJLyogTWFzdGVyIC0tPiBTbGF2ZSAqLwor ICAgICAgICAgICAgaWYgKG1hc3Rlci0+bWVzc2FnZV9sZW4gPCBJMkNfTUFYX01TRykKKyAgICAg ICAgICAgICAgICBtYXN0ZXItPm1lc3NhZ2VbbWFzdGVyLT5tZXNzYWdlX2xlbiArK10gPSBtYXN0 ZXItPmRhdGE7CisgICAgICAgIH0gZWxzZSB7CQkJLyogTWFzdGVyIDwtLSBTbGF2ZSAqLworICAg ICAgICAgICAgcmV0ID0gaTJjX21zZ19zdWJtaXQobWFzdGVyLT5idXMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFzdGVyLT5tZXNzYWdlLCBtYXN0ZXItPm1lc3NhZ2VfbGVuKTsKKyAg ICAgICAgICAgIG1hc3Rlci0+ZGF0YSA9IG1hc3Rlci0+bWVzc2FnZVswXTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGlmIChzdG9wKSB7CisgICAgICAgIGlmICghbWFzdGVyLT5idXMtPmRpcikg ewkvKiBNYXN0ZXIgLS0+IFNsYXZlICovCisgICAgICAgICAgICBpMmNfc3RhcnRfc3VibWl0KG1h c3Rlci0+YnVzKTsKKyAgICAgICAgICAgIHJldCA9IGkyY19tc2dfc3VibWl0KG1hc3Rlci0+YnVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlci0+bWVzc2FnZSwgbWFzdGVyLT5t ZXNzYWdlX2xlbik7CisgICAgICAgICAgICBtYXN0ZXItPm1lc3NhZ2VfbGVuID0gMDsKKyAgICAg ICAgfQorCisgICAgICAgIGkyY19zdG9wX3N1Ym1pdChtYXN0ZXItPmJ1cyk7CisgICAgfQorCisg ICAgbWFzdGVyLT5hY2sgPSAhcmV0OworfQorCisvKiBDYWxsIHdpdGggemVybyBgYWRkcicgdG8g ZGV0YWNoLiAgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBpMmNfc2xhdmVfYXR0YWNoKHN0cnVjdCBp MmNfYnVzX3MgKmJ1cywgdWludDhfdCBhZGRyLAorICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNf c2xhdmVfcyAqZGV2KQoreworICAgIGlmIChhZGRyID49IDB4ODApCisgICAgICAgIGNwdV9hYm9y dChjcHVfc2luZ2xlX2VudiwgImJhZCBJMkMgYWRkcmVzcyIpOworCisgICAgaWYgKGRldi0+YWRk cmVzcykKKyAgICAgICAgYnVzLT5zbGF2ZVtkZXYtPmFkZHJlc3NdID0gMDsKKworICAgIGRldi0+ YWRkcmVzcyA9IGFkZHI7CisKKyAgICBpZiAoZGV2LT5hZGRyZXNzKQorICAgICAgICBidXMtPnNs YXZlW2Rldi0+YWRkcmVzc10gPSBkZXY7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpMmNfbWFz dGVyX2F0dGFjaChzdHJ1Y3QgaTJjX2J1c19zICpidXMsCisgICAgICAgICAgICAgICAgc3RydWN0 IGkyY19tYXN0ZXJfcyAqZGV2KQoreworICAgIGRldi0+YnVzID0gYnVzOworfQorCisvKiBtYXg3 MzEwLmMgKi8KK3N0cnVjdCBpMmNfc2xhdmVfcyAqbWF4NzMxMF9pbml0KHZvaWQpOwordm9pZCBt YXg3MzEwX3Jlc2V0KHN0cnVjdCBpMmNfc2xhdmVfcyAqaTJjKTsKK3ZvaWQgbWF4NzMxMF9ncGlv X3NldChzdHJ1Y3QgaTJjX3NsYXZlX3MgKmkyYywgaW50IGxpbmUsIGludCBsZXZlbCk7Cit2b2lk IG1heDczMTBfZ3Bpb19oYW5kbGVyX3NldChzdHJ1Y3QgaTJjX3NsYXZlX3MgKmkyYywgaW50IGxp bmUsCisgICAgICAgICAgICAgICAgZ3Bpb19oYW5kbGVyX3QgaGFuZGxlciwgdm9pZCAqb3BhcXVl KTsKZGlmZiAtLWdpdCBhL2h3L21heDczMTAuYyBiL2h3L21heDczMTAuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTg4MTNkCi0tLSAvZGV2L251bGwKKysrIGIvaHcvbWF4 NzMxMC5jCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogTUFYNzMxMCA4LXBvcnQgR1BJTyBleHBh bnNpb24gY2hpcC4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgT3BlbmVkaGFuZCBMdGQuCisg KiBXcml0dGVuIGJ5IEFuZHJ6ZWogWmFib3Jvd3NraSA8YmFscm9nQHphYm9yLm9yZz4KKyAqCisg KiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgR05VIEdQTCB2Mi4KKyAqLworCisjaW5jbHVk ZSAidmwuaCIKKworc3RydWN0IG1heDczMTBfcyB7CisgICAgdWludDhfdCBsZXZlbDsKKyAgICB1 aW50OF90IGRpcmVjdGlvbjsKKyAgICB1aW50OF90IHBvbGFyaXR5OworICAgIHVpbnQ4X3Qgc3Rh dHVzOworICAgIHVpbnQ4X3QgY29tbWFuZDsKKyAgICBpbnQgaTJjX2RpcjsKKyAgICBzdHJ1Y3Qg aTJjX3NsYXZlX3MgaTJjOworICAgIHN0cnVjdCB7CisgICAgICAgIGdwaW9faGFuZGxlcl90IGZu OworICAgICAgICB2b2lkICpvcGFxdWU7CisgICAgfSBoYW5kbGVyWzhdOworfTsKKwordm9pZCBt YXg3MzEwX3Jlc2V0KHN0cnVjdCBpMmNfc2xhdmVfcyAqaTJjKQoreworICAgIHN0cnVjdCBtYXg3 MzEwX3MgKnMgPSAoc3RydWN0IG1heDczMTBfcyAqKSBpMmMtPm9wYXF1ZTsKKyAgICBzLT5sZXZl bCAmPSBzLT5kaXJlY3Rpb247CisgICAgcy0+ZGlyZWN0aW9uID0gMHhmZjsKKyAgICBzLT5wb2xh cml0eSA9IDB4ZjA7CisgICAgcy0+c3RhdHVzID0gMHgwMTsKKyAgICBzLT5jb21tYW5kID0gMHgw MDsKK30KKworc3RhdGljIHZvaWQgbWF4NzMxMF9zdGFydCh2b2lkICpvcGFxdWUsIGludCBkaXIp Cit7CisgICAgc3RydWN0IG1heDczMTBfcyAqcyA9IChzdHJ1Y3QgbWF4NzMxMF9zICopIG9wYXF1 ZTsKKyAgICBzLT5pMmNfZGlyID0gZGlyOworfQorCitzdGF0aWMgaW50IG1heDczMTBfcmVhZCh2 b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEsIGludCBsZW4pCit7CisgICAgc3RydWN0IG1heDcz MTBfcyAqcyA9IChzdHJ1Y3QgbWF4NzMxMF9zICopIG9wYXF1ZTsKKworICAgIHN3aXRjaCAocy0+ Y29tbWFuZCkgeworICAgIGNhc2UgMHgwMDoJLyogSW5wdXQgcG9ydCAqLworICAgICAgICBtZW1z ZXQoZGF0YSwgcy0+bGV2ZWwgXiBzLT5wb2xhcml0eSwgbGVuKTsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIDB4MDE6CS8qIE91dHB1dCBwb3J0ICovCisgICAgICAgIG1lbXNldChkYXRhLCBz LT5sZXZlbCAmIH5zLT5kaXJlY3Rpb24sIGxlbik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz ZSAweDAyOgkvKiBQb2xhcml0eSBpbnZlcnNpb24gKi8KKyAgICAgICAgbWVtc2V0KGRhdGEsIHMt PnBvbGFyaXR5LCBsZW4pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgMHgwMzoJLyogQ29u ZmlndXJhdGlvbiAqLworICAgICAgICBtZW1zZXQoZGF0YSwgcy0+ZGlyZWN0aW9uLCBsZW4pOwor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgMHgwNDoJLyogVGltZW91dCAqLworICAgICAgICBt ZW1zZXQoZGF0YSwgcy0+c3RhdHVzLCBsZW4pOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug MHhmZjoJLyogUmVzZXJ2ZWQgKi8KKyAgICAgICAgbWVtc2V0KGRhdGEsIDB4ZmYsIGxlbik7Cisg ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyNpZmRlZiBWRVJCT1NFCisgICAgICAgIHBy aW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBzLT5jb21t YW5kKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgbWF4NzMxMF93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEs IGludCBsZW4pCit7CisgICAgc3RydWN0IG1heDczMTBfcyAqcyA9IChzdHJ1Y3QgbWF4NzMxMF9z ICopIG9wYXF1ZTsKKyAgICB1aW50OF90IGRpZmY7CisgICAgaW50IGxpbmU7CisKKyAgICBpZiAo bGVuID49IDEpCisgICAgICAgIHMtPmNvbW1hbmQgPSBkYXRhWzBdOworCisgICAgaWYgKGxlbiA8 IDIpIHsKKyNpZmRlZiBWRVJCT1NFCisgICAgICAgIHByaW50ZigiJXM6IG1lc3NhZ2UgdG9vIHNo b3J0ICglaSBieXRlcylcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKyNlbmRpZgorICAgICAgICBy ZXR1cm4gMDsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHMtPmNvbW1hbmQpIHsKKyAgICBjYXNlIDB4 MDE6CS8qIE91dHB1dCBwb3J0ICovCisgICAgICAgIGZvciAoZGlmZiA9IChkYXRhWzFdIF4gcy0+ bGV2ZWwpICYgfnMtPmRpcmVjdGlvbjsgZGlmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp ZmYgJj0gfigxIDw8IGxpbmUpKSB7CisgICAgICAgICAgICBsaW5lID0gZmZzKGRpZmYpIC0gMTsK KyAgICAgICAgICAgIGlmIChzLT5oYW5kbGVyW2xpbmVdLmZuKQorICAgICAgICAgICAgICAgIHMt PmhhbmRsZXJbbGluZV0uZm4obGluZSwgKGRhdGFbMV0gPj4gbGluZSkgJiAxLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5oYW5kbGVyW2xpbmVdLm9wYXF1ZSk7CisgICAgICAg IH0KKyAgICAgICAgcy0+bGV2ZWwgPSAocy0+bGV2ZWwgJiBzLT5kaXJlY3Rpb24pIHwgKGRhdGFb MV0gJiB+cy0+ZGlyZWN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MDI6CS8q IFBvbGFyaXR5IGludmVyc2lvbiAqLworICAgICAgICBzLT5wb2xhcml0eSA9IGRhdGFbMV07Cisg ICAgICAgIGJyZWFrOworCisgICAgY2FzZSAweDAzOgkvKiBDb25maWd1cmF0aW9uICovCisgICAg ICAgIHMtPmxldmVsICY9IH4ocy0+ZGlyZWN0aW9uIF4gZGF0YVsxXSk7CisgICAgICAgIHMtPmRp cmVjdGlvbiA9IGRhdGFbMV07CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAweDA0OgkvKiBU aW1lb3V0ICovCisgICAgICAgIHMtPnN0YXR1cyA9IGRhdGFbMV07CisgICAgICAgIGJyZWFrOwor CisgICAgZGVmYXVsdDoKKyNpZmRlZiBWRVJCT1NFCisgICAgICAgIHByaW50ZigiJXM6IHVua25v d24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBzLT5jb21tYW5kKTsKKyNlbmRpZgor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBtYXg3MzEwX3R4KHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqZGF0YSwgaW50IGxlbikKK3sKKyAg ICBzdHJ1Y3QgbWF4NzMxMF9zICpzID0gKHN0cnVjdCBtYXg3MzEwX3MgKikgb3BhcXVlOworICAg IGlmIChsZW4pIHsKKyAgICAgICAgaWYgKHMtPmkyY19kaXIpCisgICAgICAgICAgICByZXR1cm4g bWF4NzMxMF93cml0ZShvcGFxdWUsIGRhdGEsIGxlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHJldHVybiBtYXg3MzEwX3JlYWQob3BhcXVlLCBkYXRhLCBsZW4pOworICAgIH0KKworICAg IHJldHVybiAwOworfQorCitzdHJ1Y3QgaTJjX3NsYXZlX3MgKm1heDczMTBfaW5pdCh2b2lkKQor eworICAgIHN0cnVjdCBtYXg3MzEwX3MgKnMgPSBxZW11X21hbGxvY3ooc2l6ZW9mKHN0cnVjdCBt YXg3MzEwX3MpKTsKKyAgICBzLT5pMmMub3BhcXVlID0gczsKKyAgICBzLT5pMmMudHggPSBtYXg3 MzEwX3R4OworICAgIHMtPmkyYy5zdGFydCA9IG1heDczMTBfc3RhcnQ7CisKKyAgICBtYXg3MzEw X3Jlc2V0KCZzLT5pMmMpOworICAgIHJldHVybiAmcy0+aTJjOworfQorCit2b2lkIG1heDczMTBf Z3Bpb19zZXQoc3RydWN0IGkyY19zbGF2ZV9zICppMmMsIGludCBsaW5lLCBpbnQgbGV2ZWwpCit7 CisgICAgc3RydWN0IG1heDczMTBfcyAqcyA9IChzdHJ1Y3QgbWF4NzMxMF9zICopIGkyYy0+b3Bh cXVlOworICAgIGlmIChsaW5lID49IHNpemVvZihzLT5oYW5kbGVyKSAvIHNpemVvZigqcy0+aGFu ZGxlcikgfHwgbGluZSAgPCAwKQorICAgICAgICBjcHVfYWJvcnQoY3B1X3NpbmdsZV9lbnYsICJi YWQgR1BJTyBsaW5lIik7CisKKyAgICBpZiAobGV2ZWwpCisgICAgICAgIHMtPmxldmVsIHw9IHMt PmRpcmVjdGlvbiAmICgxIDw8IGxpbmUpOworICAgIGVsc2UKKyAgICAgICAgcy0+bGV2ZWwgJj0g fihzLT5kaXJlY3Rpb24gJiAoMSA8PCBsaW5lKSk7Cit9CisKK3ZvaWQgbWF4NzMxMF9ncGlvX2hh bmRsZXJfc2V0KHN0cnVjdCBpMmNfc2xhdmVfcyAqaTJjLCBpbnQgbGluZSwKKyAgICAgICAgICAg ICAgICBncGlvX2hhbmRsZXJfdCBoYW5kbGVyLCB2b2lkICpvcGFxdWUpCit7CisgICAgc3RydWN0 IG1heDczMTBfcyAqcyA9IChzdHJ1Y3QgbWF4NzMxMF9zICopIGkyYy0+b3BhcXVlOworICAgIGlm IChsaW5lID49IHNpemVvZihzLT5oYW5kbGVyKSAvIHNpemVvZigqcy0+aGFuZGxlcikgfHwgbGlu ZSAgPCAwKQorICAgICAgICBjcHVfYWJvcnQoY3B1X3NpbmdsZV9lbnYsICJiYWQgR1BJTyBsaW5l Iik7CisKKyAgICBzLT5oYW5kbGVyW2xpbmVdLmZuID0gaGFuZGxlcjsKKyAgICBzLT5oYW5kbGVy W2xpbmVdLm9wYXF1ZSA9IG9wYXF1ZTsKK30KZGlmZiAtLWdpdCBhL3ZsLmggYi92bC5oCmluZGV4 IDk1ZjMxMzkuLmIzMGZiODcgMTAwNjQ0Ci0tLSBhL3ZsLmgKKysrIGIvdmwuaApAQCAtMTQzOCw2 ICsxNDM4LDEwIEBAIHN0cnVjdCBwY21jaWFfY2FyZF9zIHsKIC8qIGRzY20xeHh4eC5jICovCiBz dHJ1Y3QgcGNtY2lhX2NhcmRfcyAqZHNjbTF4eHh4X2luaXQoQmxvY2tEcml2ZXJTdGF0ZSAqYmRy dik7CiAKK3R5cGVkZWYgdm9pZCAoKmdwaW9faGFuZGxlcl90KShpbnQgbGluZSwgaW50IGxldmVs LCB2b2lkICpvcGFxdWUpOworCisjaW5jbHVkZSAiaHcvaTJjLmgiCisKICNpbmNsdWRlICJnZGJz dHViLmgiCiAKICNlbmRpZiAvKiBkZWZpbmVkKFFFTVVfVE9PTCkgKi8KLS0gCjEuNC40LjMKCg== ------=_Part_98866_18121991.1174078004737--