From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 2/5] drm/i915/cnl+: Move the combo PHY init/uninit code to a new file Date: Tue, 6 Nov 2018 18:06:18 +0200 Message-ID: <20181106160621.23057-3-imre.deak@intel.com> References: <20181106160621.23057-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 866BA6E389 for ; Tue, 6 Nov 2018 16:06:28 +0000 (UTC) In-Reply-To: <20181106160621.23057-1-imre.deak@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@lists.freedesktop.org Cc: Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org U2ltaWxhcmx5IHRvIHRoZSBHRU45X0xQIERQSU8gUEhZIGNvZGUga2VlcCB0aGUgQ05MKyBjb21i byBQSFkgY29kZSBpbiBhCnNlcGFyYXRlIGZpbGUuCgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KCnYy OgotIFVzZSBTUERYIGxpY2Vuc2UgdGFnIGluc3RlYWQgb2YgYm9pbGVycGxhdGUuIChSb2RyaWdv KQoKU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgpDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CkNjOiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogSm9zw6kg Um9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5k ZWFrQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICA2ICsrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb21ib19waHkuYyAgfCAxNDEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYyB8IDEyNyArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQs IDE1NiBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29tYm9fcGh5LmMKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CmluZGV4IDZmYmRhNTk3NzY1OC4uMGZmODc4Yzk5NGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpA QCAtMTEzLDYgKzExMyw3IEBAIGk5MTUteSArPSBpbnRlbF9hdWRpby5vIFwKIAkgIGludGVsX2Jp b3MubyBcCiAJICBpbnRlbF9jZGNsay5vIFwKIAkgIGludGVsX2NvbG9yLm8gXAorCSAgaW50ZWxf Y29tYm9fcGh5Lm8gXAogCSAgaW50ZWxfY29ubmVjdG9yLm8gXAogCSAgaW50ZWxfZGlzcGxheS5v IFwKIAkgIGludGVsX2RwaW9fcGh5Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMmE4 OGE3ZWI4NzFiLi5lZjQ3Y2FlMTM1NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzU3 MSw2ICszNTcxLDEyIEBAIHZvaWQgdmx2X3BoeV9wcmVfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiB2b2lkIHZsdl9waHlfcmVzZXRfbGFuZXMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlKTsKIAorLyogaW50ZWxfY29tYm9fcGh5LmMgKi8KK3ZvaWQgaWNsX2Nv bWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBp Y2xfY29tYm9fcGh5c191bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK K3ZvaWQgY25sX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwordm9pZCBjbmxfY29tYm9fcGh5c191bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKKwogaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IHZhbCk7CiBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKTsKIHU2NCBpbnRlbF9yYzZfcmVzaWRlbmN5 X25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbWJvX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29tYm9fcGh5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li44ZGQwYTNjNjhmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb21ib19waHkuYwpAQCAtMCwwICsxLDE0MSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlv bgorICovCisKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKworZW51bSB7CisJUFJPQ01PTl8wXzg1 Vl9ET1RfMCwKKwlQUk9DTU9OXzBfOTVWX0RPVF8wLAorCVBST0NNT05fMF85NVZfRE9UXzEsCisJ UFJPQ01PTl8xXzA1Vl9ET1RfMCwKKwlQUk9DTU9OXzFfMDVWX0RPVF8xLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiB7CisJdTMyIGR3MSwgZHc5LCBkdzEwOworfSBjbmxf cHJvY21vbl92YWx1ZXNbXSA9IHsKKwlbUFJPQ01PTl8wXzg1Vl9ET1RfMF0gPQorCQl7IC5kdzEg PSAweDAwMDAwMDAwLCAuZHc5ID0gMHg2MkFCNjdCQiwgLmR3MTAgPSAweDUxOTE0Rjk2LCB9LAor CVtQUk9DTU9OXzBfOTVWX0RPVF8wXSA9CisJCXsgLmR3MSA9IDB4MDAwMDAwMDAsIC5kdzkgPSAw eDg2RTE3MkM3LCAuZHcxMCA9IDB4NzdDQTVFQUIsIH0sCisJW1BST0NNT05fMF85NVZfRE9UXzFd ID0KKwkJeyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4OTNGODdGRTEsIC5kdzEwID0gMHg4 QUU4NzFDNSwgfSwKKwlbUFJPQ01PTl8xXzA1Vl9ET1RfMF0gPQorCQl7IC5kdzEgPSAweDAwMDAw MDAwLCAuZHc5ID0gMHg5OEZBODJERCwgLmR3MTAgPSAweDg5RTQ2REMxLCB9LAorCVtQUk9DTU9O XzFfMDVWX0RPVF8xXSA9CisJCXsgLmR3MSA9IDB4MDA0NDAwMDAsIC5kdzkgPSAweDlBMDBBQjI1 LCAuZHcxMCA9IDB4OEFFMzhGRjEsIH0sCit9OworCisvKgorICogQ05MIGhhcyBqdXN0IG9uZSBz ZXQgb2YgcmVnaXN0ZXJzLCB3aGlsZSBJQ0wgaGFzIHR3byBzZXRzOiBvbmUgZm9yIHBvcnQgQSBh bmQKKyAqIHRoZSBvdGhlciBmb3IgcG9ydCBCLiBUaGUgQ05MIHJlZ2lzdGVycyBhcmUgZXF1aXZh bGVudCB0byB0aGUgSUNMIHBvcnQgQQorICogcmVnaXN0ZXJzLCB0aGF0J3Mgd2h5IHdlIGNhbGwg dGhlIElDTCBtYWNyb3MgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0aW9uIGhhcyBDTkwKKyAqIG9uIGl0 cyBuYW1lLgorICovCitzdGF0aWMgdm9pZCBjbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAgIGVudW0gcG9ydCBwb3J0 KQoreworCWNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqcHJvY21vbjsKKwl1MzIgdmFsOworCisJ dmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBvcnQpKTsKKwlzd2l0Y2ggKHZhbCAm IChQUk9DRVNTX0lORk9fTUFTSyB8IFZPTFRBR0VfSU5GT19NQVNLKSkgeworCWRlZmF1bHQ6CisJ CU1JU1NJTkdfQ0FTRSh2YWwpOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIFZPTFRBR0Vf SU5GT18wXzg1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKKwkJcHJvY21vbiA9ICZjbmxfcHJvY21v bl92YWx1ZXNbUFJPQ01PTl8wXzg1Vl9ET1RfMF07CisJCWJyZWFrOworCWNhc2UgVk9MVEFHRV9J TkZPXzBfOTVWIHwgUFJPQ0VTU19JTkZPX0RPVF8wOgorCQlwcm9jbW9uID0gJmNubF9wcm9jbW9u X3ZhbHVlc1tQUk9DTU9OXzBfOTVWX0RPVF8wXTsKKwkJYnJlYWs7CisJY2FzZSBWT0xUQUdFX0lO Rk9fMF85NVYgfCBQUk9DRVNTX0lORk9fRE9UXzE6CisJCXByb2Ntb24gPSAmY25sX3Byb2Ntb25f dmFsdWVzW1BST0NNT05fMF85NVZfRE9UXzFdOworCQlicmVhazsKKwljYXNlIFZPTFRBR0VfSU5G T18xXzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKKwkJcHJvY21vbiA9ICZjbmxfcHJvY21vbl92 YWx1ZXNbUFJPQ01PTl8xXzA1Vl9ET1RfMF07CisJCWJyZWFrOworCWNhc2UgVk9MVEFHRV9JTkZP XzFfMDVWIHwgUFJPQ0VTU19JTkZPX0RPVF8xOgorCQlwcm9jbW9uID0gJmNubF9wcm9jbW9uX3Zh bHVlc1tQUk9DTU9OXzFfMDVWX0RPVF8xXTsKKwkJYnJlYWs7CisJfQorCisJdmFsID0gSTkxNV9S RUFEKElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpKTsKKwl2YWwgJj0gfigoMHhmZiA8PCAxNikgfCAw eGZmKTsKKwl2YWwgfD0gcHJvY21vbi0+ZHcxOworCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9E VzEocG9ydCksIHZhbCk7CisKKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFc5KHBvcnQpLCBw cm9jbW9uLT5kdzkpOworCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzEwKHBvcnQpLCBwcm9j bW9uLT5kdzEwKTsKK30KKwordm9pZCBjbmxfY29tYm9fcGh5c19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwl1MzIgdmFsOworCisJdmFsID0gSTkxNV9SRUFEKENI SUNLRU5fTUlTQ18yKTsKKwl2YWwgJj0gfkNOTF9DT01QX1BXUl9ET1dOOworCUk5MTVfV1JJVEUo Q0hJQ0tFTl9NSVNDXzIsIHZhbCk7CisKKwkvKiBEdW1teSBQT1JUX0EgdG8gZ2V0IHRoZSBjb3Jy ZWN0IENOTCByZWdpc3RlciBmcm9tIHRoZSBJQ0wgbWFjcm8gKi8KKwljbmxfc2V0X3Byb2Ntb25f cmVmX3ZhbHVlcyhkZXZfcHJpdiwgUE9SVF9BKTsKKworCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9S VF9DT01QX0RXMCk7CisJdmFsIHw9IENPTVBfSU5JVDsKKwlJOTE1X1dSSVRFKENOTF9QT1JUX0NP TVBfRFcwLCB2YWwpOworCisJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NMMUNNX0RXNSk7CisJ dmFsIHw9IENMX1BPV0VSX0RPV05fRU5BQkxFOworCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ0wxQ01f RFc1LCB2YWwpOworfQorCit2b2lkIGNubF9jb21ib19waHlzX3VuaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJdTMyIHZhbDsKKworCXZhbCA9IEk5MTVfUkVBRChD SElDS0VOX01JU0NfMik7CisJdmFsIHw9IENOTF9DT01QX1BXUl9ET1dOOworCUk5MTVfV1JJVEUo Q0hJQ0tFTl9NSVNDXzIsIHZhbCk7Cit9CisKK3ZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZW51bSBwb3J0IHBvcnQ7CisKKwlm b3IgKHBvcnQgPSBQT1JUX0E7IHBvcnQgPD0gUE9SVF9COyBwb3J0KyspIHsKKwkJdTMyIHZhbDsK KworCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BIWV9NSVNDKHBvcnQpKTsKKwkJdmFsICY9IH5JQ0xf UEhZX01JU0NfREVfSU9fQ09NUF9QV1JfRE9XTjsKKwkJSTkxNV9XUklURShJQ0xfUEhZX01JU0Mo cG9ydCksIHZhbCk7CisKKwkJY25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBv cnQpOworCisJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSk7CisJCXZh bCB8PSBDT01QX0lOSVQ7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCksIHZh bCk7CisKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NMX0RXNShwb3J0KSk7CisJCXZhbCB8 PSBDTF9QT1dFUl9ET1dOX0VOQUJMRTsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocG9y dCksIHZhbCk7CisJfQorfQorCit2b2lkIGljbF9jb21ib19waHlzX3VuaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZW51bSBwb3J0IHBvcnQ7CisKKwlmb3IgKHBv cnQgPSBQT1JUX0E7IHBvcnQgPD0gUE9SVF9COyBwb3J0KyspIHsKKwkJdTMyIHZhbDsKKworCQl2 YWwgPSBJOTE1X1JFQUQoSUNMX1BIWV9NSVNDKHBvcnQpKTsKKwkJdmFsIHw9IElDTF9QSFlfTUlT Q19ERV9JT19DT01QX1BXUl9ET1dOOworCQlJOTE1X1dSSVRFKElDTF9QSFlfTUlTQyhwb3J0KSwg dmFsKTsKKworCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpOworCQl2 YWwgJj0gfkNPTVBfSU5JVDsKKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwg dmFsKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50 aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKaW5kZXgg YTdlZWE4NDIzNTgwLi5mOGRhNDcxZTgxYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKQEAgLTM0MzYsOTkgKzM0MzYsMTggQEAgdm9pZCBieHRfZGlzcGxheV9jb3Jl X3VuaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJdXNsZWVwX3Jhbmdl KDEwLCAzMCk7CQkvKiAxMCB1cyBkZWxheSBwZXIgQnNwZWMgKi8KIH0KIAotZW51bSB7Ci0JUFJP Q01PTl8wXzg1Vl9ET1RfMCwKLQlQUk9DTU9OXzBfOTVWX0RPVF8wLAotCVBST0NNT05fMF85NVZf RE9UXzEsCi0JUFJPQ01PTl8xXzA1Vl9ET1RfMCwKLQlQUk9DTU9OXzFfMDVWX0RPVF8xLAotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiB7Ci0JdTMyIGR3MSwgZHc5LCBkdzEw OwotfSBjbmxfcHJvY21vbl92YWx1ZXNbXSA9IHsKLQlbUFJPQ01PTl8wXzg1Vl9ET1RfMF0gPQot CQl7IC5kdzEgPSAweDAwMDAwMDAwLCAuZHc5ID0gMHg2MkFCNjdCQiwgLmR3MTAgPSAweDUxOTE0 Rjk2LCB9LAotCVtQUk9DTU9OXzBfOTVWX0RPVF8wXSA9Ci0JCXsgLmR3MSA9IDB4MDAwMDAwMDAs IC5kdzkgPSAweDg2RTE3MkM3LCAuZHcxMCA9IDB4NzdDQTVFQUIsIH0sCi0JW1BST0NNT05fMF85 NVZfRE9UXzFdID0KLQkJeyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4OTNGODdGRTEsIC5k dzEwID0gMHg4QUU4NzFDNSwgfSwKLQlbUFJPQ01PTl8xXzA1Vl9ET1RfMF0gPQotCQl7IC5kdzEg PSAweDAwMDAwMDAwLCAuZHc5ID0gMHg5OEZBODJERCwgLmR3MTAgPSAweDg5RTQ2REMxLCB9LAot CVtQUk9DTU9OXzFfMDVWX0RPVF8xXSA9Ci0JCXsgLmR3MSA9IDB4MDA0NDAwMDAsIC5kdzkgPSAw eDlBMDBBQjI1LCAuZHcxMCA9IDB4OEFFMzhGRjEsIH0sCi19OwotCi0vKgotICogQ05MIGhhcyBq dXN0IG9uZSBzZXQgb2YgcmVnaXN0ZXJzLCB3aGlsZSBJQ0wgaGFzIHR3byBzZXRzOiBvbmUgZm9y IHBvcnQgQSBhbmQKLSAqIHRoZSBvdGhlciBmb3IgcG9ydCBCLiBUaGUgQ05MIHJlZ2lzdGVycyBh cmUgZXF1aXZhbGVudCB0byB0aGUgSUNMIHBvcnQgQQotICogcmVnaXN0ZXJzLCB0aGF0J3Mgd2h5 IHdlIGNhbGwgdGhlIElDTCBtYWNyb3MgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0aW9uIGhhcyBDTkwK LSAqIG9uIGl0cyBuYW1lLgotICovCi1zdGF0aWMgdm9pZCBjbmxfc2V0X3Byb2Ntb25fcmVmX3Zh bHVlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgICAgIGVudW0g cG9ydCBwb3J0KQotewotCWNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqcHJvY21vbjsKLQl1MzIg dmFsOwotCi0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBvcnQpKTsKLQlzd2l0 Y2ggKHZhbCAmIChQUk9DRVNTX0lORk9fTUFTSyB8IFZPTFRBR0VfSU5GT19NQVNLKSkgewotCWRl ZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRSh2YWwpOwotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQljYXNl IFZPTFRBR0VfSU5GT18wXzg1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKLQkJcHJvY21vbiA9ICZj bmxfcHJvY21vbl92YWx1ZXNbUFJPQ01PTl8wXzg1Vl9ET1RfMF07Ci0JCWJyZWFrOwotCWNhc2Ug Vk9MVEFHRV9JTkZPXzBfOTVWIHwgUFJPQ0VTU19JTkZPX0RPVF8wOgotCQlwcm9jbW9uID0gJmNu bF9wcm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzBfOTVWX0RPVF8wXTsKLQkJYnJlYWs7Ci0JY2FzZSBW T0xUQUdFX0lORk9fMF85NVYgfCBQUk9DRVNTX0lORk9fRE9UXzE6Ci0JCXByb2Ntb24gPSAmY25s X3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMF85NVZfRE9UXzFdOwotCQlicmVhazsKLQljYXNlIFZP TFRBR0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKLQkJcHJvY21vbiA9ICZjbmxf cHJvY21vbl92YWx1ZXNbUFJPQ01PTl8xXzA1Vl9ET1RfMF07Ci0JCWJyZWFrOwotCWNhc2UgVk9M VEFHRV9JTkZPXzFfMDVWIHwgUFJPQ0VTU19JTkZPX0RPVF8xOgotCQlwcm9jbW9uID0gJmNubF9w cm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzFfMDVWX0RPVF8xXTsKLQkJYnJlYWs7Ci0JfQotCi0JdmFs ID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpKTsKLQl2YWwgJj0gfigoMHhmZiA8 PCAxNikgfCAweGZmKTsKLQl2YWwgfD0gcHJvY21vbi0+ZHcxOwotCUk5MTVfV1JJVEUoSUNMX1BP UlRfQ09NUF9EVzEocG9ydCksIHZhbCk7Ci0KLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFc5 KHBvcnQpLCBwcm9jbW9uLT5kdzkpOwotCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzEwKHBv cnQpLCBwcm9jbW9uLT5kdzEwKTsKLX0KLQogc3RhdGljIHZvaWQgY25sX2Rpc3BsYXlfY29yZV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCByZXN1bWUpCiB7CiAJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93 ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICp3ZWxsOwotCXUzMiB2YWw7CiAK IAlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7CiAKIAkvKiAx LiBFbmFibGUgUENIIFJlc2V0IEhhbmRzaGFrZSAqLwogCWludGVsX3BjaF9yZXNldF9oYW5kc2hh a2UoZGV2X3ByaXYsICFIQVNfUENIX05PUChkZXZfcHJpdikpOwogCi0JLyogMi4gRW5hYmxlIENv bXAgKi8KLQl2YWwgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9NSVNDXzIpOwotCXZhbCAmPSB+Q05MX0NP TVBfUFdSX0RPV047Ci0JSTkxNV9XUklURShDSElDS0VOX01JU0NfMiwgdmFsKTsKLQotCS8qIER1 bW15IFBPUlRfQSB0byBnZXQgdGhlIGNvcnJlY3QgQ05MIHJlZ2lzdGVyIGZyb20gdGhlIElDTCBt YWNybyAqLwotCWNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBQT1JUX0EpOwot Ci0JdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcwKTsKLQl2YWwgfD0gQ09NUF9JTklU OwotCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09NUF9EVzAsIHZhbCk7Ci0KLQkvKiAzLiAqLwotCXZh bCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9EVzUpOwotCXZhbCB8PSBDTF9QT1dFUl9ET1dO X0VOQUJMRTsKLQlJOTE1X1dSSVRFKENOTF9QT1JUX0NMMUNNX0RXNSwgdmFsKTsKKwkvKiAyLTMu ICovCisJY25sX2NvbWJvX3BoeXNfaW5pdChkZXZfcHJpdik7CiAKIAkvKgogCSAqIDQuIEVuYWJs ZSBQb3dlciBXZWxsIDEgKFBHMSkuCkBAIC0zNTUzLDcgKzM0NzIsNiBAQCBzdGF0aWMgdm9pZCBj bmxfZGlzcGxheV9jb3JlX3VuaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiB7CiAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJp di0+cG93ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICp3ZWxsOwotCXUzMiB2 YWw7CiAKIAlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7CiAK QEAgLTM1NzcsMTAgKzM0OTUsOCBAQCBzdGF0aWMgdm9pZCBjbmxfZGlzcGxheV9jb3JlX3VuaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAl1c2xlZXBfcmFuZ2UoMTAs IDMwKTsJCS8qIDEwIHVzIGRlbGF5IHBlciBCc3BlYyAqLwogCi0JLyogNS4gRGlzYWJsZSBDb21w ICovCi0JdmFsID0gSTkxNV9SRUFEKENISUNLRU5fTUlTQ18yKTsKLQl2YWwgfD0gQ05MX0NPTVBf UFdSX0RPV047Ci0JSTkxNV9XUklURShDSElDS0VOX01JU0NfMiwgdmFsKTsKKwkvKiA1LiAqLwor CWNubF9jb21ib19waHlzX3VuaW5pdChkZXZfcHJpdik7CiB9CiAKIHZvaWQgaWNsX2Rpc3BsYXlf Y29yZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTM1ODgsMzEg KzM1MDQsMTQgQEAgdm9pZCBpY2xfZGlzcGxheV9jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogewogCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2Rv bWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CiAJc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCAqd2VsbDsKLQllbnVtIHBvcnQgcG9ydDsKLQl1MzIgdmFsOwogCiAJZ2VuOV9zZXRfZGNfc3Rh dGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwogCiAJLyogMS4gRW5hYmxlIFBDSCByZXNl dCBoYW5kc2hha2UuICovCiAJaW50ZWxfcGNoX3Jlc2V0X2hhbmRzaGFrZShkZXZfcHJpdiwgIUhB U19QQ0hfTk9QKGRldl9wcml2KSk7CiAKLQlmb3IgKHBvcnQgPSBQT1JUX0E7IHBvcnQgPD0gUE9S VF9COyBwb3J0KyspIHsKLQkJLyogMi4gRW5hYmxlIERESSBjb21ibyBQSFkgY29tcC4gKi8KLQkJ dmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwb3J0KSk7Ci0JCXZhbCAmPSB+SUNMX1BIWV9N SVNDX0RFX0lPX0NPTVBfUFdSX0RPV047Ci0JCUk5MTVfV1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQp LCB2YWwpOwotCi0JCWNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2LCBwb3J0KTsK LQotCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpOwotCQl2YWwgfD0g Q09NUF9JTklUOwotCQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpLCB2YWwpOwot Ci0JCS8qIDMuIFNldCBwb3dlciBkb3duIGVuYWJsZS4gKi8KLQkJdmFsID0gSTkxNV9SRUFEKElD TF9QT1JUX0NMX0RXNShwb3J0KSk7Ci0JCXZhbCB8PSBDTF9QT1dFUl9ET1dOX0VOQUJMRTsKLQkJ STkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocG9ydCksIHZhbCk7Ci0JfQorCS8qIDItMy4gKi8K KwlpY2xfY29tYm9fcGh5c19pbml0KGRldl9wcml2KTsKIAogCS8qCiAJICogNC4gRW5hYmxlIFBv d2VyIFdlbGwgMSAoUEcxKS4KQEAgLTM2NDAsOCArMzUzOSw2IEBAIHZvaWQgaWNsX2Rpc3BsYXlf Y29yZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVj dCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2Rv bWFpbnM7CiAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqd2VsbDsKLQllbnVtIHBvcnQgcG9ydDsK LQl1MzIgdmFsOwogCiAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FC TEUpOwogCkBAIC0zNjYzLDE2ICszNTYwLDggQEAgdm9pZCBpY2xfZGlzcGxheV9jb3JlX3VuaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50ZWxfcG93ZXJfd2VsbF9k aXNhYmxlKGRldl9wcml2LCB3ZWxsKTsKIAltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxv Y2spOwogCi0JLyogNS4gRGlzYWJsZSBDb21wICovCi0JZm9yIChwb3J0ID0gUE9SVF9BOyBwb3J0 IDw9IFBPUlRfQjsgcG9ydCsrKSB7Ci0JCXZhbCA9IEk5MTVfUkVBRChJQ0xfUEhZX01JU0MocG9y dCkpOwotCQl2YWwgfD0gSUNMX1BIWV9NSVNDX0RFX0lPX0NPTVBfUFdSX0RPV047Ci0JCUk5MTVf V1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQpLCB2YWwpOwotCi0JCXZhbCA9IEk5MTVfUkVBRChJQ0xf UE9SVF9DT01QX0RXMChwb3J0KSk7Ci0JCXZhbCAmPSB+Q09NUF9JTklUOwotCQlJOTE1X1dSSVRF KElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpLCB2YWwpOwotCX0KKwkvKiA1LiAqLworCWljbF9jb21i b19waHlzX3VuaW5pdChkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGNodl9waHlfY29udHJv bF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLS0gCjIuMTMuMgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==