From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from relay7-d.mail.gandi.net ([217.70.183.200]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l6JBO-0004CW-Nl for barebox@lists.infradead.org; Sun, 31 Jan 2021 20:18:57 +0000 Received: from geraet.fritz.box (unknown [87.123.110.69]) (Authenticated sender: ahmad@a3f.at) by relay7-d.mail.gandi.net (Postfix) with ESMTPSA id 32B6F20007 for ; Sun, 31 Jan 2021 20:18:53 +0000 (UTC) From: Ahmad Fatoum Date: Sun, 31 Jan 2021 21:18:42 +0100 Message-Id: <20210131201846.3440477-4-ahmad@a3f.at> In-Reply-To: <20210131201846.3440477-1-ahmad@a3f.at> References: <20210131201846.3440477-1-ahmad@a3f.at> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 3/7] sound: add basic synthesizers for PCM beeper use To: barebox@lists.infradead.org Rm9yIGJlZXBpbmcgb24gUENNIHNvdW5kIGNhcmRzLCBiYXJlYm94IHdpbGwgbmVlZCB0byBzeW50 aGVzaXplIHNhbXBsZXMuCkFkZCBiYXNpYyBzaW5lIGFuZCBzcXVhcmUgd2F2ZSBzeW50aGVzaXpl cnMgdG8gYWNoaWV2ZSB0aGlzLgoKQ2xpZW50IGNvZGUgY2FuIGVpdGhlciBjYWxsIF9fc3ludGhf RiB0byBleHBsaWNpdGx5IHNlbGVjdCBzeW50aCBGIG9yCnN5bnRoX0YsIHdoaWNoIGRlcGVuZGlu ZyBvbiBDT05GSUdfU1lOVEhfU1FVQVJFUyBtYXkgZXhwYW5kIHRvIGVpdGhlcgpfX3N5bnRoX0Yg b3IgYSBnYWluLWFkanVzdGVkIF9fc3ludGhfZ2VuZXJhdGVfc3F1YXJlLgoKVGhlIGxhdHRlciBp cyBtYWlubHkgdXNlZnVsIGZvciBzbG93IHN5c3RlbXMgdGhhdCBjYW4ndCBzeW50aGVzaXplCmVu b3VnaCBzaW5lIHNhbXBsZXMgaW4gYSBwb2xsZXIgd2l0aG91dCBpbXBhY3RpbmcgYm9vdCBwZXJm b3JtYW5jZS4KClNpZ25lZC1vZmYtYnk6IEFobWFkIEZhdG91bSA8YWhtYWRAYTNmLmF0PgotLS0K IGRyaXZlcnMvc291bmQvS2NvbmZpZyAgICAgIHwgIDEzICsrKysKIGRyaXZlcnMvc291bmQvTWFr ZWZpbGUgICAgIHwgICAyICstCiBkcml2ZXJzL3NvdW5kL3N5bnRoLmMgICAgICB8ICA0MyArKysr KysrKysrKwogaW5jbHVkZS9saW51eC9maXhwLWFyaXRoLmggfCAxNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9zb3VuZC5oICAgICAgICAgICAgfCAgMzIg KysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb3VuZC9zeW50aC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgaW5jbHVkZS9saW51eC9maXhwLWFyaXRoLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJz L3NvdW5kL0tjb25maWcgYi9kcml2ZXJzL3NvdW5kL0tjb25maWcKaW5kZXggY2NlNWM3NjBhZmRj Li5kOWY2M2E1ZjNjNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc291bmQvS2NvbmZpZworKysgYi9k cml2ZXJzL3NvdW5kL0tjb25maWcKQEAgLTYsMyArNiwxNiBAQCBtZW51Y29uZmlnIFNPVU5ECiAJ ICBTYXkgWSBoZXJlIGZvciBzb3VuZCBzdXBwb3J0LiBBdCB0aGUgbW9tZW50IHRoYXQncyBqdXN0 IGJlZXAgdG9uZXMuCiAJICBUb25lcyBhcmUgcGxheWVkIGFzeW5jaHJvbm91c2x5IGluIGEgcG9s bGVyLiBDaGVjayB0aGUgYmVlcCBjb21tYW5kCiAJICBmb3IgaG93IHRvIGV4ZXJjaXNlIHRoZSBB UEkuCisKK2lmIFNPVU5ECisKK2NvbmZpZyBTWU5USF9TUVVBUkVTCisJYm9vbCAiU3ludGhlc2l6 ZSBzcXVhcmUgd2F2ZXMgb25seSIKKwloZWxwCisJICBGb3IgYmVlcGluZyBvbiBQQ00gc291bmQg Y2FyZHMsIGJhcmVib3ggbmVlZHMgdG8gc3ludGhlc2l6ZSBzYW1wbGVzLAorCSAgd2hpY2ggY2Fu IHRha2UgdG9vIG11Y2ggcG9sbGVyIHRpbWUgZm9yIGNyaXNwIHBsYXliYWNrIGFuZC9vciBxdWlj aworCSAgYm9vdGluZy4gSWYgeW91ciBwbGF5YmFjayBzdHV0dGVycywgc2F5IFkgaGVyZS4gVGhp cyB3aWxsIGhhdmUgYWxsCisJICBzeW50aGVzaXplcnMgb3V0cHV0IGEgZ2Fpbi1hZGp1c3RlZCBz cXVhcmUgd2F2ZSBpbnN0ZWFkLCB3aGljaCBpcworCSAgbGVzcyB0aW1lLWNvbnN1bWluZyB0byBj b21wdXRlLgorCitlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb3VuZC9NYWtlZmlsZSBiL2Ry aXZlcnMvc291bmQvTWFrZWZpbGUKaW5kZXggZTM0M2UwZmE3MmIwLi42OTg3M2ZhYWI5ODUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc291bmQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9zb3VuZC9NYWtl ZmlsZQpAQCAtMSwyICsxLDIgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seQotb2JqLXkgKz0gY29yZS5vCitvYmoteSArPSBjb3JlLm8gc3ludGgubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zb3VuZC9zeW50aC5jIGIvZHJpdmVycy9zb3VuZC9zeW50aC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzlkZTYyYjUxNjg0Ci0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9zb3VuZC9zeW50aC5jCkBAIC0wLDAgKzEsNDMgQEAKKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw MTIgU2Ftc3VuZyBFbGVjdHJvbmljcywgUi4gQ2hhbmRyYXNla2FyIDxyY3Nla2FyQHNhbXN1bmcu Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFobWFkIEZhdG91bQorICovCisKKyNpbmNsdWRl IDxjb21tb24uaD4KKyNpbmNsdWRlIDxsaW51eC9maXhwLWFyaXRoLmg+CisjaW5jbHVkZSA8bGlu dXgvbWF0aDY0Lmg+CisjaW5jbHVkZSA8c291bmQuaD4KKwordm9pZCBfX3N5bnRoX3Npbih1bnNp Z25lZCBmcmVxLCBzMTYgYW1wbGl0dWRlLCBzMTYgKnN0cmVhbSwKKwkJIHVuc2lnbmVkIHNhbXBs ZV9yYXRlLCB1bnNpZ25lZCBuc2FtcGxlcykKK3sKKyAgICBpbnQ2NF90IHYgPSAwOworICAgIGlu dCBpID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuc2FtcGxlczsgaSsrKSB7CisJICAgIC8q IEFzc3VtZSBSSFMgc2lnbiBleHRlbnNpb24sIHRydWUgZm9yIEdDQyAqLworCSAgICBzdHJlYW1b aV0gPSAoZml4cF9zaW4zMihkaXZfczY0KHYgKiAzNjAsIHNhbXBsZV9yYXRlKSkgKiAoaW50NjRf dClhbXBsaXR1ZGUpID4+IDMxOworCSAgICB2ICs9IGZyZXE7CisgICAgfQorfQorCit2b2lkIF9f c3ludGhfc3F1YXJlKHVuc2lnbmVkIGZyZXEsIHMxNiBhbXBsaXR1ZGUsIHMxNiAqc3RyZWFtLAor CQkgICAgdW5zaWduZWQgc2FtcGxlX3JhdGUsIHVuc2lnbmVkIG5zYW1wbGVzKQoreworCXVuc2ln bmVkIHBlcmlvZCA9IGZyZXEgPyBzYW1wbGVfcmF0ZSAvIGZyZXEgOiAwOworCWludCBoYWxmID0g cGVyaW9kIC8gMjsKKworCXdoaWxlIChuc2FtcGxlcykgeworCQlpbnQgaTsKKworCQlmb3IgKGkg PSAwOyBuc2FtcGxlcyAmJiBpIDwgaGFsZjsgaSsrKSB7CisJCQluc2FtcGxlcy0tOworCQkJKnN0 cmVhbSsrID0gYW1wbGl0dWRlOworCQl9CisJCWZvciAoaSA9IDA7IG5zYW1wbGVzICYmIGkgPCBw ZXJpb2QgLSBoYWxmOyBpKyspIHsKKwkJCW5zYW1wbGVzLS07CisJCQkqc3RyZWFtKysgPSAtYW1w bGl0dWRlOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maXhwLWFyaXRo LmggYi9pbmNsdWRlL2xpbnV4L2ZpeHAtYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjgzOTYwMTM3ODVlZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv bGludXgvZml4cC1hcml0aC5oCkBAIC0wLDAgKzEsMTQ0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLworI2lmbmRlZiBfRklYUF9BUklUSF9ICisjZGVm aW5lIF9GSVhQX0FSSVRIX0gKKworI2luY2x1ZGUgPGxpbnV4L21hdGg2NC5oPgorCisvKgorICog U2ltcGxpc3RpYyBmaXhlZC1wb2ludCBhcml0aG1ldGljcy4KKyAqIEhtbSwgSSdtIHByb2JhYmx5 IGR1cGxpY2F0aW5nIHNvbWUgY29kZSA6KAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKb2hh bm4gRGVuZXV4CisgKi8KKworLyoKKyAqCisgKiBTaG91bGQgeW91IG5lZWQgdG8gY29udGFjdCBt ZSwgdGhlIGF1dGhvciwgeW91IGNhbiBkbyBzbyBieQorICogZS1tYWlsIC0gbWFpbCB5b3VyIG1l c3NhZ2UgdG8gPGpvaGFubi5kZW5ldXhAZ21haWwuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgorCitzdGF0aWMgY29uc3QgczMyIHNpbl90YWJsZVtdID0geworCTB4MDAwMDAw MDAsIDB4MDIzYmUxNjUsIDB4MDQ3Nzk2MzIsIDB4MDZiMmYxZDIsIDB4MDhlZGM3YjYsIDB4MGIy N2ViNWMsCisJMHgwZDYxMzA0ZCwgMHgwZjk5NmEyNiwgMHgxMWQwNmM5NiwgMHgxNDA2MGI2Nywg MHgxNjNhMWE3ZCwgMHgxODZjNmRkZCwKKwkweDFhOWNkOWFjLCAweDFjY2IzMjM2LCAweDFlZjc0 YmYyLCAweDIxMjBmYjgyLCAweDIzNDgxNWJhLCAweDI1NmM2ZjllLAorCTB4Mjc4ZGRlNmUsIDB4 MjlhYzM3OWYsIDB4MmJjNzUwZTgsIDB4MmRkZjAwM2YsIDB4MmZmMzFiZGQsIDB4MzIwMzdhNDQs CisJMHgzNDBmZjI0MSwgMHgzNjE4NWFlZSwgMHgzODFjOGJiNSwgMHgzYTFjNWM1NiwgMHgzYzE3 YTRlNywgMHgzZTBlM2RkYiwKKwkweDNmZmZmZmZmLCAweDQxZWNjNDgzLCAweDQzZDQ2NGZhLCAw eDQ1YjZiYjVkLCAweDQ3OTNhMjBmLCAweDQ5NmFmM2UxLAorCTB4NGIzYzhjMTEsIDB4NGQwODQ2 NTAsIDB4NGVjZGZlYzYsIDB4NTA4ZDkyMTAsIDB4NTI0NmRkNDgsIDB4NTNmOWJlMDQsCisJMHg1 NWE2MTI1YSwgMHg1NzRiYjhlNSwgMHg1OGVhOTBjMiwgMHg1YTgyNzk5OSwgMHg1YzEzNTM5OSwg MHg1ZDljZmY4MiwKKwkweDVmMWY1ZWEwLCAweDYwOWE1MmQxLCAweDYyMGRiZThhLCAweDYzNzk4 NGQzLCAweDY0ZGQ4OTRmLCAweDY2MzliMDM5LAorCTB4Njc4ZGRlNmQsIDB4NjhkOWY5NjMsIDB4 NmExZGU3MzUsIDB4NmI1OThlYTEsIDB4NmM4Y2Q3MGEsIDB4NmRiN2E4NzksCisJMHg2ZWQ5ZWJh MCwgMHg2ZmYzODlkZSwgMHg3MTA0NmQzYywgMHg3MjBjODA3NCwgMHg3MzBiYWVlYywgMHg3NDAx ZTRiZiwKKwkweDc0ZWYwZWJiLCAweDc1ZDMxYTVmLCAweDc2YWRmNWU1LCAweDc3N2Y5MDNiLCAw eDc4NDdkOTA4LCAweDc5MDZjMGFmLAorCTB4NzliYzM4NGMsIDB4N2E2ODMxYjgsIDB4N2IwYTlm OGMsIDB4N2JhMzc1MWMsIDB4N2MzMmE2N2MsIDB4N2NiODI4ODQsCisJMHg3ZDMzZjBjOCwgMHg3 ZGE1ZjVhMywgMHg3ZTBlMmUzMSwgMHg3ZTZjOTI0ZiwgMHg3ZWMxMWFhMywgMHg3ZjBiYzA5NSwK KwkweDdmNGM3ZTUyLCAweDdmODM0ZWNmLCAweDdmYjAyZGM0LCAweDdmZDMxN2IzLCAweDdmZWMw OWUxLCAweDdmZmIwMjVlLAorCTB4N2ZmZmZmZmYKK307CisKKy8qKgorICogX19maXhwX3NpbjMy KCkgcmV0dXJucyB0aGUgc2luIG9mIGFuIGFuZ2xlIGluIGRlZ3JlZXMKKyAqCisgKiBAZGVncmVl czogYW5nbGUsIGluIGRlZ3JlZXMsIGZyb20gMCB0byAzNjAuCisgKgorICogVGhlIHJldHVybmVk IHZhbHVlIHJhbmdlcyBmcm9tIC0weDdmZmZmZmZmIHRvICsweDdmZmZmZmZmLgorICovCitzdGF0 aWMgaW5saW5lIHMzMiBfX2ZpeHBfc2luMzIoaW50IGRlZ3JlZXMpCit7CisJczMyIHJldDsKKwli b29sIG5lZ2F0aXZlID0gZmFsc2U7CisKKwlpZiAoZGVncmVlcyA+IDE4MCkgeworCQluZWdhdGl2 ZSA9IHRydWU7CisJCWRlZ3JlZXMgLT0gMTgwOworCX0KKwlpZiAoZGVncmVlcyA+IDkwKQorCQlk ZWdyZWVzID0gMTgwIC0gZGVncmVlczsKKworCXJldCA9IHNpbl90YWJsZVtkZWdyZWVzXTsKKwor CXJldHVybiBuZWdhdGl2ZSA/IC1yZXQgOiByZXQ7Cit9CisKKy8qKgorICogZml4cF9zaW4zMigp IHJldHVybnMgdGhlIHNpbiBvZiBhbiBhbmdsZSBpbiBkZWdyZWVzCisgKgorICogQGRlZ3JlZXM6 IGFuZ2xlLCBpbiBkZWdyZWVzLiBUaGUgYW5nbGUgY2FuIGJlIHBvc2l0aXZlIG9yIG5lZ2F0aXZl CisgKgorICogVGhlIHJldHVybmVkIHZhbHVlIHJhbmdlcyBmcm9tIC0weDdmZmZmZmZmIHRvICsw eDdmZmZmZmZmLgorICovCitzdGF0aWMgaW5saW5lIHMzMiBmaXhwX3NpbjMyKGludCBkZWdyZWVz KQoreworCWRlZ3JlZXMgPSAoZGVncmVlcyAlIDM2MCArIDM2MCkgJSAzNjA7CisKKwlyZXR1cm4g X19maXhwX3NpbjMyKGRlZ3JlZXMpOworfQorCisvKiBjb3MoeCkgPSBzaW4oeCArIDkwIGRlZ3Jl ZXMpICovCisjZGVmaW5lIGZpeHBfY29zMzIodikgZml4cF9zaW4zMigodikgKyA5MCkKKworLyoK KyAqIDE2IGJpdHMgdmFyaWFudHMKKyAqCisgKiBUaGUgcmV0dXJuZWQgdmFsdWUgcmFuZ2VzIGZy b20gLTB4N2ZmZiB0byAweDdmZmYKKyAqLworCisjZGVmaW5lIGZpeHBfc2luMTYodikgKGZpeHBf c2luMzIodikgPj4gMTYpCisjZGVmaW5lIGZpeHBfY29zMTYodikgKGZpeHBfY29zMzIodikgPj4g MTYpCisKKy8qKgorICogZml4cF9zaW4zMl9yYWQoKSAtIGNhbGN1bGF0ZXMgdGhlIHNpbiBvZiBh biBhbmdsZSBpbiByYWRpYW5zCisgKgorICogQHJhZGlhbnM6IGFuZ2xlLCBpbiByYWRpYW5zCisg KiBAdHdvcGk6IHZhbHVlIHRvIGJlIHVzZWQgZm9yIDIqcGkKKyAqCisgKiBQcm92aWRlcyBhIHZh cmlhbnQgZm9yIHRoZSBjYXNlcyB3aGVyZSBqdXN0IDM2MAorICogdmFsdWVzIGlzIG5vdCBlbm91 Z2guIFRoaXMgZnVuY3Rpb24gdXNlcyBsaW5lYXIKKyAqIGludGVycG9sYXRpb24gdG8gYSB3aWRl ciByYW5nZSBvZiB2YWx1ZXMgZ2l2ZW4gYnkKKyAqIHR3b3BpIHZhci4KKyAqCisgKiBFeHBlcmlt ZW50YWwgdGVzdHMgZ2F2ZSBhIG1heGltdW0gZGlmZmVyZW5jZSBvZgorICogMC4wMDAwMzggYmV0 d2VlbiB0aGUgdmFsdWUgY2FsY3VsYXRlZCBieSBzaW4oKSBhbmQKKyAqIHRoZSBvbmUgcHJvZHVj ZWQgYnkgdGhpcyBmdW5jdGlvbiwgd2hlbiB0d29waSBpcworICogZXF1YWwgdG8gMzYwMDAwLiBU aGF0IHNlZW1zIHRvIGJlIGVub3VnaCBwcmVjaXNpb24KKyAqIGZvciBwcmFjdGljYWwgcHVycG9z ZXMuCisgKgorICogUGxlYXNlIG5vdGljZSB0aGF0IHR3byBoaWdoIG51bWJlcnMgZm9yIHR3b3Bp IGNvdWxkIGNhdXNlCisgKiBvdmVyZmxvd3MsIHNvIHRoZSByb3V0aW5lIHdpbGwgbm90IGFsbG93 IHZhbHVlcyBvZiB0d29waQorICogYmlnZ2VyIHRoYW4gMV4xOC4KKyAqLworc3RhdGljIGlubGlu ZSBzMzIgZml4cF9zaW4zMl9yYWQodTMyIHJhZGlhbnMsIHUzMiB0d29waSkKK3sKKwlpbnQgZGVn cmVlczsKKwlzMzIgdjEsIHYyLCBkeCwgZHk7CisJczY0IHRtcDsKKworCS8qCisJICogQXZvaWQg dG9vIGxhcmdlIHZhbHVlcyBmb3IgdHdvcGksIGFzIHdlIGRvbid0IHdhbnQgb3ZlcmZsb3dzLgor CSAqLworCUJVR19PTih0d29waSA+IDEgPDwgMTgpOworCisJZGVncmVlcyA9IChyYWRpYW5zICog MzYwKSAvIHR3b3BpOworCXRtcCA9IHJhZGlhbnMgLSAoZGVncmVlcyAqIHR3b3BpKSAvIDM2MDsK KworCWRlZ3JlZXMgPSAoZGVncmVlcyAlIDM2MCArIDM2MCkgJSAzNjA7CisJdjEgPSBfX2ZpeHBf c2luMzIoZGVncmVlcyk7CisKKwl2MiA9IGZpeHBfc2luMzIoZGVncmVlcyArIDEpOworCisJZHgg PSB0d29waSAvIDM2MDsKKwlkeSA9IHYyIC0gdjE7CisKKwl0bXAgKj0gZHk7CisKKwlyZXR1cm4g djEgKyAgZGl2X3M2NCh0bXAsIGR4KTsKK30KKworLyogY29zKHgpID0gc2luKHggKyBwaS8yIHJh ZGlhbnMpICovCisKKyNkZWZpbmUgZml4cF9jb3MzMl9yYWQocmFkLCB0d29waSkJXAorCWZpeHBf c2luMzJfcmFkKHJhZCArIHR3b3BpIC8gNCwgdHdvcGkpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9zb3VuZC5oIGIvaW5jbHVkZS9zb3VuZC5oCmluZGV4IGY1MTI0YWViYmRhMS4uNjJm ZWYxMDZlZTczIDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kLmgKKysrIGIvaW5jbHVkZS9zb3Vu ZC5oCkBAIC00Miw0ICs0MiwzNiBAQCBzdGF0aWMgaW5saW5lIGludCBiZWVwX2NhbmNlbCh2b2lk KQogCXJldHVybiBzb3VuZF9jYXJkX2JlZXBfY2FuY2VsKHNvdW5kX2NhcmRfZ2V0X2RlZmF1bHQo KSk7CiB9CiAKKworLyoKKyAqIFN5bnRoZXNpemVycyBhbGwgaGF2ZSB0aGUgc2FtZSBwcm90b3R5 cGUsIGJ1dCB0aGVpciBpbXBsZW1lbnRhdGlvbgorICogaXMgcmVwbGFjZWQgd2l0aCBhIGdhaW4t YWRqdXN0ZWQgc3F1YXJlIHdhdmUgaWYgQ09ORklHX1NZTlRIX1NRVUFSRVM9eS4KKyAqIFRoaXMg aXMgdG8gc3VwcG9ydCBQQ00gYmVlcGluZyBvbiBzeXN0ZW1zLCB3aGVyZSBzaW5lIGdlbmVyYXRp b24gbWF5CisgKiBzcGVuZCB0byBtdWNoIHRpbWUgaW4gdGhlIHBvbGxlci4KKyAqLwordHlwZWRl ZiB2b2lkIHN5bnRoX3QodW5zaWduZWQgZnJlcSwgczE2IGFtcGxpdHVkZSwgczE2ICpzdHJlYW0s CisJCSAgICAgdW5zaWduZWQgc2FtcGxlX3JhdGUsIHVuc2lnbmVkIG5zYW1wbGVzKTsKKworI2lm ZGVmIENPTkZJR19TWU5USF9TUVVBUkVTCisjZGVmaW5lIFNZTlRIKGZuLCB2b2x1bWVfcGVyY2Vu dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzdGF0aWMgaW5saW5lIHZvaWQg Zm4odW5zaWduZWQgZiwgczE2IGFtcGxpdHVkZSwgczE2ICpzLCBcCisJCQkgICAgICB1bnNpZ25l ZCByLCB1bnNpZ25lZCBuKSB7ICAgICAgICAgIFwKKwkJc3ludGhfdCBfX3N5bnRoX3NxdWFyZTsg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJYW1wbGl0dWRlID0gYW1wbGl0dWRlICogdm9s dW1lX3BlcmNlbnQgLyAxMDA7ICAgIFwKKwkJX19zeW50aF9zcXVhcmUoZiwgYW1wbGl0dWRlLCBz LCByLCBuKTsgICAgICAgICAgIFwKKwl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisJc3ludGhfdCBfXyMjZm4KKyNlbHNlCisjZGVmaW5l IFNZTlRIKGZuLCB2b2x1bWVfcGVyY2VudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKwlzdGF0aWMgaW5saW5lIHZvaWQgZm4odW5zaWduZWQgZiwgczE2IGEsIHMxNiAqcywgICAg ICAgICBcCisJCQkgICAgICB1bnNpZ25lZCByLCB1bnNpZ25lZCBuKSB7ICAgICAgICAgIFwKKwkJ c3ludGhfdCBfXyMjZm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJX18j I2ZuKGYsIGEsIHMsIHIsIG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIHN5bnRoX3QgX18jI2ZuCisjZW5kaWYKKworU1lOVEgoc3ludGhfc3F1YXJlLCAxMDApOwkv KiBzcXVhcmUgd2F2ZSBhbHdheXMgaGFzIGZ1bGwgYW1wbGl0dWRlICovCitTWU5USChzeW50aF9z aW4sIDY0KTsJCS8qIOKIq+KCgMK5IHNpbijPgHgpIGR4IOKJiCA2NCUgKi8KKwogI2VuZGlmCi0t IAoyLjMwLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpiYXJlYm94IG1haWxpbmcgbGlzdApiYXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iYXJlYm94Cg==