From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shobhit Kumar Subject: [PATCH 4/4] drm/i915: Add support for Generic MIPI panel driver Date: Mon, 14 Apr 2014 11:18:27 +0530 Message-ID: <1397454507-10273-5-git-send-email-shobhit.kumar@intel.com> References: <1397454507-10273-1-git-send-email-shobhit.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id AC5A46E6D2 for ; Sun, 13 Apr 2014 22:48:57 -0700 (PDT) In-Reply-To: <1397454507-10273-1-git-send-email-shobhit.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx Cc: Jani Nikula , Daniel Vetter , arjan.van.de.ven@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mIHRoZSBnZW5lcmljIHBhbmVsIGluZm9ybWF0aW9uIGZy b20gdGhlIFZCVC4KUGFuZWwgaW5mb3JtYXRpb24gaXMgY2xhc3NpZmllZCBpbnRvIHR3byAtIHBh bmVsIGNvbmZpZ3VyYXRpb24gYW5kIHBhbmVsCnBvd2VyIHNlcXVlbmNlIHdoaWNoIGlzIHVuaXF1 ZSB0byBlYWNoIHBhbmVsLiBUaGUgZ2VuZXJpYyBkcml2ZXIgdXNlcyB0aGUKcGFuZWwgY29uZmln dXJhdGlvbiBhbmQgc2VxdWVuY2UgcGFyc2VkIGZyb20gVkJUIGJsb2NrICM1MiBhbmQgIzUzCgp2 MjogQWRkcmVzcyByZXZpZXcgY29tbWVudHMgYnkgSmFuaQogICAgLSBNb3ZlIGFsbCBvZiB0aGUg dGhpbmdzIGluIGRyaXZlciBjIGZpbGUgZnJvbSBoZWFkZXIKICAgIC0gTWFrZSBhbGwgZnVuY3Rp b25zIHN0YXRpYwogICAgLSBNYWtlIHVzZSBvZiB2aWRlby9taXBpX2Rpc3BsYXkuYyBpbnN0ZWFk IG9mIHJlZGVmaW5pbmcKICAgIC0gTnVsbCBjaGVja3MgZHVyaW5nIHNlcXVlbmNlIGV4ZWN1dGlv bgoKU2lnbmVkLW9mZi1ieTogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2RzaV9tb2RfdmJ0X2dlbmVyaWMuYyB8IDU5OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMg ICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oICAgICAg ICAgICB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDYwNiBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZHNpX21vZF92YnRfZ2VuZXJpYy5jCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQppbmRleCBiMTQ0NWI3Li43NTZhN2E0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQpAQCAtNTUsNiArNTUsNyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKIAkgIGludGVs X2RzaV9jbWQubyBcCiAJICBpbnRlbF9kc2kubyBcCiAJICBpbnRlbF9kc2lfcGxsLm8gXAorCSAg ZHNpX21vZF92YnRfZ2VuZXJpYy5vCVwKIAkgIGludGVsX2R2by5vIFwKIAkgIGludGVsX2hkbWku byBcCiAJICBpbnRlbF9pMmMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k c2lfbW9kX3ZidF9nZW5lcmljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kc2lfbW9kX3ZidF9n ZW5lcmljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxMmNlOAotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2RzaV9tb2RfdmJ0X2dlbmVyaWMu YwpAQCAtMCwwICsxLDU5OCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqIEF1dGhvcjogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5jb20+CisgKgor ICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgor I2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KKyNp bmNsdWRlIDxhc20vaW50ZWwtbWlkLmg+CisjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+ CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNpbmNsdWRl ICJpbnRlbF9kc2kuaCIKKyNpbmNsdWRlICJpbnRlbF9kc2lfY21kLmgiCisKKyNkZWZpbmUgTUlQ SV9UUkFOU0ZFUl9NT0RFX1NISUZUCTAKKyNkZWZpbmUgTUlQSV9WSVJUVUFMX0NIQU5ORUxfU0hJ RlQJMQorI2RlZmluZSBNSVBJX1BPUlRfU0hJRlQJCQkzCisKKyNkZWZpbmUgUFJFUEFSRV9DTlRf TUFYCQkweDNGCisjZGVmaW5lIEVYSVRfWkVST19DTlRfTUFYCTB4M0YKKyNkZWZpbmUgQ0xLX1pF Uk9fQ05UX01BWAkweEZGCisjZGVmaW5lIFRSQUlMX0NOVF9NQVgJCTB4MUYKKworI2RlZmluZSBO U19NSFpfUkFUSU8gMTAwMDAwMAorCisvKiBUaGlzIG1hY3JvIGRpdmlkZXMgdHdvIGludGVnZXJz IGFuZCByb3VuZHMgZnJhY3Rpb25hbCB2YWx1ZXMgdXAKKyAqIHRvIHRoZSBuZWFyZXN0IGludGVn ZXIgdmFsdWUuICovCisjZGVmaW5lIENFSUxfRElWKFgsIFkpICgoKFgpJShZKSkgPyAoKFgpLyhZ KSsxKSA6ICgoWCkvKFkpKSkKKworI2RlZmluZSBHUEkwX05DXzBfSFZfRERJMF9IUEQgICAgICAg ICAgIDB4NDEzMAorI2RlZmluZSBHUElPX05DXzBfSFZfRERJMF9QQUQgICAgICAgICAgIDB4NDEz OAorI2RlZmluZSBHUElPX05DXzFfSFZfRERJMF9ERENfU0RBICAgICAgIDB4NDEyMAorI2RlZmlu ZSBHUElPX05DXzFfSFZfRERJMF9ERENfU0RBX1BBRCAgIDB4NDEyOAorI2RlZmluZSBHUElPX05D XzJfSFZfRERJMF9ERENfU0NMICAgICAgIDB4NDExMAorI2RlZmluZSBHUElPX05DXzJfSFZfRERJ MF9ERENfU0NMX1BBRCAgIDB4NDExOAorI2RlZmluZSBHUElPX05DXzNfUEFORUwwX1ZEREVOICAg ICAgICAgIDB4NDE0MAorI2RlZmluZSBHUElPX05DXzNfUEFORUwwX1ZEREVOX1BBRCAgICAgIDB4 NDE0OAorI2RlZmluZSBHUElPX05DXzRfUEFORUwwX0JMS0VOICAgICAgICAgIDB4NDE1MAorI2Rl ZmluZSBHUElPX05DXzRfUEFORUwwX0JMS0VOX1BBRCAgICAgIDB4NDE1OAorI2RlZmluZSBHUElP X05DXzVfUEFORUwwX0JMS0NUTCAgICAgICAgIDB4NDE2MAorI2RlZmluZSBHUElPX05DXzVfUEFO RUwwX0JMS0NUTF9QQUQgICAgIDB4NDE2OAorI2RlZmluZSBHUElPX05DXzZfUENPTkYwICAgICAg ICAgICAgICAgIDB4NDE4MAorI2RlZmluZSBHUElPX05DXzZfUEFEICAgICAgICAgICAgICAgICAg IDB4NDE4OAorI2RlZmluZSBHUElPX05DXzdfUENPTkYwICAgICAgICAgICAgICAgIDB4NDE5MAor I2RlZmluZSBHUElPX05DXzdfUEFEICAgICAgICAgICAgICAgICAgIDB4NDE5OAorI2RlZmluZSBH UElPX05DXzhfUENPTkYwICAgICAgICAgICAgICAgIDB4NDE3MAorI2RlZmluZSBHUElPX05DXzhf UEFEICAgICAgICAgICAgICAgICAgIDB4NDE3OAorI2RlZmluZSBHUElPX05DXzlfUENPTkYwICAg ICAgICAgICAgICAgIDB4NDEwMAorI2RlZmluZSBHUElPX05DXzlfUEFEICAgICAgICAgICAgICAg ICAgIDB4NDEwOAorI2RlZmluZSBHUElPX05DXzEwX1BDT05GMCAgICAgICAgICAgICAgIDB4NDBF MAorI2RlZmluZSBHUElPX05DXzEwX1BBRCAgICAgICAgICAgICAgICAgIDB4NDBFOAorI2RlZmlu ZSBHUElPX05DXzExX1BDT05GMCAgICAgICAgICAgICAgIDB4NDBGMAorI2RlZmluZSBHUElPX05D XzExX1BBRCAgICAgICAgICAgICAgICAgIDB4NDBGOAorCitzdHJ1Y3QgZ3Bpb190YWJsZSB7CisJ dTE2IGZ1bmN0aW9uX3JlZzsKKwl1MTYgcGFkX3JlZzsKKwl1OCBpbml0OworfTsKKworc3RhdGlj IHN0cnVjdCBncGlvX3RhYmxlIGd0YWJsZVtdID0geworCXsgR1BJMF9OQ18wX0hWX0RESTBfSFBE LCBHUElPX05DXzBfSFZfRERJMF9QQUQsIDAgfSwKKwl7IEdQSU9fTkNfMV9IVl9EREkwX0REQ19T REEsIEdQSU9fTkNfMV9IVl9EREkwX0REQ19TREFfUEFELCAwIH0sCisJeyBHUElPX05DXzJfSFZf RERJMF9ERENfU0NMLCBHUElPX05DXzJfSFZfRERJMF9ERENfU0NMX1BBRCwgMCB9LAorCXsgR1BJ T19OQ18zX1BBTkVMMF9WRERFTiwgR1BJT19OQ18zX1BBTkVMMF9WRERFTl9QQUQsIDAgfSwKKwl7 IEdQSU9fTkNfNF9QQU5FTDBfQkxLRU4sIEdQSU9fTkNfNF9QQU5FTDBfQkxLRU5fUEFELCAwIH0s CisJeyBHUElPX05DXzVfUEFORUwwX0JMS0NUTCwgR1BJT19OQ181X1BBTkVMMF9CTEtDVExfUEFE LCAwIH0sCisJeyBHUElPX05DXzZfUENPTkYwLCBHUElPX05DXzZfUEFELCAwIH0sCisJeyBHUElP X05DXzdfUENPTkYwLCBHUElPX05DXzdfUEFELCAwIH0sCisJeyBHUElPX05DXzhfUENPTkYwLCBH UElPX05DXzhfUEFELCAwIH0sCisJeyBHUElPX05DXzlfUENPTkYwLCBHUElPX05DXzlfUEFELCAw IH0sCisJeyBHUElPX05DXzEwX1BDT05GMCwgR1BJT19OQ18xMF9QQUQsIDB9LAorCXsgR1BJT19O Q18xMV9QQ09ORjAsIEdQSU9fTkNfMTFfUEFELCAwfQorfTsKKworc3RhdGljIHU4ICptaXBpX2V4 ZWNfc2VuZF9wYWNrZXQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCB1OCAqZGF0YSkKK3sK Kwl1OCB0eXBlLCBieXRlLCBtb2RlLCB2YywgcG9ydDsKKwl1MTYgbGVuOworCisJYnl0ZSA9ICpk YXRhKys7CisJbW9kZSA9IChieXRlID4+IE1JUElfVFJBTlNGRVJfTU9ERV9TSElGVCkgJiAweDE7 CisJdmMgPSAoYnl0ZSA+PiBNSVBJX1ZJUlRVQUxfQ0hBTk5FTF9TSElGVCkgJiAweDM7CisJcG9y dCA9IChieXRlID4+IE1JUElfUE9SVF9TSElGVCkgJiAweDM7CisKKwkvKiBMUCBvciBIUyBtb2Rl ICovCisJaW50ZWxfZHNpLT5ocyA9IG1vZGU7CisKKwkvKiBnZXQgcGFja2V0IHR5cGUgYW5kIGlu Y3JlbWVudCB0aGUgcG9pbnRlciAqLworCXR5cGUgPSAqZGF0YSsrOworCisJbGVuID0gKigodTE2 ICopIGRhdGEpOworCWRhdGEgKz0gMjsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgTUlQSV9E U0lfR0VORVJJQ19TSE9SVF9XUklURV8wX1BBUkFNOgorCQlkc2lfdmNfZ2VuZXJpY193cml0ZV8w KGludGVsX2RzaSwgdmMpOworCQlicmVhazsKKwljYXNlIE1JUElfRFNJX0dFTkVSSUNfU0hPUlRf V1JJVEVfMV9QQVJBTToKKwkJZHNpX3ZjX2dlbmVyaWNfd3JpdGVfMShpbnRlbF9kc2ksIHZjLCAq ZGF0YSk7CisJCWJyZWFrOworCWNhc2UgTUlQSV9EU0lfR0VORVJJQ19TSE9SVF9XUklURV8yX1BB UkFNOgorCQlkc2lfdmNfZ2VuZXJpY193cml0ZV8yKGludGVsX2RzaSwgdmMsICpkYXRhLCAqKGRh dGEgKyAxKSk7CisJCWJyZWFrOworCWNhc2UgTUlQSV9EU0lfR0VORVJJQ19SRUFEX1JFUVVFU1Rf MF9QQVJBTToKKwljYXNlIE1JUElfRFNJX0dFTkVSSUNfUkVBRF9SRVFVRVNUXzFfUEFSQU06CisJ Y2FzZSBNSVBJX0RTSV9HRU5FUklDX1JFQURfUkVRVUVTVF8yX1BBUkFNOgorCQlEUk1fREVCVUdf RFJJVkVSKCJHZW5lcmljIFJlYWQgbm90IHlldCBpbXBsZW1lbnRlZCBvciB1c2VkXG4iKTsKKwkJ YnJlYWs7CisJY2FzZSBNSVBJX0RTSV9HRU5FUklDX0xPTkdfV1JJVEU6CisJCWRzaV92Y19nZW5l cmljX3dyaXRlKGludGVsX2RzaSwgdmMsIGRhdGEsIGxlbik7CisJCWJyZWFrOworCWNhc2UgTUlQ SV9EU0lfRENTX1NIT1JUX1dSSVRFOgorCQlkc2lfdmNfZGNzX3dyaXRlXzAoaW50ZWxfZHNpLCB2 YywgKmRhdGEpOworCQlicmVhazsKKwljYXNlIE1JUElfRFNJX0RDU19TSE9SVF9XUklURV9QQVJB TToKKwkJZHNpX3ZjX2Rjc193cml0ZV8xKGludGVsX2RzaSwgdmMsICpkYXRhLCAqKGRhdGEgKyAx KSk7CisJCWJyZWFrOworCWNhc2UgTUlQSV9EU0lfRENTX1JFQUQ6CisJCURSTV9ERUJVR19EUklW RVIoIkRDUyBSZWFkIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb3IgdXNlZFxuIik7CisJCWJyZWFrOwor CWNhc2UgTUlQSV9EU0lfRENTX0xPTkdfV1JJVEU6CisJCWRzaV92Y19kY3Nfd3JpdGUoaW50ZWxf ZHNpLCB2YywgZGF0YSwgbGVuKTsKKwkJYnJlYWs7CisJfTsKKworCWRhdGEgKz0gbGVuOworCisJ cmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyB1OCAqbWlwaV9leGVjX2RlbGF5KHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgdTggKmRhdGEpCit7CisJdTMyIGRlbGF5ID0gKigodTMyICopIGRh dGEpOworCisJRFJNX0RFQlVHX0RSSVZFUigiTUlQSTogZXhlY3V0aW5nIGRlbGF5IGVsZW1lbnRc biIpOworCXVzbGVlcF9yYW5nZShkZWxheSwgZGVsYXkgKyAxMCk7CisJZGF0YSArPSA0OworCisJ cmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyB1OCAqbWlwaV9leGVjX2dwaW8oc3RydWN0IGludGVs X2RzaSAqaW50ZWxfZHNpLCB1OCAqZGF0YSkKK3sKKwl1OCBncGlvLCBhY3Rpb247CisJdTE2IGZ1 bmN0aW9uLCBwYWQ7CisJdTMyIHZhbDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxf ZHNpLT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJNSVBJOiBleGVjdXRpbmcg Z3BpbyBlbGVtZW50XG4iKTsKKwlncGlvID0gKmRhdGErKzsKKworCS8qIHB1bGwgdXAvZG93biAq LworCWFjdGlvbiA9ICpkYXRhKys7CisKKwlmdW5jdGlvbiA9IGd0YWJsZVtncGlvXS5mdW5jdGlv bl9yZWc7CisJcGFkID0gZ3RhYmxlW2dwaW9dLnBhZF9yZWc7CisKKwltdXRleF9sb2NrKCZkZXZf cHJpdi0+ZHBpb19sb2NrKTsKKwlpZiAoIWd0YWJsZVtncGlvXS5pbml0KSB7CisJCS8qIHByb2dy YW0gdGhlIGZ1bmN0aW9uICovCisJCXZsdl9ncGlvX25jX3dyaXRlKGRldl9wcml2LCBmdW5jdGlv biwgMHgyMDAwQ0MwMCk7CisJCWd0YWJsZVtncGlvXS5pbml0ID0gMTsKKwl9CisKKwl2YWwgPSAw eDQgfCBhY3Rpb247CisKKwkvKiBwdWxsIHVwL2Rvd24gKi8KKwl2bHZfZ3Bpb19uY193cml0ZShk ZXZfcHJpdiwgcGFkLCB2YWwpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRwaW9fbG9jayk7 CisKKwlyZXR1cm4gZGF0YTsKK30KKwordHlwZWRlZiB1OCAqICgqZm5fbWlwaV9lbGVtX2V4ZWMp KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTggKmRhdGEpOworY29uc3QgZm5fbWlwaV9l bGVtX2V4ZWMgZXhlY19lbGVtW10gPSB7CisJTlVMTCwgLyogcmVzZXJ2ZWQgKi8KKwltaXBpX2V4 ZWNfc2VuZF9wYWNrZXQsCisJbWlwaV9leGVjX2RlbGF5LAorCW1pcGlfZXhlY19ncGlvLAorCU5V TEwsIC8qIHN0YXR1cyByZWFkOyBsYXRlciAqLworfTsKKworLyoKKyAqIE1JUEkgU2VxdWVuY2Ug ZnJvbSBWQlQgIzUzIHBhcnNpbmcgbG9naWMKKyAqIFdlIGhhdmUgYWxyZWFkeSBzZXBhcmF0ZWQg ZWFjaCBzZXFlbmNlIGR1cmluZyBiaW9zIHBhcnNpbmcKKyAqIEZvbGxvd2luZyBpcyBnZW5lcmlj IGV4ZWN1dGlvbiBmdW5jdGlvbiBmb3IgYW55IHNlcXVlbmNlCisgKi8KKworc3RhdGljIGNvbnN0 IGNoYXIgKnNlcV9uYW1lW10gPSB7CisJIlVOREVGSU5FRCIsCisJIk1JUElfU0VRX0FTU0VSVF9S RVNFVCIsCisJIk1JUElfU0VRX0lOSVRfT1RQIiwKKwkiTUlQSV9TRVFfRElTUExBWV9PTiIsCisJ Ik1JUElfU0VRX0RJU1BMQVlfT0ZGIiwKKwkiTUlQSV9TRVFfREVBU1NFUlRfUkVTRVQiCit9Owor CitzdGF0aWMgdm9pZCBnZW5lcmljX2V4ZWNfc2VxdWVuY2Uoc3RydWN0IGludGVsX2RzaSAqaW50 ZWxfZHNpLCBjaGFyICpzZXF1ZW5jZSkKK3sKKwl1OCAqZGF0YSA9IHNlcXVlbmNlOworCWZuX21p cGlfZWxlbV9leGVjIG1pcGlfZWxlbV9leGVjOworCWludCBpbmRleDsKKworCWlmICghc2VxdWVu Y2UpCisJCXJldHVybjsKKworCURSTV9ERUJVR19EUklWRVIoIlN0YXJ0aW5nIE1JUEkgc2VxdWVu Y2UgLSAlc1xuIiwgc2VxX25hbWVbKmRhdGFdKTsKKworCS8qIGdvIHRvIHRoZSBmaXJzdCBlbGVt ZW50IG9mIHRoZSBzZXF1ZW5jZSAqLworCWRhdGErKzsKKworCS8qIHBhcnNlIGVhY2ggYnl0ZSB0 aWxsIHdlIHJlYWNoIGVuZCBvZiBzZXF1ZW5jZSBieXRlIC0gMHgwMCAqLworCXdoaWxlICgxKSB7 CisJCWluZGV4ID0gKmRhdGE7CisJCW1pcGlfZWxlbV9leGVjID0gZXhlY19lbGVtW2luZGV4XTsK KwkJaWYgKCFtaXBpX2VsZW1fZXhlYykgeworCQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNSVBJ IGVsZW1lbnQsIHNraXBwaW5nIHNlcXVlbmNlIGV4ZWN1dGlvblxuIik7CisJCQlyZXR1cm47CisJ CX0KKworCQkvKiBnb3RvIGVsZW1lbnQgcGF5bG9hZCAqLworCQlkYXRhKys7CisKKwkJLyogZXhl Y3V0ZSB0aGUgZWxlbWVudCBzcGVjaWZjIHJvdGluZXMgKi8KKwkJZGF0YSA9IG1pcGlfZWxlbV9l eGVjKGludGVsX2RzaSwgZGF0YSk7CisKKwkJLyoKKwkJICogQWZ0ZXIgcHJvY2Vzc2luZyB0aGUg ZWxlbWVudCwgZGF0YSBzaG91bGQgcG9pbnQgdG8KKwkJICogbmV4dCBlbGVtZW50IG9yIGVuZCBv ZiBzZXF1ZW5jZQorCQkgKiBjaGVjayBpZiBoYXZlIHdlIHJlYWNoZWQgZW5kIG9mIHNlcXVlbmNl CisJCSAqLworCQlpZiAoKmRhdGEgPT0gMHgwMCkKKwkJCWJyZWFrOworCX0KK30KKworc3RhdGlj IGJvb2wgZ2VuZXJpY19pbml0KHN0cnVjdCBpbnRlbF9kc2lfZGV2aWNlICpkc2kpCit7CisJc3Ry dWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gY29udGFpbmVyX29mKGRzaSwgc3RydWN0IGludGVs X2RzaSwgZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJh c2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IG1pcGlfY29uZmlnICptaXBpX2NvbmZpZyA9IGRldl9wcml2LT52YnQu ZHNpLmNvbmZpZzsKKwlzdHJ1Y3QgbWlwaV9wcHNfZGF0YSAqcHBzID0gZGV2X3ByaXYtPnZidC5k c2kucHBzOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gZGV2X3ByaXYtPnZidC5s ZnBfbHZkc192YnRfbW9kZTsKKwl1MzIgYml0c19wZXJfcGl4ZWwgPSAyNDsKKwl1MzIgdGxweF9u cywgZXh0cmFfYnl0ZV9jb3VudCwgYml0cmF0ZSwgdGxweF91aTsKKwl1MzIgdWlfbnVtLCB1aV9k ZW47CisJdTMyIHByZXBhcmVfY250LCBleGl0X3plcm9fY250LCBjbGtfemVyb19jbnQsIHRyYWls X2NudDsKKwl1MzIgdGhzX3ByZXBhcmVfbnMsIHRjbGtfdHJhaWxfbnM7CisJdTMyIHRjbGtfcHJl cGFyZV9jbGt6ZXJvLCB0aHNfcHJlcGFyZV9oc3plcm87CisKKwlEUk1fREVCVUdfS01TKCJcbiIp OworCisJaW50ZWxfZHNpLT5lb3RwX3BrdCA9IG1pcGlfY29uZmlnLT5lb3RfcGt0X2Rpc2FibGVk ID8gMCA6IDE7CisJaW50ZWxfZHNpLT5jbG9ja19zdG9wID0gbWlwaV9jb25maWctPmVuYWJsZV9j bGtfc3RvcCA/IDEgOiAwOworCWludGVsX2RzaS0+bGFuZV9jb3VudCA9IG1pcGlfY29uZmlnLT5s YW5lX2NudCArIDE7CisJaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQgPSBtaXBpX2NvbmZpZy0+dmlk ZW9tb2RlX2NvbG9yX2Zvcm1hdCA8PCA3OworCisJaWYgKGludGVsX2RzaS0+cGl4ZWxfZm9ybWF0 ID09IFZJRF9NT0RFX0ZPUk1BVF9SR0I2NjYpCisJCWJpdHNfcGVyX3BpeGVsID0gMTg7CisJZWxz ZSBpZiAoaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQgPT0gVklEX01PREVfRk9STUFUX1JHQjU2NSkK KwkJYml0c19wZXJfcGl4ZWwgPSAxNjsKKworCWJpdHJhdGUgPSAobW9kZS0+Y2xvY2sgKiBiaXRz X3Blcl9waXhlbCkgLyBpbnRlbF9kc2ktPmxhbmVfY291bnQ7CisKKwlpbnRlbF9kc2ktPm9wZXJh dGlvbl9tb2RlID0gbWlwaV9jb25maWctPmlzX2NtZF9tb2RlOworCWludGVsX2RzaS0+dmlkZW9f bW9kZV9mb3JtYXQgPSBtaXBpX2NvbmZpZy0+dmlkZW9fdHJhbnNmZXJfbW9kZTsKKwlpbnRlbF9k c2ktPmVzY2FwZV9jbGtfZGl2ID0gbWlwaV9jb25maWctPmJ5dGVfY2xrX3NlbDsKKwlpbnRlbF9k c2ktPmxwX3J4X3RpbWVvdXQgPSBtaXBpX2NvbmZpZy0+bHBfcnhfdGltZW91dDsKKwlpbnRlbF9k c2ktPnR1cm5fYXJuZF92YWwgPSBtaXBpX2NvbmZpZy0+dHVybl9hcm91bmRfdGltZW91dDsKKwlp bnRlbF9kc2ktPnJzdF90aW1lcl92YWwgPSBtaXBpX2NvbmZpZy0+ZGV2aWNlX3Jlc2V0X3RpbWVy OworCWludGVsX2RzaS0+aW5pdF9jb3VudCA9IG1pcGlfY29uZmlnLT5tYXN0ZXJfaW5pdF90aW1l cjsKKwlpbnRlbF9kc2ktPmJ3X3RpbWVyID0gbWlwaV9jb25maWctPmRiaV9id190aW1lcjsKKwlp bnRlbF9kc2ktPnZpZGVvX2ZybXRfY2ZnX2JpdHMgPSBtaXBpX2NvbmZpZy0+YnRhX2VuYWJsZWQg PyBESVNBQkxFX1ZJREVPX0JUQSA6IDA7CisKKwlzd2l0Y2ggKGludGVsX2RzaS0+ZXNjYXBlX2Ns a19kaXYpIHsKKwljYXNlIDA6CisJCXRscHhfbnMgPSA1MDsKKwkJYnJlYWs7CisJY2FzZSAxOgor CQl0bHB4X25zID0gMTAwOworCQlicmVhazsKKworCWNhc2UgMjoKKwkJdGxweF9ucyA9IDIwMDsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdGxweF9ucyA9IDUwOworCQlicmVhazsKKwl9CisKKwlz d2l0Y2ggKGludGVsX2RzaS0+bGFuZV9jb3VudCkgeworCWNhc2UgMToKKwljYXNlIDI6CisJCWV4 dHJhX2J5dGVfY291bnQgPSAyOworCQlicmVhazsKKwljYXNlIDM6CisJCWV4dHJhX2J5dGVfY291 bnQgPSA0OworCQlicmVhazsKKwljYXNlIDQ6CisJZGVmYXVsdDoKKwkJZXh0cmFfYnl0ZV9jb3Vu dCA9IDM7CisJCWJyZWFrOworCX0KKworCS8qCisJICogdWkocykgPSAxL2YgW2YgaW4gaHpdCisJ ICogdWkobnMpID0gMTBeOS9mKjEwXjYgW2YgaW4gTWh6XSAtPiAxMF4zL2YoTWh6KQorCSAqCisJ ICogTFAgYnl0ZSBjbG9jayA9IFRMUFgvOHVpCisJICoKKwkgKiBTaW5jZSB0eGRkcmNsa2hzX2kg aXMgMnhVSSwgdGhlIGNvdW50IHZhbHVlcyBwcm9ncmFtbWVkIGluCisJICogRFBIWSBwYXJhbSBy ZWdpc3RlciBhcmUgZGl2aWRlZCBieSAyCisJICoKKwkgKi8KKworCS8qIGluIEticHMgKi8KKwl1 aV9udW0gPSBiaXRyYXRlOworCXVpX2RlbiA9IE5TX01IWl9SQVRJTzsKKworCXRjbGtfcHJlcGFy ZV9jbGt6ZXJvID0gbWlwaV9jb25maWctPnRjbGtfcHJlcGFyZV9jbGt6ZXJvOworCXRoc19wcmVw YXJlX2hzemVybyA9IG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZV9oc3plcm87CisKKwkvKiBCMDYw ICovCisJaW50ZWxfZHNpLT5scF9ieXRlX2NsayA9IENFSUxfRElWKHRscHhfbnMgKiB1aV9udW0s IDggKiB1aV9kZW4pOworCisJLyogY291bnQgdmFsdWVzIGluIFVJID0gKG5zIHZhbHVlKSAqIChi aXRyYXRlIC8gKDIgKiAxMF42KSkgKi8KKwkvKiBwcmVwYXJlIGNvdW50ICovCisJdGhzX3ByZXBh cmVfbnMgPQorCQkobWlwaV9jb25maWctPnRoc19wcmVwYXJlID4gIG1pcGlfY29uZmlnLT50Y2xr X3ByZXBhcmUpID8KKwkJCQltaXBpX2NvbmZpZy0+dGhzX3ByZXBhcmUgOgorCQkJCW1pcGlfY29u ZmlnLT50Y2xrX3ByZXBhcmU7CisKKwlwcmVwYXJlX2NudCA9IENFSUxfRElWKHRoc19wcmVwYXJl X25zICogdWlfbnVtLAl1aV9kZW4gKiAyKTsKKworCS8qIGV4aXQgemVybyBjb3VudCAqLworCWV4 aXRfemVyb19jbnQgPSBDRUlMX0RJVigKKwkJCQkodGhzX3ByZXBhcmVfaHN6ZXJvIC0gdGhzX3By ZXBhcmVfbnMpICogdWlfbnVtLAorCQkJCXVpX2RlbiAqIDIKKwkJCQkpOworCisJLyoKKwkgKiBF eGl0IHplcm8gIGlzIHVuaWZpZWQgdmFsIHRoc196ZXJvIGFuZCB0aHNfZXhpdAorCSAqIG1pbmlt dW0gdmFsdWUgZm9yIHRoc19leGl0ID0gMTEwbnMKKwkgKiBtaW4gKGV4aXRfemVyb19jbnQgKiAy KSA9IDExMC9VSQorCSAqIGV4aXRfemVyb19jbnQgPSA1NS9VSQorCSAqLworCSBpZiAoZXhpdF96 ZXJvX2NudCA8ICg1NSAqIHVpX251bSAvIHVpX2RlbikpCisJCWlmICgoNTUgKiB1aV9udW0pICUg dWlfZGVuKQorCQkJZXhpdF96ZXJvX2NudCArPSAxOworCisJLyogY2xrIHplcm8gY291bnQgKi8K KwljbGtfemVyb19jbnQgPSBDRUlMX0RJVigKKwkJCSh0Y2xrX3ByZXBhcmVfY2xremVybyAtCXRo c19wcmVwYXJlX25zKQorCQkJKiB1aV9udW0sIDIgKiB1aV9kZW4pOworCisJLyogdHJhaWwgY291 bnQgKi8KKwl0Y2xrX3RyYWlsX25zID0gKG1pcGlfY29uZmlnLT50Y2xrX3RyYWlsID4gbWlwaV9j b25maWctPnRoc190cmFpbCkgPworCQkJbWlwaV9jb25maWctPnRjbGtfdHJhaWwgOiBtaXBpX2Nv bmZpZy0+dGhzX3RyYWlsOworCXRyYWlsX2NudCA9IENFSUxfRElWKHRjbGtfdHJhaWxfbnMgKiB1 aV9udW0sIDIgKiB1aV9kZW4pOworCisJaWYgKHByZXBhcmVfY250ID4gUFJFUEFSRV9DTlRfTUFY IHx8CisJCWV4aXRfemVyb19jbnQgPiBFWElUX1pFUk9fQ05UX01BWCB8fAorCQljbGtfemVyb19j bnQgPiBDTEtfWkVST19DTlRfTUFYIHx8CisJCXRyYWlsX2NudCA+IFRSQUlMX0NOVF9NQVgpCisJ CURSTV9ERUJVR19EUklWRVIoIlZhbHVlcyBjcm9zc2luZyBtYXhpbXVtIGxpbWl0c1xuIik7CisK KwlpZiAocHJlcGFyZV9jbnQgPiBQUkVQQVJFX0NOVF9NQVgpCisJCXByZXBhcmVfY250ID0gUFJF UEFSRV9DTlRfTUFYOworCisJaWYgKGV4aXRfemVyb19jbnQgPiBFWElUX1pFUk9fQ05UX01BWCkK KwkJZXhpdF96ZXJvX2NudCA9IEVYSVRfWkVST19DTlRfTUFYOworCisJaWYgKGNsa196ZXJvX2Nu dCA+IENMS19aRVJPX0NOVF9NQVgpCisJCWNsa196ZXJvX2NudCA9IENMS19aRVJPX0NOVF9NQVg7 CisKKwlpZiAodHJhaWxfY250ID4gVFJBSUxfQ05UX01BWCkKKwkJdHJhaWxfY250ID0gVFJBSUxf Q05UX01BWDsKKworCS8qIEIwODAgKi8KKwlpbnRlbF9kc2ktPmRwaHlfcmVnID0gZXhpdF96ZXJv X2NudCA8PCAyNCB8IHRyYWlsX2NudCA8PCAxNiB8CisJCQkJCQljbGtfemVyb19jbnQgPDwgOCB8 IHByZXBhcmVfY250OworCisJLyoKKwkgKiBMUCB0byBIUyBzd2l0Y2ggY291bnQgPSA0VExQWCAr IFBSRVBfQ09VTlQgKiAyICsgRVhJVF9aRVJPX0NPVU5UICogMgorCSAqCQkJCQkrIDEwVUkgKyBF eHRyYSBCeXRlIENvdW50CisJICoKKwkgKiBIUyB0byBMUCBzd2l0Y2ggY291bnQgPSBUSFMtVFJB SUwgKyAyVExQWCArIEV4dHJhIEJ5dGUgQ291bnQKKwkgKiBFeHRyYSBCeXRlIENvdW50IGlzIGNh bGN1bGF0ZWQgYWNjb3JkaW5nIHRvIG51bWJlciBvZiBsYW5lcy4KKwkgKiBIaWdoIExvdyBTd2l0 Y2ggQ291bnQgaXMgdGhlIE1heCBvZiBMUCB0byBIUyBhbmQKKwkgKiBIUyB0byBMUCBzd2l0Y2gg Y291bnQKKwkgKgorCSAqLworCXRscHhfdWkgPSBDRUlMX0RJVih0bHB4X25zICogdWlfbnVtLCB1 aV9kZW4pOworCisJLyogQjA0NCAqLworCWludGVsX2RzaS0+aHNfdG9fbHBfY291bnQgPQorCQlD RUlMX0RJVigKKwkJCTQgKiB0bHB4X3VpICsgcHJlcGFyZV9jbnQgKiAyICsKKwkJCWV4aXRfemVy b19jbnQgKiAyICsgMTAsCisJCQk4KTsKKworCWludGVsX2RzaS0+aHNfdG9fbHBfY291bnQgKz0g ZXh0cmFfYnl0ZV9jb3VudDsKKworCS8qIEIwODggKi8KKwkvKiBMUCAtPiBIUyBmb3IgY2xvY2sg bGFuZXMKKwkgKiBMUCBjbGsgc3luYyArIExQMTEgKyBMUDAxICsgdGNsa19wcmVwYXJlICsgdGNs a196ZXJvICsKKwkgKgkJCQkJCWV4dHJhIGJ5dGUgY291bnQKKwkgKiAyVFBMWCArIDFUTFBYICsg MSBUUExYKGluIG5zKSArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJvX2NudCAqCisJICoJCQkJ CTIoaW4gVUkpICsgZXh0cmEgYnl0ZSBjb3VudAorCSAqIEluIGJ5dGVjbGtzID0gKDRUTFBYICsg cHJlcGFyZV9jbnQgKiAyICsgY2xrX3plcm9fY250ICoyIChpbiBVSSkpIC8KKwkgKgkJCQkJOCAr IGV4dHJhIGJ5dGUgY291bnQKKwkgKi8KKwlpbnRlbF9kc2ktPmNsa19scF90b19oc19jb3VudCA9 CisJCUNFSUxfRElWKAorCQkJNCAqIHRscHhfdWkgKyBwcmVwYXJlX2NudCAqIDIgKworCQkJY2xr X3plcm9fY250ICogMiwKKwkJCTgpOworCisJaW50ZWxfZHNpLT5jbGtfbHBfdG9faHNfY291bnQg Kz0gZXh0cmFfYnl0ZV9jb3VudDsKKworCS8qIEhTLT5MUCBmb3IgQ2xvY2sgTGFuZXMKKwkgKiBM b3cgUG93ZXIgY2xvY2sgc3luY2hyb25pc2F0aW9ucyArIDFUeCBieXRlY2xrICsgdGNsa190cmFp bCArCisJICoJCQkJCQlFeHRyYSBieXRlIGNvdW50CisJICogMlRMUFggKyA4VUkgKyAodHJhaWxf Y291bnQqMikoaW4gVUkpICsgRXh0cmEgYnl0ZSBjb3VudAorCSAqIEluIGJ5dGVjbGtzID0gKDIq VExweChpbiBVSSkgKyB0cmFpbF9jb3VudCoyICs4KShpbiBVSSkvOCArCisJICoJCQkJCQlFeHRy YSBieXRlIGNvdW50CisJICovCisJaW50ZWxfZHNpLT5jbGtfaHNfdG9fbHBfY291bnQgPQorCQlD RUlMX0RJVigyICogdGxweF91aSArIHRyYWlsX2NudCAqIDIgKyA4LAorCQkJOCk7CisJaW50ZWxf ZHNpLT5jbGtfaHNfdG9fbHBfY291bnQgKz0gZXh0cmFfYnl0ZV9jb3VudDsKKworCURSTV9ERUJV R19LTVMoIkVPVCAlc1xuIiwgaW50ZWxfZHNpLT5lb3RwX3BrdCA/ICJFTkFCTEVEIiA6ICJESVNB QkxFRCIpOworCURSTV9ERUJVR19LTVMoIkNMT0NLU1RPUCAlc1xuIiwgaW50ZWxfZHNpLT5jbG9j a19zdG9wID8KKwkJCQkJCSJFTkFCTEVEIiA6ICJESVNBQkxFRCIpOworCURSTV9ERUJVR19LTVMo Ik1vZGUgJXNcbiIsIGludGVsX2RzaS0+b3BlcmF0aW9uX21vZGUgPyAiQ09NTUFORCIgOiAiVklE RU8iKTsKKwlEUk1fREVCVUdfS01TKCJQaXhlbCBGb3JtYXQgJWRcbiIsIGludGVsX2RzaS0+cGl4 ZWxfZm9ybWF0KTsKKwlEUk1fREVCVUdfS01TKCJUTFBYICVkXG4iLCBpbnRlbF9kc2ktPmVzY2Fw ZV9jbGtfZGl2KTsKKwlEUk1fREVCVUdfS01TKCJMUCBSWCBUaW1lb3V0IDB4JXhcbiIsIGludGVs X2RzaS0+bHBfcnhfdGltZW91dCk7CisJRFJNX0RFQlVHX0tNUygiVHVybmFyb3VuZCBUaW1lb3V0 IDB4JXhcbiIsIGludGVsX2RzaS0+dHVybl9hcm5kX3ZhbCk7CisJRFJNX0RFQlVHX0tNUygiSW5p dCBDb3VudCAweCV4XG4iLCBpbnRlbF9kc2ktPmluaXRfY291bnQpOworCURSTV9ERUJVR19LTVMo IkhTIHRvIExQIENvdW50IDB4JXhcbiIsIGludGVsX2RzaS0+aHNfdG9fbHBfY291bnQpOworCURS TV9ERUJVR19LTVMoIkxQIEJ5dGUgQ2xvY2sgJWRcbiIsIGludGVsX2RzaS0+bHBfYnl0ZV9jbGsp OworCURSTV9ERUJVR19LTVMoIkRCSSBCVyBUaW1lciAweCV4XG4iLCBpbnRlbF9kc2ktPmJ3X3Rp bWVyKTsKKwlEUk1fREVCVUdfS01TKCJMUCB0byBIUyBDbG9jayBDb3VudCAweCV4XG4iLCBpbnRl bF9kc2ktPmNsa19scF90b19oc19jb3VudCk7CisJRFJNX0RFQlVHX0tNUygiSFMgdG8gTFAgQ2xv Y2sgQ291bnQgMHgleFxuIiwgaW50ZWxfZHNpLT5jbGtfaHNfdG9fbHBfY291bnQpOworCURSTV9E RUJVR19LTVMoIkJUQSAlc1xuIiwKKwkJCWludGVsX2RzaS0+dmlkZW9fZnJtdF9jZmdfYml0cyAm IERJU0FCTEVfVklERU9fQlRBID8KKwkJCSJESVNBQkxFRCIgOiAiRU5BQkxFRCIpOworCURSTV9E RUJVR19LTVMoIkIwNjAgPSAweCVYeCwgQjA4MCA9IDB4JXgsIEIwNDQgPSAweCV4LCBCMDg4ID0g MHgleFxuIiwKKwkJCWludGVsX2RzaS0+bHBfYnl0ZV9jbGssIGludGVsX2RzaS0+ZHBoeV9yZWcs IGludGVsX2RzaS0+aHNfdG9fbHBfY291bnQsCisJCQkoaW50ZWxfZHNpLT5jbGtfbHBfdG9faHNf Y291bnQgPDwgTFBfSFNfU1NXX0NOVF9TSElGVCkgfAorCQkJKGludGVsX2RzaS0+Y2xrX2hzX3Rv X2xwX2NvdW50IDw8IEhTX0xQX1BXUl9TV19DTlRfU0hJRlQpKTsKKworCS8qIGRlbGF5cyBpbiBW QlQgYXJlIGluIHVuaXQgb2YgMTAwdXMsIHNvIG5lZWQgdG8gY29udmVydAorCSAqIGhlcmUgaW4g bXMKKwkgKiBEZWxheSAoMTAwdXMpICogMTAwIC8xMDAwID0gRGVsYXkgLyAxMCAobXMpICovCisJ aW50ZWxfZHNpLT5iYWNrbGlnaHRfb2ZmX2RlbGF5ID0gcHBzLT5ibF9kaXNhYmxlX2RlbGF5IC8g MTA7CisJaW50ZWxfZHNpLT5iYWNrbGlnaHRfb25fZGVsYXkgPSBwcHMtPmJsX2VuYWJsZV9kZWxh eSAvIDEwOworCWludGVsX2RzaS0+cGFuZWxfb25fZGVsYXkgPSBwcHMtPnBhbmVsX29uX2RlbGF5 IC8gMTA7CisJaW50ZWxfZHNpLT5wYW5lbF9vZmZfZGVsYXkgPSBwcHMtPnBhbmVsX29mZl9kZWxh eSAvIDEwOworCWludGVsX2RzaS0+cGFuZWxfcHdyX2N5Y2xlX2RlbGF5ID0gcHBzLT5wYW5lbF9w b3dlcl9jeWNsZV9kZWxheSAvIDEwOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbnQg Z2VuZXJpY19tb2RlX3ZhbGlkKHN0cnVjdCBpbnRlbF9kc2lfZGV2aWNlICpkc2ksCisJCSAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXJldHVybiBNT0RFX09LOworfQorCitz dGF0aWMgYm9vbCBnZW5lcmljX21vZGVfZml4dXAoc3RydWN0IGludGVsX2RzaV9kZXZpY2UgKmRz aSwKKwkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkgICAgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpIHsKKwlyZXR1cm4gdHJ1ZTsKK30K Kworc3RhdGljIHZvaWQgZ2VuZXJpY19wYW5lbF9yZXNldChzdHJ1Y3QgaW50ZWxfZHNpX2Rldmlj ZSAqZHNpKQoreworCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGNvbnRhaW5lcl9vZihk c2ksIHN0cnVjdCBpbnRlbF9kc2ksIGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2RzaS0+YmFzZS5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJY2hhciAqc2VxdWVuY2UgPSBkZXZfcHJpdi0+dmJ0 LmRzaS5zZXF1ZW5jZVtNSVBJX1NFUV9BU1NFUlRfUkVTRVRdOworCisJZ2VuZXJpY19leGVjX3Nl cXVlbmNlKGludGVsX2RzaSwgc2VxdWVuY2UpOworfQorCitzdGF0aWMgdm9pZCBnZW5lcmljX2Rp c2FibGVfcGFuZWxfcG93ZXIoc3RydWN0IGludGVsX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1 Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBjb250YWluZXJfb2YoZHNpLCBzdHJ1Y3QgaW50ZWxf ZHNpLCBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2ktPmJhc2UuYmFz ZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKworCWNoYXIgKnNlcXVlbmNlID0gZGV2X3ByaXYtPnZidC5kc2kuc2VxdWVuY2VbTUlQ SV9TRVFfREVBU1NFUlRfUkVTRVRdOworCisJZ2VuZXJpY19leGVjX3NlcXVlbmNlKGludGVsX2Rz aSwgc2VxdWVuY2UpOworfQorCitzdGF0aWMgdm9pZCBnZW5lcmljX3NlbmRfb3RwX2NtZHMoc3Ry dWN0IGludGVsX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9k c2kgPSBjb250YWluZXJfb2YoZHNpLCBzdHJ1Y3QgaW50ZWxfZHNpLCBkZXYpOworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2ktPmJhc2UuYmFzZS5kZXY7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWNoYXIgKnNlcXVl bmNlID0gZGV2X3ByaXYtPnZidC5kc2kuc2VxdWVuY2VbTUlQSV9TRVFfSU5JVF9PVFBdOworCisJ Z2VuZXJpY19leGVjX3NlcXVlbmNlKGludGVsX2RzaSwgc2VxdWVuY2UpOworfQorCitzdGF0aWMg dm9pZCBnZW5lcmljX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHNpX2RldmljZSAqZHNpKQoreworCXN0 cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGNvbnRhaW5lcl9vZihkc2ksIHN0cnVjdCBpbnRl bF9kc2ksIGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFzZS5i YXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCisJY2hhciAqc2VxdWVuY2UgPSBkZXZfcHJpdi0+dmJ0LmRzaS5zZXF1ZW5jZVtN SVBJX1NFUV9ESVNQTEFZX09OXTsKKworCWdlbmVyaWNfZXhlY19zZXF1ZW5jZShpbnRlbF9kc2ks IHNlcXVlbmNlKTsKK30KKworc3RhdGljIHZvaWQgZ2VuZXJpY19kaXNhYmxlKHN0cnVjdCBpbnRl bF9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gY29u dGFpbmVyX29mKGRzaSwgc3RydWN0IGludGVsX2RzaSwgZGV2KTsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwljaGFyICpzZXF1ZW5jZSA9IGRl dl9wcml2LT52YnQuZHNpLnNlcXVlbmNlW01JUElfU0VRX0RJU1BMQVlfT0ZGXTsKKworCWdlbmVy aWNfZXhlY19zZXF1ZW5jZShpbnRlbF9kc2ksIHNlcXVlbmNlKTsKK30KKworc3RhdGljIGVudW0g ZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgZ2VuZXJpY19kZXRlY3Qoc3RydWN0IGludGVsX2RzaV9kZXZp Y2UgKmRzaSkKK3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0 YXRpYyBib29sIGdlbmVyaWNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9kc2lfZGV2aWNlICpk ZXYpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqZ2VuZXJpY19nZXRfbW9kZXMoc3RydWN0IGludGVsX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlz dHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBjb250YWluZXJfb2YoZHNpLCBzdHJ1Y3QgaW50 ZWxfZHNpLCBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2ktPmJhc2Uu YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKworCWRldl9wcml2LT52YnQubGZwX2x2ZHNfdmJ0X21vZGUtPnR5cGUgfD0gRFJN X01PREVfVFlQRV9QUkVGRVJSRUQ7CisJcmV0dXJuIGRldl9wcml2LT52YnQubGZwX2x2ZHNfdmJ0 X21vZGU7Cit9CisKK3N0YXRpYyB2b2lkIGdlbmVyaWNfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZHNp X2RldmljZSAqZHNpKSB7IH0KKworLyogQ2FsbGJhY2tzLiBXZSBtaWdodCBub3QgbmVlZCB0aGVt IGFsbC4gKi8KK3N0cnVjdCBpbnRlbF9kc2lfZGV2X29wcyB2YnRfZ2VuZXJpY19kc2lfZGlzcGxh eV9vcHMgPSB7CisJLmluaXQgPSBnZW5lcmljX2luaXQsCisJLm1vZGVfdmFsaWQgPSBnZW5lcmlj X21vZGVfdmFsaWQsCisJLm1vZGVfZml4dXAgPSBnZW5lcmljX21vZGVfZml4dXAsCisJLnBhbmVs X3Jlc2V0ID0gZ2VuZXJpY19wYW5lbF9yZXNldCwKKwkuZGlzYWJsZV9wYW5lbF9wb3dlciA9IGdl bmVyaWNfZGlzYWJsZV9wYW5lbF9wb3dlciwKKwkuc2VuZF9vdHBfY21kcyA9IGdlbmVyaWNfc2Vu ZF9vdHBfY21kcywKKwkuZW5hYmxlID0gZ2VuZXJpY19lbmFibGUsCisJLmRpc2FibGUgPSBnZW5l cmljX2Rpc2FibGUsCisJLmRldGVjdCA9IGdlbmVyaWNfZGV0ZWN0LAorCS5nZXRfaHdfc3RhdGUg PSBnZW5lcmljX2dldF9od19zdGF0ZSwKKwkuZ2V0X21vZGVzID0gZ2VuZXJpY19nZXRfbW9kZXMs CisJLmRlc3Ryb3kgPSBnZW5lcmljX2Rlc3Ryb3ksCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2ku YwppbmRleCAwZDRkZDU0Li43ZjFkZGFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwpAQCAt MzUsNiArMzUsMTEgQEAKIAogLyogdGhlIHN1Yi1lbmNvZGVycyBha2EgcGFuZWwgZHJpdmVycyAq Lwogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kc2lfZGV2aWNlIGludGVsX2RzaV9kZXZpY2Vz W10gPSB7CisJeworCQkucGFuZWxfaWQgPSBNSVBJX0RTSV9HRU5FUklDX1BBTkVMX0lELAorCQku bmFtZSA9ICJ2YnQtZ2VuZXJpYy1kc2ktdmlkLW1vZGUtZGlzcGxheSIsCisJCS5kZXZfb3BzID0g JnZidF9nZW5lcmljX2RzaV9kaXNwbGF5X29wcywKKwl9LAogfTsKIAogc3RhdGljIHZvaWQgYmFu ZF9nYXBfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2kuaAppbmRleCBlM2Y0ZTkxLi4zMWRiMzNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuaApAQCAtMTMzLDQgKzEzMyw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2Rz aSAqZW5jX3RvX2ludGVsX2RzaShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiBleHRlcm4g dm9pZCB2bHZfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwog ZXh0ZXJuIHZvaWQgdmx2X2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2Rlcik7CiAKK2V4dGVybiBzdHJ1Y3QgaW50ZWxfZHNpX2Rldl9vcHMgdmJ0X2dlbmVyaWNfZHNp X2Rpc3BsYXlfb3BzOworCiAjZW5kaWYgLyogX0lOVEVMX0RTSV9IICovCi0tIAoxLjguMy4yCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=