From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Yi Subject: [PATCH v2 1/3] drm/layerscape: Add sii9022a driver Date: Tue, 16 Feb 2016 09:52:45 +0800 Message-ID: <1455587567-14606-1-git-send-email-meng.yi@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0072.outbound.protection.outlook.com [207.46.100.72]) by gabe.freedesktop.org (Postfix) with ESMTPS id C7D1E6E212 for ; Tue, 16 Feb 2016 02:01:44 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: stefan@agner.ch Cc: Meng Yi , Xiubo Li , Alison Wang , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIFNpSTkwMjJBIGlzIGFuIHVsdHJhIGxvdy1wb3dlciBIRE1JIHRyYW5zbWl0dGVyLiBJdCBz dXBwb3J0cwpyZXNvbHV0aW9ucyBmcm9tIHN0YW5kYXJkIGRlZmluaXRpb24gNDgwaS9wIGFuZCA1 NzZpL3AgYWxsIHRoZSB3YXkKdG8gaGlnaC1kZWZpbml0aW9uIDcyMHAsIDEwODBpLCBhbmQgMTA4 MHAsIHRoZSBoaWdoZXN0IHJlc29sdXRpb24Kc3VwcG9ydGVkIGJ5IEhEVFZzIHRvZGF5LiBJdCBh bHNvIHN1cHBvcnRzIGFsbCBQQyByZXNvbHV0aW9ucyB1cAp0byBVWEdBIGZvciBuZXRib29rcwoK U2lnbmVkLW9mZi1ieTogTWVuZyBZaSA8bWVuZy55aUBueHAuY29tPgpTaWduZWQtb2ZmLWJ5OiBB bGlzb24gV2FuZyA8YWxpc29uLndhbmdAbnhwLmNvbT4KU2lnbmVkLW9mZi1ieTogWGl1Ym8gTGkg PGxpeGl1Ym9AY21zcy5jaGluYW1vYmlsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYW53ZWkgV2Fu ZyA8amlhbndlaS53YW5nLmNobkBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2kyYy9L Y29uZmlnICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pMmMvTWFrZWZpbGUgICAgICB8 ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTJjL3NpaTkwMjJfZHJ2LmMgfCA0NDkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDU4IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTJjL3NpaTkwMjJf ZHJ2LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcgYi9kcml2ZXJz L2dwdS9kcm0vaTJjL0tjb25maWcKaW5kZXggMjJjN2VkNi4uODY0NjcyOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2kyYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvS2Nv bmZpZwpAQCAtMzEsNCArMzEsMTAgQEAgY29uZmlnIERSTV9JMkNfTlhQX1REQTk5OFgKIAloZWxw CiAJICBTdXBwb3J0IGZvciBOWFAgU2VtaWNvbmR1Y3RvcnMgVERBOTk4WCBIRE1JIGVuY29kZXJz LgogCitjb25maWcgRFJNX0kyQ19TSUk5MDIyCisJdHJpc3RhdGUgIlNpbGljb24gSW1hZ2Ugc2lp OTAyMiBUTURTIHRyYW5zbWl0dGVyIgorCWhlbHAKKwkgIFN1cHBvcnQgZm9yIHNpaTkwMjIgYW5k IHNpbWlsYXIgc2luZ2xlLWxpbmsgKG9yIGR1YWwtbGluaworCSAgd2hlbiB1c2VkIGluIHBhaXJz KSBUTURTIHRyYW5zbWl0dGVycy4KKwogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2kyYy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvTWFrZWZpbGUKaW5kZXggMmM3 MmViNS4uY2YyZThiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2kyYy9NYWtlZmlsZQor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL01ha2VmaWxlCkBAIC0xMCwzICsxMCw2IEBAIG9iai0k KENPTkZJR19EUk1fSTJDX1NJTDE2NCkgKz0gc2lsMTY0Lm8KIAogdGRhOTk4eC15IDo9IHRkYTk5 OHhfZHJ2Lm8KIG9iai0kKENPTkZJR19EUk1fSTJDX05YUF9UREE5OThYKSArPSB0ZGE5OTh4Lm8K Kworc2lpOTAyMi15IDo9IHNpaTkwMjJfZHJ2Lm8KK29iai0kKENPTkZJR19EUk1fSTJDX1NJSTkw MjIpICs9c2lpOTAyMi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL3NpaTkwMjJf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL3NpaTkwMjJfZHJ2LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmM0OWNhZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pMmMvc2lpOTAyMl9kcnYuYwpAQCAtMCwwICsxLDQ0OSBAQAorLyoKKyAqIENvcHly aWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxl IERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg Ki8KKworI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5o PgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvZmIuaD4KKyNpbmNs dWRlIDxsaW51eC9mc2xfZGV2aWNlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1 ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxs aW51eC9vZl9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRl IDx2aWRlby92aWRlb21vZGUuaD4KKyNpbmNsdWRlIDx2aWRlby9vZl9kaXNwbGF5X3RpbWluZy5o PgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXJfc2xhdmUuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+CisKKworI2RlZmlu ZSBTSUk5MDJYX0lOUFVUX0JVU19GTVQJMHgwOAorI2RlZmluZSBTSUk5MDJYX1RQSV9BVklfSU5Q VVRfRk1UCTB4MDkKKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX09VVFBVVF9GTVQJMHgwQQorI2Rl ZmluZSBTSUk5MDJYX1NZU19DT05UUk9MCTB4MUEKKyNkZWZpbmUgU0lJOTAyWF9TWVNfQ1RSX0RE Q19SRVEJQklUKDIpCisjZGVmaW5lIFNJSTkwMlhfU1lTX0NUUl9ERENfQlVTX0FWQUkJKEJJVCgy KSB8IEJJVCgxKSkKKyNkZWZpbmUgU0lJOTAyWF9UUElfRkFNSUxZX0RFVl9JRAkweDFCCisjZGVm aW5lIFNJSTkwMlhfVFBJX0RFVl9SRVZfSUQJMHgxQworI2RlZmluZSBTSUk5MDJYX1RQSV9SRVZf TEVWRUxfSUQJMHgxRAorI2RlZmluZSBTSUk5MDJYX1BPV0VSX1NUQVRFCTB4MUUKKyNkZWZpbmUg U0lJOTAyWF9UUElfQVVESU9fQ0ZHMAkweDI0CisjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NG RzEJMHgyNQorI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DRkcyCTB4MjYKKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVVESU9fQ0ZHMwkweDI3CisjZGVmaW5lIFNJSTkwMlhfVFBJX0hEQ1BfUkVWCTB4 MzAKKyNkZWZpbmUgU0lJOTAyWF9UUElfSU5UX0VOQUJMRQkweDNDCisjZGVmaW5lIFNJSTkwMlhf VFBJX0lOVF9TVEFUVVMJMHgzRAorI2RlZmluZSBTSUk5MDJYX1RQSV9JTlRfUExVR19JTglCSVQo MikKKyNkZWZpbmUgU0lJOTAyWF9HRU5FUkFMX1BVUlBPU0VfSU8wCTB4QkMKKyNkZWZpbmUgU0lJ OTAyWF9HRU5FUkFMX1BVUlBPU0VfSU8xCTB4QkQKKyNkZWZpbmUgU0lJOTAyWF9HRU5FUkFMX1BV UlBPU0VfSU8yCTB4QkUKKyNkZWZpbmUgU0lJOTAyWF9UUkFOU19NT0RFX0RJRkYJMHhDNworCiti b29sIGdfZW5hYmxlX2hkbWk7CisKK3N0cnVjdCBzaWk5MDJ4X2RhdGEgeworCXN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQ7CisJc3RydWN0IGRlbGF5ZWRfd29yayBkZXRfd29yazsKKwlzdHJ1Y3Qg ZmJfaW5mbyAqZmJpOworfSAqc2lpOTAyeDsKKworI2RlZmluZSB0b19zaWk5MDJ4X2RhdGEoeCkg XAorCSgoc3RydWN0IHNpaTkwMnhfZGF0YSAqKXRvX2VuY29kZXJfc2xhdmUoeCktPnNsYXZlX3By aXYpCisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCAqc2lpOTAyeF90b19pMmMoc3RydWN0IHNp aTkwMnhfZGF0YSAqc2lpOTAyeCkKK3sKKwlyZXR1cm4gc2lpOTAyeC0+Y2xpZW50OworfQorCisv KiBIVyBhY2Nlc3MgZnVuY3Rpb25zICovCitzdGF0aWMgczMyIHNpaTkwMnhfd3JpdGUoY29uc3Qg c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCSB1OCBjb21tYW5kLCB1OCB2YWx1ZSkKK3sK KwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIGNvbW1hbmQsIHZhbHVl KTsKK30KKworc3RhdGljIHMzMiBzaWk5MDJ4X3JlYWQoY29uc3Qgc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCwgdTggY29tbWFuZCkKK3sKKwlpbnQgdmFsOworCisJdmFsID0gaTJjX3NtYnVzX3Jl YWRfd29yZF9kYXRhKGNsaWVudCwgY29tbWFuZCk7CisKKwlyZXR1cm4gdmFsICYgMHhmZjsKK30K Kworc3RhdGljIHZvaWQgc2lpOTAyeF9wb3dlcm9uKHZvaWQpCit7CisJLyogVHVybiBvbiBEVkkg b3IgSERNSSAqLworCXNpaTkwMnhfd3JpdGUoc2lpOTAyeC0+Y2xpZW50LCBTSUk5MDJYX1NZU19D T05UUk9MLCAweDAwKTsKK30KKworc3RhdGljIHZvaWQgc2lpOTAyeF9wb3dlcm9mZih2b2lkKQor eworCS8qIGRpc2FibGUgdG1kcyBiZWZvcmUgY2hhbmdpbmcgcmVzb2x1dGlvbiAqLworCXNpaTkw Mnhfd3JpdGUoc2lpOTAyeC0+Y2xpZW50LCBTSUk5MDJYX1NZU19DT05UUk9MLCAweDEwKTsKK30K KworCitzdGF0aWMgdm9pZCBzaWk5MDJ4X2NoaXBfaWQoc3RydWN0IHNpaTkwMnhfZGF0YSAqc2lp OTAyeCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gc2lpOTAyeF90b19pMmMoc2lp OTAyeCk7CisJaW50IHZhbDsKKworCS8qIHJlYWQgZGV2aWNlIElEICovCisJdmFsID0gc2lpOTAy eF9yZWFkKGNsaWVudCwgU0lJOTAyWF9UUElfRkFNSUxZX0RFVl9JRCk7CisJcHJfaW5mbygiU2lp OTAyeDogcmVhZCBpZCA9IDB4JTAyWCIsIHZhbCk7CisJdmFsID0gc2lpOTAyeF9yZWFkKGNsaWVu dCwgU0lJOTAyWF9UUElfREVWX1JFVl9JRCk7CisJcHJfaW5mbygiLTB4JTAyWCIsIHZhbCk7CisJ dmFsID0gc2lpOTAyeF9yZWFkKGNsaWVudCwgU0lJOTAyWF9UUElfUkVWX0xFVkVMX0lEKTsKKwlw cl9pbmZvKCItMHglMDJYIiwgdmFsKTsKKwl2YWwgPSBzaWk5MDJ4X3JlYWQoY2xpZW50LCBTSUk5 MDJYX1RQSV9IRENQX1JFVik7CisJcHJfaW5mbygiLTB4JTAyWFxuIiwgdmFsKTsKK30KKworc3Rh dGljIGludCBzaWk5MDJ4X2luaXRpYWxpemUoc3RydWN0IHNpaTkwMnhfZGF0YSAqc2lpOTAyeCkK K3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gc2lpOTAyeF90b19pMmMoc2lpOTAyeCk7 CisJaW50IHJldCwgY250OworCisJZm9yIChjbnQgPSAwOyBjbnQgPCA1OyBjbnQrKykgeworCQkv KiBTZXQgOTAyeCBpbiBoYXJkd2FyZSBUUEkgbW9kZSBvbiBhbmQganVtcCBvdXQgb2YgRDMgc3Rh dGUgKi8KKwkJcmV0ID0gc2lpOTAyeF93cml0ZShjbGllbnQsIFNJSTkwMlhfVFJBTlNfTU9ERV9E SUZGLCAweDAwKTsKKwkJaWYgKHJldCA8IDApCisJCQlicmVhazsKKwl9CisJaWYgKHJldCAhPSAw KQorCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImNvdW5kIG5vdCBmaW5kIGRldmljZVxuIik7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBzaWk5MDJ4X2VuYWJsZV9zb3VyY2Uoc3Ry dWN0IHNpaTkwMnhfZGF0YSAqc2lpOTAyeCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 ID0gc2lpOTAyeF90b19pMmMoc2lpOTAyeCk7CisJaW50IHZhbDsKKworCXNpaTkwMnhfd3JpdGUo Y2xpZW50LCBTSUk5MDJYX0dFTkVSQUxfUFVSUE9TRV9JTzAsIDB4MDEpOworCXNpaTkwMnhfd3Jp dGUoY2xpZW50LCBTSUk5MDJYX0dFTkVSQUxfUFVSUE9TRV9JTzEsIDB4ODIpOworCXZhbCA9IHNp aTkwMnhfcmVhZChjbGllbnQsIFNJSTkwMlhfR0VORVJBTF9QVVJQT1NFX0lPMik7CisJdmFsIHw9 IDB4MTsKKwlzaWk5MDJ4X3dyaXRlKGNsaWVudCwgU0lJOTAyWF9HRU5FUkFMX1BVUlBPU0VfSU8y LCB2YWwpOworfQorCitzdGF0aWMgdm9pZCBzaWk5MDJ4X3Bvd2VyX3VwX3R4KHN0cnVjdCBzaWk5 MDJ4X2RhdGEgKnNpaTkwMngpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHNpaTkw MnhfdG9faTJjKHNpaTkwMngpOworCWludCB2YWw7CisKKwl2YWwgPSBzaWk5MDJ4X3JlYWQoY2xp ZW50LCBTSUk5MDJYX1BPV0VSX1NUQVRFKTsKKwl2YWwgJj0gfjB4MzsKKwlzaWk5MDJ4X3dyaXRl KGNsaWVudCwgU0lJOTAyWF9QT1dFUl9TVEFURSwgdmFsKTsKK30KKworc3RhdGljIGludCBzaWk5 MDJ4X2dldF9lZGlkX3ByZWNvbmZpZyh2b2lkKQoreworCWludCBvbGQsIGRhdCwgcmV0ID0gMCwg Y250ID0gMTAwOworCisJb2xkID0gc2lpOTAyeF9yZWFkKHNpaTkwMngtPmNsaWVudCwgU0lJOTAy WF9TWVNfQ09OVFJPTCk7CisKKwlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwgU0lJOTAy WF9TWVNfQ09OVFJPTCwKKwkJICAgICAgb2xkIHwgU0lJOTAyWF9TWVNfQ1RSX0REQ19SRVEpOwor CWRvIHsKKwkJY250LS07CisJCW1zbGVlcCgyMCk7CisJCWRhdCA9IHNpaTkwMnhfcmVhZChzaWk5 MDJ4LT5jbGllbnQsIFNJSTkwMlhfU1lTX0NPTlRST0wpOworCX0gd2hpbGUgKCghKGRhdCAmIDB4 MikpICYmIGNudCk7CisKKwlpZiAoIWNudCkgeworCQlyZXQgPSAtMTsKKwkJZ290byBkb25lOwor CX0KKworCXNpaTkwMnhfd3JpdGUoc2lpOTAyeC0+Y2xpZW50LCBTSUk5MDJYX1NZU19DT05UUk9M LAorCQkgICAgICBvbGQgfCBTSUk5MDJYX1NZU19DVFJfRERDX0JVU19BVkFJKTsKKworZG9uZToK KwlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwgU0lJOTAyWF9TWVNfQ09OVFJPTCwgb2xk KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9faW5pdCBlbmFibGVfaGRtaV9zZXR1 cChjaGFyICpzdHIpCit7CisJZ19lbmFibGVfaGRtaSA9IHRydWU7CisKKwlyZXR1cm4gMTsKK30K KworX19zZXR1cCgiaGRtaSIsIGVuYWJsZV9oZG1pX3NldHVwKTsKKworc3RhdGljIGlycXJldHVy bl90IHNpaTkwMnhfZGV0ZWN0X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlpZiAo Z19lbmFibGVfaGRtaSkKKwkJZ19lbmFibGVfaGRtaSA9IGZhbHNlOworCisJcmV0dXJuIElSUV9I QU5ETEVEOworfQorCitzdGF0aWMgaW50IHNpaTkwMnhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCwKKwkJCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0 IGkyY19hZGFwdGVyICphZGFwID0gdG9faTJjX2FkYXB0ZXIoY2xpZW50LT5kZXYucGFyZW50KTsK KwlpbnQgcmV0LCBlcnI7CisKKwlpZiAoIWdfZW5hYmxlX2hkbWkpCisJCXJldHVybiAtRVBFUk07 CisKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXAsIEkyQ19GVU5DX1NNQlVTX0JZ VEUpKSB7CisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkg ZXJyb3JcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlzaWk5MDJ4ID0gZGV2bV9remFs bG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCpzaWk5MDJ4KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFz aWk5MDJ4KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXNpaTkwMngtPmNsaWVudCA9IGNsaWVudDsK KwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBzaWk5MDJ4KTsKKworCWVyciA9IHNpaTkwMnhf aW5pdGlhbGl6ZShzaWk5MDJ4KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJc2lpOTAy eF9jaGlwX2lkKHNpaTkwMngpOworCXNpaTkwMnhfcG93ZXJfdXBfdHgoc2lpOTAyeCk7CisJc2lp OTAyeF9lbmFibGVfc291cmNlKHNpaTkwMngpOworCisJaWYgKHNpaTkwMnhfZ2V0X2VkaWRfcHJl Y29uZmlnKCkgPCAwKQorCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJSZWFkIGVkaWQgcHJlY29u ZmlnIGZhaWxlZFxuIik7CisKKwlpZiAoY2xpZW50LT5pcnEpIHsKKwkJcmV0ID0gZGV2bV9yZXF1 ZXN0X2lycSgmY2xpZW50LT5kZXYsIGNsaWVudC0+aXJxLAorCQkJCSAgICAgICBzaWk5MDJ4X2Rl dGVjdF9oYW5kbGVyLCAwLAorCQkJCSAgICAgICAiU0lJOTAyeF9kZXQiLCBzaWk5MDJ4KTsKKwkJ aWYgKHJldCA8IDApCisJCQlkZXZfd2FybigmY2xpZW50LT5kZXYsCisJCQkJICJjb3VuZCBub3Qg cmVxdWVzdCBkZXQgaXJxICVkXG4iLAorCQkJCSBjbGllbnQtPmlycSk7CisJCWVsc2UgeworCQkJ LyplbmFibGUgY2FibGUgaG90IHBsdWcgaXJxKi8KKwkJCXNpaTkwMnhfd3JpdGUoY2xpZW50LCBT SUk5MDJYX1RQSV9JTlRfRU5BQkxFLCAweDAxKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHNpaTkwMnhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7 CisJc2lpOTAyeF9wb3dlcm9mZigpOworCXJldHVybiAwOworfQorCisvKiBEUk0gZW5jb2RlciBm dW5jdGlvbnMgKi8KKworc3RhdGljIHZvaWQKK3NpaTkwMnhfZW5jb2Rlcl9kcG1zKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCit7CisJaWYgKG1vZGUgPT0gRFJNX01PREVf RFBNU19PTikKKwkJc2lpOTAyeF9wb3dlcm9uKCk7CisJZWxzZQorCQlzaWk5MDJ4X3Bvd2Vyb2Zm KCk7Cit9CisKKworc3RhdGljIGludAorc2lpOTAyeF9lbmNvZGVyX21vZGVfdmFsaWQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3NpaTkwMnhfZW5jb2Rlcl9tb2Rl X3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQor eworCXN0cnVjdCB2aWRlb21vZGUgdm07CisJdTE2IGRhdGFbNF07CisJdTMyIHJlZnJlc2g7CisJ dTggKnRtcDsKKwlpbnQgaTsKKworCS8qIFBvd2VyIHVwICovCisJc2lpOTAyeF9wb3dlcl91cF90 eChzaWk5MDJ4KTsKKworCWRybV9kaXNwbGF5X21vZGVfdG9fdmlkZW9tb2RlKG1vZGUsICZ2bSk7 CisJZGF0YVswXSA9IFBJQ09TMktIWih2bS5waXhlbGNsb2NrKSAvIDEwOworCWRhdGFbMl0gPSB2 bS5oc3luY19sZW4gKyB2bS5oYmFja19wb3JjaCArCisJCSAgdm0uaGFjdGl2ZSArIHZtLmhmcm9u dF9wb3JjaDsKKwlkYXRhWzNdID0gdm0udnN5bmNfbGVuICsgdm0udmZyb250X3BvcmNoICsKKwkJ ICB2bS52YWN0aXZlICsgdm0udmJhY2tfcG9yY2g7CisJcmVmcmVzaCA9IGRhdGFbMl0gKiBkYXRh WzNdOworCXJlZnJlc2ggPSAoUElDT1MyS0haKHZtLnBpeGVsY2xvY2spICogMTAwMCkgLyByZWZy ZXNoOworCWRhdGFbMV0gPSByZWZyZXNoICogMTAwOworCisJdG1wID0gKHU4ICopZGF0YTsKKwlm b3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwg aSwgdG1wW2ldKTsKKworCS8qIGlucHV0IGJ1cy9waXhlbDogZnVsbCBwaXhlbCB3aWRlICgyNGJp dCksIHJpc2luZyBlZGdlICovCisJc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5jbGllbnQsIFNJSTkw MlhfSU5QVVRfQlVTX0ZNVCwgMHg3MCk7CisJLyogU2V0IGlucHV0IGZvcm1hdCB0byBSR0IgKi8K KwlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0ZN VCwgMHgwMCk7CisJLyogc2V0IG91dHB1dCBmb3JtYXQgdG8gUkdCICovCisJc2lpOTAyeF93cml0 ZShzaWk5MDJ4LT5jbGllbnQsIFNJSTkwMlhfVFBJX0FWSV9PVVRQVVRfRk1ULCAweDAwKTsKKwkv KiBhdWRpbyBzZXR1cCAqLworCXNpaTkwMnhfd3JpdGUoc2lpOTAyeC0+Y2xpZW50LCBTSUk5MDJY X1RQSV9BVURJT19DRkcxLCAweDAwKTsKKwlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwg U0lJOTAyWF9UUElfQVVESU9fQ0ZHMiwgMHg0MCk7CisJc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5j bGllbnQsIFNJSTkwMlhfVFBJX0FVRElPX0NGRzMsIDB4MDApOworfQorCitzdHJ1Y3QgZWRpZCAq c2lpOTAyeF9kcm1fZ2V0X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJ CQkgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpbnQgb2xkLCBkYXQsIGNudCA9 IDEwMDsKKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKKworCW9sZCA9IHNpaTkwMnhfcmVhZChzaWk5MDJ4 LT5jbGllbnQsIFNJSTkwMlhfU1lTX0NPTlRST0wpOworCisJc2lpOTAyeF93cml0ZShzaWk5MDJ4 LT5jbGllbnQsIFNJSTkwMlhfU1lTX0NPTlRST0wsCisJCSAgICAgIG9sZCB8IFNJSTkwMlhfU1lT X0NUUl9ERENfUkVRKTsKKwlkbyB7CisJCWNudC0tOworCQltc2xlZXAoMjApOworCQlkYXQgPSBz aWk5MDJ4X3JlYWQoc2lpOTAyeC0+Y2xpZW50LCBTSUk5MDJYX1NZU19DT05UUk9MKTsKKwl9IHdo aWxlICgoIShkYXQgJiAweDIpKSAmJiBjbnQpOworCisJaWYgKCFjbnQpIHsKKwkJZWRpZCA9IE5V TEw7CisJCWdvdG8gZG9uZTsKKwl9CisKKwlzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmNsaWVudCwg U0lJOTAyWF9TWVNfQ09OVFJPTCwKKwkJICAgICAgb2xkIHwgU0lJOTAyWF9TWVNfQ1RSX0REQ19C VVNfQVZBSSk7CisKKwkvKiBlZGlkIHJlYWRpbmcgKi8KKwllZGlkID0gZHJtX2dldF9lZGlkKGNv bm5lY3RvciwgYWRhcHRlcik7CisKKwljbnQgPSAxMDA7CisJZG8geworCQljbnQtLTsKKwkJc2lp OTAyeF93cml0ZShzaWk5MDJ4LT5jbGllbnQsIFNJSTkwMlhfU1lTX0NPTlRST0wsCisJCQkgICAg ICBvbGQgJiB+U0lJOTAyWF9TWVNfQ1RSX0REQ19CVVNfQVZBSSk7CisJCW1zbGVlcCgyMCk7CisJ CWRhdCA9IHNpaTkwMnhfcmVhZChzaWk5MDJ4LT5jbGllbnQsIFNJSTkwMlhfU1lTX0NPTlRST0wp OworCX0gd2hpbGUgKChkYXQgJiAweDYpICYmIGNudCk7CisKKwlpZiAoIWNudCkKKwkJZWRpZCA9 IE5VTEw7CisKK2RvbmU6CisJc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5jbGllbnQsIFNJSTkwMlhf U1lTX0NPTlRST0wsIG9sZCk7CisJcmV0dXJuIGVkaWQ7Cit9CisKK3N0YXRpYyBpbnQKK3NpaTkw MnhfZW5jb2Rlcl9nZXRfbW9kZXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJIHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IHRvX2kyY19h ZGFwdGVyKHNpaTkwMngtPmNsaWVudC0+ZGV2LnBhcmVudCk7CisJc3RydWN0IGVkaWQgKmVkaWQ7 CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisJaW50IHJldDsKKworCWVkaWQgPSBz aWk5MDJ4X2RybV9nZXRfZWRpZChjb25uZWN0b3IsIGFkYXApOworCWlmIChlZGlkKSB7CisJCWRy bV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwor CQlyZXQgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKKwkJa2ZyZWUoZWRp ZCk7CisJfSBlbHNlIHsKKwkJZGV2X2RiZyhkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgZWRpZFxu Iik7CisJfQorCisJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5wcm9iZWRf bW9kZXMsIGhlYWQpIHsKKwkJaWYgKG1vZGUtPmhkaXNwbGF5ID09IDEwMjQgfHwgbW9kZS0+dmRp c3BsYXkgPT0gNzY4KQorCQkJbW9kZS0+dHlwZSB8PSBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsK KwkJZWxzZQorCQkJbW9kZS0+dHlwZSAmPSB+RFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7CisJfQor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZV9mdW5j cyBzaWk5MDJ4X2VuY29kZXJfZnVuY3MgPSB7CisJLmRwbXMgPSBzaWk5MDJ4X2VuY29kZXJfZHBt cywKKwkubW9kZV92YWxpZCA9IHNpaTkwMnhfZW5jb2Rlcl9tb2RlX3ZhbGlkLAorCS5tb2RlX3Nl dCA9IHNpaTkwMnhfZW5jb2Rlcl9tb2RlX3NldCwKKwkuZ2V0X21vZGVzID0gc2lpOTAyeF9lbmNv ZGVyX2dldF9tb2RlcywKK307CitzdGF0aWMgaW50CitzaWk5MDJ4X2VuY29kZXJfaW5pdChzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJ ICAgIHN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZSAqZW5jb2RlcikKK3sKKworCWVuY29kZXItPnNs YXZlX2Z1bmNzID0gJnNpaTkwMnhfZW5jb2Rlcl9mdW5jczsKKworCXJldHVybiAwOworfQorc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNpaTkwMnhfaWRbXSA9IHsKKwl7ICJzaWk5 MDJ4IiwgMCB9LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzaWk5MDJ4X2lk KTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2lpOTAyeF9kdF9pZHNbXSA9 IHsKKwl7IC5jb21wYXRpYmxlID0gInNpbCxzaWk5MDIyYSIsIH0sCisJeyAvKiBzZW50aW5lbCAq LyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc2lpOTAyeF9kdF9pZHMpOworCitzdGF0 aWMgc3RydWN0IGRybV9pMmNfZW5jb2Rlcl9kcml2ZXIgc2lpOTAyeF9kcml2ZXIgPSB7CisJLmky Y19kcml2ZXIgPSB7CisJCS5wcm9iZSA9IHNpaTkwMnhfcHJvYmUsCisJCS5yZW1vdmUgPSBzaWk5 MDJ4X3JlbW92ZSwKKwkJLmRyaXZlciA9IHsKKwkJCS5uYW1lID0gInNpaTkwMngiLAorCQkJLm93 bmVyID0gVEhJU19NT0RVTEUsCisJCQkub2ZfbWF0Y2hfdGFibGUgPSBzaWk5MDJ4X2R0X2lkcywK KwkJfSwKKwkJLmlkX3RhYmxlID0gc2lpOTAyeF9pZCwKKwl9LAorCS5lbmNvZGVyX2luaXQgPSBz aWk5MDJ4X2VuY29kZXJfaW5pdCwKK307CisKKy8qIE1vZHVsZSBpbml0aWFsaXphdGlvbiAqLwor CitzdGF0aWMgaW50IF9faW5pdCBzaWk5MDJ4X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gZHJtX2ky Y19lbmNvZGVyX3JlZ2lzdGVyKFRISVNfTU9EVUxFLCAmc2lpOTAyeF9kcml2ZXIpOworfQorCitz dGF0aWMgdm9pZCBfX2V4aXQgc2lpOTAyeF9leGl0KHZvaWQpCit7CisJZHJtX2kyY19lbmNvZGVy X3VucmVnaXN0ZXIoJnNpaTkwMnhfZHJpdmVyKTsKK30KKworCitNT0RVTEVfQVVUSE9SKCJGcmVl c2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJTSUk5MDJ4 IERWSS9IRE1JIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCisKK21vZHVsZV9p bml0KHNpaTkwMnhfaW5pdCk7Cittb2R1bGVfZXhpdChzaWk5MDJ4X2V4aXQpOwotLSAKMi4xLjAu MjcuZzk2ZGIzMjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=