From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Adrian McMenamin" Subject: [PATCH] Add ALSA support for the SEGA Dreamcast PCM device Date: Tue, 15 May 2007 22:58:02 +0100 Message-ID: <92a12cdb0705151458x57d40a4dqa7a4bef97b1e33cd@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_13117_9915617.1179266282045" Return-path: Received: from nz-out-0506.google.com (nz-out-0506.google.com [64.233.162.234]) by alsa0.perex.cz (Postfix) with ESMTP id 5DA6124414 for ; Tue, 15 May 2007 23:58:03 +0200 (CEST) Received: by nz-out-0506.google.com with SMTP id l8so304998nzf for ; Tue, 15 May 2007 14:58:02 -0700 (PDT) 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: alsa-devel@alsa-project.org Cc: linux-kernel@vger.kernel.org List-Id: alsa-devel@alsa-project.org ------=_Part_13117_9915617.1179266282045 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Incorporating further small changes to tidy the code, please commit if ok. ALSA support for the SEGA Dreamcast Yamaha AICA sound device (pcm) This patch adds ALSA sound support for pcm playback on two channels on the SEGA Dreamcast built-in sound device (the Yamaha AICA) Add driver for the AICA sound device built into the SEGA Dreamcast Hook it all up with the build system. Signed-off-by: Adrian McMenamin ------=_Part_13117_9915617.1179266282045 Content-Type: text/x-patch; name=aica.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1qwo88q Content-Disposition: attachment; filename="aica.diff" ZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL0tjb25maWcgLi9saW51eC0yLjYu MjEvc291bmQvS2NvbmZpZwotLS0gLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9LY29uZmlnCTIw MDctMDQtMjYgMDQ6MDg6MzIuMDAwMDAwMDAwICswMTAwCisrKyAuL2xpbnV4LTIuNi4yMS9zb3Vu ZC9LY29uZmlnCTIwMDctMDUtMDcgMjE6MjA6NTQuMDAwMDAwMDAwICswMTAwCkBAIC02NCw2ICs2 NCw4IEBACiAKIHNvdXJjZSAic291bmQvbWlwcy9LY29uZmlnIgogCitzb3VyY2UgInNvdW5kL3No L0tjb25maWciCisKICMgdGhlIGZvbGxvd2luZyB3aWxsIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2Yg Y29uZmlnLgogIyBoZXJlIGFzc3VtaW5nIFVTQiBpcyBkZWZpbmVkIGJlZm9yZSBBTFNBCiBzb3Vy Y2UgInNvdW5kL3VzYi9LY29uZmlnIgpkaWZmIC1OYXVyIC4vbGludXgtMi42LjIxLW9yaWcvc291 bmQvTWFrZWZpbGUgLi9saW51eC0yLjYuMjEvc291bmQvTWFrZWZpbGUKLS0tIC4vbGludXgtMi42 LjIxLW9yaWcvc291bmQvTWFrZWZpbGUJMjAwNy0wNC0yNiAwNDowODozMi4wMDAwMDAwMDAgKzAx MDAKKysrIC4vbGludXgtMi42LjIxL3NvdW5kL01ha2VmaWxlCTIwMDctMDUtMDcgMjE6Mzc6MDUu MDAwMDAwMDAwICswMTAwCkBAIC01LDcgKzUsNyBAQAogb2JqLSQoQ09ORklHX1NPVU5EX1BSSU1F KSArPSBzb3VuZF9maXJtd2FyZS5vCiBvYmotJChDT05GSUdfU09VTkRfUFJJTUUpICs9IG9zcy8K IG9iai0kKENPTkZJR19ETUFTT1VORCkgKz0gb3NzLwotb2JqLSQoQ09ORklHX1NORCkgKz0gY29y ZS8gaTJjLyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHN5bnRoLyB1c2IvIHNwYXJjLyBw YXJpc2MvIHBjbWNpYS8gbWlwcy8gc29jLworb2JqLSQoQ09ORklHX1NORCkgKz0gY29yZS8gaTJj LyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHNoLyBzeW50aC8gdXNiLyBzcGFyYy8gcGFy aXNjLyBwY21jaWEvIG1pcHMvIHNvYy8KIG9iai0kKENPTkZJR19TTkRfQU9BKSArPSBhb2EvCiAK ICMgVGhpcyBvbmUgbXVzdCBiZSBjb21waWxhYmxlIGV2ZW4gaWYgc291bmQgaXMgY29uZmlndXJl ZCBvdXQKZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL3NoL2FpY2EuYyAuL2xp bnV4LTIuNi4yMS9zb3VuZC9zaC9haWNhLmMKLS0tIC4vbGludXgtMi42LjIxLW9yaWcvc291bmQv c2gvYWljYS5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyAuL2xpbnV4 LTIuNi4yMS9zb3VuZC9zaC9haWNhLmMJMjAwNy0wNS0xNSAyMjo1NDo0OS4wMDAwMDAwMDAgKzAx MDAKQEAgLTAsMCArMSw2NzUgQEAKKy8qCisqIFRoaXMgY29kZSBpcyBsaWNlbmNlZCB1bmRlciAK KyogdGhlIEdlbmVyYWwgUHVibGljIExpY2VuY2UKKyogdmVyc2lvbiAyCisqCisqIENvcHlyaWdo dCBBZHJpYW4gTWNNZW5hbWluIDIwMDUsIDIwMDYsIDIwMDcKKyogPGFkcmlhbkBtY21lbi5kZW1v bi5jby51az4KKyogUmVxdWlyZXMgZmlybXdhcmUgKEJTRCBsaWNlbmNlZCkgYXZhaWxhYmxlIGZy b206CisqIGh0dHA6Ly9saW51eGRjLmN2cy5zb3VyY2Vmb3JnZS5uZXQvbGludXhkYy9saW51eC1z aC1kYy9zb3VuZC9vc3MvYWljYS9maXJtd2FyZS8KKyogb3IgdGhlIG1haW50YWluZXIKKyoKKyog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisqCisqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisqCisqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisqIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl CisqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s IE1BICAwMjExMS0xMzA3ICBVU0EKKyoKKyovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cisj aW5jbHVkZSA8bGludXgvamlmZmllcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNs dWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxp bnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2lu Y2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5j bHVkZSA8c291bmQvZHJpdmVyLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUg PHNvdW5kL2NvbnRyb2wuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxzb3Vu ZC9pbml0dmFsLmg+CisjaW5jbHVkZSA8c291bmQvaW5mby5oPgorI2luY2x1ZGUgPGFzbS9pby5o PgorI2luY2x1ZGUgPGFzbS9kbWEuaD4KKyNpbmNsdWRlIDxhc20vZHJlYW1jYXN0L3N5c2FzaWMu aD4KKyNpbmNsdWRlICJhaWNhLmgiCisKK01PRFVMRV9BVVRIT1IoIkFkcmlhbiBNY01lbmFtaW4g PGFkcmlhbkBtY21lbi5kZW1vbi5jby51az4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiRHJlYW1j YXN0IEFJQ0Egc291bmQgKHBjbSkgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitN T0RVTEVfU1VQUE9SVEVEX0RFVklDRSgie3tZYW1haGEvU0VHQSwgQUlDQX19Iik7CisKKy8qIG1v ZHVsZSBwYXJhbWV0ZXJzICovCisjZGVmaW5lIENBUkRfTkFNRSAiQUlDQSIKK3N0YXRpYyBpbnQg aW5kZXggPSAtMTsKK3N0YXRpYyBjaGFyICppZDsKK3N0YXRpYyBpbnQgZW5hYmxlID0gMTsKK21v ZHVsZV9wYXJhbShpbmRleCwgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoaW5kZXgsICJJ bmRleCB2YWx1ZSBmb3IgIiBDQVJEX05BTUUgIiBzb3VuZGNhcmQuIik7Cittb2R1bGVfcGFyYW0o aWQsIGNoYXJwLCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoaWQsICJJRCBzdHJpbmcgZm9yICIg Q0FSRF9OQU1FICIgc291bmRjYXJkLiIpOworbW9kdWxlX3BhcmFtKGVuYWJsZSwgYm9vbCwgMDY0 NCk7CitNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZSwgIkVuYWJsZSAiIENBUkRfTkFNRSAiIHNvdW5k Y2FyZC4iKTsKKworLyogVXNlIHdvcmtxdWV1ZSAqLworCitzdGF0aWMgc3RydWN0IHNwdV93b3Jr X2hvbGRlciB7CisJc3RydWN0IHdvcmtfc3RydWN0IHNwdV9kbWFfd29yazsKKwl2b2lkICpzc3Bv aW50ZXI7Cit9IHNwdV93b3JraW5nOworCitzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3Qg KmFpY2FfcXVldWU7CisKKy8qIFNpbXBsZSBwbGF0Zm9ybSBkZXZpY2UgKi8KK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDsKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYWljYV9tZW1v cnlfc3BhY2VbMl0gPSB7CisJeworCSAubmFtZSA9ICJBSUNBIEFSTSBDT05UUk9MIiwKKwkgLnN0 YXJ0ID0gQVJNX1JFU0VUX1JFR0lTVEVSLAorCSAuZmxhZ3MgPSBJT1JFU09VUkNFX01FTSwKKwkg LmVuZCA9IEFSTV9SRVNFVF9SRUdJU1RFUiArIDMsCisJIH0sCisJeworCSAubmFtZSA9ICJBSUNB IFNvdW5kIFJBTSIsCisJIC5zdGFydCA9IFNQVV9NRU1PUllfQkFTRSwKKwkgLmZsYWdzID0gSU9S RVNPVVJDRV9NRU0sCisJIC5lbmQgPSBTUFVfTUVNT1JZX0JBU0UgKyAweDIwMDAwMCAtIDEsCisJ IH0sCit9OworCisvKiBTUFUgc3BlY2lmaWMgZnVuY3Rpb25zICovCisvKiBzcHVfd3JpdGVfd2Fp dCAtIHdhaXQgZm9yIEcyLVNIIEZJRk8gdG8gY2xlYXIgKi8KK3N0YXRpYyB2b2lkIHNwdV93cml0 ZV93YWl0KHZvaWQpCit7CisJaW50IHRpbWVfY291bnQ7CisJdGltZV9jb3VudCA9IDA7CisJd2hp bGUgKDEpIHsKKwkJaWYgKCEocmVhZGwoRzJfRklGTykgJiAweDExKSkKKwkJCWJyZWFrOworCQkv KiBUbyBlbnN1cmUgaGFyZHdhcmUgZmFpbHVyZSBkb2Vzbid0IHdlZGdlIGtlcm5lbCAqLworCQl0 aW1lX2NvdW50Kys7CisJCWlmICh0aW1lX2NvdW50ID4gMHgxMDAwMCkKKwkJeworCQkJc25kX3By aW50aygiV0FSTklORzogRzIgRklGTyBhcHBlYXJzIHRvIGJlIGJsb2NrZWQuXG4iKTsKKwkJCWJy ZWFrOworCQl9CisJfQorfQorCisvKiBzcHVfbWVtc2V0IC0gd3JpdGUgdG8gbWVtb3J5IGluIFNQ VSBhZGRyZXNzIHNwYWNlICovCitzdGF0aWMgdm9pZCBzcHVfbWVtc2V0KHUzMiB0b2ksIHUzMiB3 aGF0LCBpbnQgbGVuZ3RoKQoreworCWludCBpOworCXNuZF9hc3NlcnQobGVuZ3RoICUgNCA9PSAw LCByZXR1cm4pOworCWZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQlpZiAoIShpICUg OCkpCisJCQlzcHVfd3JpdGVfd2FpdCgpOworCQl3cml0ZWwod2hhdCwgdG9pICsgU1BVX01FTU9S WV9CQVNFKTsKKwkJdG9pKys7CisJfQorfQorCisvKiBzcHVfbWVtbG9hZCAtIHdyaXRlIHRvIFNQ VSBhZGRyZXNzIHNwYWNlICovCitzdGF0aWMgdm9pZCBzcHVfbWVtbG9hZCh1MzIgdG9pLCB2b2lk ICpmcm9tLCBpbnQgbGVuZ3RoKQoreworCXUzMiAqZnJvbWwgPSBmcm9tOworCXUzMiBfX2lvbWVt ICp0byA9ICh1MzIgX19pb21lbSAqKSAoU1BVX01FTU9SWV9CQVNFICsgdG9pKTsKKwlpbnQgaTsK Kwl1MzIgdmFsOworCWxlbmd0aCA9IERJVl9ST1VORF9VUChsZW5ndGgsIDQpOworCXNwdV93cml0 ZV93YWl0KCk7CisJZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJCWlmICghKGkgJSA4 KSkKKwkJCXNwdV93cml0ZV93YWl0KCk7CisJCXZhbCA9ICpmcm9tbDsKKwkJd3JpdGVsKHZhbCwg dG8pOworCQlmcm9tbCsrOworCQl0bysrOworCX0KK30KKworLyogc3B1X2Rpc2FibGUgLSBzZXQg c3B1IHJlZ2lzdGVycyB0byBzdG9wIHNvdW5kIG91dHB1dCAqLworc3RhdGljIHZvaWQgc3B1X2Rp c2FibGUodm9pZCkKK3sKKwlpbnQgaTsKKwl1MzIgcmVndmFsOworCXNwdV93cml0ZV93YWl0KCk7 CisJcmVndmFsID0gcmVhZGwoQVJNX1JFU0VUX1JFR0lTVEVSKTsKKwlyZWd2YWwgfD0gMTsKKwlz cHVfd3JpdGVfd2FpdCgpOworCXdyaXRlbChyZWd2YWwsIEFSTV9SRVNFVF9SRUdJU1RFUik7CisJ Zm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKKwkJc3B1X3dyaXRlX3dhaXQoKTsKKwkJcmVndmFs ID0gcmVhZGwoU1BVX1JFR0lTVEVSX0JBU0UgKyAoaSAqIDB4ODApKTsKKwkJcmVndmFsID0gKHJl Z3ZhbCAmIH4weDQwMDApIHwgMHg4MDAwOworCQlzcHVfd3JpdGVfd2FpdCgpOworCQl3cml0ZWwo cmVndmFsLCBTUFVfUkVHSVNURVJfQkFTRSArIChpICogMHg4MCkpOworCX0KK30KKworLyogc3B1 X2VuYWJsZSAtIHNldCBzcHUgcmVnaXN0ZXJzIHRvIGVuYWJsZSBzb3VuZCBvdXRwdXQgKi8KK3N0 YXRpYyB2b2lkIHNwdV9lbmFibGUodm9pZCkKK3sKKwl1MzIgcmVndmFsID0gcmVhZGwoQVJNX1JF U0VUX1JFR0lTVEVSKTsKKwlyZWd2YWwgJj0gfjE7CisJc3B1X3dyaXRlX3dhaXQoKTsKKwl3cml0 ZWwocmVndmFsLCBBUk1fUkVTRVRfUkVHSVNURVIpOworfQorCisvKiAKKyAqIEhhbHQgdGhlIHNv dW5kIHByb2Nlc3NvciwgY2xlYXIgdGhlIG1lbW9yeSwKKyAqIGxvYWQgc29tZSBkZWZhdWx0IEFS TTcgY29kZSwgYW5kIHRoZW4gcmVzdGFydCBBUk03CisqLworc3RhdGljIHZvaWQgc3B1X3Jlc2V0 KHZvaWQpCit7CisJc3B1X2Rpc2FibGUoKTsKKwlzcHVfbWVtc2V0KDAsIDAsIDB4MjAwMDAwIC8g NCk7CisJLyogUHV0IEFSTTcgaW4gZW5kbGVzcyBsb29wICovCisJY3RybF9vdXRsKDB4ZWEwMDAw MDIsIFNQVV9NRU1PUllfQkFTRSk7CisJc3B1X2VuYWJsZSgpOworfQorCisvKiBhaWNhX2Nobl9z dGFydCAtIHdyaXRlIHRvIHNwdSB0byBzdGFydCBwbGF5YmFjayAqLworc3RhdGljIHZvaWQgYWlj YV9jaG5fc3RhcnQodm9pZCkKK3sKKwlzcHVfd3JpdGVfd2FpdCgpOworCXdyaXRlbChBSUNBX0NN RF9LSUNLIHwgQUlDQV9DTURfU1RBUlQsICh1MzIgKikgQUlDQV9DT05UUk9MX1BPSU5UKTsKK30K KworLyogYWljYV9jaG5faGFsdCAtIHdyaXRlIHRvIHNwdSB0byBoYWx0IHBsYXliYWNrICovCitz dGF0aWMgdm9pZCBhaWNhX2Nobl9oYWx0KHZvaWQpCit7CisJc3B1X3dyaXRlX3dhaXQoKTsKKwl3 cml0ZWwoQUlDQV9DTURfS0lDSyB8IEFJQ0FfQ01EX1NUT1AsICh1MzIgKikgQUlDQV9DT05UUk9M X1BPSU5UKTsKK30KKworLyogQUxTQSBjb2RlIGJlbG93ICovCitzdGF0aWMgc3RydWN0IHNuZF9w Y21faGFyZHdhcmUgc25kX3BjbV9haWNhX3BsYXliYWNrX2h3ID0geworCS5pbmZvID0gKFNORFJW X1BDTV9JTkZPX05PTklOVEVSTEVBVkVEKSwKKwkuZm9ybWF0cyA9CisJICAgIChTTkRSVl9QQ01f Rk1UQklUX1M4IHwgU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfAorCSAgICAgU05EUlZfUENNX0ZN VEJJVF9JTUFfQURQQ00pLAorCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzgwMDBfNDgwMDAsCisJ LnJhdGVfbWluID0gODAwMCwKKwkucmF0ZV9tYXggPSA0ODAwMCwKKwkuY2hhbm5lbHNfbWluID0g MSwKKwkuY2hhbm5lbHNfbWF4ID0gMiwKKwkuYnVmZmVyX2J5dGVzX21heCA9IEFJQ0FfQlVGRkVS X1NJWkUsCisJLnBlcmlvZF9ieXRlc19taW4gPSBBSUNBX1BFUklPRF9TSVpFLAorCS5wZXJpb2Rf Ynl0ZXNfbWF4ID0gQUlDQV9QRVJJT0RfU0laRSwKKwkucGVyaW9kc19taW4gPSBBSUNBX1BFUklP RF9OVU1CRVIsCisJLnBlcmlvZHNfbWF4ID0gQUlDQV9QRVJJT0RfTlVNQkVSLAorfTsKKworc3Rh dGljIGludCBhaWNhX2RtYV90cmFuc2ZlcihpbnQgY2hhbm5lbHMsIGludCBidWZmZXJfc2l6ZSwK KwkJCSAgICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJaW50IHEs IGVyciwgcGVyaW9kX29mZnNldDsKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2Fy ZDsKKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lOworCWVyciA9IDA7CisJZHJlYW1j YXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7CisJcGVyaW9kX29mZnNldCA9 IGRyZWFtY2FzdGNhcmQtPmNsaWNrczsKKwlwZXJpb2Rfb2Zmc2V0ICU9IChBSUNBX1BFUklPRF9O VU1CRVIgLyBjaGFubmVscyk7CisJcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlmb3Ig KHEgPSAwOyBxIDwgY2hhbm5lbHM7IHErKykgeworCQllcnIgPSBkbWFfeGZlcihBSUNBX0RNQV9D SEFOTkVMLAorCQkJICAgICAgICh1bnNpZ25lZCBsb25nKShydW50aW1lLT5kbWFfYXJlYSArCisJ CQkJCSAgICAgICAoQUlDQV9CVUZGRVJfU0laRSAqIHEpIC8KKwkJCQkJICAgICAgIGNoYW5uZWxz ICsKKwkJCQkJICAgICAgIEFJQ0FfUEVSSU9EX1NJWkUgKgorCQkJCQkgICAgICAgcGVyaW9kX29m ZnNldCksCisJCQkgICAgICAgQUlDQV9DSEFOTkVMMF9PRkZTRVQgKyBxICogQ0hBTk5FTF9PRkZT RVQgKworCQkJICAgICAgIEFJQ0FfUEVSSU9EX1NJWkUgKiBwZXJpb2Rfb2Zmc2V0LAorCQkJICAg ICAgIGJ1ZmZlcl9zaXplIC8gY2hhbm5lbHMsIEFJQ0FfRE1BX01PREUpOworCQlpZiAodW5saWtl bHkoZXJyIDwgMCkpCisJCQlicmVhazsKKwkJZG1hX3dhaXRfZm9yX2NvbXBsZXRpb24oQUlDQV9E TUFfQ0hBTk5FTCk7CisJfQorCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIHN0YXJ0dXBf YWljYShzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZCkKK3sKKwlzcHVfbWVtbG9h ZChBSUNBX0NIQU5ORUwwX0NPTlRST0xfT0ZGU0VULAorCQkgICAgZHJlYW1jYXN0Y2FyZC0+Y2hh bm5lbCwKKwkJICAgIHNpemVvZihzdHJ1Y3QgYWljYV9jaGFubmVsKSk7CisJYWljYV9jaG5fc3Rh cnQoKTsKK30KKworc3RhdGljIHZvaWQgcnVuX3NwdV9kbWEoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQoreworCWludCBidWZmZXJfc2l6ZTsKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1 YnN0cmVhbTsKKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lOworCXN0cnVjdCBzbmRf Y2FyZF9haWNhICpkcmVhbWNhc3RjYXJkOworCXN0cnVjdCBzcHVfd29ya19ob2xkZXIgKmhvbGRl ciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgc3B1X3dvcmtfaG9sZGVyLCBzcHVfZG1hX3dv cmspOworCXN1YnN0cmVhbSA9IGhvbGRlci0+IHNzcG9pbnRlcjsKKwlkcmVhbWNhc3RjYXJkID0g c3Vic3RyZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwlydW50aW1lID0gc3Vic3RyZWFtLT5ydW50 aW1lOworCWlmICh1bmxpa2VseShkcmVhbWNhc3RjYXJkLT5kbWFfY2hlY2sgPT0gMCkpIHsKKwkJ YnVmZmVyX3NpemUgPSBmcmFtZXNfdG9fYnl0ZXMocnVudGltZSwgcnVudGltZS0+YnVmZmVyX3Np emUpOworCQlpZiAocnVudGltZS0+Y2hhbm5lbHMgPiAxKQorCQkJZHJlYW1jYXN0Y2FyZC0+Y2hh bm5lbC0+ZmxhZ3MgfD0gMHgwMTsKKwkJYWljYV9kbWFfdHJhbnNmZXIocnVudGltZS0+Y2hhbm5l bHMsIGJ1ZmZlcl9zaXplLCBzdWJzdHJlYW0pOworCQlzdGFydHVwX2FpY2EoZHJlYW1jYXN0Y2Fy ZCk7CisJCWRyZWFtY2FzdGNhcmQtPmNsaWNrcyA9CisJCSAgICBidWZmZXJfc2l6ZSAvIChBSUNB X1BFUklPRF9TSVpFICogcnVudGltZS0+Y2hhbm5lbHMpOworCQlyZXR1cm47CisJfSBlbHNlIHsK KwkJYWljYV9kbWFfdHJhbnNmZXIocnVudGltZS0+Y2hhbm5lbHMsCisJCQkJICBBSUNBX1BFUklP RF9TSVpFICogcnVudGltZS0+Y2hhbm5lbHMsCisJCQkJICBzdWJzdHJlYW0pOworCQlzbmRfcGNt X3BlcmlvZF9lbGFwc2VkKGRyZWFtY2FzdGNhcmQtPnN1YnN0cmVhbSk7CisJCWRyZWFtY2FzdGNh cmQtPmNsaWNrcysrOworCQlpZiAodW5saWtlbHkoZHJlYW1jYXN0Y2FyZC0+Y2xpY2tzID49IEFJ Q0FfUEVSSU9EX05VTUJFUikpCisJCXsKKwkJCWRyZWFtY2FzdGNhcmQtPmNsaWNrcyAlPSBBSUNB X1BFUklPRF9OVU1CRVI7CisJCX0KKwkJbW9kX3RpbWVyKCZkcmVhbWNhc3RjYXJkLT50aW1lciwg amlmZmllcyArIDEpOworCX0KK30KKworc3RhdGljIHZvaWQgYWljYV9wZXJpb2RfZWxhcHNlZCh1 bnNpZ25lZCBsb25nIHRpbWVyX3ZhcikKK3sKKwkvKnRpbWVyIGZ1bmN0aW9uIC0gc28gY2Fubm90 IHNsZWVwICovCisJaW50IHBsYXlfcGVyaW9kOworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1 bnRpbWU7CisJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CisJc3RydWN0IHNu ZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJc3Vic3RyZWFtID0gKHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqKXRpbWVyX3ZhcjsKKwlydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwor CWRyZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0ZV9kYXRhOworCS8qIEhhdmUg d2UgcGxheWVkIG91dCBhbiBhZGRpdGlvbmFsIHBlcmlvZD8gKi8KKwlwbGF5X3BlcmlvZCA9CisJ ICAgIGZyYW1lc190b19ieXRlcyhydW50aW1lLAorCQkJICAgIHJlYWRsCisJCQkgICAgKEFJQ0Ff Q09OVFJPTF9DSEFOTkVMX1NBTVBMRV9OVU1CRVIpKSAvCisJICAgIEFJQ0FfUEVSSU9EX1NJWkU7 CisJaWYgKHBsYXlfcGVyaW9kID09IGRyZWFtY2FzdGNhcmQtPmN1cnJlbnRfcGVyaW9kKSB7CisJ CS8qIHJlc2NoZWR1bGUgdGhlIHRpbWVyICovCisJCW1vZF90aW1lcigmKGRyZWFtY2FzdGNhcmQt PnRpbWVyKSwgamlmZmllcyArIDEpOworCQlyZXR1cm47CisJfQorCWlmIChydW50aW1lLT5jaGFu bmVscyA+IDEpCisJCWRyZWFtY2FzdGNhcmQtPmN1cnJlbnRfcGVyaW9kID0gcGxheV9wZXJpb2Q7 CisJaWYgKHVubGlrZWx5KGRyZWFtY2FzdGNhcmQtPmRtYV9jaGVjayA9PSAwKSkKKwkJZHJlYW1j YXN0Y2FyZC0+ZG1hX2NoZWNrID0gMTsKKwkJcXVldWVfd29yayhhaWNhX3F1ZXVlLCAmKHNwdV93 b3JraW5nLnNwdV9kbWFfd29yaykpOworfQorCitzdGF0aWMgdm9pZCBzcHVfYmVnaW5fZG1hKHN0 cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCS8qIE11c3QgYmUgYXRvbWlj ICovCisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJc3RydWN0IHNuZF9w Y21fcnVudGltZSAqcnVudGltZTsKKwlydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCWRy ZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0ZV9kYXRhOworCS8qICBVc2UgcXVl dWUgdG8gZG8gdGhlIGhlYXZ5IGxpZnRpbmcgKi8KKwlzcHVfd29ya2luZy5zc3BvaW50ZXIgPSBz dWJzdHJlYW07CisJSU5JVF9XT1JLKCYoc3B1X3dvcmtpbmcuc3B1X2RtYV93b3JrKSwgcnVuX3Nw dV9kbWEpOworCXF1ZXVlX3dvcmsoYWljYV9xdWV1ZSwgJihzcHVfd29ya2luZy5zcHVfZG1hX3dv cmspKTsKKwkvKiBUaW1lciBtYXkgYWxyZWFkeSBiZSBydW5uaW5nICovCisJaWYgKHVubGlrZWx5 KGRyZWFtY2FzdGNhcmQtPnRpbWVyLmRhdGEpKSB7CisJCW1vZF90aW1lcigmZHJlYW1jYXN0Y2Fy ZC0+dGltZXIsIGppZmZpZXMgKyA0KTsKKwkJcmV0dXJuOworCX0KKwlpbml0X3RpbWVyKCYoZHJl YW1jYXN0Y2FyZC0+dGltZXIpKTsKKwlkcmVhbWNhc3RjYXJkLT50aW1lci5kYXRhID0gKHVuc2ln bmVkIGxvbmcpc3Vic3RyZWFtOworCWRyZWFtY2FzdGNhcmQtPnRpbWVyLmZ1bmN0aW9uID0gYWlj YV9wZXJpb2RfZWxhcHNlZDsKKwlkcmVhbWNhc3RjYXJkLT50aW1lci5leHBpcmVzID0gamlmZmll cyArIDQ7CisJYWRkX3RpbWVyKCYoZHJlYW1jYXN0Y2FyZC0+dGltZXIpKTsKK30KKworc3RhdGlj IGludCBzbmRfYWljYXBjbV9wY21fb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0KKwkJCQkq c3Vic3RyZWFtKQoreworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWU7CisJc3RydWN0 IGFpY2FfY2hhbm5lbCAqY2hhbm5lbDsKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0 Y2FyZDsKKwlpZiAoIWVuYWJsZSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisJZHJlYW1jYXN0Y2FyZCA9 IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7CisJY2hhbm5lbCA9IGttYWxsb2Moc2l6ZW9m KHN0cnVjdCBhaWNhX2NoYW5uZWwpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNoYW5uZWwpCisJCXJl dHVybiAtRU5PTUVNOworCS8qIHNldCBkZWZhdWx0cyBmb3IgY2hhbm5lbCAqLworCWNoYW5uZWwt PnNmbXQgPSBTTV84QklUOworCWNoYW5uZWwtPmNtZCA9IEFJQ0FfQ01EX1NUQVJUOworCWNoYW5u ZWwtPnZvbCA9IGRyZWFtY2FzdGNhcmQtPm1hc3Rlcl92b2x1bWU7CisJY2hhbm5lbC0+cGFuID0g MHg4MDsKKwljaGFubmVsLT5wb3MgPSAwOworCWNoYW5uZWwtPmZsYWdzID0gMDsJLyogZGVmYXVs dCB0byBtb25vICovCisJZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbCA9IGNoYW5uZWw7CisJcnVudGlt ZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlydW50aW1lLT5odyA9IHNuZF9wY21fYWljYV9wbGF5 YmFja19odzsKKwlzcHVfZW5hYmxlKCk7CisJZHJlYW1jYXN0Y2FyZC0+Y2xpY2tzID0gMDsKKwlk cmVhbWNhc3RjYXJkLT5jdXJyZW50X3BlcmlvZCA9IDA7CisJZHJlYW1jYXN0Y2FyZC0+ZG1hX2No ZWNrID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzbmRfYWljYXBjbV9wY21fY2xv c2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJCQkJICpzdWJzdHJlYW0pCit7CisJc3RydWN0 IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0ZV9k YXRhOworCWRlbF90aW1lcigmZHJlYW1jYXN0Y2FyZC0+dGltZXIpOworCWtmcmVlKGRyZWFtY2Fz dGNhcmQtPmNoYW5uZWwpOworCXNwdV9kaXNhYmxlKCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgc25kX2FpY2FwY21fcGNtX2h3X2ZyZWUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJ CQkJICAgKnN1YnN0cmVhbSkKK3sKKwkvKiBGcmVlIHRoZSBETUEgYnVmZmVyICovCisJcmV0dXJu IHNuZF9wY21fbGliX2ZyZWVfcGFnZXMoc3Vic3RyZWFtKTsKK30KKworc3RhdGljIGludCBzbmRf YWljYXBjbV9wY21faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCSAgICAg KnN1YnN0cmVhbSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zCisJCQkJICAgICAqaHdfcGFyYW1z KQoreworCS8qIEFsbG9jYXRlIGEgRE1BIGJ1ZmZlciB1c2luZyBBTFNBIGJ1aWx0LWlucyAqLwor CXJldHVybgorCSAgICBzbmRfcGNtX2xpYl9tYWxsb2NfcGFnZXMoc3Vic3RyZWFtLCBwYXJhbXNf YnVmZmVyX2J5dGVzKGh3X3BhcmFtcykpOworfQorCitzdGF0aWMgaW50IHNuZF9haWNhcGNtX3Bj bV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCSAgICpzdWJzdHJlYW0pCit7 CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+ cHJpdmF0ZV9kYXRhOworCWlmICgoc3Vic3RyZWFtLT5ydW50aW1lKS0+Zm9ybWF0ID09IFNORFJW X1BDTV9GT1JNQVRfUzE2X0xFKQorCQlkcmVhbWNhc3RjYXJkLT5jaGFubmVsLT5zZm10ID0gU01f MTZCSVQ7CisJZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbC0+ZnJlcSA9IHN1YnN0cmVhbS0+cnVudGlt ZS0+cmF0ZTsKKwlkcmVhbWNhc3RjYXJkLT5zdWJzdHJlYW0gPSBzdWJzdHJlYW07CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc25kX2FpY2FwY21fcGNtX3RyaWdnZXIoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtCisJCQkJICAgKnN1YnN0cmVhbSwgaW50IGNtZCkKK3sKKwlzdHJ1Y3Qgc25k X2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU05EUlZf UENNX1RSSUdHRVJfU1RBUlQ6CisJCXNwdV9iZWdpbl9kbWEoc3Vic3RyZWFtKTsKKwkJYnJlYWs7 CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgorCQlkcmVhbWNhc3RjYXJkID0gc3Vic3Ry ZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwkJaWYgKGRyZWFtY2FzdGNhcmQtPnRpbWVyLmRhdGEp CisJCQlkZWxfdGltZXIoJmRyZWFtY2FzdGNhcmQtPnRpbWVyKTsKKwkJYWljYV9jaG5faGFsdCgp OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHNuZF9haWNhcGNtX3BjbV9wb2ludGVyKHN0cnVj dCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCQkgICAgICpzdWJzdHJlYW0pCit7CisJcmV0dXJuIHJl YWRsKEFJQ0FfQ09OVFJPTF9DSEFOTkVMX1NBTVBMRV9OVU1CRVIpOworfQorCitzdGF0aWMgc3Ry dWN0IHNuZF9wY21fb3BzIHNuZF9haWNhcGNtX3BsYXliYWNrX29wcyA9IHsKKwkub3BlbiA9IHNu ZF9haWNhcGNtX3BjbV9vcGVuLAorCS5jbG9zZSA9IHNuZF9haWNhcGNtX3BjbV9jbG9zZSwKKwku aW9jdGwgPSBzbmRfcGNtX2xpYl9pb2N0bCwKKwkuaHdfcGFyYW1zID0gc25kX2FpY2FwY21fcGNt X2h3X3BhcmFtcywKKwkuaHdfZnJlZSA9IHNuZF9haWNhcGNtX3BjbV9od19mcmVlLAorCS5wcmVw YXJlID0gc25kX2FpY2FwY21fcGNtX3ByZXBhcmUsCisJLnRyaWdnZXIgPSBzbmRfYWljYXBjbV9w Y21fdHJpZ2dlciwKKwkucG9pbnRlciA9IHNuZF9haWNhcGNtX3BjbV9wb2ludGVyLAorfTsKKwor LyogVE8gRE86IHNldCB1cCB0byBoYW5kbGUgbW9yZSB0aGFuIG9uZSBwY20gaW5zdGFuY2UgKi8K K3N0YXRpYyBpbnQgX19pbml0IHNuZF9haWNhcGNtY2hpcChzdHJ1Y3Qgc25kX2NhcmRfYWljYQor CQkJCSAgKmRyZWFtY2FzdGNhcmQsIGludCBwY21faW5kZXgpCit7CisJc3RydWN0IHNuZF9wY20g KnBjbTsKKwlpbnQgZXJyOworCS8qIEFJQ0EgaGFzIG5vIGNhcHR1cmUgYWJpbGl0eSAqLworCWVy ciA9CisJICAgIHNuZF9wY21fbmV3KGRyZWFtY2FzdGNhcmQtPmNhcmQsICJBSUNBIFBDTSIsIHBj bV9pbmRleCwgMSwgMCwgJnBjbSk7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQorCQlyZXR1cm4g ZXJyOworCXBjbS0+cHJpdmF0ZV9kYXRhID0gZHJlYW1jYXN0Y2FyZDsKKwlzdHJjcHkocGNtLT5u YW1lLCAiQUlDQSBQQ00iKTsKKwlzbmRfcGNtX3NldF9vcHMocGNtLCBTTkRSVl9QQ01fU1RSRUFN X1BMQVlCQUNLLAorCQkJJnNuZF9haWNhcGNtX3BsYXliYWNrX29wcyk7CisJLyogQWxsb2NhdGUg dGhlIERNQSBidWZmZXJzICovCisJZXJyID0KKwkgICAgc25kX3BjbV9saWJfcHJlYWxsb2NhdGVf cGFnZXNfZm9yX2FsbChwY20sCisJCQkJCQkgIFNORFJWX0RNQV9UWVBFX0NPTlRJTlVPVVMsCisJ CQkJCQkgIHNuZF9kbWFfY29udGludW91c19kYXRhCisJCQkJCQkgIChHRlBfS0VSTkVMKSwKKwkJ CQkJCSAgQUlDQV9CVUZGRVJfU0laRSwKKwkJCQkJCSAgQUlDQV9CVUZGRVJfU0laRSk7CisJcmV0 dXJuIGVycjsKK30KKworLyogTWl4ZXIgY29udHJvbHMgKi8KK3N0YXRpYyBpbnQgYWljYV9wY21z d2l0Y2hfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgICBzdHJ1 Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQoreworCXVpbmZvLT50eXBlID0gU05EUlZfQ1RM X0VMRU1fVFlQRV9CT09MRUFOOworCXVpbmZvLT5jb3VudCA9IDE7CisJdWluZm8tPnZhbHVlLmlu dGVnZXIubWluID0gMDsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5tYXggPSAxOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGFpY2FfcGNtc3dpdGNoX2dldChzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwKKwkJCSAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9s KQoreworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gMTsJLyogVE8gRE86IEZp eCBtZSAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFpY2FfcGNtc3dpdGNoX3B1dChz dHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgIHN0cnVjdCBzbmRfY3RsX2Vs ZW1fdmFsdWUgKnVjb250cm9sKQoreworCWlmICh1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1 ZVswXSA9PSAxKQorCQlyZXR1cm4gMDsJLyogVE8gRE86IEZpeCBtZSAqLworCWVsc2UKKwkJYWlj YV9jaG5faGFsdCgpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFpY2FfcGNtdm9sdW1l X2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkgICAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVN X1RZUEVfSU5URUdFUjsKKwl1aW5mby0+Y291bnQgPSAxOworCXVpbmZvLT52YWx1ZS5pbnRlZ2Vy Lm1pbiA9IDA7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gMHhGRjsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBhaWNhX3BjbXZvbHVtZV9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAq a2NvbnRyb2wsCisJCQkgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkK K3sKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlkcmVhbWNhc3RjYXJk ID0ga2NvbnRyb2wtPnByaXZhdGVfZGF0YTsKKwlpZiAodW5saWtlbHkoIWRyZWFtY2FzdGNhcmQt PmNoYW5uZWwpKQorCQlyZXR1cm4gLUVUWFRCU1k7CS8qIHdlJ3ZlIG5vdCB5ZXQgYmVlbiBzZXQg dXAgKi8KKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IGRyZWFtY2FzdGNhcmQt PmNoYW5uZWwtPnZvbDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhaWNhX3BjbXZvbHVt ZV9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkgICAgICBzdHJ1Y3Qgc25k X2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJl YW1jYXN0Y2FyZDsKKwlkcmVhbWNhc3RjYXJkID0ga2NvbnRyb2wtPnByaXZhdGVfZGF0YTsKKwlp ZiAodW5saWtlbHkoIWRyZWFtY2FzdGNhcmQtPmNoYW5uZWwpKQorCQlyZXR1cm4gLUVUWFRCU1k7 CisJaWYgKHVubGlrZWx5KGRyZWFtY2FzdGNhcmQtPmNoYW5uZWwtPnZvbCA9PQorCQkgICAgIHVj b250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdKSkKKwkJcmV0dXJuIDA7CisJZHJlYW1jYXN0 Y2FyZC0+Y2hhbm5lbC0+dm9sID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07CisJ ZHJlYW1jYXN0Y2FyZC0+bWFzdGVyX3ZvbHVtZSA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZh bHVlWzBdOworCXNwdV9tZW1sb2FkKEFJQ0FfQ0hBTk5FTDBfQ09OVFJPTF9PRkZTRVQsCisJCSAg ICBkcmVhbWNhc3RjYXJkLT5jaGFubmVsLAorCQkgICAgc2l6ZW9mKHN0cnVjdCBhaWNhX2NoYW5u ZWwpKTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcg c25kX2FpY2FfcGNtc3dpdGNoX2NvbnRyb2wgX19kZXZpbml0ZGF0YSA9IHsKKwkuaWZhY2UgPSBT TkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKKwkubmFtZSA9ICJQQ00gUGxheWJhY2sgU3dpdGNo IiwKKwkuaW5kZXggPSAwLAorCS5pbmZvID0gYWljYV9wY21zd2l0Y2hfaW5mbywKKwkuZ2V0ID0g YWljYV9wY21zd2l0Y2hfZ2V0LAorCS5wdXQgPSBhaWNhX3BjbXN3aXRjaF9wdXQKK307CisKK3N0 YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBzbmRfYWljYV9wY212b2x1bWVfY29udHJvbCBf X2RldmluaXRkYXRhID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAor CS5uYW1lID0gIlBDTSBQbGF5YmFjayBWb2x1bWUiLAorCS5pbmRleCA9IDAsCisJLmluZm8gPSBh aWNhX3BjbXZvbHVtZV9pbmZvLAorCS5nZXQgPSBhaWNhX3BjbXZvbHVtZV9nZXQsCisJLnB1dCA9 IGFpY2FfcGNtdm9sdW1lX3B1dAorfTsKKworc3RhdGljIGludCBsb2FkX2FpY2FfZmlybXdhcmUo dm9pZCkKK3sKKwlpbnQgZXJyOworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZndfZW50cnk7CisJ c3B1X3Jlc2V0KCk7CisJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZndfZW50cnksICJhaWNhX2Zp cm13YXJlLmJpbiIsICZwZC0+ZGV2KTsKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJcmV0dXJuIGVy cjsKKwkvKiB3cml0ZSBmaXJ3YXJlIGludG8gbWVtb3J5ICovCisJc3B1X2Rpc2FibGUoKTsKKwlz cHVfbWVtbG9hZCgwLCBmd19lbnRyeS0+ZGF0YSwgZndfZW50cnktPnNpemUpOworCXNwdV9lbmFi bGUoKTsKKwlyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgaW50IF9fZGV2aW5pdCBhZGRfYWljYW1peGVyX2NvbnRyb2xzKHN0cnVjdCBzbmRfY2Fy ZF9haWNhCisJCQkJCSAgICAqZHJlYW1jYXN0Y2FyZCkKK3sKKwlpbnQgZXJyOworCWVyciA9IHNu ZF9jdGxfYWRkCisJICAgIChkcmVhbWNhc3RjYXJkLT5jYXJkLAorCSAgICAgc25kX2N0bF9uZXcx KCZzbmRfYWljYV9wY212b2x1bWVfY29udHJvbCwgZHJlYW1jYXN0Y2FyZCkpOworCWlmICh1bmxp a2VseShlcnIgPCAwKSkKKwkJcmV0dXJuIGVycjsKKwllcnIgPSBzbmRfY3RsX2FkZAorCSAgICAo ZHJlYW1jYXN0Y2FyZC0+Y2FyZCwKKwkgICAgIHNuZF9jdGxfbmV3MSgmc25kX2FpY2FfcGNtc3dp dGNoX2NvbnRyb2wsIGRyZWFtY2FzdGNhcmQpKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJ CXJldHVybiBlcnI7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc25kX2FpY2FfcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldnB0cikKK3sKKwlzdHJ1Y3Qgc25kX2NhcmRfYWlj YSAqZHJlYW1jYXN0Y2FyZDsKKwlkcmVhbWNhc3RjYXJkID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo ZGV2cHRyKTsKKwlpZiAodW5saWtlbHkoIWRyZWFtY2FzdGNhcmQpKQorCQlyZXR1cm4gLUVOT0RF VjsKKwlzbmRfY2FyZF9mcmVlKGRyZWFtY2FzdGNhcmQtPmNhcmQpOworCWtmcmVlKGRyZWFtY2Fz dGNhcmQpOworCXBsYXRmb3JtX3NldF9kcnZkYXRhKGRldnB0ciwgTlVMTCk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IHNuZF9haWNhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKmRldnB0cikKK3sKKwlpbnQgZXJyOworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpkcmVh bWNhc3RjYXJkOworCWRyZWFtY2FzdGNhcmQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc25kX2Nh cmRfYWljYSksIEdGUF9LRVJORUwpOworCWlmICh1bmxpa2VseSghZHJlYW1jYXN0Y2FyZCkpCisJ CXJldHVybiAtRU5PTUVNOworCWRyZWFtY2FzdGNhcmQtPmNhcmQgPQorCSAgICBzbmRfY2FyZF9u ZXcoaW5kZXgsIFNORF9BSUNBX0RSSVZFUiwgVEhJU19NT0RVTEUsIDApOworCWlmICh1bmxpa2Vs eSghZHJlYW1jYXN0Y2FyZC0+Y2FyZCkpIHsKKwkJa2ZyZWUoZHJlYW1jYXN0Y2FyZCk7CisJCXJl dHVybiAtRU5PREVWOworCX0KKwlzdHJjcHkoZHJlYW1jYXN0Y2FyZC0+Y2FyZC0+ZHJpdmVyLCAi c25kX2FpY2EiKTsKKwlzdHJjcHkoZHJlYW1jYXN0Y2FyZC0+Y2FyZC0+c2hvcnRuYW1lLCBTTkRf QUlDQV9EUklWRVIpOworCXN0cmNweShkcmVhbWNhc3RjYXJkLT5jYXJkLT5sb25nbmFtZSwKKwkg ICAgICAgIllhbWFoYSBBSUNBIFN1cGVyIEludGVsbGlnZW50IFNvdW5kIFByb2Nlc3NvciBmb3Ig U0VHQSBEcmVhbWNhc3QiKTsKKwkvKiBMb2FkIHRoZSBQQ00gJ2NoaXAnICovCisJZXJyID0gc25k X2FpY2FwY21jaGlwKGRyZWFtY2FzdGNhcmQsIDApOworCWlmICh1bmxpa2VseShlcnIgPCAwKSkK KwkJZ290byBmcmVlZHJlYW1jYXN0OworCXNuZF9jYXJkX3NldF9kZXYoZHJlYW1jYXN0Y2FyZC0+ Y2FyZCwgJmRldnB0ci0+ZGV2KTsKKwlkcmVhbWNhc3RjYXJkLT50aW1lci5kYXRhID0gMDsKKwlk cmVhbWNhc3RjYXJkLT5jaGFubmVsID0gTlVMTDsKKwkvKiBBZGQgYmFzaWMgY29udHJvbHMgKi8K KwllcnIgPSBhZGRfYWljYW1peGVyX2NvbnRyb2xzKGRyZWFtY2FzdGNhcmQpOworCWlmICh1bmxp a2VseShlcnIgPCAwKSkKKwkJZ290byBmcmVlZHJlYW1jYXN0OworCS8qIFJlZ2lzdGVyIHRoZSBj YXJkIHdpdGggQUxTQSBzdWJzeXN0ZW0gKi8KKwllcnIgPSBzbmRfY2FyZF9yZWdpc3RlcihkcmVh bWNhc3RjYXJkLT5jYXJkKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCWdvdG8gZnJlZWRy ZWFtY2FzdDsKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShkZXZwdHIsIGRyZWFtY2FzdGNhcmQpOwor CWFpY2FfcXVldWUgPSBjcmVhdGVfd29ya3F1ZXVlKENBUkRfTkFNRSk7CisJaWYgKHVubGlrZWx5 KCFhaWNhX3F1ZXVlKSkKKwkJZ290byBmcmVlZHJlYW1jYXN0OworCXNuZF9wcmludGsKKwkgICAg KCJBTFNBIERyaXZlciBmb3IgWWFtYWhhIEFJQ0EgU3VwZXIgSW50ZWxsaWdlbnQgU291bmQgUHJv Y2Vzc29yXG4iKTsKKwlyZXR1cm4gMDsKKyAgICAgIGZyZWVkcmVhbWNhc3Q6CisJc25kX2NhcmRf ZnJlZShkcmVhbWNhc3RjYXJkLT5jYXJkKTsKKwlrZnJlZShkcmVhbWNhc3RjYXJkKTsKKwlyZXR1 cm4gZXJyOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzbmRfYWljYV9kcml2 ZXIgPSB7CisJLnByb2JlID0gc25kX2FpY2FfcHJvYmUsCisJLnJlbW92ZSA9IHNuZF9haWNhX3Jl bW92ZSwKKwkuZHJpdmVyID0geworCQkgICAubmFtZSA9IFNORF9BSUNBX0RSSVZFUn0sCit9Owor CitzdGF0aWMgaW50IF9faW5pdCBhaWNhX2luaXQodm9pZCkKK3sKKwlpbnQgZXJyOworCWVyciA9 IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmc25kX2FpY2FfZHJpdmVyKTsKKwlpZiAodW5saWtl bHkoZXJyIDwgMCkpCisJCXJldHVybiBlcnI7CisJcGQgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0 ZXJfc2ltcGxlKFNORF9BSUNBX0RSSVZFUiwgLTEsCisJCQkJCSAgICAgYWljYV9tZW1vcnlfc3Bh Y2UsIDIpOworCWlmICh1bmxpa2VseShJU19FUlIocGQpKSkgeworCQlwbGF0Zm9ybV9kcml2ZXJf dW5yZWdpc3Rlcigmc25kX2FpY2FfZHJpdmVyKTsKKwkJcmV0dXJuIFBUUl9FUlIocGQpOworCX0K KwkvKiBMb2FkIHRoZSBmaXJtd2FyZSAqLworCXJldHVybiBsb2FkX2FpY2FfZmlybXdhcmUoKTsK K30KKworc3RhdGljIHZvaWQgX19leGl0IGFpY2FfZXhpdCh2b2lkKQoreworCS8qIERlc3Ryb3kg dGhlIGFpY2Ega2VybmVsIHRocmVhZCAqLworCWRlc3Ryb3lfd29ya3F1ZXVlKGFpY2FfcXVldWUp OworCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBkKTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5y ZWdpc3Rlcigmc25kX2FpY2FfZHJpdmVyKTsKKwkvKiBLaWxsIGFueSBzb3VuZCBzdGlsbCBwbGF5 aW5nIGFuZCByZXNldCBBUk03IHRvIHNhZmUgc3RhdGUgKi8KKwlzcHVfcmVzZXQoKTsKK30KKwor bW9kdWxlX2luaXQoYWljYV9pbml0KTsKK21vZHVsZV9leGl0KGFpY2FfZXhpdCk7CmRpZmYgLU5h dXIgLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9haWNhLmggLi9saW51eC0yLjYuMjEvc291 bmQvc2gvYWljYS5oCi0tLSAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL3NoL2FpY2EuaAkxOTcw LTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgLi9saW51eC0yLjYuMjEvc291bmQv c2gvYWljYS5oCTIwMDctMDUtMDcgMjE6NDc6MzEuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEs ODAgQEAKKy8qIGFpY2EuaAorICogSGVhZGVyIGZpbGUgZm9yIEFMU0EgZHJpdmVyIGZvcgorICog U2VnYSBEcmVhbWNhc3QgWWFtYWhhIEFJQ0Egc291bmQKKyAqIENvcHlyaWdodCBBZHJpYW4gTWNN ZW5hbWluCisgKiA8YWRyaWFuQG1jbWVuLmRlbW9uLmNvLnVrPgorICogMjAwNgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw LCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqCisgKi8KKworLyogU1BVIG1lbW9yeSBh bmQgcmVnaXN0ZXIgY29uc3RhbnRzIGV0YyAqLworI2RlZmluZSBHMl9GSUZPIDB4YTA1ZjY4OGMK KyNkZWZpbmUgU1BVX01FTU9SWV9CQVNFIDB4QTA4MDAwMDAKKyNkZWZpbmUgQVJNX1JFU0VUX1JF R0lTVEVSIDB4QTA3MDJDMDAKKyNkZWZpbmUgU1BVX1JFR0lTVEVSX0JBU0UgMHhBMDcwMDAwMAor CisvKiBBSUNBIGNoYW5uZWxzIHN0dWZmICovCisjZGVmaW5lIEFJQ0FfQ09OVFJPTF9QT0lOVCAw eEEwODEwMDAwCisjZGVmaW5lIEFJQ0FfQ09OVFJPTF9DSEFOTkVMX1NBTVBMRV9OVU1CRVIgMHhB MDgxMDAwOAorI2RlZmluZSBBSUNBX0NIQU5ORUwwX0NPTlRST0xfT0ZGU0VUIDB4MTAwMDQKKwor LyogQ29tbWFuZCB2YWx1ZXMgKi8KKyNkZWZpbmUgQUlDQV9DTURfS0lDSyAweDgwMDAwMDAwCisj ZGVmaW5lIEFJQ0FfQ01EX05PTkUgMAorI2RlZmluZSBBSUNBX0NNRF9TVEFSVCAxCisjZGVmaW5l IEFJQ0FfQ01EX1NUT1AgMgorI2RlZmluZSBBSUNBX0NNRF9WT0wgMworCisvKiBTb3VuZCBtb2Rl cyAqLworI2RlZmluZSBTTV84QklUCQkxCisjZGVmaW5lIFNNXzE2QklUCTAKKyNkZWZpbmUgU01f QURQQ00JMgorCisvKiBCdWZmZXIgYW5kIHBlcmlvZCBzaXplICovCisjZGVmaW5lIEFJQ0FfQlVG RkVSX1NJWkUgMHg4MDAwCisjZGVmaW5lIEFJQ0FfUEVSSU9EX1NJWkUgMHg4MDAKKyNkZWZpbmUg QUlDQV9QRVJJT0RfTlVNQkVSIDE2CisKKyNkZWZpbmUgQUlDQV9DSEFOTkVMMF9PRkZTRVQgMHgx MTAwMAorI2RlZmluZSBBSUNBX0NIQU5ORUwxX09GRlNFVCAweDIxMDAwCisjZGVmaW5lIENIQU5O RUxfT0ZGU0VUIDB4MTAwMDAKKworI2RlZmluZSBBSUNBX0RNQV9DSEFOTkVMIDAKKyNkZWZpbmUg QUlDQV9ETUFfTU9ERSA1CisKKyNkZWZpbmUgU05EX0FJQ0FfRFJJVkVSICJBSUNBIgorCitzdHJ1 Y3QgYWljYV9jaGFubmVsIHsKKwl1aW50MzJfdCBjbWQ7CQkvKiBDb21tYW5kIElEICAgICAgICAg ICAqLworCXVpbnQzMl90IHBvczsJCS8qIFNhbXBsZSBwb3NpdGlvbiAgICAgICovCisJdWludDMy X3QgbGVuZ3RoOwkvKiBTYW1wbGUgbGVuZ3RoICAgICAgICAqLworCXVpbnQzMl90IGZyZXE7CQkv KiBGcmVxdWVuY3kgICAgICAgICAgICAqLworCXVpbnQzMl90IHZvbDsJCS8qIFZvbHVtZSAwLTI1 NSAgICAgICAgICovCisJdWludDMyX3QgcGFuOwkJLyogUGFuIDAtMjU1ICAgICAgICAgICAgKi8K Kwl1aW50MzJfdCBzZm10OwkJLyogU291bmQgZm9ybWF0ICAgICAgICAgKi8KKwl1aW50MzJfdCBm bGFnczsJCS8qIEJpdCBmbGFncyAgICAgICAgICAgICovCit9OworCitzdHJ1Y3Qgc25kX2NhcmRf YWljYSB7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkOworCXN0cnVjdCBhaWNhX2NoYW5uZWwgKmNo YW5uZWw7CisJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CisJaW50IGNsaWNr czsKKwlpbnQgY3VycmVudF9wZXJpb2Q7CisJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CisJaW50 IG1hc3Rlcl92b2x1bWU7CisJaW50IGRtYV9jaGVjazsKK307CmRpZmYgLU5hdXIgLi9saW51eC0y LjYuMjEtb3JpZy9zb3VuZC9zaC9LY29uZmlnIC4vbGludXgtMi42LjIxL3NvdW5kL3NoL0tjb25m aWcKLS0tIC4vbGludXgtMi42LjIxLW9yaWcvc291bmQvc2gvS2NvbmZpZwkxOTcwLTAxLTAxIDAx OjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgLi9saW51eC0yLjYuMjEvc291bmQvc2gvS2NvbmZp ZwkyMDA3LTA1LTA3IDIxOjI4OjMwLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDE0IEBACisj IEFMU0EgU0ggZHJpdmVycworCittZW51ICJTVVBFUkggZGV2aWNlcyIKKwlkZXBlbmRzIG9uIFNO RCE9biAmJiBTVVBFUkgKKworY29uZmlnIFNORF9BSUNBCisJdHJpc3RhdGUgIkRyZWFtY2FzdCBZ YW1haGEgQUlDQSBzb3VuZCIKKwlkZXBlbmRzIG9uIFNIX0RSRUFNQ0FTVCAmJiBTTkQKKwlzZWxl Y3QgU05EX1BDTQorCWhlbHAKKwkgIEFMU0EgU291bmQgZHJpdmVyIGZvciB0aGUgU0VHQSBEcmVh bWNhc3QgY29uc29sZS4KKworZW5kbWVudQorCmRpZmYgLU5hdXIgLi9saW51eC0yLjYuMjEtb3Jp Zy9zb3VuZC9zaC9NYWtlZmlsZSAuL2xpbnV4LTIuNi4yMS9zb3VuZC9zaC9NYWtlZmlsZQotLS0g Li9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9NYWtlZmlsZQkxOTcwLTAxLTAxIDAxOjAwOjAw LjAwMDAwMDAwMCArMDEwMAorKysgLi9saW51eC0yLjYuMjEvc291bmQvc2gvTWFrZWZpbGUJMjAw Ny0wNS0wNyAyMTozNDoxMC4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw4IEBACisjCisjIE1h a2VmaWxlIGZvciBBTFNBCisjCisKK3NuZC1haWNhLW9ianMgOj0gYWljYS5vCisKKyMgVG9wbGV2 ZWwgTW9kdWxlIERlcGVuZGVuY3kKK29iai0kKENPTkZJR19TTkRfQUlDQSkgKz0gc25kLWFpY2Eu bwo= ------=_Part_13117_9915617.1179266282045 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 ------=_Part_13117_9915617.1179266282045--