Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1322121ybk; Thu, 14 May 2020 06:15:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx9H96nT16NyAlR8C5MnNO9eTILuaCR97YCjLd+chhj2kMEcbjsz6nFJymLp6CaMog/xqBk X-Received: by 2002:a50:955a:: with SMTP id v26mr3989218eda.5.1589462125640; Thu, 14 May 2020 06:15:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589462125; cv=none; d=google.com; s=arc-20160816; b=Nmv/GhN7nmbWQQ8s2pLZLfewZNTvmupeSqA9aORRwQiKyzPQBUclk9XG1qffgVpzSr hmVtRjtp5eUSQT1CKbdSlFOC0uGVQlphvMKDtFrzwvMCT5ljI2QH4ho6lGwA8q7IQcMZ Pmoxzae+9UYzmvpiPB+ygM5vPdAgnvAet5rPufTPxnQpmnHsX4Bgoc/zi6ACbAS28YAB EsvqsJNpmWFYQFpxXXMZU4m7jQFku2WbiHPhILhe9/WxydUrynpsjD0L4ilaNqcjn6KC Fc+SVE7/o5iQgcdUtE0pkvGaj0XdYFiN1DRUb/ftVztvF8+fYpoU4TFyEKPjjNZEAbtQ gc2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fSwwfj6GBPrtajz76pr50V6AgK3lhKnlqqR4rVRO1iE=; b=ugNHE4yOWmHL0cMoaKbTh8As4UoTzKXw1qXxLG0knteuLgf9QVWa4etOjJu0b68yxq zAyVHhF0Jcr7BhwReYJa7vhRZapS7hMP8e0/rdfKrPCzRu9DbGtpMxzuGkBZDpNC7atT tSD6d5x4QhP2TJ9/FuaBykB/eiagWCgUl+RViHV/Yst0vstDk6oa3EyS8EKRlDdKjGXE 3py/WYZZOwwfi3n8Rr5SM5JbESmxHQEm/+U1LVFH2dgF625hlf0LG05OMeX+1JpLHm2H TfhZSlpwzKvRER2WNXQY0Kc2JQ5adtCYgwppdzJDxdntTSidtCMwUjGVAx6OsOUh04EI TUHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=FdU4dTND; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id si17si1850360ejb.288.2020.05.14.06.14.59; Thu, 14 May 2020 06:15:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=FdU4dTND; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727033AbgENNMt (ORCPT + 99 others); Thu, 14 May 2020 09:12:49 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:24826 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726763AbgENNMs (ORCPT ); Thu, 14 May 2020 09:12:48 -0400 X-UUID: c3b30740ad784812ad148d3b6bb038a9-20200514 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=fSwwfj6GBPrtajz76pr50V6AgK3lhKnlqqR4rVRO1iE=; b=FdU4dTNDuxS8yuqQRMY1oDCRiJ3vv12cECzXiWrmQ6BUA6uxRV8KKujZ9HS1C91C6t1P5mQfwFH8oFSwTIWi17nD8waEHsy2CzYI8cpbXuWj9SBVnDrBNbDsC+UByByNvV2t3nUsxFchBCzy7uBr2UHBbBM8IsSBDCaMIE6fzSY=; X-UUID: c3b30740ad784812ad148d3b6bb038a9-20200514 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 567518929; Thu, 14 May 2020 21:12:36 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 May 2020 21:12:32 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 14 May 2020 21:12:31 +0800 From: Qii Wang To: CC: , , , , , , , Subject: [PATCH v2 2/2] i2c: mediatek: Add i2c ac-timing adjust support Date: Thu, 14 May 2020 21:09:05 +0800 Message-ID: <1589461844-15614-3-git-send-email-qii.wang@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1589461844-15614-1-git-send-email-qii.wang@mediatek.com> References: <1589461844-15614-1-git-send-email-qii.wang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIGEgYWxnb3JpdGhtIHRvIGNhbGN1bGF0ZSBzb21lIGFjLXRpbWluZyBw YXJhbWV0ZXJzDQp3aGljaCBjYW4gZnVsbHkgbWVldCBJMkMgU3BlYy4NCg0KU2lnbmVkLW9mZi1i eTogUWlpIFdhbmcgPHFpaS53YW5nQG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvaTJjL2J1 c3Nlcy9pMmMtbXQ2NXh4LmMgfCAzMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25z KC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW10NjV4eC5jIGIvZHJp dmVycy9pMmMvYnVzc2VzL2kyYy1tdDY1eHguYw0KaW5kZXggMGNhNmMzOGEuLjcwMjA2MTggMTAw NjQ0DQotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW10NjV4eC5jDQorKysgYi9kcml2ZXJz L2kyYy9idXNzZXMvaTJjLW10NjV4eC5jDQpAQCAtNDAsMTIgKzQwLDExIEBADQogI2RlZmluZSBJ MkNfU09GVF9SU1QJCQkweDAwMDENCiAjZGVmaW5lIEkyQ19GSUZPX0FERFJfQ0xSCQkweDAwMDEN CiAjZGVmaW5lIEkyQ19ERUxBWV9MRU4JCQkweDAwMDINCi0jZGVmaW5lIEkyQ19TVF9TVEFSVF9D T04JCTB4ODAwMQ0KLSNkZWZpbmUgSTJDX0ZTX1NUQVJUX0NPTgkJMHgxODAwDQogI2RlZmluZSBJ MkNfVElNRV9DTFJfVkFMVUUJCTB4MDAwMA0KICNkZWZpbmUgSTJDX1RJTUVfREVGQVVMVF9WQUxV RQkJMHgwMDAzDQogI2RlZmluZSBJMkNfV1JSRF9UUkFOQUNfVkFMVUUJCTB4MDAwMg0KICNkZWZp bmUgSTJDX1JEX1RSQU5BQ19WQUxVRQkJMHgwMDAxDQorI2RlZmluZSBJMkNfU0NMX01JU19DT01Q X1ZBTFVFCQkweDAwMDANCiANCiAjZGVmaW5lIEkyQ19ETUFfQ09OX1RYCQkJMHgwMDAwDQogI2Rl ZmluZSBJMkNfRE1BX0NPTl9SWAkJCTB4MDAwMQ0KQEAgLTU1LDEwICs1NCwxMyBAQA0KICNkZWZp bmUgSTJDX0RNQV9IQVJEX1JTVAkJMHgwMDAyDQogI2RlZmluZSBJMkNfRE1BXzRHX01PREUJCQkw eDAwMDENCiANCi0jZGVmaW5lIEkyQ19ERUZBVUxUX0NMS19ESVYJCTUNCiAjZGVmaW5lIE1BWF9T QU1QTEVfQ05UX0RJVgkJOA0KICNkZWZpbmUgTUFYX1NURVBfQ05UX0RJVgkJNjQNCisjZGVmaW5l IE1BWF9DTE9DS19ESVYJCQkyNTYNCiAjZGVmaW5lIE1BWF9IU19TVEVQX0NOVF9ESVYJCTgNCisj ZGVmaW5lIEkyQ19TVEFOREFSRF9NT0RFX0JVRkZFUgkoMTAwMCAvIDIpDQorI2RlZmluZSBJMkNf RkFTVF9NT0RFX0JVRkZFUgkJKDMwMCAvIDIpDQorI2RlZmluZSBJMkNfRkFTVF9NT0RFX1BMVVNf QlVGRkVSCSgyMCAvIDIpDQogDQogI2RlZmluZSBJMkNfQ09OVFJPTF9SUyAgICAgICAgICAgICAg ICAgICgweDEgPDwgMSkNCiAjZGVmaW5lIEkyQ19DT05UUk9MX0RNQV9FTiAgICAgICAgICAgICAg KDB4MSA8PCAyKQ0KQEAgLTEyMyw2ICsxMjUsMTIgQEAgZW51bSBJMkNfUkVHU19PRkZTRVQgew0K IAlPRkZTRVRfVFJBTlNGRVJfTEVOX0FVWCwNCiAJT0ZGU0VUX0NMT0NLX0RJViwNCiAJT0ZGU0VU X0xUSU1JTkcsDQorCU9GRlNFVF9TQ0xfSElHSF9MT1dfUkFUSU8sDQorCU9GRlNFVF9IU19TQ0xf SElHSF9MT1dfUkFUSU8sDQorCU9GRlNFVF9TQ0xfTUlTX0NPTVBfUE9JTlQsDQorCU9GRlNFVF9T VEFfU1RPX0FDX1RJTUlORywNCisJT0ZGU0VUX0hTX1NUQV9TVE9fQUNfVElNSU5HLA0KKwlPRkZT RVRfU0RBX1RJTUlORywNCiB9Ow0KIA0KIHN0YXRpYyBjb25zdCB1MTYgbXRfaTJjX3JlZ3NfdjFb XSA9IHsNCkBAIC0xNTAsNiArMTU4LDEyIEBAIGVudW0gSTJDX1JFR1NfT0ZGU0VUIHsNCiAJW09G RlNFVF9ERUJVR0NUUkxdID0gMHg2OCwNCiAJW09GRlNFVF9UUkFOU0ZFUl9MRU5fQVVYXSA9IDB4 NmMsDQogCVtPRkZTRVRfQ0xPQ0tfRElWXSA9IDB4NzAsDQorCVtPRkZTRVRfU0NMX0hJR0hfTE9X X1JBVElPXSA9IDB4NzQsDQorCVtPRkZTRVRfSFNfU0NMX0hJR0hfTE9XX1JBVElPXSA9IDB4Nzgs DQorCVtPRkZTRVRfU0NMX01JU19DT01QX1BPSU5UXSA9IDB4N0MsDQorCVtPRkZTRVRfU1RBX1NU T19BQ19USU1JTkddID0gMHg4MCwNCisJW09GRlNFVF9IU19TVEFfU1RPX0FDX1RJTUlOR10gPSAw eDg0LA0KKwlbT0ZGU0VUX1NEQV9USU1JTkddID0gMHg4OCwNCiB9Ow0KIA0KIHN0YXRpYyBjb25z dCB1MTYgbXRfaTJjX3JlZ3NfdjJbXSA9IHsNCkBAIC0xNjgsOSArMTgyLDExIEBAIGVudW0gSTJD X1JFR1NfT0ZGU0VUIHsNCiAJW09GRlNFVF9IU10gPSAweDMwLA0KIAlbT0ZGU0VUX0lPX0NPTkZJ R10gPSAweDM0LA0KIAlbT0ZGU0VUX0ZJRk9fQUREUl9DTFJdID0gMHgzOCwNCisJW09GRlNFVF9T REFfVElNSU5HXSA9IDB4M2MsDQogCVtPRkZTRVRfVFJBTlNGRVJfTEVOX0FVWF0gPSAweDQ0LA0K IAlbT0ZGU0VUX0NMT0NLX0RJVl0gPSAweDQ4LA0KIAlbT0ZGU0VUX1NPRlRSRVNFVF0gPSAweDUw LA0KKwlbT0ZGU0VUX1NDTF9NSVNfQ09NUF9QT0lOVF0gPSAweDkwLA0KIAlbT0ZGU0VUX0RFQlVH U1RBVF0gPSAweGUwLA0KIAlbT0ZGU0VUX0RFQlVHQ1RSTF0gPSAweGU4LA0KIAlbT0ZGU0VUX0ZJ Rk9fU1RBVF0gPSAweGY0LA0KQEAgLTE5MSw2ICsyMDcsMTkgQEAgc3RydWN0IG10a19pMmNfY29t cGF0aWJsZSB7DQogCXVuc2lnbmVkIGNoYXIgbHRpbWluZ19hZGp1c3Q6IDE7DQogfTsNCiANCitz dHJ1Y3QgbXRrX2kyY19hY190aW1pbmcgew0KKwl1MTYgaHRpbWluZzsNCisJdTE2IGx0aW1pbmc7 DQorCXUxNiBoczsNCisJdTE2IGV4dDsNCisJdTE2IGludGVyX2Nsa19kaXY7DQorCXUxNiBzY2xf aGxfcmF0aW87DQorCXUxNiBoc19zY2xfaGxfcmF0aW87DQorCXUxNiBzdGFfc3RvcDsNCisJdTE2 IGhzX3N0YV9zdG9wOw0KKwl1MTYgc2RhX3RpbWluZzsNCit9Ow0KKw0KIHN0cnVjdCBtdGtfaTJj IHsNCiAJc3RydWN0IGkyY19hZGFwdGVyIGFkYXA7CS8qIGkyYyBob3N0IGFkYXB0ZXIgKi8NCiAJ c3RydWN0IGRldmljZSAqZGV2Ow0KQEAgLTIxNSw5ICsyNDQsNDYgQEAgc3RydWN0IG10a19pMmMg ew0KIAl1MTYgbHRpbWluZ19yZWc7DQogCXVuc2lnbmVkIGNoYXIgYXV0b19yZXN0YXJ0Ow0KIAli b29sIGlnbm9yZV9yZXN0YXJ0X2lycTsNCisJc3RydWN0IG10a19pMmNfYWNfdGltaW5nIGFjX3Rp bWluZzsNCiAJY29uc3Qgc3RydWN0IG10a19pMmNfY29tcGF0aWJsZSAqZGV2X2NvbXA7DQogfTsN CiANCisvKioNCisgKiBzdHJ1Y3QgaTJjX3NwZWNfdmFsdWVzOg0KKyAqIG1pbl9sb3dfbnM6IG1p biBMT1cgcGVyaW9kIG9mIHRoZSBTQ0wgY2xvY2sNCisgKiBtaW5fc3Vfc3RhX25zOiBtaW4gc2V0 LXVwIHRpbWUgZm9yIGEgcmVwZWF0ZWQgU1RBUlQgY29uZGl0aW9uDQorICogbWF4X2hkX2RhdF9u czogbWF4IGRhdGEgaG9sZCB0aW1lDQorICogbWluX3N1X2RhdF9uczogbWluIGRhdGEgc2V0LXVw IHRpbWUNCisgKi8NCitzdHJ1Y3QgaTJjX3NwZWNfdmFsdWVzIHsNCisJdW5zaWduZWQgaW50IG1p bl9sb3dfbnM7DQorCXVuc2lnbmVkIGludCBtaW5faGlnaF9uczsNCisJdW5zaWduZWQgaW50IG1p bl9zdV9zdGFfbnM7DQorCXVuc2lnbmVkIGludCBtYXhfaGRfZGF0X25zOw0KKwl1bnNpZ25lZCBp bnQgbWluX3N1X2RhdF9uczsNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX3NwZWNf dmFsdWVzIHN0YW5kYXJkX21vZGVfc3BlYyA9IHsNCisJLm1pbl9sb3dfbnMgPSA0NzAwICsgSTJD X1NUQU5EQVJEX01PREVfQlVGRkVSLA0KKwkubWluX3N1X3N0YV9ucyA9IDQ3MDAgKyBJMkNfU1RB TkRBUkRfTU9ERV9CVUZGRVIsDQorCS5tYXhfaGRfZGF0X25zID0gMzQ1MCAtIEkyQ19TVEFOREFS RF9NT0RFX0JVRkZFUiwNCisJLm1pbl9zdV9kYXRfbnMgPSAyNTAgKyBJMkNfU1RBTkRBUkRfTU9E RV9CVUZGRVIsDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19zcGVjX3ZhbHVlcyBm YXN0X21vZGVfc3BlYyA9IHsNCisJLm1pbl9sb3dfbnMgPSAxMzAwICsgSTJDX0ZBU1RfTU9ERV9C VUZGRVIsDQorCS5taW5fc3Vfc3RhX25zID0gNjAwICsgSTJDX0ZBU1RfTU9ERV9CVUZGRVIsDQor CS5tYXhfaGRfZGF0X25zID0gOTAwIC0gSTJDX0ZBU1RfTU9ERV9CVUZGRVIsDQorCS5taW5fc3Vf ZGF0X25zID0gMTAwICsgSTJDX0ZBU1RfTU9ERV9CVUZGRVIsDQorfTsNCisNCitzdGF0aWMgY29u c3Qgc3RydWN0IGkyY19zcGVjX3ZhbHVlcyBmYXN0X21vZGVfcGx1c19zcGVjID0gew0KKwkubWlu X2xvd19ucyA9IDUwMCArIEkyQ19GQVNUX01PREVfUExVU19CVUZGRVIsDQorCS5taW5fc3Vfc3Rh X25zID0gMjYwICsgSTJDX0ZBU1RfTU9ERV9QTFVTX0JVRkZFUiwNCisJLm1heF9oZF9kYXRfbnMg PSA0MDAgLSBJMkNfRkFTVF9NT0RFX1BMVVNfQlVGRkVSLA0KKwkubWluX3N1X2RhdF9ucyA9IDUw ICsgSTJDX0ZBU1RfTU9ERV9QTFVTX0JVRkZFUiwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTJjX2FkYXB0ZXJfcXVpcmtzIG10NjU3N19pMmNfcXVpcmtzID0gew0KIAkuZmxhZ3MgPSBJ MkNfQVFfQ09NQl9XUklURV9USEVOX1JFQUQsDQogCS5tYXhfbnVtX21zZ3MgPSAxLA0KQEAgLTM5 NywxNCArNDYzLDM4IEBAIHN0YXRpYyB2b2lkIG10a19pMmNfaW5pdF9odyhzdHJ1Y3QgbXRrX2ky YyAqaTJjKQ0KIAlpZiAoaTJjLT5kZXZfY29tcC0+ZGNtKQ0KIAkJbXRrX2kyY193cml0ZXcoaTJj LCBJMkNfRENNX0RJU0FCTEUsIE9GRlNFVF9EQ01fRU4pOw0KIA0KLQlpZiAoaTJjLT5kZXZfY29t cC0+dGltaW5nX2FkanVzdCkNCi0JCW10a19pMmNfd3JpdGV3KGkyYywgSTJDX0RFRkFVTFRfQ0xL X0RJViAtIDEsIE9GRlNFVF9DTE9DS19ESVYpOw0KLQ0KIAltdGtfaTJjX3dyaXRldyhpMmMsIGky Yy0+dGltaW5nX3JlZywgT0ZGU0VUX1RJTUlORyk7DQogCW10a19pMmNfd3JpdGV3KGkyYywgaTJj LT5oaWdoX3NwZWVkX3JlZywgT0ZGU0VUX0hTKTsNCiAJaWYgKGkyYy0+ZGV2X2NvbXAtPmx0aW1p bmdfYWRqdXN0KQ0KIAkJbXRrX2kyY193cml0ZXcoaTJjLCBpMmMtPmx0aW1pbmdfcmVnLCBPRkZT RVRfTFRJTUlORyk7DQogDQorCWlmIChpMmMtPmRldl9jb21wLT50aW1pbmdfYWRqdXN0KSB7DQor CQltdGtfaTJjX3dyaXRldyhpMmMsIGkyYy0+YWNfdGltaW5nLmV4dCwgT0ZGU0VUX0VYVF9DT05G KTsNCisJCW10a19pMmNfd3JpdGV3KGkyYywgaTJjLT5hY190aW1pbmcuaW50ZXJfY2xrX2RpdiwN CisJCQkgICAgICAgT0ZGU0VUX0NMT0NLX0RJVik7DQorCQltdGtfaTJjX3dyaXRldyhpMmMsIEky Q19TQ0xfTUlTX0NPTVBfVkFMVUUsDQorCQkJICAgICAgIE9GRlNFVF9TQ0xfTUlTX0NPTVBfUE9J TlQpOw0KKwkJbXRrX2kyY193cml0ZXcoaTJjLCBpMmMtPmFjX3RpbWluZy5zZGFfdGltaW5nLA0K KwkJCSAgICAgICBPRkZTRVRfU0RBX1RJTUlORyk7DQorDQorCQlpZiAoaTJjLT5kZXZfY29tcC0+ bHRpbWluZ19hZGp1c3QpIHsNCisJCQltdGtfaTJjX3dyaXRldyhpMmMsIGkyYy0+YWNfdGltaW5n Lmh0aW1pbmcsDQorCQkJCSAgICAgICBPRkZTRVRfVElNSU5HKTsNCisJCQltdGtfaTJjX3dyaXRl dyhpMmMsIGkyYy0+YWNfdGltaW5nLmhzLCBPRkZTRVRfSFMpOw0KKwkJCW10a19pMmNfd3JpdGV3 KGkyYywgaTJjLT5hY190aW1pbmcubHRpbWluZywNCisJCQkJICAgICAgIE9GRlNFVF9MVElNSU5H KTsNCisJCX0gZWxzZSB7DQorCQkJbXRrX2kyY193cml0ZXcoaTJjLCBpMmMtPmFjX3RpbWluZy5z Y2xfaGxfcmF0aW8sDQorCQkJCSAgICAgICBPRkZTRVRfU0NMX0hJR0hfTE9XX1JBVElPKTsNCisJ CQltdGtfaTJjX3dyaXRldyhpMmMsIGkyYy0+YWNfdGltaW5nLmhzX3NjbF9obF9yYXRpbywNCisJ CQkJICAgICAgIE9GRlNFVF9IU19TQ0xfSElHSF9MT1dfUkFUSU8pOw0KKwkJCW10a19pMmNfd3Jp dGV3KGkyYywgaTJjLT5hY190aW1pbmcuc3RhX3N0b3AsDQorCQkJCSAgICAgICBPRkZTRVRfU1RB X1NUT19BQ19USU1JTkcpOw0KKwkJCW10a19pMmNfd3JpdGV3KGkyYywgaTJjLT5hY190aW1pbmcu aHNfc3RhX3N0b3AsDQorCQkJCSAgICAgICBPRkZTRVRfSFNfU1RBX1NUT19BQ19USU1JTkcpOw0K KwkJfQ0KKwl9DQorDQogCS8qIElmIHVzZSBpMmMgcGluIGZyb20gUE1JQyBtdDYzOTcgc2lkZSwg bmVlZCBzZXQgUEFUSF9ESVIgZmlyc3QgKi8NCiAJaWYgKGkyYy0+aGF2ZV9wbWljKQ0KIAkJbXRr X2kyY193cml0ZXcoaTJjLCBJMkNfQ09OVFJPTF9XUkFQUEVSLCBPRkZTRVRfUEFUSF9ESVIpOw0K QEAgLTQyMiw2ICs1MTIsMTI1IEBAIHN0YXRpYyB2b2lkIG10a19pMmNfaW5pdF9odyhzdHJ1Y3Qg bXRrX2kyYyAqaTJjKQ0KIAl3cml0ZWwoSTJDX0RNQV9DTFJfRkxBRywgaTJjLT5wZG1hYmFzZSAr IE9GRlNFVF9SU1QpOw0KIH0NCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19zcGVjX3ZhbHVl cyAqbXRrX2kyY19nZXRfc3BlYyh1bnNpZ25lZCBpbnQgc3BlZWQpDQorew0KKwlpZiAoc3BlZWQg PD0gSTJDX01BWF9TVEFOREFSRF9NT0RFX0ZSRVEpDQorCQlyZXR1cm4gJnN0YW5kYXJkX21vZGVf c3BlYzsNCisJZWxzZSBpZiAoc3BlZWQgPD0gSTJDX01BWF9GQVNUX01PREVfRlJFUSkNCisJCXJl dHVybiAmZmFzdF9tb2RlX3NwZWM7DQorCWVsc2UNCisJCXJldHVybiAmZmFzdF9tb2RlX3BsdXNf c3BlYzsNCit9DQorDQorc3RhdGljIGludCBtdGtfaTJjX21heF9zdGVwX2NudCh1bnNpZ25lZCBp bnQgdGFyZ2V0X3NwZWVkKQ0KK3sNCisJaWYgKHRhcmdldF9zcGVlZCA+IEkyQ19NQVhfRkFTVF9N T0RFX0ZSRVEpDQorCQlyZXR1cm4gTUFYX0hTX1NURVBfQ05UX0RJVjsNCisJZWxzZQ0KKwkJcmV0 dXJuIE1BWF9TVEVQX0NOVF9ESVY7DQorfQ0KKw0KKy8qDQorICogQ2hlY2sgYW5kIENhbGN1bGF0 ZSBpMmMgYWMtdGltaW5nDQorICoNCisgKiBIYXJkd2FyZSBkZXNpZ246DQorICogc2FtcGxlX25z ID0gKDEwMDAwMDAwMDAgKiAoc2FtcGxlX2NudCArIDEpKSAvIGNsa19zcmMNCisgKiB4eHhfY250 X2RpdiA9ICBzcGVjLT5taW5feHh4X25zIC8gc2FtcGxlX25zDQorICoNCisgKiBTYW1wbGVfbnMg aXMgcm91bmRlZCBkb3duIGZvciB4eHhfY250X2RpdiB3b3VsZCBiZSBncmVhdGVyDQorICogdGhh biB0aGUgc21hbGxlc3Qgc3BlYy4NCisgKiBUaGUgc2RhX3RpbWluZyBpcyBjaG9zZW4gYXMgdGhl IG1pZGRsZSB2YWx1ZSBiZXR3ZWVuDQorICogdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0Lg0KKyAq Lw0KK3N0YXRpYyBpbnQgbXRrX2kyY19jaGVja19hY190aW1pbmcoc3RydWN0IG10a19pMmMgKmky YywNCisJCQkJICAgdW5zaWduZWQgaW50IGNsa19zcmMsDQorCQkJCSAgIHVuc2lnbmVkIGludCBj aGVja19zcGVlZCwNCisJCQkJICAgdW5zaWduZWQgaW50IHN0ZXBfY250LA0KKwkJCQkgICB1bnNp Z25lZCBpbnQgc2FtcGxlX2NudCkNCit7DQorCWNvbnN0IHN0cnVjdCBpMmNfc3BlY192YWx1ZXMg KnNwZWM7DQorCXVuc2lnbmVkIGludCBzdV9zdGFfY250LCBsb3dfY250LCBoaWdoX2NudCwgbWF4 X3N0ZXBfY250Ow0KKwl1bnNpZ25lZCBpbnQgc2RhX21heCwgc2RhX21pbiwgY2xrX25zLCBtYXhf c3RhX2NudCA9IDB4M2Y7DQorCWxvbmcgbG9uZyBzYW1wbGVfbnMgPSAoMTAwMDAwMDAwMCAqIChz YW1wbGVfY250ICsgMSkpIC8gY2xrX3NyYzsNCisNCisJaWYgKCFpMmMtPmRldl9jb21wLT50aW1p bmdfYWRqdXN0KQ0KKwkJcmV0dXJuIDA7DQorDQorCWlmIChpMmMtPmRldl9jb21wLT5sdGltaW5n X2FkanVzdCkNCisJCW1heF9zdGFfY250ID0gMHgxMDA7DQorDQorCXNwZWMgPSBtdGtfaTJjX2dl dF9zcGVjKGNoZWNrX3NwZWVkKTsNCisNCisJaWYgKGkyYy0+ZGV2X2NvbXAtPmx0aW1pbmdfYWRq dXN0KQ0KKwkJY2xrX25zID0gMTAwMDAwMDAwMCAvIGNsa19zcmM7DQorCWVsc2UNCisJCWNsa19u cyA9IHNhbXBsZV9ucyAvIDI7DQorDQorCXN1X3N0YV9jbnQgPSBESVZfUk9VTkRfVVAoc3BlYy0+ bWluX3N1X3N0YV9ucywgY2xrX25zKTsNCisJaWYgKHN1X3N0YV9jbnQgPiBtYXhfc3RhX2NudCkN CisJCXJldHVybiAtMTsNCisNCisJbG93X2NudCA9IERJVl9ST1VORF9VUChzcGVjLT5taW5fbG93 X25zLCBzYW1wbGVfbnMpOw0KKwltYXhfc3RlcF9jbnQgPSBtdGtfaTJjX21heF9zdGVwX2NudChj aGVja19zcGVlZCk7DQorCWlmICgoMiAqIHN0ZXBfY250KSA+IGxvd19jbnQgJiYgbG93X2NudCA8 IG1heF9zdGVwX2NudCkgew0KKwkJaWYgKGxvd19jbnQgPiBzdGVwX2NudCkgew0KKwkJCWhpZ2hf Y250ID0gMiAqIHN0ZXBfY250IC0gbG93X2NudDsNCisJCX0gZWxzZSB7DQorCQkJaGlnaF9jbnQg PSBzdGVwX2NudDsNCisJCQlsb3dfY250ID0gc3RlcF9jbnQ7DQorCQl9DQorCX0gZWxzZSB7DQor CQlyZXR1cm4gLTI7DQorCX0NCisNCisJc2RhX21heCA9IHNwZWMtPm1heF9oZF9kYXRfbnMgLyBz YW1wbGVfbnM7DQorCWlmIChzZGFfbWF4ID4gbG93X2NudCkNCisJCXNkYV9tYXggPSAwOw0KKw0K KwlzZGFfbWluID0gRElWX1JPVU5EX1VQKHNwZWMtPm1pbl9zdV9kYXRfbnMsIHNhbXBsZV9ucyk7 DQorCWlmIChzZGFfbWluIDwgbG93X2NudCkNCisJCXNkYV9taW4gPSAwOw0KKw0KKwlpZiAoc2Rh X21pbiA+IHNkYV9tYXgpDQorCQlyZXR1cm4gLTM7DQorDQorCWlmIChjaGVja19zcGVlZCA+IEky Q19NQVhfRkFTVF9NT0RFX0ZSRVEpIHsNCisJCWlmIChpMmMtPmRldl9jb21wLT5sdGltaW5nX2Fk anVzdCkgew0KKwkJCWkyYy0+YWNfdGltaW5nLmhzID0gSTJDX1RJTUVfREVGQVVMVF9WQUxVRSB8 DQorCQkJCShzYW1wbGVfY250IDw8IDEyKSB8IChoaWdoX2NudCA8PCA4KTsNCisJCQlpMmMtPmFj X3RpbWluZy5sdGltaW5nICY9IH5HRU5NQVNLKDE1LCA5KTsNCisJCQlpMmMtPmFjX3RpbWluZy5s dGltaW5nIHw9IChzYW1wbGVfY250IDw8IDEyKSB8DQorCQkJCShsb3dfY250IDw8IDkpOw0KKwkJ CWkyYy0+YWNfdGltaW5nLmV4dCAmPSB+R0VOTUFTSyg3LCAxKTsNCisJCQlpMmMtPmFjX3RpbWlu Zy5leHQgfD0gKHN1X3N0YV9jbnQgPDwgMSkgfCAoMSA8PCAwKTsNCisJCX0gZWxzZSB7DQorCQkJ aTJjLT5hY190aW1pbmcuaHNfc2NsX2hsX3JhdGlvID0gKDEgPDwgMTIpIHwNCisJCQkJKGhpZ2hf Y250IDw8IDYpIHwgbG93X2NudDsNCisJCQlpMmMtPmFjX3RpbWluZy5oc19zdGFfc3RvcCA9IChz dV9zdGFfY250IDw8IDgpIHwNCisJCQkJc3Vfc3RhX2NudDsNCisJCX0NCisJCWkyYy0+YWNfdGlt aW5nLnNkYV90aW1pbmcgJj0gfkdFTk1BU0soMTEsIDYpOw0KKwkJaTJjLT5hY190aW1pbmcuc2Rh X3RpbWluZyB8PSAoMSA8PCAxMikgfA0KKwkJCSgoc2RhX21heCArIHNkYV9taW4pIC8gMikgPDwg NjsNCisJfSBlbHNlIHsNCisJCWlmIChpMmMtPmRldl9jb21wLT5sdGltaW5nX2FkanVzdCkgew0K KwkJCWkyYy0+YWNfdGltaW5nLmh0aW1pbmcgPSAoc2FtcGxlX2NudCA8PCA4KSB8IChoaWdoX2Nu dCk7DQorCQkJaTJjLT5hY190aW1pbmcubHRpbWluZyA9IChzYW1wbGVfY250IDw8IDYpIHwgKGxv d19jbnQpOw0KKwkJCWkyYy0+YWNfdGltaW5nLmV4dCA9IChzdV9zdGFfY250IDw8IDgpIHwgKDEg PDwgMCk7DQorCQl9IGVsc2Ugew0KKwkJCWkyYy0+YWNfdGltaW5nLnNjbF9obF9yYXRpbyA9ICgx IDw8IDEyKSB8DQorCQkJCShoaWdoX2NudCA8PCA2KSB8IGxvd19jbnQ7DQorCQkJaTJjLT5hY190 aW1pbmcuc3RhX3N0b3AgPSAoc3Vfc3RhX2NudCA8PCA4KSB8DQorCQkJCXN1X3N0YV9jbnQ7DQor CQl9DQorDQorCQlpMmMtPmFjX3RpbWluZy5zZGFfdGltaW5nID0gKDEgPDwgMTIpIHwNCisJCQko c2RhX21heCArIHNkYV9taW4pIC8gMjsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogLyoN CiAgKiBDYWxjdWxhdGUgaTJjIHBvcnQgc3BlZWQNCiAgKg0KQEAgLTQ0NiwxNSArNjU1LDEyIEBA IHN0YXRpYyBpbnQgbXRrX2kyY19jYWxjdWxhdGVfc3BlZWQoc3RydWN0IG10a19pMmMgKmkyYywg dW5zaWduZWQgaW50IGNsa19zcmMsDQogCXVuc2lnbmVkIGludCBvcHRfZGl2Ow0KIAl1bnNpZ25l ZCBpbnQgYmVzdF9tdWw7DQogCXVuc2lnbmVkIGludCBjbnRfbXVsOw0KKwlpbnQgcmV0ID0gLUVJ TlZBTDsNCiANCiAJaWYgKHRhcmdldF9zcGVlZCA+IEkyQ19NQVhfRkFTVF9NT0RFX1BMVVNfRlJF USkNCiAJCXRhcmdldF9zcGVlZCA9IEkyQ19NQVhfRkFTVF9NT0RFX1BMVVNfRlJFUTsNCiANCi0J aWYgKHRhcmdldF9zcGVlZCA+IEkyQ19NQVhfRkFTVF9NT0RFX0ZSRVEpDQotCQltYXhfc3RlcF9j bnQgPSBNQVhfSFNfU1RFUF9DTlRfRElWOw0KLQllbHNlDQotCQltYXhfc3RlcF9jbnQgPSBNQVhf U1RFUF9DTlRfRElWOw0KLQ0KKwltYXhfc3RlcF9jbnQgPSBtdGtfaTJjX21heF9zdGVwX2NudCh0 YXJnZXRfc3BlZWQpOw0KIAliYXNlX3N0ZXBfY250ID0gbWF4X3N0ZXBfY250Ow0KIAkvKiBGaW5k IHRoZSBiZXN0IGNvbWJpbmF0aW9uICovDQogCW9wdF9kaXYgPSBESVZfUk9VTkRfVVAoY2xrX3Ny YyA+PiAxLCB0YXJnZXRfc3BlZWQpOw0KQEAgLTQ3Myw2ICs2NzksMTEgQEAgc3RhdGljIGludCBt dGtfaTJjX2NhbGN1bGF0ZV9zcGVlZChzdHJ1Y3QgbXRrX2kyYyAqaTJjLCB1bnNpZ25lZCBpbnQg Y2xrX3NyYywNCiAJCQljb250aW51ZTsNCiANCiAJCWlmIChjbnRfbXVsIDwgYmVzdF9tdWwpIHsN CisJCQlyZXQgPSBtdGtfaTJjX2NoZWNrX2FjX3RpbWluZyhpMmMsIGNsa19zcmMsDQorCQkJCXRh cmdldF9zcGVlZCwgc3RlcF9jbnQgLSAxLCBzYW1wbGVfY250IC0gMSk7DQorCQkJaWYgKHJldCkN CisJCQkJY29udGludWU7DQorDQogCQkJYmVzdF9tdWwgPSBjbnRfbXVsOw0KIAkJCWJhc2Vfc2Ft cGxlX2NudCA9IHNhbXBsZV9jbnQ7DQogCQkJYmFzZV9zdGVwX2NudCA9IHN0ZXBfY250Ow0KQEAg LTQ4MSw2ICs2OTIsOSBAQCBzdGF0aWMgaW50IG10a19pMmNfY2FsY3VsYXRlX3NwZWVkKHN0cnVj dCBtdGtfaTJjICppMmMsIHVuc2lnbmVkIGludCBjbGtfc3JjLA0KIAkJfQ0KIAl9DQogDQorCWlm IChyZXQpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCiAJc2FtcGxlX2NudCA9IGJhc2Vfc2FtcGxl X2NudDsNCiAJc3RlcF9jbnQgPSBiYXNlX3N0ZXBfY250Ow0KIA0KQEAgLTUwNiw0NyArNzIwLDY4 IEBAIHN0YXRpYyBpbnQgbXRrX2kyY19zZXRfc3BlZWQoc3RydWN0IG10a19pMmMgKmkyYywgdW5z aWduZWQgaW50IHBhcmVudF9jbGspDQogCXVuc2lnbmVkIGludCBsX3N0ZXBfY250Ow0KIAl1bnNp Z25lZCBpbnQgbF9zYW1wbGVfY250Ow0KIAl1bnNpZ25lZCBpbnQgdGFyZ2V0X3NwZWVkOw0KKwl1 bnNpZ25lZCBpbnQgY2xrX2RpdjsNCisJdW5zaWduZWQgaW50IG1heF9jbGtfZGl2Ow0KIAlpbnQg cmV0Ow0KIA0KLQljbGtfc3JjID0gcGFyZW50X2NsayAvIGkyYy0+Y2xrX3NyY19kaXY7DQogCXRh cmdldF9zcGVlZCA9IGkyYy0+c3BlZWRfaHo7DQorCXBhcmVudF9jbGsgLz0gaTJjLT5jbGtfc3Jj X2RpdjsNCiANCi0JaWYgKHRhcmdldF9zcGVlZCA+IEkyQ19NQVhfRkFTVF9NT0RFX0ZSRVEpIHsN Ci0JCS8qIFNldCBtYXN0ZXIgY29kZSBzcGVlZCByZWdpc3RlciAqLw0KLQkJcmV0ID0gbXRrX2ky Y19jYWxjdWxhdGVfc3BlZWQoaTJjLCBjbGtfc3JjLCBJMkNfTUFYX0ZBU1RfTU9ERV9GUkVRLA0K LQkJCQkJICAgICAgJmxfc3RlcF9jbnQsICZsX3NhbXBsZV9jbnQpOw0KLQkJaWYgKHJldCA8IDAp DQotCQkJcmV0dXJuIHJldDsNCi0NCi0JCWkyYy0+dGltaW5nX3JlZyA9IChsX3NhbXBsZV9jbnQg PDwgOCkgfCBsX3N0ZXBfY250Ow0KLQ0KLQkJLyogU2V0IHRoZSBoaWdoIHNwZWVkIG1vZGUgcmVn aXN0ZXIgKi8NCi0JCXJldCA9IG10a19pMmNfY2FsY3VsYXRlX3NwZWVkKGkyYywgY2xrX3NyYywg dGFyZ2V0X3NwZWVkLA0KLQkJCQkJICAgICAgJnN0ZXBfY250LCAmc2FtcGxlX2NudCk7DQotCQlp ZiAocmV0IDwgMCkNCi0JCQlyZXR1cm4gcmV0Ow0KLQ0KLQkJaTJjLT5oaWdoX3NwZWVkX3JlZyA9 IEkyQ19USU1FX0RFRkFVTFRfVkFMVUUgfA0KLQkJCShzYW1wbGVfY250IDw8IDEyKSB8IChzdGVw X2NudCA8PCA4KTsNCisJaWYgKGkyYy0+ZGV2X2NvbXAtPnRpbWluZ19hZGp1c3QpDQorCQltYXhf Y2xrX2RpdiA9IE1BWF9DTE9DS19ESVY7DQorCWVsc2UNCisJCW1heF9jbGtfZGl2ID0gMTsNCisN CisJZm9yIChjbGtfZGl2ID0gMTsgY2xrX2RpdiA8PSBtYXhfY2xrX2RpdjsgY2xrX2RpdisrKSB7 DQorCQljbGtfc3JjID0gcGFyZW50X2NsayAvIGNsa19kaXY7DQorDQorCQlpZiAodGFyZ2V0X3Nw ZWVkID4gSTJDX01BWF9GQVNUX01PREVfRlJFUSkgew0KKwkJCS8qIFNldCBtYXN0ZXIgY29kZSBz cGVlZCByZWdpc3RlciAqLw0KKwkJCXJldCA9IG10a19pMmNfY2FsY3VsYXRlX3NwZWVkKGkyYywg Y2xrX3NyYywNCisJCQkJCQkgICAgICBJMkNfTUFYX0ZBU1RfTU9ERV9GUkVRLA0KKwkJCQkJCSAg ICAgICZsX3N0ZXBfY250LA0KKwkJCQkJCSAgICAgICZsX3NhbXBsZV9jbnQpOw0KKwkJCWlmIChy ZXQgPCAwKQ0KKwkJCQljb250aW51ZTsNCisNCisJCQlpMmMtPnRpbWluZ19yZWcgPSAobF9zYW1w bGVfY250IDw8IDgpIHwgbF9zdGVwX2NudDsNCisNCisJCQkvKiBTZXQgdGhlIGhpZ2ggc3BlZWQg bW9kZSByZWdpc3RlciAqLw0KKwkJCXJldCA9IG10a19pMmNfY2FsY3VsYXRlX3NwZWVkKGkyYywg Y2xrX3NyYywNCisJCQkJCQkgICAgICB0YXJnZXRfc3BlZWQsICZzdGVwX2NudCwNCisJCQkJCQkg ICAgICAmc2FtcGxlX2NudCk7DQorCQkJaWYgKHJldCA8IDApDQorCQkJCWNvbnRpbnVlOw0KKw0K KwkJCWkyYy0+aGlnaF9zcGVlZF9yZWcgPSBJMkNfVElNRV9ERUZBVUxUX1ZBTFVFIHwNCisJCQkJ CShzYW1wbGVfY250IDw8IDEyKSB8IChzdGVwX2NudCA8PCA4KTsNCisNCisJCQlpZiAoaTJjLT5k ZXZfY29tcC0+bHRpbWluZ19hZGp1c3QpDQorCQkJCWkyYy0+bHRpbWluZ19yZWcgPQ0KKwkJCQkJ KGxfc2FtcGxlX2NudCA8PCA2KSB8IGxfc3RlcF9jbnQgfA0KKwkJCQkJKHNhbXBsZV9jbnQgPDwg MTIpIHwgKHN0ZXBfY250IDw8IDkpOw0KKwkJfSBlbHNlIHsNCisJCQlyZXQgPSBtdGtfaTJjX2Nh bGN1bGF0ZV9zcGVlZChpMmMsIGNsa19zcmMsDQorCQkJCQkJICAgICAgdGFyZ2V0X3NwZWVkLCAm bF9zdGVwX2NudCwNCisJCQkJCQkgICAgICAmbF9zYW1wbGVfY250KTsNCisJCQlpZiAocmV0IDwg MCkNCisJCQkJY29udGludWU7DQogDQotCQlpZiAoaTJjLT5kZXZfY29tcC0+bHRpbWluZ19hZGp1 c3QpDQotCQkJaTJjLT5sdGltaW5nX3JlZyA9IChsX3NhbXBsZV9jbnQgPDwgNikgfCBsX3N0ZXBf Y250IHwNCi0JCQkJCSAgIChzYW1wbGVfY250IDw8IDEyKSB8IChzdGVwX2NudCA8PCA5KTsNCi0J fSBlbHNlIHsNCi0JCXJldCA9IG10a19pMmNfY2FsY3VsYXRlX3NwZWVkKGkyYywgY2xrX3NyYywg dGFyZ2V0X3NwZWVkLA0KLQkJCQkJICAgICAgJnN0ZXBfY250LCAmc2FtcGxlX2NudCk7DQotCQlp ZiAocmV0IDwgMCkNCi0JCQlyZXR1cm4gcmV0Ow0KKwkJCWkyYy0+dGltaW5nX3JlZyA9IChsX3Nh bXBsZV9jbnQgPDwgOCkgfCBsX3N0ZXBfY250Ow0KIA0KLQkJaTJjLT50aW1pbmdfcmVnID0gKHNh bXBsZV9jbnQgPDwgOCkgfCBzdGVwX2NudDsNCisJCQkvKiBEaXNhYmxlIHRoZSBoaWdoIHNwZWVk IHRyYW5zYWN0aW9uICovDQorCQkJaTJjLT5oaWdoX3NwZWVkX3JlZyA9IEkyQ19USU1FX0NMUl9W QUxVRTsNCiANCi0JCS8qIERpc2FibGUgdGhlIGhpZ2ggc3BlZWQgdHJhbnNhY3Rpb24gKi8NCi0J CWkyYy0+aGlnaF9zcGVlZF9yZWcgPSBJMkNfVElNRV9DTFJfVkFMVUU7DQorCQkJaWYgKGkyYy0+ ZGV2X2NvbXAtPmx0aW1pbmdfYWRqdXN0KQ0KKwkJCQlpMmMtPmx0aW1pbmdfcmVnID0NCisJCQkJ CShsX3NhbXBsZV9jbnQgPDwgNikgfCBsX3N0ZXBfY250Ow0KKwkJfQ0KIA0KLQkJaWYgKGkyYy0+ ZGV2X2NvbXAtPmx0aW1pbmdfYWRqdXN0KQ0KLQkJCWkyYy0+bHRpbWluZ19yZWcgPSAoc2FtcGxl X2NudCA8PCA2KSB8IHN0ZXBfY250Ow0KKwkJYnJlYWs7DQogCX0NCiANCisJaTJjLT5hY190aW1p bmcuaW50ZXJfY2xrX2RpdiA9IGNsa19kaXYgLSAxOw0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQpA QCAtNTg2LDEyICs4MjEsNiBAQCBzdGF0aWMgaW50IG10a19pMmNfZG9fdHJhbnNmZXIoc3RydWN0 IG10a19pMmMgKmkyYywgc3RydWN0IGkyY19tc2cgKm1zZ3MsDQogDQogCW10a19pMmNfd3JpdGV3 KGkyYywgY29udHJvbF9yZWcsIE9GRlNFVF9DT05UUk9MKTsNCiANCi0JLyogc2V0IHN0YXJ0IGNv bmRpdGlvbiAqLw0KLQlpZiAoaTJjLT5zcGVlZF9oeiA8PSBJMkNfTUFYX1NUQU5EQVJEX01PREVf RlJFUSkNCi0JCW10a19pMmNfd3JpdGV3KGkyYywgSTJDX1NUX1NUQVJUX0NPTiwgT0ZGU0VUX0VY VF9DT05GKTsNCi0JZWxzZQ0KLQkJbXRrX2kyY193cml0ZXcoaTJjLCBJMkNfRlNfU1RBUlRfQ09O LCBPRkZTRVRfRVhUX0NPTkYpOw0KLQ0KIAlhZGRyX3JlZyA9IGkyY184Yml0X2FkZHJfZnJvbV9t c2cobXNncyk7DQogCW10a19pMmNfd3JpdGV3KGkyYywgYWRkcl9yZWcsIE9GRlNFVF9TTEFWRV9B RERSKTsNCiANCkBAIC05NDgsOSArMTE3Nyw2IEBAIHN0YXRpYyBpbnQgbXRrX2kyY19wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAlpZiAocmV0KQ0KIAkJcmV0dXJuIC1FSU5W QUw7DQogDQotCWlmIChpMmMtPmRldl9jb21wLT50aW1pbmdfYWRqdXN0KQ0KLQkJaTJjLT5jbGtf c3JjX2RpdiAqPSBJMkNfREVGQVVMVF9DTEtfRElWOw0KLQ0KIAlpZiAoaTJjLT5oYXZlX3BtaWMg JiYgIWkyYy0+ZGV2X2NvbXAtPnBtaWNfaTJjKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQotLSAN CjEuOS4xDQo=