From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Louis Bossart Subject: [RFC PATCH 2/5] ALSA: x86: intel_hdmi: add definitions and logic for DP audio Date: Thu, 26 Jan 2017 14:05:38 -0600 Message-ID: <1485461141-14023-3-git-send-email-pierre-louis.bossart@linux.intel.com> References: <1485461141-14023-1-git-send-email-pierre-louis.bossart@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 956F76EC4C for ; Thu, 26 Jan 2017 20:06:06 +0000 (UTC) In-Reply-To: <1485461141-14023-1-git-send-email-pierre-louis.bossart@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: alsa-devel@alsa-project.org, intel-gfx@lists.freedesktop.org Cc: tiwai@suse.de, Daniel Vetter , broonie@kernel.org List-Id: intel-gfx@lists.freedesktop.org SW1wb3J0ZWQgZnJvbSBsZWdhY3kgcGF0Y2hlcwoKTm90ZTogdGhlIG5ldyBjb2RlIGRvZXNuJ3Qg YXNzdW1lIGEgbW9kaWZpZWQgRUxEIGJ1dAphbiBleHBsaWNpdCBub3RpZmljYXRpb24gdGhhdCBE UCBpcyBwcmVzZW50LiBJdCBhcHBlYXJzCnRoYXQgdGhlIGk5MTUgY29kZSBkb2VzIGNoYW5nZSB0 aGUgRUxEIHNvIHdlIGNvdWxkIHVzZQp0aGUgRUxELWJhc2VkIHRlc3RzIHRvIGNoZWNrIGZvciBE UCBhdWRpbwoKU2lnbmVkLW9mZi1ieTogUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vp cy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBzb3VuZC94ODYvaW50ZWxfaGRtaV9hdWRp by5jICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHNv dW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmggICAgIHwgICA4ICstCiBzb3VuZC94ODYvaW50ZWxf aGRtaV9scGVfYXVkaW8uYyB8ICAzNiArKysrKysrLQogc291bmQveDg2L2ludGVsX2hkbWlfbHBl X2F1ZGlvLmggfCAgMjkgKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygr KSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291bmQveDg2L2ludGVsX2hkbWlfYXVk aW8uYyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmMKaW5kZXggZjMwMTU1NC4uNDE1NWIz OCAxMDA2NDQKLS0tIGEvc291bmQveDg2L2ludGVsX2hkbWlfYXVkaW8uYworKysgYi9zb3VuZC94 ODYvaW50ZWxfaGRtaV9hdWRpby5jCkBAIC01NDgsNiArNTQ4LDcgQEAgdm9pZCBoYWRfYnVpbGRf Y2hhbm5lbF9hbGxvY2F0aW9uX21hcChzdHJ1Y3Qgc25kX2ludGVsaGFkICppbnRlbGhhZGRhdGEp CiAJfQogCiAJaGFkX2dldF9jYXBzKEhBRF9HRVRfRUxELCAmaW50ZWxoYWRkYXRhLT5lZWxkKTsK KwloYWRfZ2V0X2NhcHMoSEFEX0dFVF9EUF9PVVRQVVQsICZpbnRlbGhhZGRhdGEtPmRwX291dHB1 dCk7CiAKIAlwcl9kZWJ1ZygiZWVsZC5zcGVha2VyX2FsbG9jYXRpb25fYmxvY2sgPSAleFxuIiwK IAkJCWludGVsaGFkZGF0YS0+ZWVsZC5zcGVha2VyX2FsbG9jYXRpb25fYmxvY2spOwpAQCAtNjg1 LDcgKzY4Niw3IEBAIHN0YXRpYyB2b2lkIHNuZF9pbnRlbGhhZF9wcm9nX2RpcF92MShzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAogCS8qQ2FsY3VsdGUgdGhlIGJ5dGUgd2lk ZSBjaGVja3N1bSBmb3IgYWxsIHZhbGlkIERJUCB3b3JkcyovCiAJZm9yIChpID0gMDsgaSA8IEJZ VEVTX1BFUl9XT1JEOyBpKyspCi0JCWNoZWNrc3VtICs9IChJTkZPX0ZSQU1FX1dPUkQxID4+IGkq QklUU19QRVJfQllURSkgJiBNQVNLX0JZVEUwOworCQljaGVja3N1bSArPSAoSERNSV9JTkZPX0ZS QU1FX1dPUkQxID4+IGkqQklUU19QRVJfQllURSkgJiBNQVNLX0JZVEUwOwogCWZvciAoaSA9IDA7 IGkgPCBCWVRFU19QRVJfV09SRDsgaSsrKQogCQljaGVja3N1bSArPSAoZnJhbWUyLmZyMl92YWwg Pj4gaSpCSVRTX1BFUl9CWVRFKSAmIE1BU0tfQllURTA7CiAJZm9yIChpID0gMDsgaSA8IEJZVEVT X1BFUl9XT1JEOyBpKyspCkBAIC02OTMsNyArNjk0LDcgQEAgc3RhdGljIHZvaWQgc25kX2ludGVs aGFkX3Byb2dfZGlwX3YxKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCiAJ ZnJhbWUyLmZyMl9yZWd4LmNoa3N1bSA9IC0oY2hlY2tzdW0pOwogCi0JaGFkX3dyaXRlX3JlZ2lz dGVyKEFVRF9IRE1JV19JTkZPRlIsIElORk9fRlJBTUVfV09SRDEpOworCWhhZF93cml0ZV9yZWdp c3RlcihBVURfSERNSVdfSU5GT0ZSLCBIRE1JX0lORk9fRlJBTUVfV09SRDEpOwogCWhhZF93cml0 ZV9yZWdpc3RlcihBVURfSERNSVdfSU5GT0ZSLCBmcmFtZTIuZnIyX3ZhbCk7CiAJaGFkX3dyaXRl X3JlZ2lzdGVyKEFVRF9IRE1JV19JTkZPRlIsIGZyYW1lMy5mcjNfdmFsKTsKIApAQCAtNzIyLDI4 ICs3MjMsMzUgQEAgc3RhdGljIHZvaWQgc25kX2ludGVsaGFkX3Byb2dfZGlwX3YyKHN0cnVjdCBz bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCXVuaW9uIGF1ZF9pbmZvX2ZyYW1lMiBmcmFt ZTIgPSB7LmZyMl92YWwgPSAwfTsKIAl1bmlvbiBhdWRfaW5mb19mcmFtZTMgZnJhbWUzID0gey5m cjNfdmFsID0gMH07CiAJdTggY2hlY2tzdW0gPSAwOworCXUzMiBpbmZvX2ZyYW1lOwogCWludCBj aGFubmVsczsKIAogCWNoYW5uZWxzID0gc3Vic3RyZWFtLT5ydW50aW1lLT5jaGFubmVsczsKIAog CWhhZF93cml0ZV9yZWdpc3RlcihBVURfQ05UTF9TVCwgY3RybF9zdGF0ZS5jdHJsX3ZhbCk7CiAK LQlmcmFtZTIuZnIyX3JlZ3guY2hubF9jbnQgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPmNoYW5uZWxz IC0gMTsKKwlpZiAoaW50ZWxoYWRkYXRhLT5kcF9vdXRwdXQpIHsKKwkJaW5mb19mcmFtZSA9IERQ X0lORk9fRlJBTUVfV09SRDE7CisJCWZyYW1lMi5mcjJfdmFsID0gMTsKKwl9IGVsc2UgeworCQlp bmZvX2ZyYW1lID0gSERNSV9JTkZPX0ZSQU1FX1dPUkQxOworCQlmcmFtZTIuZnIyX3JlZ3guY2hu bF9jbnQgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPmNoYW5uZWxzIC0gMTsKIAotCWZyYW1lMy5mcjNf cmVneC5jaG5sX2FsbG9jID0gc25kX2ludGVsaGFkX2NoYW5uZWxfYWxsb2NhdGlvbigKLQkJCQkJ aW50ZWxoYWRkYXRhLCBjaGFubmVscyk7CisJCWZyYW1lMy5mcjNfcmVneC5jaG5sX2FsbG9jID0g c25kX2ludGVsaGFkX2NoYW5uZWxfYWxsb2NhdGlvbigKKwkJCWludGVsaGFkZGF0YSwgY2hhbm5l bHMpOwogCi0JLypDYWxjdWx0ZSB0aGUgYnl0ZSB3aWRlIGNoZWNrc3VtIGZvciBhbGwgdmFsaWQg RElQIHdvcmRzKi8KLQlmb3IgKGkgPSAwOyBpIDwgQllURVNfUEVSX1dPUkQ7IGkrKykKLQkJY2hl Y2tzdW0gKz0gKElORk9fRlJBTUVfV09SRDEgPj4gaSpCSVRTX1BFUl9CWVRFKSAmIE1BU0tfQllU RTA7Ci0JZm9yIChpID0gMDsgaSA8IEJZVEVTX1BFUl9XT1JEOyBpKyspCi0JCWNoZWNrc3VtICs9 IChmcmFtZTIuZnIyX3ZhbCA+PiBpKkJJVFNfUEVSX0JZVEUpICYgTUFTS19CWVRFMDsKLQlmb3Ig KGkgPSAwOyBpIDwgQllURVNfUEVSX1dPUkQ7IGkrKykKLQkJY2hlY2tzdW0gKz0gKGZyYW1lMy5m cjNfdmFsID4+IGkqQklUU19QRVJfQllURSkgJiBNQVNLX0JZVEUwOworCQkvKkNhbGN1bHRlIHRo ZSBieXRlIHdpZGUgY2hlY2tzdW0gZm9yIGFsbCB2YWxpZCBESVAgd29yZHMqLworCQlmb3IgKGkg PSAwOyBpIDwgQllURVNfUEVSX1dPUkQ7IGkrKykKKwkJCWNoZWNrc3VtICs9IChpbmZvX2ZyYW1l ID4+IGkqQklUU19QRVJfQllURSkgJiBNQVNLX0JZVEUwOworCQlmb3IgKGkgPSAwOyBpIDwgQllU RVNfUEVSX1dPUkQ7IGkrKykKKwkJCWNoZWNrc3VtICs9IChmcmFtZTIuZnIyX3ZhbCA+PiBpKkJJ VFNfUEVSX0JZVEUpICYgTUFTS19CWVRFMDsKKwkJZm9yIChpID0gMDsgaSA8IEJZVEVTX1BFUl9X T1JEOyBpKyspCisJCQljaGVja3N1bSArPSAoZnJhbWUzLmZyM192YWwgPj4gaSpCSVRTX1BFUl9C WVRFKSAmIE1BU0tfQllURTA7CiAKLQlmcmFtZTIuZnIyX3JlZ3guY2hrc3VtID0gLShjaGVja3N1 bSk7CisJCWZyYW1lMi5mcjJfcmVneC5jaGtzdW0gPSAtKGNoZWNrc3VtKTsKKwl9CiAKLQloYWRf d3JpdGVfcmVnaXN0ZXIoQVVEX0hETUlXX0lORk9GUl92MiwgSU5GT19GUkFNRV9XT1JEMSk7CisJ aGFkX3dyaXRlX3JlZ2lzdGVyKEFVRF9IRE1JV19JTkZPRlJfdjIsIGluZm9fZnJhbWUpOwogCWhh ZF93cml0ZV9yZWdpc3RlcihBVURfSERNSVdfSU5GT0ZSX3YyLCBmcmFtZTIuZnIyX3ZhbCk7CiAJ aGFkX3dyaXRlX3JlZ2lzdGVyKEFVRF9IRE1JV19JTkZPRlJfdjIsIGZyYW1lMy5mcjNfdmFsKTsK IApAQCAtODM5LDYgKzg0Nyw4NSBAQCBpbnQgc25kX2ludGVsaGFkX3JlYWRfbGVuKHN0cnVjdCBz bmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YSkKIAlyZXR1cm4gcmV0dmFsOwogfQogCitzdGF0aWMg aW50IGhhZF9jYWxjdWxhdGVfbWF1ZF92YWx1ZSh1MzIgYXVkX3NhbXBfZnJlcSwgdTMyIGxpbmtf cmF0ZSkKK3sKKwl1MzIgbWF1ZF92YWw7CisKKwkvKiBTZWxlY3QgbWF1ZCBhY2NvcmRpbmcgdG8g RFAgMS4yIHNwZWMqLworCWlmIChsaW5rX3JhdGUgPT0gRFBfMl83X0dIWikgeworCQlzd2l0Y2gg KGF1ZF9zYW1wX2ZyZXEpIHsKKwkJY2FzZSBBVURfU0FNUExFX1JBVEVfMzI6CisJCQltYXVkX3Zh bCA9IEFVRF9TQU1QTEVfUkFURV8zMl9EUF8yXzdfTUFVRF9WQUw7CisJCQlicmVhazsKKworCQlj YXNlIEFVRF9TQU1QTEVfUkFURV80NF8xOgorCQkJbWF1ZF92YWwgPSBBVURfU0FNUExFX1JBVEVf NDRfMV9EUF8yXzdfTUFVRF9WQUw7CisJCQlicmVhazsKKworCQljYXNlIEFVRF9TQU1QTEVfUkFU RV80ODoKKwkJCW1hdWRfdmFsID0gQVVEX1NBTVBMRV9SQVRFXzQ4X0RQXzJfN19NQVVEX1ZBTDsK KwkJCWJyZWFrOworCisJCWNhc2UgQVVEX1NBTVBMRV9SQVRFXzg4XzI6CisJCQltYXVkX3ZhbCA9 IEFVRF9TQU1QTEVfUkFURV84OF8yX0RQXzJfN19NQVVEX1ZBTDsKKwkJCWJyZWFrOworCisJCWNh c2UgQVVEX1NBTVBMRV9SQVRFXzk2OgorCQkJbWF1ZF92YWwgPSBBVURfU0FNUExFX1JBVEVfOTZf RFBfMl83X01BVURfVkFMOworCQkJYnJlYWs7CisKKwkJY2FzZSBBVURfU0FNUExFX1JBVEVfMTc2 XzQ6CisJCQltYXVkX3ZhbCA9IEFVRF9TQU1QTEVfUkFURV8xNzZfNF9EUF8yXzdfTUFVRF9WQUw7 CisJCQlicmVhazsKKworCQljYXNlIEhBRF9NQVhfUkFURToKKwkJCW1hdWRfdmFsID0gSEFEX01B WF9SQVRFX0RQXzJfN19NQVVEX1ZBTDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQltYXVk X3ZhbCA9IC1FSU5WQUw7CisJCQlicmVhazsKKwkJfQorCX0gZWxzZSBpZiAobGlua19yYXRlID09 IERQXzFfNjJfR0haKSB7CisJCXN3aXRjaCAoYXVkX3NhbXBfZnJlcSkgeworCQljYXNlIEFVRF9T QU1QTEVfUkFURV8zMjoKKwkJCW1hdWRfdmFsID0gQVVEX1NBTVBMRV9SQVRFXzMyX0RQXzFfNjJf TUFVRF9WQUw7CisJCQlicmVhazsKKworCQljYXNlIEFVRF9TQU1QTEVfUkFURV80NF8xOgorCQkJ bWF1ZF92YWwgPSBBVURfU0FNUExFX1JBVEVfNDRfMV9EUF8xXzYyX01BVURfVkFMOworCQkJYnJl YWs7CisKKwkJY2FzZSBBVURfU0FNUExFX1JBVEVfNDg6CisJCQltYXVkX3ZhbCA9IEFVRF9TQU1Q TEVfUkFURV80OF9EUF8xXzYyX01BVURfVkFMOworCQkJYnJlYWs7CisKKwkJY2FzZSBBVURfU0FN UExFX1JBVEVfODhfMjoKKwkJCW1hdWRfdmFsID0gQVVEX1NBTVBMRV9SQVRFXzg4XzJfRFBfMV82 Ml9NQVVEX1ZBTDsKKwkJCWJyZWFrOworCisJCWNhc2UgQVVEX1NBTVBMRV9SQVRFXzk2OgorCQkJ bWF1ZF92YWwgPSBBVURfU0FNUExFX1JBVEVfOTZfRFBfMV82Ml9NQVVEX1ZBTDsKKwkJCWJyZWFr OworCisJCWNhc2UgQVVEX1NBTVBMRV9SQVRFXzE3Nl80OgorCQkJbWF1ZF92YWwgPSBBVURfU0FN UExFX1JBVEVfMTc2XzRfRFBfMV82Ml9NQVVEX1ZBTDsKKwkJCWJyZWFrOworCisJCWNhc2UgSEFE X01BWF9SQVRFOgorCQkJbWF1ZF92YWwgPSBIQURfTUFYX1JBVEVfRFBfMV82Ml9NQVVEX1ZBTDsK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQltYXVkX3ZhbCA9IC1FSU5WQUw7CisJCQlicmVh azsKKwkJfQorCX0gZWxzZQorCQltYXVkX3ZhbCA9IC1FSU5WQUw7CisKKwlyZXR1cm4gbWF1ZF92 YWw7Cit9CisKIC8qKgogICogc25kX2ludGVsaGFkX3Byb2dfY3RzX3YxIC0gUHJvZ3JhbSBIRE1J IGF1ZGlvIENUUyB2YWx1ZQogICoKQEAgLTg0OSw4ICs5MzYsOSBAQCBpbnQgc25kX2ludGVsaGFk X3JlYWRfbGVuKHN0cnVjdCBzbmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YSkKICAqCiAgKiBQcm9n cmFtIENUUyByZWdpc3RlciBiYXNlZCBvbiB0aGUgYXVkaW8gYW5kIGRpc3BsYXkgc2FtcGxpbmcg ZnJlcXVlbmN5CiAgKi8KLXN0YXRpYyB2b2lkIHNuZF9pbnRlbGhhZF9wcm9nX2N0c192MSh1MzIg YXVkX3NhbXBfZnJlcSwgdTMyIHRtZHMsIHUzMiBuX3BhcmFtLAotCQkJCXN0cnVjdCBzbmRfaW50 ZWxoYWQgKmludGVsaGFkZGF0YSkKK3N0YXRpYyB2b2lkIHNuZF9pbnRlbGhhZF9wcm9nX2N0c192 MSh1MzIgYXVkX3NhbXBfZnJlcSwgdTMyIHRtZHMsCisJCQkJICAgICB1MzIgbGlua19yYXRlLCB1 MzIgbl9wYXJhbSwKKwkJCQkgICAgIHN0cnVjdCBzbmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YSkK IHsKIAl1MzIgY3RzX3ZhbDsKIAl1NjQgZGl2aWRlbmQsIGRpdmlzb3I7CkBAIC04NzQsMTggKzk2 MiwyNCBAQCBzdGF0aWMgdm9pZCBzbmRfaW50ZWxoYWRfcHJvZ19jdHNfdjEodTMyIGF1ZF9zYW1w X2ZyZXEsIHUzMiB0bWRzLCB1MzIgbl9wYXJhbSwKICAqCiAgKiBQcm9ncmFtIENUUyByZWdpc3Rl ciBiYXNlZCBvbiB0aGUgYXVkaW8gYW5kIGRpc3BsYXkgc2FtcGxpbmcgZnJlcXVlbmN5CiAgKi8K LXN0YXRpYyB2b2lkIHNuZF9pbnRlbGhhZF9wcm9nX2N0c192Mih1MzIgYXVkX3NhbXBfZnJlcSwg dTMyIHRtZHMsIHUzMiBuX3BhcmFtLAotCQkJCXN0cnVjdCBzbmRfaW50ZWxoYWQgKmludGVsaGFk ZGF0YSkKK3N0YXRpYyB2b2lkIHNuZF9pbnRlbGhhZF9wcm9nX2N0c192Mih1MzIgYXVkX3NhbXBf ZnJlcSwgdTMyIHRtZHMsCisJCQkJICAgICB1MzIgbGlua19yYXRlLCB1MzIgbl9wYXJhbSwKKwkJ CQkgICAgIHN0cnVjdCBzbmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YSkKIHsKIAl1MzIgY3RzX3Zh bDsKIAl1NjQgZGl2aWRlbmQsIGRpdmlzb3I7CiAKLQkvKiBDYWxjdWxhdGUgQ1RTIGFjY29yZGlu ZyB0byBIRE1JIDEuM2Egc3BlYyovCi0JZGl2aWRlbmQgPSAodTY0KXRtZHMgKiBuX3BhcmFtKjEw MDA7Ci0JZGl2aXNvciA9IDEyOCAqIGF1ZF9zYW1wX2ZyZXE7Ci0JY3RzX3ZhbCA9IGRpdjY0X3U2 NChkaXZpZGVuZCwgZGl2aXNvcik7CisJaWYgKGludGVsaGFkZGF0YS0+ZHBfb3V0cHV0KSB7CisJ CS8qIFN1YnN0aXR1dGUgY3RzX3ZhbCB3aXRoIE1hdWQgYWNjb3JkaW5nIHRvIERQIDEuMiBzcGVj Ki8KKwkJY3RzX3ZhbCA9IGhhZF9jYWxjdWxhdGVfbWF1ZF92YWx1ZShhdWRfc2FtcF9mcmVxLCBs aW5rX3JhdGUpOworCX0gZWxzZSB7CisJCS8qIENhbGN1bGF0ZSBDVFMgYWNjb3JkaW5nIHRvIEhE TUkgMS4zYSBzcGVjKi8KKwkJZGl2aWRlbmQgPSAodTY0KXRtZHMgKiBuX3BhcmFtKjEwMDA7CisJ CWRpdmlzb3IgPSAxMjggKiBhdWRfc2FtcF9mcmVxOworCQljdHNfdmFsID0gZGl2NjRfdTY0KGRp dmlkZW5kLCBkaXZpc29yKTsKKwl9CiAJcHJfZGVidWcoIlRNRFMgdmFsdWU9JWQsIE4gdmFsdWU9 JWQsIENUUyBWYWx1ZT0lZFxuIiwKLQkJCXRtZHMsIG5fcGFyYW0sIGN0c192YWwpOworCQkgdG1k cywgbl9wYXJhbSwgY3RzX3ZhbCk7CiAJaGFkX3dyaXRlX3JlZ2lzdGVyKEFVRF9IRE1JX0NUUywg KEJJVCgyNCkgfCBjdHNfdmFsKSk7CiB9CiAKQEAgLTk3MCw3ICsxMDY0LDE5IEBAIHN0YXRpYyBp bnQgc25kX2ludGVsaGFkX3Byb2dfbl92Mih1MzIgYXVkX3NhbXBfZnJlcSwgdTMyICpuX3BhcmFt LAogewogCXMzMiBuX3ZhbDsKIAotCW5fdmFsID0JaGFkX2NhbGN1bGF0ZV9uX3ZhbHVlKGF1ZF9z YW1wX2ZyZXEpOworCWlmIChpbnRlbGhhZGRhdGEtPmRwX291dHB1dCkgeworCQkvKgorCQkgKiBB Y2NvcmRpbmcgdG8gRFAgc3BlY3MsIE1hdWQgYW5kIE5hdWQgdmFsdWVzIGhvbGQKKwkJICogYSBy ZWxhdGlvbnNoaXAsIHdoaWNoIGlzIHN0YXRlZCBhczoKKwkJICogTWF1ZC9OYXVkID0gNTEyICog ZnMgLyBmX0xTX0NsaworCQkgKiB3aGVyZSwgZnMgaXMgdGhlIHNhbXBsaW5nIGZyZXF1ZW5jeSBv ZiB0aGUgYXVkaW8gc3RyZWFtCisJCSAqIGFuZCBOYXVkIGlzIDMyNzY4IGZvciBBc3luYyBjbG9j ay4KKwkJKi8KKworCQluX3ZhbCA9IERQX05BVURfVkFMOworCX0KKwllbHNlCisJCW5fdmFsID0J aGFkX2NhbGN1bGF0ZV9uX3ZhbHVlKGF1ZF9zYW1wX2ZyZXEpOwogCiAJaWYgKG5fdmFsIDwgMCkK IAkJcmV0dXJuIG5fdmFsOwpAQCAtMTM0Myw2ICsxNDQ5LDcgQEAgc3RhdGljIGludCBzbmRfaW50 ZWxoYWRfcGNtX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7 CiAJaW50IHJldHZhbDsKIAl1MzIgZGlzcF9zYW1wX2ZyZXEsIG5fcGFyYW07CisJdTMyIGxpbmtf cmF0ZSA9IDA7CiAJc3RydWN0IHNuZF9pbnRlbGhhZCAqaW50ZWxoYWRkYXRhOwogCXN0cnVjdCBz bmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWU7CiAJc3RydWN0IGhhZF9wdnRfZGF0YSAqaGFkX3N0cmVh bTsKQEAgLTEzODcsNiArMTQ5NCw3IEBAIHN0YXRpYyBpbnQgc25kX2ludGVsaGFkX3BjbV9wcmVw YXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCX0KIAogCWhhZF9nZXRf Y2FwcyhIQURfR0VUX0VMRCwgJmludGVsaGFkZGF0YS0+ZWVsZCk7CisJaGFkX2dldF9jYXBzKEhB RF9HRVRfRFBfT1VUUFVULCAmaW50ZWxoYWRkYXRhLT5kcF9vdXRwdXQpOwogCiAJcmV0dmFsID0g aW50ZWxoYWRkYXRhLT5vcHMtPnByb2dfbihzdWJzdHJlYW0tPnJ1bnRpbWUtPnJhdGUsICZuX3Bh cmFtLAogCQkJCQkJCQlpbnRlbGhhZGRhdGEpOwpAQCAtMTM5NCw4ICsxNTAyLDE0IEBAIHN0YXRp YyBpbnQgc25kX2ludGVsaGFkX3BjbV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAq c3Vic3RyZWFtKQogCQlwcl9lcnIoInByb2dyYW1taW5nIE4gdmFsdWUgZmFpbGVkICUjeFxuIiwg cmV0dmFsKTsKIAkJZ290byBwcmVwX2VuZDsKIAl9CisKKwlpZiAoaW50ZWxoYWRkYXRhLT5kcF9v dXRwdXQpCisJCWhhZF9nZXRfY2FwcyhIQURfR0VUX0xJTktfUkFURSwgJmxpbmtfcmF0ZSk7CisK KwogCWludGVsaGFkZGF0YS0+b3BzLT5wcm9nX2N0cyhzdWJzdHJlYW0tPnJ1bnRpbWUtPnJhdGUs Ci0JCQkJCWRpc3Bfc2FtcF9mcmVxLCBuX3BhcmFtLCBpbnRlbGhhZGRhdGEpOworCQkJCSAgICBk aXNwX3NhbXBfZnJlcSwgbGlua19yYXRlLAorCQkJCSAgICBuX3BhcmFtLCBpbnRlbGhhZGRhdGEp OwogCiAJaW50ZWxoYWRkYXRhLT5vcHMtPnByb2dfZGlwKHN1YnN0cmVhbSwgaW50ZWxoYWRkYXRh KTsKIApAQCAtMTUwMyw2ICsxNjE3LDcgQEAgaW50IGhkbWlfYXVkaW9fbW9kZV9jaGFuZ2Uoc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CiAJaW50IHJldHZhbCA9IDA7CiAJ dTMyIGRpc3Bfc2FtcF9mcmVxLCBuX3BhcmFtOworCXUzMiBsaW5rX3JhdGUgPSAwOwogCXN0cnVj dCBzbmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YTsKIAogCWludGVsaGFkZGF0YSA9IHNuZF9wY21f c3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKQEAgLTE1MjMsOCArMTYzOCwxMyBAQCBpbnQgaGRt aV9hdWRpb19tb2RlX2NoYW5nZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkK IAkJcHJfZXJyKCJwcm9ncmFtbWluZyBOIHZhbHVlIGZhaWxlZCAlI3hcbiIsIHJldHZhbCk7CiAJ CWdvdG8gb3V0OwogCX0KKworCWlmIChpbnRlbGhhZGRhdGEtPmRwX291dHB1dCkKKwkJaGFkX2dl dF9jYXBzKEhBRF9HRVRfTElOS19SQVRFLCAmbGlua19yYXRlKTsKKwogCWludGVsaGFkZGF0YS0+ b3BzLT5wcm9nX2N0cyhzdWJzdHJlYW0tPnJ1bnRpbWUtPnJhdGUsCi0JCQkJCWRpc3Bfc2FtcF9m cmVxLCBuX3BhcmFtLCBpbnRlbGhhZGRhdGEpOworCQkJCSAgICBkaXNwX3NhbXBfZnJlcSwgbGlu a19yYXRlLAorCQkJCSAgICBuX3BhcmFtLCBpbnRlbGhhZGRhdGEpOwogCiAJLyogRW5hYmxlIEF1 ZGlvICovCiAJaW50ZWxoYWRkYXRhLT5vcHMtPmVuYWJsZV9hdWRpbyhzdWJzdHJlYW0sIDEpOwpk aWZmIC0tZ2l0IGEvc291bmQveDg2L2ludGVsX2hkbWlfYXVkaW8uaCBiL3NvdW5kL3g4Ni9pbnRl bF9oZG1pX2F1ZGlvLmgKaW5kZXggZDIwMTVlYy4uMDM0YjM4NyAxMDA2NDQKLS0tIGEvc291bmQv eDg2L2ludGVsX2hkbWlfYXVkaW8uaAorKysgYi9zb3VuZC94ODYvaW50ZWxfaGRtaV9hdWRpby5o CkBAIC00NCw3ICs0NCw4IEBACiAjZGVmaW5lIE1BWF9DQVBfU1RSRUFNUwkJMAogI2RlZmluZSBI RE1JX0FVRElPX0RSSVZFUgkiaGRtaS1hdWRpbyIKIAotI2RlZmluZSBJTkZPX0ZSQU1FX1dPUkQx CTB4MDAwYTAxODQKKyNkZWZpbmUgSERNSV9JTkZPX0ZSQU1FX1dPUkQxCTB4MDAwYTAxODQKKyNk ZWZpbmUgRFBfSU5GT19GUkFNRV9XT1JEMQkweDAwNDQxYjg0CiAjZGVmaW5lIEZJRk9fVEhSRVNI T0xECQkweEZFCiAjZGVmaW5lIERNQV9GSUZPX1RIUkVTSE9MRAkweDcKICNkZWZpbmUgQllURVNf UEVSX1dPUkQJCTB4NApAQCAtMTM0LDYgKzEzNSw3IEBAIHN0cnVjdCBzbmRfaW50ZWxoYWQgewog CXN0cnVjdAkJcmluZ19idWZfaW5mbyBidWZfaW5mb1tIQURfTlVNX09GX1JJTkdfQlVGU107CiAJ c3RydWN0CQlwY21fc3RyZWFtX2luZm8gc3RyZWFtX2luZm87CiAJdW5pb24gb3RtX2hkbWlfZWxk X3QJZWVsZDsKKwlib29sIGRwX291dHB1dDsKIAllbnVtCQlpbnRlbF9oYWRfYXVkX2J1Zl90eXBl IGN1cnJfYnVmOwogCWludAkJdmFsaWRfYnVmX2NudDsKIAl1bnNpZ25lZCBpbnQJYWVzX2JpdHM7 CkBAIC0xNTYsOCArMTU4LDggQEAgc3RydWN0IGhhZF9vcHMgewogCXZvaWQgKCpyZXNldF9hdWRp bykodTggcmVzZXQpOwogCWludCAoKnByb2dfbikodTMyIGF1ZF9zYW1wX2ZyZXEsIHUzMiAqbl9w YXJhbSwKIAkJCXN0cnVjdCBzbmRfaW50ZWxoYWQgKmludGVsaGFkZGF0YSk7Ci0Jdm9pZCAoKnBy b2dfY3RzKSh1MzIgYXVkX3NhbXBfZnJlcSwgdTMyIHRtZHMsIHUzMiBuX3BhcmFtLAotCQkJc3Ry dWN0IHNuZF9pbnRlbGhhZCAqaW50ZWxoYWRkYXRhKTsKKwl2b2lkICgqcHJvZ19jdHMpKHUzMiBh dWRfc2FtcF9mcmVxLCB1MzIgdG1kcywgdTMyIGxpbmtfcmF0ZSwKKwkJCSB1MzIgbl9wYXJhbSwg c3RydWN0IHNuZF9pbnRlbGhhZCAqaW50ZWxoYWRkYXRhKTsKIAlpbnQgKCphdWRpb19jdHJsKShz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCQlzdHJ1Y3Qgc25kX2ludGVs aGFkICppbnRlbGhhZGRhdGEpOwogCXZvaWQgKCpwcm9nX2RpcCkoc3RydWN0IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0sCmRpZmYgLS1naXQgYS9zb3VuZC94ODYvaW50ZWxfaGRtaV9scGVf YXVkaW8uYyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2xwZV9hdWRpby5jCmluZGV4IGVhZDJkM2Eu LjZlZjBmZjggMTAwNjQ0Ci0tLSBhL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2xwZV9hdWRpby5jCisr KyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2xwZV9hdWRpby5jCkBAIC00OCw2ICs0OCw4IEBAIHN0 cnVjdCBoZG1pX2xwZV9hdWRpb19jdHggewogCXN0cnVjdCBzbmRfaW50ZWxfaGFkX2ludGVyZmFj ZSAqaGFkX2ludGVyZmFjZTsKIAl2b2lkICpoYWRfcHZ0X2RhdGE7CiAJaW50IHRtZHNfY2xvY2tf c3BlZWQ7CisJYm9vbCBkcF9vdXRwdXQ7CisJaW50IGxpbmtfcmF0ZTsKIAl1bnNpZ25lZCBpbnQg aGFkX2NvbmZpZ19vZmZzZXQ7CiAJaW50IGhkbWlfYXVkaW9faW50ZXJydXB0X21hc2s7CiAJc3Ry dWN0IHdvcmtfc3RydWN0IGhkbWlfYXVkaW9fd3E7CkBAIC0xODcsNiArMTg5LDE1IEBAIHN0YXRp YyBpbnQgaGRtaV9hdWRpb193cml0ZSh1MzIgcmVnLCB1MzIgdmFsKQogCiAJZGV2X2RiZygmaGxw ZV9wZGV2LT5kZXYsICIlczogcmVnWzB4JXhdID0gMHgleFxuIiwgX19mdW5jX18sIHJlZywgdmFs KTsKIAorCWlmIChjdHgtPmRwX291dHB1dCkgeworCQlpZiAoKHJlZyA9PSBBVURJT19IRE1JX0NP TkZJR19BICkgfHwKKwkJICAgIChyZWcgPT0gQVVESU9fSERNSV9DT05GSUdfQiApIHx8CisJCSAg ICAocmVnID09IEFVRElPX0hETUlfQ09ORklHX0MgKSkgeworCQkJaWYgKHZhbCAmIEFVRF9DT05G SUdfVkFMSURfQklUKQorCQkJCXZhbCA9IHZhbCB8IEFVRF9DT05GSUdfRFBfTU9ERSB8CisJCQkJ CUFVRF9DT05GSUdfQkxPQ0tfQklUOworCQl9CisJfQogCWlvd3JpdGUzMih2YWwsIChjdHgtPm1t aW9fc3RhcnQrcmVnKSk7CiAKIAlyZXR1cm4gMDsKQEAgLTIyMCw2ICsyMzEsMTYgQEAgc3RhdGlj IGludCBoZG1pX2F1ZGlvX3Jtdyh1MzIgcmVnLCB1MzIgdmFsLCB1MzIgbWFzaykKIAl2YWxfdG1w ID0gKHZhbCAmIG1hc2spIHwKIAkJCSgoaW9yZWFkMzIoY3R4LT5tbWlvX3N0YXJ0ICsgcmVnKSkg JiB+bWFzayk7CiAKKwlpZiAoY3R4LT5kcF9vdXRwdXQpIHsKKwkJaWYgKChyZWcgPT0gQVVESU9f SERNSV9DT05GSUdfQSApIHx8CisJCSAgICAocmVnID09IEFVRElPX0hETUlfQ09ORklHX0IgKSB8 fAorCQkgICAgKHJlZyA9PSBBVURJT19IRE1JX0NPTkZJR19DICkpIHsKKwkJCWlmICh2YWxfdG1w ICYgQVVEX0NPTkZJR19WQUxJRF9CSVQpCisJCQkJdmFsX3RtcCA9IHZhbF90bXAgfCBBVURfQ09O RklHX0RQX01PREUgfAorCQkJCQlBVURfQ09ORklHX0JMT0NLX0JJVDsKKwkJfQorCX0KKwogCWlv d3JpdGUzMih2YWxfdG1wLCAoY3R4LT5tbWlvX3N0YXJ0K3JlZykpOwogCWRldl9kYmcoJmhscGVf cGRldi0+ZGV2LCAiJXM6IHJlZ1sweCV4XSA9IDB4JXhcbiIsIF9fZnVuY19fLAogCQkJCXJlZywg dmFsX3RtcCk7CkBAIC0yNDksNyArMjcwLDE4IEBAIHN0YXRpYyBpbnQgaGRtaV9hdWRpb19nZXRf Y2FwcyhlbnVtIGhhZF9jYXBzX2xpc3QgZ2V0X2VsZW1lbnQsCiAJCS8qIFRvRG86IFZlcmlmeSBp ZiBzYW1wbGluZyBmcmVxIGxvZ2ljIGlzIGNvcnJlY3QgKi8KIAkJKih1MzIgKiljYXBhYmlsaXRp ZXMgPSBjdHgtPnRtZHNfY2xvY2tfc3BlZWQ7CiAJCWRldl9kYmcoJmhscGVfcGRldi0+ZGV2LCAi JXM6IHRtZHNfY2xvY2tfc3BlZWQgPSAweCV4XG4iLAotCQkJCV9fZnVuY19fLCBjdHgtPnRtZHNf Y2xvY2tfc3BlZWQpOworCQkJX19mdW5jX18sIGN0eC0+dG1kc19jbG9ja19zcGVlZCk7CisJCWJy ZWFrOworCWNhc2UgSEFEX0dFVF9MSU5LX1JBVEU6CisJCS8qIFRvRG86IFZlcmlmeSBpZiBzYW1w bGluZyBmcmVxIGxvZ2ljIGlzIGNvcnJlY3QgKi8KKwkJKih1MzIgKiljYXBhYmlsaXRpZXMgPSBj dHgtPmxpbmtfcmF0ZTsKKwkJZGV2X2RiZygmaGxwZV9wZGV2LT5kZXYsICIlczogbGluayByYXRl ID0gMHgleFxuIiwKKwkJCV9fZnVuY19fLCBjdHgtPmxpbmtfcmF0ZSk7CisJCWJyZWFrOworCWNh c2UgSEFEX0dFVF9EUF9PVVRQVVQ6CisJCSoodTMyICopY2FwYWJpbGl0aWVzID0gY3R4LT5kcF9v dXRwdXQ7CisJCWRldl9kYmcoJmhscGVfcGRldi0+ZGV2LCAiJXM6IGRwX291dHB1dCA9ICVkXG4i LAorCQkJX19mdW5jX18sIGN0eC0+ZHBfb3V0cHV0KTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ YnJlYWs7CkBAIC00NDIsNiArNDc0LDggQEAgc3RhdGljIHZvaWQgbm90aWZ5X2F1ZGlvX2xwZSh2 b2lkICphdWRpb19wdHIpCiAKIAkJaWYgKHBkYXRhLT50bWRzX2Nsb2NrX3NwZWVkKSB7CiAJCQlj dHgtPnRtZHNfY2xvY2tfc3BlZWQgPSBwZGF0YS0+dG1kc19jbG9ja19zcGVlZDsKKwkJCWN0eC0+ ZHBfb3V0cHV0ID0gcGRhdGEtPmRwX291dHB1dDsKKwkJCWN0eC0+bGlua19yYXRlID0gcGRhdGEt PmxpbmtfcmF0ZTsKIAkJCW1pZF9oZG1pX2F1ZGlvX3NpZ25hbF9ldmVudChIQURfRVZFTlRfTU9E RV9DSEFOR0lORyk7CiAJCX0KIAl9IGVsc2UKZGlmZiAtLWdpdCBhL3NvdW5kL3g4Ni9pbnRlbF9o ZG1pX2xwZV9hdWRpby5oIGIvc291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmgKaW5kZXgg ZWM0YmRlNS4uM2FlZDg5YSAxMDA2NDQKLS0tIGEvc291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1 ZGlvLmgKKysrIGIvc291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmgKQEAgLTMxLDYgKzMx LDEwIEBACiAjaW5jbHVkZSA8c291bmQvY29udHJvbC5oPgogI2luY2x1ZGUgPHNvdW5kL3BjbS5o PgogCisjZGVmaW5lIEFVRF9DT05GSUdfVkFMSURfQklUCQkJKDE8PDkpCisjZGVmaW5lIEFVRF9D T05GSUdfRFBfTU9ERQkJCSgxPDwxNSkKKyNkZWZpbmUgQVVEX0NPTkZJR19CTE9DS19CSVQJCQko MTw8NykKKwogI2RlZmluZSBITURJX0xQRV9BVURJT19EUklWRVJfTkFNRQkJImludGVsLWhkbWkt bHBlLWF1ZGlvIgogI2RlZmluZSBIQURfTUFYX0RFVklDRVMJCTEKICNkZWZpbmUgSEFEX01JTl9D SEFOTkVMCQkyCkBAIC02OCw2ICs3MiwyOSBAQAogI2RlZmluZSBIQURfTUFYX0RJUF9XT1JEUwkJ MTYKICNkZWZpbmUgSU5URUxfSEFECQkiSW50ZWxIZG1pTHBlQXVkaW8iCiAKKy8qIERQIExpbmsg UmF0ZXMgKi8KKyNkZWZpbmUgRFBfMl83X0dIWgkJCTI3MDAwMAorI2RlZmluZSBEUF8xXzYyX0dI WgkJCTE2MjAwMAorCisvKiBNYXVkIFZhbHVlcyAqLworI2RlZmluZSBBVURfU0FNUExFX1JBVEVf MzJfRFBfMl83X01BVURfVkFMCQkxOTg4CisjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV80NF8xX0RQ XzJfN19NQVVEX1ZBTAkJMjc0MAorI2RlZmluZSBBVURfU0FNUExFX1JBVEVfNDhfRFBfMl83X01B VURfVkFMCQkyOTgyCisjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV84OF8yX0RQXzJfN19NQVVEX1ZB TAkJNTQ4MAorI2RlZmluZSBBVURfU0FNUExFX1JBVEVfOTZfRFBfMl83X01BVURfVkFMCQk1OTY1 CisjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV8xNzZfNF9EUF8yXzdfTUFVRF9WQUwJCTEwOTYxCisj ZGVmaW5lIEhBRF9NQVhfUkFURV9EUF8yXzdfTUFVRF9WQUwJCQkxMTkzMAorI2RlZmluZSBBVURf U0FNUExFX1JBVEVfMzJfRFBfMV82Ml9NQVVEX1ZBTAkJMzMxNAorI2RlZmluZSBBVURfU0FNUExF X1JBVEVfNDRfMV9EUF8xXzYyX01BVURfVkFMCQk0NTY3CisjZGVmaW5lIEFVRF9TQU1QTEVfUkFU RV80OF9EUF8xXzYyX01BVURfVkFMCQk0OTcxCisjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV84OF8y X0RQXzFfNjJfTUFVRF9WQUwJCTkxMzQKKyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzk2X0RQXzFf NjJfTUFVRF9WQUwJCTk5NDIKKyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzE3Nl80X0RQXzFfNjJf TUFVRF9WQUwJCTE4MjY4CisjZGVmaW5lIEhBRF9NQVhfUkFURV9EUF8xXzYyX01BVURfVkFMCQkJ MTk4ODQKKworLyogTmF1ZCBWYWx1ZSAqLworI2RlZmluZSBEUF9OQVVEX1ZBTAkJCQkJMzI3NjgK KwogLyogX0FVRF9DT05GSUcgcmVnaXN0ZXIgTUFTSyAqLwogI2RlZmluZSBBVURfQ09ORklHX01B U0tfVU5ERVJSVU4JMHhDMDAwMDAwMAogI2RlZmluZSBBVURfQ09ORklHX01BU0tfU1JEQkcJCTB4 MDAwMDAwMDIKQEAgLTYxOCw2ICs2NDUsOCBAQCBlbnVtIGhkbWlfY29ubmVjdG9yX3N0YXR1cyB7 CiBlbnVtIGhhZF9jYXBzX2xpc3QgewogCUhBRF9HRVRfRUxEID0gMSwKIAlIQURfR0VUX0RJU1BM QVlfUkFURSwKKwlIQURfR0VUX0RQX09VVFBVVCwKKwlIQURfR0VUX0xJTktfUkFURSwKIAlIQURf U0VUX0VOQUJMRV9BVURJTywKIAlIQURfU0VUX0RJU0FCTEVfQVVESU8sCiAJSEFEX1NFVF9FTkFC TEVfQVVESU9fSU5ULAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=