From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH 2/5] drm/i915/cnl+: Move the combo PHY init/uninit code to a new file Date: Fri, 2 Nov 2018 20:07:03 +0200 Message-ID: <20181102180706.16582-3-imre.deak@intel.com> References: <20181102180706.16582-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 884F66E5BC for ; Fri, 2 Nov 2018 18:07:16 +0000 (UTC) In-Reply-To: <20181102180706.16582-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 byBQSFkgY29kZSBpbiBhCnNlcGFyYXRlIGZpbGUuCgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KClN1 Z2dlc3RlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEpvc8OpIFJvYmVy dG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgpDYzogUm9kcmlnbyBWaXZpIDxyb2Ry aWdvLnZpdmlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgNiArKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29tYm9fcGh5LmMgIHwgMTU5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMgfCAxMjcgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAx NzQgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbWJvX3BoeS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpp bmRleCAyOGM3ZDc4ODRlODguLjFlN2U5NTEzYmIxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAg LTExMyw2ICsxMTMsNyBAQCBpOTE1LXkgKz0gaW50ZWxfYXVkaW8ubyBcCiAJICBpbnRlbF9iaW9z Lm8gXAogCSAgaW50ZWxfY2RjbGsubyBcCiAJICBpbnRlbF9jb2xvci5vIFwKKwkgIGludGVsX2Nv bWJvX3BoeS5vIFwKIAkgIGludGVsX2Nvbm5lY3Rvci5vIFwKIAkgIGludGVsX2Rpc3BsYXkubyBc CiAJICBpbnRlbF9kcGlvX3BoeS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDYxNTdm ODEyOGNjNS4uNjI4ODJlMWRkYmVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTM1NzEs NiArMzU3MSwxMiBAQCB2b2lkIHZsdl9waHlfcHJlX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAogdm9pZCB2bHZfcGh5X3Jlc2V0X2xhbmVzKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAogCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSk7CiAKKy8qIGludGVsX2NvbWJvX3BoeS5jICovCit2b2lkIGljbF9jb21i b19waHlzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgaWNs X2NvbWJvX3BoeXNfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2 b2lkIGNubF9jb21ib19waHlzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKK3ZvaWQgY25sX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CisKIGludCBpbnRlbF9ncHVfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGludCB2YWwpOwogaW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7CiB1NjQgaW50ZWxfcmM2X3Jlc2lkZW5jeV9u cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb21ib19waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbWJvX3BoeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MTMxODRhZTVhMjE3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29tYm9fcGh5LmMKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAx OCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisKK2VudW0geworCVBST0NN T05fMF84NVZfRE9UXzAsCisJUFJPQ01PTl8wXzk1Vl9ET1RfMCwKKwlQUk9DTU9OXzBfOTVWX0RP VF8xLAorCVBST0NNT05fMV8wNVZfRE9UXzAsCisJUFJPQ01PTl8xXzA1Vl9ET1RfMSwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX3Byb2Ntb24geworCXUzMiBkdzEsIGR3OSwgZHcxMDsK K30gY25sX3Byb2Ntb25fdmFsdWVzW10gPSB7CisJW1BST0NNT05fMF84NVZfRE9UXzBdID0KKwkJ eyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4NjJBQjY3QkIsIC5kdzEwID0gMHg1MTkxNEY5 NiwgfSwKKwlbUFJPQ01PTl8wXzk1Vl9ET1RfMF0gPQorCQl7IC5kdzEgPSAweDAwMDAwMDAwLCAu ZHc5ID0gMHg4NkUxNzJDNywgLmR3MTAgPSAweDc3Q0E1RUFCLCB9LAorCVtQUk9DTU9OXzBfOTVW X0RPVF8xXSA9CisJCXsgLmR3MSA9IDB4MDAwMDAwMDAsIC5kdzkgPSAweDkzRjg3RkUxLCAuZHcx MCA9IDB4OEFFODcxQzUsIH0sCisJW1BST0NNT05fMV8wNVZfRE9UXzBdID0KKwkJeyAuZHcxID0g MHgwMDAwMDAwMCwgLmR3OSA9IDB4OThGQTgyREQsIC5kdzEwID0gMHg4OUU0NkRDMSwgfSwKKwlb UFJPQ01PTl8xXzA1Vl9ET1RfMV0gPQorCQl7IC5kdzEgPSAweDAwNDQwMDAwLCAuZHc5ID0gMHg5 QTAwQUIyNSwgLmR3MTAgPSAweDhBRTM4RkYxLCB9LAorfTsKKworLyoKKyAqIENOTCBoYXMganVz dCBvbmUgc2V0IG9mIHJlZ2lzdGVycywgd2hpbGUgSUNMIGhhcyB0d28gc2V0czogb25lIGZvciBw b3J0IEEgYW5kCisgKiB0aGUgb3RoZXIgZm9yIHBvcnQgQi4gVGhlIENOTCByZWdpc3RlcnMgYXJl IGVxdWl2YWxlbnQgdG8gdGhlIElDTCBwb3J0IEEKKyAqIHJlZ2lzdGVycywgdGhhdCdzIHdoeSB3 ZSBjYWxsIHRoZSBJQ0wgbWFjcm9zIGV2ZW4gdGhvdWdoIHRoZSBmdW5jdGlvbiBoYXMgQ05MCisg KiBvbiBpdHMgbmFtZS4KKyAqLworc3RhdGljIHZvaWQgY25sX3NldF9wcm9jbW9uX3JlZl92YWx1 ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgICBlbnVtIHBv cnQgcG9ydCkKK3sKKwljb25zdCBzdHJ1Y3QgY25sX3Byb2Ntb24gKnByb2Ntb247CisJdTMyIHZh bDsKKworCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMyhwb3J0KSk7CisJc3dpdGNo ICh2YWwgJiAoUFJPQ0VTU19JTkZPX01BU0sgfCBWT0xUQUdFX0lORk9fTUFTSykpIHsKKwlkZWZh dWx0OgorCQlNSVNTSU5HX0NBU0UodmFsKTsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBW T0xUQUdFX0lORk9fMF84NVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6CisJCXByb2Ntb24gPSAmY25s X3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMF84NVZfRE9UXzBdOworCQlicmVhazsKKwljYXNlIFZP TFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKKwkJcHJvY21vbiA9ICZjbmxf cHJvY21vbl92YWx1ZXNbUFJPQ01PTl8wXzk1Vl9ET1RfMF07CisJCWJyZWFrOworCWNhc2UgVk9M VEFHRV9JTkZPXzBfOTVWIHwgUFJPQ0VTU19JTkZPX0RPVF8xOgorCQlwcm9jbW9uID0gJmNubF9w cm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzBfOTVWX0RPVF8xXTsKKwkJYnJlYWs7CisJY2FzZSBWT0xU QUdFX0lORk9fMV8wNVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6CisJCXByb2Ntb24gPSAmY25sX3By b2Ntb25fdmFsdWVzW1BST0NNT05fMV8wNVZfRE9UXzBdOworCQlicmVhazsKKwljYXNlIFZPTFRB R0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMToKKwkJcHJvY21vbiA9ICZjbmxfcHJv Y21vbl92YWx1ZXNbUFJPQ01PTl8xXzA1Vl9ET1RfMV07CisJCWJyZWFrOworCX0KKworCXZhbCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMShwb3J0KSk7CisJdmFsICY9IH4oKDB4ZmYgPDwg MTYpIHwgMHhmZik7CisJdmFsIHw9IHByb2Ntb24tPmR3MTsKKwlJOTE1X1dSSVRFKElDTF9QT1JU X0NPTVBfRFcxKHBvcnQpLCB2YWwpOworCisJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXOShw b3J0KSwgcHJvY21vbi0+ZHc5KTsKKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcxMChwb3J0 KSwgcHJvY21vbi0+ZHcxMCk7Cit9CisKK3ZvaWQgY25sX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJdTMyIHZhbDsKKworCXZhbCA9IEk5MTVf UkVBRChDSElDS0VOX01JU0NfMik7CisJdmFsICY9IH5DTkxfQ09NUF9QV1JfRE9XTjsKKwlJOTE1 X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOworCisJLyogRHVtbXkgUE9SVF9BIHRvIGdldCB0 aGUgY29ycmVjdCBDTkwgcmVnaXN0ZXIgZnJvbSB0aGUgSUNMIG1hY3JvICovCisJY25sX3NldF9w cm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIFBPUlRfQSk7CisKKwl2YWwgPSBJOTE1X1JFQUQo Q05MX1BPUlRfQ09NUF9EVzApOworCXZhbCB8PSBDT01QX0lOSVQ7CisJSTkxNV9XUklURShDTkxf UE9SVF9DT01QX0RXMCwgdmFsKTsKKworCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9E VzUpOworCXZhbCB8PSBDTF9QT1dFUl9ET1dOX0VOQUJMRTsKKwlJOTE1X1dSSVRFKENOTF9QT1JU X0NMMUNNX0RXNSwgdmFsKTsKK30KKwordm9pZCBjbmxfY29tYm9fcGh5c191bmluaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXUzMiB2YWw7CisKKwl2YWwgPSBJOTE1 X1JFQUQoQ0hJQ0tFTl9NSVNDXzIpOworCXZhbCB8PSBDTkxfQ09NUF9QV1JfRE9XTjsKKwlJOTE1 X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOworfQorCit2b2lkIGljbF9jb21ib19waHlzX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWVudW0gcG9ydCBwb3J0 OworCisJZm9yIChwb3J0ID0gUE9SVF9BOyBwb3J0IDw9IFBPUlRfQjsgcG9ydCsrKSB7CisJCXUz MiB2YWw7CisKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwb3J0KSk7CisJCXZhbCAm PSB+SUNMX1BIWV9NSVNDX0RFX0lPX0NPTVBfUFdSX0RPV047CisJCUk5MTVfV1JJVEUoSUNMX1BI WV9NSVNDKHBvcnQpLCB2YWwpOworCisJCWNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9w cml2LCBwb3J0KTsKKworCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkp OworCQl2YWwgfD0gQ09NUF9JTklUOworCQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcwKHBv cnQpLCB2YWwpOworCisJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwor CQl2YWwgfD0gQ0xfUE9XRVJfRE9XTl9FTkFCTEU7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xf RFc1KHBvcnQpLCB2YWwpOworCX0KK30KKwordm9pZCBpY2xfY29tYm9fcGh5c191bmluaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWVudW0gcG9ydCBwb3J0OworCisJ Zm9yIChwb3J0ID0gUE9SVF9BOyBwb3J0IDw9IFBPUlRfQjsgcG9ydCsrKSB7CisJCXUzMiB2YWw7 CisKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwb3J0KSk7CisJCXZhbCB8PSBJQ0xf UEhZX01JU0NfREVfSU9fQ09NUF9QV1JfRE9XTjsKKwkJSTkxNV9XUklURShJQ0xfUEhZX01JU0Mo cG9ydCksIHZhbCk7CisKKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQp KTsKKwkJdmFsICY9IH5DT01QX0lOSVQ7CisJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAo cG9ydCksIHZhbCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5j CmluZGV4IGE3ZWVhODQyMzU4MC4uZjhkYTQ3MWU4MWFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcnVudGltZV9wbS5jCkBAIC0zNDM2LDk5ICszNDM2LDE4IEBAIHZvaWQgYnh0X2Rpc3Bs YXlfY29yZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXVzbGVl cF9yYW5nZSgxMCwgMzApOwkJLyogMTAgdXMgZGVsYXkgcGVyIEJzcGVjICovCiB9CiAKLWVudW0g ewotCVBST0NNT05fMF84NVZfRE9UXzAsCi0JUFJPQ01PTl8wXzk1Vl9ET1RfMCwKLQlQUk9DTU9O XzBfOTVWX0RPVF8xLAotCVBST0NNT05fMV8wNVZfRE9UXzAsCi0JUFJPQ01PTl8xXzA1Vl9ET1Rf MSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX3Byb2Ntb24gewotCXUzMiBkdzEsIGR3 OSwgZHcxMDsKLX0gY25sX3Byb2Ntb25fdmFsdWVzW10gPSB7Ci0JW1BST0NNT05fMF84NVZfRE9U XzBdID0KLQkJeyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4NjJBQjY3QkIsIC5kdzEwID0g MHg1MTkxNEY5NiwgfSwKLQlbUFJPQ01PTl8wXzk1Vl9ET1RfMF0gPQotCQl7IC5kdzEgPSAweDAw MDAwMDAwLCAuZHc5ID0gMHg4NkUxNzJDNywgLmR3MTAgPSAweDc3Q0E1RUFCLCB9LAotCVtQUk9D TU9OXzBfOTVWX0RPVF8xXSA9Ci0JCXsgLmR3MSA9IDB4MDAwMDAwMDAsIC5kdzkgPSAweDkzRjg3 RkUxLCAuZHcxMCA9IDB4OEFFODcxQzUsIH0sCi0JW1BST0NNT05fMV8wNVZfRE9UXzBdID0KLQkJ eyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4OThGQTgyREQsIC5kdzEwID0gMHg4OUU0NkRD MSwgfSwKLQlbUFJPQ01PTl8xXzA1Vl9ET1RfMV0gPQotCQl7IC5kdzEgPSAweDAwNDQwMDAwLCAu ZHc5ID0gMHg5QTAwQUIyNSwgLmR3MTAgPSAweDhBRTM4RkYxLCB9LAotfTsKLQotLyoKLSAqIENO TCBoYXMganVzdCBvbmUgc2V0IG9mIHJlZ2lzdGVycywgd2hpbGUgSUNMIGhhcyB0d28gc2V0czog b25lIGZvciBwb3J0IEEgYW5kCi0gKiB0aGUgb3RoZXIgZm9yIHBvcnQgQi4gVGhlIENOTCByZWdp c3RlcnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIElDTCBwb3J0IEEKLSAqIHJlZ2lzdGVycywgdGhh dCdzIHdoeSB3ZSBjYWxsIHRoZSBJQ0wgbWFjcm9zIGV2ZW4gdGhvdWdoIHRoZSBmdW5jdGlvbiBo YXMgQ05MCi0gKiBvbiBpdHMgbmFtZS4KLSAqLwotc3RhdGljIHZvaWQgY25sX3NldF9wcm9jbW9u X3JlZl92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICAg ICBlbnVtIHBvcnQgcG9ydCkKLXsKLQljb25zdCBzdHJ1Y3QgY25sX3Byb2Ntb24gKnByb2Ntb247 Ci0JdTMyIHZhbDsKLQotCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMyhwb3J0KSk7 Ci0Jc3dpdGNoICh2YWwgJiAoUFJPQ0VTU19JTkZPX01BU0sgfCBWT0xUQUdFX0lORk9fTUFTSykp IHsKLQlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UodmFsKTsKLQkJLyogZmFsbCB0aHJvdWdoICov Ci0JY2FzZSBWT0xUQUdFX0lORk9fMF84NVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6Ci0JCXByb2Nt b24gPSAmY25sX3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMF84NVZfRE9UXzBdOwotCQlicmVhazsK LQljYXNlIFZPTFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKLQkJcHJvY21v biA9ICZjbmxfcHJvY21vbl92YWx1ZXNbUFJPQ01PTl8wXzk1Vl9ET1RfMF07Ci0JCWJyZWFrOwot CWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWIHwgUFJPQ0VTU19JTkZPX0RPVF8xOgotCQlwcm9jbW9u ID0gJmNubF9wcm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzBfOTVWX0RPVF8xXTsKLQkJYnJlYWs7Ci0J Y2FzZSBWT0xUQUdFX0lORk9fMV8wNVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6Ci0JCXByb2Ntb24g PSAmY25sX3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMV8wNVZfRE9UXzBdOwotCQlicmVhazsKLQlj YXNlIFZPTFRBR0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMToKLQkJcHJvY21vbiA9 ICZjbmxfcHJvY21vbl92YWx1ZXNbUFJPQ01PTl8xXzA1Vl9ET1RfMV07Ci0JCWJyZWFrOwotCX0K LQotCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMShwb3J0KSk7Ci0JdmFsICY9IH4o KDB4ZmYgPDwgMTYpIHwgMHhmZik7Ci0JdmFsIHw9IHByb2Ntb24tPmR3MTsKLQlJOTE1X1dSSVRF KElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpLCB2YWwpOwotCi0JSTkxNV9XUklURShJQ0xfUE9SVF9D T01QX0RXOShwb3J0KSwgcHJvY21vbi0+ZHc5KTsKLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBf RFcxMChwb3J0KSwgcHJvY21vbi0+ZHcxMCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNubF9kaXNwbGF5 X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgcmVzdW1l KQogewogCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3By aXYtPnBvd2VyX2RvbWFpbnM7CiAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqd2VsbDsKLQl1MzIg dmFsOwogCiAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwog CiAJLyogMS4gRW5hYmxlIFBDSCBSZXNldCBIYW5kc2hha2UgKi8KIAlpbnRlbF9wY2hfcmVzZXRf aGFuZHNoYWtlKGRldl9wcml2LCAhSEFTX1BDSF9OT1AoZGV2X3ByaXYpKTsKIAotCS8qIDIuIEVu YWJsZSBDb21wICovCi0JdmFsID0gSTkxNV9SRUFEKENISUNLRU5fTUlTQ18yKTsKLQl2YWwgJj0g fkNOTF9DT01QX1BXUl9ET1dOOwotCUk5MTVfV1JJVEUoQ0hJQ0tFTl9NSVNDXzIsIHZhbCk7Ci0K LQkvKiBEdW1teSBQT1JUX0EgdG8gZ2V0IHRoZSBjb3JyZWN0IENOTCByZWdpc3RlciBmcm9tIHRo ZSBJQ0wgbWFjcm8gKi8KLQljbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgUE9S VF9BKTsKLQotCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DT01QX0RXMCk7Ci0JdmFsIHw9IENP TVBfSU5JVDsKLQlJOTE1X1dSSVRFKENOTF9QT1JUX0NPTVBfRFcwLCB2YWwpOwotCi0JLyogMy4g Ki8KLQl2YWwgPSBJOTE1X1JFQUQoQ05MX1BPUlRfQ0wxQ01fRFc1KTsKLQl2YWwgfD0gQ0xfUE9X RVJfRE9XTl9FTkFCTEU7Ci0JSTkxNV9XUklURShDTkxfUE9SVF9DTDFDTV9EVzUsIHZhbCk7CisJ LyogMi0zLiAqLworCWNubF9jb21ib19waHlzX2luaXQoZGV2X3ByaXYpOwogCiAJLyoKIAkgKiA0 LiBFbmFibGUgUG93ZXIgV2VsbCAxIChQRzEpLgpAQCAtMzU1Myw3ICszNDcyLDYgQEAgc3RhdGlj IHZvaWQgY25sX2Rpc3BsYXlfY29yZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAm ZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CiAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqd2VsbDsK LQl1MzIgdmFsOwogCiAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FC TEUpOwogCkBAIC0zNTc3LDEwICszNDk1LDggQEAgc3RhdGljIHZvaWQgY25sX2Rpc3BsYXlfY29y ZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJdXNsZWVwX3Jh bmdlKDEwLCAzMCk7CQkvKiAxMCB1cyBkZWxheSBwZXIgQnNwZWMgKi8KIAotCS8qIDUuIERpc2Fi bGUgQ29tcCAqLwotCXZhbCA9IEk5MTVfUkVBRChDSElDS0VOX01JU0NfMik7Ci0JdmFsIHw9IENO TF9DT01QX1BXUl9ET1dOOwotCUk5MTVfV1JJVEUoQ0hJQ0tFTl9NSVNDXzIsIHZhbCk7CisJLyog NS4gKi8KKwljbmxfY29tYm9fcGh5c191bmluaXQoZGV2X3ByaXYpOwogfQogCiB2b2lkIGljbF9k aXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0z NTg4LDMxICszNTA0LDE0IEBAIHZvaWQgaWNsX2Rpc3BsYXlfY29yZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpw b3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOwogCXN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKndlbGw7Ci0JZW51bSBwb3J0IHBvcnQ7Ci0JdTMyIHZhbDsKIAogCWdlbjlfc2V0 X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKIAogCS8qIDEuIEVuYWJsZSBQ Q0ggcmVzZXQgaGFuZHNoYWtlLiAqLwogCWludGVsX3BjaF9yZXNldF9oYW5kc2hha2UoZGV2X3By aXYsICFIQVNfUENIX05PUChkZXZfcHJpdikpOwogCi0JZm9yIChwb3J0ID0gUE9SVF9BOyBwb3J0 IDw9IFBPUlRfQjsgcG9ydCsrKSB7Ci0JCS8qIDIuIEVuYWJsZSBEREkgY29tYm8gUEhZIGNvbXAu ICovCi0JCXZhbCA9IEk5MTVfUkVBRChJQ0xfUEhZX01JU0MocG9ydCkpOwotCQl2YWwgJj0gfklD TF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwotCQlJOTE1X1dSSVRFKElDTF9QSFlfTUlT Qyhwb3J0KSwgdmFsKTsKLQotCQljbmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwg cG9ydCk7Ci0KLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpKTsKLQkJ dmFsIHw9IENPTVBfSU5JVDsKLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwg dmFsKTsKLQotCQkvKiAzLiBTZXQgcG93ZXIgZG93biBlbmFibGUuICovCi0JCXZhbCA9IEk5MTVf UkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwotCQl2YWwgfD0gQ0xfUE9XRVJfRE9XTl9FTkFC TEU7Ci0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpLCB2YWwpOwotCX0KKwkvKiAy LTMuICovCisJaWNsX2NvbWJvX3BoeXNfaW5pdChkZXZfcHJpdik7CiAKIAkvKgogCSAqIDQuIEVu YWJsZSBQb3dlciBXZWxsIDEgKFBHMSkuCkBAIC0zNjQwLDggKzM1MzksNiBAQCB2b2lkIGljbF9k aXNwbGF5X2NvcmVfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK IAlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5w b3dlcl9kb21haW5zOwogCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKndlbGw7Ci0JZW51bSBwb3J0 IHBvcnQ7Ci0JdTMyIHZhbDsKIAogCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFU RV9ESVNBQkxFKTsKIApAQCAtMzY2MywxNiArMzU2MCw4IEBAIHZvaWQgaWNsX2Rpc3BsYXlfY29y ZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX3Bvd2Vy X3dlbGxfZGlzYWJsZShkZXZfcHJpdiwgd2VsbCk7CiAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21h aW5zLT5sb2NrKTsKIAotCS8qIDUuIERpc2FibGUgQ29tcCAqLwotCWZvciAocG9ydCA9IFBPUlRf QTsgcG9ydCA8PSBQT1JUX0I7IHBvcnQrKykgewotCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BIWV9N SVNDKHBvcnQpKTsKLQkJdmFsIHw9IElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwot CQlJOTE1X1dSSVRFKElDTF9QSFlfTUlTQyhwb3J0KSwgdmFsKTsKLQotCQl2YWwgPSBJOTE1X1JF QUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpOwotCQl2YWwgJj0gfkNPTVBfSU5JVDsKLQkJSTkx NV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwgdmFsKTsKLQl9CisJLyogNS4gKi8KKwlp Y2xfY29tYm9fcGh5c191bmluaXQoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgdm9pZCBjaHZfcGh5 X2NvbnRyb2xfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi0tIAoyLjEz LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=