From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 11/13] drm/i915: Move BXT pll configuration logic to intel_dpll_mgr.c Date: Fri, 26 Feb 2016 15:54:24 +0200 Message-ID: <1456494866-7665-12-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1456494866-7665-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id AF1EE6EAF3 for ; Fri, 26 Feb 2016 13:54:50 +0000 (UTC) In-Reply-To: <1456494866-7665-1-git-send-email-ander.conselvan.de.oliveira@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: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org TW92ZSB0aGUgY29kZSBmb3IgY29uZmlndXJhdGluZyBCWFQgcGxscyBpbnRvIHRoZSBzaGFyZWQg ZHBsbCBjb2RlLCBzbwp0aGF0IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzIGFyZSBoaWRk ZW4gYmVoaW5kIHRoYXQgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgfCAxNDEgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9t Z3IuYyB8IDEzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDE0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCmluZGV4IDgyNThhY2QuLmFkNzg4OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCkBAIC0xMDI1LDE1MSArMTAyNSwxMiBAQCBza2xfZGRpX3BsbF9zZWxlY3Qoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qIGJ4dCBjbG9jayBw YXJhbWV0ZXJzICovCi1zdHJ1Y3QgYnh0X2Nsa19kaXYgewotCWludCBjbG9jazsKLQl1aW50MzJf dCBwMTsKLQl1aW50MzJfdCBwMjsKLQl1aW50MzJfdCBtMl9pbnQ7Ci0JdWludDMyX3QgbTJfZnJh YzsKLQlib29sIG0yX2ZyYWNfZW47Ci0JdWludDMyX3QgbjsKLX07Ci0KLS8qIHByZS1jYWxjdWxh dGVkIHZhbHVlcyBmb3IgRFAgbGlua3JhdGVzICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9j bGtfZGl2IGJ4dF9kcF9jbGtfdmFsW10gPSB7Ci0JezE2MjAwMCwgNCwgMiwgMzIsIDE2Nzc3MjIs IDEsIDF9LAotCXsyNzAwMDAsIDQsIDEsIDI3LCAgICAgICAwLCAwLCAxfSwKLQl7NTQwMDAwLCAy LCAxLCAyNywgICAgICAgMCwgMCwgMX0sCi0JezIxNjAwMCwgMywgMiwgMzIsIDE2Nzc3MjIsIDEs IDF9LAotCXsyNDMwMDAsIDQsIDEsIDI0LCAxMjU4MjkxLCAxLCAxfSwKLQl7MzI0MDAwLCA0LCAx LCAzMiwgMTY3NzcyMiwgMSwgMX0sCi0JezQzMjAwMCwgMywgMSwgMzIsIDE2Nzc3MjIsIDEsIDF9 Ci19OwotCiBzdGF0aWMgYm9vbAogYnh0X2RkaV9wbGxfc2VsZWN0KHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAogCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAkJICAgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiB7Ci0Jc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICpwbGw7Ci0Jc3RydWN0IGJ4dF9jbGtfZGl2IGNsa19kaXYgPSB7MH07 Ci0JaW50IHZjbyA9IDA7Ci0JdWludDMyX3QgcHJvcF9jb2VmLCBpbnRfY29lZiwgZ2Fpbl9jdGws IHRhcmdfY250OwotCXVpbnQzMl90IGxhbmVzdGFnZ2VyOwotCWludCBjbG9jayA9IGNydGNfc3Rh dGUtPnBvcnRfY2xvY2s7Ci0KLQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfSERNSSkgewotCQlpbnRlbF9jbG9ja190IGJlc3RfY2xvY2s7Ci0KLQkJLyogQ2FsY3VsYXRl IEhETUkgZGl2ICovCi0JCS8qCi0JCSAqIEZJWE1FOiB0aWUgdGhlIGZvbGxvd2luZyBjYWxjdWxh dGlvbiBpbnRvCi0JCSAqIGk5eHhfY3J0Y19jb21wdXRlX2Nsb2NrCi0JCSAqLwotCQlpZiAoIWJ4 dF9maW5kX2Jlc3RfZHBsbChjcnRjX3N0YXRlLCBjbG9jaywgJmJlc3RfY2xvY2spKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJubyBQTEwgZGl2aWRlcnMgZm91bmQgZm9yIGNsb2NrICVkIHBpcGUg JWNcbiIsCi0JCQkJCSBjbG9jaywgcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKLQkJCXJl dHVybiBmYWxzZTsKLQkJfQotCi0JCWNsa19kaXYucDEgPSBiZXN0X2Nsb2NrLnAxOwotCQljbGtf ZGl2LnAyID0gYmVzdF9jbG9jay5wMjsKLQkJV0FSTl9PTihiZXN0X2Nsb2NrLm0xICE9IDIpOwot CQljbGtfZGl2Lm4gPSBiZXN0X2Nsb2NrLm47Ci0JCWNsa19kaXYubTJfaW50ID0gYmVzdF9jbG9j ay5tMiA+PiAyMjsKLQkJY2xrX2Rpdi5tMl9mcmFjID0gYmVzdF9jbG9jay5tMiAmICgoMSA8PCAy MikgLSAxKTsKLQkJY2xrX2Rpdi5tMl9mcmFjX2VuID0gY2xrX2Rpdi5tMl9mcmFjICE9IDA7Ci0K LQkJdmNvID0gYmVzdF9jbG9jay52Y287Ci0JfSBlbHNlIGlmIChpbnRlbF9lbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCB8fAotCQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9 PSBJTlRFTF9PVVRQVVRfRURQKSB7Ci0JCWludCBpOwotCi0JCWNsa19kaXYgPSBieHRfZHBfY2xr X3ZhbFswXTsKLQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYnh0X2RwX2Nsa192YWwpOyAr K2kpIHsKLQkJCWlmIChieHRfZHBfY2xrX3ZhbFtpXS5jbG9jayA9PSBjbG9jaykgewotCQkJCWNs a19kaXYgPSBieHRfZHBfY2xrX3ZhbFtpXTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQl2Y28g PSBjbG9jayAqIDEwIC8gMiAqIGNsa19kaXYucDEgKiBjbGtfZGl2LnAyOwotCX0KLQotCWlmICh2 Y28gPj0gNjIwMDAwMCAmJiB2Y28gPD0gNjcwMDAwMCkgewotCQlwcm9wX2NvZWYgPSA0OwotCQlp bnRfY29lZiA9IDk7Ci0JCWdhaW5fY3RsID0gMzsKLQkJdGFyZ19jbnQgPSA4OwotCX0gZWxzZSBp ZiAoKHZjbyA+IDU0MDAwMDAgJiYgdmNvIDwgNjIwMDAwMCkgfHwKLQkJCSh2Y28gPj0gNDgwMDAw MCAmJiB2Y28gPCA1NDAwMDAwKSkgewotCQlwcm9wX2NvZWYgPSA1OwotCQlpbnRfY29lZiA9IDEx OwotCQlnYWluX2N0bCA9IDM7Ci0JCXRhcmdfY250ID0gOTsKLQl9IGVsc2UgaWYgKHZjbyA9PSA1 NDAwMDAwKSB7Ci0JCXByb3BfY29lZiA9IDM7Ci0JCWludF9jb2VmID0gODsKLQkJZ2Fpbl9jdGwg PSAxOwotCQl0YXJnX2NudCA9IDk7Ci0JfSBlbHNlIHsKLQkJRFJNX0VSUk9SKCJJbnZhbGlkIFZD T1xuIik7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQltZW1zZXQoJmNydGNfc3RhdGUtPmRwbGxf aHdfc3RhdGUsIDAsCi0JICAgICAgIHNpemVvZihjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlKSk7 Ci0KLQlpZiAoY2xvY2sgPiAyNzAwMDApCi0JCWxhbmVzdGFnZ2VyID0gMHgxODsKLQllbHNlIGlm IChjbG9jayA+IDEzNTAwMCkKLQkJbGFuZXN0YWdnZXIgPSAweDBkOwotCWVsc2UgaWYgKGNsb2Nr ID4gNjcwMDApCi0JCWxhbmVzdGFnZ2VyID0gMHgwNzsKLQllbHNlIGlmIChjbG9jayA+IDMzMDAw KQotCQlsYW5lc3RhZ2dlciA9IDB4MDQ7Ci0JZWxzZQotCQlsYW5lc3RhZ2dlciA9IDB4MDI7Ci0K LQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmViYjAgPQotCQlQT1JUX1BMTF9QMShjbGtfZGl2 LnAxKSB8IFBPUlRfUExMX1AyKGNsa19kaXYucDIpOwotCWNydGNfc3RhdGUtPmRwbGxfaHdfc3Rh dGUucGxsMCA9IGNsa19kaXYubTJfaW50OwotCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxs MSA9IFBPUlRfUExMX04oY2xrX2Rpdi5uKTsKLQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBs bDIgPSBjbGtfZGl2Lm0yX2ZyYWM7Ci0KLQlpZiAoY2xrX2Rpdi5tMl9mcmFjX2VuKQotCQljcnRj X3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBsbDMgPQotCQkJUE9SVF9QTExfTTJfRlJBQ19FTkFCTEU7 Ci0KLQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBsbDYgPQotCQlwcm9wX2NvZWYgfCBQT1JU X1BMTF9JTlRfQ09FRkYoaW50X2NvZWYpOwotCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxs NiB8PQotCQlQT1JUX1BMTF9HQUlOX0NUTChnYWluX2N0bCk7Ci0KLQljcnRjX3N0YXRlLT5kcGxs X2h3X3N0YXRlLnBsbDggPSB0YXJnX2NudDsKLQotCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUu cGxsOSA9IDUgPDwgUE9SVF9QTExfTE9DS19USFJFU0hPTERfU0hJRlQ7Ci0KLQljcnRjX3N0YXRl LT5kcGxsX2h3X3N0YXRlLnBsbDEwID0KLQkJUE9SVF9QTExfRENPX0FNUChQT1JUX1BMTF9EQ09f QU1QX0RFRkFVTFQpCi0JCXwgUE9SVF9QTExfRENPX0FNUF9PVlJfRU5fSDsKLQotCWNydGNfc3Rh dGUtPmRwbGxfaHdfc3RhdGUuZWJiNCA9IFBPUlRfUExMXzEwQklUX0NMS19FTkFCTEU7Ci0KLQlj cnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBjc2R3MTIgPQotCQlMQU5FU1RBR0dFUl9TVFJBUF9P VlJEIHwgbGFuZXN0YWdnZXI7Ci0KLQlwbGwgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGwoaW50ZWxf Y3J0YywgY3J0Y19zdGF0ZSwgaW50ZWxfZW5jb2Rlcik7Ci0JaWYgKHBsbCA9PSBOVUxMKSB7Ci0J CURSTV9ERUJVR19EUklWRVIoImZhaWxlZCB0byBmaW5kIFBMTCBmb3IgcGlwZSAlY1xuIiwKLQkJ CXBpcGVfbmFtZShpbnRlbF9jcnRjLT5waXBlKSk7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkv KiBzaGFyZWQgRFBMTCBpZCAwIGlzIERQTEwgQSAqLwotCWNydGNfc3RhdGUtPmRkaV9wbGxfc2Vs ID0gcGxsLT5pZDsKLQotCXJldHVybiB0cnVlOworCXJldHVybiAhIWludGVsX2dldF9zaGFyZWRf ZHBsbChpbnRlbF9jcnRjLCBjcnRjX3N0YXRlLCBpbnRlbF9lbmNvZGVyKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCmluZGV4IGIxMThkNzcuLjA0M2I3YTQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwpAQCAtMTM0MiwyOSArMTM0MiwxNTYg QEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKKy8qIGJ4dCBjbG9jayBwYXJhbWV0ZXJzICovCitz dHJ1Y3QgYnh0X2Nsa19kaXYgeworCWludCBjbG9jazsKKwl1aW50MzJfdCBwMTsKKwl1aW50MzJf dCBwMjsKKwl1aW50MzJfdCBtMl9pbnQ7CisJdWludDMyX3QgbTJfZnJhYzsKKwlib29sIG0yX2Zy YWNfZW47CisJdWludDMyX3QgbjsKK307CisKKy8qIHByZS1jYWxjdWxhdGVkIHZhbHVlcyBmb3Ig RFAgbGlua3JhdGVzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9jbGtfZGl2IGJ4dF9kcF9j bGtfdmFsW10gPSB7CisJezE2MjAwMCwgNCwgMiwgMzIsIDE2Nzc3MjIsIDEsIDF9LAorCXsyNzAw MDAsIDQsIDEsIDI3LCAgICAgICAwLCAwLCAxfSwKKwl7NTQwMDAwLCAyLCAxLCAyNywgICAgICAg MCwgMCwgMX0sCisJezIxNjAwMCwgMywgMiwgMzIsIDE2Nzc3MjIsIDEsIDF9LAorCXsyNDMwMDAs IDQsIDEsIDI0LCAxMjU4MjkxLCAxLCAxfSwKKwl7MzI0MDAwLCA0LCAxLCAzMiwgMTY3NzcyMiwg MSwgMX0sCisJezQzMjAwMCwgMywgMSwgMzIsIDE2Nzc3MjIsIDEsIDF9Cit9OworCiBzdGF0aWMg c3RydWN0IGludGVsX3NoYXJlZF9kcGxsICoKIGJ4dF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICAgICBzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydDsKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsK IAllbnVtIGludGVsX2RwbGxfaWQgaTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydDsKKwlzdHJ1Y3QgYnh0X2Nsa19kaXYgY2xrX2RpdiA9IHswfTsKKwlpbnQgdmNv ID0gMDsKKwl1aW50MzJfdCBwcm9wX2NvZWYsIGludF9jb2VmLCBnYWluX2N0bCwgdGFyZ19jbnQ7 CisJdWludDMyX3QgbGFuZXN0YWdnZXI7CisJaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+cG9ydF9j bG9jazsKKworCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7CisJCWlu dGVsX2Nsb2NrX3QgYmVzdF9jbG9jazsKKworCQkvKiBDYWxjdWxhdGUgSERNSSBkaXYgKi8KKwkJ LyoKKwkJICogRklYTUU6IHRpZSB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIGludG8KKwkJICog aTl4eF9jcnRjX2NvbXB1dGVfY2xvY2sKKwkJICovCisJCWlmICghYnh0X2ZpbmRfYmVzdF9kcGxs KGNydGNfc3RhdGUsIGNsb2NrLCAmYmVzdF9jbG9jaykpIHsKKwkJCURSTV9ERUJVR19EUklWRVIo Im5vIFBMTCBkaXZpZGVycyBmb3VuZCBmb3IgY2xvY2sgJWQgcGlwZSAlY1xuIiwKKwkJCQkJIGNs b2NrLCBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQlj bGtfZGl2LnAxID0gYmVzdF9jbG9jay5wMTsKKwkJY2xrX2Rpdi5wMiA9IGJlc3RfY2xvY2sucDI7 CisJCVdBUk5fT04oYmVzdF9jbG9jay5tMSAhPSAyKTsKKwkJY2xrX2Rpdi5uID0gYmVzdF9jbG9j ay5uOworCQljbGtfZGl2Lm0yX2ludCA9IGJlc3RfY2xvY2subTIgPj4gMjI7CisJCWNsa19kaXYu bTJfZnJhYyA9IGJlc3RfY2xvY2subTIgJiAoKDEgPDwgMjIpIC0gMSk7CisJCWNsa19kaXYubTJf ZnJhY19lbiA9IGNsa19kaXYubTJfZnJhYyAhPSAwOworCisJCXZjbyA9IGJlc3RfY2xvY2sudmNv OworCX0gZWxzZSBpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQg fHwKKwkJICAgZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJCWludCBpOwor CisJCWNsa19kaXYgPSBieHRfZHBfY2xrX3ZhbFswXTsKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoYnh0X2RwX2Nsa192YWwpOyArK2kpIHsKKwkJCWlmIChieHRfZHBfY2xrX3ZhbFtpXS5j bG9jayA9PSBjbG9jaykgeworCQkJCWNsa19kaXYgPSBieHRfZHBfY2xrX3ZhbFtpXTsKKwkJCQli cmVhazsKKwkJCX0KKwkJfQorCQl2Y28gPSBjbG9jayAqIDEwIC8gMiAqIGNsa19kaXYucDEgKiBj bGtfZGl2LnAyOworCX0KIAotCS8qIFBMTCBpcyBhdHRhY2hlZCB0byBwb3J0IGluIGJ4dCAqLwot CWVuY29kZXIgPSBpbnRlbF9kZGlfZ2V0X2NydGNfbmV3X2VuY29kZXIoY3J0Y19zdGF0ZSk7Ci0J aWYgKFdBUk5fT04oIWVuY29kZXIpKQorCWlmICh2Y28gPj0gNjIwMDAwMCAmJiB2Y28gPD0gNjcw MDAwMCkgeworCQlwcm9wX2NvZWYgPSA0OworCQlpbnRfY29lZiA9IDk7CisJCWdhaW5fY3RsID0g MzsKKwkJdGFyZ19jbnQgPSA4OworCX0gZWxzZSBpZiAoKHZjbyA+IDU0MDAwMDAgJiYgdmNvIDwg NjIwMDAwMCkgfHwKKwkJCSh2Y28gPj0gNDgwMDAwMCAmJiB2Y28gPCA1NDAwMDAwKSkgeworCQlw cm9wX2NvZWYgPSA1OworCQlpbnRfY29lZiA9IDExOworCQlnYWluX2N0bCA9IDM7CisJCXRhcmdf Y250ID0gOTsKKwl9IGVsc2UgaWYgKHZjbyA9PSA1NDAwMDAwKSB7CisJCXByb3BfY29lZiA9IDM7 CisJCWludF9jb2VmID0gODsKKwkJZ2Fpbl9jdGwgPSAxOworCQl0YXJnX2NudCA9IDk7CisJfSBl bHNlIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIFZDT1xuIik7CiAJCXJldHVybiBOVUxMOworCX0K KworCW1lbXNldCgmY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSwgMCwKKwkgICAgICAgc2l6ZW9m KGNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUpKTsKKworCWlmIChjbG9jayA+IDI3MDAwMCkKKwkJ bGFuZXN0YWdnZXIgPSAweDE4OworCWVsc2UgaWYgKGNsb2NrID4gMTM1MDAwKQorCQlsYW5lc3Rh Z2dlciA9IDB4MGQ7CisJZWxzZSBpZiAoY2xvY2sgPiA2NzAwMCkKKwkJbGFuZXN0YWdnZXIgPSAw eDA3OworCWVsc2UgaWYgKGNsb2NrID4gMzMwMDApCisJCWxhbmVzdGFnZ2VyID0gMHgwNDsKKwll bHNlCisJCWxhbmVzdGFnZ2VyID0gMHgwMjsKKworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUu ZWJiMCA9CisJCVBPUlRfUExMX1AxKGNsa19kaXYucDEpIHwgUE9SVF9QTExfUDIoY2xrX2Rpdi5w Mik7CisJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5wbGwwID0gY2xrX2Rpdi5tMl9pbnQ7CisJ Y3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5wbGwxID0gUE9SVF9QTExfTihjbGtfZGl2Lm4pOwor CWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxsMiA9IGNsa19kaXYubTJfZnJhYzsKKworCWlm IChjbGtfZGl2Lm0yX2ZyYWNfZW4pCisJCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxsMyA9 CisJCQlQT1JUX1BMTF9NMl9GUkFDX0VOQUJMRTsKKworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3Rh dGUucGxsNiA9CisJCXByb3BfY29lZiB8IFBPUlRfUExMX0lOVF9DT0VGRihpbnRfY29lZik7CisJ Y3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5wbGw2IHw9CisJCVBPUlRfUExMX0dBSU5fQ1RMKGdh aW5fY3RsKTsKKworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxsOCA9IHRhcmdfY250Owor CisJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5wbGw5ID0gNSA8PCBQT1JUX1BMTF9MT0NLX1RI UkVTSE9MRF9TSElGVDsKKworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGxsMTAgPQorCQlQ T1JUX1BMTF9EQ09fQU1QKFBPUlRfUExMX0RDT19BTVBfREVGQVVMVCkKKwkJfCBQT1JUX1BMTF9E Q09fQU1QX09WUl9FTl9IOworCisJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5lYmI0ID0gUE9S VF9QTExfMTBCSVRfQ0xLX0VOQUJMRTsKKworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUucGNz ZHcxMiA9CisJCUxBTkVTVEFHR0VSX1NUUkFQX09WUkQgfCBsYW5lc3RhZ2dlcjsKIAogCWludGVs X2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKKwogCS8qIDE6MSBt YXBwaW5nIGJldHdlZW4gcG9ydHMgYW5kIFBMTHMgKi8KLQlpID0gKGVudW0gaW50ZWxfZHBsbF9p ZClpbnRlbF9kaWdfcG9ydC0+cG9ydDsKLQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tp XTsKKwlpID0gKGVudW0gaW50ZWxfZHBsbF9pZCkgaW50ZWxfZGlnX3BvcnQtPnBvcnQ7CisJcGxs ID0gaW50ZWxfZ2V0X3NoYXJlZF9kcGxsX2J5X2lkKGRldl9wcml2LCBpKTsKKwogCURSTV9ERUJV R19LTVMoIkNSVEM6JWQgdXNpbmcgcHJlLWFsbG9jYXRlZCAlc1xuIiwKIAkJY3J0Yy0+YmFzZS5i YXNlLmlkLCBwbGwtPm5hbWUpOwogCiAJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHBsbCwg Y3J0Y19zdGF0ZSk7CiAKKwkvKiBzaGFyZWQgRFBMTCBpZCAwIGlzIERQTEwgQSAqLworCWNydGNf c3RhdGUtPmRkaV9wbGxfc2VsID0gcGxsLT5pZDsKKwogCXJldHVybiBwbGw7CiB9CiAKLS0gCjIu NC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK