From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, UPPERCASE_50_75,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 68219C433DF for ; Wed, 8 Jul 2020 10:41:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E58FF2078D for ; Wed, 8 Jul 2020 10:41:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Ntx877si" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728382AbgGHKlF (ORCPT ); Wed, 8 Jul 2020 06:41:05 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:45472 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728346AbgGHKlE (ORCPT ); Wed, 8 Jul 2020 06:41:04 -0400 X-UUID: 529be5a1c7a247d784db97112edf08b7-20200708 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=kuxtTGveyEx5lHkDy/Wqyiv7i/hIWzAqTJwsD1FeUJ0=; b=Ntx877siFpExTG7f2DGOp7dXwczlnQI8wzdqVSv1QPeXoUHBTRw1OTwr0iEHHCx0S9SbC7W3Y3Y5kZtN545vUvvDJ/m8Ttx9m5NoEt2YH/Hj4oAne0v0CpJq6fELX8Rvks/BozPN2P6SvJjtzFIwe0ec/3pVCxmaxNVSNGiUlHM=; X-UUID: 529be5a1c7a247d784db97112edf08b7-20200708 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 251054289; Wed, 08 Jul 2020 18:40:29 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs08n1.mediatek.inc (172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Jul 2020 18:40:25 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 8 Jul 2020 18:40:26 +0800 From: Louis Kuo To: , , , , , CC: , , , , , , , , , , , , , Subject: [RFC PATCH V7 1/3] media: platform: mtk-isp: Add Mediatek sensor interface driver Date: Wed, 8 Jul 2020 18:40:21 +0800 Message-ID: <20200708104023.3225-2-louis.kuo@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200708104023.3225-1-louis.kuo@mediatek.com> References: <20200708104023.3225-1-louis.kuo@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIE1lZGlhdGVrJ3Mgc2Vuc29yIGludGVyZmFjZSBkcml2ZXIuIFNlbnNv ciBpbnRlcmZhY2UNCmRyaXZlciBpcyBhIE1JUEktQ1NJMiBob3N0IGRyaXZlciwgbmFtZWx5LCBh IEhXIGNhbWVyYSBpbnRlcmZhY2UgY29udHJvbGxlci4NCkl0IHN1cHBvcnQgYSB3aWRlbHkgYWRv cHRlZCwgc2ltcGxlLCBoaWdoLXNwZWVkIHByb3RvY29sIHByaW1hcmlseSBpbnRlbmRlZA0KZm9y IHBvaW50LXRvLXBvaW50IGltYWdlIGFuZCB2aWRlbyB0cmFuc21pc3Npb24gYmV0d2VlbiBjYW1l cmFzIGFuZCBob3N0DQpkZXZpY2VzLiBUaGUgbXRrLWlzcCBkaXJlY3Rvcnkgd2lsbCBjb250YWlu IGRyaXZlcnMgZm9yIG11bHRpcGxlIElQIGJsb2Nrcw0KZm91bmQgaW4gTWVkaWF0ZWsgSVNQIHN5 c3RlbS4gSXQgd2lsbCBpbmNsdWRlIElTUCBQYXNzIDEgZHJpdmVyLCBzZW5zb3INCmludGVyZmFj ZSBkcml2ZXIsIERJUCBkcml2ZXIgYW5kIGZhY2UgZGV0ZWN0aW9uIGRyaXZlci4NCg0KU2lnbmVk LW9mZi1ieTogTG91aXMgS3VvIDxsb3Vpcy5rdW9AbWVkaWF0ZWsuY29tPg0KLS0tDQogZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAgMSArDQogZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL0tjb25maWcgICAgICAgIHwgICAxOCArDQogZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL01ha2VmaWxlICAgICAgIHwgICAgMyArDQogLi4uL21l ZGlhL3BsYXRmb3JtL210ay1pc3Avc2VuaW5mL01ha2VmaWxlICAgIHwgICAgNyArDQogLi4uL3Bs YXRmb3JtL210ay1pc3Avc2VuaW5mL210a19zZW5pbmYuYyAgICAgIHwgIDk3NCArKysrKysrKysr Kw0KIC4uLi9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtfc2VuaW5mX2RwaHkuYyB8ICAzNTMg KysrKw0KIC4uLi9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtfc2VuaW5mX3JlZy5oICB8IDE0 OTEgKysrKysrKysrKysrKysrKysNCiAuLi4vbXRrLWlzcC9zZW5pbmYvbXRrX3NlbmluZl9yeF9y ZWcuaCAgICAgICAgfCAgNTE1ICsrKysrKw0KIDggZmlsZXMgY2hhbmdlZCwgMzM2MiBpbnNlcnRp b25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlz cC9LY29uZmlnDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWlzcC9NYWtlZmlsZQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1pc3Avc2VuaW5mL01ha2VmaWxlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLWlzcC9zZW5pbmYvbXRrX3NlbmluZi5jDQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9zZW5pbmYvbXRrX3NlbmluZl9kcGh5 LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL3Nl bmluZi9tdGtfc2VuaW5mX3JlZy5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWlzcC9zZW5pbmYvbXRrX3NlbmluZl9yeF9yZWcuaA0KDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vTWFrZWZpbGUNCmluZGV4IDYyYjZjZGM4YzczMC4uNTBkYjhjMTQ0ZTI4IDEwMDY0NA0KLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9NYWtlZmlsZQ0KQEAgLTc1LDYgKzc1LDcgQEAgb2JqLSQoQ09ORklHX1ZJREVPX01F RElBVEVLX01EUCkJKz0gbXRrLW1kcC8NCg0KIG9iai0kKENPTkZJR19WSURFT19NRURJQVRFS19K UEVHKQkrPSBtdGstanBlZy8NCg0KK29iai0kKENPTkZJR19NVEtfU0VOSU5GKQkJKz0gbXRrLWlz cC8NCiBvYmotJChDT05GSUdfVklERU9fUUNPTV9DQU1TUykJCSs9IHFjb20vY2Ftc3MvDQoNCiBv YmotJChDT05GSUdfVklERU9fUUNPTV9WRU5VUykJCSs9IHFjb20vdmVudXMvDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL0tjb25maWcgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1pc3AvS2NvbmZpZw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMC4uNGE5ZmViYjdlNmUzDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1pc3AvS2NvbmZpZw0KQEAgLTAsMCArMSwxOCBAQA0KK2NvbmZpZyBN VEtfU0VOSU5GDQorCXRyaXN0YXRlICJNZWRpYXRlayBtaXBpIGNzaTIgZHJpdmVyIg0KKwlkZXBl bmRzIG9uIFZJREVPX1Y0TDIgJiYgVklERU9fVjRMMl9TVUJERVZfQVBJDQorCWRlcGVuZHMgb24g TUVESUFfQ0FNRVJBX1NVUFBPUlQNCisJZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJ TEVfVEVTVA0KKwlzZWxlY3QgVjRMMl9GV05PREUNCisNCisJZGVmYXVsdCBuDQorCWhlbHANCisJ ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIG1pcGktY3NpMiBob3N0IGRyaXZlciB1c2VkIGFzIGEN CisJICBpbnRlcmZhY2UgdG8gY29ubmVjdCBjYW1lcmEgd2l0aCBNZWRpYXRlaydzDQorCSAgTVQ4 MTgzIFNPQ3MuIEl0IGlzIGFibGUgdG8gaGFuZGxlIG11bHRpcGxlIGNhbWVyYXMNCisJICBhdCB0 aGUgc2FtZSB0aW1lLg0KKw0KKwkgIENob29zZSB5IGlmIHlvdSB3YW50IHRvIHVzZSBNZWRpYXRl ayBTb0NzIHRvIGNyZWF0ZSBpbWFnZQ0KKwkgIGNhcHR1cmUgYXBwbGljYXRpb24gc3VjaCBhcyB2 aWRlbyByZWNvcmRpbmcgYW5kIHN0aWxsIGltYWdlDQorCSAgY2FwdHVyZS4NCisNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3AvTWFrZWZpbGUgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1pc3AvTWFrZWZpbGUNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMDAuLjJlN2Q3MzFkNDJiNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL01ha2VmaWxlDQpAQCAtMCwwICsxLDMgQEANCisjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorDQorb2JqLSQoQ09ORklHX01US19TRU5J TkYpICs9IHNlbmluZi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1p c3Avc2VuaW5mL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL3Nlbmlu Zi9NYWtlZmlsZQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZDc1 YmY2MTJmNzg3DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay1pc3Avc2VuaW5mL01ha2VmaWxlDQpAQCAtMCwwICsxLDcgQEANCisjIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wDQorDQorbXRrLXNlbmluZi1vYmpzICs9IG10a19zZW5pbmYubw0K K210ay1zZW5pbmZfZHBoeS1vYmpzICs9IG10a19zZW5pbmZfZHBoeS5vDQorDQorb2JqLSQoQ09O RklHX01US19TRU5JTkYpICs9IG10ay1zZW5pbmYubw0KK29iai0kKENPTkZJR19NVEtfU0VOSU5G KSArPSBtdGstc2VuaW5mX2RwaHkubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWlzcC9zZW5pbmYvbXRrX3NlbmluZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstaXNwL3NlbmluZi9tdGtfc2VuaW5mLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAwMDAuLmM1ODgzZGMzYzNkNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtfc2VuaW5mLmMNCkBAIC0wLDAgKzEsOTc0 IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCisNCisjaW5jbHVkZSA8 bGludXgvY2xrLmg+DQorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4 L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGlu dXgvb2ZfZ3JhcGguaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQorI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+DQor I2luY2x1ZGUgPG1lZGlhL3Y0bDItYXN5bmMuaD4NCisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jdHJs cy5oPg0KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWV2ZW50Lmg+DQorI2luY2x1ZGUgPG1lZGlhL3Y0 bDItZndub2RlLmg+DQorI2luY2x1ZGUgPG1lZGlhL3Y0bDItc3ViZGV2Lmg+DQorI2luY2x1ZGUg PGxpbnV4L3BoeS9waHkuaD4NCisjaW5jbHVkZSAibXRrX3NlbmluZl9yZWcuaCINCisNCisjZGVm aW5lIFNFTklORl9USU1FU1RBTVBfU1RFUAkJMHg2Nw0KKyNkZWZpbmUgU0VOSU5GX1NFVFRMRV9E RUxBWQkJMHgxNQ0KKyNkZWZpbmUgU0VOSU5GX0hTX1RSQUlMX1BBUkFNRVRFUgkweDgNCisNCisj ZGVmaW5lIE5VTV9QQURTCQkJMTINCisjZGVmaW5lIE5VTV9TRU5TT1JTCQkJNA0KKyNkZWZpbmUg Q0FNX01VWF9JRFhfTUlOCQlOVU1fU0VOU09SUw0KKyNkZWZpbmUgREVGQVVMVF9XSURUSAkJCTE2 MDANCisjZGVmaW5lIERFRkFVTFRfSEVJR0hUCQkJMTIwMA0KKw0KKyNkZWZpbmUgUEFEXzEwQklU CQkJMA0KKw0KKyNkZWZpbmUgVEVTVF9NT0RFTCAgICAgICAgICAwDQorI2RlZmluZSBOT1JNQUxf TU9ERUwgICAgICAgIDENCisjZGVmaW5lIFNFTklORl9BTExfRVJSX0lSUV9FTgkweDdGDQorI2Rl ZmluZSBTRU5JTkZfSVJRX0NMUl9TRUwJMHg4MDAwMDAwMA0KKw0KKyNkZWZpbmUgTUlQSV9TRU5T T1IJCQkweDgNCisNCitlbnVtIFRFU1RfTU9ERSB7DQorCVRFU1RfR0VOX1BBVFRFUk4gPSAweDAs DQorCVRFU1RfRFVNUF9ERUJVR19JTkZPLA0KK307DQorDQorZW51bSBDRkdfQ1NJX1BPUlQgew0K KwlDRkdfQ1NJX1BPUlRfMCA9IDB4MCwJLyogNEQxQyAqLw0KKwlDRkdfQ1NJX1BPUlRfMSwJCS8q IDREMUMgKi8NCisJQ0ZHX0NTSV9QT1JUXzIsCQkvKiA0RDFDICovDQorCUNGR19DU0lfUE9SVF8w QSwJLyogMkQxQyAqLw0KKwlDRkdfQ1NJX1BPUlRfMEIsCS8qIDJEMUMgKi8NCisJQ0ZHX0NTSV9Q T1JUX01BWF9OVU0sDQorCUNGR19DU0lfUE9SVF9OT05FCS8qZm9yIG5vbi1NSVBJIHNlbnNvciAq Lw0KK307DQorDQorZW51bSBQSVhFTF9NT0RFIHsNCisJT05FX1BJWEVMX01PREUgID0gMHgwLA0K KwlUV09fUElYRUxfTU9ERSAgPSAweDEsDQorCUZPVVJfUElYRUxfTU9ERSA9IDB4MiwNCit9Ow0K Kw0KK2VudW0gU0VOSU5GX0lEIHsNCisJU0VOSU5GXzEgPSAweDAsDQorCVNFTklORl8yID0gMHgx LA0KKwlTRU5JTkZfMyA9IDB4MiwNCisJU0VOSU5GXzQgPSAweDMsDQorCVNFTklORl81ID0gMHg0 LA0KKwlTRU5JTkZfTlVNLA0KK307DQorDQorZW51bSBJTUFHRV9GTVQgew0KKwlSQVdfOEJJVF9G TVQgICAgICAgID0gMHgwLA0KKwlSQVdfMTBCSVRfRk1UICAgICAgID0gMHgxLA0KKwlSQVdfMTJC SVRfRk1UICAgICAgID0gMHgyLA0KKwlZVVY0MjJfRk1UICAgICAgICAgID0gMHgzLA0KKwlSQVdf MTRCSVRfRk1UICAgICAgID0gMHg0LA0KKwlSR0I1NjVfTUlQSV9GTVQgICAgID0gMHg1LA0KKwlS R0I4ODhfTUlQSV9GTVQgICAgID0gMHg2LA0KKwlKUEVHX0ZNVCAgICAgICAgICAgID0gMHg3DQor fTsNCisNCisjZGVmaW5lIFNFTklORl9CSVRTKGJhc2UsIHJlZywgZmllbGQsIHZhbCkgZG8geyBc DQorCQl1MzIgX19pb21lbSAqX19wID0gKGJhc2UpICsgKHJlZyk7IFwNCisJCXUzMiBfX3YgPSAq X19wOyBcDQorCQlfX3YgJj0gfnJlZyMjXyMjZmllbGQjI19NQVNLOyBcDQorCQlfX3YgfD0gKCh2 YWwpIDw8IHJlZyMjXyMjZmllbGQjI19TSElGVCk7IFwNCisJCSpfX3AgPSBfX3Y7IFwNCisJfSB3 aGlsZSAoMCkNCisNCitzdHJ1Y3QgbXRrX3NlbmluZl9zZW5zb3JfY2ZnIHsNCisJdW5zaWduZWQg Y2hhciBjbG9ja19sYW5lOw0KKwl1bnNpZ25lZCBzaG9ydCBudW1fZGF0YV9sYW5lczsNCit9Ow0K Kw0KK3N0cnVjdCBtdGtfc2VuaW5mIHsNCisJc3RydWN0IHY0bDJfc3ViZGV2IHN1YmRldjsNCisJ c3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgbm90aWZpZXI7DQorCXN0cnVjdCB2NGwyX2N0cmxf aGFuZGxlciBjdHJsX2hhbmRsZXI7DQorCXN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgZm10W05V TV9QQURTXTsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwlzdHJ1Y3QgbWVkaWFfcGFkIHBhZHNb TlVNX1BBRFNdOw0KKwlzdHJ1Y3QgbXRrX3NlbmluZl9zZW5zb3JfY2ZnIHNlbnNvcltOVU1fU0VO U09SU107DQorCXN0cnVjdCBwaHkgKmRwaHk7DQorCXVuc2lnbmVkIGludCBudW1fY2xrczsNCisJ c3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7DQorCXZvaWQgX19pb21lbSAqYmFzZTsNCisJdm9p ZCBfX2lvbWVtICpyeDsNCisJdW5zaWduZWQgaW50IHBvcnQ7DQorCXVuc2lnbmVkIGludCBtdXhf c2VsOw0KK307DQorDQorc3RhdGljIGlubGluZSBpbnQgaXNfNGQxYyh1bnNpZ25lZCBpbnQgcG9y dCkNCit7DQorCXJldHVybiBwb3J0IDwgQ0ZHX0NTSV9QT1JUXzBBOw0KK30NCisNCitzdGF0aWMg aW5saW5lIGludCBpc19jZHBoeV9jb21ibyh1bnNpZ25lZCBpbnQgcG9ydCkNCit7DQorCXJldHVy biBwb3J0ID09IENGR19DU0lfUE9SVF8wQSB8fA0KKwkJcG9ydCA9PSBDRkdfQ1NJX1BPUlRfMEIg fHwNCisJCXBvcnQgPT0gQ0ZHX0NTSV9QT1JUXzA7DQorfQ0KKw0KK2lubGluZSBzdHJ1Y3QgbXRr X3NlbmluZiAqc2RfdG9fbXRrX3NlbmluZihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQ0KK3sNCisJ cmV0dXJuIGNvbnRhaW5lcl9vZihzZCwgc3RydWN0IG10a19zZW5pbmYsIHN1YmRldik7DQorfQ0K Kw0KK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX3NlbmluZl9nZXRfZHBjbShzdHJ1Y3QgbXRrX3Nl bmluZiAqcHJpdikNCit7DQorCXVuc2lnbmVkIGludCBkcGNtOw0KKw0KKwlzd2l0Y2ggKHByaXYt PmZtdFtwcml2LT5wb3J0XS5mb3JtYXQuY29kZSkgew0KKwljYXNlIE1FRElBX0JVU19GTVRfU0dS QkcxMF9EUENNOF8xWDg6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TUkdHQjEwX0RQQ004XzFYODoN CisJY2FzZSBNRURJQV9CVVNfRk1UX1NCR0dSMTBfRFBDTThfMVg4Og0KKwljYXNlIE1FRElBX0JV U19GTVRfU0dCUkcxMF9EUENNOF8xWDg6DQorCQlkcGNtID0gMHgyYTsNCisJCWJyZWFrOw0KKwlk ZWZhdWx0Og0KKwkJZHBjbSA9IDA7DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gZHBjbTsN Cit9DQorDQorc3RhdGljIHVuc2lnbmVkIGludCBtdGtfc2VuaW5mX21hcF9mbXQoc3RydWN0IG10 a19zZW5pbmYgKnByaXYpDQorew0KKwlpbnQgZm10aWR4ID0gUkFXXzEwQklUX0ZNVDsNCisNCisJ c3dpdGNoIChwcml2LT5mbXRbcHJpdi0+cG9ydF0uZm9ybWF0LmNvZGUpIHsNCisJY2FzZSBNRURJ QV9CVVNfRk1UX1NCR0dSOF8xWDg6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TR0JSRzhfMVg4Og0K KwljYXNlIE1FRElBX0JVU19GTVRfU0dSQkc4XzFYODoNCisJY2FzZSBNRURJQV9CVVNfRk1UX1NS R0dCOF8xWDg6DQorCQlmbXRpZHggPSBSQVdfOEJJVF9GTVQ7DQorCQlicmVhazsNCisJY2FzZSBN RURJQV9CVVNfRk1UX1NHUkJHMTBfMVgxMDoNCisJY2FzZSBNRURJQV9CVVNfRk1UX1NSR0dCMTBf MVgxMDoNCisJY2FzZSBNRURJQV9CVVNfRk1UX1NCR0dSMTBfMVgxMDoNCisJY2FzZSBNRURJQV9C VVNfRk1UX1NHQlJHMTBfMVgxMDoNCisJCWZtdGlkeCA9IFJBV18xMEJJVF9GTVQ7DQorCQlicmVh azsNCisJY2FzZSBNRURJQV9CVVNfRk1UX1NHUkJHMTBfRFBDTThfMVg4Og0KKwljYXNlIE1FRElB X0JVU19GTVRfU1JHR0IxMF9EUENNOF8xWDg6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TQkdHUjEw X0RQQ004XzFYODoNCisJY2FzZSBNRURJQV9CVVNfRk1UX1NHQlJHMTBfRFBDTThfMVg4Og0KKwkJ Zm10aWR4ID0gUkFXXzhCSVRfRk1UOw0KKwkJYnJlYWs7DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9T QkdHUjEyXzFYMTI6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TR0JSRzEyXzFYMTI6DQorCWNhc2Ug TUVESUFfQlVTX0ZNVF9TR1JCRzEyXzFYMTI6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TUkdHQjEy XzFYMTI6DQorCQlmbXRpZHggPSBSQVdfMTJCSVRfRk1UOw0KKwkJYnJlYWs7DQorCWNhc2UgTUVE SUFfQlVTX0ZNVF9VWVZZOF8xWDE2Og0KKwljYXNlIE1FRElBX0JVU19GTVRfVllVWThfMVgxNjoN CisJY2FzZSBNRURJQV9CVVNfRk1UX1lVWVY4XzFYMTY6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9Z VllVOF8xWDE2Og0KKwkJZm10aWR4ID0gWVVWNDIyX0ZNVDsNCisJCWJyZWFrOw0KKwljYXNlIE1F RElBX0JVU19GTVRfSlBFR18xWDg6DQorCWNhc2UgTUVESUFfQlVTX0ZNVF9TNUNfVVlWWV9KUEVH XzFYODoNCisJCWZtdGlkeCA9IEpQRUdfRk1UOw0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJu IGZtdGlkeDsNCit9DQorDQorc3RhdGljIHUzMiBtdGtfc2VuaW5mX2NzaV9wb3J0X3RvX3Nlbmlu Zih1MzIgcG9ydCkNCit7DQorCXN0YXRpYyBjb25zdCB1MzIgcG9ydF90b19zZW5pbmZbXSA9IHsN CisJCVtDRkdfQ1NJX1BPUlRfMF0gPSBTRU5JTkZfMSwNCisJCVtDRkdfQ1NJX1BPUlRfMV0gPSBT RU5JTkZfMywNCisJCVtDRkdfQ1NJX1BPUlRfMl0gPSBTRU5JTkZfNSwNCisJCVtDRkdfQ1NJX1BP UlRfMEFdID0gU0VOSU5GXzEsDQorCQlbQ0ZHX0NTSV9QT1JUXzBCXSA9IFNFTklORl8yLA0KKwl9 Ow0KKwlpZiAoV0FSTl9PTihwb3J0ID49IEFSUkFZX1NJWkUocG9ydF90b19zZW5pbmYpKSkNCisJ CXJldHVybiAtRUlOVkFMOw0KKw0KKwlyZXR1cm4gcG9ydF90b19zZW5pbmZbcG9ydF07DQorfQ0K Kw0KK3N0YXRpYyB2b2lkIG10a19zZW5pbmZfc2V0X211eChzdHJ1Y3QgbXRrX3NlbmluZiAqcHJp diwNCisJCQkgICAgICAgdW5zaWduZWQgaW50IHNlbmluZikNCit7DQorCXVuc2lnbmVkIGludCBt dXggPSBwcml2LT5tdXhfc2VsOw0KKwl2b2lkIF9faW9tZW0gKnBzZW5pbmZfdG9wID0gcHJpdi0+ YmFzZTsNCisJdm9pZCBfX2lvbWVtICpwc2VuaW5mID0gcHJpdi0+YmFzZSArIDB4MTAwMCAqIG11 eDsNCisJdW5zaWduZWQgaW50IHZhbDsNCisJdW5zaWduZWQgaW50IHBpeF9zZWxfZXh0Ow0KKwl1 bnNpZ25lZCBpbnQgcGl4X3NlbDsNCisJdW5zaWduZWQgaW50IGhzX3BvbCA9IDA7DQorCXVuc2ln bmVkIGludCB2c19wb2wgPSAwOw0KKwl1bnNpZ25lZCBpbnQgcGl4ZWxfbW9kZSA9IE9ORV9QSVhF TF9NT0RFOw0KKwl1bnNpZ25lZCBpbnQgaW5wdXRfZGF0YV90eXBlOw0KKw0KKwkvKiBFbmFibGUg bXV4ICovDQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5GX01V WF9FTiwgMSk7DQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5G X1NSQ19TRUwsIE1JUElfU0VOU09SKTsNCisJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VOSU5GX01V WF9DVFJMX0VYVCwgU0VOSU5GX1NSQ19TRUxfRVhULA0KKwkJICAgIE5PUk1BTF9NT0RFTCk7DQor CWlucHV0X2RhdGFfdHlwZSA9IG10a19zZW5pbmZfbWFwX2ZtdChwcml2KTsNCisNCisJc3dpdGNo IChwaXhlbF9tb2RlKSB7DQorCWNhc2UgMTogLyogMiBQaXhlbCAqLw0KKwkJcGl4X3NlbF9leHQg PSAwOw0KKwkJcGl4X3NlbCA9IDE7DQorCQlicmVhazsNCisJY2FzZSAyOiAvKiA0IFBpeGVsICov DQorCQlwaXhfc2VsX2V4dCA9IDE7DQorCQlwaXhfc2VsID0gMDsNCisJCWJyZWFrOw0KKwlkZWZh dWx0OiAvKiAxIFBpeGVsICovDQorCQlwaXhfc2VsX2V4dCA9IDA7DQorCQlwaXhfc2VsID0gMDsN CisJCWJyZWFrOw0KKwl9DQorDQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RS TF9FWFQsIFNFTklORl9QSVhfU0VMX0VYVCwNCisJCSAgICBwaXhfc2VsX2V4dCk7DQorCVNFTklO Rl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5GX1BJWF9TRUwsIHBpeF9zZWwp Ow0KKw0KKwlpZiAoaW5wdXRfZGF0YV90eXBlICE9IEpQRUdfRk1UKSB7DQorCQlTRU5JTkZfQklU Uyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIEZJRk9fRlVMTF9XUl9FTiwgMik7DQorCQlTRU5J TkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIEZJRk9fRkxVU0hfRU4sIDB4MUIpOw0K KwkJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VOSU5GX01VWF9DVFJMLCBGSUZPX1BVU0hfRU4sIDB4 MUYpOw0KKwl9IGVsc2Ugew0KKwkJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VOSU5GX01VWF9DVFJM LCBGSUZPX0ZVTExfV1JfRU4sIDApOw0KKwkJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VOSU5GX01V WF9DVFJMLCBGSUZPX0ZMVVNIX0VOLCAweDE4KTsNCisJCVNFTklORl9CSVRTKHBzZW5pbmYsIFNF TklORl9NVVhfQ1RSTCwgRklGT19QVVNIX0VOLCAweDFFKTsNCisJfQ0KKw0KKwlTRU5JTkZfQklU Uyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIFNFTklORl9IU1lOQ19QT0wsIGhzX3BvbCk7DQor CVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5GX1ZTWU5DX1BPTCwg dnNfcG9sKTsNCisNCisJdmFsID0gKHJlYWRsKHBzZW5pbmYgKyBTRU5JTkZfTVVYX0NUUkwpIHwg MHgzKSAmIDB4RkZGRkZGRkM7DQorCXdyaXRlbCh2YWwsIHBzZW5pbmYgKyBTRU5JTkZfTVVYX0NU UkwpOw0KKw0KKwkvKiBTZXQgdG9wIG11eCAqLw0KKwl2YWwgPSAocmVhZGwocHNlbmluZl90b3Ag KyBTRU5JTkZfVE9QX01VWF9DVFJMKSAmDQorCQkofigweEYgPDwgKG11eCAqIDQpKSkpCXwgKChz ZW5pbmYgJiAweEYpIDw8IChtdXggKiA0KSk7DQorCXdyaXRlbCh2YWwsIHBzZW5pbmZfdG9wICsg U0VOSU5GX1RPUF9NVVhfQ1RSTCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19zZW5pbmZfcnhf Y29uZmlnKHN0cnVjdCBtdGtfc2VuaW5mICpwcml2LA0KKwkJCQkgdW5zaWduZWQgaW50IHNlbmlu ZikNCit7DQorCXVuc2lnbmVkIGludCBwb3J0ID0gcHJpdi0+cG9ydDsNCisJdm9pZCBfX2lvbWVt ICpwc2VuaW5mID0gcHJpdi0+YmFzZSArIDB4MTAwMCAqIHNlbmluZjsNCisNCisJaWYgKGlzXzRk MWMocG9ydCkpIHsNCisJCVNFTklORl9CSVRTKHBzZW5pbmYsIE1JUElfUlhfQ09OMjRfQ1NJMCwN CisJCQkgICAgQ1NJMF9CSVNUX0xOMF9NVVgsIDEpOw0KKwkJU0VOSU5GX0JJVFMocHNlbmluZiwg TUlQSV9SWF9DT04yNF9DU0kwLA0KKwkJCSAgICBDU0kwX0JJU1RfTE4xX01VWCwgMik7DQorCQlT RU5JTkZfQklUUyhwc2VuaW5mLCBNSVBJX1JYX0NPTjI0X0NTSTAsDQorCQkJICAgIENTSTBfQklT VF9MTjJfTVVYLCAwKTsNCisJCVNFTklORl9CSVRTKHBzZW5pbmYsIE1JUElfUlhfQ09OMjRfQ1NJ MCwNCisJCQkgICAgQ1NJMF9CSVNUX0xOM19NVVgsIDMpOw0KKwl9IGVsc2Ugew0KKwkJU0VOSU5G X0JJVFMocHNlbmluZiwgTUlQSV9SWF9DT04yNF9DU0kwLA0KKwkJCSAgICBDU0kwX0JJU1RfTE4w X01VWCwgMCk7DQorCQlTRU5JTkZfQklUUyhwc2VuaW5mLCBNSVBJX1JYX0NPTjI0X0NTSTAsDQor CQkJICAgIENTSTBfQklTVF9MTjFfTVVYLCAxKTsNCisJCVNFTklORl9CSVRTKHBzZW5pbmYsIE1J UElfUlhfQ09OMjRfQ1NJMCwNCisJCQkgICAgQ1NJMF9CSVNUX0xOMl9NVVgsIDIpOw0KKwkJU0VO SU5GX0JJVFMocHNlbmluZiwgTUlQSV9SWF9DT04yNF9DU0kwLA0KKwkJCSAgICBDU0kwX0JJU1Rf TE4zX01VWCwgMyk7DQorCX0NCit9DQorDQorc3RhdGljIHZvaWQgbXRrX3NlbmluZl9zZXRfY3Np X21pcGkoc3RydWN0IG10a19zZW5pbmYgKnByaXYsDQorCQkJCSAgICB1bnNpZ25lZCBpbnQgc2Vu aW5mKQ0KK3sNCisJdm9pZCBfX2lvbWVtICpzZW5pbmZfYmFzZSA9IHByaXYtPmJhc2U7DQorCXZv aWQgX19pb21lbSAqcHNlbmluZiA9IHByaXYtPmJhc2UgKyAweDEwMDAgKiBzZW5pbmY7DQorCXVu c2lnbmVkIGludCBkcGNtID0gbXRrX3NlbmluZl9nZXRfZHBjbShwcml2KTsNCisJdW5zaWduZWQg aW50IGRhdGFfbGFuZV9udW0gPSBwcml2LT5zZW5zb3JbcHJpdi0+cG9ydF0ubnVtX2RhdGFfbGFu ZXM7DQorCXVuc2lnbmVkIGludCBjYWxfc2VsOw0KKwl1bnNpZ25lZCBpbnQgZGF0YV9oZWFkZXJf b3JkZXIgPSAxOw0KKwl1bnNpZ25lZCBpbnQgdmFsID0gMDsNCisNCisJZGV2X2RiZyhwcml2LT5k ZXYsICJJU180RDFDICVkIHBvcnQgJWRcbiIsDQorCQlpc180ZDFjKHByaXYtPnBvcnQpLCBwcml2 LT5wb3J0KTsNCisNCisJc3dpdGNoIChwcml2LT5wb3J0KSB7DQorCWNhc2UgQ0ZHX0NTSV9QT1JU XzE6DQorCQljYWxfc2VsID0gMTsNCisJCVNFTklORl9CSVRTKHNlbmluZl9iYXNlLCBTRU5JTkZf VE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTEsDQorCQkJICAgIERQSFlfTU9ERSwgMCk7DQorCQlTRU5J TkZfQklUUyhzZW5pbmZfYmFzZSwgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kxLA0KKwkJ CSAgICBDS19TRUxfMSwgMik7DQorCQlTRU5JTkZfQklUUyhzZW5pbmZfYmFzZSwgU0VOSU5GX1RP UF9QSFlfU0VOSU5GX0NUTF9DU0kxLA0KKwkJCSAgICBQSFlfU0VOSU5GX0xBTkVfTVVYX0NTSTFf RU4sIDEpOw0KKwkJYnJlYWs7DQorCWNhc2UgQ0ZHX0NTSV9QT1JUXzI6DQorCQljYWxfc2VsID0g MjsNCisJCVNFTklORl9CSVRTKHNlbmluZl9iYXNlLCBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RM X0NTSTIsDQorCQkJICAgIERQSFlfTU9ERSwgMCk7DQorCQlTRU5JTkZfQklUUyhzZW5pbmZfYmFz ZSwgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kyLA0KKwkJCSAgICBDS19TRUxfMSwgMik7 DQorCQlTRU5JTkZfQklUUyhzZW5pbmZfYmFzZSwgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9D U0kyLA0KKwkJCSAgICBQSFlfU0VOSU5GX0xBTkVfTVVYX0NTSTJfRU4sIDEpOw0KKwkJYnJlYWs7 DQorCWNhc2UgQ0ZHX0NTSV9QT1JUXzA6DQorCQljYWxfc2VsID0gMDsNCisJCVNFTklORl9CSVRT KHNlbmluZl9iYXNlLCBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTAsDQorCQkJICAgIERQ SFlfTU9ERSwgMCk7DQorCQlTRU5JTkZfQklUUyhzZW5pbmZfYmFzZSwgU0VOSU5GX1RPUF9QSFlf U0VOSU5GX0NUTF9DU0kwLA0KKwkJCSAgICBDS19TRUxfMSwgMik7DQorCQlTRU5JTkZfQklUUyhz ZW5pbmZfYmFzZSwgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kwLA0KKwkJCSAgICBQSFlf U0VOSU5GX0xBTkVfTVVYX0NTSTBfRU4sIDEpOw0KKwkJYnJlYWs7DQorCWNhc2UgQ0ZHX0NTSV9Q T1JUXzBBOg0KKwljYXNlIENGR19DU0lfUE9SVF8wQjoNCisJCWNhbF9zZWwgPSAwOw0KKwkJU0VO SU5GX0JJVFMoc2VuaW5mX2Jhc2UsIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMCwNCisJ CQkgICAgRFBIWV9NT0RFLCAxKTsNCisJCVNFTklORl9CSVRTKHNlbmluZl9iYXNlLCBTRU5JTkZf VE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTAsDQorCQkJICAgIENLX1NFTF8xLCAxKTsNCisJCVNFTklO Rl9CSVRTKHNlbmluZl9iYXNlLCBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTAsDQorCQkJ ICAgIENLX1NFTF8yLCAxKTsNCisJCVNFTklORl9CSVRTKHNlbmluZl9iYXNlLCBTRU5JTkZfVE9Q X1BIWV9TRU5JTkZfQ1RMX0NTSTAsDQorCQkJICAgIFBIWV9TRU5JTkZfTEFORV9NVVhfQ1NJMF9F TiwgMSk7DQorCQlicmVhazsNCisJfQ0KKw0KKwkvKiBGaXJzdCBFbmFibGUgU2Vuc29yIGludGVy ZmFjZSBhbmQgc2VsZWN0IHBhZCAoMHgxYTA0XzAyMDApICovDQorCVNFTklORl9CSVRTKHBzZW5p bmYsIFNFTklORl9DVFJMLCBTRU5JTkZfRU4sIDEpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBT RU5JTkZfQ1RSTCwgUEFEMkNBTV9EQVRBX1NFTCwgUEFEXzEwQklUKTsNCisJU0VOSU5GX0JJVFMo cHNlbmluZiwgU0VOSU5GX0NUUkwsIFNFTklORl9TUkNfU0VMLCAwKTsNCisJU0VOSU5GX0JJVFMo cHNlbmluZiwgU0VOSU5GX0NUUkxfRVhULCBTRU5JTkZfQ1NJMl9JUF9FTiwgMSk7DQorCVNFTklO Rl9CSVRTKHBzZW5pbmYsIFNFTklORl9DVFJMX0VYVCwgU0VOSU5GX05DU0kyX0lQX0VOLCAwKTsN CisNCisJLyogRFBDTSBFbmFibGUgKi8NCisJdmFsID0gMSA8PCAoKGRwY20gPT0gMHgyYSkgPyAx NSA6ICgoZHBjbSAmIDB4RikgKyA3KSk7DQorCXdyaXRlbCh2YWwsIHBzZW5pbmYgKyBTRU5JTkZf Q1NJMl9EUENNKTsNCisNCisJLyogU2V0dGxlIGRlbGF5ICovDQorCVNFTklORl9CSVRTKHBzZW5p bmYsIFNFTklORl9DU0kyX0xOUkRfVElNSU5HLA0KKwkJICAgIERBVEFfU0VUVExFX1BBUkFNRVRF UiwgU0VOSU5GX1NFVFRMRV9ERUxBWSk7DQorCS8qIENTSTIgY29udHJvbCAqLw0KKwl2YWwgPSBy ZWFkbChwc2VuaW5mICsgU0VOSU5GX0NTSTJfQ1RMKSB8IChkYXRhX2hlYWRlcl9vcmRlciA8PCAx NikgfA0KKwkJMHgxMCB8ICgoMSA8PCBkYXRhX2xhbmVfbnVtKSAtIDEpOw0KKwl3cml0ZWwodmFs LCBwc2VuaW5mICsgU0VOSU5GX0NTSTJfQ1RMKTsNCisNCisJU0VOSU5GX0JJVFMocHNlbmluZiwg U0VOSU5GX0NTSTJfUkVTWU5DX01FUkdFX0NUTCwNCisJCSAgICBCWVBBU1NfTEFORV9SRVNZTkMs IDApOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfQ1NJMl9SRVNZTkNfTUVSR0VfQ1RM LCBDRFBIWV9TRUwsIDApOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfQ1NJMl9SRVNZ TkNfTUVSR0VfQ1RMLA0KKwkJICAgIENQSFlfTEFORV9SRVNZTkNfQ05ULCAzKTsNCisJU0VOSU5G X0JJVFMocHNlbmluZiwgU0VOSU5GX0NTSTJfTU9ERSwgQ1NSX0NTSTJfTU9ERSwgMCk7DQorCVNF TklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9DU0kyX01PREUsIENTUl9DU0kyX0hFQURFUl9MRU4s IDApOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfQ1NJMl9EUEhZX1NZTkMsIFNZTkNf U0VRX01BU0tfMCwgMHhmZjAwKTsNCisJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VOSU5GX0NTSTJf RFBIWV9TWU5DLCBTWU5DX1NFUV9QQVRfMCwgMHgwMDFkKTsNCisNCisJU0VOSU5GX0JJVFMocHNl bmluZiwgU0VOSU5GX0NTSTJfQ1RMLCBDTE9DS19IU19PUFRJT04sIDApOw0KKwlTRU5JTkZfQklU Uyhwc2VuaW5mLCBTRU5JTkZfQ1NJMl9DVEwsIEhTUlhfREVUX0VOLCAwKTsNCisJU0VOSU5GX0JJ VFMocHNlbmluZiwgU0VOSU5GX0NTSTJfQ1RMLCBIU19UUkFJTF9FTiwgMSk7DQorCVNFTklORl9C SVRTKHBzZW5pbmYsIFNFTklORl9DU0kyX0hTX1RSQUlMLCBIU19UUkFJTF9QQVJBTUVURVIsDQor CQkgICAgU0VOSU5GX0hTX1RSQUlMX1BBUkFNRVRFUik7DQorDQorCS8qIFNldCBkZWJ1ZyBwb3J0 IHRvIG91dHB1dCBwYWNrZXQgbnVtYmVyICovDQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklO Rl9DU0kyX0RHQl9TRUwsIERFQlVHX0VOLCAxKTsNCisJU0VOSU5GX0JJVFMocHNlbmluZiwgU0VO SU5GX0NTSTJfREdCX1NFTCwgREVCVUdfU0VMLCAweDFhKTsNCisJLyogRW5hYmxlIENTSTIgSVJR IG1hc2sgKi8NCisJLyogVHVybiBvbiBhbGwgaW50ZXJydXB0ICovDQorCXdyaXRlbCgweGZmZmZm ZmZmLCBwc2VuaW5mICsgU0VOSU5GX0NTSTJfSU5UX0VOKTsNCisJLyogV3JpdGUgY2xlYXIgQ1NJ MiBJUlEgKi8NCisJd3JpdGVsKDB4ZmZmZmZmZmYsIHBzZW5pbmYgKyBTRU5JTkZfQ1NJMl9JTlRf U1RBVFVTKTsNCisJLyogRW5hYmxlIENTSTIgRXh0ZW5kIElSUSBtYXNrICovDQorCS8qIFR1cm4g b24gYWxsIGludGVycnVwdCAqLw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfQ1RSTCwg Q1NJMl9TV19SU1QsIDEpOw0KKwl1ZGVsYXkoMSk7DQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNF TklORl9DVFJMLCBDU0kyX1NXX1JTVCwgMCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX3Nlbmlu Zl9wb3dlcl9vbihzdHJ1Y3QgbXRrX3NlbmluZiAqcHJpdikNCit7DQorCXZvaWQgX19pb21lbSAq cHNlbmluZiA9IHByaXYtPmJhc2U7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRldjsN CisJdW5zaWduZWQgaW50IHNlbmluZjsNCisJaW50IHJldDsNCisNCisJc2VuaW5mID0gbXRrX3Nl bmluZl9jc2lfcG9ydF90b19zZW5pbmYocHJpdi0+cG9ydCk7DQorCWlmIChzZW5pbmYgPCAwKSB7 DQorCQlkZXZfZXJyKGRldiwgInNlbmluZiBwb3J0IG1hcHBpbmcgZmFpbFxuIik7DQorCQlyZXR1 cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlyZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKHByaXYtPmRl dik7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgIkZhaWxlZCB0byBw bV9ydW50aW1lX2dldF9zeW5jOiAlZFxuIiwgcmV0KTsNCisJCXBtX3J1bnRpbWVfcHV0X25vaWRs ZShwcml2LT5kZXYpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwkvKiBDb25maWd1cmUgdGlt ZXN0YW1wICovDQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9DVFJMLCBTRU5JTkZfRU4s IDEpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfQ1RSTF9FWFQsIFNFTklORl9DU0ky X0lQX0VOLCAxKTsNCisJd3JpdGVsKFNFTklORl9USU1FU1RBTVBfU1RFUCwgcHNlbmluZiArIFNF TklORl9URzFfVE1fU1RQKTsNCisNCisJcGh5X3NldF9tb2RlX2V4dChwcml2LT5kcGh5LCBQSFlf TU9ERV9NSVBJX0RQSFksIHByaXYtPnBvcnQpOw0KKwlwaHlfcG93ZXJfb24ocHJpdi0+ZHBoeSk7 DQorDQorCW10a19zZW5pbmZfcnhfY29uZmlnKHByaXYsIHNlbmluZik7DQorDQorCW10a19zZW5p bmZfc2V0X2NzaV9taXBpKHByaXYsIHNlbmluZik7DQorDQorCW10a19zZW5pbmZfc2V0X211eChw cml2LCBzZW5pbmYpOw0KKw0KKwl3cml0ZWwoMHgwLCBwc2VuaW5mICsgU0VOSU5GX1RPUF9DQU1f TVVYX0NUUkwpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgbXRrX3Nlbmlu Zl9wb3dlcl9vZmYoc3RydWN0IG10a19zZW5pbmYgKnByaXYpDQorew0KKwl1bnNpZ25lZCBpbnQg c2VuaW5mID0gbXRrX3NlbmluZl9jc2lfcG9ydF90b19zZW5pbmYocHJpdi0+cG9ydCk7DQorCXZv aWQgX19pb21lbSAqcHNlbmluZiA9IHByaXYtPmJhc2UgKyAweDEwMDAgKiBzZW5pbmY7DQorDQor CS8qIERpc2FibGUgQ1NJMigyLjVHKSBmaXJzdCAqLw0KKwl3cml0ZWwocmVhZGwocHNlbmluZiAr IFNFTklORl9DU0kyX0NUTCkgJiAweEZGRkZGRkUwLA0KKwkgICAgICAgcHNlbmluZiArIFNFTklO Rl9DU0kyX0NUTCk7DQorDQorCXBoeV9wb3dlcl9vZmYocHJpdi0+ZHBoeSk7DQorCXBtX3J1bnRp bWVfcHV0KHByaXYtPmRldik7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9tYnVz X2ZyYW1lZm10IG10a19zZW5pbmZfZGVmYXVsdF9mbXQgPSB7DQorCS5jb2RlID0gTUVESUFfQlVT X0ZNVF9TQkdHUjEwXzFYMTAsDQorCS53aWR0aCA9IERFRkFVTFRfV0lEVEgsDQorCS5oZWlnaHQg PSBERUZBVUxUX0hFSUdIVCwNCisJLmZpZWxkID0gVjRMMl9GSUVMRF9OT05FLA0KKwkuY29sb3Jz cGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCLA0KKwkueGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZV TkNfREVGQVVMVCwNCisJLnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RFRkFVTFQsDQorCS5x dWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElPTl9ERUZBVUxULA0KK307DQorDQorc3RhdGlj IHZvaWQgaW5pdF9mbXQoc3RydWN0IG10a19zZW5pbmYgKnByaXYpDQorew0KKwl1bnNpZ25lZCBp bnQgaTsNCisNCisJZm9yIChpID0gMDsgaSA8IE5VTV9QQURTOyBpKyspDQorCQlwcml2LT5mbXRb aV0uZm9ybWF0ID0gbXRrX3NlbmluZl9kZWZhdWx0X2ZtdDsNCit9DQorDQorc3RhdGljIGludCBz ZW5pbmZfaW5pdF9jZmcoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCisJCQkgICBzdHJ1Y3QgdjRs Ml9zdWJkZXZfcGFkX2NvbmZpZyAqY2ZnKQ0KK3sNCisJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZt dCAqbWY7DQorCXVuc2lnbmVkIGludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgc2QtPmVudGl0 eS5udW1fcGFkczsgaSsrKSB7DQorCQltZiA9IHY0bDJfc3ViZGV2X2dldF90cnlfZm9ybWF0KHNk LCBjZmcsIGkpOw0KKwkJKm1mID0gbXRrX3NlbmluZl9kZWZhdWx0X2ZtdDsNCisJfQ0KKw0KKwly ZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBzZW5pbmZfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkLA0KKwkJCSAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNmZywNCisJ CQkgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKmZtdCkNCit7DQorCXN0cnVjdCBtdGtfc2Vu aW5mICpwcml2ID0gc2RfdG9fbXRrX3NlbmluZihzZCk7DQorCXN0cnVjdCB2NGwyX21idXNfZnJh bWVmbXQgKm1mOw0KKw0KKwlpZiAoZm10LT5mb3JtYXQuY29kZSA9PSB+MFUgfHwgZm10LT5mb3Jt YXQuY29kZSA9PSAwKQ0KKwkJZm10LT5mb3JtYXQuY29kZSA9IE1FRElBX0JVU19GTVRfU0JHR1Ix MF8xWDEwOw0KKw0KKwlpZiAoZm10LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKSB7 DQorCQltZiA9IHY0bDJfc3ViZGV2X2dldF90cnlfZm9ybWF0KHNkLCBjZmcsIGZtdC0+cGFkKTsN CisJfSBlbHNlIHsNCisJCXByaXYtPmZtdFtmbXQtPnBhZF0ucGFkID0gZm10LT5wYWQ7DQorCQlt ZiA9ICZwcml2LT5mbXRbZm10LT5wYWRdLmZvcm1hdDsNCisJfQ0KKwkqbWYgPSBmbXQtPmZvcm1h dDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgc2VuaW5mX2dldF9mbXQoc3Ry dWN0IHY0bDJfc3ViZGV2ICpzZCwNCisJCQkgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmln ICpjZmcsDQorCQkJICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpDQorew0KKwlzdHJ1 Y3QgbXRrX3NlbmluZiAqcHJpdiA9IHNkX3RvX210a19zZW5pbmYoc2QpOw0KKw0KKwlpZiAoZm10 LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKQ0KKwkJZm10LT5mb3JtYXQgPSAqdjRs Ml9zdWJkZXZfZ2V0X3RyeV9mb3JtYXQoc2QsIGNmZywgZm10LT5wYWQpOw0KKwllbHNlDQorCQlm bXQtPmZvcm1hdCA9IHByaXYtPmZtdFtmbXQtPnBhZF0uZm9ybWF0Ow0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCBzZW5pbmZfZW51bV9tYnVzX2NvZGUoc3RydWN0IHY0bDJfc3Vi ZGV2ICpzZCwNCisJCQkJIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQorCQkJ CSBzdHJ1Y3QgdjRsMl9zdWJkZXZfbWJ1c19jb2RlX2VudW0gKmNvZGUpDQorew0KKwlzdHJ1Y3Qg bXRrX3NlbmluZiAqcHJpdiA9IHNkX3RvX210a19zZW5pbmYoc2QpOw0KKw0KKwlpZiAoY29kZS0+ aW5kZXggPj0gTlVNX1BBRFMpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJY29kZS0+Y29kZSA9 IHByaXYtPmZtdFtjb2RlLT5pbmRleF0uZm9ybWF0LmNvZGU7DQorDQorCXJldHVybiAwOw0KK30N CisNCitzdGF0aWMgaW50IHNlbmluZl9zX3N0cmVhbShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCBp bnQgb24pDQorew0KKwlzdHJ1Y3QgbXRrX3NlbmluZiAqcHJpdiA9IHNkX3RvX210a19zZW5pbmYo c2QpOw0KKw0KKwlpZiAob24pDQorCQlyZXR1cm4gbXRrX3NlbmluZl9wb3dlcl9vbihwcml2KTsN CisJbXRrX3NlbmluZl9wb3dlcl9vZmYocHJpdik7DQorDQorCXJldHVybiAwOw0KK307DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIHNlbmluZl9zdWJkZXZfcGFk X29wcyA9IHsNCisJLmxpbmtfdmFsaWRhdGUgPSB2NGwyX3N1YmRldl9saW5rX3ZhbGlkYXRlX2Rl ZmF1bHQsDQorCS5pbml0X2NmZyA9IHNlbmluZl9pbml0X2NmZywNCisJLnNldF9mbXQgPSBzZW5p bmZfc2V0X2ZtdCwNCisJLmdldF9mbXQgPSBzZW5pbmZfZ2V0X2ZtdCwNCisJLmVudW1fbWJ1c19j b2RlID0gc2VuaW5mX2VudW1fbWJ1c19jb2RlLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCB2NGwyX3N1YmRldl92aWRlb19vcHMgc2VuaW5mX3N1YmRldl92aWRlb19vcHMgPSB7DQorCS5z X3N0cmVhbSA9IHNlbmluZl9zX3N0cmVhbSwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgdjRsMl9z dWJkZXZfY29yZV9vcHMgc2VuaW5mX3N1YmRldl9jb3JlX29wcyA9IHsNCisJLnN1YnNjcmliZV9l dmVudCAgICA9IHY0bDJfY3RybF9zdWJkZXZfc3Vic2NyaWJlX2V2ZW50LA0KKwkudW5zdWJzY3Jp YmVfZXZlbnQJPSB2NGwyX2V2ZW50X3N1YmRldl91bnN1YnNjcmliZSwNCit9Ow0KKw0KK3N0YXRp YyBzdHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIHNlbmluZl9zdWJkZXZfb3BzID0gew0KKwkuY29yZQk9 ICZzZW5pbmZfc3ViZGV2X2NvcmVfb3BzLA0KKwkudmlkZW8JPSAmc2VuaW5mX3N1YmRldl92aWRl b19vcHMsDQorCS5wYWQJPSAmc2VuaW5mX3N1YmRldl9wYWRfb3BzLA0KK307DQorDQorc3RhdGlj IGludCBzZW5pbmZfbGlua19zZXR1cChzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHksDQorCQkJ ICAgICBjb25zdCBzdHJ1Y3QgbWVkaWFfcGFkICpsb2NhbCwNCisJCQkgICAgIGNvbnN0IHN0cnVj dCBtZWRpYV9wYWQgKnJlbW90ZSwgdTMyIGZsYWdzKQ0KK3sNCisJc3RydWN0IHY0bDJfc3ViZGV2 ICpzZDsNCisJc3RydWN0IG10a19zZW5pbmYgKnByaXY7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsN CisNCisJc2QgPSBtZWRpYV9lbnRpdHlfdG9fdjRsMl9zdWJkZXYoZW50aXR5KTsNCisJcHJpdiA9 IHY0bDJfZ2V0X3N1YmRldmRhdGEoc2QpOw0KKwlkZXYgPSBwcml2LT5kZXY7DQorDQorCWlmICgh KGZsYWdzICYgTUVESUFfTE5LX0ZMX0VOQUJMRUQpKQ0KKwkJcmV0dXJuIDA7DQorDQorCWlmIChs b2NhbC0+ZmxhZ3MgJiBNRURJQV9QQURfRkxfU09VUkNFKSB7DQorCQlwcml2LT5tdXhfc2VsID0g bG9jYWwtPmluZGV4IC0gQ0FNX01VWF9JRFhfTUlOOw0KKwl9IGVsc2Ugew0KKwkJLyogU2VsZWN0 IHBvcnQgKi8NCisJCXByaXYtPnBvcnQgPSBsb2NhbC0+aW5kZXg7DQorCQlpZiAocHJpdi0+cG9y dCA+PSBOVU1fU0VOU09SUykgew0KKwkJCWRldl9lcnIoZGV2LCAicG9ydCBpbmRleCBpcyBvdmVy IG51bWJlciBvZiBwb3J0c1xuIik7DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQorCX0NCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZW50aXR5X29w ZXJhdGlvbnMgc2VuaW5mX21lZGlhX29wcyA9IHsNCisJLmxpbmtfc2V0dXAgPSBzZW5pbmZfbGlu a19zZXR1cCwNCisJLmxpbmtfdmFsaWRhdGUgPSB2NGwyX3N1YmRldl9saW5rX3ZhbGlkYXRlLA0K K307DQorDQorc3RydWN0IHNlbnNvcl9hc3luY19zdWJkZXYgew0KKwlzdHJ1Y3QgdjRsMl9hc3lu Y19zdWJkZXYgYXNkOw0KKwl1MzIgcG9ydDsNCisJdTMyIGxhbmVzOw0KK307DQorDQorc3RhdGlj IGludCBtdGtfc2VuaW5mX25vdGlmaWVyX2JvdW5kKA0KKwkJCXN0cnVjdCB2NGwyX2FzeW5jX25v dGlmaWVyICpub3RpZmllciwNCisJCQlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLA0KKwkJCXN0cnVj dCB2NGwyX2FzeW5jX3N1YmRldiAqYXNkKQ0KK3sNCisJc3RydWN0IG10a19zZW5pbmYgKnByaXYg PQ0KKwkJY29udGFpbmVyX29mKG5vdGlmaWVyLCBzdHJ1Y3QgbXRrX3NlbmluZiwgbm90aWZpZXIp Ow0KKwlzdHJ1Y3Qgc2Vuc29yX2FzeW5jX3N1YmRldiAqc19hc2QgPQ0KKwkJY29udGFpbmVyX29m KGFzZCwgc3RydWN0IHNlbnNvcl9hc3luY19zdWJkZXYsIGFzZCk7DQorCWludCByZXQ7DQorDQor CWRldl9kYmcocHJpdi0+ZGV2LCAiJXMgYm91bmQgd2l0aCBwb3J0OiVkIGxhbmVzOiAlZFxuIiwN CisJCXNkLT5lbnRpdHkubmFtZSwgc19hc2QtPnBvcnQsIHNfYXNkLT5sYW5lcyk7DQorDQorCXBy aXYtPnNlbnNvcltzX2FzZC0+cG9ydF0ubnVtX2RhdGFfbGFuZXMgPSBzX2FzZC0+bGFuZXM7DQor DQorCXJldCA9IG1lZGlhX2NyZWF0ZV9wYWRfbGluaygmc2QtPmVudGl0eSwgMCwgJnByaXYtPnN1 YmRldi5lbnRpdHksDQorCQkJCSAgICBzX2FzZC0+cG9ydCwgMCk7DQorCWlmIChyZXQpIHsNCisJ CWRldl9lcnIocHJpdi0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBsaW5rIGZvciAlc1xuIiwNCisJ CQlzZC0+ZW50aXR5Lm5hbWUpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyX29wZXJhdGlv bnMgbXRrX3NlbmluZl9hc3luY19vcHMgPSB7DQorCS5ib3VuZCA9IG10a19zZW5pbmZfbm90aWZp ZXJfYm91bmQsDQorfTsNCisNCitzdGF0aWMgaW50IHNlbmluZl9kdW1wX2RlYnVnX2luZm8oc3Ry dWN0IG10a19zZW5pbmYgKnByaXYpDQorew0KKwl2b2lkIF9faW9tZW0gKnBzZW5pbmYgPSBwcml2 LT5iYXNlOw0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5kZXY7DQorDQorCS8qIFNlbnNv ciBJbnRlcmZhY2UgQ29udHJvbCAqLw0KKwlkZXZfZGJnKGRldiwNCisJCSJTRU5JTkZfQ1NJMl9D VEwgU0VOSU5GMToweCV4XG4iLA0KKwkJcmVhZGwocHNlbmluZiArIFNFTklORl9DU0kyX0NUTCkp Ow0KKwkvKiBSZWFkIHdpZHRoL2hlaWdodCAqLw0KKwkvKiBSZWFkIGludGVycnVwdCBzdGF0dXMg Ki8NCisJZGV2X2RiZyhkZXYsICJTRU5JTkZfSVJROjB4JXhcbiIsDQorCQlyZWFkbChwc2VuaW5m ICsgU0VOSU5GX0NTSTJfSU5UX1NUQVRVUykpOw0KKwkvKiBNdXgxICovDQorCWRldl9kYmcoZGV2 LCAiU0VOSU5GX01VWF9DVFJMOjB4JXgsIElOVFNUQToweCV4LCBERUJVR18yKDB4JXgpXG4iLA0K KwkJcmVhZGwocHNlbmluZiArIFNFTklORl9NVVhfQ1RSTCksDQorCQlyZWFkbChwc2VuaW5mICsg U0VOSU5GX01VWF9JTlRTVEEpLA0KKwkJcmVhZGwocHNlbmluZiArIFNFTklORl9NVVhfREVCVUdf MikpOw0KKwlpZiAocmVhZGwocHNlbmluZiArIFNFTklORl9NVVhfSU5UU1RBKSAmIDB4MSkgew0K KwkJd3JpdGVsKDB4ZmZmZmZmZmYsIHBzZW5pbmYgKyBTRU5JTkZfTVVYX0lOVFNUQSk7DQorCQl1 c2xlZXBfcmFuZ2UoMTAwMCwgMTAwMCAqIDIpOw0KKwkJZGV2X3dhcm4oZGV2LCAib3ZlcnJ1biBD VFJMOiV4IElOVFNUQToleCBERUJVR18yOiV4XG4iLA0KKwkJCSByZWFkbChwc2VuaW5mICsgU0VO SU5GX01VWF9DVFJMKSwNCisJCQkgcmVhZGwocHNlbmluZiArIFNFTklORl9NVVhfSU5UU1RBKSwN CisJCQkgcmVhZGwocHNlbmluZiArIFNFTklORl9NVVhfREVCVUdfMikpOw0KKwl9DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHNlbmluZl9lbmFibGVfdGVzdF9wYXR0ZXJuKHN0 cnVjdCBtdGtfc2VuaW5mICpwcml2KQ0KK3sNCisJdm9pZCBfX2lvbWVtICpwc2VuaW5mID0gcHJp di0+YmFzZTsNCisJdW5zaWduZWQgaW50IHZhbDsNCisNCisJU0VOSU5GX0JJVFMocHNlbmluZiwg U0VOSU5GX1RPUF9DVFJMLCBTRU5JTkZfUENMS19FTiwgMSk7DQorCVNFTklORl9CSVRTKHBzZW5p bmYsIFNFTklORl9UT1BfQ1RSTCwgU0VOSU5GMl9QQ0xLX0VOLCAxKTsNCisJU0VOSU5GX0JJVFMo cHNlbmluZiwgU0VOSU5GX0NUUkwsIFNFTklORl9FTiwgMSk7DQorCVNFTklORl9CSVRTKHBzZW5p bmYsIFNFTklORl9DVFJMLCBTRU5JTkZfU1JDX1NFTCwgMSk7DQorCVNFTklORl9CSVRTKHBzZW5p bmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5GX0hTWU5DX01BU0ssIDEpOw0KKwlTRU5JTkZfQklU Uyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIFNFTklORl9TUkNfU0VMLCAxKTsNCisJU0VOSU5G X0JJVFMocHNlbmluZiwgU0VOSU5GX01VWF9DVFJMLCBGSUZPX1BVU0hfRU4sIDB4MWYpOw0KKwlT RU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIEZJRk9fRkxVU0hfRU4sIDB4MWIp Ow0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfTVVYX0NUUkwsIEZJRk9fRlVMTF9XUl9F TiwgMSk7DQorCVNFTklORl9CSVRTKHBzZW5pbmYsIFNFTklORl9NVVhfQ1RSTCwgU0VOSU5GX01V WF9FTiwgMSk7DQorCXdyaXRlbChTRU5JTkZfSVJRX0NMUl9TRUwgfCBTRU5JTkZfQUxMX0VSUl9J UlFfRU4sDQorCSAgICAgICBwc2VuaW5mICsgU0VOSU5GX01VWF9JTlRFTik7DQorCXdyaXRlbCgw eDAsIHBzZW5pbmYgKyBTRU5JTkZfTVVYX1NQQVJFKTsNCisJd3JpdGVsKDB4RTIwMDAsIHBzZW5p bmYgKyBTRU5JTkZfTVVYX0NUUkxfRVhUKTsNCisJd3JpdGVsKDB4MCwgcHNlbmluZiArIFNFTklO Rl9NVVhfQ1RSTF9FWFQpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfVEcxX1RNX0NU TCwgVE1fRU4sIDEpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfVEcxX1RNX0NUTCwg VE1fUEFULCAweEMpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfVEcxX1RNX0NUTCwg VE1fVlNZTkMsIDQpOw0KKwlTRU5JTkZfQklUUyhwc2VuaW5mLCBTRU5JTkZfVEcxX1RNX0NUTCwg VE1fRFVNTVlQWEwsIDQpOw0KKwl2YWwgPSAocHJpdi0+Zm10W3ByaXYtPnBvcnRdLmZvcm1hdC5o ZWlnaHQgKyAweDEwMCkgPDwgMTYgfA0KKwkJICAocHJpdi0+Zm10W3ByaXYtPnBvcnRdLmZvcm1h dC53aWR0aCArIDB4MTAwKTsNCisJd3JpdGVsKHZhbCwgcHNlbmluZiArIFNFTklORl9URzFfVE1f U0laRSk7DQorCXdyaXRlbCgweDAsIHBzZW5pbmYgKyBTRU5JTkZfVEcxX1RNX0NMSyk7DQorCXdy aXRlbCgweDEsIHBzZW5pbmYgKyBTRU5JTkZfVEcxX1RNX1NUUCk7DQorCXdyaXRlbChyZWFkbChw c2VuaW5mICsgU0VOSU5GX0NUUkxfRVhUKSB8IDB4MDIsDQorCSAgICAgICBwc2VuaW5mICsgU0VO SU5GX0NUUkxfRVhUKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgc2VuaW5m X3NldF9jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQorew0KKwlzdHJ1Y3QgbXRrX3Nlbmlu ZiAqcHJpdiA9IGNvbnRhaW5lcl9vZihjdHJsLT5oYW5kbGVyLA0KKwkJCQkJICAgICBzdHJ1Y3Qg bXRrX3NlbmluZiwgY3RybF9oYW5kbGVyKTsNCisNCisJc3dpdGNoIChjdHJsLT5pZCkgew0KKwlj YXNlIFY0TDJfQ0lEX1RFU1RfUEFUVEVSTjoNCisJCWlmIChjdHJsLT52YWwgPT0gVEVTVF9HRU5f UEFUVEVSTikNCisJCQlyZXR1cm4gc2VuaW5mX2VuYWJsZV90ZXN0X3BhdHRlcm4ocHJpdik7DQor CQllbHNlIGlmIChjdHJsLT52YWwgPT0gVEVTVF9EVU1QX0RFQlVHX0lORk8pDQorCQkJcmV0dXJu IHNlbmluZl9kdW1wX2RlYnVnX2luZm8ocHJpdik7DQorCQllbHNlDQorCQkJcmV0dXJuIC1FSU5W QUw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRs Ml9jdHJsX29wcyBzZW5pbmZfY3RybF9vcHMgPSB7DQorCS5zX2N0cmwgPSBzZW5pbmZfc2V0X2N0 cmwsDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNlbmluZl90ZXN0X3BhdHRl cm5fbWVudVtdID0gew0KKwkiSG9yaXpvbnRhbCBiYXJzIiwNCisJIk1vbml0b3Igc3RhdHVzIiwN Cit9Ow0KKw0KK3N0YXRpYyBpbnQgc2VuaW5mX2luaXRpYWxpemVfY29udHJvbHMoc3RydWN0IG10 a19zZW5pbmYgKnByaXYpDQorew0KKwlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgKmhhbmRsZXI7 DQorCWludCByZXQ7DQorDQorCWhhbmRsZXIgPSAmcHJpdi0+Y3RybF9oYW5kbGVyOw0KKwlyZXQg PSB2NGwyX2N0cmxfaGFuZGxlcl9pbml0KGhhbmRsZXIsIDIpOw0KKwlpZiAocmV0KQ0KKwkJcmV0 dXJuIHJldDsNCisNCisJdjRsMl9jdHJsX25ld19zdGRfbWVudV9pdGVtcyhoYW5kbGVyLCAmc2Vu aW5mX2N0cmxfb3BzLA0KKwkJCQkgICAgIFY0TDJfQ0lEX1RFU1RfUEFUVEVSTiwNCisJCQkJICAg ICBBUlJBWV9TSVpFKHNlbmluZl90ZXN0X3BhdHRlcm5fbWVudSkgLSAxLA0KKwkJCQkgICAgIDAs IDAsIHNlbmluZl90ZXN0X3BhdHRlcm5fbWVudSk7DQorDQorCWlmIChoYW5kbGVyLT5lcnJvcikg ew0KKwkJcmV0ID0gaGFuZGxlci0+ZXJyb3I7DQorCQlkZXZfZXJyKHByaXYtPmRldiwNCisJCQki RmFpbGVkIHRvIGluaXQgY29udHJvbHMoJWQpXG4iLCByZXQpOw0KKwkJdjRsMl9jdHJsX2hhbmRs ZXJfZnJlZShoYW5kbGVyKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJcHJpdi0+c3ViZGV2 LmN0cmxfaGFuZGxlciA9IGhhbmRsZXI7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg aW50IG10a19zZW5pbmZfbWVkaWFfcmVnaXN0ZXIoc3RydWN0IG10a19zZW5pbmYgKnByaXYpDQor ew0KKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gJnByaXYtPnN1YmRldjsNCisJc3RydWN0IG1l ZGlhX3BhZCAqcGFkcyA9IHByaXYtPnBhZHM7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYt PmRldjsNCisJdW5zaWduZWQgaW50IGk7DQorCWludCByZXQ7DQorDQorCXY0bDJfc3ViZGV2X2lu aXQoc2QsICZzZW5pbmZfc3ViZGV2X29wcyk7DQorDQorCWluaXRfZm10KHByaXYpOw0KKwlyZXQg PSBzZW5pbmZfaW5pdGlhbGl6ZV9jb250cm9scyhwcml2KTsNCisJaWYgKHJldCkgew0KKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb250cm9sc1xuIik7DQorCQlyZXR1cm4g LUVJTlZBTDsNCisJfQ0KKw0KKwlzZC0+ZmxhZ3MgfD0gKFY0TDJfU1VCREVWX0ZMX0hBU19ERVZO T0RFIHwgVjRMMl9TVUJERVZfRkxfSEFTX0VWRU5UUyk7DQorDQorCXByaXYtPnN1YmRldi5kZXYg PSBkZXY7DQorCXNucHJpbnRmKHNkLT5uYW1lLCBWNEwyX1NVQkRFVl9OQU1FX1NJWkUsICIlcyIs DQorCQkgZGV2X25hbWUoZGV2KSk7DQorCXY0bDJfc2V0X3N1YmRldmRhdGEoc2QsIHByaXYpOw0K Kw0KKwlzZC0+ZW50aXR5LmZ1bmN0aW9uID0gTUVESUFfRU5UX0ZfVklEX0lGX0JSSURHRTsNCisJ c2QtPmVudGl0eS5vcHMgPSAmc2VuaW5mX21lZGlhX29wczsNCisNCisJZm9yIChpID0gMDsgaSA8 IE5VTV9TRU5TT1JTOyBpKyspDQorCQlwYWRzW2ldLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NJTks7 DQorDQorCWZvciAoaSA9IENBTV9NVVhfSURYX01JTjsgaSA8IE5VTV9QQURTOyBpKyspDQorCQlw YWRzW2ldLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NPVVJDRTsNCisJcmV0ID0gbWVkaWFfZW50aXR5 X3BhZHNfaW5pdCgmc2QtPmVudGl0eSwgTlVNX1BBRFMsIHBhZHMpOw0KKwlpZiAocmV0IDwgMCkN CisJCWdvdG8gZXJyX2ZyZWVfaGFuZGxlcjsNCisNCisJdjRsMl9hc3luY19ub3RpZmllcl9pbml0 KCZwcml2LT5ub3RpZmllcik7DQorDQorCWZvciAoaSA9IDA7IGkgPCBOVU1fU0VOU09SUzsgKytp KSB7DQorCQlzdHJ1Y3QgdjRsMl9md25vZGVfZW5kcG9pbnQgdmVwID0gew0KKwkJCS5idXNfdHlw ZSA9IFY0TDJfTUJVU19DU0kyX0RQSFkNCisJCX07DQorCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAq ZXA7DQorCQlzdHJ1Y3Qgc2Vuc29yX2FzeW5jX3N1YmRldiAqc19hc2QgPSBOVUxMOw0KKw0KKwkJ ZXAgPSBmd25vZGVfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X2lkKA0KKwkJCQlkZXZfZndub2RlKHBy aXYtPmRldiksIGksIDAsDQorCQkJCUZXTk9ERV9HUkFQSF9FTkRQT0lOVF9ORVhUKTsNCisJCWlm ICghZXApDQorCQkJY29udGludWU7DQorDQorCQlyZXQgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9w YXJzZShlcCwgJnZlcCk7DQorCQlpZiAocmV0KQ0KKwkJCWdvdG8gZXJyX3BhcnNlOw0KKw0KKwkJ c19hc2QgPSBremFsbG9jKHNpemVvZigqc19hc2QpLCBHRlBfS0VSTkVMKTsNCisJCWlmICghc19h c2QpIHsNCisJCQlyZXQgPSAtRU5PTUVNOw0KKwkJCWdvdG8gZXJyX3BhcnNlOw0KKwkJfQ0KKwkJ c19hc2QtPnBvcnQgPSB2ZXAuYmFzZS5wb3J0Ow0KKwkJc19hc2QtPmxhbmVzID0gdmVwLmJ1cy5t aXBpX2NzaTIubnVtX2RhdGFfbGFuZXM7DQorCQlyZXQgPSB2NGwyX2FzeW5jX25vdGlmaWVyX2Fk ZF9md25vZGVfcmVtb3RlX3N1YmRldigNCisJCQkJJnByaXYtPm5vdGlmaWVyLCBlcCwgJnNfYXNk LT5hc2QpOw0KKwkJaWYgKHJldCkNCisJCQlnb3RvIGVycl9wYXJzZTsNCisNCisJCWZ3bm9kZV9o YW5kbGVfcHV0KGVwKTsNCisJCWNvbnRpbnVlOw0KK2Vycl9wYXJzZToNCisJCWZ3bm9kZV9oYW5k bGVfcHV0KGVwKTsNCisJCWtmcmVlKHNfYXNkKTsNCisJfQ0KKw0KKwlwcml2LT5zdWJkZXYuc3Vi ZGV2X25vdGlmaWVyID0gJnByaXYtPm5vdGlmaWVyOw0KKwlwcml2LT5ub3RpZmllci5vcHMgPSAm bXRrX3NlbmluZl9hc3luY19vcHM7DQorCXJldCA9IHY0bDJfYXN5bmNfc3ViZGV2X25vdGlmaWVy X3JlZ2lzdGVyKHNkLCAmcHJpdi0+bm90aWZpZXIpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2 X2VycihkZXYsICJ2NGwyIGFzeW5jIG5vdGlmaWVyIHJlZ2lzdGVyIGZhaWxlZFxuIik7DQorCQln b3RvIGVycl9jbGVhbl9ub3RpZmlmZXI7DQorCX0NCisNCisJcmV0ID0gdjRsMl9hc3luY19yZWdp c3Rlcl9zdWJkZXYoc2QpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2VycihkZXYsICJ2NGwy IGFzeW5jIHJlZ2lzdGVyIHN1YmRldiBmYWlsZWRcbiIpOw0KKwkJZ290byBlcnJfY2xlYW5fbm90 aWZpZmVyOw0KKwl9DQorCXJldHVybiAwOw0KKw0KK2Vycl9jbGVhbl9ub3RpZmlmZXI6DQorCXY0 bDJfYXN5bmNfbm90aWZpZXJfY2xlYW51cCgmcHJpdi0+bm90aWZpZXIpOw0KKwltZWRpYV9lbnRp dHlfY2xlYW51cCgmc2QtPmVudGl0eSk7DQorZXJyX2ZyZWVfaGFuZGxlcjoNCisJdjRsMl9jdHJs X2hhbmRsZXJfZnJlZSgmcHJpdi0+Y3RybF9oYW5kbGVyKTsNCisNCisJcmV0dXJuIHJldDsNCit9 DQorDQorc3RhdGljIGludCBzZW5pbmZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCit7DQorCS8qIExpc3Qgb2YgY2xvY2tzIHJlcXVpcmVkIGJ5IHNlbmluZiAqLw0KKwlzdGF0 aWMgY29uc3QgY2hhciAqIGNvbnN0IGNsa19uYW1lc1tdID0gew0KKwkJImNhbV9zZW5pbmYiLCAi dG9wX211eF9zZW5pbmYiDQorCX07DQorCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KKwlzdHJ1Y3Qg bXRrX3NlbmluZiAqcHJpdjsNCisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCisJ dW5zaWduZWQgaW50IGk7DQorCWludCByZXQ7DQorDQorCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2 LCBzaXplb2Yoc3RydWN0IG10a19zZW5pbmYpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwcml2KQ0K KwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpOw0KKwlw cml2LT5kZXYgPSBkZXY7DQorDQorCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgMCk7DQorCXByaXYtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2Uo ZGV2LCByZXMpOw0KKwlpZiAoSVNfRVJSKHByaXYtPmJhc2UpKQ0KKwkJcmV0dXJuIFBUUl9FUlIo cHJpdi0+YmFzZSk7DQorDQorCXByaXYtPmRwaHkgPSBkZXZtX3BoeV9nZXQoZGV2LCAic2VuaW5m Iik7DQorCWlmIChJU19FUlIocHJpdi0+ZHBoeSkpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCBwaHk6JWRcbiIsIFBUUl9FUlIocHJpdi0+ZHBoeSkpOw0KKwkJcmV0dXJuIFBUUl9F UlIocHJpdi0+ZHBoeSk7DQorCX0NCisJcHJpdi0+bnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGNsa19u YW1lcyk7DQorCXByaXYtPmNsa3MgPSBkZXZtX2tjYWxsb2MoZGV2LCBwcml2LT5udW1fY2xrcywN CisJCQkJICBzaXplb2YoKnByaXYtPmNsa3MpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwcml2LT5j bGtzKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1f Y2xrczsgKytpKQ0KKwkJcHJpdi0+Y2xrc1tpXS5pZCA9IGNsa19uYW1lc1tpXTsNCisNCisJcmV0 ID0gZGV2bV9jbGtfYnVsa19nZXQoZGV2LCBwcml2LT5udW1fY2xrcywgcHJpdi0+Y2xrcyk7DQor CWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBzZW5pbmYgY2xvY2s6 JWRcbiIsIHJldCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJldCA9IG10a19zZW5pbmZf bWVkaWFfcmVnaXN0ZXIocHJpdik7DQorCWlmICghcmV0KSAvKiByZWdpc3RlciBzdWNjZXNzICov DQorCQlwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitz dGF0aWMgaW50IHNlbmluZl9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0 cnVjdCBtdGtfc2VuaW5mICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorDQorCWRldl9k YmcoZGV2LCAic2VuaW5mIHJ1bnRpbWUgc3VzcGVuZFxuIik7DQorCWNsa19idWxrX2Rpc2FibGVf dW5wcmVwYXJlKHByaXYtPm51bV9jbGtzLCBwcml2LT5jbGtzKTsNCisNCisJcmV0dXJuIDA7DQor fQ0KKw0KK3N0YXRpYyBpbnQgc2VuaW5mX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQor ew0KKwlzdHJ1Y3QgbXRrX3NlbmluZiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlp bnQgcmV0Ow0KKw0KKwlkZXZfZGJnKGRldiwgInNlbmluZiBydW50aW1lIHJlc3VtZVxuIik7DQor CXJldCA9IGNsa19idWxrX3ByZXBhcmVfZW5hYmxlKHByaXYtPm51bV9jbGtzLCBwcml2LT5jbGtz KTsNCisJaWYgKHJldCkgew0KKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGNsb2Nr OiVkXG4iLCByZXQpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHJ1bnRpbWVfcG1fb3BzID0gew0KKwlT RVRfUlVOVElNRV9QTV9PUFMoc2VuaW5mX3BtX3N1c3BlbmQsIHNlbmluZl9wbV9yZXN1bWUsIE5V TEwpDQorfTsNCisNCitzdGF0aWMgaW50IHNlbmluZl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCit7DQorCXN0cnVjdCBtdGtfc2VuaW5mICpwcml2ID0gZGV2X2dldF9kcnZk YXRhKCZwZGV2LT5kZXYpOw0KKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiA9ICZwcml2LT5z dWJkZXY7DQorDQorCW1lZGlhX2VudGl0eV9jbGVhbnVwKCZzdWJkZXYtPmVudGl0eSk7DQorCXY0 bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoc3ViZGV2KTsNCisJdjRsMl9jdHJsX2hhbmRsZXJf ZnJlZSgmcHJpdi0+Y3RybF9oYW5kbGVyKTsNCisNCisJcG1fcnVudGltZV9kaXNhYmxlKHByaXYt PmRldik7DQorDQorCXJldHVybiAwOw0KK30NCisNCisjaWZkZWYgQ09ORklHX09GDQorc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX3NlbmluZl9vZl9tYXRjaFtdID0gew0KKwl7 LmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTgzLXNlbmluZiJ9LA0KKwl7fSwNCit9Ow0KK01P RFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19zZW5pbmZfb2ZfbWF0Y2gpOw0KKyNlbmRpZg0KKw0K K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNlbmluZl9wZHJ2ID0gew0KKwkuZHJpdmVy CT0gew0KKwkJLm5hbWUJPSAic2VuaW5mIiwNCisJCS5wbSAgPSAmcnVudGltZV9wbV9vcHMsDQor CQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIobXRrX3NlbmluZl9vZl9tYXRjaCksDQor CX0sDQorCS5wcm9iZQk9IHNlbmluZl9wcm9iZSwNCisJLnJlbW92ZQk9IHNlbmluZl9yZW1vdmUs DQorfTsNCisNCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNlbmluZl9wZHJ2KTsNCisNCitNT0RV TEVfREVTQ1JJUFRJT04oIk1USyBzZW5zb3IgaW50ZXJmYWNlIGRyaXZlciIpOw0KK01PRFVMRV9B VVRIT1IoIkxvdWlzIEt1byA8bG91aXMua3VvQG1lZGlhdGVrLmNvbT4iKTsNCitNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst aXNwL3NlbmluZi9tdGtfc2VuaW5mX2RwaHkuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWlzcC9zZW5pbmYvbXRrX3NlbmluZl9kcGh5LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMDAuLjhiYzkxMGFmOWMyMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtfc2VuaW5mX2RwaHkuYw0KQEAgLTAs MCArMSwzNTMgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKw0KKyNp bmNsdWRlIDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5j bHVkZSA8bGludXgvb2ZfZ3JhcGguaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ DQorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4NCisjaW5jbHVkZSAibXRrX3NlbmluZl9yeF9y ZWcuaCINCisNCisjZGVmaW5lIENTSV9QT1JUXzBBX0FERFJfT0ZTVAkwDQorI2RlZmluZSBDU0lf UE9SVF8wQl9BRERSX09GU1QJMHgxMDAwDQorI2RlZmluZSBDU0lfUE9SVF8xX0FERFJfT0ZTVAkw eDIwMDANCisjZGVmaW5lIENTSV9QT1JUXzJfQUREUl9PRlNUCTB4NDAwMA0KKy8qIE1peCBEUEhZ L0NQSFkgKi8NCisjZGVmaW5lIENTSTBBX09GU1QgICAgICAgICAgICAgIDANCisjZGVmaW5lIENT STBCX09GU1QgICAgICAgICAgICAgIDB4MTAwMA0KKy8qIERQSFkgb25seSAqLw0KKyNkZWZpbmUg Q1NJMUFfT0ZTVCAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQ1NJMUJfT0ZTVCAgICAgICAgICAg ICAgMHgxMDAwDQorDQorZW51bSBDRkdfQ1NJX1BPUlQgew0KKwlDRkdfQ1NJX1BPUlRfMCA9IDB4 MCwJLyogNEQxQyAqLw0KKwlDRkdfQ1NJX1BPUlRfMSwJCS8qIDREMUMgKi8NCisJQ0ZHX0NTSV9Q T1JUXzIsCQkvKiA0RDFDICovDQorCUNGR19DU0lfUE9SVF8wQSwJLyogMkQxQyAqLw0KKwlDRkdf Q1NJX1BPUlRfMEIsCS8qIDJEMUMgKi8NCisJQ0ZHX0NTSV9QT1JUX01BWF9OVU0sDQorCUNGR19D U0lfUE9SVF9OT05FCS8qZm9yIG5vbi1NSVBJIHNlbnNvciAqLw0KK307DQorDQorI2RlZmluZSBN SVBJX0JJVFMoYmFzZSwgcmVnLCBmaWVsZCwgdmFsKSBkbyB7IFwNCisJCXUzMiBfX2lvbWVtICpf X3AgPSAoYmFzZSkgKyAocmVnKTsgXA0KKwkJdTMyIF9fdiA9ICpfX3A7IFwNCisJCV9fdiAmPSB+ cmVnIyNfIyNmaWVsZCMjX01BU0s7IFwNCisJCV9fdiB8PSAoKHZhbCkgPDwgcmVnIyNfIyNmaWVs ZCMjX1NISUZUKTsgXA0KKwkJKl9fcCA9IF9fdjsgXA0KKwl9IHdoaWxlICgwKQ0KKw0KK3N0cnVj dCBtdGtfbWlwaV9kcGh5IHsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwl2b2lkIF9faW9tZW0g KnJ4Ow0KKwl1bnNpZ25lZCBjaGFyIF9faW9tZW0gKmNzaTJfcnhbQ0ZHX0NTSV9QT1JUX01BWF9O VU1dOw0KKwl1bnNpZ25lZCBpbnQgcG9ydDsNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGlz XzRkMWModW5zaWduZWQgaW50IHBvcnQpDQorew0KKwlyZXR1cm4gcG9ydCA8IENGR19DU0lfUE9S VF8wQTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaXNfY2RwaHlfY29tYm8odW5zaWduZWQg aW50IHBvcnQpDQorew0KKwlyZXR1cm4gcG9ydCA9PSBDRkdfQ1NJX1BPUlRfMEEgfHwNCisJCXBv cnQgPT0gQ0ZHX0NTSV9QT1JUXzBCIHx8DQorCQlwb3J0ID09IENGR19DU0lfUE9SVF8wOw0KK30N CisNCitzdGF0aWMgdm9pZCBtdGtfZHBoeV9lbmFibGUoc3RydWN0IG10a19taXBpX2RwaHkgKnBy aXYpDQorew0KKwl2b2lkIF9faW9tZW0gKnBtaXBpX3J4X2Jhc2UgPSBwcml2LT5jc2kyX3J4W0NG R19DU0lfUE9SVF8wXTsNCisJdW5zaWduZWQgaW50IHBvcnQgPSBwcml2LT5wb3J0Ow0KKwl2b2lk IF9faW9tZW0gKnBtaXBpX3J4ID0gcHJpdi0+Y3NpMl9yeFtwb3J0XTsNCisNCisJLyogU2V0IGFu YWxvZyBwaHkgbW9kZSB0byBEUEhZICovDQorCWlmIChpc19jZHBoeV9jb21ibyhwb3J0KSkNCisJ CU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwgUkdfQ1NJMEFfQ1BIWV9F TiwgMCk7DQorDQorCWlmIChpc180ZDFjKHBvcnQpKSB7DQorCQlNSVBJX0JJVFMocG1pcGlfcngs IE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9EUEhZX0wwX0NLTU9ERV9FTiwg MCk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBS R19DU0kwQV9EUEhZX0wwX0NLU0VMLCAxKTsNCisJCU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9S WF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0RQSFlfTDFfQ0tNT0RFX0VOLCAwKTsNCisJ CU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBB X0RQSFlfTDFfQ0tTRUwsIDEpOw0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTAw X0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfRFBIWV9MMl9DS01PREVfRU4sIDEpOw0KKwkJTUlQSV9C SVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfRFBIWV9M Ml9DS1NFTCwgMSk7DQorCX0gZWxzZSB7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhf QU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9EUEhZX0wwX0NLTU9ERV9FTiwgMCk7DQorCQlN SVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9E UEhZX0wwX0NLU0VMLCAwKTsNCisJCU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9D U0kwQSwNCisJCQkgIFJHX0NTSTBBX0RQSFlfTDFfQ0tNT0RFX0VOLCAxKTsNCisJCU1JUElfQklU UyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0RQSFlfTDFf Q0tTRUwsIDApOw0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0K KwkJCSAgUkdfQ1NJMEFfRFBIWV9MMl9DS01PREVfRU4sIDApOw0KKwkJTUlQSV9CSVRTKHBtaXBp X3J4LCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfRFBIWV9MMl9DS1NFTCwg MCk7DQorCX0NCisJaWYgKGlzX2NkcGh5X2NvbWJvKHBvcnQpKQ0KKwkJTUlQSV9CSVRTKHBtaXBp X3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0NQ SFlfRU4sIDApOw0KKw0KKwlpZiAoaXNfNGQxYyhwb3J0KSkgew0KKwkJTUlQSV9CSVRTKHBtaXBp X3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0RQ SFlfTDBfQ0tNT0RFX0VOLCAwKTsNCisJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTBCX09GU1Qs IE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9EUEhZX0wwX0NLU0VMLCAxKTsN CisJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMDBfQ1NJMEEs DQorCQkJICBSR19DU0kwQV9EUEhZX0wxX0NLTU9ERV9FTiwgMCk7DQorCQlNSVBJX0JJVFMocG1p cGlfcnggKyBDU0kwQl9PRlNULCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFf RFBIWV9MMV9DS1NFTCwgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBN SVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfRFBIWV9MMl9DS01PREVfRU4sIDAp Ow0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kw QSwNCisJCQkgIFJHX0NTSTBBX0RQSFlfTDJfQ0tTRUwsIDEpOw0KKwl9IGVsc2Ugew0KKwkJTUlQ SV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkg IFJHX0NTSTBBX0RQSFlfTDBfQ0tTRUwsIDApOw0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4ICsgQ1NJ MEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0RQSFlfTDFfQ0tN T0RFX0VOLCAxKTsNCisJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhf QU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9EUEhZX0wxX0NLU0VMLCAwKTsNCisJCU1JUElf QklUUyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBS R19DU0kwQV9EUEhZX0wyX0NLTU9ERV9FTiwgMCk7DQorCQlNSVBJX0JJVFMocG1pcGlfcnggKyBD U0kwQl9PRlNULCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfRFBIWV9MMl9D S1NFTCwgMCk7DQorCX0NCisJLyogQnl0ZSBjbG9jayBpbnZlcnQgKi8NCisJTUlQSV9CSVRTKHBt aXBpX3J4LCBNSVBJX1JYX0FOQUE4X0NTSTBBLA0KKwkJICBSR19DU0kwQV9DRFBIWV9MMF9UMF9C WVRFQ0tfSU5WRVJULCAxKTsNCisJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQUE4X0NT STBBLA0KKwkJICBSR19DU0kwQV9EUEhZX0wxX0JZVEVDS19JTlZFUlQsIDEpOw0KKwlNSVBJX0JJ VFMocG1pcGlfcngsIE1JUElfUlhfQU5BQThfQ1NJMEEsDQorCQkgIFJHX0NTSTBBX0NEUEhZX0wy X1QxX0JZVEVDS19JTlZFUlQsIDEpOw0KKw0KKwlpZiAoaXNfNGQxYyhwb3J0KSkgew0KKwkJTUlQ SV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkFBOF9DU0kwQSwNCisJCQkg IFJHX0NTSTBBX0NEUEhZX0wwX1QwX0JZVEVDS19JTlZFUlQsIDEpOw0KKwkJTUlQSV9CSVRTKHBt aXBpX3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkFBOF9DU0kwQSwNCisJCQkgIFJHX0NTSTBB X0RQSFlfTDFfQllURUNLX0lOVkVSVCwgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kw Ql9PRlNULCBNSVBJX1JYX0FOQUE4X0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfQ0RQSFlfTDJfVDFf QllURUNLX0lOVkVSVCwgMSk7DQorCX0NCisNCisJLyogU3RhcnQgQU5BIEVRIHR1bmluZyAqLw0K KwlpZiAoaXNfY2RwaHlfY29tYm8ocG9ydCkpIHsNCisJCU1JUElfQklUUyhwbWlwaV9yeCwgTUlQ SV9SWF9BTkExOF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0wwX1QwQUJfRVFfSVMsIDEpOw0KKwkJ TUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTE4X0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFf TDBfVDBBQl9FUV9CVywgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMUNf Q1NJMEEsDQorCQkJICBSR19DU0kwQV9MMV9UMUFCX0VRX0lTLCAxKTsNCisJCU1JUElfQklUUyhw bWlwaV9yeCwgTUlQSV9SWF9BTkExQ19DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0wxX1QxQUJfRVFf QlcsIDEpOw0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTIwX0NTSTBBLA0KKwkJ CSAgUkdfQ1NJMEFfTDJfVDFCQ19FUV9JUywgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1J UElfUlhfQU5BMjBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9MMl9UMUJDX0VRX0JXLCAxKTsNCisN CisJCWlmIChpc180ZDFjKHBvcnQpKSB7DQorCQkJTUlQSV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJf T0ZTVCwgTUlQSV9SWF9BTkExOF9DU0kwQSwNCisJCQkJICBSR19DU0kwQV9MMF9UMEFCX0VRX0lT LCAxKTsNCisJCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBNSVBJX1JYX0FOQTE4 X0NTSTBBLA0KKwkJCQkgIFJHX0NTSTBBX0wwX1QwQUJfRVFfQlcsIDEpOw0KKwkJCU1JUElfQklU UyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMUNfQ1NJMEEsDQorCQkJCSAgUkdf Q1NJMEFfTDFfVDFBQl9FUV9JUywgMSk7DQorCQkJTUlQSV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJf T0ZTVCwgTUlQSV9SWF9BTkExQ19DU0kwQSwNCisJCQkJICBSR19DU0kwQV9MMV9UMUFCX0VRX0JX LCAxKTsNCisJCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBNSVBJX1JYX0FOQTIw X0NTSTBBLA0KKwkJCQkgIFJHX0NTSTBBX0wyX1QxQkNfRVFfSVMsIDEpOw0KKwkJCU1JUElfQklU UyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMjBfQ1NJMEEsDQorCQkJCSAgUkdf Q1NJMEFfTDJfVDFCQ19FUV9CVywgMSk7DQorCQl9DQorCX0gZWxzZSB7DQorCQlNSVBJX0JJVFMo cG1pcGlfcngsIE1JUElfUlhfQU5BMThfQ1NJMUEsDQorCQkJICBSR19DU0kxQV9MMF9FUV9JUywg MSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMThfQ1NJMUEsDQorCQkJICBS R19DU0kxQV9MMF9FUV9CVywgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5B MThfQ1NJMUEsDQorCQkJICBSR19DU0kxQV9MMV9FUV9JUywgMSk7DQorCQlNSVBJX0JJVFMocG1p cGlfcngsIE1JUElfUlhfQU5BMThfQ1NJMUEsDQorCQkJICBSR19DU0kxQV9MMV9FUV9CVywgMSk7 DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMUNfQ1NJMUEsDQorCQkJICBSR19D U0kxQV9MMl9FUV9JUywgMSk7DQorCQlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMUNf Q1NJMUEsDQorCQkJICBSR19DU0kxQV9MMl9FUV9CVywgMSk7DQorDQorCQlpZiAoaXNfNGQxYyhw b3J0KSkgew0KKwkJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTFCX09GU1QsIE1JUElfUlhfQU5B MThfQ1NJMUEsDQorCQkJCSAgUkdfQ1NJMUFfTDBfRVFfSVMsIDEpOw0KKwkJCU1JUElfQklUUyhw bWlwaV9yeCArIENTSTFCX09GU1QsIE1JUElfUlhfQU5BMThfQ1NJMUEsDQorCQkJCSAgUkdfQ1NJ MUFfTDBfRVFfQlcsIDEpOw0KKwkJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTFCX09GU1QsIE1J UElfUlhfQU5BMThfQ1NJMUEsDQorCQkJCSAgUkdfQ1NJMUFfTDFfRVFfSVMsIDEpOw0KKwkJCU1J UElfQklUUyhwbWlwaV9yeCArIENTSTFCX09GU1QsIE1JUElfUlhfQU5BMThfQ1NJMUEsDQorCQkJ CSAgUkdfQ1NJMUFfTDFfRVFfQlcsIDEpOw0KKwkJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTFC X09GU1QsIE1JUElfUlhfQU5BMUNfQ1NJMUEsDQorCQkJCSAgUkdfQ1NJMUFfTDJfRVFfSVMsIDEp Ow0KKwkJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTFCX09GU1QsIE1JUElfUlhfQU5BMUNfQ1NJ MUEsDQorCQkJCSAgUkdfQ1NJMUFfTDJfRVFfQlcsIDEpOw0KKwkJfQ0KKwl9DQorDQorCS8qIEVu ZCBBTkEgRVEgdHVuaW5nICovDQorCXdyaXRlbCgweDkwLCBwbWlwaV9yeF9iYXNlICsgTUlQSV9S WF9BTkE0MF9DU0kwQSk7DQorCU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEyNF9DU0kw QSwNCisJCSAgUkdfQ1NJMEFfUkVTRVJWRSwgMHg0MCk7DQorCWlmIChpc180ZDFjKHBvcnQpKQ0K KwkJTUlQSV9CSVRTKHBtaXBpX3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEyNF9DU0kwQSwN CisJCQkgIFJHX0NTSTBBX1JFU0VSVkUsIDB4NDApOw0KKwlNSVBJX0JJVFMocG1pcGlfcngsIE1J UElfUlhfV1JBUFBFUjgwX0NTSTBBLA0KKwkJICBDU1JfQ1NJX1JTVF9NT0RFLCAwKTsNCisJaWYg KGlzXzRkMWMocG9ydCkpDQorCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBNSVBJ X1JYX1dSQVBQRVI4MF9DU0kwQSwNCisJCQkgIENTUl9DU0lfUlNUX01PREUsIDApOw0KKwkvKiBB TkEgcG93ZXIgb24gKi8NCisJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTAwX0NTSTBB LA0KKwkJICBSR19DU0kwQV9CR19DT1JFX0VOLCAxKTsNCisJaWYgKGlzXzRkMWMocG9ydCkpDQor CQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0K KwkJCSAgUkdfQ1NJMEFfQkdfQ09SRV9FTiwgMSk7DQorCXVzbGVlcF9yYW5nZSgyMCwgNDApOw0K KwlNSVBJX0JJVFMocG1pcGlfcngsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkgIFJHX0NTSTBB X0JHX0xQRl9FTiwgMSk7DQorCWlmIChpc180ZDFjKHBvcnQpKQ0KKwkJTUlQSV9CSVRTKHBtaXBp X3J4ICsgQ1NJMEJfT0ZTVCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0JH X0xQRl9FTiwgMSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19kcGh5X2Rpc2FibGUoc3RydWN0 IG10a19taXBpX2RwaHkgKnByaXYpDQorew0KKwl2b2lkIF9faW9tZW0gKnBtaXBpX3J4ID0gcHJp di0+Y3NpMl9yeFtwcml2LT5wb3J0XTsNCisNCisJLyogRGlzYWJsZSBtaXBpIEJHICovDQorCXN3 aXRjaCAocHJpdi0+cG9ydCkgew0KKwljYXNlIENGR19DU0lfUE9SVF8wQToNCisJCU1JUElfQklU UyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NTSTBBX0JHX0NPUkVf RU4sIDApOw0KKwkJTUlQSV9CSVRTKHBtaXBpX3J4LCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJ CSAgUkdfQ1NJMEFfQkdfTFBGX0VOLCAwKTsNCisJCWJyZWFrOw0KKwljYXNlIENGR19DU0lfUE9S VF8wQjoNCisJCU1JUElfQklUUyhwbWlwaV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMDBf Q1NJMEEsDQorCQkJICBSR19DU0kwQV9CR19DT1JFX0VOLCAwKTsNCisJCU1JUElfQklUUyhwbWlw aV9yeCArIENTSTBCX09GU1QsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9C R19MUEZfRU4sIDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlNSVBJX0JJVFMocG1pcGlf cngsIE1JUElfUlhfQU5BMDBfQ1NJMEEsDQorCQkJICBSR19DU0kwQV9CR19DT1JFX0VOLCAwKTsN CisJCU1JUElfQklUUyhwbWlwaV9yeCwgTUlQSV9SWF9BTkEwMF9DU0kwQSwNCisJCQkgIFJHX0NT STBBX0JHX0xQRl9FTiwgMCk7DQorCQlNSVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBN SVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJCSAgUkdfQ1NJMEFfQkdfQ09SRV9FTiwgMCk7DQorCQlN SVBJX0JJVFMocG1pcGlfcnggKyBDU0kwQl9PRlNULCBNSVBJX1JYX0FOQTAwX0NTSTBBLA0KKwkJ CSAgUkdfQ1NJMEFfQkdfTFBGX0VOLCAwKTsNCisJCWJyZWFrOw0KKwl9DQorfQ0KKw0KK3N0YXRp YyBpbnQgbXRrX21pcGlfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkNCit7DQorCXN0cnVj dCBtdGtfbWlwaV9kcGh5ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQorDQorCW10a19k cGh5X2VuYWJsZShwcml2KTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRr X21pcGlfcGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpDQorew0KKwlzdHJ1Y3QgbXRrX21p cGlfZHBoeSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KKw0KKwltdGtfZHBoeV9kaXNh YmxlKHByaXYpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdGtfcGh5X3Nl dF9tb2RlKHN0cnVjdCBwaHkgKnBoeSwNCisJCQkgICAgZW51bSBwaHlfbW9kZSBtb2RlLCBpbnQg c3VibW9kZSkNCit7DQorCXN0cnVjdCBtdGtfbWlwaV9kcGh5ICpwcml2ID0gcGh5X2dldF9kcnZk YXRhKHBoeSk7DQorDQorCXByaXYtPnBvcnQgPSBzdWJtb2RlOw0KKwlkZXZfZGJnKHByaXYtPmRl diwgInBvcnQgJWRcbiIsIHByaXYtPnBvcnQpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIG10a19kcGh5X29wcyA9IHsNCisJLnBvd2VyX29uCT0g bXRrX21pcGlfcGh5X3Bvd2VyX29uLA0KKwkucG93ZXJfb2ZmCT0gbXRrX21pcGlfcGh5X3Bvd2Vy X29mZiwNCisJLnNldF9tb2RlCT0gbXRrX3BoeV9zZXRfbW9kZSwNCisJLm93bmVyCQk9IFRISVNf TU9EVUxFLA0KK307DQorDQorc3RhdGljIGludCBtaXBpX2RwaHlfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 DQorCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KKwlzdHJ1Y3QgbXRrX21pcGlfZHBoeSAqcHJpdjsN CisJc3RydWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOw0KKwlzdHJ1Y3QgcGh5ICpwaHk7 DQorDQorCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVM KTsNCisJaWYgKCFwcml2KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWRldl9zZXRfZHJ2ZGF0 YShkZXYsIHByaXYpOw0KKwlwcml2LT5kZXYgPSBkZXY7DQorDQorCXJlcyA9IHBsYXRmb3JtX2dl dF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQorCXByaXYtPnJ4ID0gZGV2bV9p b3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCisJaWYgKElTX0VSUihwcml2LT5yeCkpDQorCQly ZXR1cm4gUFRSX0VSUihwcml2LT5yeCk7DQorDQorCXByaXYtPmNzaTJfcnhbQ0ZHX0NTSV9QT1JU XzBdICA9IHByaXYtPnJ4Ow0KKwlwcml2LT5jc2kyX3J4W0NGR19DU0lfUE9SVF8wQV0gPSBwcml2 LT5yeCArIENTSV9QT1JUXzBBX0FERFJfT0ZTVDsNCisJcHJpdi0+Y3NpMl9yeFtDRkdfQ1NJX1BP UlRfMEJdID0gcHJpdi0+cnggKyBDU0lfUE9SVF8wQl9BRERSX09GU1Q7DQorCXByaXYtPmNzaTJf cnhbQ0ZHX0NTSV9QT1JUXzFdICA9IHByaXYtPnJ4ICsgQ1NJX1BPUlRfMV9BRERSX09GU1Q7DQor CXByaXYtPmNzaTJfcnhbQ0ZHX0NTSV9QT1JUXzJdICA9IHByaXYtPnJ4ICsgQ1NJX1BPUlRfMl9B RERSX09GU1Q7DQorDQorCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsICZtdGtfZHBo eV9vcHMpOw0KKwlpZiAoSVNfRVJSKHBoeSkpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGNyZWF0ZSBwaHlcbiIpOw0KKwkJcmV0dXJuIFBUUl9FUlIocGh5KTsNCisJfQ0KKwlwaHlfc2V0 X2RydmRhdGEocGh5LCBwcml2KTsNCisNCisJcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJv dmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KKyNpZmRlZiBDT05GSUdfT0YNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBtdGtfbWlwaV9kcGh5X29mX21hdGNoW10gPSB7DQorCXsuY29tcGF0aWJsZSA9ICJtZWRp YXRlayxtdDgxODMtbWlwaV9kcGh5In0sDQorCXt9LA0KK307DQorTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgbXRrX21pcGlfZHBoeV9vZl9tYXRjaCk7DQorI2VuZGlmDQorDQorc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbWlwaV9kcGh5X3BkcnYgPSB7DQorCS5wcm9iZQk9IG1pcGlfZHBo eV9wcm9iZSwNCisJLmRyaXZlcgk9IHsNCisJCS5uYW1lCT0gIm1pcGlfZHBoeSIsDQorCQkub2Zf bWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIobXRrX21pcGlfZHBoeV9vZl9tYXRjaCksDQorCX0s DQorfTsNCisNCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1pcGlfZHBoeV9wZHJ2KTsNCisNCitN T0RVTEVfREVTQ1JJUFRJT04oIk1USyBtaXBpIGRwaHkgZHJpdmVyIik7DQorTU9EVUxFX0FVVEhP UigiTG91aXMgS3VvIDxsb3Vpcy5rdW9AbWVkaWF0ZWsuY29tPiIpOw0KK01PRFVMRV9MSUNFTlNF KCJHUEwgdjIiKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3Av c2VuaW5mL210a19zZW5pbmZfcmVnLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3Av c2VuaW5mL210a19zZW5pbmZfcmVnLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMDAuLjFkMTE0N2IxNmI5Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtfc2VuaW5mX3JlZy5oDQpAQCAtMCwwICsxLDE0 OTEgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKw0KKyNpZm5k ZWYgX19TRU5JTkZfUkVHX0hfXw0KKyNkZWZpbmUgX19TRU5JTkZfUkVHX0hfXw0KKw0KKyNkZWZp bmUgQklUKG5yKSAoMVVMIDw8IChucikpDQorDQorI2RlZmluZSBTRU5JTkZfVE9QX0NUUkwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwDQorI2RlZmluZSBTRU5J TkZfVE9QX0NUUkxfU0VOSU5GX1BDTEtfU0VMX1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9UT1Bf Q1RSTF9TRU5JTkZfUENMS19TRUxfTUFTSyAgQklUKDgpDQorI2RlZmluZSBTRU5JTkZfVE9QX0NU UkxfU0VOSU5GMl9QQ0xLX1NFTF9TSElGVCA5DQorI2RlZmluZSBTRU5JTkZfVE9QX0NUUkxfU0VO SU5GMl9QQ0xLX1NFTF9NQVNLICBCSVQoOSkNCisjZGVmaW5lIFNFTklORl9UT1BfQ1RSTF9TRU5J TkZfUENMS19FTl9TSElGVCAgMTANCisjZGVmaW5lIFNFTklORl9UT1BfQ1RSTF9TRU5JTkZfUENM S19FTl9NQVNLICAgQklUKDEwKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DVFJMX1NFTklORjJfUENM S19FTl9TSElGVCAgMTENCisjZGVmaW5lIFNFTklORl9UT1BfQ1RSTF9TRU5JTkYyX1BDTEtfRU5f TUFTSyAgIEJJVCgxMSkNCisjZGVmaW5lIFNFTklORl9UT1BfQ1RSTF9TRU5JTkZfVE9QX04zRF9T V19SU1RfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9UT1BfQ1RSTF9TRU5JTkZfVE9QX04zRF9T V19SU1RfTUFTSyBCSVQoMTYpDQorI2RlZmluZSBTRU5JTkZfVE9QX0NUUkxfU0VOSU5GX1RPUF9E QkdfU0VMX1NISUZUIDI4DQorI2RlZmluZSBTRU5JTkZfVE9QX0NUUkxfU0VOSU5GX1RPUF9EQkdf U0VMX01BU0sgKDB4NyA8PCAyOCkNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQNCisjZGVmaW5lIFNFTklORl9UT1Bf Q01PREVMX1BBUl9TRU5JTkZfRU5fU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxf UEFSX1NFTklORl9FTl9NQVNLICBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BB Ul9TRU5JTkYyX0VOX1NISUZUIDENCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5J TkYyX0VOX01BU0sgIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxfUEFSX1NFTklO RjNfRU5fU0hJRlQgMg0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxfUEFSX1NFTklORjNfRU5f TUFTSyAgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfVE9QX0NNT0RFTF9QQVJfU0VOSU5GNF9FTl9T SElGVCAzDQorI2RlZmluZSBTRU5JTkZfVE9QX0NNT0RFTF9QQVJfU0VOSU5GNF9FTl9NQVNLICBC SVQoMykNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5JTkZfRk9STUFUX1NISUZU IDQNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5JTkZfRk9STUFUX01BU0sgKDB4 ZiA8PCA0KQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxfUEFSX1NFTklORjJfRk9STUFUX1NI SUZUIDgNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5JTkYyX0ZPUk1BVF9NQVNL ICgweGYgPDwgOCkNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5JTkYzX0ZPUk1B VF9TSElGVCAxMg0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxfUEFSX1NFTklORjNfRk9STUFU X01BU0sgKDB4ZiA8PCAxMikNCisjZGVmaW5lIFNFTklORl9UT1BfQ01PREVMX1BBUl9TRU5JTkY0 X0ZPUk1BVF9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DTU9ERUxfUEFSX1NFTklORjRf Rk9STUFUX01BU0sgKDB4ZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9UT1BfTVVYX0NUUkwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgNCisjZGVmaW5lIFNFTklORl9U T1BfTVVYX0NUUkxfU0VOSU5GX01VWF9TUkNfU0VMX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9U T1BfTVVYX0NUUkxfU0VOSU5GX01VWF9TUkNfU0VMX01BU0sgKDB4ZiA8PCAwKQ0KKyNkZWZpbmUg U0VOSU5GX1RPUF9NVVhfQ1RSTF9TRU5JTkYyX01VWF9TUkNfU0VMX1NISUZUIDQNCisjZGVmaW5l IFNFTklORl9UT1BfTVVYX0NUUkxfU0VOSU5GMl9NVVhfU1JDX1NFTF9NQVNLICgweGYgPDwgNCkN CisjZGVmaW5lIFNFTklORl9UT1BfTVVYX0NUUkxfU0VOSU5GM19NVVhfU1JDX1NFTF9TSElGVCA4 DQorI2RlZmluZSBTRU5JTkZfVE9QX01VWF9DVFJMX1NFTklORjNfTVVYX1NSQ19TRUxfTUFTSyAo MHhmIDw8IDgpDQorI2RlZmluZSBTRU5JTkZfVE9QX01VWF9DVFJMX1NFTklORjRfTVVYX1NSQ19T RUxfU0hJRlQgMTINCisjZGVmaW5lIFNFTklORl9UT1BfTVVYX0NUUkxfU0VOSU5GNF9NVVhfU1JD X1NFTF9NQVNLICgweGYgPDwgMTIpDQorI2RlZmluZSBTRU5JTkZfVE9QX01VWF9DVFJMX1NFTklO RjVfTVVYX1NSQ19TRUxfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9UT1BfTVVYX0NUUkxfU0VO SU5GNV9NVVhfU1JDX1NFTF9NQVNLICgweGYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfVE9QX01V WF9DVFJMX1NFTklORjZfTVVYX1NSQ19TRUxfU0hJRlQgMjANCisjZGVmaW5lIFNFTklORl9UT1Bf TVVYX0NUUkxfU0VOSU5GNl9NVVhfU1JDX1NFTF9NQVNLICgweGYgPDwgMjApDQorI2RlZmluZSBT RU5JTkZfVE9QX01VWF9DVFJMX1NFTklORjdfTVVYX1NSQ19TRUxfU0hJRlQgMjQNCisjZGVmaW5l IFNFTklORl9UT1BfTVVYX0NUUkxfU0VOSU5GN19NVVhfU1JDX1NFTF9NQVNLICgweGYgPDwgMjQp DQorI2RlZmluZSBTRU5JTkZfVE9QX01VWF9DVFJMX1NFTklORjhfTVVYX1NSQ19TRUxfU0hJRlQg MjgNCisjZGVmaW5lIFNFTklORl9UT1BfTVVYX0NUUkxfU0VOSU5GOF9NVVhfU1JDX1NFTF9NQVNL ICgweGYgPDwgMjgpDQorI2RlZmluZSBTRU5JTkZfVE9QX0NBTV9NVVhfQ1RSTCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDEwDQorI2RlZmluZSBTRU5JTkZfVE9QX0NBTV9NVVhf Q1RSTF9TRU5JTkZfQ0FNMF9NVVhfU1JDX1NFTF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfVE9Q X0NBTV9NVVhfQ1RSTF9TRU5JTkZfQ0FNMF9NVVhfU1JDX1NFTF9NQVNLICgweGYgPDwgMCkNCisj ZGVmaW5lIFNFTklORl9UT1BfQ0FNX01VWF9DVFJMX1NFTklORl9DQU0xX01VWF9TUkNfU0VMX1NI SUZUIDQNCisjZGVmaW5lIFNFTklORl9UT1BfQ0FNX01VWF9DVFJMX1NFTklORl9DQU0xX01VWF9T UkNfU0VMX01BU0sgKDB4ZiA8PCA0KQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DQU1fTVVYX0NUUkxf U0VOSU5GX0NBTTJfTVVYX1NSQ19TRUxfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DQU1f TVVYX0NUUkxfU0VOSU5GX0NBTTJfTVVYX1NSQ19TRUxfTUFTSyAoMHhmIDw8IDgpDQorI2RlZmlu ZSBTRU5JTkZfVE9QX0NBTV9NVVhfQ1RSTF9TRU5JTkZfQ0FNM19NVVhfU1JDX1NFTF9TSElGVCAx Mg0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DQU1fTVVYX0NUUkxfU0VOSU5GX0NBTTNfTVVYX1NSQ19T RUxfTUFTSyAoMHhmIDw8IDEyKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DQU1fTVVYX0NUUkxfU0VO SU5GX0NBTTRfTVVYX1NSQ19TRUxfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9UT1BfQ0FNX01V WF9DVFJMX1NFTklORl9DQU00X01VWF9TUkNfU0VMX01BU0sgKDB4ZiA8PCAxNikNCisjZGVmaW5l IFNFTklORl9UT1BfQ0FNX01VWF9DVFJMX1NFTklORl9DQU01X01VWF9TUkNfU0VMX1NISUZUIDIw DQorI2RlZmluZSBTRU5JTkZfVE9QX0NBTV9NVVhfQ1RSTF9TRU5JTkZfQ0FNNV9NVVhfU1JDX1NF TF9NQVNLICgweGYgPDwgMjApDQorI2RlZmluZSBTRU5JTkZfVE9QX0NBTV9NVVhfQ1RSTF9TRU5J TkZfQ0FNNl9NVVhfU1JDX1NFTF9TSElGVCAyNA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9DQU1fTVVY X0NUUkxfU0VOSU5GX0NBTTZfTVVYX1NSQ19TRUxfTUFTSyAoMHhmIDw8IDI0KQ0KKyNkZWZpbmUg U0VOSU5GX1RPUF9DQU1fTVVYX0NUUkxfU0VOSU5GX0NBTTdfTVVYX1NSQ19TRUxfU0hJRlQgMjgN CisjZGVmaW5lIFNFTklORl9UT1BfQ0FNX01VWF9DVFJMX1NFTklORl9DQU03X01VWF9TUkNfU0VM X01BU0sgKDB4ZiA8PCAyOCkNCisjZGVmaW5lIFNFTklORl9UT1BfTjNEX0FfQ1RMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTQNCisjZGVmaW5lIFNFTklORl9UT1BfTjNE X0FfQ1RMX1NFTklORl9OM0RfUzFfU0VOX1BDTEtfU1JDX1NFTF9BX1NISUZUIDANCisjZGVmaW5l IFNFTklORl9UT1BfTjNEX0FfQ1RMX1NFTklORl9OM0RfUzFfU0VOX1BDTEtfU1JDX1NFTF9BX01B U0sgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9OM0RfQV9DVExfU0VOSU5GX04zRF9T MV9TRU5fVlNZTkNfU1JDX1NFTF9BX1NISUZUIDQNCisjZGVmaW5lIFNFTklORl9UT1BfTjNEX0Ff Q1RMX1NFTklORl9OM0RfUzFfU0VOX1ZTWU5DX1NSQ19TRUxfQV9NQVNLICgweDcgPDwgNCkNCisj ZGVmaW5lIFNFTklORl9UT1BfTjNEX0FfQ1RMX1NFTklORl9OM0RfUzJfU0VOX1BDTEtfU1JDX1NF TF9BX1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9UT1BfTjNEX0FfQ1RMX1NFTklORl9OM0RfUzJf U0VOX1BDTEtfU1JDX1NFTF9BX01BU0sgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9O M0RfQV9DVExfU0VOSU5GX04zRF9TMl9TRU5fVlNZTkNfU1JDX1NFTF9BX1NISUZUIDEyDQorI2Rl ZmluZSBTRU5JTkZfVE9QX04zRF9BX0NUTF9TRU5JTkZfTjNEX1MyX1NFTl9WU1lOQ19TUkNfU0VM X0FfTUFTSyAoMHg3IDw8IDEyKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9OM0RfQl9DVEwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxOA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9O M0RfQl9DVExfU0VOSU5GX04zRF9TMV9TRU5fUENMS19TUkNfU0VMX0JfU0hJRlQgMA0KKyNkZWZp bmUgU0VOSU5GX1RPUF9OM0RfQl9DVExfU0VOSU5GX04zRF9TMV9TRU5fUENMS19TUkNfU0VMX0Jf TUFTSyAoMHg3IDw8IDApDQorI2RlZmluZSBTRU5JTkZfVE9QX04zRF9CX0NUTF9TRU5JTkZfTjNE X1MxX1NFTl9WU1lOQ19TUkNfU0VMX0JfU0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9OM0Rf Ql9DVExfU0VOSU5GX04zRF9TMV9TRU5fVlNZTkNfU1JDX1NFTF9CX01BU0sgKDB4NyA8PCA0KQ0K KyNkZWZpbmUgU0VOSU5GX1RPUF9OM0RfQl9DVExfU0VOSU5GX04zRF9TMl9TRU5fUENMS19TUkNf U0VMX0JfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9OM0RfQl9DVExfU0VOSU5GX04zRF9T Ml9TRU5fUENMS19TUkNfU0VMX0JfTUFTSyAoMHg3IDw8IDgpDQorI2RlZmluZSBTRU5JTkZfVE9Q X04zRF9CX0NUTF9TRU5JTkZfTjNEX1MyX1NFTl9WU1lOQ19TUkNfU0VMX0JfU0hJRlQgMTINCisj ZGVmaW5lIFNFTklORl9UT1BfTjNEX0JfQ1RMX1NFTklORl9OM0RfUzJfU0VOX1ZTWU5DX1NSQ19T RUxfQl9NQVNLICgweDcgPDwgMTIpDQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RM X0NTSTAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFDDQorI2RlZmluZSBTRU5JTkZfVE9Q X1BIWV9TRU5JTkZfQ1RMX0NTSTBfRFBIWV9NT0RFX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9U T1BfUEhZX1NFTklORl9DVExfQ1NJMF9EUEhZX01PREVfTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNF TklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMF9DUEhZX01PREVfU0hJRlQgNA0KKyNkZWZpbmUg U0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kwX0NQSFlfTU9ERV9NQVNLICgweDMgPDwgNCkN CisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMF9DS19TRUxfMV9TSElGVCA4 DQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTBfQ0tfU0VMXzFfTUFTSyAo MHg3IDw8IDgpDQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTBfQ0tfU0VM XzJfU0hJRlQgMTINCisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMF9DS19T RUxfMl9NQVNLICgweDMgPDwgMTIpDQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RM X0NTSTBfUEhZX1NFTklORl9MQU5FX01VWF9DU0kwX0VOX1NISUZUIDMxDQorI2RlZmluZSBTRU5J TkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTBfUEhZX1NFTklORl9MQU5FX01VWF9DU0kwX0VOX01B U0sgXA0KK0JJVCgzMSkNCisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMSAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwMjANCisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NF TklORl9DVExfQ1NJMV9EUEhZX01PREVfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlf U0VOSU5GX0NUTF9DU0kxX0RQSFlfTU9ERV9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX1RP UF9QSFlfU0VOSU5GX0NUTF9DU0kxX0NQSFlfTU9ERV9TSElGVCA0DQorI2RlZmluZSBTRU5JTkZf VE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTFfQ1BIWV9NT0RFX01BU0sgKDB4MyA8PCA0KQ0KKyNkZWZp bmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kxX0NLX1NFTF8xX1NISUZUIDgNCisjZGVm aW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMV9DS19TRUxfMV9NQVNLICgweDcgPDwg OCkNCisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMV9DS19TRUxfMl9TSElG VCAxMg0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kxX0NLX1NFTF8yX01B U0sgKDB4MyA8PCAxMikNCisjZGVmaW5lIFNFTklORl9UT1BfUEhZX1NFTklORl9DVExfQ1NJMV9Q SFlfU0VOSU5GX0xBTkVfTVVYX0NTSTFfRU5fU0hJRlQgMzENCisjZGVmaW5lIFNFTklORl9UT1Bf UEhZX1NFTklORl9DVExfQ1NJMV9QSFlfU0VOSU5GX0xBTkVfTVVYX0NTSTFfRU5fTUFTSyBcDQor QklUKDMxKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kyICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDAyNA0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NU TF9DU0kyX0RQSFlfTU9ERV9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZf Q1RMX0NTSTJfRFBIWV9NT0RFX01BU0sgQklUKDApDQorI2RlZmluZSBTRU5JTkZfVE9QX1BIWV9T RU5JTkZfQ1RMX0NTSTJfQ1BIWV9NT0RFX1NISUZUIDQNCisjZGVmaW5lIFNFTklORl9UT1BfUEhZ X1NFTklORl9DVExfQ1NJMl9DUEhZX01PREVfTUFTSyAoMHgzIDw8IDQpDQorI2RlZmluZSBTRU5J TkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTJfQ0tfU0VMXzFfU0hJRlQgOA0KKyNkZWZpbmUgU0VO SU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kyX0NLX1NFTF8xX01BU0sgKDB4NyA8PCA4KQ0KKyNk ZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kyX0NLX1NFTF8yX1NISUZUIDEyDQor I2RlZmluZSBTRU5JTkZfVE9QX1BIWV9TRU5JTkZfQ1RMX0NTSTJfQ0tfU0VMXzJfTUFTSyAoMHgz IDw8IDEyKQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VOSU5GX0NUTF9DU0kyX1BIWV9TRU5J TkZfTEFORV9NVVhfQ1NJMl9FTl9TSElGVCAzMQ0KKyNkZWZpbmUgU0VOSU5GX1RPUF9QSFlfU0VO SU5GX0NUTF9DU0kyX1BIWV9TRU5JTkZfTEFORV9NVVhfQ1NJMl9FTl9NQVNLIFwNCitCSVQoMzEp DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMTAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX01PREVfU0hJRlQgICAg ICAgICAgICAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX01PREVfTUFTSyAgICAgICAgICAg ICAoMHgzIDw8IDApDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX0kyQzFfRU5fU0hJRlQgICAg ICAgICAyDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX0kyQzFfRU5fTUFTSyAgICAgICAgICBC SVQoMikNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfSTJDMl9FTl9TSElGVCAgICAgICAgIDMN CisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfSTJDMl9FTl9NQVNLICAgICAgICAgIEJJVCgzKQ0K KyNkZWZpbmUgU0VOSU5GX04zRF9BX0NUTF9JMkMxX0lOVF9FTl9TSElGVCAgICAgNA0KKyNkZWZp bmUgU0VOSU5GX04zRF9BX0NUTF9JMkMxX0lOVF9FTl9NQVNLICAgICAgQklUKDQpDQorI2RlZmlu ZSBTRU5JTkZfTjNEX0FfQ1RMX0kyQzJfSU5UX0VOX1NISUZUICAgICA1DQorI2RlZmluZSBTRU5J TkZfTjNEX0FfQ1RMX0kyQzJfSU5UX0VOX01BU0sgICAgICBCSVQoNSkNCisjZGVmaW5lIFNFTklO Rl9OM0RfQV9DVExfTjNEX0VOX1NISUZUICAgICAgICAgIDYNCisjZGVmaW5lIFNFTklORl9OM0Rf QV9DVExfTjNEX0VOX01BU0sgICAgICAgICAgIEJJVCg2KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9B X0NUTF9XMUNMUl9TSElGVCAgICAgICAgICAgNw0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NUTF9X MUNMUl9NQVNLICAgICAgICAgICAgQklUKDcpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX0RJ RkZfRU5fU0hJRlQgICAgICAgICA4DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX0RJRkZfRU5f TUFTSyAgICAgICAgICBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfRERCR19TRUxf U0hJRlQgICAgICAgIDkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfRERCR19TRUxfTUFTSyAg ICAgICAgICgweDcgPDwgOSkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfTU9ERTFfREJHX1NI SUZUICAgICAgIDEyDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX01PREUxX0RCR19NQVNLICAg ICAgICBCSVQoMTIpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX1NFTjFfVElNX0VOX1NISUZU ICAgICAxNg0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NUTF9TRU4xX1RJTV9FTl9NQVNLICAgICAg QklUKDE2KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NUTF9TRU4yX1RJTV9FTl9TSElGVCAgICAg MTcNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfU0VOMl9USU1fRU5fTUFTSyAgICAgIEJJVCgx NykNCisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfU0VOMV9PVl9WU19JTlRfRU5fU0hJRlQgMTgN CisjZGVmaW5lIFNFTklORl9OM0RfQV9DVExfU0VOMV9PVl9WU19JTlRfRU5fTUFTSyBCSVQoMTgp DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX1NFTjJfT1ZfVlNfSU5UX0VOX1NISUZUIDE5DQor I2RlZmluZSBTRU5JTkZfTjNEX0FfQ1RMX1NFTjJfT1ZfVlNfSU5UX0VOX01BU0sgQklUKDE5KQ0K KyNkZWZpbmUgU0VOSU5GX04zRF9BX0NUTF9IV19TWU5DX01PREVfU0hJRlQgICAgMjANCisjZGVm aW5lIFNFTklORl9OM0RfQV9DVExfSFdfU1lOQ19NT0RFX01BU0sgICAgIEJJVCgyMCkNCisjZGVm aW5lIFNFTklORl9OM0RfQV9DVExfVkFMSURfVEdfRU5fU0hJRlQgICAgIDIxDQorI2RlZmluZSBT RU5JTkZfTjNEX0FfQ1RMX1ZBTElEX1RHX0VOX01BU0sgICAgICBCSVQoMjEpDQorI2RlZmluZSBT RU5JTkZfTjNEX0FfQ1RMX1NZTkNfUElOX0FfRU5fU0hJRlQgICAyMg0KKyNkZWZpbmUgU0VOSU5G X04zRF9BX0NUTF9TWU5DX1BJTl9BX0VOX01BU0sgICAgQklUKDIyKQ0KKyNkZWZpbmUgU0VOSU5G X04zRF9BX0NUTF9TWU5DX1BJTl9BX1BPTEFSSVRZX1NISUZUIDIzDQorI2RlZmluZSBTRU5JTkZf TjNEX0FfQ1RMX1NZTkNfUElOX0FfUE9MQVJJVFlfTUFTSyBCSVQoMjMpDQorI2RlZmluZSBTRU5J TkZfTjNEX0FfQ1RMX1NZTkNfUElOX0JfRU5fU0hJRlQgICAyNA0KKyNkZWZpbmUgU0VOSU5GX04z RF9BX0NUTF9TWU5DX1BJTl9CX0VOX01BU0sgICAgQklUKDI0KQ0KKyNkZWZpbmUgU0VOSU5GX04z RF9BX0NUTF9TWU5DX1BJTl9CX1BPTEFSSVRZX1NISUZUIDI1DQorI2RlZmluZSBTRU5JTkZfTjNE X0FfQ1RMX1NZTkNfUElOX0JfUE9MQVJJVFlfTUFTSyBCSVQoMjUpDQorI2RlZmluZSBTRU5JTkZf TjNEX0FfUE9TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTA0DQor I2RlZmluZSBTRU5JTkZfTjNEX0FfUE9TX04zRF9QT1NfU0hJRlQgICAgICAgICAwDQorI2RlZmlu ZSBTRU5JTkZfTjNEX0FfUE9TX04zRF9QT1NfTUFTSyAgICAgICAgICAoMHhmZmZmZmZmZiA8PCAw KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1RSSUcgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDEwOA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1RSSUdfSTJDQV9UUklHX1NI SUZUICAgICAgMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1RSSUdfSTJDQV9UUklHX01BU0sgICAg ICAgQklUKDApDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVFJJR19JMkNCX1RSSUdfU0hJRlQgICAg ICAxDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVFJJR19JMkNCX1RSSUdfTUFTSyAgICAgICBCSVQo MSkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAxMEMNCisjZGVmaW5lIFNFTklORl9OM0RfQV9JTlRfSTJDMV9JTlRfU0hJ RlQgICAgICAgIDANCisjZGVmaW5lIFNFTklORl9OM0RfQV9JTlRfSTJDMV9JTlRfTUFTSyAgICAg ICAgIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0lOVF9JMkMyX0lOVF9TSElGVCAgICAg ICAgMQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0lOVF9JMkMyX0lOVF9NQVNLICAgICAgICAgQklU KDEpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfSU5UX0RJRkZfSU5UX1NISUZUICAgICAgICAyDQor I2RlZmluZSBTRU5JTkZfTjNEX0FfSU5UX0RJRkZfSU5UX01BU0sgICAgICAgICBCSVQoMikNCisj ZGVmaW5lIFNFTklORl9OM0RfQV9JTlRfU0VOMV9PVl9WU19JTlRfU0hJRlQgIDQNCisjZGVmaW5l IFNFTklORl9OM0RfQV9JTlRfU0VOMV9PVl9WU19JTlRfTUFTSyAgIEJJVCg0KQ0KKyNkZWZpbmUg U0VOSU5GX04zRF9BX0lOVF9TRU4yX09WX1ZTX0lOVF9TSElGVCAgNQ0KKyNkZWZpbmUgU0VOSU5G X04zRF9BX0lOVF9TRU4yX09WX1ZTX0lOVF9NQVNLICAgQklUKDUpDQorI2RlZmluZSBTRU5JTkZf TjNEX0FfQ05UMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTEwDQor I2RlZmluZSBTRU5JTkZfTjNEX0FfQ05UMF9OM0RfQ05UMF9TSElGVCAgICAgICAwDQorI2RlZmlu ZSBTRU5JTkZfTjNEX0FfQ05UMF9OM0RfQ05UMF9NQVNLICAgICAgICAoMHhmZmZmZmZmZiA8PCAw KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NOVDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDExNA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NOVDFfTjNEX0NOVDFfU0hJ RlQgICAgICAgMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0NOVDFfTjNEX0NOVDFfTUFTSyAgICAg ICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9EQkcgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMTgNCisjZGVmaW5lIFNFTklORl9OM0Rf QV9EQkdfTjNEX0RCR19TSElGVCAgICAgICAgIDANCisjZGVmaW5lIFNFTklORl9OM0RfQV9EQkdf TjNEX0RCR19NQVNLICAgICAgICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZf TjNEX0FfRElGRl9USFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTFDDQor I2RlZmluZSBTRU5JTkZfTjNEX0FfRElGRl9USFJfTjNEX0RJRkZfVEhSX1NISUZUIDANCisjZGVm aW5lIFNFTklORl9OM0RfQV9ESUZGX1RIUl9OM0RfRElGRl9USFJfTUFTSyAoMHhmZmZmZmZmZiA8 PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0RJRkZfQ05UICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEyMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX0RJRkZfQ05UX04zRF9E SUZGX0NOVF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfRElGRl9DTlRfTjNEX0RJRkZf Q05UX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9EQkdfMSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMjQNCisjZGVmaW5lIFNFTklO Rl9OM0RfQV9EQkdfMV9OM0RfREJHXzFfU0hJRlQgICAgIDANCisjZGVmaW5lIFNFTklORl9OM0Rf QV9EQkdfMV9OM0RfREJHXzFfTUFTSyAgICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBT RU5JTkZfTjNEX0FfVkFMSURfVEdfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MTI4DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVkFMSURfVEdfQ05UX04zRF9WQUxJRF9UR19DTlRf U0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1ZBTElEX1RHX0NOVF9OM0RfVkFMSURfVEdf Q05UX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0Ff UEVSSU9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMkMNCisjZGVmaW5lIFNFTklO Rl9OM0RfQV9TWU5DX0FfUEVSSU9EX04zRF9TWU5DX0FfUEVSSU9EX1NISUZUIDANCisjZGVmaW5l IFNFTklORl9OM0RfQV9TWU5DX0FfUEVSSU9EX04zRF9TWU5DX0FfUEVSSU9EX01BU0sgKDB4ZmZm ZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0JfUEVSSU9EICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAxMzANCisjZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0Jf UEVSSU9EX04zRF9TWU5DX0JfUEVSSU9EX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9OM0RfQV9T WU5DX0JfUEVSSU9EX04zRF9TWU5DX0JfUEVSSU9EX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisj ZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0FfUFVMU0VfTEVOICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAxMzQNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0FfUFVMU0VfTEVOX04zRF9T WU5DX0FfUFVMU0VfTEVOX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9OM0RfQV9TWU5DX0FfUFVM U0VfTEVOX04zRF9TWU5DX0FfUFVMU0VfTEVOX01BU0sgXA0KKygweGZmZmZmZmZmIDw8IDApDQor I2RlZmluZSBTRU5JTkZfTjNEX0FfU1lOQ19CX1BVTFNFX0xFTiAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMTM4DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1lOQ19CX1BVTFNFX0xFTl9OM0Rf U1lOQ19CX1BVTFNFX0xFTl9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1lOQ19CX1BV TFNFX0xFTl9OM0RfU1lOQ19CX1BVTFNFX0xFTl9NQVNLIFwNCisoMHhmZmZmZmZmZiA8PCAwKQ0K KyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDEzQw0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfVlMxX1NVQl9DTlRf U0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfVlMxX1NVQl9DTlRfTUFTSyAg KDB4M2YgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TVUJfQ05UX1ZTMV9TVUJfQ05UX0VO X1NISUZUIDYNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TVUJfQ05UX1ZTMV9TVUJfQ05UX0VOX01B U0sgQklUKDYpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1VCX0NOVF9TWU5DX1BJTl9BX1JFU0VU X1NFTF9TSElGVCA3DQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1VCX0NOVF9TWU5DX1BJTl9BX1JF U0VUX1NFTF9NQVNLIEJJVCg3KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfU1lOQ19Q SU5fQl9SRVNFVF9TRUxfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfU1lO Q19QSU5fQl9SRVNFVF9TRUxfTUFTSyBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9TVUJf Q05UX1NZTkNfUElOX0FfUkVTRVRfU0VMX0VOX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9OM0Rf QV9TVUJfQ05UX1NZTkNfUElOX0FfUkVTRVRfU0VMX0VOX01BU0sgQklUKDkpDQorI2RlZmluZSBT RU5JTkZfTjNEX0FfU1VCX0NOVF9TWU5DX1BJTl9CX1JFU0VUX1NFTF9FTl9TSElGVCAxMA0KKyNk ZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfU1lOQ19QSU5fQl9SRVNFVF9TRUxfRU5fTUFTSyBC SVQoMTApDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1VCX0NOVF9WUzJfU1VCX0NOVF9TSElGVCAx Ng0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfVlMyX1NVQl9DTlRfTUFTSyAgKDB4M2Yg PDwgMTYpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfU1VCX0NOVF9WUzJfU1VCX0NOVF9FTl9TSElG VCAyMg0KKyNkZWZpbmUgU0VOSU5GX04zRF9BX1NVQl9DTlRfVlMyX1NVQl9DTlRfRU5fTUFTSyBC SVQoMjIpDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVlNZTkNfQ05UICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMTQwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVlNZTkNfQ05UX04z RF9WU1lOQ18xX0NOVF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0FfVlNZTkNfQ05UX04z RF9WU1lOQ18xX0NOVF9NQVNLICgweGZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQV9W U1lOQ19DTlRfTjNEX1ZTWU5DXzJfQ05UX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZfTjNEX0Ff VlNZTkNfQ05UX04zRF9WU1lOQ18yX0NOVF9NQVNLICgweGZmZmYgPDwgMTYpDQorI2RlZmluZSBT RU5JTkZfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAy MDANCisjZGVmaW5lIFNFTklORl9DVFJMX1NFTklORl9FTl9TSElGVCAgICAgICAgICAgMA0KKyNk ZWZpbmUgU0VOSU5GX0NUUkxfU0VOSU5GX0VOX01BU0sgICAgICAgICAgICBCSVQoMCkNCisjZGVm aW5lIFNFTklORl9DVFJMX05DU0kyX1NXX1JTVF9TSElGVCAgICAgICAgMQ0KKyNkZWZpbmUgU0VO SU5GX0NUUkxfTkNTSTJfU1dfUlNUX01BU0sgICAgICAgICBCSVQoMSkNCisjZGVmaW5lIFNFTklO Rl9DVFJMX09DU0kyX1NXX1JTVF9TSElGVCAgICAgICAgMg0KKyNkZWZpbmUgU0VOSU5GX0NUUkxf T0NTSTJfU1dfUlNUX01BU0sgICAgICAgICBCSVQoMikNCisjZGVmaW5lIFNFTklORl9DVFJMX0ND SVJfU1dfUlNUX1NISUZUICAgICAgICAgMw0KKyNkZWZpbmUgU0VOSU5GX0NUUkxfQ0NJUl9TV19S U1RfTUFTSyAgICAgICAgICBCSVQoMykNCisjZGVmaW5lIFNFTklORl9DVFJMX0NLR0VOX1NXX1JT VF9TSElGVCAgICAgICAgNA0KKyNkZWZpbmUgU0VOSU5GX0NUUkxfQ0tHRU5fU1dfUlNUX01BU0sg ICAgICAgICBCSVQoNCkNCisjZGVmaW5lIFNFTklORl9DVFJMX1RFU1RfTU9ERUxfU1dfUlNUX1NI SUZUICAgNQ0KKyNkZWZpbmUgU0VOSU5GX0NUUkxfVEVTVF9NT0RFTF9TV19SU1RfTUFTSyAgICBC SVQoNSkNCisjZGVmaW5lIFNFTklORl9DVFJMX1NDQU1fU1dfUlNUX1NISUZUICAgICAgICAgNg0K KyNkZWZpbmUgU0VOSU5GX0NUUkxfU0NBTV9TV19SU1RfTUFTSyAgICAgICAgICBCSVQoNikNCisj ZGVmaW5lIFNFTklORl9DVFJMX0NTSTJfU1dfUlNUX1NISUZUICAgICAgICAgNw0KKyNkZWZpbmUg U0VOSU5GX0NUUkxfQ1NJMl9TV19SU1RfTUFTSyAgICAgICAgICBCSVQoNykNCisjZGVmaW5lIFNF TklORl9DVFJMX0NTSTNfU1dfUlNUX1NISUZUICAgICAgICAgOA0KKyNkZWZpbmUgU0VOSU5GX0NU UkxfQ1NJM19TV19SU1RfTUFTSyAgICAgICAgICBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9DVFJM X1NFTklORl9TUkNfU0VMX1NISUZUICAgICAgMTINCisjZGVmaW5lIFNFTklORl9DVFJMX1NFTklO Rl9TUkNfU0VMX01BU0sgICAgICAgKDB4ZiA8PCAxMikNCisjZGVmaW5lIFNFTklORl9DVFJMX1NF TklORl9ERUJVR19TRUxfU0hJRlQgICAgMjANCisjZGVmaW5lIFNFTklORl9DVFJMX1NFTklORl9E RUJVR19TRUxfTUFTSyAgICAgKDB4ZiA8PCAyMCkNCisjZGVmaW5lIFNFTklORl9DVFJMX1BBRDJD QU1fREFUQV9TRUxfU0hJRlQgICAgMjgNCisjZGVmaW5lIFNFTklORl9DVFJMX1BBRDJDQU1fREFU QV9TRUxfTUFTSyAgICAgKDB4NyA8PCAyOCkNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNA0KKyNkZWZpbmUgU0VOSU5G X0NUUkxfRVhUX1NFTklORl9PQ1NJMl9JUF9FTl9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfQ1RS TF9FWFRfU0VOSU5GX09DU0kyX0lQX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBTRU5JTkZfQ1RS TF9FWFRfU0VOSU5GX1RFU1RNRExfSVBfRU5fU0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX0NUUkxf RVhUX1NFTklORl9URVNUTURMX0lQX0VOX01BU0sgQklUKDEpDQorI2RlZmluZSBTRU5JTkZfQ1RS TF9FWFRfU0VOSU5GX1NDQU1fSVBfRU5fU0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX0NUUkxfRVhU X1NFTklORl9TQ0FNX0lQX0VOX01BU0sgQklUKDQpDQorI2RlZmluZSBTRU5JTkZfQ1RSTF9FWFRf U0VOSU5GX05DU0kyX0lQX0VOX1NISUZUIDUNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVF9TRU5J TkZfTkNTSTJfSVBfRU5fTUFTSyBCSVQoNSkNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVF9TRU5J TkZfQ1NJMl9JUF9FTl9TSElGVCA2DQorI2RlZmluZSBTRU5JTkZfQ1RSTF9FWFRfU0VOSU5GX0NT STJfSVBfRU5fTUFTSyBCSVQoNikNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVF9TRU5JTkZfQ1NJ M19JUF9FTl9TSElGVCA3DQorI2RlZmluZSBTRU5JTkZfQ1RSTF9FWFRfU0VOSU5GX0NTSTNfSVBf RU5fTUFTSyBCSVQoNykNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVF9TRU5JTkZfU1JDX1NFTF9F WFRfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DVFJMX0VYVF9TRU5JTkZfU1JDX1NFTF9FWFRf TUFTSyAoMHgzIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0FTWU5DX0NUUkwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjA4DQorI2RlZmluZSBTRU5JTkZfQVNZTkNfQ1RS TF9TRU5JTkZfQVNZTkNfRklGT19SU1RfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0FTWU5DX0NU UkxfU0VOSU5GX0FTWU5DX0ZJRk9fUlNUX01BU0sgQklUKDApDQorI2RlZmluZSBTRU5JTkZfQVNZ TkNfQ1RSTF9TRU5JTkZfSFNZTkNfTUFTS19TSElGVCAxDQorI2RlZmluZSBTRU5JTkZfQVNZTkNf Q1RSTF9TRU5JTkZfSFNZTkNfTUFTS19NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX0FTWU5D X0NUUkxfU0VOSU5GX1ZTWU5DX1BPTF9TSElGVCAyDQorI2RlZmluZSBTRU5JTkZfQVNZTkNfQ1RS TF9TRU5JTkZfVlNZTkNfUE9MX01BU0sgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfQVNZTkNfQ1RS TF9TRU5JTkZfSFNZTkNfUE9MX1NISUZUIDMNCisjZGVmaW5lIFNFTklORl9BU1lOQ19DVFJMX1NF TklORl9IU1lOQ19QT0xfTUFTSyBCSVQoMykNCisjZGVmaW5lIFNFTklORl9BU1lOQ19DVFJMX0ZJ Rk9fUFVTSF9FTl9TSElGVCAgMTYNCisjZGVmaW5lIFNFTklORl9BU1lOQ19DVFJMX0ZJRk9fUFVT SF9FTl9NQVNLICAgKDB4M2YgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfQVNZTkNfQ1RSTF9GSUZP X0ZMVVNIX0VOX1NISUZUIDI0DQorI2RlZmluZSBTRU5JTkZfQVNZTkNfQ1RSTF9GSUZPX0ZMVVNI X0VOX01BU0sgICgweDNmIDw8IDI0KQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9QSF9DTlQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYwMA0KKyNkZWZpbmUgU0VOSU5GX1RH MV9QSF9DTlRfVEdDTEtfU0VMX1NISUZUICAgICAgMA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9QSF9D TlRfVEdDTEtfU0VMX01BU0sgICAgICAgKDB4MyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9Q SF9DTlRfQ0xLRkxfUE9MX1NISUZUICAgICAgMg0KKyNkZWZpbmUgU0VOSU5GX1RHMV9QSF9DTlRf Q0xLRkxfUE9MX01BU0sgICAgICAgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9F WFRfUlNUX1NISUZUICAgICAgICA0DQorI2RlZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9FWFRfUlNU X01BU0sgICAgICAgICBCSVQoNCkNCisjZGVmaW5lIFNFTklORl9URzFfUEhfQ05UX0VYVF9QV1JE Tl9TSElGVCAgICAgIDUNCisjZGVmaW5lIFNFTklORl9URzFfUEhfQ05UX0VYVF9QV1JETl9NQVNL ICAgICAgIEJJVCg1KQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9QSF9DTlRfUEFEX1BDTEtfSU5WX1NI SUZUICAgNg0KKyNkZWZpbmUgU0VOSU5GX1RHMV9QSF9DTlRfUEFEX1BDTEtfSU5WX01BU0sgICAg QklUKDYpDQorI2RlZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9DQU1fUENMS19JTlZfU0hJRlQgICA3 DQorI2RlZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9DQU1fUENMS19JTlZfTUFTSyAgICBCSVQoNykN CisjZGVmaW5lIFNFTklORl9URzFfUEhfQ05UX0NMS1BPTF9TSElGVCAgICAgICAgIDI4DQorI2Rl ZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9DTEtQT0xfTUFTSyAgICAgICAgICBCSVQoMjgpDQorI2Rl ZmluZSBTRU5JTkZfVEcxX1BIX0NOVF9BRENMS19FTl9TSElGVCAgICAgICAyOQ0KKyNkZWZpbmUg U0VOSU5GX1RHMV9QSF9DTlRfQURDTEtfRU5fTUFTSyAgICAgICAgQklUKDI5KQ0KKyNkZWZpbmUg U0VOSU5GX1RHMV9QSF9DTlRfUENFTl9TSElGVCAgICAgICAgICAgMzENCisjZGVmaW5lIFNFTklO Rl9URzFfUEhfQ05UX1BDRU5fTUFTSyAgICAgICAgICAgIEJJVCgzMSkNCisjZGVmaW5lIFNFTklO Rl9URzFfU0VOX0NLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2MDQN CisjZGVmaW5lIFNFTklORl9URzFfU0VOX0NLX0NMS0ZMX1NISUZUICAgICAgICAgIDANCisjZGVm aW5lIFNFTklORl9URzFfU0VOX0NLX0NMS0ZMX01BU0sgICAgICAgICAgICgweDNmIDw8IDApDQor I2RlZmluZSBTRU5JTkZfVEcxX1NFTl9DS19DTEtSU19TSElGVCAgICAgICAgICA4DQorI2RlZmlu ZSBTRU5JTkZfVEcxX1NFTl9DS19DTEtSU19NQVNLICAgICAgICAgICAoMHgzZiA8PCA4KQ0KKyNk ZWZpbmUgU0VOSU5GX1RHMV9TRU5fQ0tfQ0xLQ05UX1NISUZUICAgICAgICAgMTYNCisjZGVmaW5l IFNFTklORl9URzFfU0VOX0NLX0NMS0NOVF9NQVNLICAgICAgICAgICgweDNmIDw8IDE2KQ0KKyNk ZWZpbmUgU0VOSU5GX1RHMV9UTV9DVEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDYwOA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DVExfVE1fRU5fU0hJRlQgICAgICAg ICAgMA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DVExfVE1fRU5fTUFTSyAgICAgICAgICAgQklU KDApDQorI2RlZmluZSBTRU5JTkZfVEcxX1RNX0NUTF9UTV9SU1RfU0hJRlQgICAgICAgICAxDQor I2RlZmluZSBTRU5JTkZfVEcxX1RNX0NUTF9UTV9SU1RfTUFTSyAgICAgICAgICBCSVQoMSkNCisj ZGVmaW5lIFNFTklORl9URzFfVE1fQ1RMX1RNX0ZNVF9TSElGVCAgICAgICAgIDINCisjZGVmaW5l IFNFTklORl9URzFfVE1fQ1RMX1RNX0ZNVF9NQVNLICAgICAgICAgIEJJVCgyKQ0KKyNkZWZpbmUg U0VOSU5GX1RHMV9UTV9DVExfVE1fUEFUX1NISUZUICAgICAgICAgNA0KKyNkZWZpbmUgU0VOSU5G X1RHMV9UTV9DVExfVE1fUEFUX01BU0sgICAgICAgICAgKDB4ZiA8PCA0KQ0KKyNkZWZpbmUgU0VO SU5GX1RHMV9UTV9DVExfVE1fVlNZTkNfU0hJRlQgICAgICAgOA0KKyNkZWZpbmUgU0VOSU5GX1RH MV9UTV9DVExfVE1fVlNZTkNfTUFTSyAgICAgICAgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIFNFTklO Rl9URzFfVE1fQ1RMX1RNX0RVTU1ZUFhMX1NISUZUICAgIDE2DQorI2RlZmluZSBTRU5JTkZfVEcx X1RNX0NUTF9UTV9EVU1NWVBYTF9NQVNLICAgICAoMHhmZiA8PCAxNikNCisjZGVmaW5lIFNFTklO Rl9URzFfVE1fU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2MEMN CisjZGVmaW5lIFNFTklORl9URzFfVE1fU0laRV9UTV9QWExfU0hJRlQgICAgICAgIDANCisjZGVm aW5lIFNFTklORl9URzFfVE1fU0laRV9UTV9QWExfTUFTSyAgICAgICAgICgweDFmZmYgPDwgMCkN CisjZGVmaW5lIFNFTklORl9URzFfVE1fU0laRV9UTV9MSU5FX1NISUZUICAgICAgIDE2DQorI2Rl ZmluZSBTRU5JTkZfVEcxX1RNX1NJWkVfVE1fTElORV9NQVNLICAgICAgICAoMHgzZmZmIDw8IDE2 KQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DTEsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDYxMA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DTEtfVE1fQ0xLX0NOVF9T SElGVCAgICAgMA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DTEtfVE1fQ0xLX0NOVF9NQVNLICAg ICAgKDB4ZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9DTEtfVE1fQ0xSQkFSX09GVF9T SElGVCAgMTYNCisjZGVmaW5lIFNFTklORl9URzFfVE1fQ0xLX1RNX0NMUkJBUl9PRlRfTUFTSyAg ICgweDNmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9URzFfVE1fQ0xLX1RNX0NMUkJBUl9JRFhf U0hJRlQgIDI4DQorI2RlZmluZSBTRU5JTkZfVEcxX1RNX0NMS19UTV9DTFJCQVJfSURYX01BU0sg ICAoMHg3IDw8IDI4KQ0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9TVFAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDYxNA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9TVFBf VEcxX1RNX1NUUF9TSElGVCAgICAgMA0KKyNkZWZpbmUgU0VOSU5GX1RHMV9UTV9TVFBfVEcxX1RN X1NUUF9NQVNLICAgICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIE1JUElfUlhfQ09OMjRf Q1NJMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MjQNCisjZGVmaW5l IE1JUElfUlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfTlVNX1NISUZUIDANCisjZGVmaW5lIE1JUElf UlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfTlVNX01BU0sgICgweDMgPDwgMCkNCisjZGVmaW5lIE1J UElfUlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfRU5fU0hJRlQgIDINCisjZGVmaW5lIE1JUElfUlhf Q09OMjRfQ1NJMF9DU0kwX0JJU1RfRU5fTUFTSyAgIEJJVCgyKQ0KKyNkZWZpbmUgTUlQSV9SWF9D T04yNF9DU0kwX0NTSTBfQklTVF9GSVhfUEFUX1NISUZUIDUNCisjZGVmaW5lIE1JUElfUlhfQ09O MjRfQ1NJMF9DU0kwX0JJU1RfRklYX1BBVF9NQVNLIEJJVCg1KQ0KKyNkZWZpbmUgTUlQSV9SWF9D T04yNF9DU0kwX0NTSTBfQklTVF9DTEtfU0VMX1NISUZUIDYNCisjZGVmaW5lIE1JUElfUlhfQ09O MjRfQ1NJMF9DU0kwX0JJU1RfQ0xLX1NFTF9NQVNLIEJJVCg2KQ0KKyNkZWZpbmUgTUlQSV9SWF9D T04yNF9DU0kwX0NTSTBfQklTVF9DTEs0WF9TRUxfU0hJRlQgNw0KKyNkZWZpbmUgTUlQSV9SWF9D T04yNF9DU0kwX0NTSTBfQklTVF9DTEs0WF9TRUxfTUFTSyBCSVQoNykNCisjZGVmaW5lIE1JUElf UlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfVEVSTV9ERUxBWV9TSElGVCA4DQorI2RlZmluZSBNSVBJ X1JYX0NPTjI0X0NTSTBfQ1NJMF9CSVNUX1RFUk1fREVMQVlfTUFTSyAoMHhmZiA8PCA4KQ0KKyNk ZWZpbmUgTUlQSV9SWF9DT04yNF9DU0kwX0NTSTBfQklTVF9TRVRUTEVfREVMQVlfU0hJRlQgMTYN CisjZGVmaW5lIE1JUElfUlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfU0VUVExFX0RFTEFZX01BU0sg KDB4ZmYgPDwgMTYpDQorI2RlZmluZSBNSVBJX1JYX0NPTjI0X0NTSTBfQ1NJMF9CSVNUX0xOMF9N VVhfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1RfTE4wX01V WF9NQVNLICgweDMgPDwgMjQpDQorI2RlZmluZSBNSVBJX1JYX0NPTjI0X0NTSTBfQ1NJMF9CSVNU X0xOMV9NVVhfU0hJRlQgMjYNCisjZGVmaW5lIE1JUElfUlhfQ09OMjRfQ1NJMF9DU0kwX0JJU1Rf TE4xX01VWF9NQVNLICgweDMgPDwgMjYpDQorI2RlZmluZSBNSVBJX1JYX0NPTjI0X0NTSTBfQ1NJ MF9CSVNUX0xOMl9NVVhfU0hJRlQgMjgNCisjZGVmaW5lIE1JUElfUlhfQ09OMjRfQ1NJMF9DU0kw X0JJU1RfTE4yX01VWF9NQVNLICgweDMgPDwgMjgpDQorI2RlZmluZSBNSVBJX1JYX0NPTjI0X0NT STBfQ1NJMF9CSVNUX0xOM19NVVhfU0hJRlQgMzANCisjZGVmaW5lIE1JUElfUlhfQ09OMjRfQ1NJ MF9DU0kwX0JJU1RfTE4zX01VWF9NQVNLICgweDMgPDwgMzApDQorI2RlZmluZSBNSVBJX1JYX0NP TjI4X0NTSTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwODI4DQorI2Rl ZmluZSBNSVBJX1JYX0NPTjI4X0NTSTBfQ1NJMF9CSVNUX1NUQVJUX1NISUZUIDANCisjZGVmaW5l IE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfU1RBUlRfTUFTSyBCSVQoMCkNCisjZGVmaW5l IE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfREFUQV9PS19TSElGVCAxDQorI2RlZmluZSBN SVBJX1JYX0NPTjI4X0NTSTBfQ1NJMF9CSVNUX0RBVEFfT0tfTUFTSyBCSVQoMSkNCisjZGVmaW5l IE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfSFNfRlNNX09LX1NISUZUIDINCisjZGVmaW5l IE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfSFNfRlNNX09LX01BU0sgQklUKDIpDQorI2Rl ZmluZSBNSVBJX1JYX0NPTjI4X0NTSTBfQ1NJMF9CSVNUX0xBTkVfRlNNX09LX1NISUZUIDMNCisj ZGVmaW5lIE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfTEFORV9GU01fT0tfTUFTSyBCSVQo MykNCisjZGVmaW5lIE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfQ1NJMl9EQVRBX09LX1NI SUZUIDQNCisjZGVmaW5lIE1JUElfUlhfQ09OMjhfQ1NJMF9DU0kwX0JJU1RfQ1NJMl9EQVRBX09L X01BU0sgQklUKDQpDQorI2RlZmluZSBNSVBJX1JYX0NPTjM0X0NTSTAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwODM0DQorI2RlZmluZSBNSVBJX1JYX0NPTjM0X0NTSTBf QklTVF9NT0RFX1NISUZUICAgICAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjM0X0NTSTBfQklTVF9N T0RFX01BU0sgICAgICBCSVQoMCkNCisjZGVmaW5lIE1JUElfUlhfQ09OMzRfQ1NJMF9DU0kwX0JJ U1RfSFNERVRfTVVYX1NISUZUIDIyDQorI2RlZmluZSBNSVBJX1JYX0NPTjM0X0NTSTBfQ1NJMF9C SVNUX0hTREVUX01VWF9NQVNLICgweDMgPDwgMjIpDQorI2RlZmluZSBNSVBJX1JYX0NPTjM0X0NT STBfQ1NJMF9CSVNUX0xONF9NVVhfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQ09OMzRfQ1NJ MF9DU0kwX0JJU1RfTE40X01VWF9NQVNLICgweDMgPDwgMjQpDQorI2RlZmluZSBNSVBJX1JYX0NP TjM0X0NTSTBfQ1NJMF9CSVNUX0xONV9NVVhfU0hJRlQgMjYNCisjZGVmaW5lIE1JUElfUlhfQ09O MzRfQ1NJMF9DU0kwX0JJU1RfTE41X01VWF9NQVNLICgweDMgPDwgMjYpDQorI2RlZmluZSBNSVBJ X1JYX0NPTjM0X0NTSTBfQ1NJMF9CSVNUX0xONl9NVVhfU0hJRlQgMjgNCisjZGVmaW5lIE1JUElf UlhfQ09OMzRfQ1NJMF9DU0kwX0JJU1RfTE42X01VWF9NQVNLICgweDMgPDwgMjgpDQorI2RlZmlu ZSBNSVBJX1JYX0NPTjM0X0NTSTBfQ1NJMF9CSVNUX0xON19NVVhfU0hJRlQgMzANCisjZGVmaW5l IE1JUElfUlhfQ09OMzRfQ1NJMF9DU0kwX0JJU1RfTE43X01VWF9NQVNLICgweDMgPDwgMzApDQor I2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwODM4DQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTBfTUlQSV9SWF9TV19DVFJM X01PREVfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kwX01JUElfUlhfU1dfQ1RS TF9NT0RFX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTBfTUlQSV9SWF9T V19DQUxfTU9ERV9TSElGVCAxDQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTBfTUlQSV9SWF9T V19DQUxfTU9ERV9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kwX01JUElf UlhfSFdfQ0FMX1NUQVJUX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQ09OMzhfQ1NJMF9NSVBJ X1JYX0hXX0NBTF9TVEFSVF9NQVNLIEJJVCgyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kw X01JUElfUlhfSFdfQ0FMX09QVElPTl9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NT STBfTUlQSV9SWF9IV19DQUxfT1BUSU9OX01BU0sgQklUKDMpDQorI2RlZmluZSBNSVBJX1JYX0NP TjM4X0NTSTBfTUlQSV9SWF9TV19SU1RfU0hJRlQgNA0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9D U0kwX01JUElfUlhfU1dfUlNUX01BU0sgKDB4MWYgPDwgNCkNCisjZGVmaW5lIE1JUElfUlhfQ09O MzhfQ1NJMF9NSVBJX1JYX1NXX0NQSFlfVFhfTU9ERV9TSElGVCA5DQorI2RlZmluZSBNSVBJX1JY X0NPTjM4X0NTSTBfTUlQSV9SWF9TV19DUEhZX1RYX01PREVfTUFTSyBCSVQoOSkNCisjZGVmaW5l IE1JUElfUlhfQ09OMzhfQ1NJMF9NSVBJX1JYX1NXX0NQSFlfUlhfTU9ERV9TSElGVCAxMA0KKyNk ZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kwX01JUElfUlhfU1dfQ1BIWV9SWF9NT0RFX01BU0sgQklU KDEwKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kwX1JHX0NLUEhBU0VfVFJJTzBfU0hJRlQg MTYNCisjZGVmaW5lIE1JUElfUlhfQ09OMzhfQ1NJMF9SR19DS1BIQVNFX1RSSU8wX01BU0sgKDB4 MWYgPDwgMTYpDQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTBfUkdfQ0tQSEFTRV9UUklPMV9T SElGVCAyMg0KKyNkZWZpbmUgTUlQSV9SWF9DT04zOF9DU0kwX1JHX0NLUEhBU0VfVFJJTzFfTUFT SyAoMHgxZiA8PCAyMikNCisjZGVmaW5lIE1JUElfUlhfQ09OMzhfQ1NJMF9SR19DS1BIQVNFX1RS SU8yX1NISUZUIDI3DQorI2RlZmluZSBNSVBJX1JYX0NPTjM4X0NTSTBfUkdfQ0tQSEFTRV9UUklP Ml9NQVNLICgweDFmIDw8IDI3KQ0KKyNkZWZpbmUgTUlQSV9SWF9DT04zQ19DU0kwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgzQw0KKyNkZWZpbmUgTUlQSV9SWF9DT04z Q19DU0kwX01JUElfUlhfU1dfQ1RSTF9fU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9DT04zQ19D U0kwX01JUElfUlhfU1dfQ1RSTF9fTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgTUlQ SV9SWF9DT043Q19DU0kwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDg3 Qw0KKyNkZWZpbmUgTUlQSV9SWF9DT043Q19DU0kwX0RBX0NTSTBfTE5SRDBfSFNSWF9ERUxBWV9F Tl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjdDX0NTSTBfREFfQ1NJMF9MTlJEMF9IU1JY X0RFTEFZX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjdDX0NTSTBfREFfQ1NJ MF9MTlJEMF9IU1JYX0RFTEFZX0FQUExZX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09ON0Nf Q1NJMF9EQV9DU0kwX0xOUkQwX0hTUlhfREVMQVlfQVBQTFlfTUFTSyBCSVQoMSkNCisjZGVmaW5l IE1JUElfUlhfQ09ON0NfQ1NJMF9EQV9DU0kwX0xOUkQwX0hTUlhfREVMQVlfQ09ERV9TSElGVCAy DQorI2RlZmluZSBNSVBJX1JYX0NPTjdDX0NTSTBfREFfQ1NJMF9MTlJEMF9IU1JYX0RFTEFZX0NP REVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT044MF9DU0kwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDg4MA0KKyNkZWZpbmUgTUlQSV9SWF9DT044 MF9DU0kwX0RBX0NTSTBfTE5SRDFfSFNSWF9ERUxBWV9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJ X1JYX0NPTjgwX0NTSTBfREFfQ1NJMF9MTlJEMV9IU1JYX0RFTEFZX0VOX01BU0sgQklUKDApDQor I2RlZmluZSBNSVBJX1JYX0NPTjgwX0NTSTBfREFfQ1NJMF9MTlJEMV9IU1JYX0RFTEFZX0FQUExZ X1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09OODBfQ1NJMF9EQV9DU0kwX0xOUkQxX0hTUlhf REVMQVlfQVBQTFlfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQ09OODBfQ1NJMF9EQV9D U0kwX0xOUkQxX0hTUlhfREVMQVlfQ09ERV9TSElGVCAyDQorI2RlZmluZSBNSVBJX1JYX0NPTjgw X0NTSTBfREFfQ1NJMF9MTlJEMV9IU1JYX0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNk ZWZpbmUgTUlQSV9SWF9DT044NF9DU0kwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDg4NA0KKyNkZWZpbmUgTUlQSV9SWF9DT044NF9DU0kwX0RBX0NTSTBfTE5SRDJfSFNS WF9ERUxBWV9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjg0X0NTSTBfREFfQ1NJMF9M TlJEMl9IU1JYX0RFTEFZX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjg0X0NT STBfREFfQ1NJMF9MTlJEMl9IU1JYX0RFTEFZX0FQUExZX1NISUZUIDENCisjZGVmaW5lIE1JUElf UlhfQ09OODRfQ1NJMF9EQV9DU0kwX0xOUkQyX0hTUlhfREVMQVlfQVBQTFlfTUFTSyBCSVQoMSkN CisjZGVmaW5lIE1JUElfUlhfQ09OODRfQ1NJMF9EQV9DU0kwX0xOUkQyX0hTUlhfREVMQVlfQ09E RV9TSElGVCAyDQorI2RlZmluZSBNSVBJX1JYX0NPTjg0X0NTSTBfREFfQ1NJMF9MTlJEMl9IU1JY X0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT044OF9DU0kw ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDg4OA0KKyNkZWZpbmUgTUlQ SV9SWF9DT044OF9DU0kwX0RBX0NTSTBfTE5SRDNfSFNSWF9ERUxBWV9FTl9TSElGVCAwDQorI2Rl ZmluZSBNSVBJX1JYX0NPTjg4X0NTSTBfREFfQ1NJMF9MTlJEM19IU1JYX0RFTEFZX0VOX01BU0sg QklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjg4X0NTSTBfREFfQ1NJMF9MTlJEM19IU1JYX0RF TEFZX0FQUExZX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09OODhfQ1NJMF9EQV9DU0kwX0xO UkQzX0hTUlhfREVMQVlfQVBQTFlfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQ09OODhf Q1NJMF9EQV9DU0kwX0xOUkQzX0hTUlhfREVMQVlfQ09ERV9TSElGVCAyDQorI2RlZmluZSBNSVBJ X1JYX0NPTjg4X0NTSTBfREFfQ1NJMF9MTlJEM19IU1JYX0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8 PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT044Q19DU0kwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDg4Qw0KKyNkZWZpbmUgTUlQSV9SWF9DT044Q19DU0kwX1JHX0NTSTBf TE5SRDBfSFNSWF9ERUxBWV9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjhDX0NTSTBf UkdfQ1NJMF9MTlJEMF9IU1JYX0RFTEFZX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JY X0NPTjhDX0NTSTBfUkdfQ1NJMF9MTlJEMF9IU1JYX0RFTEFZX0FQUExZX1NISUZUIDENCisjZGVm aW5lIE1JUElfUlhfQ09OOENfQ1NJMF9SR19DU0kwX0xOUkQwX0hTUlhfREVMQVlfQVBQTFlfTUFT SyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQ09OOENfQ1NJMF9SR19DU0kwX0xOUkQwX0hTUlhf REVMQVlfQ09ERV9TSElGVCAyDQorI2RlZmluZSBNSVBJX1JYX0NPTjhDX0NTSTBfUkdfQ1NJMF9M TlJEMF9IU1JYX0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9D T045MF9DU0kwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDg5MA0KKyNk ZWZpbmUgTUlQSV9SWF9DT045MF9DU0kwX1JHX0NTSTBfTE5SRDFfSFNSWF9ERUxBWV9FTl9TSElG VCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjkwX0NTSTBfUkdfQ1NJMF9MTlJEMV9IU1JYX0RFTEFZ X0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjkwX0NTSTBfUkdfQ1NJMF9MTlJE MV9IU1JYX0RFTEFZX0FQUExZX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09OOTBfQ1NJMF9S R19DU0kwX0xOUkQxX0hTUlhfREVMQVlfQVBQTFlfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElf UlhfQ09OOTBfQ1NJMF9SR19DU0kwX0xOUkQxX0hTUlhfREVMQVlfQ09ERV9TSElGVCAyDQorI2Rl ZmluZSBNSVBJX1JYX0NPTjkwX0NTSTBfUkdfQ1NJMF9MTlJEMV9IU1JYX0RFTEFZX0NPREVfTUFT SyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT045NF9DU0kwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDg5NA0KKyNkZWZpbmUgTUlQSV9SWF9DT045NF9DU0kw X1JHX0NTSTBfTE5SRDJfSFNSWF9ERUxBWV9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NP Tjk0X0NTSTBfUkdfQ1NJMF9MTlJEMl9IU1JYX0RFTEFZX0VOX01BU0sgQklUKDApDQorI2RlZmlu ZSBNSVBJX1JYX0NPTjk0X0NTSTBfUkdfQ1NJMF9MTlJEMl9IU1JYX0RFTEFZX0FQUExZX1NISUZU IDENCisjZGVmaW5lIE1JUElfUlhfQ09OOTRfQ1NJMF9SR19DU0kwX0xOUkQyX0hTUlhfREVMQVlf QVBQTFlfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQ09OOTRfQ1NJMF9SR19DU0kwX0xO UkQyX0hTUlhfREVMQVlfQ09ERV9TSElGVCAyDQorI2RlZmluZSBNSVBJX1JYX0NPTjk0X0NTSTBf UkdfQ1NJMF9MTlJEMl9IU1JYX0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUg TUlQSV9SWF9DT045OF9DU0kwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDg5OA0KKyNkZWZpbmUgTUlQSV9SWF9DT045OF9DU0kwX1JHX0NTSTBfTE5SRDNfSFNSWF9ERUxB WV9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTjk4X0NTSTBfUkdfQ1NJMF9MTlJEM19I U1JYX0RFTEFZX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0NPTjk4X0NTSTBfUkdf Q1NJMF9MTlJEM19IU1JYX0RFTEFZX0FQUExZX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09O OThfQ1NJMF9SR19DU0kwX0xOUkQzX0hTUlhfREVMQVlfQVBQTFlfTUFTSyBCSVQoMSkNCisjZGVm aW5lIE1JUElfUlhfQ09OOThfQ1NJMF9SR19DU0kwX0xOUkQzX0hTUlhfREVMQVlfQ09ERV9TSElG VCAyDQorI2RlZmluZSBNSVBJX1JYX0NPTjk4X0NTSTBfUkdfQ1NJMF9MTlJEM19IU1JYX0RFTEFZ X0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05BMF9DU0kwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDhBMA0KKyNkZWZpbmUgTUlQSV9SWF9D T05BMF9DU0kwX1JHX0NTSTBfTE5SQ19IU1JYX0RFTEFZX0VOX1NISUZUIDANCisjZGVmaW5lIE1J UElfUlhfQ09OQTBfQ1NJMF9SR19DU0kwX0xOUkNfSFNSWF9ERUxBWV9FTl9NQVNLIEJJVCgwKQ0K KyNkZWZpbmUgTUlQSV9SWF9DT05BMF9DU0kwX1JHX0NTSTBfTE5SQ19IU1JYX0RFTEFZX0FQUExZ X1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQ09OQTBfQ1NJMF9SR19DU0kwX0xOUkNfSFNSWF9E RUxBWV9BUFBMWV9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05BMF9DU0kwX1JHX0NT STBfTE5SQ19IU1JYX0RFTEFZX0NPREVfU0hJRlQgMg0KKyNkZWZpbmUgTUlQSV9SWF9DT05BMF9D U0kwX1JHX0NTSTBfTE5SQ19IU1JYX0RFTEFZX0NPREVfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZp bmUgTUlQSV9SWF9DT05CMF9DU0kwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDhCMA0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFTEFZX0FQUExZX01PREVfU0hJ RlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFTEFZX0FQUExZX01PREVfTUFTSyAo MHhmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0NPTkIwX0NTSTBfREVTS0VXX1NXX1JTVF9TSElG VCA3DQorI2RlZmluZSBNSVBJX1JYX0NPTkIwX0NTSTBfREVTS0VXX1NXX1JTVF9NQVNLICBCSVQo NykNCisjZGVmaW5lIE1JUElfUlhfQ09OQjBfQ1NJMF9ERVNLRVdfVFJJR0dFUl9NT0RFX1NISUZU IDgNCisjZGVmaW5lIE1JUElfUlhfQ09OQjBfQ1NJMF9ERVNLRVdfVFJJR0dFUl9NT0RFX01BU0sg KDB4NyA8PCA4KQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFU0tFV19BQ0NfTU9ERV9T SElGVCAxMg0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFU0tFV19BQ0NfTU9ERV9NQVNL ICgweGYgPDwgMTIpDQorI2RlZmluZSBNSVBJX1JYX0NPTkIwX0NTSTBfREVTS0VXX0NTSTJfUlNU X0VOQUJMRV9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFU0tFV19DU0ky X1JTVF9FTkFCTEVfTUFTSyBCSVQoMTYpDQorI2RlZmluZSBNSVBJX1JYX0NPTkIwX0NTSTBfREVT S0VXX0lQX1NFTF9TSElGVCAzMA0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFU0tFV19J UF9TRUxfTUFTSyAgQklUKDMwKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05CMF9DU0kwX0RFU0tFV19F TkFCTEVfU0hJRlQgMzENCisjZGVmaW5lIE1JUElfUlhfQ09OQjBfQ1NJMF9ERVNLRVdfRU5BQkxF X01BU0sgIEJJVCgzMSkNCisjZGVmaW5lIE1JUElfUlhfQ09OQjRfQ1NJMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDA4QjQNCisjZGVmaW5lIE1JUElfUlhfQ09OQjRfQ1NJ MF9TWU5DX0NPREVfTUFTS19TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTkI0X0NTSTBfU1lO Q19DT0RFX01BU0tfTUFTSyAoMHhmZmZmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0NPTkI0X0NT STBfRVhQRUNURURfU1lOQ19DT0RFX1NISUZUIDE2DQorI2RlZmluZSBNSVBJX1JYX0NPTkI0X0NT STBfRVhQRUNURURfU1lOQ19DT0RFX01BU0sgKDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIE1JUElf UlhfQ09OQjhfQ1NJMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4QjgN CisjZGVmaW5lIE1JUElfUlhfQ09OQjhfQ1NJMF9ERVNLRVdfU0VUVVBfVElNRV9TSElGVCAwDQor I2RlZmluZSBNSVBJX1JYX0NPTkI4X0NTSTBfREVTS0VXX1NFVFVQX1RJTUVfTUFTSyAoMHhmIDw8 IDApDQorI2RlZmluZSBNSVBJX1JYX0NPTkI4X0NTSTBfREVTS0VXX0hPTERfVElNRV9TSElGVCA4 DQorI2RlZmluZSBNSVBJX1JYX0NPTkI4X0NTSTBfREVTS0VXX0hPTERfVElNRV9NQVNLICgweGYg PDwgOCkNCisjZGVmaW5lIE1JUElfUlhfQ09OQjhfQ1NJMF9ERVNLRVdfVElNRV9PVVRfU0hJRlQg MTYNCisjZGVmaW5lIE1JUElfUlhfQ09OQjhfQ1NJMF9ERVNLRVdfVElNRV9PVVRfTUFTSyAoMHhm ZiA8PCAxNikNCisjZGVmaW5lIE1JUElfUlhfQ09OQjhfQ1NJMF9ERVNLRVdfVElNRV9PVVRfRU5f U0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQ09OQjhfQ1NJMF9ERVNLRVdfVElNRV9PVVRfRU5f TUFTSyBCSVQoMjQpDQorI2RlZmluZSBNSVBJX1JYX0NPTkJDX0NTSTAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwOEJDDQorI2RlZmluZSBNSVBJX1JYX0NPTkJDX0NTSTBf REVTS0VXX0RFVEVDVElPTl9NT0RFX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQ09OQkNfQ1NJ MF9ERVNLRVdfREVURUNUSU9OX01PREVfTUFTSyAoMHhmIDw8IDApDQorI2RlZmluZSBNSVBJX1JY X0NPTkJDX0NTSTBfREVTS0VXX0RFVEVDVElPTl9DTlRfU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9S WF9DT05CQ19DU0kwX0RFU0tFV19ERVRFQ1RJT05fQ05UX01BU0sgKDB4N2YgPDwgOCkNCisjZGVm aW5lIE1JUElfUlhfQ09OQkNfQ1NJMF9ERVNLRVdfREVMQVlfQVBQTFlfTU9ERV9TSElGVCAxNg0K KyNkZWZpbmUgTUlQSV9SWF9DT05CQ19DU0kwX0RFU0tFV19ERUxBWV9BUFBMWV9NT0RFX01BU0sg KDB4ZiA8PCAxNikNCisjZGVmaW5lIE1JUElfUlhfQ09OQkNfQ1NJMF9ERVNLRVdfTEFORV9OVU1C RVJfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQ09OQkNfQ1NJMF9ERVNLRVdfTEFORV9OVU1C RVJfTUFTSyAoMHgzIDw8IDI0KQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05DMF9DU0kwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDhDMA0KKyNkZWZpbmUgTUlQSV9SWF9DT05D MF9DU0kwX0RFU0tFV19JTlRFUlJVUFRfRU5BQkxFX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhf Q09OQzBfQ1NJMF9ERVNLRVdfSU5URVJSVVBUX0VOQUJMRV9NQVNLICgweGZmZmYgPDwgMCkNCisj ZGVmaW5lIE1JUElfUlhfQ09OQzBfQ1NJMF9ERVNLRVdfSU5URVJSVVBUX1cxQ19FTl9TSElGVCAz MQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05DMF9DU0kwX0RFU0tFV19JTlRFUlJVUFRfVzFDX0VOX01B U0sgQklUKDMxKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05DNF9DU0kwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDhDNA0KKyNkZWZpbmUgTUlQSV9SWF9DT05DNF9DU0kwX0RF U0tFV19JTlRFUlJVUFRfU1RBVFVTX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQ09OQzRfQ1NJ MF9ERVNLRVdfSU5URVJSVVBUX1NUQVRVU19NQVNLICgweGZmZmYgPDwgMCkNCisjZGVmaW5lIE1J UElfUlhfQ09OQzhfQ1NJMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4 QzgNCisjZGVmaW5lIE1JUElfUlhfQ09OQzhfQ1NJMF9ERVNLRVdfREVCVUdfTVVYX1NFTEVDVF9T SElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTkM4X0NTSTBfREVTS0VXX0RFQlVHX01VWF9TRUxF Q1RfTUFTSyAoMHhmZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9DT05DQ19DU0kwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDhDQw0KKyNkZWZpbmUgTUlQSV9SWF9DT05D Q19DU0kwX0RFU0tFV19ERUJVR19PVVRQVVRTX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQ09O Q0NfQ1NJMF9ERVNLRVdfREVCVUdfT1VUUFVUU19NQVNLICgweGZmZmZmZmZmIDw8IDApDQorI2Rl ZmluZSBNSVBJX1JYX0NPTkQwX0NTSTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwOEQwDQorI2RlZmluZSBNSVBJX1JYX0NPTkQwX0NTSTBfREVTS0VXX0RFTEFZX0xFTkdU SF9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0NPTkQwX0NTSTBfREVTS0VXX0RFTEFZX0xFTkdU SF9NQVNLICgweDNmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVEwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBMDANCisjZGVmaW5lIFNFTklORl9DU0kyX0NU TF9EQVRBX0xBTkUwX0VOX1NISUZUICAgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0RBVEFf TEFORTBfRU5fTUFTSyAgICBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9EQVRBX0xB TkUxX0VOX1NISUZUICAgMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0RBVEFfTEFORTFfRU5f TUFTSyAgICBCSVQoMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9EQVRBX0xBTkUyX0VOX1NI SUZUICAgMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0RBVEFfTEFORTJfRU5fTUFTSyAgICBC SVQoMikNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9EQVRBX0xBTkUzX0VOX1NISUZUICAgMw0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0RBVEFfTEFORTNfRU5fTUFTSyAgICBCSVQoMykNCisj ZGVmaW5lIFNFTklORl9DU0kyX0NUTF9DTE9DS19MQU5FX0VOX1NISUZUICAgNA0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfQ1RMX0NMT0NLX0xBTkVfRU5fTUFTSyAgICBCSVQoNCkNCisjZGVmaW5lIFNF TklORl9DU0kyX0NUTF9FQ0NfRU5fU0hJRlQgICAgICAgICAgNQ0KKyNkZWZpbmUgU0VOSU5GX0NT STJfQ1RMX0VDQ19FTl9NQVNLICAgICAgICAgICBCSVQoNSkNCisjZGVmaW5lIFNFTklORl9DU0ky X0NUTF9DUkNfRU5fU0hJRlQgICAgICAgICAgNg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0NS Q19FTl9NQVNLICAgICAgICAgICBCSVQoNikNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9IU1JY X0RFVF9FTl9TSElGVCAgICAgNw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0hTUlhfREVUX0VO X01BU0sgICAgICBCSVQoNykNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9IU19QUlBSX0VOX1NI SUZUICAgICAgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0hTX1BSUFJfRU5fTUFTSyAgICAg ICBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9IU19FTkRfRU5fU0hJRlQgICAgICAg OQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0hTX0VORF9FTl9NQVNLICAgICAgICBCSVQoOSkN CisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9HRU5FUklDX0xPTkdfUEFDS0VUX0VOX1NISUZUIDEy DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVExfR0VORVJJQ19MT05HX1BBQ0tFVF9FTl9NQVNLIEJJ VCgxMikNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9JTUFHRV9QQUNLRVRfRU5fU0hJRlQgMTMN CisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9JTUFHRV9QQUNLRVRfRU5fTUFTSyAgQklUKDEzKQ0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0JZVEUyUElYRUxfRU5fU0hJRlQgICAxNA0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfQ1RMX0JZVEUyUElYRUxfRU5fTUFTSyAgICBCSVQoMTQpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9DVExfVlNfVFlQRV9TSElGVCAgICAgICAgIDE1DQorI2RlZmluZSBTRU5J TkZfQ1NJMl9DVExfVlNfVFlQRV9NQVNLICAgICAgICAgIEJJVCgxNSkNCisjZGVmaW5lIFNFTklO Rl9DU0kyX0NUTF9FRF9TRUxfU0hJRlQgICAgICAgICAgMTYNCisjZGVmaW5lIFNFTklORl9DU0ky X0NUTF9FRF9TRUxfTUFTSyAgICAgICAgICAgQklUKDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf Q1RMX0ZMVVNIX01PREVfU0hJRlQgICAgICAxOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0ZM VVNIX01PREVfTUFTSyAgICAgICAoMHgzIDw8IDE4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RM X0hTX1RSQUlMX0VOX1NISUZUICAgICAyNQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RMX0hTX1RS QUlMX0VOX01BU0sgICAgICBCSVQoMjUpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVExfQ0xPQ0tf SFNfT1BUSU9OX1NISUZUIDI3DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVExfQ0xPQ0tfSFNfT1BU SU9OX01BU0sgIEJJVCgyNykNCisjZGVmaW5lIFNFTklORl9DU0kyX0NUTF9WU19PVVRfQ1lDTEVf TlVNQkVSX1NISUZUIDI4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVExfVlNfT1VUX0NZQ0xFX05V TUJFUl9NQVNLICgweDMgPDwgMjgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9MTlJDX1RJTUlORyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBMDQNCisjZGVmaW5lIFNFTklORl9DU0ky X0xOUkNfVElNSU5HX0NMT0NLX1RFUk1fUEFSQU1FVEVSX1NISUZUIDANCisjZGVmaW5lIFNFTklO Rl9DU0kyX0xOUkNfVElNSU5HX0NMT0NLX1RFUk1fUEFSQU1FVEVSX01BU0sgKDB4ZmYgPDwgMCkN CisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkNfVElNSU5HX0NMT0NLX1NFVFRMRV9QQVJBTUVURVJf U0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTE5SQ19USU1JTkdfQ0xPQ0tfU0VUVExFX1BB UkFNRVRFUl9NQVNLICgweGZmIDw8IDgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9MTlJEX1RJTUlO RyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBMDgNCisjZGVmaW5lIFNFTklORl9D U0kyX0xOUkRfVElNSU5HX0RBVEFfVEVSTV9QQVJBTUVURVJfU0hJRlQgMA0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfTE5SRF9USU1JTkdfREFUQV9URVJNX1BBUkFNRVRFUl9NQVNLICgweGZmIDw8IDAp DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9MTlJEX1RJTUlOR19EQVRBX1NFVFRMRV9QQVJBTUVURVJf U0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTE5SRF9USU1JTkdfREFUQV9TRVRUTEVfUEFS QU1FVEVSX01BU0sgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQQ00gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEwQw0KKyNkZWZpbmUgU0VOSU5GX0NT STJfRFBDTV9EUENNX01PREVfU0hJRlQgICAgICAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9EUENN X0RQQ01fTU9ERV9NQVNLICAgICAgICgweGYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQ Q01fRElfMzBfRFBDTV9FTl9TSElGVCAgNw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBDTV9ESV8z MF9EUENNX0VOX01BU0sgICBCSVQoNykNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQQ01fRElfMzFf RFBDTV9FTl9TSElGVCAgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBDTV9ESV8zMV9EUENNX0VO X01BU0sgICBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQQ01fRElfMzJfRFBDTV9FTl9T SElGVCAgOQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBDTV9ESV8zMl9EUENNX0VOX01BU0sgICBC SVQoOSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQQ01fRElfMzNfRFBDTV9FTl9TSElGVCAgMTAN CisjZGVmaW5lIFNFTklORl9DU0kyX0RQQ01fRElfMzNfRFBDTV9FTl9NQVNLICAgQklUKDEwKQ0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBDTV9ESV8zNF9EUENNX0VOX1NISUZUICAxMQ0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfRFBDTV9ESV8zNF9EUENNX0VOX01BU0sgICBCSVQoMTEpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9EUENNX0RJXzM1X0RQQ01fRU5fU0hJRlQgIDEyDQorI2RlZmluZSBTRU5J TkZfQ1NJMl9EUENNX0RJXzM1X0RQQ01fRU5fTUFTSyAgIEJJVCgxMikNCisjZGVmaW5lIFNFTklO Rl9DU0kyX0RQQ01fRElfMzZfRFBDTV9FTl9TSElGVCAgMTMNCisjZGVmaW5lIFNFTklORl9DU0ky X0RQQ01fRElfMzZfRFBDTV9FTl9NQVNLICAgQklUKDEzKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf RFBDTV9ESV8zN19EUENNX0VOX1NISUZUICAxNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBDTV9E SV8zN19EUENNX0VOX01BU0sgICBCSVQoMTQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9EUENNX0RJ XzJBX0RQQ01fRU5fU0hJRlQgIDE1DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9EUENNX0RJXzJBX0RQ Q01fRU5fTUFTSyAgIEJJVCgxNSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEExMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf SU5UX0VOX0VSUl9GUkFNRV9TWU5DX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9F Tl9FUlJfRlJBTUVfU1lOQ19NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VO X0VSUl9JRF9TSElGVCAgICAgICAxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0lE X01BU0sgICAgICAgIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9FQ0Nf Tk9fRVJST1JfU0hJRlQgMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9FQ0NfTk9f RVJST1JfTUFTSyBCSVQoMikNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRUNDX0NP UlJFQ1RFRF9TSElGVCAzDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0VDQ19DT1JS RUNURURfTUFTSyBCSVQoMykNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRUNDX0RP VUJMRV9TSElGVCA0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0VDQ19ET1VCTEVf TUFTSyBCSVQoNCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfQ1JDX1NISUZUICAg ICAgNQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9DUkNfTUFTSyAgICAgICBCSVQo NSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfQ1JDX05PX0VSUk9SX1NISUZUIDYN CisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfQ1JDX05PX0VSUk9SX01BU0sgQklUKDYp DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX01VTFRJX0xBTkVfU1lOQ19TSElGVCA3 DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX01VTFRJX0xBTkVfU1lOQ19NQVNLIEJJ VCg3KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9TT1RfU1lOQ19IU19MTlJEMF9T SElGVCA4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX1NPVF9TWU5DX0hTX0xOUkQw X01BU0sgQklUKDgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX1NPVF9TWU5DX0hT X0xOUkQxX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfU09UX1NZTkNf SFNfTE5SRDFfTUFTSyBCSVQoOSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfU09U X1NZTkNfSFNfTE5SRDJfU0hJRlQgMTANCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJf U09UX1NZTkNfSFNfTE5SRDJfTUFTSyBCSVQoMTApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRf RU5fRVJSX1NPVF9TWU5DX0hTX0xOUkQzX1NISUZUIDExDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9J TlRfRU5fRVJSX1NPVF9TWU5DX0hTX0xOUkQzX01BU0sgQklUKDExKQ0KKyNkZWZpbmUgU0VOSU5G X0NTSTJfSU5UX0VOX0ZTX1NISUZUICAgICAgICAgICAxMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf SU5UX0VOX0ZTX01BU0sgICAgICAgICAgICBCSVQoMTIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9J TlRfRU5fTFNfU0hJRlQgICAgICAgICAgIDEzDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5f TFNfTUFTSyAgICAgICAgICAgIEJJVCgxMykNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9H U19TSElGVCAgICAgICAgICAgMTQNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9HU19NQVNL ICAgICAgICAgICAgQklUKDE0KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0ZFX1NISUZU ICAgICAgICAgICAxNQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0ZFX01BU0sgICAgICAg ICAgICBCSVQoMTUpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0ZSQU1FX1NZTkNf UzBfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRlJBTUVfU1lOQ19T MF9NQVNLIEJJVCgxNikNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRlJBTUVfU1lO Q19TMV9TSElGVCAxNw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9GUkFNRV9TWU5D X1MxX01BU0sgQklUKDE3KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9GUkFNRV9T WU5DX1MyX1NISUZUIDE4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0ZSQU1FX1NZ TkNfUzJfTUFTSyBCSVQoMTgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0ZSQU1F X1NZTkNfUzNfU0hJRlQgMTkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRlJBTUVf U1lOQ19TM19NQVNLIEJJVCgxOSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJfRlJB TUVfU1lOQ19TNF9TSElGVCAyMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9GUkFN RV9TWU5DX1M0X01BU0sgQklUKDIwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9G UkFNRV9TWU5DX1M1X1NISUZUIDIxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0ZS QU1FX1NZTkNfUzVfTUFTSyBCSVQoMjEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJS X0xBTkVfUkVTWU5DX1NISUZUIDIyDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0xB TkVfUkVTWU5DX01BU0sgQklUKDIyKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VSUl9G UkFNRV9TWU5DX1M2X1NISUZUIDIzDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJSX0ZS QU1FX1NZTkNfUzZfTUFTSyBCSVQoMjMpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVJS X0ZSQU1FX1NZTkNfUzdfU0hJRlQgMjQNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FUlJf RlJBTUVfU1lOQ19TN19NQVNLIEJJVCgyNCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9U UklPMF9FU0NBUEVfQ09ERV9ERVRFQ1RfU0hJRlQgMjYNCisjZGVmaW5lIFNFTklORl9DU0kyX0lO VF9FTl9UUklPMF9FU0NBUEVfQ09ERV9ERVRFQ1RfTUFTSyBCSVQoMjYpDQorI2RlZmluZSBTRU5J TkZfQ1NJMl9JTlRfRU5fVFJJTzFfRVNDQVBFX0NPREVfREVURUNUX1NISUZUIDI3DQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9JTlRfRU5fVFJJTzFfRVNDQVBFX0NPREVfREVURUNUX01BU0sgQklUKDI3 KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX1RSSU8yX0VTQ0FQRV9DT0RFX0RFVEVDVF9T SElGVCAyOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX1RSSU8yX0VTQ0FQRV9DT0RFX0RF VEVDVF9NQVNLIEJJVCgyOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9UUklPM19FU0NB UEVfQ09ERV9ERVRFQ1RfU0hJRlQgMjkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9UUklP M19FU0NBUEVfQ09ERV9ERVRFQ1RfTUFTSyBCSVQoMjkpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9J TlRfRU5fTUVSR0VfRklGT19BRl9TSElGVCAzMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VO X01FUkdFX0ZJRk9fQUZfTUFTSyBCSVQoMzApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5f SU5UX1dDTFJfRU5fU0hJRlQgIDMxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fSU5UX1dD TFJfRU5fTUFTSyAgIEJJVCgzMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEExNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf SU5UX1NUQVRVU19FUlJfRlJBTUVfU1lOQ19TVEFfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NT STJfSU5UX1NUQVRVU19FUlJfRlJBTUVfU1lOQ19TVEFfTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNF TklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0lEX1NUQV9TSElGVCAxDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9JTlRfU1RBVFVTX0VSUl9JRF9TVEFfTUFTSyBCSVQoMSkNCisjZGVmaW5lIFNFTklORl9D U0kyX0lOVF9TVEFUVVNfRVJSX0VDQ19OT19FUlJPUl9TVEFfU0hJRlQgMg0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRUNDX05PX0VSUk9SX1NUQV9NQVNLIEJJVCgyKQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRUNDX0NPUlJFQ1RFRF9TVEFfU0hJRlQg Mw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRUNDX0NPUlJFQ1RFRF9TVEFf TUFTSyBCSVQoMykNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0VDQ19ET1VC TEVfU1RBX1NISUZUIDQNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0VDQ19E T1VCTEVfU1RBX01BU0sgQklUKDQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VS Ul9DUkNfU1RBX1NISUZUIDUNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0NS Q19TVEFfTUFTSyBCSVQoNSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX01V TFRJX0xBTkVfU1lOQ19TVEFfU0hJRlQgNw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRV U19FUlJfTVVMVElfTEFORV9TWU5DX1NUQV9NQVNLIEJJVCg3KQ0KKyNkZWZpbmUgU0VOSU5GX0NT STJfSU5UX1NUQVRVU19FUlJfU09UX1NZTkNfSFNfTE5SRDBfU1RBX1NISUZUIDgNCisjZGVmaW5l IFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX1NPVF9TWU5DX0hTX0xOUkQwX1NUQV9NQVNLIEJJ VCg4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfU09UX1NZTkNfSFNfTE5S RDFfU1RBX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX1NPVF9T WU5DX0hTX0xOUkQxX1NUQV9NQVNLIEJJVCg5KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NU QVRVU19FUlJfU09UX1NZTkNfSFNfTE5SRDJfU1RBX1NISUZUIDEwDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9JTlRfU1RBVFVTX0VSUl9TT1RfU1lOQ19IU19MTlJEMl9TVEFfTUFTSyBCSVQoMTApDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VSUl9TT1RfU1lOQ19IU19MTlJEM19TVEFf U0hJRlQgMTENCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX1NPVF9TWU5DX0hT X0xOUkQzX1NUQV9NQVNLIEJJVCgxMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNf RlNfU1RBX1NISUZUICAgMTINCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRlNfU1RB X01BU0sgICAgQklUKDEyKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19MU19TVEFf U0hJRlQgICAxMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19MU19TVEFfTUFTSyAg ICBCSVQoMTMpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0dTX1NUQV9TSElGVCAg IDE0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0dTX1NUQV9NQVNLICAgIEJJVCgx NCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRkVfU1RBX1NISUZUICAgMTUNCisj ZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRkVfU1RBX01BU0sgICAgQklUKDE1KQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRlJBTUVfU1lOQ19TMF9TVEFfU0hJRlQg MTYNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0ZSQU1FX1NZTkNfUzBfU1RB X01BU0sgQklUKDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRlJBTUVf U1lOQ19TMV9TVEFfU0hJRlQgMTcNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJS X0ZSQU1FX1NZTkNfUzFfU1RBX01BU0sgQklUKDE3KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5U X1NUQVRVU19FUlJfRlJBTUVfU1lOQ19TMl9TVEFfU0hJRlQgMTgNCisjZGVmaW5lIFNFTklORl9D U0kyX0lOVF9TVEFUVVNfRVJSX0ZSQU1FX1NZTkNfUzJfU1RBX01BU0sgQklUKDE4KQ0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRlJBTUVfU1lOQ19TM19TVEFfU0hJRlQgMTkN CisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0ZSQU1FX1NZTkNfUzNfU1RBX01B U0sgQklUKDE5KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRlJBTUVfU1lO Q19TNF9TVEFfU0hJRlQgMjANCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVJSX0ZS QU1FX1NZTkNfUzRfU1RBX01BU0sgQklUKDIwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NU QVRVU19FUlJfRlJBTUVfU1lOQ19TNV9TVEFfU0hJRlQgMjENCisjZGVmaW5lIFNFTklORl9DU0ky X0lOVF9TVEFUVVNfRVJSX0ZSQU1FX1NZTkNfUzVfU1RBX01BU0sgQklUKDIxKQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfTEFORV9SRVNZTkNfU1RBX1NISUZUIDIyDQorI2Rl ZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VSUl9MQU5FX1JFU1lOQ19TVEFfTUFTSyBCSVQo MjIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VSUl9GUkFNRV9TWU5DX1M2X1NU QV9TSElGVCAyMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FUlJfRlJBTUVfU1lO Q19TNl9TVEFfTUFTSyBCSVQoMjMpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VS Ul9GUkFNRV9TWU5DX1M3X1NUQV9TSElGVCAyNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NU QVRVU19FUlJfRlJBTUVfU1lOQ19TN19TVEFfTUFTSyBCSVQoMjQpDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9JTlRfU1RBVFVTX1RSSU8wX0VTQ0FQRV9DT0RFX0RFVEVDVF9TVEFfU0hJRlQgMjYNCisj ZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfVFJJTzBfRVNDQVBFX0NPREVfREVURUNUX1NU QV9NQVNLIEJJVCgyNikNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfVFJJTzFfRVND QVBFX0NPREVfREVURUNUX1NUQV9TSElGVCAyNw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NU QVRVU19UUklPMV9FU0NBUEVfQ09ERV9ERVRFQ1RfU1RBX01BU0sgQklUKDI3KQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfSU5UX1NUQVRVU19UUklPMl9FU0NBUEVfQ09ERV9ERVRFQ1RfU1RBX1NISUZU IDI4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX1RSSU8yX0VTQ0FQRV9DT0RFX0RF VEVDVF9TVEFfTUFTSyBCSVQoMjgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX1RS SU8zX0VTQ0FQRV9DT0RFX0RFVEVDVF9TVEFfU0hJRlQgMjkNCisjZGVmaW5lIFNFTklORl9DU0ky X0lOVF9TVEFUVVNfVFJJTzNfRVNDQVBFX0NPREVfREVURUNUX1NUQV9NQVNLIEJJVCgyOSkNCisj ZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfTUVSR0VfRklGT19BRl9TSElGVCAzMA0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19NRVJHRV9GSUZPX0FGX01BU0sgQklUKDMwKQ0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfREdCX1NFTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwQTE4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ER0JfU0VMX0RFQlVHX1NFTF9TSElG VCAgIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0RHQl9TRUxfREVCVUdfU0VMX01BU0sgICAgKDB4 ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RHQl9TRUxfREVCVUdfRU5fU0hJRlQgICAg MzENCisjZGVmaW5lIFNFTklORl9DU0kyX0RHQl9TRUxfREVCVUdfRU5fTUFTSyAgICAgQklUKDMx KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREJHX1BPUlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwQTFDDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9EQkdfUE9SVF9DVExfREJHX1BP UlRfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREJHX1BPUlRfQ1RMX0RCR19QT1JUX01B U0sgKDB4ZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfU1BBUkUwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwQTIwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9TUEFS RTBfU1BBUkUwX1NISUZUICAgICAgIDANCisjZGVmaW5lIFNFTklORl9DU0kyX1NQQVJFMF9TUEFS RTBfTUFTSyAgICAgICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1NQ QVJFMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEyNA0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfU1BBUkUxX1NQQVJFMV9TSElGVCAgICAgICAwDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9TUEFSRTFfU1BBUkUxX01BU0sgICAgICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9MTlJDX0ZTTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDBBMjgNCisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkNfRlNNX0xOUkNfUlhfRlNNX1NISUZUIDAN CisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkNfRlNNX0xOUkNfUlhfRlNNX01BU0sgKDB4M2YgPDwg MCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkRfRlNNICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MEEyQw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTE5SRF9GU01fTE5SRDBfUlhf RlNNX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkRfRlNNX0xOUkQwX1JYX0ZTTV9N QVNLICgweDdmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9MTlJEX0ZTTV9MTlJEMV9SWF9G U01fU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTE5SRF9GU01fTE5SRDFfUlhfRlNNX01B U0sgKDB4N2YgPDwgOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkRfRlNNX0xOUkQyX1JYX0ZT TV9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTE5SRF9GU01fTE5SRDJfUlhfRlNNX01B U0sgKDB4N2YgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9MTlJEX0ZTTV9MTlJEM19SWF9G U01fU0hJRlQgMjQNCisjZGVmaW5lIFNFTklORl9DU0kyX0xOUkRfRlNNX0xOUkQzX1JYX0ZTTV9N QVNLICgweDdmIDw8IDI0KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRlJBTUVfTElORV9OVU0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwQTMwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9GUkFN RV9MSU5FX05VTV9GUkFNRV9OVU1fU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRlJBTUVf TElORV9OVU1fRlJBTUVfTlVNX01BU0sgKDB4ZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NT STJfRlJBTUVfTElORV9OVU1fTElORV9OVU1fU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DU0ky X0ZSQU1FX0xJTkVfTlVNX0xJTkVfTlVNX01BU0sgKDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIFNF TklORl9DU0kyX0dFTkVSSUNfU0hPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEz NA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfR0VORVJJQ19TSE9SVF9HRU5FUklDX1NIT1JUX1BBQ0tF VF9EVF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9HRU5FUklDX1NIT1JUX0dFTkVSSUNf U0hPUlRfUEFDS0VUX0RUX01BU0sgKDB4M2YgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0dF TkVSSUNfU0hPUlRfR0VORVJJQ19TSE9SVF9QQUNLRVRfREFUQV9TSElGVCAxNg0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfR0VORVJJQ19TSE9SVF9HRU5FUklDX1NIT1JUX1BBQ0tFVF9EQVRBX01BU0sg KDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9DU0kyX0hTUlhfREJHICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MEEzOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSFNSWF9E QkdfREFUQV9MQU5FMF9IU1JYX0VOX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0hTUlhf REJHX0RBVEFfTEFORTBfSFNSWF9FTl9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf SFNSWF9EQkdfREFUQV9MQU5FMV9IU1JYX0VOX1NISUZUIDENCisjZGVmaW5lIFNFTklORl9DU0ky X0hTUlhfREJHX0RBVEFfTEFORTFfSFNSWF9FTl9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5G X0NTSTJfSFNSWF9EQkdfREFUQV9MQU5FMl9IU1JYX0VOX1NISUZUIDINCisjZGVmaW5lIFNFTklO Rl9DU0kyX0hTUlhfREJHX0RBVEFfTEFORTJfSFNSWF9FTl9NQVNLIEJJVCgyKQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfSFNSWF9EQkdfREFUQV9MQU5FM19IU1JYX0VOX1NISUZUIDMNCisjZGVmaW5l IFNFTklORl9DU0kyX0hTUlhfREJHX0RBVEFfTEFORTNfSFNSWF9FTl9NQVNLIEJJVCgzKQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfSFNSWF9EQkdfQ0xPQ0tfTEFORV9IU1JYX0VOX1NISUZUIDQNCisj ZGVmaW5lIFNFTklORl9DU0kyX0hTUlhfREJHX0NMT0NLX0xBTkVfSFNSWF9FTl9NQVNLIEJJVCg0 KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwQTNDDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9WQzBfU0hJRlQgICAgICAg ICAgICAgIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX1ZDMF9NQVNLICAgICAgICAgICAgICAg KDB4MyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfRFQwX1NISUZUICAgICAgICAgICAg ICAyDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9EVDBfTUFTSyAgICAgICAgICAgICAgICgweDNm IDw8IDIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9WQzFfU0hJRlQgICAgICAgICAgICAgIDgN CisjZGVmaW5lIFNFTklORl9DU0kyX0RJX1ZDMV9NQVNLICAgICAgICAgICAgICAgKDB4MyA8PCA4 KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfRFQxX1NISUZUICAgICAgICAgICAgICAxMA0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfRElfRFQxX01BU0sgICAgICAgICAgICAgICAoMHgzZiA8PCAxMCkN CisjZGVmaW5lIFNFTklORl9DU0kyX0RJX1ZDMl9TSElGVCAgICAgICAgICAgICAgMTYNCisjZGVm aW5lIFNFTklORl9DU0kyX0RJX1ZDMl9NQVNLICAgICAgICAgICAgICAgKDB4MyA8PCAxNikNCisj ZGVmaW5lIFNFTklORl9DU0kyX0RJX0RUMl9TSElGVCAgICAgICAgICAgICAgMTgNCisjZGVmaW5l IFNFTklORl9DU0kyX0RJX0RUMl9NQVNLICAgICAgICAgICAgICAgKDB4M2YgPDwgMTgpDQorI2Rl ZmluZSBTRU5JTkZfQ1NJMl9ESV9WQzNfU0hJRlQgICAgICAgICAgICAgIDI0DQorI2RlZmluZSBT RU5JTkZfQ1NJMl9ESV9WQzNfTUFTSyAgICAgICAgICAgICAgICgweDMgPDwgMjQpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9ESV9EVDNfU0hJRlQgICAgICAgICAgICAgIDI2DQorI2RlZmluZSBTRU5J TkZfQ1NJMl9ESV9EVDNfTUFTSyAgICAgICAgICAgICAgICgweDNmIDw8IDI2KQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfSFNfVFJBSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw QTQwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9IU19UUkFJTF9IU19UUkFJTF9QQVJBTUVURVJfU0hJ RlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSFNfVFJBSUxfSFNfVFJBSUxfUEFSQU1FVEVSX01B U0sgKDB4ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NUUkwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MEE0NA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfQ1RS TF9WQzBfSU5URVJMRUFWSU5HX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NUUkxf VkMwX0lOVEVSTEVBVklOR19NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfQ1RS TF9EVDBfSU5URVJMRUFWSU5HX1NISUZUIDENCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NUUkxf RFQwX0lOVEVSTEVBVklOR19NQVNLICgweDMgPDwgMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJ X0NUUkxfVkMxX0lOVEVSTEVBVklOR19TSElGVCA4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9D VFJMX1ZDMV9JTlRFUkxFQVZJTkdfTUFTSyBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJ X0NUUkxfRFQxX0lOVEVSTEVBVklOR19TSElGVCA5DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9D VFJMX0RUMV9JTlRFUkxFQVZJTkdfTUFTSyAoMHgzIDw8IDkpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ESV9DVFJMX1ZDMl9JTlRFUkxFQVZJTkdfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DU0ky X0RJX0NUUkxfVkMyX0lOVEVSTEVBVklOR19NQVNLIEJJVCgxNikNCisjZGVmaW5lIFNFTklORl9D U0kyX0RJX0NUUkxfRFQyX0lOVEVSTEVBVklOR19TSElGVCAxNw0KKyNkZWZpbmUgU0VOSU5GX0NT STJfRElfQ1RSTF9EVDJfSU5URVJMRUFWSU5HX01BU0sgKDB4MyA8PCAxNykNCisjZGVmaW5lIFNF TklORl9DU0kyX0RJX0NUUkxfVkMzX0lOVEVSTEVBVklOR19TSElGVCAyNA0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfRElfQ1RSTF9WQzNfSU5URVJMRUFWSU5HX01BU0sgQklUKDI0KQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfRElfQ1RSTF9EVDNfSU5URVJMRUFWSU5HX1NISUZUIDI1DQorI2RlZmluZSBT RU5JTkZfQ1NJMl9ESV9DVFJMX0RUM19JTlRFUkxFQVZJTkdfTUFTSyAoMHgzIDw8IDI1KQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0NPTjEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwQTRDDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfQ09OMV9ERVRFQ1RfU1lOQ19E SVNBQkxFX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04xX0RFVEVDVF9T WU5DX0RJU0FCTEVfTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04x X0RFVEVDVF9TWU5DX01BU0tfU0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0NP TjFfREVURUNUX1NZTkNfTUFTS19NQVNLICgweDdmIDw8IDEpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ERVRFQ1RfQ09OMV9TWU5DX1dPUkRfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVU RUNUX0NPTjFfU1lOQ19XT1JEX01BU0sgKDB4MWZmZmZmIDw8IDgpDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9ERVRFQ1RfQ09OMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBNTANCisj ZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04yX0RFVEVDVF9FU0NBUEVfRElTQUJMRV9TSElG VCAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfQ09OMl9ERVRFQ1RfRVNDQVBFX0RJU0FC TEVfTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04yX0RFVEVDVF9F U0NBUEVfTUFTS19TSElGVCAxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfQ09OMl9ERVRF Q1RfRVNDQVBFX01BU0tfTUFTSyAoMHg3ZiA8PCAxKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVU RUNUX0NPTjJfRVNDQVBFX1dPUkRfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNU X0NPTjJfRVNDQVBFX1dPUkRfTUFTSyAoMHgxZmZmZmYgPDwgOCkNCisjZGVmaW5lIFNFTklORl9D U0kyX0RFVEVDVF9DT04zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEE1NA0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0NPTjNfREVURUNUX1BPU1RfRElTQUJMRV9TSElGVCAw DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfQ09OM19ERVRFQ1RfUE9TVF9ESVNBQkxFX01B U0sgQklUKDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfQ09OM19ERVRFQ1RfUE9TVF9N QVNLX1NISUZUIDENCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04zX0RFVEVDVF9QT1NU X01BU0tfTUFTSyAoMHg3ZiA8PCAxKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0NPTjNf UE9TVF9XT1JEX1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9DT04zX1BPU1Rf V09SRF9NQVNLICgweDFmZmZmZiA8PCA4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMF9DT04w ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQTU4DQorI2RlZmluZSBTRU5JTkZf Q1NJMl9STFIwX0NPTjBfUkxSMF9QUkJTX1BBVFRFUk5fU0VMX1NISUZUIDANCisjZGVmaW5lIFNF TklORl9DU0kyX1JMUjBfQ09OMF9STFIwX1BSQlNfUEFUVEVSTl9TRUxfTUFTSyAoMHhmZiA8PCAw KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMF9DT04wX1JMUjBfUFJCU19TRUVEXzBfU0hJRlQg OA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMF9DT04wX1JMUjBfUFJCU19TRUVEXzBfTUFTSyAo MHhmZiA8PCA4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMF9DT04wX1JMUjBfUFJCU19TRUVE XzFfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjBfQ09OMF9STFIwX1BSQlNfU0VF RF8xX01BU0sgKDB4ZmYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIwX0NPTjBfUkxS MF9QUkJTX1NFRURfMl9TSElGVCAyNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMF9DT04wX1JM UjBfUFJCU19TRUVEXzJfTUFTSyAoMHhmZiA8PCAyNCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JM UjFfQ09OMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEE1Qw0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUkxSMV9DT04wX1JMUjFfUFJCU19QQVRURVJOX1NFTF9TSElGVCAwDQorI2Rl ZmluZSBTRU5JTkZfQ1NJMl9STFIxX0NPTjBfUkxSMV9QUkJTX1BBVFRFUk5fU0VMX01BU0sgKDB4 ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjFfQ09OMF9STFIxX1BSQlNfU0VFRF8w X1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjFfQ09OMF9STFIxX1BSQlNfU0VFRF8w X01BU0sgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjFfQ09OMF9STFIxX1BS QlNfU0VFRF8xX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIxX0NPTjBfUkxSMV9Q UkJTX1NFRURfMV9NQVNLICgweGZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMV9D T04wX1JMUjFfUFJCU19TRUVEXzJfU0hJRlQgMjQNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjFf Q09OMF9STFIxX1BSQlNfU0VFRF8yX01BU0sgKDB4ZmYgPDwgMjQpDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9STFIyX0NPTjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBNjANCisj ZGVmaW5lIFNFTklORl9DU0kyX1JMUjJfQ09OMF9STFIyX1BSQlNfUEFUVEVSTl9TRUxfU0hJRlQg MA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMl9DT04wX1JMUjJfUFJCU19QQVRURVJOX1NFTF9N QVNLICgweGZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIyX0NPTjBfUkxSMl9QUkJT X1NFRURfMF9TSElGVCA4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIyX0NPTjBfUkxSMl9QUkJT X1NFRURfMF9NQVNLICgweGZmIDw8IDgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIyX0NPTjBf UkxSMl9QUkJTX1NFRURfMV9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSMl9DT04w X1JMUjJfUFJCU19TRUVEXzFfTUFTSyAoMHhmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9DU0ky X1JMUjJfQ09OMF9STFIyX1BSQlNfU0VFRF8yX1NISUZUIDI0DQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9STFIyX0NPTjBfUkxSMl9QUkJTX1NFRURfMl9NQVNLICgweGZmIDw8IDI0KQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUkxSX0NPTjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw QTY0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFJfQ09OMF9STFJOX1BSQlNfUEFUVEVSTl9TRUxf U0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSX0NPTjBfUkxSTl9QUkJTX1BBVFRFUk5f U0VMX01BU0sgKDB4ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUl9DT04wX1JMUk5f UFJCU19TRUVEXzBfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkxSX0NPTjBfUkxSTl9Q UkJTX1NFRURfMF9NQVNLICgweGZmIDw8IDgpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFJfQ09O MF9STFJOX1BSQlNfU0VFRF8xX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFJfQ09O MF9STFJOX1BSQlNfU0VFRF8xX01BU0sgKDB4ZmYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9STFJfQ09OMF9STFJOX1BSQlNfU0VFRF8yX1NISUZUIDI0DQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9STFJfQ09OMF9STFJOX1BSQlNfU0VFRF8yX01BU0sgKDB4ZmYgPDwgMjQpDQorI2RlZmluZSBT RU5JTkZfQ1NJMl9NVVhfQ09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBB NjgNCisjZGVmaW5lIFNFTklORl9DU0kyX01VWF9DT05fRFBIWV9SWF9FWFRFUk5BTF9FTl9TSElG VCAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NVVhfQ09OX0RQSFlfUlhfRVhURVJOQUxfRU5fTUFT SyBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX01VWF9DT05fQ1BIWV9UWF9FWFRFUk5BTF9F Tl9TSElGVCAxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NVVhfQ09OX0NQSFlfVFhfRVhURVJOQUxf RU5fTUFTSyBCSVQoMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX01VWF9DT05fQ1BIWV9SWF9FWFRF Uk5BTF9FTl9TSElGVCAyDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NVVhfQ09OX0NQSFlfUlhfRVhU RVJOQUxfRU5fTUFTSyBCSVQoMikNCisjZGVmaW5lIFNFTklORl9DU0kyX01VWF9DT05fUkxSX1BB VFRFUk5fREVMQVlfRU5fU0hJRlQgMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTVVYX0NPTl9STFJf UEFUVEVSTl9ERUxBWV9FTl9NQVNLIEJJVCgzKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTVVYX0NP Tl9QT1NUX1BBQ0tFVF9JR05PUkVfRU5fU0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTVVY X0NPTl9QT1NUX1BBQ0tFVF9JR05PUkVfRU5fTUFTSyBCSVQoNCkNCisjZGVmaW5lIFNFTklORl9D U0kyX0RFVEVDVF9EQkcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEE2Qw0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfREVURUNUX1NZTkNfTEFORTBfU1RfU0hJRlQg MA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfREVURUNUX1NZTkNfTEFORTBfU1Rf TUFTSyBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcwX0RFVEVDVF9FU0NB UEVfTEFORTBfU1RfU0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfREVU RUNUX0VTQ0FQRV9MQU5FMF9TVF9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVU RUNUX0RCRzBfREVURUNUX1BPU1RfTEFORTBfU1RfU0hJRlQgMg0KKyNkZWZpbmUgU0VOSU5GX0NT STJfREVURUNUX0RCRzBfREVURUNUX1BPU1RfTEFORTBfU1RfTUFTSyBCSVQoMikNCisjZGVmaW5l IFNFTklORl9DU0kyX0RFVEVDVF9EQkcwX1BPU0lUSU9OX1NZTkNfTEFORTBfU1RfU0hJRlQgMw0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfUE9TSVRJT05fU1lOQ19MQU5FMF9TVF9N QVNLICgweGYgPDwgMykNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcwX1BPU0lUSU9O X0VTQ0FQRV9MQU5FMF9TVF9TSElGVCA3DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJH MF9QT1NJVElPTl9FU0NBUEVfTEFORTBfU1RfTUFTSyAoMHhmIDw8IDcpDQorI2RlZmluZSBTRU5J TkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfU1lOQ19MQU5FMV9TVF9TSElGVCAxMg0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfREVURUNUX1NZTkNfTEFORTFfU1RfTUFTSyBCSVQo MTIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfRVNDQVBFX0xBTkUx X1NUX1NISUZUIDEzDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfRVND QVBFX0xBTkUxX1NUX01BU0sgQklUKDEzKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RC RzBfREVURUNUX1BPU1RfTEFORTFfU1RfU0hJRlQgMTQNCisjZGVmaW5lIFNFTklORl9DU0kyX0RF VEVDVF9EQkcwX0RFVEVDVF9QT1NUX0xBTkUxX1NUX01BU0sgQklUKDE0KQ0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfREVURUNUX0RCRzBfUE9TSVRJT05fU1lOQ19MQU5FMV9TVF9TSElGVCAxNQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfUE9TSVRJT05fU1lOQ19MQU5FMV9TVF9NQVNL ICgweGYgPDwgMTUpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMF9QT1NJVElPTl9F U0NBUEVfTEFORTFfU1RfU0hJRlQgMTkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcw X1BPU0lUSU9OX0VTQ0FQRV9MQU5FMV9TVF9NQVNLICgweGYgPDwgMTkpDQorI2RlZmluZSBTRU5J TkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfU1lOQ19MQU5FMl9TVF9TSElGVCAyNA0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfREVURUNUX1NZTkNfTEFORTJfU1RfTUFTSyBCSVQo MjQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfRVNDQVBFX0xBTkUy X1NUX1NISUZUIDI1DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMF9ERVRFQ1RfRVND QVBFX0xBTkUyX1NUX01BU0sgQklUKDI1KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RC RzBfREVURUNUX1BPU1RfTEFORTJfU1RfU0hJRlQgMjYNCisjZGVmaW5lIFNFTklORl9DU0kyX0RF VEVDVF9EQkcwX0RFVEVDVF9QT1NUX0xBTkUyX1NUX01BU0sgQklUKDI2KQ0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfREVURUNUX0RCRzBfUE9TSVRJT05fU1lOQ19MQU5FMl9TVF9TSElGVCAyNw0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfREVURUNUX0RCRzBfUE9TSVRJT05fU1lOQ19MQU5FMl9TVF9NQVNL ICgweGYgPDwgMjcpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDBBNzANCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9E QkcxX1BPU0lUSU9OX0VTQ0FQRV9MQU5FMl9TVF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ERVRFQ1RfREJHMV9QT1NJVElPTl9FU0NBUEVfTEFORTJfU1RfTUFTSyAoMHhmIDw8IDApDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9SRVNZTkNfTUVSR0VfQ1RMICAgICAgICAgICAgICAgICAgICAg ICAgICAweDBBNzQNCisjZGVmaW5lIFNFTklORl9DU0kyX1JFU1lOQ19NRVJHRV9DVExfQ1BIWV9M QU5FX1JFU1lOQ19DTlRfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkVTWU5DX01FUkdF X0NUTF9DUEhZX0xBTkVfUkVTWU5DX0NOVF9NQVNLICgweDcgPDwgMCkNCisjZGVmaW5lIFNFTklO Rl9DU0kyX1JFU1lOQ19NRVJHRV9DVExfTEFORV9SRVNZTkNfRkxVU0hfRU5fU0hJRlQgOA0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfUkVTWU5DX01FUkdFX0NUTF9MQU5FX1JFU1lOQ19GTFVTSF9FTl9N QVNLIEJJVCg4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkVTWU5DX01FUkdFX0NUTF9MQU5FX1JF U1lOQ19EQVRBT1VUX09QVElPTl9TSElGVCA5DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9SRVNZTkNf TUVSR0VfQ1RMX0xBTkVfUkVTWU5DX0RBVEFPVVRfT1BUSU9OX01BU0sgQklUKDkpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9SRVNZTkNfTUVSR0VfQ1RMX0JZUEFTU19MQU5FX1JFU1lOQ19TSElGVCAx MA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkVTWU5DX01FUkdFX0NUTF9CWVBBU1NfTEFORV9SRVNZ TkNfTUFTSyBCSVQoMTApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9SRVNZTkNfTUVSR0VfQ1RMX0NE UEhZX1NFTF9TSElGVCAxMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUkVTWU5DX01FUkdFX0NUTF9D RFBIWV9TRUxfTUFTSyBCSVQoMTEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9fTVVY ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBNzgNCisjZGVmaW5lIFNFTklORl9DU0ky X0NUUkxfVFJJT19NVVhfVFJJTzBfTVVYX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0NU UkxfVFJJT19NVVhfVFJJTzBfTVVYX01BU0sgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NT STJfQ1RSTF9UUklPX01VWF9UUklPMV9NVVhfU0hJRlQgMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf Q1RSTF9UUklPX01VWF9UUklPMV9NVVhfTUFTSyAoMHg3IDw8IDMpDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9DVFJMX1RSSU9fTVVYX1RSSU8yX01VWF9TSElGVCA2DQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9DVFJMX1RSSU9fTVVYX1RSSU8yX01VWF9NQVNLICgweDcgPDwgNikNCisjZGVmaW5lIFNFTklO Rl9DU0kyX0NUUkxfVFJJT19NVVhfVFJJTzNfTVVYX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9D U0kyX0NUUkxfVFJJT19NVVhfVFJJTzNfTVVYX01BU0sgKDB4NyA8PCA5KQ0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfQ1RSTF9UUklPX0NPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQTdD DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9fQ09OX1RSSU8wX0xQUlhfRU5fU0hJRlQg MA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RSTF9UUklPX0NPTl9UUklPMF9MUFJYX0VOX01BU0sg QklUKDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9fQ09OX1RSSU8wX0hTUlhfRU5f U0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RSTF9UUklPX0NPTl9UUklPMF9IU1JYX0VO X01BU0sgQklUKDEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9fQ09OX1RSSU8xX0xQ UlhfRU5fU0hJRlQgMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RSTF9UUklPX0NPTl9UUklPMV9M UFJYX0VOX01BU0sgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9fQ09OX1RS SU8xX0hTUlhfRU5fU0hJRlQgMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RSTF9UUklPX0NPTl9U UklPMV9IU1JYX0VOX01BU0sgQklUKDMpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJMX1RSSU9f Q09OX1RSSU8yX0xQUlhfRU5fU0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RSTF9UUklP X0NPTl9UUklPMl9MUFJYX0VOX01BU0sgQklUKDQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DVFJM X1RSSU9fQ09OX1RSSU8yX0hTUlhfRU5fU0hJRlQgNQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1RS TF9UUklPX0NPTl9UUklPMl9IU1JYX0VOX01BU0sgQklUKDUpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9DVFJMX1RSSU9fQ09OX1RSSU8zX0xQUlhfRU5fU0hJRlQgNg0KKyNkZWZpbmUgU0VOSU5GX0NT STJfQ1RSTF9UUklPX0NPTl9UUklPM19MUFJYX0VOX01BU0sgQklUKDYpDQorI2RlZmluZSBTRU5J TkZfQ1NJMl9DVFJMX1RSSU9fQ09OX1RSSU8zX0hTUlhfRU5fU0hJRlQgNw0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfQ1RSTF9UUklPX0NPTl9UUklPM19IU1JYX0VOX01BU0sgQklUKDcpDQorI2RlZmlu ZSBTRU5JTkZfRklYX0FERFJfQ1BIWTBfREJHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDBBODANCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMF9EQkdfRVJST1JfQ09VTlRfQ1BI WTBfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMF9EQkdfRVJST1JfQ09V TlRfQ1BIWTBfTUFTSyAoMHhmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZ MF9EQkdfV09SRF9DT1VOVF9PVkVSX0ZMT0FUX0NQSFkwX1NISUZUIDI0DQorI2RlZmluZSBTRU5J TkZfRklYX0FERFJfQ1BIWTBfREJHX1dPUkRfQ09VTlRfT1ZFUl9GTE9BVF9DUEhZMF9NQVNLIEJJ VCgyNCkNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMV9EQkcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MEE4NA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkxX0RCR19F UlJPUl9DT1VOVF9DUEhZMV9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkx X0RCR19FUlJPUl9DT1VOVF9DUEhZMV9NQVNLICgweGZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5G X0ZJWF9BRERSX0NQSFkxX0RCR19XT1JEX0NPVU5UX09WRVJfRkxPQVRfQ1BIWTFfU0hJRlQgMjQN CisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMV9EQkdfV09SRF9DT1VOVF9PVkVSX0ZMT0FU X0NQSFkxX01BU0sgQklUKDI0KQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkyX0RCRyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQTg4DQorI2RlZmluZSBTRU5JTkZfRklYX0FE RFJfQ1BIWTJfREJHX0VSUk9SX0NPVU5UX0NQSFkyX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZf RklYX0FERFJfQ1BIWTJfREJHX0VSUk9SX0NPVU5UX0NQSFkyX01BU0sgKDB4ZmYgPDwgMTYpDQor I2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTJfREJHX1dPUkRfQ09VTlRfT1ZFUl9GTE9BVF9D UEhZMl9TSElGVCAyNA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkyX0RCR19XT1JEX0NP VU5UX09WRVJfRkxPQVRfQ1BIWTJfTUFTSyBCSVQoMjQpDQorI2RlZmluZSBTRU5JTkZfRklYX0FE RFJfREJHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBOEMNCisjZGVmaW5l IFNFTklORl9GSVhfQUREUl9EQkdfRVJST1JfQ09VTlRfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklO Rl9GSVhfQUREUl9EQkdfRVJST1JfQ09VTlRfTUFTSyAgKDB4ZmYgPDwgMTYpDQorI2RlZmluZSBT RU5JTkZfRklYX0FERFJfREJHX1dPUkRfQ09VTlRfT1ZFUl9GTE9BVF9TSElGVCAyNA0KKyNkZWZp bmUgU0VOSU5GX0ZJWF9BRERSX0RCR19XT1JEX0NPVU5UX09WRVJfRkxPQVRfTUFTSyBCSVQoMjQp DQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ1BIWTBfREJHMCAgICAgICAgICAg ICAgICAgICAweDBBOTANCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMF9E QkcwX1NZTUJPTF9TVFJFQU0wX0NQSFkwX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9XSVJFX1NU QVRFX0RFQ09ERV9DUEhZMF9EQkcwX1NZTUJPTF9TVFJFQU0wX0NQSFkwX01BU0sgXA0KKygweGZm ZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ1BIWTBfREJH MSAgICAgICAgICAgICAgICAgICAweDBBOTQNCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RF Q09ERV9DUEhZMF9EQkcxX1NZTUJPTF9TVFJFQU0xX0NQSFkwX1NISUZUIDANCisjZGVmaW5lIFNF TklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMF9EQkcxX1NZTUJPTF9TVFJFQU0xX0NQSFkwX01B U0sgXA0KKygweDNmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQ SFkwX0RCRzFfU1lNQk9MX1NUUkVBTV9WQUxJRF9DUEhZMF9TSElGVCAxMA0KKyNkZWZpbmUgU0VO SU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQSFkwX0RCRzFfU1lNQk9MX1NUUkVBTV9WQUxJRF9DUEhZ MF9NQVNLIFwNCitCSVQoMTApDQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ1BI WTFfREJHMCAgICAgICAgICAgICAgICAgICAweDBBOTgNCisjZGVmaW5lIFNFTklORl9XSVJFX1NU QVRFX0RFQ09ERV9DUEhZMV9EQkcwX1NZTUJPTF9TVFJFQU0wX0NQSFkxX1NISUZUIDANCisjZGVm aW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMV9EQkcwX1NZTUJPTF9TVFJFQU0wX0NQ SFkxX01BU0sgXA0KKygweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFU RV9ERUNPREVfQ1BIWTFfREJHMSAgICAgICAgICAgICAgICAgICAweDBBOUMNCisjZGVmaW5lIFNF TklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMV9EQkcxX1NZTUJPTF9TVFJFQU0xX0NQSFkxX1NI SUZUIDANCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMV9EQkcxX1NZTUJP TF9TVFJFQU0xX0NQSFkxX01BU0sgXA0KKygweDNmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1dJ UkVfU1RBVEVfREVDT0RFX0NQSFkxX0RCRzFfU1lNQk9MX1NUUkVBTV9WQUxJRF9DUEhZMV9TSElG VCAxMA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQSFkxX0RCRzFfU1lNQk9M X1NUUkVBTV9WQUxJRF9DUEhZMV9NQVNLIFwNCitCSVQoMTApDQorI2RlZmluZSBTRU5JTkZfV0lS RV9TVEFURV9ERUNPREVfQ1BIWTJfREJHMCAgICAgICAgICAgICAgICAgICAweDBBQTANCisjZGVm aW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMl9EQkcwX1NZTUJPTF9TVFJFQU0wX0NQ SFkyX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMl9EQkcw X1NZTUJPTF9TVFJFQU0wX0NQSFkyX01BU0sgXA0KKygweGZmZmZmZmZmIDw8IDApDQorI2RlZmlu ZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ1BIWTJfREJHMSAgICAgICAgICAgICAgICAgICAw eDBBQTQNCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZMl9EQkcxX1NZTUJP TF9TVFJFQU0xX0NQSFkyX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09E RV9DUEhZMl9EQkcxX1NZTUJPTF9TVFJFQU0xX0NQSFkyX01BU0sgXA0KKygweDNmZiA8PCAwKQ0K KyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQSFkyX0RCRzFfU1lNQk9MX1NUUkVB TV9WQUxJRF9DUEhZMl9TSElGVCAxMA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RF X0NQSFkyX0RCRzFfU1lNQk9MX1NUUkVBTV9WQUxJRF9DUEhZMl9NQVNLIFwNCitCSVQoMTApDQor I2RlZmluZSBTRU5JTkZfU1lOQ19SRVNZTkNfQ1RMICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDBBQTgNCisjZGVmaW5lIFNFTklORl9TWU5DX1JFU1lOQ19DVExfU1lOQ19ERVRFQ1RJ T05fU0VMX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9TWU5DX1JFU1lOQ19DVExfU1lOQ19ERVRF Q1RJT05fU0VMX01BU0sgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX1NZTkNfUkVTWU5DX0NU TF9GTFVTSF9WQUxJRF9TSElGVCAzDQorI2RlZmluZSBTRU5JTkZfU1lOQ19SRVNZTkNfQ1RMX0ZM VVNIX1ZBTElEX01BU0sgQklUKDMpDQorI2RlZmluZSBTRU5JTkZfUE9TVF9ERVRFQ1RfQ1RMICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBQUMNCisjZGVmaW5lIFNFTklORl9QT1NU X0RFVEVDVF9DVExfUE9TVF9ERVRFQ1RfRElTQUJMRV9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZf UE9TVF9ERVRFQ1RfQ1RMX1BPU1RfREVURUNUX0RJU0FCTEVfTUFTSyBCSVQoMCkNCisjZGVmaW5l IFNFTklORl9QT1NUX0RFVEVDVF9DVExfUE9TVF9FTl9TSElGVCAgMQ0KKyNkZWZpbmUgU0VOSU5G X1BPU1RfREVURUNUX0NUTF9QT1NUX0VOX01BU0sgICBCSVQoMSkNCisjZGVmaW5lIFNFTklORl9X SVJFX1NUQVRFX0RFQ09ERV9DT05GSUcgICAgICAgICAgICAgICAgICAgICAgIDB4MEFCMA0KKyNk ZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NPTkZJR19JTklUX1NUQVRFX0RFQ09ERV9T SElGVCAwDQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ09ORklHX0lOSVRfU1RB VEVfREVDT0RFX01BU0sgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1BIWV9MTlJE X0ZTTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQUI0DQorI2RlZmluZSBTRU5JTkZf Q1NJMl9DUEhZX0xOUkRfRlNNX1RSSU8wX1JYX0ZTTV9TSElGVCA4DQorI2RlZmluZSBTRU5JTkZf Q1NJMl9DUEhZX0xOUkRfRlNNX1RSSU8wX1JYX0ZTTV9NQVNLICgweDdmIDw8IDgpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9DUEhZX0xOUkRfRlNNX1RSSU8xX1JYX0ZTTV9TSElGVCAxNg0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfQ1BIWV9MTlJEX0ZTTV9UUklPMV9SWF9GU01fTUFTSyAoMHg3ZiA8PCAx NikNCisjZGVmaW5lIFNFTklORl9DU0kyX0NQSFlfTE5SRF9GU01fVFJJTzJfUlhfRlNNX1NISUZU IDI0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DUEhZX0xOUkRfRlNNX1RSSU8yX1JYX0ZTTV9NQVNL ICgweDdmIDw8IDI0KQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkwX0RCRzAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwQUI4DQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BI WTBfREJHMF9XT1JEX0NPVU5UX0NQSFkwX0RCRzBfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0ZJ WF9BRERSX0NQSFkwX0RCRzBfV09SRF9DT1VOVF9DUEhZMF9EQkcwX01BU0sgXA0KKygweGZmZmZm ZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTBfREJHMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDBBQkMNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMF9E QkcxX1dPUkRfQ09VTlRfQ1BIWTBfREJHMV9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfRklYX0FE RFJfQ1BIWTBfREJHMV9XT1JEX0NPVU5UX0NQSFkwX0RCRzFfTUFTSyAoMHhmZmZmIDw8IDApDQor I2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTBfREJHMV9FUlJPUl9SRUNPUkRfQ1BIWTBfREJH MF9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkwX0RCRzFfRVJST1JfUkVD T1JEX0NQSFkwX0RCRzBfTUFTSyBcDQorKDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9G SVhfQUREUl9DUEhZMF9EQkcyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEFDMA0KKyNk ZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkwX0RCRzJfRVJST1JfUkVDT1JEX0NQSFkwX0RCRzFf U0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkwX0RCRzJfRVJST1JfUkVDT1JE X0NQSFkwX0RCRzFfTUFTSyBcDQorKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9G SVhfQUREUl9DUEhZMV9EQkcwICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEFDNA0KKyNk ZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkxX0RCRzBfV09SRF9DT1VOVF9DUEhZMV9EQkcwX1NI SUZUIDANCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMV9EQkcwX1dPUkRfQ09VTlRfQ1BI WTFfREJHMF9NQVNLIFwNCisoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9B RERSX0NQSFkxX0RCRzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQUM4DQorI2RlZmlu ZSBTRU5JTkZfRklYX0FERFJfQ1BIWTFfREJHMV9XT1JEX0NPVU5UX0NQSFkxX0RCRzFfU0hJRlQg MA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkxX0RCRzFfV09SRF9DT1VOVF9DUEhZMV9E QkcxX01BU0sgKDB4ZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkxX0RC RzFfRVJST1JfUkVDT1JEX0NQSFkxX0RCRzBfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9GSVhf QUREUl9DUEhZMV9EQkcxX0VSUk9SX1JFQ09SRF9DUEhZMV9EQkcwX01BU0sgKDB4ZmZmZiA8PCAx NikNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMV9EQkcyICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MEFDQw0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkxX0RCRzJfRVJS T1JfUkVDT1JEX0NQSFkxX0RCRzFfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQ SFkxX0RCRzJfRVJST1JfUkVDT1JEX0NQSFkxX0RCRzFfTUFTSyBcDQorKDB4ZmZmZmZmZmYgPDwg MCkNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZMl9EQkcwICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MEFEMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkyX0RCRzBfV09S RF9DT1VOVF9DUEhZMl9EQkcwX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZ Ml9EQkcwX1dPUkRfQ09VTlRfQ1BIWTJfREJHMF9NQVNLIFwNCisoMHhmZmZmZmZmZiA8PCAwKQ0K KyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkyX0RCRzEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwQUQ0DQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTJfREJHMV9XT1JEX0NP VU5UX0NQSFkyX0RCRzFfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkyX0RC RzFfV09SRF9DT1VOVF9DUEhZMl9EQkcxX01BU0sgXA0KKygweGZmZmYgPDwgMCkNCisjZGVmaW5l IFNFTklORl9GSVhfQUREUl9DUEhZMl9EQkcxX0VSUk9SX1JFQ09SRF9DUEhZMl9EQkcwX1NISUZU IDE2DQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTJfREJHMV9FUlJPUl9SRUNPUkRfQ1BI WTJfREJHMF9NQVNLIFwNCisoMHhmZmZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERS X0NQSFkyX0RCRzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQUQ4DQorI2RlZmluZSBT RU5JTkZfRklYX0FERFJfQ1BIWTJfREJHMl9FUlJPUl9SRUNPUkRfQ1BIWTJfREJHMV9TSElGVCAw DQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTJfREJHMl9FUlJPUl9SRUNPUkRfQ1BIWTJf REJHMV9NQVNLIFwNCisoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERS X0RCRzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQURDDQorI2RlZmluZSBT RU5JTkZfRklYX0FERFJfREJHMF9XT1JEX0NPVU5UX0RCRzBfU0hJRlQgMA0KKyNkZWZpbmUgU0VO SU5GX0ZJWF9BRERSX0RCRzBfV09SRF9DT1VOVF9EQkcwX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkN CisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9EQkcxICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MEFFMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0RCRzFfV09SRF9DT1VOVF9E QkcxX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9EQkcxX1dPUkRfQ09VTlRfREJH MV9NQVNLICgweGZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9EQkcxX0VSUk9S X1JFQ09SRF9EQkcwX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfREJHMV9FUlJP Ul9SRUNPUkRfREJHMF9NQVNLICgweGZmZmYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfRklYX0FE RFJfREJHMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBRTQNCisjZGVmaW5l IFNFTklORl9GSVhfQUREUl9EQkcyX0VSUk9SX1JFQ09SRF9EQkcxX1NISUZUIDANCisjZGVmaW5l IFNFTklORl9GSVhfQUREUl9EQkcyX0VSUk9SX1JFQ09SRF9EQkcxX01BU0sgKDB4ZmZmZmZmZmYg PDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX01PREUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MEFFOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTU9ERV9DU1JfQ1NJMl9N T0RFX1NISUZUICAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NT0RFX0NTUl9DU0kyX01PREVfTUFT SyAgICgweGZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NT0RFX0NTUl9DU0kyX0hFQURF Ul9MRU5fU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTU9ERV9DU1JfQ1NJMl9IRUFERVJf TEVOX01BU0sgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTU9ERV9DU1JfQ1BIWV9E SV9QT1NfU0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9DU0kyX01PREVfQ1NSX0NQSFlfRElfUE9T X01BU0sgKDB4ZmYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9NT0RFX0NTUl9DUEhZX1dD X1BPU19TSElGVCAyNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfTU9ERV9DU1JfQ1BIWV9XQ19QT1Nf TUFTSyAoMHhmZiA8PCAyNCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0VYVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEFGMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElf RVhUX1ZDNF9TSElGVCAgICAgICAgICAwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9FWFRfVkM0 X01BU0sgICAgICAgICAgICgweDMgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0VYVF9E VDRfU0hJRlQgICAgICAgICAgMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfRVhUX0RUNF9NQVNL ICAgICAgICAgICAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfRVhUX1ZDNV9T SElGVCAgICAgICAgICA4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9FWFRfVkM1X01BU0sgICAg ICAgICAgICgweDMgPDwgOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0VYVF9EVDVfU0hJRlQg ICAgICAgICAgMTANCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0VYVF9EVDVfTUFTSyAgICAgICAg ICAgKDB4M2YgPDwgMTApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9DVFJMX0VYVCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDBBRjQNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NU UkxfRVhUX1ZDNF9JTlRFUkxFQVZJTkdfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElf Q1RSTF9FWFRfVkM0X0lOVEVSTEVBVklOR19NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX0NT STJfRElfQ1RSTF9FWFRfRFQ0X0lOVEVSTEVBVklOR19TSElGVCAxDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9ESV9DVFJMX0VYVF9EVDRfSU5URVJMRUFWSU5HX01BU0sgKDB4MyA8PCAxKQ0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfRElfQ1RSTF9FWFRfVkM1X0lOVEVSTEVBVklOR19TSElGVCA4DQorI2Rl ZmluZSBTRU5JTkZfQ1NJMl9ESV9DVFJMX0VYVF9WQzVfSU5URVJMRUFWSU5HX01BU0sgQklUKDgp DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9DVFJMX0VYVF9EVDVfSU5URVJMRUFWSU5HX1NISUZU IDkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NUUkxfRVhUX0RUNV9JTlRFUkxFQVZJTkdfTUFT SyAoMHgzIDw8IDkpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DUEhZX0xPT1BCQUNLICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDBBRjgNCisjZGVmaW5lIFNFTklORl9DU0kyX0NQSFlfTE9P UEJBQ0tfVFJJR0dFUl9TWU5DX0lOSVRfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1BI WV9MT09QQkFDS19UUklHR0VSX1NZTkNfSU5JVF9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5G X0NTSTJfQ1BIWV9MT09QQkFDS19SRUxFQVNFX1NZTkNfSU5JVF9TSElGVCAxDQorI2RlZmluZSBT RU5JTkZfQ1NJMl9DUEhZX0xPT1BCQUNLX1JFTEVBU0VfU1lOQ19JTklUX01BU0sgQklUKDEpDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDBCMDANCisjZGVmaW5lIFNFTklORl9DU0kyX1BST0dTRVFfMF9QUk9HU0VRX1MwX1NI SUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX1BST0dTRVFfMF9QUk9HU0VRX1MwX01BU0sgKDB4 NyA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUFJPR1NFUV8wX1BST0dTRVFfUzFfU0hJRlQg NA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfUFJPR1NFUV8wX1BST0dTRVFfUzFfTUFTSyAoMHg3IDw8 IDQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TMl9TSElGVCA4DQor I2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TMl9NQVNLICgweDcgPDwgOCkN CisjZGVmaW5lIFNFTklORl9DU0kyX1BST0dTRVFfMF9QUk9HU0VRX1MzX1NISUZUIDEyDQorI2Rl ZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TM19NQVNLICgweDcgPDwgMTIpDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TNF9TSElGVCAxNg0KKyNkZWZp bmUgU0VOSU5GX0NTSTJfUFJPR1NFUV8wX1BST0dTRVFfUzRfTUFTSyAoMHg3IDw8IDE2KQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfUFJPR1NFUV8wX1BST0dTRVFfUzVfU0hJRlQgMjANCisjZGVmaW5l IFNFTklORl9DU0kyX1BST0dTRVFfMF9QUk9HU0VRX1M1X01BU0sgKDB4NyA8PCAyMCkNCisjZGVm aW5lIFNFTklORl9DU0kyX1BST0dTRVFfMF9QUk9HU0VRX1M2X1NISUZUIDI0DQorI2RlZmluZSBT RU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TNl9NQVNLICgweDcgPDwgMjQpDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzBfUFJPR1NFUV9TN19TSElGVCAyOA0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfUFJPR1NFUV8wX1BST0dTRVFfUzdfTUFTSyAoMHg3IDw8IDI4KQ0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUFJPR1NFUV8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw QjA0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzFfUFJPR1NFUV9TOF9TSElGVCAwDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9QUk9HU0VRXzFfUFJPR1NFUV9TOF9NQVNLICgweDcgPDwgMCkN CisjZGVmaW5lIFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1M5X1NISUZUIDQNCisjZGVm aW5lIFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1M5X01BU0sgKDB4NyA8PCA0KQ0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfUFJPR1NFUV8xX1BST0dTRVFfUzEwX1NISUZUIDgNCisjZGVmaW5l IFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1MxMF9NQVNLICgweDcgPDwgOCkNCisjZGVm aW5lIFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1MxMV9TSElGVCAxMg0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUFJPR1NFUV8xX1BST0dTRVFfUzExX01BU0sgKDB4NyA8PCAxMikNCisjZGVm aW5lIFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1MxMl9TSElGVCAxNg0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUFJPR1NFUV8xX1BST0dTRVFfUzEyX01BU0sgKDB4NyA8PCAxNikNCisjZGVm aW5lIFNFTklORl9DU0kyX1BST0dTRVFfMV9QUk9HU0VRX1MxM19TSElGVCAyMA0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfUFJPR1NFUV8xX1BST0dTRVFfUzEzX01BU0sgKDB4NyA8PCAyMCkNCisjZGVm aW5lIFNFTklORl9DU0kyX0lOVF9FTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MEIxMA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VYVF9EUEhZMF9SRVNZTkNfRklG T19PVkVSRkxPV19TSElGVCAxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVhUX0RQSFkw X1JFU1lOQ19GSUZPX09WRVJGTE9XX01BU0sgQklUKDEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9J TlRfRU5fRVhUX0RQSFkxX1JFU1lOQ19GSUZPX09WRVJGTE9XX1NISUZUIDINCisjZGVmaW5lIFNF TklORl9DU0kyX0lOVF9FTl9FWFRfRFBIWTFfUkVTWU5DX0ZJRk9fT1ZFUkZMT1dfTUFTSyBCSVQo MikNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FWFRfRFBIWTJfUkVTWU5DX0ZJRk9fT1ZF UkZMT1dfU0hJRlQgMw0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VYVF9EUEhZMl9SRVNZ TkNfRklGT19PVkVSRkxPV19NQVNLIEJJVCgzKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VO X0VYVF9EUEhZM19SRVNZTkNfRklGT19PVkVSRkxPV19TSElGVCA0DQorI2RlZmluZSBTRU5JTkZf Q1NJMl9JTlRfRU5fRVhUX0RQSFkzX1JFU1lOQ19GSUZPX09WRVJGTE9XX01BU0sgQklUKDQpDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVhUX0VSUl9TT1RfU1lOQ19IU19UUklPMF9TSElG VCA4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVhUX0VSUl9TT1RfU1lOQ19IU19UUklP MF9NQVNLIEJJVCg4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VYVF9FUlJfU09UX1NZ TkNfSFNfVFJJTzFfU0hJRlQgOQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX0VOX0VYVF9FUlJf U09UX1NZTkNfSFNfVFJJTzFfTUFTSyBCSVQoOSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9F Tl9FWFRfRVJSX1NPVF9TWU5DX0hTX1RSSU8yX1NISUZUIDEwDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9JTlRfRU5fRVhUX0VSUl9TT1RfU1lOQ19IU19UUklPMl9NQVNLIEJJVCgxMCkNCisjZGVmaW5l IFNFTklORl9DU0kyX0lOVF9FTl9FWFRfRVJSX1NPVF9TWU5DX0hTX1RSSU8zX1NISUZUIDExDQor I2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfRU5fRVhUX0VSUl9TT1RfU1lOQ19IU19UUklPM19NQVNL IEJJVCgxMSkNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FWFRfSU5UX1dDTFJfRU5fU0hJ RlQgMzENCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9FTl9FWFRfSU5UX1dDTFJfRU5fTUFTSyBC SVQoMzEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VYVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDBCMTQNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVhU X0RQSFkwX1JFU1lOQ19GSUZPX09WRVJGTE9XX1NUQV9TSElGVCAxDQorI2RlZmluZSBTRU5JTkZf Q1NJMl9JTlRfU1RBVFVTX0VYVF9EUEhZMF9SRVNZTkNfRklGT19PVkVSRkxPV19TVEFfTUFTSyBc DQorQklUKDEpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VYVF9EUEhZMV9SRVNZ TkNfRklGT19PVkVSRkxPV19TVEFfU0hJRlQgMg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NU QVRVU19FWFRfRFBIWTFfUkVTWU5DX0ZJRk9fT1ZFUkZMT1dfU1RBX01BU0sgXA0KK0JJVCgyKQ0K KyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FWFRfRFBIWTJfUkVTWU5DX0ZJRk9fT1ZF UkZMT1dfU1RBX1NISUZUIDMNCisjZGVmaW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVhUX0RQ SFkyX1JFU1lOQ19GSUZPX09WRVJGTE9XX1NUQV9NQVNLIFwNCitCSVQoMykNCisjZGVmaW5lIFNF TklORl9DU0kyX0lOVF9TVEFUVVNfRVhUX0RQSFkzX1JFU1lOQ19GSUZPX09WRVJGTE9XX1NUQV9T SElGVCA0DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VYVF9EUEhZM19SRVNZTkNf RklGT19PVkVSRkxPV19TVEFfTUFTSyBcDQorQklUKDQpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9J TlRfU1RBVFVTX0VYVF9FUlJfU09UX1NZTkNfSFNfVFJJTzBfU0hJRlQgOA0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfSU5UX1NUQVRVU19FWFRfRVJSX1NPVF9TWU5DX0hTX1RSSU8wX01BU0sgQklUKDgp DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVTX0VYVF9FUlJfU09UX1NZTkNfSFNfVFJJ TzFfU0hJRlQgOQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FWFRfRVJSX1NPVF9T WU5DX0hTX1RSSU8xX01BU0sgQklUKDkpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9JTlRfU1RBVFVT X0VYVF9FUlJfU09UX1NZTkNfSFNfVFJJTzJfU0hJRlQgMTANCisjZGVmaW5lIFNFTklORl9DU0ky X0lOVF9TVEFUVVNfRVhUX0VSUl9TT1RfU1lOQ19IU19UUklPMl9NQVNLIEJJVCgxMCkNCisjZGVm aW5lIFNFTklORl9DU0kyX0lOVF9TVEFUVVNfRVhUX0VSUl9TT1RfU1lOQ19IU19UUklPM19TSElG VCAxMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfSU5UX1NUQVRVU19FWFRfRVJSX1NPVF9TWU5DX0hT X1RSSU8zX01BU0sgQklUKDExKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfQ1BIWV9GSVhfUE9JTlRf UlNUICAgICAgICAgICAgICAgICAgICAgICAgMHgwQjE4DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9D UEhZX0ZJWF9QT0lOVF9SU1RfQ1BIWV9GSVhfUE9JTlRfUlNUX1NISUZUIDANCisjZGVmaW5lIFNF TklORl9DU0kyX0NQSFlfRklYX1BPSU5UX1JTVF9DUEhZX0ZJWF9QT0lOVF9SU1RfTUFTSyBCSVQo MCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0NQSFlfRklYX1BPSU5UX1JTVF9DUEhZX0ZJWF9QT0lO VF9SU1RfTU9ERV9TSElGVCAxDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9DUEhZX0ZJWF9QT0lOVF9S U1RfQ1BIWV9GSVhfUE9JTlRfUlNUX01PREVfTUFTSyBCSVQoMSkNCisjZGVmaW5lIFNFTklORl9D U0kyX1JMUjNfQ09OMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIxQw0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfUkxSM19DT04wX1JMUjNfUFJCU19QQVRURVJOX1NFTF9TSElGVCAw DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIzX0NPTjBfUkxSM19QUkJTX1BBVFRFUk5fU0VMX01B U0sgKDB4ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjNfQ09OMF9STFIzX1BSQlNf U0VFRF8wX1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjNfQ09OMF9STFIzX1BSQlNf U0VFRF8wX01BU0sgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIFNFTklORl9DU0kyX1JMUjNfQ09OMF9S TFIzX1BSQlNfU0VFRF8xX1NISUZUIDE2DQorI2RlZmluZSBTRU5JTkZfQ1NJMl9STFIzX0NPTjBf UkxSM19QUkJTX1NFRURfMV9NQVNLICgweGZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf UkxSM19DT04wX1JMUjNfUFJCU19TRUVEXzJfU0hJRlQgMjQNCisjZGVmaW5lIFNFTklORl9DU0ky X1JMUjNfQ09OMF9STFIzX1BSQlNfU0VFRF8yX01BU0sgKDB4ZmYgPDwgMjQpDQorI2RlZmluZSBT RU5JTkZfQ1NJMl9EUEhZX1NZTkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBC MjANCisjZGVmaW5lIFNFTklORl9DU0kyX0RQSFlfU1lOQ19TWU5DX1NFUV9NQVNLXzBfU0hJRlQg MA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBIWV9TWU5DX1NZTkNfU0VRX01BU0tfMF9NQVNLICgw eGZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9DU0kyX0RQSFlfU1lOQ19TWU5DX1NFUV9QQVRf MF9TSElGVCAxNg0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRFBIWV9TWU5DX1NZTkNfU0VRX1BBVF8w X01BU0sgKDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFU0tFV19TWU5DICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIyNA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf REVTS0VXX1NZTkNfU1lOQ19TRVFfTUFTS18xX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0ky X0RFU0tFV19TWU5DX1NZTkNfU0VRX01BU0tfMV9NQVNLICgweGZmZmYgPDwgMCkNCisjZGVmaW5l IFNFTklORl9DU0kyX0RFU0tFV19TWU5DX1NZTkNfU0VRX1BBVF8xX1NISUZUIDE2DQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9ERVNLRVdfU1lOQ19TWU5DX1NFUV9QQVRfMV9NQVNLICgweGZmZmYgPDwg MTYpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDBCMjgNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcyX0RFVEVD VF9TWU5DX0xBTkUzX1NUX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcy X0RFVEVDVF9TWU5DX0xBTkUzX1NUX01BU0sgQklUKDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9E RVRFQ1RfREJHMl9ERVRFQ1RfRVNDQVBFX0xBTkUzX1NUX1NISUZUIDENCisjZGVmaW5lIFNFTklO Rl9DU0kyX0RFVEVDVF9EQkcyX0RFVEVDVF9FU0NBUEVfTEFORTNfU1RfTUFTSyBCSVQoMSkNCisj ZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcyX0RFVEVDVF9QT1NUX0xBTkUzX1NUX1NISUZU IDINCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcyX0RFVEVDVF9QT1NUX0xBTkUzX1NU X01BU0sgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ERVRFQ1RfREJHMl9QT1NJVElPTl9T WU5DX0xBTkUzX1NUX1NISUZUIDMNCisjZGVmaW5lIFNFTklORl9DU0kyX0RFVEVDVF9EQkcyX1BP U0lUSU9OX1NZTkNfTEFORTNfU1RfTUFTSyAoMHhmIDw8IDMpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ERVRFQ1RfREJHMl9QT1NJVElPTl9FU0NBUEVfTEFORTNfU1RfU0hJRlQgNw0KKyNkZWZpbmUg U0VOSU5GX0NTSTJfREVURUNUX0RCRzJfUE9TSVRJT05fRVNDQVBFX0xBTkUzX1NUX01BU0sgKDB4 ZiA8PCA3KQ0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkzX0RCRzAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwQjMwDQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTNfREJH MF9XT1JEX0NPVU5UX0NQSFkzX0RCRzBfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX0ZJWF9BRERS X0NQSFkzX0RCRzBfV09SRF9DT1VOVF9DUEhZM19EQkcwX01BU0sgXA0KKygweGZmZmZmZmZmIDw8 IDApDQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BIWTNfREJHMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDBCMzQNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZM19EQkcxX1dP UkRfQ09VTlRfQ1BIWTNfREJHMV9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfRklYX0FERFJfQ1BI WTNfREJHMV9XT1JEX0NPVU5UX0NQSFkzX0RCRzFfTUFTSyBcDQorKDB4ZmZmZiA8PCAwKQ0KKyNk ZWZpbmUgU0VOSU5GX0ZJWF9BRERSX0NQSFkzX0RCRzFfRVJST1JfUkVDT1JEX0NQSFkzX0RCRzBf U0hJRlQgMTYNCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZM19EQkcxX0VSUk9SX1JFQ09S RF9DUEhZM19EQkcwX01BU0sgXA0KKygweGZmZmYgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfRklY X0FERFJfQ1BIWTNfREJHMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCMzgNCisjZGVm aW5lIFNFTklORl9GSVhfQUREUl9DUEhZM19EQkcyX0VSUk9SX1JFQ09SRF9DUEhZM19EQkcxX1NI SUZUIDANCisjZGVmaW5lIFNFTklORl9GSVhfQUREUl9DUEhZM19EQkcyX0VSUk9SX1JFQ09SRF9D UEhZM19EQkcxX01BU0sgXA0KKygweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ESV9FWFRfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCM0MNCisjZGVm aW5lIFNFTklORl9DU0kyX0RJX0VYVF8yX1ZDNl9TSElGVCAgICAgICAgMA0KKyNkZWZpbmUgU0VO SU5GX0NTSTJfRElfRVhUXzJfVkM2X01BU0sgICAgICAgICAoMHgzIDw8IDApDQorI2RlZmluZSBT RU5JTkZfQ1NJMl9ESV9FWFRfMl9EVDZfU0hJRlQgICAgICAgIDINCisjZGVmaW5lIFNFTklORl9D U0kyX0RJX0VYVF8yX0RUNl9NQVNLICAgICAgICAgKDB4M2YgPDwgMikNCisjZGVmaW5lIFNFTklO Rl9DU0kyX0RJX0VYVF8yX1ZDN19TSElGVCAgICAgICAgOA0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf RElfRVhUXzJfVkM3X01BU0sgICAgICAgICAoMHgzIDw8IDgpDQorI2RlZmluZSBTRU5JTkZfQ1NJ Ml9ESV9FWFRfMl9EVDdfU0hJRlQgICAgICAgIDEwDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9F WFRfMl9EVDdfTUFTSyAgICAgICAgICgweDNmIDw8IDEwKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJf RElfQ1RSTF9FWFRfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQjQwDQorI2RlZmlu ZSBTRU5JTkZfQ1NJMl9ESV9DVFJMX0VYVF8yX1ZDNl9JTlRFUkxFQVZJTkdfU0hJRlQgMA0KKyNk ZWZpbmUgU0VOSU5GX0NTSTJfRElfQ1RSTF9FWFRfMl9WQzZfSU5URVJMRUFWSU5HX01BU0sgQklU KDApDQorI2RlZmluZSBTRU5JTkZfQ1NJMl9ESV9DVFJMX0VYVF8yX0RUNl9JTlRFUkxFQVZJTkdf U0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfQ1RSTF9FWFRfMl9EVDZfSU5URVJMRUFW SU5HX01BU0sgKDB4MyA8PCAxKQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElfQ1RSTF9FWFRfMl9W QzdfSU5URVJMRUFWSU5HX1NISUZUIDgNCisjZGVmaW5lIFNFTklORl9DU0kyX0RJX0NUUkxfRVhU XzJfVkM3X0lOVEVSTEVBVklOR19NQVNLIEJJVCg4KQ0KKyNkZWZpbmUgU0VOSU5GX0NTSTJfRElf Q1RSTF9FWFRfMl9EVDdfSU5URVJMRUFWSU5HX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9DU0ky X0RJX0NUUkxfRVhUXzJfRFQ3X0lOVEVSTEVBVklOR19NQVNLICgweDMgPDwgOSkNCisjZGVmaW5l IFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZM19EQkcwICAgICAgICAgICAgICAgICAgIDB4 MEI0NA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQSFkzX0RCRzBfU1lNQk9M X1NUUkVBTTBfQ1BIWTNfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RF X0NQSFkzX0RCRzBfU1lNQk9MX1NUUkVBTTBfQ1BIWTNfTUFTSyBcDQorKDB4ZmZmZmZmZmYgPDwg MCkNCisjZGVmaW5lIFNFTklORl9XSVJFX1NUQVRFX0RFQ09ERV9DUEhZM19EQkcxICAgICAgICAg ICAgICAgICAgIDB4MEI0OA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVfU1RBVEVfREVDT0RFX0NQSFkz X0RCRzFfU1lNQk9MX1NUUkVBTTFfQ1BIWTNfU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX1dJUkVf U1RBVEVfREVDT0RFX0NQSFkzX0RCRzFfU1lNQk9MX1NUUkVBTTFfQ1BIWTNfTUFTSyBcDQorKDB4 M2ZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfV0lSRV9TVEFURV9ERUNPREVfQ1BIWTNfREJHMV9T WU1CT0xfU1RSRUFNX1ZBTElEX0NQSFkzX1NISUZUIDEwDQorI2RlZmluZSBTRU5JTkZfV0lSRV9T VEFURV9ERUNPREVfQ1BIWTNfREJHMV9TWU1CT0xfU1RSRUFNX1ZBTElEX0NQSFkzX01BU0sgXA0K K0JJVCgxMCkNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MEQwMA0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX1NFTklORl9N VVhfU1dfUlNUX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfTVVYX1NX X1JTVF9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX1NFTklORl9JUlFfU1df UlNUX1NISUZUIDENCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfSVJRX1NXX1JTVF9N QVNLIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX1NFTklORl9NVVhfUkRZX01PREVf U0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX1NFTklORl9NVVhfUkRZX01PREVfTUFT SyBCSVQoNCkNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfTVVYX1JEWV9WQUxVRV9T SElGVCA1DQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfU0VOSU5GX01VWF9SRFlfVkFMVUVfTUFT SyBCSVQoNSkNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfSFNZTkNfTUFTS19TSElG VCA3DQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfU0VOSU5GX0hTWU5DX01BU0tfTUFTSyBCSVQo NykNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfUElYX1NFTF9TSElGVCAgOA0KKyNk ZWZpbmUgU0VOSU5GX01VWF9DVFJMX1NFTklORl9QSVhfU0VMX01BU0sgICBCSVQoOCkNCisjZGVm aW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZfVlNZTkNfUE9MX1NISUZUIDkNCisjZGVmaW5lIFNF TklORl9NVVhfQ1RSTF9TRU5JTkZfVlNZTkNfUE9MX01BU0sgQklUKDkpDQorI2RlZmluZSBTRU5J TkZfTVVYX0NUUkxfU0VOSU5GX0hTWU5DX1BPTF9TSElGVCAxMA0KKyNkZWZpbmUgU0VOSU5GX01V WF9DVFJMX1NFTklORl9IU1lOQ19QT0xfTUFTSyBCSVQoMTApDQorI2RlZmluZSBTRU5JTkZfTVVY X0NUUkxfT1ZFUlJVTl9SU1RfRU5fU0hJRlQgIDExDQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxf T1ZFUlJVTl9SU1RfRU5fTUFTSyAgIEJJVCgxMSkNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9T RU5JTkZfU1JDX1NFTF9TSElGVCAgMTINCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9TRU5JTkZf U1JDX1NFTF9NQVNLICAgKDB4ZiA8PCAxMikNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9GSUZP X1BVU0hfRU5fU0hJRlQgICAgMTYNCisjZGVmaW5lIFNFTklORl9NVVhfQ1RSTF9GSUZPX1BVU0hf RU5fTUFTSyAgICAgKDB4M2YgPDwgMTYpDQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfRklGT19G TFVTSF9FTl9TSElGVCAgIDIyDQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfRklGT19GTFVTSF9F Tl9NQVNLICAgICgweDNmIDw8IDIyKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX0ZJRk9fRlVM TF9XUl9FTl9TSElGVCAyOA0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX0ZJRk9fRlVMTF9XUl9F Tl9NQVNLICAoMHgzIDw8IDI4KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX0NST1BfRU5fU0hJ RlQgICAgICAgICAzMA0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX0NST1BfRU5fTUFTSyAgICAg ICAgICBCSVQoMzApDQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfU0VOSU5GX01VWF9FTl9TSElG VCAgIDMxDQorI2RlZmluZSBTRU5JTkZfTVVYX0NUUkxfU0VOSU5GX01VWF9FTl9NQVNLICAgIEJJ VCgzMSkNCisjZGVmaW5lIFNFTklORl9NVVhfSU5URU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MEQwNA0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5JTkZfT1ZF UlJVTl9JUlFfRU5fU0hJRlQgMA0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5JTkZfT1ZF UlJVTl9JUlFfRU5fTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNFTklORl9NVVhfSU5URU5fU0VOSU5G X0NSQ0VSUl9JUlFfRU5fU0hJRlQgMQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5JTkZf Q1JDRVJSX0lSUV9FTl9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5J TkZfRlNNRVJSX0lSUV9FTl9TSElGVCAyDQorI2RlZmluZSBTRU5JTkZfTVVYX0lOVEVOX1NFTklO Rl9GU01FUlJfSVJRX0VOX01BU0sgQklUKDIpDQorI2RlZmluZSBTRU5JTkZfTVVYX0lOVEVOX1NF TklORl9WU0laRUVSUl9JUlFfRU5fU0hJRlQgMw0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9T RU5JTkZfVlNJWkVFUlJfSVJRX0VOX01BU0sgQklUKDMpDQorI2RlZmluZSBTRU5JTkZfTVVYX0lO VEVOX1NFTklORl9IU0laRUVSUl9JUlFfRU5fU0hJRlQgNA0KKyNkZWZpbmUgU0VOSU5GX01VWF9J TlRFTl9TRU5JTkZfSFNJWkVFUlJfSVJRX0VOX01BU0sgQklUKDQpDQorI2RlZmluZSBTRU5JTkZf TVVYX0lOVEVOX1NFTklORl9TRU5TT1JfVlNJWkVFUlJfSVJRX0VOX1NISUZUIDUNCisjZGVmaW5l IFNFTklORl9NVVhfSU5URU5fU0VOSU5GX1NFTlNPUl9WU0laRUVSUl9JUlFfRU5fTUFTSyBCSVQo NSkNCisjZGVmaW5lIFNFTklORl9NVVhfSU5URU5fU0VOSU5GX1NFTlNPUl9IU0laRUVSUl9JUlFf RU5fU0hJRlQgNg0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5JTkZfU0VOU09SX0hTSVpF RVJSX0lSUV9FTl9NQVNLIEJJVCg2KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRFTl9TRU5JTkZf SVJRX0NMUl9TRUxfU0hJRlQgMzENCisjZGVmaW5lIFNFTklORl9NVVhfSU5URU5fU0VOSU5GX0lS UV9DTFJfU0VMX01BU0sgQklUKDMxKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRTVEEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDA4DQorI2RlZmluZSBTRU5JTkZfTVVY X0lOVFNUQV9TRU5JTkZfT1ZFUlJVTl9JUlFfU1RBX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9N VVhfSU5UU1RBX1NFTklORl9PVkVSUlVOX0lSUV9TVEFfTUFTSyBCSVQoMCkNCisjZGVmaW5lIFNF TklORl9NVVhfSU5UU1RBX1NFTklORl9DUkNFUlJfSVJRX1NUQV9TSElGVCAxDQorI2RlZmluZSBT RU5JTkZfTVVYX0lOVFNUQV9TRU5JTkZfQ1JDRVJSX0lSUV9TVEFfTUFTSyBCSVQoMSkNCisjZGVm aW5lIFNFTklORl9NVVhfSU5UU1RBX1NFTklORl9GU01FUlJfSVJRX1NUQV9TSElGVCAyDQorI2Rl ZmluZSBTRU5JTkZfTVVYX0lOVFNUQV9TRU5JTkZfRlNNRVJSX0lSUV9TVEFfTUFTSyBCSVQoMikN CisjZGVmaW5lIFNFTklORl9NVVhfSU5UU1RBX1NFTklORl9WU0laRUVSUl9JUlFfU1RBX1NISUZU IDMNCisjZGVmaW5lIFNFTklORl9NVVhfSU5UU1RBX1NFTklORl9WU0laRUVSUl9JUlFfU1RBX01B U0sgQklUKDMpDQorI2RlZmluZSBTRU5JTkZfTVVYX0lOVFNUQV9TRU5JTkZfSFNJWkVFUlJfSVJR X1NUQV9TSElGVCA0DQorI2RlZmluZSBTRU5JTkZfTVVYX0lOVFNUQV9TRU5JTkZfSFNJWkVFUlJf SVJRX1NUQV9NQVNLIEJJVCg0KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9JTlRTVEFfU0VOSU5GX1NF TlNPUl9WU0laRUVSUl9JUlFfU1RBX1NISUZUIDUNCisjZGVmaW5lIFNFTklORl9NVVhfSU5UU1RB X1NFTklORl9TRU5TT1JfVlNJWkVFUlJfSVJRX1NUQV9NQVNLIEJJVCg1KQ0KKyNkZWZpbmUgU0VO SU5GX01VWF9JTlRTVEFfU0VOSU5GX1NFTlNPUl9IU0laRUVSUl9JUlFfU1RBX1NISUZUIDYNCisj ZGVmaW5lIFNFTklORl9NVVhfSU5UU1RBX1NFTklORl9TRU5TT1JfSFNJWkVFUlJfSVJRX1NUQV9N QVNLIEJJVCg2KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9TSVpFICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwRDBDDQorI2RlZmluZSBTRU5JTkZfTVVYX1NJWkVfU0VOSU5G X1ZTSVpFX1NISUZUICAgIDANCisjZGVmaW5lIFNFTklORl9NVVhfU0laRV9TRU5JTkZfVlNJWkVf TUFTSyAgICAgKDB4ZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9TSVpFX1NFTklORl9I U0laRV9TSElGVCAgICAxNg0KKyNkZWZpbmUgU0VOSU5GX01VWF9TSVpFX1NFTklORl9IU0laRV9N QVNLICAgICAoMHhmZmZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9ERUJVR18xICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDEwDQorI2RlZmluZSBTRU5JTkZfTVVY X0RFQlVHXzFfREVCVUdfSU5GT19TSElGVCAgIDANCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdf MV9ERUJVR19JTkZPX01BU0sgICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9N VVhfREVCVUdfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQxNA0KKyNk ZWZpbmUgU0VOSU5GX01VWF9ERUJVR18yX0RFQlVHX0lORk9fU0hJRlQgICAwDQorI2RlZmluZSBT RU5JTkZfTVVYX0RFQlVHXzJfREVCVUdfSU5GT19NQVNLICAgICgweGZmZmZmZmZmIDw8IDApDQor I2RlZmluZSBTRU5JTkZfTVVYX0RFQlVHXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDBEMTgNCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdfM19ERUJVR19JTkZPX1NISUZU ICAgMA0KKyNkZWZpbmUgU0VOSU5GX01VWF9ERUJVR18zX0RFQlVHX0lORk9fTUFTSyAgICAoMHhm ZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9ERUJVR180ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwRDFDDQorI2RlZmluZSBTRU5JTkZfTVVYX0RFQlVHXzRf REVCVUdfSU5GT19TSElGVCAgIDANCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdfNF9ERUJVR19J TkZPX01BU0sgICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdf NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQyMA0KKyNkZWZpbmUgU0VO SU5GX01VWF9ERUJVR181X0RFQlVHX0lORk9fU0hJRlQgICAwDQorI2RlZmluZSBTRU5JTkZfTVVY X0RFQlVHXzVfREVCVUdfSU5GT19NQVNLICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBT RU5JTkZfTVVYX0RFQlVHXzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBE MjQNCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdfNl9ERUJVR19JTkZPX1NISUZUICAgMA0KKyNk ZWZpbmUgU0VOSU5GX01VWF9ERUJVR182X0RFQlVHX0lORk9fTUFTSyAgICAoMHhmZmZmZmZmZiA8 PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9ERUJVR183ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwRDI4DQorI2RlZmluZSBTRU5JTkZfTVVYX0RFQlVHXzdfREVCVUdfSU5G T19TSElGVCAgIDANCisjZGVmaW5lIFNFTklORl9NVVhfREVCVUdfN19ERUJVR19JTkZPX01BU0sg ICAgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9NVVhfU1BBUkUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQyQw0KKyNkZWZpbmUgU0VOSU5GX01VWF9T UEFSRV9TRU5JTkZfQ1JDX1NFTF9TSElGVCA5DQorI2RlZmluZSBTRU5JTkZfTVVYX1NQQVJFX1NF TklORl9DUkNfU0VMX01BU0sgICgweDMgPDwgOSkNCisjZGVmaW5lIFNFTklORl9NVVhfU1BBUkVf U0VOSU5GX1ZDTlRfU0VMX1NISUZUIDExDQorI2RlZmluZSBTRU5JTkZfTVVYX1NQQVJFX1NFTklO Rl9WQ05UX1NFTF9NQVNLICgweDMgPDwgMTEpDQorI2RlZmluZSBTRU5JTkZfTVVYX1NQQVJFX1NF TklORl9GSUZPX0ZVTExfU0VMX1NISUZUIDEzDQorI2RlZmluZSBTRU5JTkZfTVVYX1NQQVJFX1NF TklORl9GSUZPX0ZVTExfU0VMX01BU0sgQklUKDEzKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9TUEFS RV9TRU5JTkZfU1BBUkVfU0hJRlQgICAxNA0KKyNkZWZpbmUgU0VOSU5GX01VWF9TUEFSRV9TRU5J TkZfU1BBUkVfTUFTSyAgICAoMHgzZiA8PCAxNCkNCisjZGVmaW5lIFNFTklORl9NVVhfREFUQSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQzMA0KKyNkZWZpbmUgU0VO SU5GX01VWF9EQVRBX1NFTklORl9EQVRBMF9TSElGVCAgICAwDQorI2RlZmluZSBTRU5JTkZfTVVY X0RBVEFfU0VOSU5GX0RBVEEwX01BU0sgICAgICgweGZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklO Rl9NVVhfREFUQV9TRU5JTkZfREFUQTFfU0hJRlQgICAgMTYNCisjZGVmaW5lIFNFTklORl9NVVhf REFUQV9TRU5JTkZfREFUQTFfTUFTSyAgICAgKDB4ZmZmZiA8PCAxNikNCisjZGVmaW5lIFNFTklO Rl9NVVhfREFUQV9DTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQzNA0K KyNkZWZpbmUgU0VOSU5GX01VWF9EQVRBX0NOVF9TRU5JTkZfREFUQV9DTlRfU0hJRlQgMA0KKyNk ZWZpbmUgU0VOSU5GX01VWF9EQVRBX0NOVF9TRU5JTkZfREFUQV9DTlRfTUFTSyAoMHhmZmZmZmZm ZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DUk9QICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwRDM4DQorI2RlZmluZSBTRU5JTkZfTVVYX0NST1BfU0VOSU5GX0NS T1BfWDFfU0hJRlQgIDANCisjZGVmaW5lIFNFTklORl9NVVhfQ1JPUF9TRU5JTkZfQ1JPUF9YMV9N QVNLICAgKDB4ZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DUk9QX1NFTklORl9DUk9Q X1gyX1NISUZUICAxNg0KKyNkZWZpbmUgU0VOSU5GX01VWF9DUk9QX1NFTklORl9DUk9QX1gyX01B U0sgICAoMHhmZmZmIDw8IDE2KQ0KKyNkZWZpbmUgU0VOSU5GX01VWF9DVFJMX0VYVCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDNDDQorI2RlZmluZSBTRU5JTkZfTVVYX0NU UkxfRVhUX1NFTklORl9TUkNfU0VMX0VYVF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTVVYX0NU UkxfRVhUX1NFTklORl9TUkNfU0VMX0VYVF9NQVNLICgweDMgPDwgMCkNCisjZGVmaW5lIFNFTklO Rl9NVVhfQ1RSTF9FWFRfU0VOSU5GX1BJWF9TRUxfRVhUX1NISUZUIDQNCisjZGVmaW5lIFNFTklO Rl9NVVhfQ1RSTF9FWFRfU0VOSU5GX1BJWF9TRUxfRVhUX01BU0sgQklUKDQpDQorI2RlZmluZSBT RU5JTkZfTjNEX0JfQ1RMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx MTAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX01PREVfU0hJRlQgICAgICAgICAgICAwDQor I2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX01PREVfTUFTSyAgICAgICAgICAgICAoMHgzIDw8IDAp DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX0kyQzFfRU5fU0hJRlQgICAgICAgICAyDQorI2Rl ZmluZSBTRU5JTkZfTjNEX0JfQ1RMX0kyQzFfRU5fTUFTSyAgICAgICAgICBCSVQoMikNCisjZGVm aW5lIFNFTklORl9OM0RfQl9DVExfSTJDMl9FTl9TSElGVCAgICAgICAgIDMNCisjZGVmaW5lIFNF TklORl9OM0RfQl9DVExfSTJDMl9FTl9NQVNLICAgICAgICAgIEJJVCgzKQ0KKyNkZWZpbmUgU0VO SU5GX04zRF9CX0NUTF9JMkMxX0lOVF9FTl9TSElGVCAgICAgNA0KKyNkZWZpbmUgU0VOSU5GX04z RF9CX0NUTF9JMkMxX0lOVF9FTl9NQVNLICAgICAgQklUKDQpDQorI2RlZmluZSBTRU5JTkZfTjNE X0JfQ1RMX0kyQzJfSU5UX0VOX1NISUZUICAgICA1DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RM X0kyQzJfSU5UX0VOX01BU0sgICAgICBCSVQoNSkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9DVExf TjNEX0VOX1NISUZUICAgICAgICAgIDYNCisjZGVmaW5lIFNFTklORl9OM0RfQl9DVExfTjNEX0VO X01BU0sgICAgICAgICAgIEJJVCg2KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9XMUNMUl9T SElGVCAgICAgICAgICAgNw0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9XMUNMUl9NQVNLICAg ICAgICAgICAgQklUKDcpDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX0RJRkZfRU5fU0hJRlQg ICAgICAgICA4DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX0RJRkZfRU5fTUFTSyAgICAgICAg ICBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9DVExfRERCR19TRUxfU0hJRlQgICAgICAg IDkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9DVExfRERCR19TRUxfTUFTSyAgICAgICAgICgweDcg PDwgOSkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9DVExfTU9ERTFfREJHX1NISUZUICAgICAgIDEy DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX01PREUxX0RCR19NQVNLICAgICAgICBCSVQoMTIp DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX1NFTjFfVElNX0VOX1NISUZUICAgICAxNg0KKyNk ZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9TRU4xX1RJTV9FTl9NQVNLICAgICAgQklUKDE2KQ0KKyNk ZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9TRU4yX1RJTV9FTl9TSElGVCAgICAgMTcNCisjZGVmaW5l IFNFTklORl9OM0RfQl9DVExfU0VOMl9USU1fRU5fTUFTSyAgICAgIEJJVCgxNykNCisjZGVmaW5l IFNFTklORl9OM0RfQl9DVExfU0VOMV9PVl9WU19JTlRfRU5fU0hJRlQgMTgNCisjZGVmaW5lIFNF TklORl9OM0RfQl9DVExfU0VOMV9PVl9WU19JTlRfRU5fTUFTSyBCSVQoMTgpDQorI2RlZmluZSBT RU5JTkZfTjNEX0JfQ1RMX1NFTjJfT1ZfVlNfSU5UX0VOX1NISUZUIDE5DQorI2RlZmluZSBTRU5J TkZfTjNEX0JfQ1RMX1NFTjJfT1ZfVlNfSU5UX0VOX01BU0sgQklUKDE5KQ0KKyNkZWZpbmUgU0VO SU5GX04zRF9CX0NUTF9IV19TWU5DX01PREVfU0hJRlQgICAgMjANCisjZGVmaW5lIFNFTklORl9O M0RfQl9DVExfSFdfU1lOQ19NT0RFX01BU0sgICAgIEJJVCgyMCkNCisjZGVmaW5lIFNFTklORl9O M0RfQl9DVExfVkFMSURfVEdfRU5fU0hJRlQgICAgIDIxDQorI2RlZmluZSBTRU5JTkZfTjNEX0Jf Q1RMX1ZBTElEX1RHX0VOX01BU0sgICAgICBCSVQoMjEpDQorI2RlZmluZSBTRU5JTkZfTjNEX0Jf Q1RMX1NZTkNfUElOX0FfRU5fU0hJRlQgICAyMg0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9T WU5DX1BJTl9BX0VOX01BU0sgICAgQklUKDIyKQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9T WU5DX1BJTl9BX1BPTEFSSVRZX1NISUZUIDIzDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX1NZ TkNfUElOX0FfUE9MQVJJVFlfTUFTSyBCSVQoMjMpDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RM X1NZTkNfUElOX0JfRU5fU0hJRlQgICAyNA0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9TWU5D X1BJTl9CX0VOX01BU0sgICAgQklUKDI0KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NUTF9TWU5D X1BJTl9CX1BPTEFSSVRZX1NISUZUIDI1DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ1RMX1NZTkNf UElOX0JfUE9MQVJJVFlfTUFTSyBCSVQoMjUpDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfUE9TICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTA0DQorI2RlZmluZSBTRU5J TkZfTjNEX0JfUE9TX04zRF9QT1NfU0hJRlQgICAgICAgICAwDQorI2RlZmluZSBTRU5JTkZfTjNE X0JfUE9TX04zRF9QT1NfTUFTSyAgICAgICAgICAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUg U0VOSU5GX04zRF9CX1RSSUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MTEwOA0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX1RSSUdfSTJDQV9UUklHX1NISUZUICAgICAgMA0K KyNkZWZpbmUgU0VOSU5GX04zRF9CX1RSSUdfSTJDQV9UUklHX01BU0sgICAgICAgQklUKDApDQor I2RlZmluZSBTRU5JTkZfTjNEX0JfVFJJR19JMkNCX1RSSUdfU0hJRlQgICAgICAxDQorI2RlZmlu ZSBTRU5JTkZfTjNEX0JfVFJJR19JMkNCX1RSSUdfTUFTSyAgICAgICBCSVQoMSkNCisjZGVmaW5l IFNFTklORl9OM0RfQl9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDExMEMNCisjZGVmaW5lIFNFTklORl9OM0RfQl9JTlRfSTJDMV9JTlRfU0hJRlQgICAgICAgIDAN CisjZGVmaW5lIFNFTklORl9OM0RfQl9JTlRfSTJDMV9JTlRfTUFTSyAgICAgICAgIEJJVCgwKQ0K KyNkZWZpbmUgU0VOSU5GX04zRF9CX0lOVF9JMkMyX0lOVF9TSElGVCAgICAgICAgMQ0KKyNkZWZp bmUgU0VOSU5GX04zRF9CX0lOVF9JMkMyX0lOVF9NQVNLICAgICAgICAgQklUKDEpDQorI2RlZmlu ZSBTRU5JTkZfTjNEX0JfSU5UX0RJRkZfSU5UX1NISUZUICAgICAgICAyDQorI2RlZmluZSBTRU5J TkZfTjNEX0JfSU5UX0RJRkZfSU5UX01BU0sgICAgICAgICBCSVQoMikNCisjZGVmaW5lIFNFTklO Rl9OM0RfQl9JTlRfU0VOMV9PVl9WU19JTlRfU0hJRlQgIDQNCisjZGVmaW5lIFNFTklORl9OM0Rf Ql9JTlRfU0VOMV9PVl9WU19JTlRfTUFTSyAgIEJJVCg0KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9C X0lOVF9TRU4yX09WX1ZTX0lOVF9TSElGVCAgNQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0lOVF9T RU4yX09WX1ZTX0lOVF9NQVNLICAgQklUKDUpDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfQ05UMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTEwDQorI2RlZmluZSBTRU5J TkZfTjNEX0JfQ05UMF9OM0RfQ05UMF9TSElGVCAgICAgICAwDQorI2RlZmluZSBTRU5JTkZfTjNE X0JfQ05UMF9OM0RfQ05UMF9NQVNLICAgICAgICAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUg U0VOSU5GX04zRF9CX0NOVDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MTExNA0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0NOVDFfTjNEX0NOVDFfU0hJRlQgICAgICAgMA0K KyNkZWZpbmUgU0VOSU5GX04zRF9CX0NOVDFfTjNEX0NOVDFfTUFTSyAgICAgICAgKDB4ZmZmZmZm ZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkcgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDExMTgNCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkdfTjNEX0RC R19TSElGVCAgICAgICAgIDANCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkdfTjNEX0RCR19NQVNL ICAgICAgICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfRElGRl9U SFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTFDDQorI2RlZmluZSBTRU5J TkZfTjNEX0JfRElGRl9USFJfTjNEX0RJRkZfVEhSX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9O M0RfQl9ESUZGX1RIUl9OM0RfRElGRl9USFJfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZp bmUgU0VOSU5GX04zRF9CX0RJRkZfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MTEyMA0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX0RJRkZfQ05UX04zRF9ESUZGX0NOVF9TSElG VCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfRElGRl9DTlRfTjNEX0RJRkZfQ05UX01BU0sgKDB4 ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkdfMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDExMjQNCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkdf MV9OM0RfREJHXzFfU0hJRlQgICAgIDANCisjZGVmaW5lIFNFTklORl9OM0RfQl9EQkdfMV9OM0Rf REJHXzFfTUFTSyAgICAgICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5JTkZfTjNEX0Jf VkFMSURfVEdfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTI4DQorI2RlZmlu ZSBTRU5JTkZfTjNEX0JfVkFMSURfVEdfQ05UX04zRF9WQUxJRF9UR19DTlRfU0hJRlQgMA0KKyNk ZWZpbmUgU0VOSU5GX04zRF9CX1ZBTElEX1RHX0NOVF9OM0RfVkFMSURfVEdfQ05UX01BU0sgKDB4 ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0FfUEVSSU9EICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDExMkMNCisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5D X0FfUEVSSU9EX04zRF9TWU5DX0FfUEVSSU9EX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9OM0Rf Ql9TWU5DX0FfUEVSSU9EX04zRF9TWU5DX0FfUEVSSU9EX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkN CisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0JfUEVSSU9EICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDExMzANCisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0JfUEVSSU9EX04zRF9T WU5DX0JfUEVSSU9EX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0JfUEVSSU9E X04zRF9TWU5DX0JfUEVSSU9EX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIFNFTklO Rl9OM0RfQl9TWU5DX0FfUFVMU0VfTEVOICAgICAgICAgICAgICAgICAgICAgICAgICAweDExMzQN CisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0FfUFVMU0VfTEVOX04zRF9TWU5DX0FfUFVMU0Vf TEVOX1NISUZUIDANCisjZGVmaW5lIFNFTklORl9OM0RfQl9TWU5DX0FfUFVMU0VfTEVOX04zRF9T WU5DX0FfUFVMU0VfTEVOX01BU0sgXA0KKygweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBTRU5J TkZfTjNEX0JfU1lOQ19CX1BVTFNFX0xFTiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTM4 DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfU1lOQ19CX1BVTFNFX0xFTl9OM0RfU1lOQ19CX1BVTFNF X0xFTl9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfU1lOQ19CX1BVTFNFX0xFTl9OM0Rf U1lOQ19CX1BVTFNFX0xFTl9NQVNLIFwNCisoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgU0VO SU5GX04zRF9CX1NVQl9DTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEz Qw0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX1NVQl9DTlRfVlMxX1NVQl9DTlRfU0hJRlQgMA0KKyNk ZWZpbmUgU0VOSU5GX04zRF9CX1NVQl9DTlRfVlMxX1NVQl9DTlRfTUFTSyAgKDB4M2YgPDwgMCkN CisjZGVmaW5lIFNFTklORl9OM0RfQl9TVUJfQ05UX1ZTMV9TVUJfQ05UX0VOX1NISUZUIDYNCisj ZGVmaW5lIFNFTklORl9OM0RfQl9TVUJfQ05UX1ZTMV9TVUJfQ05UX0VOX01BU0sgQklUKDYpDQor I2RlZmluZSBTRU5JTkZfTjNEX0JfU1VCX0NOVF9TWU5DX1BJTl9BX1JFU0VUX1NFTF9TSElGVCA3 DQorI2RlZmluZSBTRU5JTkZfTjNEX0JfU1VCX0NOVF9TWU5DX1BJTl9BX1JFU0VUX1NFTF9NQVNL IEJJVCg3KQ0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX1NVQl9DTlRfU1lOQ19QSU5fQl9SRVNFVF9T RUxfU0hJRlQgOA0KKyNkZWZpbmUgU0VOSU5GX04zRF9CX1NVQl9DTlRfU1lOQ19QSU5fQl9SRVNF VF9TRUxfTUFTSyBCSVQoOCkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9TVUJfQ05UX1NZTkNfUElO X0FfUkVTRVRfU0VMX0VOX1NISUZUIDkNCisjZGVmaW5lIFNFTklORl9OM0RfQl9TVUJfQ05UX1NZ TkNfUElOX0FfUkVTRVRfU0VMX0VOX01BU0sgQklUKDkpDQorI2RlZmluZSBTRU5JTkZfTjNEX0Jf U1VCX0NOVF9TWU5DX1BJTl9CX1JFU0VUX1NFTF9FTl9TSElGVCAxMA0KKyNkZWZpbmUgU0VOSU5G X04zRF9CX1NVQl9DTlRfU1lOQ19QSU5fQl9SRVNFVF9TRUxfRU5fTUFTSyBCSVQoMTApDQorI2Rl ZmluZSBTRU5JTkZfTjNEX0JfU1VCX0NOVF9WUzJfU1VCX0NOVF9TSElGVCAxNg0KKyNkZWZpbmUg U0VOSU5GX04zRF9CX1NVQl9DTlRfVlMyX1NVQl9DTlRfTUFTSyAgKDB4M2YgPDwgMTYpDQorI2Rl ZmluZSBTRU5JTkZfTjNEX0JfU1VCX0NOVF9WUzJfU1VCX0NOVF9FTl9TSElGVCAyMg0KKyNkZWZp bmUgU0VOSU5GX04zRF9CX1NVQl9DTlRfVlMyX1NVQl9DTlRfRU5fTUFTSyBCSVQoMjIpDQorI2Rl ZmluZSBTRU5JTkZfTjNEX0JfVlNZTkNfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgxMTQwDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfVlNZTkNfQ05UX04zRF9WU1lOQ18xX0NO VF9TSElGVCAwDQorI2RlZmluZSBTRU5JTkZfTjNEX0JfVlNZTkNfQ05UX04zRF9WU1lOQ18xX0NO VF9NQVNLICgweGZmZmYgPDwgMCkNCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1pc3Avc2VuaW5mL210a19zZW5pbmZfcnhfcmVnLmggYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1pc3Avc2VuaW5mL210a19zZW5pbmZfcnhfcmVnLmgNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmViNmYyMzllNjg2ZA0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL3NlbmluZi9tdGtf c2VuaW5mX3J4X3JlZy5oDQpAQCAtMCwwICsxLDUxNSBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wICovDQorDQorI2lmbmRlZiBfX1NFTklORl9SWF9SRUdfSF9fDQorI2Rl ZmluZSBfX1NFTklORl9SWF9SRUdfSF9fDQorDQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBB ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwDQorI2RlZmluZSBNSVBJ X1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0NQSFlfRU5fU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9S WF9BTkEwMF9DU0kwQV9SR19DU0kwQV9DUEhZX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJ X1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0VRX1BST1RFQ1RfRU5fU0hJRlQgMQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkEwMF9DU0kwQV9SR19DU0kwQV9FUV9QUk9URUNUX0VOX01BU0sgQklUKDEpDQor I2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0JHX0xQRl9FTl9TSElGVCAyDQor I2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0JHX0xQRl9FTl9NQVNLIEJJVCgy KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9DU0kwQV9SR19DU0kwQV9CR19DT1JFX0VOX1NISUZU IDMNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMEFfUkdfQ1NJMEFfQkdfQ09SRV9FTl9NQVNL IEJJVCgzKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wwX0NL TU9ERV9FTl9TSElGVCA1DQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0RQ SFlfTDBfQ0tNT0RFX0VOX01BU0sgQklUKDUpDQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBB X1JHX0NTSTBBX0RQSFlfTDBfQ0tTRUxfU0hJRlQgNg0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9D U0kwQV9SR19DU0kwQV9EUEhZX0wwX0NLU0VMX01BU0sgQklUKDYpDQorI2RlZmluZSBNSVBJX1JY X0FOQTAwX0NTSTBBX1JHX0NTSTBBX0RQSFlfTDFfQ0tNT0RFX0VOX1NISUZUIDgNCisjZGVmaW5l IE1JUElfUlhfQU5BMDBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMV9DS01PREVfRU5fTUFTSyBCSVQo OCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMV9DS1NFTF9T SElGVCA5DQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTBBX1JHX0NTSTBBX0RQSFlfTDFfQ0tT RUxfTUFTSyBCSVQoOSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMEFfUkdfQ1NJMEFfRFBI WV9MMl9DS01PREVfRU5fU0hJRlQgMTENCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMEFfUkdf Q1NJMEFfRFBIWV9MMl9DS01PREVfRU5fTUFTSyBCSVQoMTEpDQorI2RlZmluZSBNSVBJX1JYX0FO QTAwX0NTSTBBX1JHX0NTSTBBX0RQSFlfTDJfQ0tTRUxfU0hJRlQgMTINCisjZGVmaW5lIE1JUElf UlhfQU5BMDBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMl9DS1NFTF9NQVNLIEJJVCgxMikNCisjZGVm aW5lIE1JUElfUlhfQU5BMDRfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAwMDQNCisjZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMEFfUkdfQ1NJMEFfQkdfTFBSWF9W VEhfU0VMX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMEFfUkdfQ1NJMEFfQkdf TFBSWF9WVEhfU0VMX01BU0sgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kw QV9SR19DU0kwQV9CR19MUFJYX1ZUTF9TRUxfU0hJRlQgNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEw NF9DU0kwQV9SR19DU0kwQV9CR19MUFJYX1ZUTF9TRUxfTUFTSyAoMHg3IDw8IDQpDQorI2RlZmlu ZSBNSVBJX1JYX0FOQTA0X0NTSTBBX1JHX0NTSTBBX0JHX0hTREVUX1ZUSF9TRUxfU0hJRlQgOA0K KyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kwQV9SR19DU0kwQV9CR19IU0RFVF9WVEhfU0VMX01B U0sgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kwQV9SR19DU0kwQV9CR19I U0RFVF9WVExfU0VMX1NISUZUIDEyDQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTBBX1JHX0NT STBBX0JHX0hTREVUX1ZUTF9TRUxfTUFTSyAoMHg3IDw8IDEyKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEwNF9DU0kwQV9SR19DU0kwQV9CR19WUkVGX1NFTF9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9S WF9BTkEwNF9DU0kwQV9SR19DU0kwQV9CR19WUkVGX1NFTF9NQVNLICgweGYgPDwgMTYpDQorI2Rl ZmluZSBNSVBJX1JYX0FOQTA0X0NTSTBBX1JHX0NTSTBBX0JHX01PTl9WUkVGX1NFTF9TSElGVCAy NA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kwQV9SR19DU0kwQV9CR19NT05fVlJFRl9TRUxf TUFTSyAoMHhmIDw8IDI0KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kwQV9SR19DU0kwQV9G T1JDRV9IU1JUX0VOX1NISUZUIDI4DQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTBBX1JHX0NT STBBX0ZPUkNFX0hTUlRfRU5fTUFTSyBCSVQoMjgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTA4X0NT STBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4DQorI2RlZmluZSBN SVBJX1JYX0FOQTA4X0NTSTBBX1JHX0NTSTBBX0wwUF9UMEFfSFNSVF9DT0RFX1NISUZUIDANCisj ZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMEFfUkdfQ1NJMEFfTDBQX1QwQV9IU1JUX0NPREVfTUFT SyAoMHgxZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwOF9DU0kwQV9SR19DU0kwQV9MME5f VDBCX0hTUlRfQ09ERV9TSElGVCA4DQorI2RlZmluZSBNSVBJX1JYX0FOQTA4X0NTSTBBX1JHX0NT STBBX0wwTl9UMEJfSFNSVF9DT0RFX01BU0sgKDB4MWYgPDwgOCkNCisjZGVmaW5lIE1JUElfUlhf QU5BMDhfQ1NJMEFfUkdfQ1NJMEFfTDFQX1QwQ19IU1JUX0NPREVfU0hJRlQgMTYNCisjZGVmaW5l IE1JUElfUlhfQU5BMDhfQ1NJMEFfUkdfQ1NJMEFfTDFQX1QwQ19IU1JUX0NPREVfTUFTSyAoMHgx ZiA8PCAxNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMEFfUkdfQ1NJMEFfTDFOX1QxQV9I U1JUX0NPREVfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMEFfUkdfQ1NJMEFf TDFOX1QxQV9IU1JUX0NPREVfTUFTSyAoMHgxZiA8PCAyNCkNCisjZGVmaW5lIE1JUElfUlhfQU5B MENfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEMNCisjZGVm aW5lIE1JUElfUlhfQU5BMENfQ1NJMEFfUkdfQ1NJMEFfTDJQX1QxQl9IU1JUX0NPREVfU0hJRlQg MA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwQ19DU0kwQV9SR19DU0kwQV9MMlBfVDFCX0hTUlRfQ09E RV9NQVNLICgweDFmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTBDX0NTSTBBX1JHX0NTSTBB X0wyTl9UMUNfSFNSVF9DT0RFX1NISUZUIDgNCisjZGVmaW5lIE1JUElfUlhfQU5BMENfQ1NJMEFf UkdfQ1NJMEFfTDJOX1QxQ19IU1JUX0NPREVfTUFTSyAoMHgxZiA8PCA4KQ0KKyNkZWZpbmUgTUlQ SV9SWF9BTkExMF9DU0kwQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAx MA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wwX0RFTEFZQ0FM X0VOX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9M MF9ERUxBWUNBTF9FTl9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kwQV9S R19DU0kwQV9EUEhZX0wwX0RFTEFZQ0FMX1JTVEJfU0hJRlQgMQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkExMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wwX0RFTEFZQ0FMX1JTVEJfTUFTSyBCSVQoMSkNCisj ZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMF9WUkVGX1NFTF9TSElG VCAyDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NTSTBBX0RQSFlfTDBfVlJFRl9T RUxfTUFTSyAoMHgzZiA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kwQV9SR19DU0kw QV9EUEhZX0wxX0RFTEFZQ0FMX0VOX1NISUZUIDgNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJ MEFfUkdfQ1NJMEFfRFBIWV9MMV9ERUxBWUNBTF9FTl9NQVNLIEJJVCg4KQ0KKyNkZWZpbmUgTUlQ SV9SWF9BTkExMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wxX0RFTEFZQ0FMX1JTVEJfU0hJRlQgOQ0K KyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wxX0RFTEFZQ0FMX1JT VEJfTUFTSyBCSVQoOSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBI WV9MMV9WUkVGX1NFTF9TSElGVCAxMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kwQV9SR19D U0kwQV9EUEhZX0wxX1ZSRUZfU0VMX01BU0sgKDB4M2YgPDwgMTApDQorI2RlZmluZSBNSVBJX1JY X0FOQTEwX0NTSTBBX1JHX0NTSTBBX0RQSFlfTDJfREVMQVlDQUxfRU5fU0hJRlQgMTYNCisjZGVm aW5lIE1JUElfUlhfQU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMl9ERUxBWUNBTF9FTl9NQVNL IEJJVCgxNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMl9E RUxBWUNBTF9SU1RCX1NISUZUIDE3DQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NT STBBX0RQSFlfTDJfREVMQVlDQUxfUlNUQl9NQVNLIEJJVCgxNykNCisjZGVmaW5lIE1JUElfUlhf QU5BMTBfQ1NJMEFfUkdfQ1NJMEFfRFBIWV9MMl9WUkVGX1NFTF9TSElGVCAxOA0KKyNkZWZpbmUg TUlQSV9SWF9BTkExMF9DU0kwQV9SR19DU0kwQV9EUEhZX0wyX1ZSRUZfU0VMX01BU0sgKDB4M2Yg PDwgMTgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RS X0RFTEFZQ0FMX0VOX1NISUZUIDI0DQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NT STBBX0NQSFlfVDBfQ0RSX0RFTEFZQ0FMX0VOX01BU0sgQklUKDI0KQ0KKyNkZWZpbmUgTUlQSV9S WF9BTkExMF9DU0kwQV9SR19DU0kwQV9DUEhZX1QwX0NEUl9ERUxBWUNBTF9SU1RCX1NISUZUIDI1 DQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0RFTEFZ Q0FMX1JTVEJfTUFTSyBCSVQoMjUpDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTBBX1JHX0NT STBBX0NQSFlfVDBfVlJFRl9TRUxfU0hJRlQgMjYNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJ MEFfUkdfQ1NJMEFfQ1BIWV9UMF9WUkVGX1NFTF9NQVNLICgweDNmIDw8IDI2KQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkExNF9DU0kwQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAxNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9E RUxBWUNBTF9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQTE0X0NTSTBBX1JHX0NTSTBB X0NQSFlfVDFfQ0RSX0RFTEFZQ0FMX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0FO QTE0X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDFfQ0RSX0RFTEFZQ0FMX1JTVEJfU0hJRlQgMQ0KKyNk ZWZpbmUgTUlQSV9SWF9BTkExNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9ERUxBWUNBTF9S U1RCX01BU0sgQklUKDEpDQorI2RlZmluZSBNSVBJX1JYX0FOQTE0X0NTSTBBX1JHX0NTSTBBX0NQ SFlfVDFfVlJFRl9TRUxfU0hJRlQgMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkExNF9DU0kwQV9SR19D U0kwQV9DUEhZX1QxX1ZSRUZfU0VMX01BU0sgKDB4M2YgPDwgMikNCisjZGVmaW5lIE1JUElfUlhf QU5BMThfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTgNCisj ZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfTDBfVDBBQl9FUV9PU19DQUxfRU5f U0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9SR19DU0kwQV9MMF9UMEFCX0VR X09TX0NBTF9FTl9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9SR19D U0kwQV9MMF9UMEFCX0VRX01PTl9FTl9TSElGVCAxDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NT STBBX1JHX0NTSTBBX0wwX1QwQUJfRVFfTU9OX0VOX01BU0sgQklUKDEpDQorI2RlZmluZSBNSVBJ X1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX0wwX1QwQUJfRVFfU0NBX1NISUZUIDINCisjZGVmaW5l IE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfTDBfVDBBQl9FUV9TQ0FfTUFTSyBCSVQoMikN CisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfTDBfVDBBQl9FUV9TQ0JfU0hJ RlQgMw0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9SR19DU0kwQV9MMF9UMEFCX0VRX1ND Ql9NQVNLIEJJVCgzKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9SR19DU0kwQV9MMF9U MEFCX0VRX0lTX1NISUZUIDQNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFf TDBfVDBBQl9FUV9JU19NQVNLICgweDMgPDwgNCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJ MEFfUkdfQ1NJMEFfTDBfVDBBQl9FUV9CV19TSElGVCA2DQorI2RlZmluZSBNSVBJX1JYX0FOQTE4 X0NTSTBBX1JHX0NTSTBBX0wwX1QwQUJfRVFfQldfTUFTSyAoMHgzIDw8IDYpDQorI2RlZmluZSBN SVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX0wwX1QwQUJfRVFfU1JBX1NISUZUIDgNCisjZGVm aW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfTDBfVDBBQl9FUV9TUkFfTUFTSyAoMHhm IDw8IDgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX0wwX1QwQUJfRVFf U1JCX1NISUZUIDEyDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX0wwX1Qw QUJfRVFfU1JCX01BU0sgKDB4ZiA8PCAxMikNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFf UkdfQ1NJMEFfWFhfVDBDQV9FUV9PU19DQUxfRU5fU0hJRlQgMTYNCisjZGVmaW5lIE1JUElfUlhf QU5BMThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9PU19DQUxfRU5fTUFTSyBCSVQoMTYpDQor I2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX1hYX1QwQ0FfRVFfTU9OX0VOX1NI SUZUIDE3DQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX1hYX1QwQ0FfRVFf TU9OX0VOX01BU0sgQklUKDE3KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9SR19DU0kw QV9YWF9UMENBX0VRX1NDQV9TSElGVCAxOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kwQV9S R19DU0kwQV9YWF9UMENBX0VRX1NDQV9NQVNLIEJJVCgxOCkNCisjZGVmaW5lIE1JUElfUlhfQU5B MThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9TQ0JfU0hJRlQgMTkNCisjZGVmaW5lIE1JUElf UlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9TQ0JfTUFTSyBCSVQoMTkpDQorI2Rl ZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX1hYX1QwQ0FfRVFfSVNfU0hJRlQgMjAN CisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9JU19NQVNL ICgweDMgPDwgMjApDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTBBX1JHX0NTSTBBX1hYX1Qw Q0FfRVFfQldfU0hJRlQgMjINCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFf WFhfVDBDQV9FUV9CV19NQVNLICgweDMgPDwgMjIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NT STBBX1JHX0NTSTBBX1hYX1QwQ0FfRVFfU1JBX1NISUZUIDI0DQorI2RlZmluZSBNSVBJX1JYX0FO QTE4X0NTSTBBX1JHX0NTSTBBX1hYX1QwQ0FfRVFfU1JBX01BU0sgKDB4ZiA8PCAyNCkNCisjZGVm aW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9TUkJfU0hJRlQgMjgN CisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBDQV9FUV9TUkJfTUFT SyAoMHhmIDw8IDI4KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDAxQw0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kw QV9SR19DU0kwQV9YWF9UMEJDX0VRX09TX0NBTF9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JY X0FOQTFDX0NTSTBBX1JHX0NTSTBBX1hYX1QwQkNfRVFfT1NfQ0FMX0VOX01BU0sgQklUKDApDQor I2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTBBX1JHX0NTSTBBX1hYX1QwQkNfRVFfTU9OX0VOX1NI SUZUIDENCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBCQ19FUV9N T05fRU5fTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFf WFhfVDBCQ19FUV9TQ0FfU0hJRlQgMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19D U0kwQV9YWF9UMEJDX0VRX1NDQV9NQVNLIEJJVCgyKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19D U0kwQV9SR19DU0kwQV9YWF9UMEJDX0VRX1NDQl9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0FO QTFDX0NTSTBBX1JHX0NTSTBBX1hYX1QwQkNfRVFfU0NCX01BU0sgQklUKDMpDQorI2RlZmluZSBN SVBJX1JYX0FOQTFDX0NTSTBBX1JHX0NTSTBBX1hYX1QwQkNfRVFfSVNfU0hJRlQgNA0KKyNkZWZp bmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9YWF9UMEJDX0VRX0lTX01BU0sgKDB4MyA8 PCA0KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9YWF9UMEJDX0VRX0JX X1NISUZUIDYNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBCQ19F UV9CV19NQVNLICgweDMgPDwgNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJ MEFfWFhfVDBCQ19FUV9TUkFfU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9S R19DU0kwQV9YWF9UMEJDX0VRX1NSQV9NQVNLICgweGYgPDwgOCkNCisjZGVmaW5lIE1JUElfUlhf QU5BMUNfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBCQ19FUV9TUkJfU0hJRlQgMTINCisjZGVmaW5lIE1J UElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfWFhfVDBCQ19FUV9TUkJfTUFTSyAoMHhmIDw8IDEy KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9MMV9UMUFCX0VRX09TX0NB TF9FTl9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9MMV9U MUFCX0VRX09TX0NBTF9FTl9NQVNLIEJJVCgxNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJ MEFfUkdfQ1NJMEFfTDFfVDFBQl9FUV9NT05fRU5fU0hJRlQgMTcNCisjZGVmaW5lIE1JUElfUlhf QU5BMUNfQ1NJMEFfUkdfQ1NJMEFfTDFfVDFBQl9FUV9NT05fRU5fTUFTSyBCSVQoMTcpDQorI2Rl ZmluZSBNSVBJX1JYX0FOQTFDX0NTSTBBX1JHX0NTSTBBX0wxX1QxQUJfRVFfU0NBX1NISUZUIDE4 DQorI2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTBBX1JHX0NTSTBBX0wxX1QxQUJfRVFfU0NBX01B U0sgQklUKDE4KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9MMV9UMUFC X0VRX1NDQl9TSElGVCAxOQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9M MV9UMUFCX0VRX1NDQl9NQVNLIEJJVCgxOSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFf UkdfQ1NJMEFfTDFfVDFBQl9FUV9JU19TSElGVCAyMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19D U0kwQV9SR19DU0kwQV9MMV9UMUFCX0VRX0lTX01BU0sgKDB4MyA8PCAyMCkNCisjZGVmaW5lIE1J UElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfTDFfVDFBQl9FUV9CV19TSElGVCAyMg0KKyNkZWZp bmUgTUlQSV9SWF9BTkExQ19DU0kwQV9SR19DU0kwQV9MMV9UMUFCX0VRX0JXX01BU0sgKDB4MyA8 PCAyMikNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfTDFfVDFBQl9FUV9T UkFfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMEFfUkdfQ1NJMEFfTDFfVDFB Ql9FUV9TUkFfTUFTSyAoMHhmIDw8IDI0KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kwQV9S R19DU0kwQV9MMV9UMUFCX0VRX1NSQl9TSElGVCAyOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19D U0kwQV9SR19DU0kwQV9MMV9UMUFCX0VRX1NSQl9NQVNLICgweGYgPDwgMjgpDQorI2RlZmluZSBN SVBJX1JYX0FOQTIwX0NTSTBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MDIwDQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX1hYX1QxQ0FfRVFfT1Nf Q0FMX0VOX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQU5BMjBfQ1NJMEFfUkdfQ1NJMEFfWFhf VDFDQV9FUV9PU19DQUxfRU5fTUFTSyBCSVQoMCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMjBfQ1NJ MEFfUkdfQ1NJMEFfWFhfVDFDQV9FUV9NT05fRU5fU0hJRlQgMQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEyMF9DU0kwQV9SR19DU0kwQV9YWF9UMUNBX0VRX01PTl9FTl9NQVNLIEJJVCgxKQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9YWF9UMUNBX0VRX1NDQV9TSElGVCAyDQor I2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX1hYX1QxQ0FfRVFfU0NBX01BU0sg QklUKDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX1hYX1QxQ0FfRVFf U0NCX1NISUZUIDMNCisjZGVmaW5lIE1JUElfUlhfQU5BMjBfQ1NJMEFfUkdfQ1NJMEFfWFhfVDFD QV9FUV9TQ0JfTUFTSyBCSVQoMykNCisjZGVmaW5lIE1JUElfUlhfQU5BMjBfQ1NJMEFfUkdfQ1NJ MEFfWFhfVDFDQV9FUV9JU19TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JH X0NTSTBBX1hYX1QxQ0FfRVFfSVNfTUFTSyAoMHgzIDw8IDQpDQorI2RlZmluZSBNSVBJX1JYX0FO QTIwX0NTSTBBX1JHX0NTSTBBX1hYX1QxQ0FfRVFfQldfU0hJRlQgNg0KKyNkZWZpbmUgTUlQSV9S WF9BTkEyMF9DU0kwQV9SR19DU0kwQV9YWF9UMUNBX0VRX0JXX01BU0sgKDB4MyA8PCA2KQ0KKyNk ZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9YWF9UMUNBX0VRX1NSQV9TSElGVCA4 DQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX1hYX1QxQ0FfRVFfU1JBX01B U0sgKDB4ZiA8PCA4KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9YWF9U MUNBX0VRX1NSQl9TSElGVCAxMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kw QV9YWF9UMUNBX0VRX1NSQl9NQVNLICgweGYgPDwgMTIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTIw X0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFfT1NfQ0FMX0VOX1NISUZUIDE2DQorI2RlZmluZSBN SVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFfT1NfQ0FMX0VOX01BU0sgQklU KDE2KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9MMl9UMUJDX0VRX01P Tl9FTl9TSElGVCAxNw0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9MMl9U MUJDX0VRX01PTl9FTl9NQVNLIEJJVCgxNykNCisjZGVmaW5lIE1JUElfUlhfQU5BMjBfQ1NJMEFf UkdfQ1NJMEFfTDJfVDFCQ19FUV9TQ0FfU0hJRlQgMTgNCisjZGVmaW5lIE1JUElfUlhfQU5BMjBf Q1NJMEFfUkdfQ1NJMEFfTDJfVDFCQ19FUV9TQ0FfTUFTSyBCSVQoMTgpDQorI2RlZmluZSBNSVBJ X1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFfU0NCX1NISUZUIDE5DQorI2RlZmlu ZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFfU0NCX01BU0sgQklUKDE5 KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9MMl9UMUJDX0VRX0lTX1NI SUZUIDIwDQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFf SVNfTUFTSyAoMHgzIDw8IDIwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyMF9DU0kwQV9SR19DU0kw QV9MMl9UMUJDX0VRX0JXX1NISUZUIDIyDQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JH X0NTSTBBX0wyX1QxQkNfRVFfQldfTUFTSyAoMHgzIDw8IDIyKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEyMF9DU0kwQV9SR19DU0kwQV9MMl9UMUJDX0VRX1NSQV9TSElGVCAyNA0KKyNkZWZpbmUgTUlQ SV9SWF9BTkEyMF9DU0kwQV9SR19DU0kwQV9MMl9UMUJDX0VRX1NSQV9NQVNLICgweGYgPDwgMjQp DQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFfU1JCX1NI SUZUIDI4DQorI2RlZmluZSBNSVBJX1JYX0FOQTIwX0NTSTBBX1JHX0NTSTBBX0wyX1QxQkNfRVFf U1JCX01BU0sgKDB4ZiA8PCAyOCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMjRfQ1NJMEEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjQNCisjZGVmaW5lIE1JUElfUlhfQU5B MjRfQ1NJMEFfUkdfQ1NJMEFfUkVTRVJWRV9TSElGVCAyNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEy NF9DU0kwQV9SR19DU0kwQV9SRVNFUlZFX01BU0sgKDB4ZmYgPDwgMjQpDQorI2RlZmluZSBNSVBJ X1JYX0FOQTI4X0NTSTBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDI4 DQorI2RlZmluZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0RJUkVD VF9FTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlf VDBfQ0RSX0RJUkVDVF9FTl9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyOF9DU0kw QV9SR19DU0kwQV9DUEhZX1QwX0NEUl9BVVRPTE9BRF9FTl9TSElGVCAxDQorI2RlZmluZSBNSVBJ X1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0FVVE9MT0FEX0VOX01BU0sgQklU KDEpDQorI2RlZmluZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0xQ Rl9DVFJMX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQU5BMjhfQ1NJMEFfUkdfQ1NJMEFfQ1BI WV9UMF9DRFJfTFBGX0NUUkxfTUFTSyAoMHgzIDw8IDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTI4 X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0FCX1dJRFRIX1NISUZUIDQNCisjZGVmaW5lIE1J UElfUlhfQU5BMjhfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9UMF9DRFJfQUJfV0lEVEhfTUFTSyAoMHhm IDw8IDQpDQorI2RlZmluZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RS X0JDX1dJRFRIX1NISUZUIDgNCisjZGVmaW5lIE1JUElfUlhfQU5BMjhfQ1NJMEFfUkdfQ1NJMEFf Q1BIWV9UMF9DRFJfQkNfV0lEVEhfTUFTSyAoMHhmIDw8IDgpDQorI2RlZmluZSBNSVBJX1JYX0FO QTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0NBX1dJRFRIX1NISUZUIDEyDQorI2RlZmlu ZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0NBX1dJRFRIX01BU0sg KDB4ZiA8PCAxMikNCisjZGVmaW5lIE1JUElfUlhfQU5BMjhfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9U MF9DRFJfQ0tfREVMQVlfU0hJRlQgMTYNCisjZGVmaW5lIE1JUElfUlhfQU5BMjhfQ1NJMEFfUkdf Q1NJMEFfQ1BIWV9UMF9DRFJfQ0tfREVMQVlfTUFTSyAoMHhmIDw8IDE2KQ0KKyNkZWZpbmUgTUlQ SV9SWF9BTkEyOF9DU0kwQV9SR19DU0kwQV9DUEhZX1QwX0hTREVUX1NFTF9TSElGVCAyMA0KKyNk ZWZpbmUgTUlQSV9SWF9BTkEyOF9DU0kwQV9SR19DU0kwQV9DUEhZX1QwX0hTREVUX1NFTF9NQVNL ICgweDMgPDwgMjApDQorI2RlZmluZSBNSVBJX1JYX0FOQTI4X0NTSTBBX1JHX0NTSTBBX0NQSFlf VDBfQ0RSX01BTlVBTF9FTl9TSElGVCAyNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyOF9DU0kwQV9S R19DU0kwQV9DUEhZX1QwX0NEUl9NQU5VQUxfRU5fTUFTSyBCSVQoMjQpDQorI2RlZmluZSBNSVBJ X1JYX0FOQTJDX0NTSTBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDJD DQorI2RlZmluZSBNSVBJX1JYX0FOQTJDX0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0lOSVRf Q09ERV9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQTJDX0NTSTBBX1JHX0NTSTBBX0NQSFlf VDBfQ0RSX0lOSVRfQ09ERV9NQVNLICgweDFmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTJD X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDBfQ0RSX0VBUkxZX0NPREVfU0hJRlQgOA0KKyNkZWZpbmUg TUlQSV9SWF9BTkEyQ19DU0kwQV9SR19DU0kwQV9DUEhZX1QwX0NEUl9FQVJMWV9DT0RFX01BU0sg KDB4MWYgPDwgOCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMkNfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9U MF9DRFJfTEFURV9DT0RFX1NISUZUIDE2DQorI2RlZmluZSBNSVBJX1JYX0FOQTJDX0NTSTBBX1JH X0NTSTBBX0NQSFlfVDBfQ0RSX0xBVEVfQ09ERV9NQVNLICgweDFmIDw8IDE2KQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkEzNF9DU0kwQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAzNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9E SVJFQ1RfRU5fU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9D UEhZX1QxX0NEUl9ESVJFQ1RfRU5fTUFTSyBCSVQoMCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMzRf Q1NJMEFfUkdfQ1NJMEFfQ1BIWV9UMV9DRFJfQVVUT0xPQURfRU5fU0hJRlQgMQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9BVVRPTE9BRF9FTl9NQVNL IEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NE Ul9MUEZfQ1RSTF9TSElGVCAyDQorI2RlZmluZSBNSVBJX1JYX0FOQTM0X0NTSTBBX1JHX0NTSTBB X0NQSFlfVDFfQ0RSX0xQRl9DVFJMX01BU0sgKDB4MyA8PCAyKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9BQl9XSURUSF9TSElGVCA0DQorI2RlZmlu ZSBNSVBJX1JYX0FOQTM0X0NTSTBBX1JHX0NTSTBBX0NQSFlfVDFfQ0RSX0FCX1dJRFRIX01BU0sg KDB4ZiA8PCA0KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1Qx X0NEUl9CQ19XSURUSF9TSElGVCA4DQorI2RlZmluZSBNSVBJX1JYX0FOQTM0X0NTSTBBX1JHX0NT STBBX0NQSFlfVDFfQ0RSX0JDX1dJRFRIX01BU0sgKDB4ZiA8PCA4KQ0KKyNkZWZpbmUgTUlQSV9S WF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9DQV9XSURUSF9TSElGVCAxMg0KKyNk ZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9DQV9XSURUSF9N QVNLICgweGYgPDwgMTIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTM0X0NTSTBBX1JHX0NTSTBBX0NQ SFlfVDFfQ0RSX0NLX0RFTEFZX1NISUZUIDE2DQorI2RlZmluZSBNSVBJX1JYX0FOQTM0X0NTSTBB X1JHX0NTSTBBX0NQSFlfVDFfQ0RSX0NLX0RFTEFZX01BU0sgKDB4ZiA8PCAxNikNCisjZGVmaW5l IE1JUElfUlhfQU5BMzRfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9UMV9IU0RFVF9TRUxfU0hJRlQgMjAN CisjZGVmaW5lIE1JUElfUlhfQU5BMzRfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9UMV9IU0RFVF9TRUxf TUFTSyAoMHgzIDw8IDIwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzNF9DU0kwQV9SR19DU0kwQV9D UEhZX1QxX0NEUl9NQU5VQUxfRU5fU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQU5BMzRfQ1NJ MEFfUkdfQ1NJMEFfQ1BIWV9UMV9DRFJfTUFOVUFMX0VOX01BU0sgQklUKDI0KQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkEzOF9DU0kwQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAzOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzOF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9J TklUX0NPREVfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzOF9DU0kwQV9SR19DU0kwQV9D UEhZX1QxX0NEUl9JTklUX0NPREVfTUFTSyAoMHgxZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEzOF9DU0kwQV9SR19DU0kwQV9DUEhZX1QxX0NEUl9FQVJMWV9DT0RFX1NISUZUIDgNCisjZGVm aW5lIE1JUElfUlhfQU5BMzhfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9UMV9DRFJfRUFSTFlfQ09ERV9N QVNLICgweDFmIDw8IDgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTM4X0NTSTBBX1JHX0NTSTBBX0NQ SFlfVDFfQ0RSX0xBVEVfQ09ERV9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9SWF9BTkEzOF9DU0kw QV9SR19DU0kwQV9DUEhZX1QxX0NEUl9MQVRFX0NPREVfTUFTSyAoMHgxZiA8PCAxNikNCisjZGVm aW5lIE1JUElfUlhfQU5BNDBfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAwNDANCisjZGVmaW5lIE1JUElfUlhfQU5BNDBfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9GTUNL X1NFTF9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQTQwX0NTSTBBX1JHX0NTSTBBX0NQSFlf Rk1DS19TRUxfTUFTSyAoMHgzIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTQwX0NTSTBBX1JH X0NTSTBBX0FTWU5DX09QVElPTl9TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQTQwX0NTSTBB X1JHX0NTSTBBX0FTWU5DX09QVElPTl9NQVNLICgweGYgPDwgNCkNCisjZGVmaW5lIE1JUElfUlhf QU5BNDBfQ1NJMEFfUkdfQ1NJMEFfQ1BIWV9TUEFSRV9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9S WF9BTkE0MF9DU0kwQV9SR19DU0kwQV9DUEhZX1NQQVJFX01BU0sgKDB4ZmZmZiA8PCAxNikNCisj ZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwNDgNCisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMEFfUkdTX0NTSTBBX0NEUEhZ X0wwX1QwQUJfT1NfQ0FMX0NQTFRfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkE0OF9DU0kw QV9SR1NfQ1NJMEFfQ0RQSFlfTDBfVDBBQl9PU19DQUxfQ1BMVF9NQVNLIEJJVCgwKQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkE0OF9DU0kwQV9SR1NfQ1NJMEFfQ1BIWV9UMENBX09TX0NBTF9DUExUX1NI SUZUIDENCisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMEFfUkdTX0NTSTBBX0NQSFlfVDBDQV9P U19DQUxfQ1BMVF9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkE0OF9DU0kwQV9SR1Nf Q1NJMEFfQ1BIWV9UMEJDX09TX0NBTF9DUExUX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQU5B NDhfQ1NJMEFfUkdTX0NTSTBBX0NQSFlfVDBCQ19PU19DQUxfQ1BMVF9NQVNLIEJJVCgyKQ0KKyNk ZWZpbmUgTUlQSV9SWF9BTkE0OF9DU0kwQV9SR1NfQ1NJMEFfQ0RQSFlfTDFfVDFBQl9PU19DQUxf Q1BMVF9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0FOQTQ4X0NTSTBBX1JHU19DU0kwQV9DRFBI WV9MMV9UMUFCX09TX0NBTF9DUExUX01BU0sgQklUKDMpDQorI2RlZmluZSBNSVBJX1JYX0FOQTQ4 X0NTSTBBX1JHU19DU0kwQV9DUEhZX1QxQ0FfT1NfQ0FMX0NQTFRfU0hJRlQgNA0KKyNkZWZpbmUg TUlQSV9SWF9BTkE0OF9DU0kwQV9SR1NfQ1NJMEFfQ1BIWV9UMUNBX09TX0NBTF9DUExUX01BU0sg QklUKDQpDQorI2RlZmluZSBNSVBJX1JYX0FOQTQ4X0NTSTBBX1JHU19DU0kwQV9DRFBIWV9MMl9U MUJDX09TX0NBTF9DUExUX1NISUZUIDUNCisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMEFfUkdT X0NTSTBBX0NEUEhZX0wyX1QxQkNfT1NfQ0FMX0NQTFRfTUFTSyBCSVQoNSkNCisjZGVmaW5lIE1J UElfUlhfQU5BNDhfQ1NJMEFfUkdTX0NTSTBBX09TX0NBTF9DT0RFX1NISUZUIDgNCisjZGVmaW5l IE1JUElfUlhfQU5BNDhfQ1NJMEFfUkdTX0NTSTBBX09TX0NBTF9DT0RFX01BU0sgKDB4ZmYgPDwg OCkNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgwX0NTSTBBICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwODANCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgwX0NTSTBBX0NTUl9D U0lfQ0xLX01PTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4MF9DU0kwQV9DU1Jf Q1NJX0NMS19NT05fTUFTSyBCSVQoMCkNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgwX0NTSTBB X0NTUl9DU0lfQ0xLX0VOX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgwX0NTSTBB X0NTUl9DU0lfQ0xLX0VOX01BU0sgQklUKDEpDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4MF9D U0kwQV9DU1JfQ1NJX01PTl9NVVhfU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSODBf Q1NJMEFfQ1NSX0NTSV9NT05fTVVYX01BU0sgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIE1JUElfUlhf V1JBUFBFUjgwX0NTSTBBX0NTUl9DU0lfUlNUX01PREVfU0hJRlQgMTYNCisjZGVmaW5lIE1JUElf UlhfV1JBUFBFUjgwX0NTSTBBX0NTUl9DU0lfUlNUX01PREVfTUFTSyAoMHgzIDw8IDE2KQ0KKyNk ZWZpbmUgTUlQSV9SWF9XUkFQUEVSODBfQ1NJMEFfQ1NSX1NXX1JTVF9TSElGVCAyNA0KKyNkZWZp bmUgTUlQSV9SWF9XUkFQUEVSODBfQ1NJMEFfQ1NSX1NXX1JTVF9NQVNLICgweGYgPDwgMjQpDQor I2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4NF9DU0kwQSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMDg0DQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4NF9DU0kwQV9DU0lfREVCVUdf T1VUX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjg0X0NTSTBBX0NTSV9ERUJVR19P VVRfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSODhfQ1NJ MEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4OA0KKyNkZWZpbmUgTUlQSV9S WF9XUkFQUEVSODhfQ1NJMEFfQ1NSX1NXX01PREVfMF9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JY X1dSQVBQRVI4OF9DU0kwQV9DU1JfU1dfTU9ERV8wX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisj ZGVmaW5lIE1JUElfUlhfV1JBUFBFUjhDX0NTSTBBICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwOEMNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjhDX0NTSTBBX0NTUl9TV19NT0RF XzFfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOENfQ1NJMEFfQ1NSX1NXX01PREVf MV9NQVNLICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5MF9DU0kw QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkwDQorI2RlZmluZSBNSVBJX1JY X1dSQVBQRVI5MF9DU0kwQV9DU1JfU1dfTU9ERV8yX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhf V1JBUFBFUjkwX0NTSTBBX0NTUl9TV19NT0RFXzJfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNk ZWZpbmUgTUlQSV9SWF9XUkFQUEVSOTRfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDA5NA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOTRfQ1NJMEFfQ1NSX1NXX1ZBTFVF XzBfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOTRfQ1NJMEFfQ1NSX1NXX1ZBTFVF XzBfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOThfQ1NJ MEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA5OA0KKyNkZWZpbmUgTUlQSV9S WF9XUkFQUEVSOThfQ1NJMEFfQ1NSX1NXX1ZBTFVFXzFfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9S WF9XUkFQUEVSOThfQ1NJMEFfQ1NSX1NXX1ZBTFVFXzFfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0K KyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOUNfQ1NJMEEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDA5Qw0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOUNfQ1NJMEFfQ1NSX1NXX1ZB TFVFXzJfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOUNfQ1NJMEFfQ1NSX1NXX1ZB TFVFXzJfTUFTSyAoMHhmZmZmZmZmZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kw QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBBNA0KKyNkZWZpbmUgTUlQ SV9SWF9BTkFBNF9DU0kwQV9SR19DU0kwQV9DRFBIWV9MMF9UMF9TWU5DX0lOSVRfU0VMX1NISUZU IDANCisjZGVmaW5lIE1JUElfUlhfQU5BQTRfQ1NJMEFfUkdfQ1NJMEFfQ0RQSFlfTDBfVDBfU1lO Q19JTklUX1NFTF9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kwQV9SR19D U0kwQV9DRFBIWV9MMF9UMF9GT1JDRV9JTklUX1NISUZUIDENCisjZGVmaW5lIE1JUElfUlhfQU5B QTRfQ1NJMEFfUkdfQ1NJMEFfQ0RQSFlfTDBfVDBfRk9SQ0VfSU5JVF9NQVNLIEJJVCgxKQ0KKyNk ZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kwQV9SR19DU0kwQV9EUEhZX0wxX1NZTkNfSU5JVF9TRUxf U0hJRlQgMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kwQV9SR19DU0kwQV9EUEhZX0wxX1NZ TkNfSU5JVF9TRUxfTUFTSyBCSVQoMikNCisjZGVmaW5lIE1JUElfUlhfQU5BQTRfQ1NJMEFfUkdf Q1NJMEFfRFBIWV9MMV9GT1JDRV9JTklUX1NISUZUIDMNCisjZGVmaW5lIE1JUElfUlhfQU5BQTRf Q1NJMEFfUkdfQ1NJMEFfRFBIWV9MMV9GT1JDRV9JTklUX01BU0sgQklUKDMpDQorI2RlZmluZSBN SVBJX1JYX0FOQUE0X0NTSTBBX1JHX0NTSTBBX0NEUEhZX0wyX1QxX1NZTkNfSU5JVF9TRUxfU0hJ RlQgNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kwQV9SR19DU0kwQV9DRFBIWV9MMl9UMV9T WU5DX0lOSVRfU0VMX01BU0sgQklUKDQpDQorI2RlZmluZSBNSVBJX1JYX0FOQUE0X0NTSTBBX1JH X0NTSTBBX0NEUEhZX0wyX1QxX0ZPUkNFX0lOSVRfU0hJRlQgNQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkFBNF9DU0kwQV9SR19DU0kwQV9DRFBIWV9MMl9UMV9GT1JDRV9JTklUX01BU0sgQklUKDUpDQor I2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMEE4DQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTBBX1JHX0NTSTBBX0NEUEhZ X0wwX1QwX0JZVEVDS19JTlZFUlRfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kw QV9SR19DU0kwQV9DRFBIWV9MMF9UMF9CWVRFQ0tfSU5WRVJUX01BU0sgQklUKDApDQorI2RlZmlu ZSBNSVBJX1JYX0FOQUE4X0NTSTBBX1JHX0NTSTBBX0RQSFlfTDFfQllURUNLX0lOVkVSVF9TSElG VCAxDQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTBBX1JHX0NTSTBBX0RQSFlfTDFfQllURUNL X0lOVkVSVF9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kwQV9SR19DU0kw QV9DRFBIWV9MMl9UMV9CWVRFQ0tfSU5WRVJUX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQU5B QThfQ1NJMEFfUkdfQ1NJMEFfQ0RQSFlfTDJfVDFfQllURUNLX0lOVkVSVF9NQVNLIEJJVCgyKQ0K KyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kwQV9SR19DU0kwQV9EUEhZX0hTREVUX0xFVkVMX01P REVfRU5fU0hJRlQgMw0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kwQV9SR19DU0kwQV9EUEhZ X0hTREVUX0xFVkVMX01PREVfRU5fTUFTSyBCSVQoMykNCisjZGVmaW5lIE1JUElfUlhfQU5BQThf Q1NJMEFfUkdfQ1NJMEFfT1NfQ0FMX1NFTF9TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQUE4 X0NTSTBBX1JHX0NTSTBBX09TX0NBTF9TRUxfTUFTSyAoMHg3IDw8IDQpDQorI2RlZmluZSBNSVBJ X1JYX0FOQUE4X0NTSTBBX1JHX0NTSTBBX0RQSFlfSFNERVRfRElHX0JBQ0tfRU5fU0hJRlQgNw0K KyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kwQV9SR19DU0kwQV9EUEhZX0hTREVUX0RJR19CQUNL X0VOX01BU0sgQklUKDcpDQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTBBX1JHX0NTSTBBX0NE UEhZX0RFTEFZQ0FMX0NLX1NFTF9TSElGVCA4DQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTBB X1JHX0NTSTBBX0NEUEhZX0RFTEFZQ0FMX0NLX1NFTF9NQVNLICgweDcgPDwgOCkNCisjZGVmaW5l IE1JUElfUlhfQU5BQThfQ1NJMEFfUkdfQ1NJMEFfT1NfQ0FMX0RJVl9TSElGVCAxMQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkFBOF9DU0kwQV9SR19DU0kwQV9PU19DQUxfRElWX01BU0sgKDB4MyA8PCAx MSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMUEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDIwMDANCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMUFfUkdfQ1NJMUFf RVFfUFJPVEVDVF9FTl9TSElGVCAxDQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTFBX1JHX0NT STFBX0VRX1BST1RFQ1RfRU5fTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJ MUFfUkdfQ1NJMUFfQkdfTFBGX0VOX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJ MUFfUkdfQ1NJMUFfQkdfTFBGX0VOX01BU0sgQklUKDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTAw X0NTSTFBX1JHX0NTSTFBX0JHX0NPUkVfRU5fU0hJRlQgMw0KKyNkZWZpbmUgTUlQSV9SWF9BTkEw MF9DU0kxQV9SR19DU0kxQV9CR19DT1JFX0VOX01BU0sgQklUKDMpDQorI2RlZmluZSBNSVBJX1JY X0FOQTAwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfQ0tNT0RFX0VOX1NISUZUIDUNCisjZGVmaW5l IE1JUElfUlhfQU5BMDBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMF9DS01PREVfRU5fTUFTSyBCSVQo NSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMF9DS1NFTF9T SElGVCA2DQorI2RlZmluZSBNSVBJX1JYX0FOQTAwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfQ0tT RUxfTUFTSyBCSVQoNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMUFfUkdfQ1NJMUFfRFBI WV9MMV9DS01PREVfRU5fU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9DU0kxQV9SR19D U0kxQV9EUEhZX0wxX0NLTU9ERV9FTl9NQVNLIEJJVCg4KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEw MF9DU0kxQV9SR19DU0kxQV9EUEhZX0wxX0NLU0VMX1NISUZUIDkNCisjZGVmaW5lIE1JUElfUlhf QU5BMDBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMV9DS1NFTF9NQVNLIEJJVCg5KQ0KKyNkZWZpbmUg TUlQSV9SWF9BTkEwMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX0NLTU9ERV9FTl9TSElGVCAxMQ0K KyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX0NLTU9ERV9FTl9N QVNLIEJJVCgxMSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9M Ml9DS1NFTF9TSElGVCAxMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwMF9DU0kxQV9SR19DU0kxQV9E UEhZX0wyX0NLU0VMX01BU0sgQklUKDEyKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwNF9DU0kxQSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwNA0KKyNkZWZpbmUgTUlQSV9S WF9BTkEwNF9DU0kxQV9SR19DU0kxQV9CR19MUFJYX1ZUSF9TRUxfU0hJRlQgMA0KKyNkZWZpbmUg TUlQSV9SWF9BTkEwNF9DU0kxQV9SR19DU0kxQV9CR19MUFJYX1ZUSF9TRUxfTUFTSyAoMHg3IDw8 IDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0JHX0xQUlhfVlRMX1NF TF9TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0JHX0xQUlhf VlRMX1NFTF9NQVNLICgweDcgPDwgNCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMUFfUkdf Q1NJMUFfQkdfSFNERVRfVlRIX1NFTF9TSElGVCA4DQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NT STFBX1JHX0NTSTFBX0JHX0hTREVUX1ZUSF9TRUxfTUFTSyAoMHg3IDw8IDgpDQorI2RlZmluZSBN SVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0JHX0hTREVUX1ZUTF9TRUxfU0hJRlQgMTINCisj ZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMUFfUkdfQ1NJMUFfQkdfSFNERVRfVlRMX1NFTF9NQVNL ICgweDcgPDwgMTIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0JHX1ZS RUZfU0VMX1NISUZUIDE2DQorI2RlZmluZSBNSVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0JH X1ZSRUZfU0VMX01BU0sgKDB4ZiA8PCAxNikNCisjZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMUFf UkdfQ1NJMUFfQkdfTU9OX1ZSRUZfU0VMX1NISUZUIDI0DQorI2RlZmluZSBNSVBJX1JYX0FOQTA0 X0NTSTFBX1JHX0NTSTFBX0JHX01PTl9WUkVGX1NFTF9NQVNLICgweGYgPDwgMjQpDQorI2RlZmlu ZSBNSVBJX1JYX0FOQTA0X0NTSTFBX1JHX0NTSTFBX0ZPUkNFX0hTUlRfRU5fU0hJRlQgMjgNCisj ZGVmaW5lIE1JUElfUlhfQU5BMDRfQ1NJMUFfUkdfQ1NJMUFfRk9SQ0VfSFNSVF9FTl9NQVNLIEJJ VCgyOCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMUEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDIwMDgNCisjZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMUFfUkdfQ1NJ MUFfTDBQX0hTUlRfQ09ERV9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQTA4X0NTSTFBX1JH X0NTSTFBX0wwUF9IU1JUX0NPREVfTUFTSyAoMHgxZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkEwOF9DU0kxQV9SR19DU0kxQV9MME5fSFNSVF9DT0RFX1NISUZUIDgNCisjZGVmaW5lIE1JUElf UlhfQU5BMDhfQ1NJMUFfUkdfQ1NJMUFfTDBOX0hTUlRfQ09ERV9NQVNLICgweDFmIDw8IDgpDQor I2RlZmluZSBNSVBJX1JYX0FOQTA4X0NTSTFBX1JHX0NTSTFBX0wxUF9IU1JUX0NPREVfU0hJRlQg MTYNCisjZGVmaW5lIE1JUElfUlhfQU5BMDhfQ1NJMUFfUkdfQ1NJMUFfTDFQX0hTUlRfQ09ERV9N QVNLICgweDFmIDw8IDE2KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwOF9DU0kxQV9SR19DU0kxQV9M MU5fSFNSVF9DT0RFX1NISUZUIDI0DQorI2RlZmluZSBNSVBJX1JYX0FOQTA4X0NTSTFBX1JHX0NT STFBX0wxTl9IU1JUX0NPREVfTUFTSyAoMHgxZiA8PCAyNCkNCisjZGVmaW5lIE1JUElfUlhfQU5B MENfQ1NJMUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMEMNCisjZGVm aW5lIE1JUElfUlhfQU5BMENfQ1NJMUFfUkdfQ1NJMUFfTDJQX0hTUlRfQ09ERV9TSElGVCAwDQor I2RlZmluZSBNSVBJX1JYX0FOQTBDX0NTSTFBX1JHX0NTSTFBX0wyUF9IU1JUX0NPREVfTUFTSyAo MHgxZiA8PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkEwQ19DU0kxQV9SR19DU0kxQV9MMk5fSFNS VF9DT0RFX1NISUZUIDgNCisjZGVmaW5lIE1JUElfUlhfQU5BMENfQ1NJMUFfUkdfQ1NJMUFfTDJO X0hTUlRfQ09ERV9NQVNLICgweDFmIDw8IDgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFB ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDEwDQorI2RlZmluZSBNSVBJ X1JYX0FOQTEwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfREVMQVlDQUxfRU5fU0hJRlQgMA0KKyNk ZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wwX0RFTEFZQ0FMX0VOX01B U0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBf REVMQVlDQUxfUlNUQl9TSElGVCAxDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFBX1JHX0NT STFBX0RQSFlfTDBfREVMQVlDQUxfUlNUQl9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkExMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wwX1ZSRUZfU0VMX1NISUZUIDINCisjZGVmaW5lIE1J UElfUlhfQU5BMTBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMF9WUkVGX1NFTF9NQVNLICgweDNmIDw8 IDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDFfREVMQVlD QUxfRU5fU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kxQV9SR19DU0kxQV9EUEhZ X0wxX0RFTEFZQ0FMX0VOX01BU0sgQklUKDgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFB X1JHX0NTSTFBX0RQSFlfTDFfREVMQVlDQUxfUlNUQl9TSElGVCA5DQorI2RlZmluZSBNSVBJX1JY X0FOQTEwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDFfREVMQVlDQUxfUlNUQl9NQVNLIEJJVCg5KQ0K KyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wxX1ZSRUZfU0VMX1NI SUZUIDEwDQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NTSTFBX1JHX0NTSTFBX0RQSFlfTDFfVlJF Rl9TRUxfTUFTSyAoMHgzZiA8PCAxMCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMUFfUkdf Q1NJMUFfRFBIWV9MMl9ERUxBWUNBTF9FTl9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9SWF9BTkEx MF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX0RFTEFZQ0FMX0VOX01BU0sgQklUKDE2KQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkExMF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX0RFTEFZQ0FMX1JTVEJfU0hJ RlQgMTcNCisjZGVmaW5lIE1JUElfUlhfQU5BMTBfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMl9ERUxB WUNBTF9SU1RCX01BU0sgQklUKDE3KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExMF9DU0kxQV9SR19D U0kxQV9EUEhZX0wyX1ZSRUZfU0VMX1NISUZUIDE4DQorI2RlZmluZSBNSVBJX1JYX0FOQTEwX0NT STFBX1JHX0NTSTFBX0RQSFlfTDJfVlJFRl9TRUxfTUFTSyAoMHgzZiA8PCAxOCkNCisjZGVmaW5l IE1JUElfUlhfQU5BMThfQ1NJMUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDIwMTgNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfT1NfQ0FM X0VOX1NISUZUIDANCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFf T1NfQ0FMX0VOX01BU0sgQklUKDApDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NT STFBX0wwX0VRX01PTl9FTl9TSElGVCAxDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JH X0NTSTFBX0wwX0VRX01PTl9FTl9NQVNLIEJJVCgxKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9D U0kxQV9SR19DU0kxQV9MMF9FUV9TQ0FfU0hJRlQgMg0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9D U0kxQV9SR19DU0kxQV9MMF9FUV9TQ0FfTUFTSyBCSVQoMikNCisjZGVmaW5lIE1JUElfUlhfQU5B MThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfU0NCX1NISUZUIDMNCisjZGVmaW5lIE1JUElfUlhfQU5B MThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfU0NCX01BU0sgQklUKDMpDQorI2RlZmluZSBNSVBJX1JY X0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wwX0VRX0lTX1NISUZUIDQNCisjZGVmaW5lIE1JUElfUlhf QU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfSVNfTUFTSyAoMHgzIDw8IDQpDQorI2RlZmluZSBN SVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wwX0VRX0JXX1NISUZUIDYNCisjZGVmaW5lIE1J UElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfQldfTUFTSyAoMHgzIDw8IDYpDQorI2Rl ZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wwX0VRX1NSQV9TSElGVCA4DQorI2Rl ZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wwX0VRX1NSQV9NQVNLICgweGYgPDwg OCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDBfRVFfU1JCX1NISUZU IDEyDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wwX0VRX1NSQl9NQVNL ICgweGYgPDwgMTIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wxX0VR X09TX0NBTF9FTl9TSElGVCAxNg0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kxQV9SR19DU0kx QV9MMV9FUV9PU19DQUxfRU5fTUFTSyBCSVQoMTYpDQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NT STFBX1JHX0NTSTFBX0wxX0VRX01PTl9FTl9TSElGVCAxNw0KKyNkZWZpbmUgTUlQSV9SWF9BTkEx OF9DU0kxQV9SR19DU0kxQV9MMV9FUV9NT05fRU5fTUFTSyBCSVQoMTcpDQorI2RlZmluZSBNSVBJ X1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wxX0VRX1NDQV9TSElGVCAxOA0KKyNkZWZpbmUgTUlQ SV9SWF9BTkExOF9DU0kxQV9SR19DU0kxQV9MMV9FUV9TQ0FfTUFTSyBCSVQoMTgpDQorI2RlZmlu ZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wxX0VRX1NDQl9TSElGVCAxOQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkExOF9DU0kxQV9SR19DU0kxQV9MMV9FUV9TQ0JfTUFTSyBCSVQoMTkpDQor I2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wxX0VRX0lTX1NISUZUIDIwDQor I2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JHX0NTSTFBX0wxX0VRX0lTX01BU0sgKDB4MyA8 PCAyMCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDFfRVFfQldfU0hJ RlQgMjINCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDFfRVFfQldfTUFT SyAoMHgzIDw8IDIyKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExOF9DU0kxQV9SR19DU0kxQV9MMV9F UV9TUkFfU0hJRlQgMjQNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdfQ1NJMUFfTDFf RVFfU1JBX01BU0sgKDB4ZiA8PCAyNCkNCisjZGVmaW5lIE1JUElfUlhfQU5BMThfQ1NJMUFfUkdf Q1NJMUFfTDFfRVFfU1JCX1NISUZUIDI4DQorI2RlZmluZSBNSVBJX1JYX0FOQTE4X0NTSTFBX1JH X0NTSTFBX0wxX0VRX1NSQl9NQVNLICgweGYgPDwgMjgpDQorI2RlZmluZSBNSVBJX1JYX0FOQTFD X0NTSTFBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDFDDQorI2RlZmlu ZSBNSVBJX1JYX0FOQTFDX0NTSTFBX1JHX0NTSTFBX0wyX0VRX09TX0NBTF9FTl9TSElGVCAwDQor I2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTFBX1JHX0NTSTFBX0wyX0VRX09TX0NBTF9FTl9NQVNL IEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kxQV9SR19DU0kxQV9MMl9FUV9NT05f RU5fU0hJRlQgMQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kxQV9SR19DU0kxQV9MMl9FUV9N T05fRU5fTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMUFfUkdfQ1NJMUFf TDJfRVFfU0NBX1NISUZUIDINCisjZGVmaW5lIE1JUElfUlhfQU5BMUNfQ1NJMUFfUkdfQ1NJMUFf TDJfRVFfU0NBX01BU0sgQklUKDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTFBX1JHX0NT STFBX0wyX0VRX1NDQl9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTFBX1JHX0NT STFBX0wyX0VRX1NDQl9NQVNLIEJJVCgzKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19DU0kxQV9S R19DU0kxQV9MMl9FUV9JU19TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQTFDX0NTSTFBX1JH X0NTSTFBX0wyX0VRX0lTX01BU0sgKDB4MyA8PCA0KQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkExQ19D U0kxQV9SR19DU0kxQV9MMl9FUV9CV19TSElGVCA2DQorI2RlZmluZSBNSVBJX1JYX0FOQTFDX0NT STFBX1JHX0NTSTFBX0wyX0VRX0JXX01BU0sgKDB4MyA8PCA2KQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkExQ19DU0kxQV9SR19DU0kxQV9MMl9FUV9TUkFfU0hJRlQgOA0KKyNkZWZpbmUgTUlQSV9SWF9B TkExQ19DU0kxQV9SR19DU0kxQV9MMl9FUV9TUkFfTUFTSyAoMHhmIDw8IDgpDQorI2RlZmluZSBN SVBJX1JYX0FOQTFDX0NTSTFBX1JHX0NTSTFBX0wyX0VRX1NSQl9TSElGVCAxMg0KKyNkZWZpbmUg TUlQSV9SWF9BTkExQ19DU0kxQV9SR19DU0kxQV9MMl9FUV9TUkJfTUFTSyAoMHhmIDw8IDEyKQ0K KyNkZWZpbmUgTUlQSV9SWF9BTkEyNF9DU0kxQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MjAyNA0KKyNkZWZpbmUgTUlQSV9SWF9BTkEyNF9DU0kxQV9SR19DU0kxQV9SRVNF UlZFX1NISUZUIDI0DQorI2RlZmluZSBNSVBJX1JYX0FOQTI0X0NTSTFBX1JHX0NTSTFBX1JFU0VS VkVfTUFTSyAoMHhmZiA8PCAyNCkNCisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMUEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwNDgNCisjZGVmaW5lIE1JUElfUlhfQU5B NDhfQ1NJMUFfUkdTX0NTSTFBX0RQSFlfTDBfT1NfQ0FMX0NQTFRfU0hJRlQgMw0KKyNkZWZpbmUg TUlQSV9SWF9BTkE0OF9DU0kxQV9SR1NfQ1NJMUFfRFBIWV9MMF9PU19DQUxfQ1BMVF9NQVNLIEJJ VCgzKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkE0OF9DU0kxQV9SR1NfQ1NJMUFfRFBIWV9MMV9PU19D QUxfQ1BMVF9TSElGVCA0DQorI2RlZmluZSBNSVBJX1JYX0FOQTQ4X0NTSTFBX1JHU19DU0kxQV9E UEhZX0wxX09TX0NBTF9DUExUX01BU0sgQklUKDQpDQorI2RlZmluZSBNSVBJX1JYX0FOQTQ4X0NT STFBX1JHU19DU0kxQV9EUEhZX0wyX09TX0NBTF9DUExUX1NISUZUIDUNCisjZGVmaW5lIE1JUElf UlhfQU5BNDhfQ1NJMUFfUkdTX0NTSTFBX0RQSFlfTDJfT1NfQ0FMX0NQTFRfTUFTSyBCSVQoNSkN CisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMUFfUkdTX0NTSTFBX09TX0NBTF9DT0RFX1NISUZU IDgNCisjZGVmaW5lIE1JUElfUlhfQU5BNDhfQ1NJMUFfUkdTX0NTSTFBX09TX0NBTF9DT0RFX01B U0sgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgwX0NTSTFBICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDIwODANCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjgw X0NTSTFBX0NTUl9DU0lfQ0xLX01PTl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4 MF9DU0kxQV9DU1JfQ1NJX0NMS19NT05fTUFTSyBCSVQoMCkNCisjZGVmaW5lIE1JUElfUlhfV1JB UFBFUjgwX0NTSTFBX0NTUl9DU0lfTU9OX01VWF9TSElGVCA4DQorI2RlZmluZSBNSVBJX1JYX1dS QVBQRVI4MF9DU0kxQV9DU1JfQ1NJX01PTl9NVVhfTUFTSyAoMHhmZiA8PCA4KQ0KKyNkZWZpbmUg TUlQSV9SWF9XUkFQUEVSODBfQ1NJMUFfQ1NSX0NTSV9SU1RfTU9ERV9TSElGVCAxNg0KKyNkZWZp bmUgTUlQSV9SWF9XUkFQUEVSODBfQ1NJMUFfQ1NSX0NTSV9SU1RfTU9ERV9NQVNLICgweDMgPDwg MTYpDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4MF9DU0kxQV9DU1JfU1dfUlNUX1NISUZUIDI0 DQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4MF9DU0kxQV9DU1JfU1dfUlNUX01BU0sgKDB4ZiA8 PCAyNCkNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjg0X0NTSTFBICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDIwODQNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBFUjg0X0NTSTFBX0NT SV9ERUJVR19PVVRfU0hJRlQgMA0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSODRfQ1NJMUFfQ1NJ X0RFQlVHX09VVF9NQVNLICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQ RVI4OF9DU0kxQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDg4DQorI2RlZmlu ZSBNSVBJX1JYX1dSQVBQRVI4OF9DU0kxQV9DU1JfU1dfTU9ERV8wX1NISUZUIDANCisjZGVmaW5l IE1JUElfUlhfV1JBUFBFUjg4X0NTSTFBX0NTUl9TV19NT0RFXzBfTUFTSyAoMHhmZmZmZmZmZiA8 PCAwKQ0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOENfQ1NJMUEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MjA4Qw0KKyNkZWZpbmUgTUlQSV9SWF9XUkFQUEVSOENfQ1NJMUFfQ1NS X1NXX01PREVfMV9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI4Q19DU0kxQV9DU1Jf U1dfTU9ERV8xX01BU0sgKDB4ZmZmZmZmZmYgPDwgMCkNCisjZGVmaW5lIE1JUElfUlhfV1JBUFBF UjkwX0NTSTFBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwOTANCisjZGVmaW5l IE1JUElfUlhfV1JBUFBFUjkwX0NTSTFBX0NTUl9TV19NT0RFXzJfU0hJRlQgMA0KKyNkZWZpbmUg TUlQSV9SWF9XUkFQUEVSOTBfQ1NJMUFfQ1NSX1NXX01PREVfMl9NQVNLICgweGZmZmZmZmZmIDw8 IDApDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5NF9DU0kxQSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgyMDk0DQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5NF9DU0kxQV9DU1Jf U1dfVkFMVUVfMF9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5NF9DU0kxQV9DU1Jf U1dfVkFMVUVfMF9NQVNLICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQ RVI5OF9DU0kxQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDk4DQorI2RlZmlu ZSBNSVBJX1JYX1dSQVBQRVI5OF9DU0kxQV9DU1JfU1dfVkFMVUVfMV9TSElGVCAwDQorI2RlZmlu ZSBNSVBJX1JYX1dSQVBQRVI5OF9DU0kxQV9DU1JfU1dfVkFMVUVfMV9NQVNLICgweGZmZmZmZmZm IDw8IDApDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5Q19DU0kxQSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgyMDlDDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5Q19DU0kxQV9D U1JfU1dfVkFMVUVfMl9TSElGVCAwDQorI2RlZmluZSBNSVBJX1JYX1dSQVBQRVI5Q19DU0kxQV9D U1JfU1dfVkFMVUVfMl9NQVNLICgweGZmZmZmZmZmIDw8IDApDQorI2RlZmluZSBNSVBJX1JYX0FO QUE0X0NTSTFBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMEE0DQorI2Rl ZmluZSBNSVBJX1JYX0FOQUE0X0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfU1lOQ19JTklUX1NFTF9T SElGVCAwDQorI2RlZmluZSBNSVBJX1JYX0FOQUE0X0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfU1lO Q19JTklUX1NFTF9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9DU0kxQV9SR19D U0kxQV9EUEhZX0wwX0ZPUkNFX0lOSVRfU0hJRlQgMQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBNF9D U0kxQV9SR19DU0kxQV9EUEhZX0wwX0ZPUkNFX0lOSVRfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1J UElfUlhfQU5BQTRfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMV9TWU5DX0lOSVRfU0VMX1NISUZUIDIN CisjZGVmaW5lIE1JUElfUlhfQU5BQTRfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMV9TWU5DX0lOSVRf U0VMX01BU0sgQklUKDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQUE0X0NTSTFBX1JHX0NTSTFBX0RQ SFlfTDFfRk9SQ0VfSU5JVF9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0FOQUE0X0NTSTFBX1JH X0NTSTFBX0RQSFlfTDFfRk9SQ0VfSU5JVF9NQVNLIEJJVCgzKQ0KKyNkZWZpbmUgTUlQSV9SWF9B TkFBNF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX1NZTkNfSU5JVF9TRUxfU0hJRlQgNA0KKyNkZWZp bmUgTUlQSV9SWF9BTkFBNF9DU0kxQV9SR19DU0kxQV9EUEhZX0wyX1NZTkNfSU5JVF9TRUxfTUFT SyBCSVQoNCkNCisjZGVmaW5lIE1JUElfUlhfQU5BQTRfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMl9G T1JDRV9JTklUX1NISUZUIDUNCisjZGVmaW5lIE1JUElfUlhfQU5BQTRfQ1NJMUFfUkdfQ1NJMUFf RFBIWV9MMl9GT1JDRV9JTklUX01BU0sgQklUKDUpDQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NT STFBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMEE4DQorI2RlZmluZSBN SVBJX1JYX0FOQUE4X0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfQllURUNLX0lOVkVSVF9TSElGVCAw DQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTFBX1JHX0NTSTFBX0RQSFlfTDBfQllURUNLX0lO VkVSVF9NQVNLIEJJVCgwKQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kxQV9SR19DU0kxQV9E UEhZX0wxX0JZVEVDS19JTlZFUlRfU0hJRlQgMQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kx QV9SR19DU0kxQV9EUEhZX0wxX0JZVEVDS19JTlZFUlRfTUFTSyBCSVQoMSkNCisjZGVmaW5lIE1J UElfUlhfQU5BQThfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMl9CWVRFQ0tfSU5WRVJUX1NISUZUIDIN CisjZGVmaW5lIE1JUElfUlhfQU5BQThfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9MMl9CWVRFQ0tfSU5W RVJUX01BU0sgQklUKDIpDQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTFBX1JHX0NTSTFBX0RQ SFlfSFNERVRfTEVWRUxfTU9ERV9FTl9TSElGVCAzDQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NT STFBX1JHX0NTSTFBX0RQSFlfSFNERVRfTEVWRUxfTU9ERV9FTl9NQVNLIEJJVCgzKQ0KKyNkZWZp bmUgTUlQSV9SWF9BTkFBOF9DU0kxQV9SR19DU0kxQV9PU19DQUxfU0VMX1NISUZUIDQNCisjZGVm aW5lIE1JUElfUlhfQU5BQThfQ1NJMUFfUkdfQ1NJMUFfT1NfQ0FMX1NFTF9NQVNLICgweDcgPDwg NCkNCisjZGVmaW5lIE1JUElfUlhfQU5BQThfQ1NJMUFfUkdfQ1NJMUFfRFBIWV9IU0RFVF9ESUdf QkFDS19FTl9TSElGVCA3DQorI2RlZmluZSBNSVBJX1JYX0FOQUE4X0NTSTFBX1JHX0NTSTFBX0RQ SFlfSFNERVRfRElHX0JBQ0tfRU5fTUFTSyBCSVQoNykNCisjZGVmaW5lIE1JUElfUlhfQU5BQThf Q1NJMUFfUkdfQ1NJMUFfRFBIWV9ERUxBWUNBTF9DS19TRUxfU0hJRlQgOA0KKyNkZWZpbmUgTUlQ SV9SWF9BTkFBOF9DU0kxQV9SR19DU0kxQV9EUEhZX0RFTEFZQ0FMX0NLX1NFTF9NQVNLICgweDcg PDwgOCkNCisjZGVmaW5lIE1JUElfUlhfQU5BQThfQ1NJMUFfUkdfQ1NJMUFfT1NfQ0FMX0RJVl9T SElGVCAxMQ0KKyNkZWZpbmUgTUlQSV9SWF9BTkFBOF9DU0kxQV9SR19DU0kxQV9PU19DQUxfRElW X01BU0sgKDB4MyA8PCAxMSkNCisjZW5kaWYNCi0tDQoyLjE4LjANCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,UPPERCASE_50_75, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1F18C433E0 for ; Wed, 8 Jul 2020 10:41:07 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3D86C20739 for ; Wed, 8 Jul 2020 10:41:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hzEat5GN"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Ntx877si" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3D86C20739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=g4pAejjYFJYb4C5/4GTelpbSiAl3bQhhy7axMXDmSZM=; b=hzEat5GNLzf7v5kKCN3IBOgY2 n/tK74LEeMlhmOTtzcIYdUCt0cSWGHonTWvRh9BRwFDDG3BXS8Fr7HZ6GBtfat4sXjCLwxEVmlud8 12pAR5M9ehOorGmuP76XzKkH9EKAzig9md7PgoJarwSkXAIa2vSWFV7+p9DKBN5Cde1inAJNNP6jq o9tUMVqG94/5MOGug76GiEToDlKjsKqUvNYqRLqm7dHJxF9Ms0HCIJhmgBpckE7EWttPNO5RG4I7N e7s6jjRdQtrz7SdacLJK0LvshDMgghf7JCyBG618/snBxeUjhV2Pi12BtevBNGqMQAZWJEO1grkor eJgqaIDTg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jt7VY-0002fE-BG; Wed, 08 Jul 2020 10:40:56 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jt7VR-0002ce-Aj; Wed, 08 Jul 2020 10:40:54 +0000 X-UUID: 770e7d081edd45bfa28a9dad4461e351-20200708 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=kuxtTGveyEx5lHkDy/Wqyiv7i/hIWzAqTJwsD1FeUJ0=; b=Ntx877siFpExTG7f2DGOp7dXwczlnQI8wzdqVSv1QPeXoUHBTRw1OTwr0iEHHCx0S9SbC7W3Y3Y5kZtN545vUvvDJ/m8Ttx9m5NoEt2YH/Hj4oAne0v0CpJq6fELX8Rvks/BozPN2P6SvJjtzFIwe0ec/3pVCxmaxNVSNGiUlHM=; X-UUID: 770e7d081edd45bfa28a9dad4461e351-20200708 Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 311721662; Wed, 08 Jul 2020 02:40:54 -0800 Received: from mtkmbs08n1.mediatek.inc (172.21.101.55) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Jul 2020 03:40:39 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs08n1.mediatek.inc (172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Jul 2020 18:40:25 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 8 Jul 2020 18:40:26 +0800 From: Louis Kuo To: , , , , , Subject: [RFC PATCH V7 1/3] media: platform: mtk-isp: Add Mediatek sensor interface driver Date: Wed, 8 Jul 2020 18:40:21 +0800 Message-ID: <20200708104023.3225-2-louis.kuo@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200708104023.3225-1-louis.kuo@mediatek.com> References: <20200708104023.3225-1-louis.kuo@mediatek.com> MIME-Version: 1.0 X-MTK: N X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Sean.Cheng@mediatek.com, srv_heupstream@mediatek.com, Jerry-ch.Chen@mediatek.com, jungo.lin@mediatek.com, sj.huang@mediatek.com, yuzhao@chromium.org, linux-mediatek@lists.infradead.org, zwisler@chromium.org, louis.kuo@mediatek.com, christie.yu@mediatek.com, frederic.chen@mediatek.com, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org This patch adds Mediatek's sensor interface driver. Sensor interface driver is a MIPI-CSI2 host driver, namely, a HW camera interface controller. It support a widely adopted, simple, high-speed protocol primarily intended for point-to-point image and video transmission between cameras and host devices. The mtk-isp directory will contain drivers for multiple IP blocks found in Mediatek ISP system. It will include ISP Pass 1 driver, sensor interface driver, DIP driver and face detection driver. Signed-off-by: Louis Kuo --- drivers/media/platform/Makefile | 1 + drivers/media/platform/mtk-isp/Kconfig | 18 + drivers/media/platform/mtk-isp/Makefile | 3 + .../media/platform/mtk-isp/seninf/Makefile | 7 + .../platform/mtk-isp/seninf/mtk_seninf.c | 974 +++++++++++ .../platform/mtk-isp/seninf/mtk_seninf_dphy.c | 353 ++++ .../platform/mtk-isp/seninf/mtk_seninf_reg.h | 1491 +++++++++++++++++ .../mtk-isp/seninf/mtk_seninf_rx_reg.h | 515 ++++++ 8 files changed, 3362 insertions(+) create mode 100644 drivers/media/platform/mtk-isp/Kconfig create mode 100644 drivers/media/platform/mtk-isp/Makefile create mode 100644 drivers/media/platform/mtk-isp/seninf/Makefile create mode 100644 drivers/media/platform/mtk-isp/seninf/mtk_seninf.c create mode 100644 drivers/media/platform/mtk-isp/seninf/mtk_seninf_dphy.c create mode 100644 drivers/media/platform/mtk-isp/seninf/mtk_seninf_reg.h create mode 100644 drivers/media/platform/mtk-isp/seninf/mtk_seninf_rx_reg.h diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index 62b6cdc8c730..50db8c144e28 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -75,6 +75,7 @@ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ +obj-$(CONFIG_MTK_SENINF) += mtk-isp/ obj-$(CONFIG_VIDEO_QCOM_CAMSS) += qcom/camss/ obj-$(CONFIG_VIDEO_QCOM_VENUS) += qcom/venus/ diff --git a/drivers/media/platform/mtk-isp/Kconfig b/drivers/media/platform/mtk-isp/Kconfig new file mode 100644 index 000000000000..4a9febb7e6e3 --- /dev/null +++ b/drivers/media/platform/mtk-isp/Kconfig @@ -0,0 +1,18 @@ +config MTK_SENINF + tristate "Mediatek mipi csi2 driver" + depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API + depends on MEDIA_CAMERA_SUPPORT + depends on ARCH_MEDIATEK || COMPILE_TEST + select V4L2_FWNODE + + default n + help + This driver provides a mipi-csi2 host driver used as a + interface to connect camera with Mediatek's + MT8183 SOCs. It is able to handle multiple cameras + at the same time. + + Choose y if you want to use Mediatek SoCs to create image + capture application such as video recording and still image + capture. + diff --git a/drivers/media/platform/mtk-isp/Makefile b/drivers/media/platform/mtk-isp/Makefile new file mode 100644 index 000000000000..2e7d731d42b7 --- /dev/null +++ b/drivers/media/platform/mtk-isp/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_MTK_SENINF) += seninf/ diff --git a/drivers/media/platform/mtk-isp/seninf/Makefile b/drivers/media/platform/mtk-isp/seninf/Makefile new file mode 100644 index 000000000000..d75bf612f787 --- /dev/null +++ b/drivers/media/platform/mtk-isp/seninf/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0 + +mtk-seninf-objs += mtk_seninf.o +mtk-seninf_dphy-objs += mtk_seninf_dphy.o + +obj-$(CONFIG_MTK_SENINF) += mtk-seninf.o +obj-$(CONFIG_MTK_SENINF) += mtk-seninf_dphy.o diff --git a/drivers/media/platform/mtk-isp/seninf/mtk_seninf.c b/drivers/media/platform/mtk-isp/seninf/mtk_seninf.c new file mode 100644 index 000000000000..c5883dc3c3d6 --- /dev/null +++ b/drivers/media/platform/mtk-isp/seninf/mtk_seninf.c @@ -0,0 +1,974 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mtk_seninf_reg.h" + +#define SENINF_TIMESTAMP_STEP 0x67 +#define SENINF_SETTLE_DELAY 0x15 +#define SENINF_HS_TRAIL_PARAMETER 0x8 + +#define NUM_PADS 12 +#define NUM_SENSORS 4 +#define CAM_MUX_IDX_MIN NUM_SENSORS +#define DEFAULT_WIDTH 1600 +#define DEFAULT_HEIGHT 1200 + +#define PAD_10BIT 0 + +#define TEST_MODEL 0 +#define NORMAL_MODEL 1 +#define SENINF_ALL_ERR_IRQ_EN 0x7F +#define SENINF_IRQ_CLR_SEL 0x80000000 + +#define MIPI_SENSOR 0x8 + +enum TEST_MODE { + TEST_GEN_PATTERN = 0x0, + TEST_DUMP_DEBUG_INFO, +}; + +enum CFG_CSI_PORT { + CFG_CSI_PORT_0 = 0x0, /* 4D1C */ + CFG_CSI_PORT_1, /* 4D1C */ + CFG_CSI_PORT_2, /* 4D1C */ + CFG_CSI_PORT_0A, /* 2D1C */ + CFG_CSI_PORT_0B, /* 2D1C */ + CFG_CSI_PORT_MAX_NUM, + CFG_CSI_PORT_NONE /*for non-MIPI sensor */ +}; + +enum PIXEL_MODE { + ONE_PIXEL_MODE = 0x0, + TWO_PIXEL_MODE = 0x1, + FOUR_PIXEL_MODE = 0x2, +}; + +enum SENINF_ID { + SENINF_1 = 0x0, + SENINF_2 = 0x1, + SENINF_3 = 0x2, + SENINF_4 = 0x3, + SENINF_5 = 0x4, + SENINF_NUM, +}; + +enum IMAGE_FMT { + RAW_8BIT_FMT = 0x0, + RAW_10BIT_FMT = 0x1, + RAW_12BIT_FMT = 0x2, + YUV422_FMT = 0x3, + RAW_14BIT_FMT = 0x4, + RGB565_MIPI_FMT = 0x5, + RGB888_MIPI_FMT = 0x6, + JPEG_FMT = 0x7 +}; + +#define SENINF_BITS(base, reg, field, val) do { \ + u32 __iomem *__p = (base) + (reg); \ + u32 __v = *__p; \ + __v &= ~reg##_##field##_MASK; \ + __v |= ((val) << reg##_##field##_SHIFT); \ + *__p = __v; \ + } while (0) + +struct mtk_seninf_sensor_cfg { + unsigned char clock_lane; + unsigned short num_data_lanes; +}; + +struct mtk_seninf { + struct v4l2_subdev subdev; + struct v4l2_async_notifier notifier; + struct v4l2_ctrl_handler ctrl_handler; + struct v4l2_subdev_format fmt[NUM_PADS]; + struct device *dev; + struct media_pad pads[NUM_PADS]; + struct mtk_seninf_sensor_cfg sensor[NUM_SENSORS]; + struct phy *dphy; + unsigned int num_clks; + struct clk_bulk_data *clks; + void __iomem *base; + void __iomem *rx; + unsigned int port; + unsigned int mux_sel; +}; + +static inline int is_4d1c(unsigned int port) +{ + return port < CFG_CSI_PORT_0A; +} + +static inline int is_cdphy_combo(unsigned int port) +{ + return port == CFG_CSI_PORT_0A || + port == CFG_CSI_PORT_0B || + port == CFG_CSI_PORT_0; +} + +inline struct mtk_seninf *sd_to_mtk_seninf(struct v4l2_subdev *sd) +{ + return container_of(sd, struct mtk_seninf, subdev); +} + +static unsigned int mtk_seninf_get_dpcm(struct mtk_seninf *priv) +{ + unsigned int dpcm; + + switch (priv->fmt[priv->port].format.code) { + case MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8: + case MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8: + case MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8: + case MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8: + dpcm = 0x2a; + break; + default: + dpcm = 0; + break; + } + + return dpcm; +} + +static unsigned int mtk_seninf_map_fmt(struct mtk_seninf *priv) +{ + int fmtidx = RAW_10BIT_FMT; + + switch (priv->fmt[priv->port].format.code) { + case MEDIA_BUS_FMT_SBGGR8_1X8: + case MEDIA_BUS_FMT_SGBRG8_1X8: + case MEDIA_BUS_FMT_SGRBG8_1X8: + case MEDIA_BUS_FMT_SRGGB8_1X8: + fmtidx = RAW_8BIT_FMT; + break; + case MEDIA_BUS_FMT_SGRBG10_1X10: + case MEDIA_BUS_FMT_SRGGB10_1X10: + case MEDIA_BUS_FMT_SBGGR10_1X10: + case MEDIA_BUS_FMT_SGBRG10_1X10: + fmtidx = RAW_10BIT_FMT; + break; + case MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8: + case MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8: + case MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8: + case MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8: + fmtidx = RAW_8BIT_FMT; + break; + case MEDIA_BUS_FMT_SBGGR12_1X12: + case MEDIA_BUS_FMT_SGBRG12_1X12: + case MEDIA_BUS_FMT_SGRBG12_1X12: + case MEDIA_BUS_FMT_SRGGB12_1X12: + fmtidx = RAW_12BIT_FMT; + break; + case MEDIA_BUS_FMT_UYVY8_1X16: + case MEDIA_BUS_FMT_VYUY8_1X16: + case MEDIA_BUS_FMT_YUYV8_1X16: + case MEDIA_BUS_FMT_YVYU8_1X16: + fmtidx = YUV422_FMT; + break; + case MEDIA_BUS_FMT_JPEG_1X8: + case MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8: + fmtidx = JPEG_FMT; + break; + } + + return fmtidx; +} + +static u32 mtk_seninf_csi_port_to_seninf(u32 port) +{ + static const u32 port_to_seninf[] = { + [CFG_CSI_PORT_0] = SENINF_1, + [CFG_CSI_PORT_1] = SENINF_3, + [CFG_CSI_PORT_2] = SENINF_5, + [CFG_CSI_PORT_0A] = SENINF_1, + [CFG_CSI_PORT_0B] = SENINF_2, + }; + if (WARN_ON(port >= ARRAY_SIZE(port_to_seninf))) + return -EINVAL; + + return port_to_seninf[port]; +} + +static void mtk_seninf_set_mux(struct mtk_seninf *priv, + unsigned int seninf) +{ + unsigned int mux = priv->mux_sel; + void __iomem *pseninf_top = priv->base; + void __iomem *pseninf = priv->base + 0x1000 * mux; + unsigned int val; + unsigned int pix_sel_ext; + unsigned int pix_sel; + unsigned int hs_pol = 0; + unsigned int vs_pol = 0; + unsigned int pixel_mode = ONE_PIXEL_MODE; + unsigned int input_data_type; + + /* Enable mux */ + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_MUX_EN, 1); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_SRC_SEL, MIPI_SENSOR); + SENINF_BITS(pseninf, SENINF_MUX_CTRL_EXT, SENINF_SRC_SEL_EXT, + NORMAL_MODEL); + input_data_type = mtk_seninf_map_fmt(priv); + + switch (pixel_mode) { + case 1: /* 2 Pixel */ + pix_sel_ext = 0; + pix_sel = 1; + break; + case 2: /* 4 Pixel */ + pix_sel_ext = 1; + pix_sel = 0; + break; + default: /* 1 Pixel */ + pix_sel_ext = 0; + pix_sel = 0; + break; + } + + SENINF_BITS(pseninf, SENINF_MUX_CTRL_EXT, SENINF_PIX_SEL_EXT, + pix_sel_ext); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_PIX_SEL, pix_sel); + + if (input_data_type != JPEG_FMT) { + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FULL_WR_EN, 2); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FLUSH_EN, 0x1B); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_PUSH_EN, 0x1F); + } else { + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FULL_WR_EN, 0); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FLUSH_EN, 0x18); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_PUSH_EN, 0x1E); + } + + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_HSYNC_POL, hs_pol); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_VSYNC_POL, vs_pol); + + val = (readl(pseninf + SENINF_MUX_CTRL) | 0x3) & 0xFFFFFFFC; + writel(val, pseninf + SENINF_MUX_CTRL); + + /* Set top mux */ + val = (readl(pseninf_top + SENINF_TOP_MUX_CTRL) & + (~(0xF << (mux * 4)))) | ((seninf & 0xF) << (mux * 4)); + writel(val, pseninf_top + SENINF_TOP_MUX_CTRL); +} + +static void mtk_seninf_rx_config(struct mtk_seninf *priv, + unsigned int seninf) +{ + unsigned int port = priv->port; + void __iomem *pseninf = priv->base + 0x1000 * seninf; + + if (is_4d1c(port)) { + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN0_MUX, 1); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN1_MUX, 2); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN2_MUX, 0); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN3_MUX, 3); + } else { + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN0_MUX, 0); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN1_MUX, 1); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN2_MUX, 2); + SENINF_BITS(pseninf, MIPI_RX_CON24_CSI0, + CSI0_BIST_LN3_MUX, 3); + } +} + +static void mtk_seninf_set_csi_mipi(struct mtk_seninf *priv, + unsigned int seninf) +{ + void __iomem *seninf_base = priv->base; + void __iomem *pseninf = priv->base + 0x1000 * seninf; + unsigned int dpcm = mtk_seninf_get_dpcm(priv); + unsigned int data_lane_num = priv->sensor[priv->port].num_data_lanes; + unsigned int cal_sel; + unsigned int data_header_order = 1; + unsigned int val = 0; + + dev_dbg(priv->dev, "IS_4D1C %d port %d\n", + is_4d1c(priv->port), priv->port); + + switch (priv->port) { + case CFG_CSI_PORT_1: + cal_sel = 1; + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI1, + DPHY_MODE, 0); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI1, + CK_SEL_1, 2); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI1, + PHY_SENINF_LANE_MUX_CSI1_EN, 1); + break; + case CFG_CSI_PORT_2: + cal_sel = 2; + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI2, + DPHY_MODE, 0); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI2, + CK_SEL_1, 2); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI2, + PHY_SENINF_LANE_MUX_CSI2_EN, 1); + break; + case CFG_CSI_PORT_0: + cal_sel = 0; + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + DPHY_MODE, 0); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + CK_SEL_1, 2); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + PHY_SENINF_LANE_MUX_CSI0_EN, 1); + break; + case CFG_CSI_PORT_0A: + case CFG_CSI_PORT_0B: + cal_sel = 0; + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + DPHY_MODE, 1); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + CK_SEL_1, 1); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + CK_SEL_2, 1); + SENINF_BITS(seninf_base, SENINF_TOP_PHY_SENINF_CTL_CSI0, + PHY_SENINF_LANE_MUX_CSI0_EN, 1); + break; + } + + /* First Enable Sensor interface and select pad (0x1a04_0200) */ + SENINF_BITS(pseninf, SENINF_CTRL, SENINF_EN, 1); + SENINF_BITS(pseninf, SENINF_CTRL, PAD2CAM_DATA_SEL, PAD_10BIT); + SENINF_BITS(pseninf, SENINF_CTRL, SENINF_SRC_SEL, 0); + SENINF_BITS(pseninf, SENINF_CTRL_EXT, SENINF_CSI2_IP_EN, 1); + SENINF_BITS(pseninf, SENINF_CTRL_EXT, SENINF_NCSI2_IP_EN, 0); + + /* DPCM Enable */ + val = 1 << ((dpcm == 0x2a) ? 15 : ((dpcm & 0xF) + 7)); + writel(val, pseninf + SENINF_CSI2_DPCM); + + /* Settle delay */ + SENINF_BITS(pseninf, SENINF_CSI2_LNRD_TIMING, + DATA_SETTLE_PARAMETER, SENINF_SETTLE_DELAY); + /* CSI2 control */ + val = readl(pseninf + SENINF_CSI2_CTL) | (data_header_order << 16) | + 0x10 | ((1 << data_lane_num) - 1); + writel(val, pseninf + SENINF_CSI2_CTL); + + SENINF_BITS(pseninf, SENINF_CSI2_RESYNC_MERGE_CTL, + BYPASS_LANE_RESYNC, 0); + SENINF_BITS(pseninf, SENINF_CSI2_RESYNC_MERGE_CTL, CDPHY_SEL, 0); + SENINF_BITS(pseninf, SENINF_CSI2_RESYNC_MERGE_CTL, + CPHY_LANE_RESYNC_CNT, 3); + SENINF_BITS(pseninf, SENINF_CSI2_MODE, CSR_CSI2_MODE, 0); + SENINF_BITS(pseninf, SENINF_CSI2_MODE, CSR_CSI2_HEADER_LEN, 0); + SENINF_BITS(pseninf, SENINF_CSI2_DPHY_SYNC, SYNC_SEQ_MASK_0, 0xff00); + SENINF_BITS(pseninf, SENINF_CSI2_DPHY_SYNC, SYNC_SEQ_PAT_0, 0x001d); + + SENINF_BITS(pseninf, SENINF_CSI2_CTL, CLOCK_HS_OPTION, 0); + SENINF_BITS(pseninf, SENINF_CSI2_CTL, HSRX_DET_EN, 0); + SENINF_BITS(pseninf, SENINF_CSI2_CTL, HS_TRAIL_EN, 1); + SENINF_BITS(pseninf, SENINF_CSI2_HS_TRAIL, HS_TRAIL_PARAMETER, + SENINF_HS_TRAIL_PARAMETER); + + /* Set debug port to output packet number */ + SENINF_BITS(pseninf, SENINF_CSI2_DGB_SEL, DEBUG_EN, 1); + SENINF_BITS(pseninf, SENINF_CSI2_DGB_SEL, DEBUG_SEL, 0x1a); + /* Enable CSI2 IRQ mask */ + /* Turn on all interrupt */ + writel(0xffffffff, pseninf + SENINF_CSI2_INT_EN); + /* Write clear CSI2 IRQ */ + writel(0xffffffff, pseninf + SENINF_CSI2_INT_STATUS); + /* Enable CSI2 Extend IRQ mask */ + /* Turn on all interrupt */ + SENINF_BITS(pseninf, SENINF_CTRL, CSI2_SW_RST, 1); + udelay(1); + SENINF_BITS(pseninf, SENINF_CTRL, CSI2_SW_RST, 0); +} + +static int mtk_seninf_power_on(struct mtk_seninf *priv) +{ + void __iomem *pseninf = priv->base; + struct device *dev = priv->dev; + unsigned int seninf; + int ret; + + seninf = mtk_seninf_csi_port_to_seninf(priv->port); + if (seninf < 0) { + dev_err(dev, "seninf port mapping fail\n"); + return -EINVAL; + } + + ret = pm_runtime_get_sync(priv->dev); + if (ret < 0) { + dev_err(priv->dev, "Failed to pm_runtime_get_sync: %d\n", ret); + pm_runtime_put_noidle(priv->dev); + return ret; + } + + /* Configure timestamp */ + SENINF_BITS(pseninf, SENINF_CTRL, SENINF_EN, 1); + SENINF_BITS(pseninf, SENINF_CTRL_EXT, SENINF_CSI2_IP_EN, 1); + writel(SENINF_TIMESTAMP_STEP, pseninf + SENINF_TG1_TM_STP); + + phy_set_mode_ext(priv->dphy, PHY_MODE_MIPI_DPHY, priv->port); + phy_power_on(priv->dphy); + + mtk_seninf_rx_config(priv, seninf); + + mtk_seninf_set_csi_mipi(priv, seninf); + + mtk_seninf_set_mux(priv, seninf); + + writel(0x0, pseninf + SENINF_TOP_CAM_MUX_CTRL); + + return 0; +} + +static void mtk_seninf_power_off(struct mtk_seninf *priv) +{ + unsigned int seninf = mtk_seninf_csi_port_to_seninf(priv->port); + void __iomem *pseninf = priv->base + 0x1000 * seninf; + + /* Disable CSI2(2.5G) first */ + writel(readl(pseninf + SENINF_CSI2_CTL) & 0xFFFFFFE0, + pseninf + SENINF_CSI2_CTL); + + phy_power_off(priv->dphy); + pm_runtime_put(priv->dev); +} + +static const struct v4l2_mbus_framefmt mtk_seninf_default_fmt = { + .code = MEDIA_BUS_FMT_SBGGR10_1X10, + .width = DEFAULT_WIDTH, + .height = DEFAULT_HEIGHT, + .field = V4L2_FIELD_NONE, + .colorspace = V4L2_COLORSPACE_SRGB, + .xfer_func = V4L2_XFER_FUNC_DEFAULT, + .ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT, + .quantization = V4L2_QUANTIZATION_DEFAULT, +}; + +static void init_fmt(struct mtk_seninf *priv) +{ + unsigned int i; + + for (i = 0; i < NUM_PADS; i++) + priv->fmt[i].format = mtk_seninf_default_fmt; +} + +static int seninf_init_cfg(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg) +{ + struct v4l2_mbus_framefmt *mf; + unsigned int i; + + for (i = 0; i < sd->entity.num_pads; i++) { + mf = v4l2_subdev_get_try_format(sd, cfg, i); + *mf = mtk_seninf_default_fmt; + } + + return 0; +} + +static int seninf_set_fmt(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *fmt) +{ + struct mtk_seninf *priv = sd_to_mtk_seninf(sd); + struct v4l2_mbus_framefmt *mf; + + if (fmt->format.code == ~0U || fmt->format.code == 0) + fmt->format.code = MEDIA_BUS_FMT_SBGGR10_1X10; + + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { + mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + } else { + priv->fmt[fmt->pad].pad = fmt->pad; + mf = &priv->fmt[fmt->pad].format; + } + *mf = fmt->format; + + return 0; +} + +static int seninf_get_fmt(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *fmt) +{ + struct mtk_seninf *priv = sd_to_mtk_seninf(sd); + + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) + fmt->format = *v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + else + fmt->format = priv->fmt[fmt->pad].format; + + return 0; +} + +static int seninf_enum_mbus_code(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_mbus_code_enum *code) +{ + struct mtk_seninf *priv = sd_to_mtk_seninf(sd); + + if (code->index >= NUM_PADS) + return -EINVAL; + + code->code = priv->fmt[code->index].format.code; + + return 0; +} + +static int seninf_s_stream(struct v4l2_subdev *sd, int on) +{ + struct mtk_seninf *priv = sd_to_mtk_seninf(sd); + + if (on) + return mtk_seninf_power_on(priv); + mtk_seninf_power_off(priv); + + return 0; +}; + +static const struct v4l2_subdev_pad_ops seninf_subdev_pad_ops = { + .link_validate = v4l2_subdev_link_validate_default, + .init_cfg = seninf_init_cfg, + .set_fmt = seninf_set_fmt, + .get_fmt = seninf_get_fmt, + .enum_mbus_code = seninf_enum_mbus_code, +}; + +static const struct v4l2_subdev_video_ops seninf_subdev_video_ops = { + .s_stream = seninf_s_stream, +}; + +static struct v4l2_subdev_core_ops seninf_subdev_core_ops = { + .subscribe_event = v4l2_ctrl_subdev_subscribe_event, + .unsubscribe_event = v4l2_event_subdev_unsubscribe, +}; + +static struct v4l2_subdev_ops seninf_subdev_ops = { + .core = &seninf_subdev_core_ops, + .video = &seninf_subdev_video_ops, + .pad = &seninf_subdev_pad_ops, +}; + +static int seninf_link_setup(struct media_entity *entity, + const struct media_pad *local, + const struct media_pad *remote, u32 flags) +{ + struct v4l2_subdev *sd; + struct mtk_seninf *priv; + struct device *dev; + + sd = media_entity_to_v4l2_subdev(entity); + priv = v4l2_get_subdevdata(sd); + dev = priv->dev; + + if (!(flags & MEDIA_LNK_FL_ENABLED)) + return 0; + + if (local->flags & MEDIA_PAD_FL_SOURCE) { + priv->mux_sel = local->index - CAM_MUX_IDX_MIN; + } else { + /* Select port */ + priv->port = local->index; + if (priv->port >= NUM_SENSORS) { + dev_err(dev, "port index is over number of ports\n"); + return -EINVAL; + } + } + + return 0; +} + +static const struct media_entity_operations seninf_media_ops = { + .link_setup = seninf_link_setup, + .link_validate = v4l2_subdev_link_validate, +}; + +struct sensor_async_subdev { + struct v4l2_async_subdev asd; + u32 port; + u32 lanes; +}; + +static int mtk_seninf_notifier_bound( + struct v4l2_async_notifier *notifier, + struct v4l2_subdev *sd, + struct v4l2_async_subdev *asd) +{ + struct mtk_seninf *priv = + container_of(notifier, struct mtk_seninf, notifier); + struct sensor_async_subdev *s_asd = + container_of(asd, struct sensor_async_subdev, asd); + int ret; + + dev_dbg(priv->dev, "%s bound with port:%d lanes: %d\n", + sd->entity.name, s_asd->port, s_asd->lanes); + + priv->sensor[s_asd->port].num_data_lanes = s_asd->lanes; + + ret = media_create_pad_link(&sd->entity, 0, &priv->subdev.entity, + s_asd->port, 0); + if (ret) { + dev_err(priv->dev, "failed to create link for %s\n", + sd->entity.name); + return ret; + } + + return 0; +} + +static const struct v4l2_async_notifier_operations mtk_seninf_async_ops = { + .bound = mtk_seninf_notifier_bound, +}; + +static int seninf_dump_debug_info(struct mtk_seninf *priv) +{ + void __iomem *pseninf = priv->base; + struct device *dev = priv->dev; + + /* Sensor Interface Control */ + dev_dbg(dev, + "SENINF_CSI2_CTL SENINF1:0x%x\n", + readl(pseninf + SENINF_CSI2_CTL)); + /* Read width/height */ + /* Read interrupt status */ + dev_dbg(dev, "SENINF_IRQ:0x%x\n", + readl(pseninf + SENINF_CSI2_INT_STATUS)); + /* Mux1 */ + dev_dbg(dev, "SENINF_MUX_CTRL:0x%x, INTSTA:0x%x, DEBUG_2(0x%x)\n", + readl(pseninf + SENINF_MUX_CTRL), + readl(pseninf + SENINF_MUX_INTSTA), + readl(pseninf + SENINF_MUX_DEBUG_2)); + if (readl(pseninf + SENINF_MUX_INTSTA) & 0x1) { + writel(0xffffffff, pseninf + SENINF_MUX_INTSTA); + usleep_range(1000, 1000 * 2); + dev_warn(dev, "overrun CTRL:%x INTSTA:%x DEBUG_2:%x\n", + readl(pseninf + SENINF_MUX_CTRL), + readl(pseninf + SENINF_MUX_INTSTA), + readl(pseninf + SENINF_MUX_DEBUG_2)); + } + + return 0; +} + +static int seninf_enable_test_pattern(struct mtk_seninf *priv) +{ + void __iomem *pseninf = priv->base; + unsigned int val; + + SENINF_BITS(pseninf, SENINF_TOP_CTRL, SENINF_PCLK_EN, 1); + SENINF_BITS(pseninf, SENINF_TOP_CTRL, SENINF2_PCLK_EN, 1); + SENINF_BITS(pseninf, SENINF_CTRL, SENINF_EN, 1); + SENINF_BITS(pseninf, SENINF_CTRL, SENINF_SRC_SEL, 1); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_HSYNC_MASK, 1); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_SRC_SEL, 1); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_PUSH_EN, 0x1f); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FLUSH_EN, 0x1b); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, FIFO_FULL_WR_EN, 1); + SENINF_BITS(pseninf, SENINF_MUX_CTRL, SENINF_MUX_EN, 1); + writel(SENINF_IRQ_CLR_SEL | SENINF_ALL_ERR_IRQ_EN, + pseninf + SENINF_MUX_INTEN); + writel(0x0, pseninf + SENINF_MUX_SPARE); + writel(0xE2000, pseninf + SENINF_MUX_CTRL_EXT); + writel(0x0, pseninf + SENINF_MUX_CTRL_EXT); + SENINF_BITS(pseninf, SENINF_TG1_TM_CTL, TM_EN, 1); + SENINF_BITS(pseninf, SENINF_TG1_TM_CTL, TM_PAT, 0xC); + SENINF_BITS(pseninf, SENINF_TG1_TM_CTL, TM_VSYNC, 4); + SENINF_BITS(pseninf, SENINF_TG1_TM_CTL, TM_DUMMYPXL, 4); + val = (priv->fmt[priv->port].format.height + 0x100) << 16 | + (priv->fmt[priv->port].format.width + 0x100); + writel(val, pseninf + SENINF_TG1_TM_SIZE); + writel(0x0, pseninf + SENINF_TG1_TM_CLK); + writel(0x1, pseninf + SENINF_TG1_TM_STP); + writel(readl(pseninf + SENINF_CTRL_EXT) | 0x02, + pseninf + SENINF_CTRL_EXT); + + return 0; +} + +static int seninf_set_ctrl(struct v4l2_ctrl *ctrl) +{ + struct mtk_seninf *priv = container_of(ctrl->handler, + struct mtk_seninf, ctrl_handler); + + switch (ctrl->id) { + case V4L2_CID_TEST_PATTERN: + if (ctrl->val == TEST_GEN_PATTERN) + return seninf_enable_test_pattern(priv); + else if (ctrl->val == TEST_DUMP_DEBUG_INFO) + return seninf_dump_debug_info(priv); + else + return -EINVAL; + } + + return 0; +} + +static const struct v4l2_ctrl_ops seninf_ctrl_ops = { + .s_ctrl = seninf_set_ctrl, +}; + +static const char * const seninf_test_pattern_menu[] = { + "Horizontal bars", + "Monitor status", +}; + +static int seninf_initialize_controls(struct mtk_seninf *priv) +{ + struct v4l2_ctrl_handler *handler; + int ret; + + handler = &priv->ctrl_handler; + ret = v4l2_ctrl_handler_init(handler, 2); + if (ret) + return ret; + + v4l2_ctrl_new_std_menu_items(handler, &seninf_ctrl_ops, + V4L2_CID_TEST_PATTERN, + ARRAY_SIZE(seninf_test_pattern_menu) - 1, + 0, 0, seninf_test_pattern_menu); + + if (handler->error) { + ret = handler->error; + dev_err(priv->dev, + "Failed to init controls(%d)\n", ret); + v4l2_ctrl_handler_free(handler); + return ret; + } + + priv->subdev.ctrl_handler = handler; + + return 0; +} + +static int mtk_seninf_media_register(struct mtk_seninf *priv) +{ + struct v4l2_subdev *sd = &priv->subdev; + struct media_pad *pads = priv->pads; + struct device *dev = priv->dev; + unsigned int i; + int ret; + + v4l2_subdev_init(sd, &seninf_subdev_ops); + + init_fmt(priv); + ret = seninf_initialize_controls(priv); + if (ret) { + dev_err(dev, "Failed to initialize controls\n"); + return -EINVAL; + } + + sd->flags |= (V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS); + + priv->subdev.dev = dev; + snprintf(sd->name, V4L2_SUBDEV_NAME_SIZE, "%s", + dev_name(dev)); + v4l2_set_subdevdata(sd, priv); + + sd->entity.function = MEDIA_ENT_F_VID_IF_BRIDGE; + sd->entity.ops = &seninf_media_ops; + + for (i = 0; i < NUM_SENSORS; i++) + pads[i].flags = MEDIA_PAD_FL_SINK; + + for (i = CAM_MUX_IDX_MIN; i < NUM_PADS; i++) + pads[i].flags = MEDIA_PAD_FL_SOURCE; + ret = media_entity_pads_init(&sd->entity, NUM_PADS, pads); + if (ret < 0) + goto err_free_handler; + + v4l2_async_notifier_init(&priv->notifier); + + for (i = 0; i < NUM_SENSORS; ++i) { + struct v4l2_fwnode_endpoint vep = { + .bus_type = V4L2_MBUS_CSI2_DPHY + }; + struct fwnode_handle *ep; + struct sensor_async_subdev *s_asd = NULL; + + ep = fwnode_graph_get_endpoint_by_id( + dev_fwnode(priv->dev), i, 0, + FWNODE_GRAPH_ENDPOINT_NEXT); + if (!ep) + continue; + + ret = v4l2_fwnode_endpoint_parse(ep, &vep); + if (ret) + goto err_parse; + + s_asd = kzalloc(sizeof(*s_asd), GFP_KERNEL); + if (!s_asd) { + ret = -ENOMEM; + goto err_parse; + } + s_asd->port = vep.base.port; + s_asd->lanes = vep.bus.mipi_csi2.num_data_lanes; + ret = v4l2_async_notifier_add_fwnode_remote_subdev( + &priv->notifier, ep, &s_asd->asd); + if (ret) + goto err_parse; + + fwnode_handle_put(ep); + continue; +err_parse: + fwnode_handle_put(ep); + kfree(s_asd); + } + + priv->subdev.subdev_notifier = &priv->notifier; + priv->notifier.ops = &mtk_seninf_async_ops; + ret = v4l2_async_subdev_notifier_register(sd, &priv->notifier); + if (ret < 0) { + dev_err(dev, "v4l2 async notifier register failed\n"); + goto err_clean_notififer; + } + + ret = v4l2_async_register_subdev(sd); + if (ret < 0) { + dev_err(dev, "v4l2 async register subdev failed\n"); + goto err_clean_notififer; + } + return 0; + +err_clean_notififer: + v4l2_async_notifier_cleanup(&priv->notifier); + media_entity_cleanup(&sd->entity); +err_free_handler: + v4l2_ctrl_handler_free(&priv->ctrl_handler); + + return ret; +} + +static int seninf_probe(struct platform_device *pdev) +{ + /* List of clocks required by seninf */ + static const char * const clk_names[] = { + "cam_seninf", "top_mux_seninf" + }; + struct resource *res; + struct mtk_seninf *priv; + struct device *dev = &pdev->dev; + unsigned int i; + int ret; + + priv = devm_kzalloc(dev, sizeof(struct mtk_seninf), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + dev_set_drvdata(dev, priv); + priv->dev = dev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + priv->base = devm_ioremap_resource(dev, res); + if (IS_ERR(priv->base)) + return PTR_ERR(priv->base); + + priv->dphy = devm_phy_get(dev, "seninf"); + if (IS_ERR(priv->dphy)) { + dev_err(dev, "failed to get phy:%d\n", PTR_ERR(priv->dphy)); + return PTR_ERR(priv->dphy); + } + priv->num_clks = ARRAY_SIZE(clk_names); + priv->clks = devm_kcalloc(dev, priv->num_clks, + sizeof(*priv->clks), GFP_KERNEL); + if (!priv->clks) + return -ENOMEM; + + for (i = 0; i < priv->num_clks; ++i) + priv->clks[i].id = clk_names[i]; + + ret = devm_clk_bulk_get(dev, priv->num_clks, priv->clks); + if (ret) { + dev_err(dev, "failed to get seninf clock:%d\n", ret); + return ret; + } + + ret = mtk_seninf_media_register(priv); + if (!ret) /* register success */ + pm_runtime_enable(dev); + + return ret; +} + +static int seninf_pm_suspend(struct device *dev) +{ + struct mtk_seninf *priv = dev_get_drvdata(dev); + + dev_dbg(dev, "seninf runtime suspend\n"); + clk_bulk_disable_unprepare(priv->num_clks, priv->clks); + + return 0; +} + +static int seninf_pm_resume(struct device *dev) +{ + struct mtk_seninf *priv = dev_get_drvdata(dev); + int ret; + + dev_dbg(dev, "seninf runtime resume\n"); + ret = clk_bulk_prepare_enable(priv->num_clks, priv->clks); + if (ret) { + dev_err(dev, "failed to enable clock:%d\n", ret); + return ret; + } + + return 0; +} + +static const struct dev_pm_ops runtime_pm_ops = { + SET_RUNTIME_PM_OPS(seninf_pm_suspend, seninf_pm_resume, NULL) +}; + +static int seninf_remove(struct platform_device *pdev) +{ + struct mtk_seninf *priv = dev_get_drvdata(&pdev->dev); + struct v4l2_subdev *subdev = &priv->subdev; + + media_entity_cleanup(&subdev->entity); + v4l2_async_unregister_subdev(subdev); + v4l2_ctrl_handler_free(&priv->ctrl_handler); + + pm_runtime_disable(priv->dev); + + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id mtk_seninf_of_match[] = { + {.compatible = "mediatek,mt8183-seninf"}, + {}, +}; +MODULE_DEVICE_TABLE(of, mtk_seninf_of_match); +#endif + +static struct platform_driver seninf_pdrv = { + .driver = { + .name = "seninf", + .pm = &runtime_pm_ops, + .of_match_table = of_match_ptr(mtk_seninf_of_match), + }, + .probe = seninf_probe, + .remove = seninf_remove, +}; + +module_platform_driver(seninf_pdrv); + +MODULE_DESCRIPTION("MTK sensor interface driver"); +MODULE_AUTHOR("Louis Kuo "); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/mtk-isp/seninf/mtk_seninf_dphy.c b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_dphy.c new file mode 100644 index 000000000000..8bc910af9c20 --- /dev/null +++ b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_dphy.c @@ -0,0 +1,353 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include +#include "mtk_seninf_rx_reg.h" + +#define CSI_PORT_0A_ADDR_OFST 0 +#define CSI_PORT_0B_ADDR_OFST 0x1000 +#define CSI_PORT_1_ADDR_OFST 0x2000 +#define CSI_PORT_2_ADDR_OFST 0x4000 +/* Mix DPHY/CPHY */ +#define CSI0A_OFST 0 +#define CSI0B_OFST 0x1000 +/* DPHY only */ +#define CSI1A_OFST 0 +#define CSI1B_OFST 0x1000 + +enum CFG_CSI_PORT { + CFG_CSI_PORT_0 = 0x0, /* 4D1C */ + CFG_CSI_PORT_1, /* 4D1C */ + CFG_CSI_PORT_2, /* 4D1C */ + CFG_CSI_PORT_0A, /* 2D1C */ + CFG_CSI_PORT_0B, /* 2D1C */ + CFG_CSI_PORT_MAX_NUM, + CFG_CSI_PORT_NONE /*for non-MIPI sensor */ +}; + +#define MIPI_BITS(base, reg, field, val) do { \ + u32 __iomem *__p = (base) + (reg); \ + u32 __v = *__p; \ + __v &= ~reg##_##field##_MASK; \ + __v |= ((val) << reg##_##field##_SHIFT); \ + *__p = __v; \ + } while (0) + +struct mtk_mipi_dphy { + struct device *dev; + void __iomem *rx; + unsigned char __iomem *csi2_rx[CFG_CSI_PORT_MAX_NUM]; + unsigned int port; +}; + +static inline int is_4d1c(unsigned int port) +{ + return port < CFG_CSI_PORT_0A; +} + +static inline int is_cdphy_combo(unsigned int port) +{ + return port == CFG_CSI_PORT_0A || + port == CFG_CSI_PORT_0B || + port == CFG_CSI_PORT_0; +} + +static void mtk_dphy_enable(struct mtk_mipi_dphy *priv) +{ + void __iomem *pmipi_rx_base = priv->csi2_rx[CFG_CSI_PORT_0]; + unsigned int port = priv->port; + void __iomem *pmipi_rx = priv->csi2_rx[port]; + + /* Set analog phy mode to DPHY */ + if (is_cdphy_combo(port)) + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, RG_CSI0A_CPHY_EN, 0); + + if (is_4d1c(port)) { + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKSEL, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKSEL, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKMODE_EN, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKSEL, 1); + } else { + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKSEL, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKMODE_EN, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKSEL, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKSEL, 0); + } + if (is_cdphy_combo(port)) + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_CPHY_EN, 0); + + if (is_4d1c(port)) { + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKSEL, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKSEL, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKSEL, 1); + } else { + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L0_CKSEL, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKMODE_EN, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L1_CKSEL, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKMODE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_DPHY_L2_CKSEL, 0); + } + /* Byte clock invert */ + MIPI_BITS(pmipi_rx, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_CDPHY_L0_T0_BYTECK_INVERT, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_DPHY_L1_BYTECK_INVERT, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_CDPHY_L2_T1_BYTECK_INVERT, 1); + + if (is_4d1c(port)) { + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_CDPHY_L0_T0_BYTECK_INVERT, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_DPHY_L1_BYTECK_INVERT, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANAA8_CSI0A, + RG_CSI0A_CDPHY_L2_T1_BYTECK_INVERT, 1); + } + + /* Start ANA EQ tuning */ + if (is_cdphy_combo(port)) { + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI0A, + RG_CSI0A_L0_T0AB_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI0A, + RG_CSI0A_L0_T0AB_EQ_BW, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA1C_CSI0A, + RG_CSI0A_L1_T1AB_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA1C_CSI0A, + RG_CSI0A_L1_T1AB_EQ_BW, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA20_CSI0A, + RG_CSI0A_L2_T1BC_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA20_CSI0A, + RG_CSI0A_L2_T1BC_EQ_BW, 1); + + if (is_4d1c(port)) { + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA18_CSI0A, + RG_CSI0A_L0_T0AB_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA18_CSI0A, + RG_CSI0A_L0_T0AB_EQ_BW, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA1C_CSI0A, + RG_CSI0A_L1_T1AB_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA1C_CSI0A, + RG_CSI0A_L1_T1AB_EQ_BW, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA20_CSI0A, + RG_CSI0A_L2_T1BC_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA20_CSI0A, + RG_CSI0A_L2_T1BC_EQ_BW, 1); + } + } else { + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L0_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L0_EQ_BW, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L1_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L1_EQ_BW, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA1C_CSI1A, + RG_CSI1A_L2_EQ_IS, 1); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA1C_CSI1A, + RG_CSI1A_L2_EQ_BW, 1); + + if (is_4d1c(port)) { + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L0_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L0_EQ_BW, 1); + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L1_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA18_CSI1A, + RG_CSI1A_L1_EQ_BW, 1); + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA1C_CSI1A, + RG_CSI1A_L2_EQ_IS, 1); + MIPI_BITS(pmipi_rx + CSI1B_OFST, MIPI_RX_ANA1C_CSI1A, + RG_CSI1A_L2_EQ_BW, 1); + } + } + + /* End ANA EQ tuning */ + writel(0x90, pmipi_rx_base + MIPI_RX_ANA40_CSI0A); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA24_CSI0A, + RG_CSI0A_RESERVE, 0x40); + if (is_4d1c(port)) + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA24_CSI0A, + RG_CSI0A_RESERVE, 0x40); + MIPI_BITS(pmipi_rx, MIPI_RX_WRAPPER80_CSI0A, + CSR_CSI_RST_MODE, 0); + if (is_4d1c(port)) + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_WRAPPER80_CSI0A, + CSR_CSI_RST_MODE, 0); + /* ANA power on */ + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 1); + if (is_4d1c(port)) + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 1); + usleep_range(20, 40); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 1); + if (is_4d1c(port)) + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 1); +} + +static void mtk_dphy_disable(struct mtk_mipi_dphy *priv) +{ + void __iomem *pmipi_rx = priv->csi2_rx[priv->port]; + + /* Disable mipi BG */ + switch (priv->port) { + case CFG_CSI_PORT_0A: + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 0); + break; + case CFG_CSI_PORT_0B: + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 0); + break; + default: + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 0); + MIPI_BITS(pmipi_rx, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_CORE_EN, 0); + MIPI_BITS(pmipi_rx + CSI0B_OFST, MIPI_RX_ANA00_CSI0A, + RG_CSI0A_BG_LPF_EN, 0); + break; + } +} + +static int mtk_mipi_phy_power_on(struct phy *phy) +{ + struct mtk_mipi_dphy *priv = phy_get_drvdata(phy); + + mtk_dphy_enable(priv); + + return 0; +} + +static int mtk_mipi_phy_power_off(struct phy *phy) +{ + struct mtk_mipi_dphy *priv = phy_get_drvdata(phy); + + mtk_dphy_disable(priv); + + return 0; +} + +static int mtk_phy_set_mode(struct phy *phy, + enum phy_mode mode, int submode) +{ + struct mtk_mipi_dphy *priv = phy_get_drvdata(phy); + + priv->port = submode; + dev_dbg(priv->dev, "port %d\n", priv->port); + + return 0; +} + +static const struct phy_ops mtk_dphy_ops = { + .power_on = mtk_mipi_phy_power_on, + .power_off = mtk_mipi_phy_power_off, + .set_mode = mtk_phy_set_mode, + .owner = THIS_MODULE, +}; + +static int mipi_dphy_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct resource *res; + struct mtk_mipi_dphy *priv; + struct phy_provider *phy_provider; + struct phy *phy; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + dev_set_drvdata(dev, priv); + priv->dev = dev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + priv->rx = devm_ioremap_resource(dev, res); + if (IS_ERR(priv->rx)) + return PTR_ERR(priv->rx); + + priv->csi2_rx[CFG_CSI_PORT_0] = priv->rx; + priv->csi2_rx[CFG_CSI_PORT_0A] = priv->rx + CSI_PORT_0A_ADDR_OFST; + priv->csi2_rx[CFG_CSI_PORT_0B] = priv->rx + CSI_PORT_0B_ADDR_OFST; + priv->csi2_rx[CFG_CSI_PORT_1] = priv->rx + CSI_PORT_1_ADDR_OFST; + priv->csi2_rx[CFG_CSI_PORT_2] = priv->rx + CSI_PORT_2_ADDR_OFST; + + phy = devm_phy_create(dev, NULL, &mtk_dphy_ops); + if (IS_ERR(phy)) { + dev_err(dev, "failed to create phy\n"); + return PTR_ERR(phy); + } + phy_set_drvdata(phy, priv); + + phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); + + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id mtk_mipi_dphy_of_match[] = { + {.compatible = "mediatek,mt8183-mipi_dphy"}, + {}, +}; +MODULE_DEVICE_TABLE(of, mtk_mipi_dphy_of_match); +#endif + +static struct platform_driver mipi_dphy_pdrv = { + .probe = mipi_dphy_probe, + .driver = { + .name = "mipi_dphy", + .of_match_table = of_match_ptr(mtk_mipi_dphy_of_match), + }, +}; + +module_platform_driver(mipi_dphy_pdrv); + +MODULE_DESCRIPTION("MTK mipi dphy driver"); +MODULE_AUTHOR("Louis Kuo "); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/mtk-isp/seninf/mtk_seninf_reg.h b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_reg.h new file mode 100644 index 000000000000..1d1147b16b96 --- /dev/null +++ b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_reg.h @@ -0,0 +1,1491 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __SENINF_REG_H__ +#define __SENINF_REG_H__ + +#define BIT(nr) (1UL << (nr)) + +#define SENINF_TOP_CTRL 0x0000 +#define SENINF_TOP_CTRL_SENINF_PCLK_SEL_SHIFT 8 +#define SENINF_TOP_CTRL_SENINF_PCLK_SEL_MASK BIT(8) +#define SENINF_TOP_CTRL_SENINF2_PCLK_SEL_SHIFT 9 +#define SENINF_TOP_CTRL_SENINF2_PCLK_SEL_MASK BIT(9) +#define SENINF_TOP_CTRL_SENINF_PCLK_EN_SHIFT 10 +#define SENINF_TOP_CTRL_SENINF_PCLK_EN_MASK BIT(10) +#define SENINF_TOP_CTRL_SENINF2_PCLK_EN_SHIFT 11 +#define SENINF_TOP_CTRL_SENINF2_PCLK_EN_MASK BIT(11) +#define SENINF_TOP_CTRL_SENINF_TOP_N3D_SW_RST_SHIFT 16 +#define SENINF_TOP_CTRL_SENINF_TOP_N3D_SW_RST_MASK BIT(16) +#define SENINF_TOP_CTRL_SENINF_TOP_DBG_SEL_SHIFT 28 +#define SENINF_TOP_CTRL_SENINF_TOP_DBG_SEL_MASK (0x7 << 28) +#define SENINF_TOP_CMODEL_PAR 0x0004 +#define SENINF_TOP_CMODEL_PAR_SENINF_EN_SHIFT 0 +#define SENINF_TOP_CMODEL_PAR_SENINF_EN_MASK BIT(0) +#define SENINF_TOP_CMODEL_PAR_SENINF2_EN_SHIFT 1 +#define SENINF_TOP_CMODEL_PAR_SENINF2_EN_MASK BIT(1) +#define SENINF_TOP_CMODEL_PAR_SENINF3_EN_SHIFT 2 +#define SENINF_TOP_CMODEL_PAR_SENINF3_EN_MASK BIT(2) +#define SENINF_TOP_CMODEL_PAR_SENINF4_EN_SHIFT 3 +#define SENINF_TOP_CMODEL_PAR_SENINF4_EN_MASK BIT(3) +#define SENINF_TOP_CMODEL_PAR_SENINF_FORMAT_SHIFT 4 +#define SENINF_TOP_CMODEL_PAR_SENINF_FORMAT_MASK (0xf << 4) +#define SENINF_TOP_CMODEL_PAR_SENINF2_FORMAT_SHIFT 8 +#define SENINF_TOP_CMODEL_PAR_SENINF2_FORMAT_MASK (0xf << 8) +#define SENINF_TOP_CMODEL_PAR_SENINF3_FORMAT_SHIFT 12 +#define SENINF_TOP_CMODEL_PAR_SENINF3_FORMAT_MASK (0xf << 12) +#define SENINF_TOP_CMODEL_PAR_SENINF4_FORMAT_SHIFT 16 +#define SENINF_TOP_CMODEL_PAR_SENINF4_FORMAT_MASK (0xf << 16) +#define SENINF_TOP_MUX_CTRL 0x0008 +#define SENINF_TOP_MUX_CTRL_SENINF_MUX_SRC_SEL_SHIFT 0 +#define SENINF_TOP_MUX_CTRL_SENINF_MUX_SRC_SEL_MASK (0xf << 0) +#define SENINF_TOP_MUX_CTRL_SENINF2_MUX_SRC_SEL_SHIFT 4 +#define SENINF_TOP_MUX_CTRL_SENINF2_MUX_SRC_SEL_MASK (0xf << 4) +#define SENINF_TOP_MUX_CTRL_SENINF3_MUX_SRC_SEL_SHIFT 8 +#define SENINF_TOP_MUX_CTRL_SENINF3_MUX_SRC_SEL_MASK (0xf << 8) +#define SENINF_TOP_MUX_CTRL_SENINF4_MUX_SRC_SEL_SHIFT 12 +#define SENINF_TOP_MUX_CTRL_SENINF4_MUX_SRC_SEL_MASK (0xf << 12) +#define SENINF_TOP_MUX_CTRL_SENINF5_MUX_SRC_SEL_SHIFT 16 +#define SENINF_TOP_MUX_CTRL_SENINF5_MUX_SRC_SEL_MASK (0xf << 16) +#define SENINF_TOP_MUX_CTRL_SENINF6_MUX_SRC_SEL_SHIFT 20 +#define SENINF_TOP_MUX_CTRL_SENINF6_MUX_SRC_SEL_MASK (0xf << 20) +#define SENINF_TOP_MUX_CTRL_SENINF7_MUX_SRC_SEL_SHIFT 24 +#define SENINF_TOP_MUX_CTRL_SENINF7_MUX_SRC_SEL_MASK (0xf << 24) +#define SENINF_TOP_MUX_CTRL_SENINF8_MUX_SRC_SEL_SHIFT 28 +#define SENINF_TOP_MUX_CTRL_SENINF8_MUX_SRC_SEL_MASK (0xf << 28) +#define SENINF_TOP_CAM_MUX_CTRL 0x0010 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM0_MUX_SRC_SEL_SHIFT 0 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM0_MUX_SRC_SEL_MASK (0xf << 0) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM1_MUX_SRC_SEL_SHIFT 4 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM1_MUX_SRC_SEL_MASK (0xf << 4) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM2_MUX_SRC_SEL_SHIFT 8 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM2_MUX_SRC_SEL_MASK (0xf << 8) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM3_MUX_SRC_SEL_SHIFT 12 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM3_MUX_SRC_SEL_MASK (0xf << 12) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM4_MUX_SRC_SEL_SHIFT 16 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM4_MUX_SRC_SEL_MASK (0xf << 16) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM5_MUX_SRC_SEL_SHIFT 20 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM5_MUX_SRC_SEL_MASK (0xf << 20) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM6_MUX_SRC_SEL_SHIFT 24 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM6_MUX_SRC_SEL_MASK (0xf << 24) +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM7_MUX_SRC_SEL_SHIFT 28 +#define SENINF_TOP_CAM_MUX_CTRL_SENINF_CAM7_MUX_SRC_SEL_MASK (0xf << 28) +#define SENINF_TOP_N3D_A_CTL 0x0014 +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S1_SEN_PCLK_SRC_SEL_A_SHIFT 0 +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S1_SEN_PCLK_SRC_SEL_A_MASK (0x7 << 0) +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S1_SEN_VSYNC_SRC_SEL_A_SHIFT 4 +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S1_SEN_VSYNC_SRC_SEL_A_MASK (0x7 << 4) +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S2_SEN_PCLK_SRC_SEL_A_SHIFT 8 +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S2_SEN_PCLK_SRC_SEL_A_MASK (0x7 << 8) +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S2_SEN_VSYNC_SRC_SEL_A_SHIFT 12 +#define SENINF_TOP_N3D_A_CTL_SENINF_N3D_S2_SEN_VSYNC_SRC_SEL_A_MASK (0x7 << 12) +#define SENINF_TOP_N3D_B_CTL 0x0018 +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S1_SEN_PCLK_SRC_SEL_B_SHIFT 0 +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S1_SEN_PCLK_SRC_SEL_B_MASK (0x7 << 0) +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S1_SEN_VSYNC_SRC_SEL_B_SHIFT 4 +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S1_SEN_VSYNC_SRC_SEL_B_MASK (0x7 << 4) +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S2_SEN_PCLK_SRC_SEL_B_SHIFT 8 +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S2_SEN_PCLK_SRC_SEL_B_MASK (0x7 << 8) +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S2_SEN_VSYNC_SRC_SEL_B_SHIFT 12 +#define SENINF_TOP_N3D_B_CTL_SENINF_N3D_S2_SEN_VSYNC_SRC_SEL_B_MASK (0x7 << 12) +#define SENINF_TOP_PHY_SENINF_CTL_CSI0 0x001C +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_DPHY_MODE_SHIFT 0 +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_DPHY_MODE_MASK BIT(0) +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CPHY_MODE_SHIFT 4 +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CPHY_MODE_MASK (0x3 << 4) +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CK_SEL_1_SHIFT 8 +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CK_SEL_1_MASK (0x7 << 8) +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CK_SEL_2_SHIFT 12 +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_CK_SEL_2_MASK (0x3 << 12) +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_PHY_SENINF_LANE_MUX_CSI0_EN_SHIFT 31 +#define SENINF_TOP_PHY_SENINF_CTL_CSI0_PHY_SENINF_LANE_MUX_CSI0_EN_MASK \ +BIT(31) +#define SENINF_TOP_PHY_SENINF_CTL_CSI1 0x0020 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_DPHY_MODE_SHIFT 0 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_DPHY_MODE_MASK BIT(0) +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CPHY_MODE_SHIFT 4 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CPHY_MODE_MASK (0x3 << 4) +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CK_SEL_1_SHIFT 8 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CK_SEL_1_MASK (0x7 << 8) +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CK_SEL_2_SHIFT 12 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_CK_SEL_2_MASK (0x3 << 12) +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_PHY_SENINF_LANE_MUX_CSI1_EN_SHIFT 31 +#define SENINF_TOP_PHY_SENINF_CTL_CSI1_PHY_SENINF_LANE_MUX_CSI1_EN_MASK \ +BIT(31) +#define SENINF_TOP_PHY_SENINF_CTL_CSI2 0x0024 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_DPHY_MODE_SHIFT 0 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_DPHY_MODE_MASK BIT(0) +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CPHY_MODE_SHIFT 4 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CPHY_MODE_MASK (0x3 << 4) +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CK_SEL_1_SHIFT 8 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CK_SEL_1_MASK (0x7 << 8) +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CK_SEL_2_SHIFT 12 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_CK_SEL_2_MASK (0x3 << 12) +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_PHY_SENINF_LANE_MUX_CSI2_EN_SHIFT 31 +#define SENINF_TOP_PHY_SENINF_CTL_CSI2_PHY_SENINF_LANE_MUX_CSI2_EN_MASK \ +BIT(31) +#define SENINF_N3D_A_CTL 0x0100 +#define SENINF_N3D_A_CTL_MODE_SHIFT 0 +#define SENINF_N3D_A_CTL_MODE_MASK (0x3 << 0) +#define SENINF_N3D_A_CTL_I2C1_EN_SHIFT 2 +#define SENINF_N3D_A_CTL_I2C1_EN_MASK BIT(2) +#define SENINF_N3D_A_CTL_I2C2_EN_SHIFT 3 +#define SENINF_N3D_A_CTL_I2C2_EN_MASK BIT(3) +#define SENINF_N3D_A_CTL_I2C1_INT_EN_SHIFT 4 +#define SENINF_N3D_A_CTL_I2C1_INT_EN_MASK BIT(4) +#define SENINF_N3D_A_CTL_I2C2_INT_EN_SHIFT 5 +#define SENINF_N3D_A_CTL_I2C2_INT_EN_MASK BIT(5) +#define SENINF_N3D_A_CTL_N3D_EN_SHIFT 6 +#define SENINF_N3D_A_CTL_N3D_EN_MASK BIT(6) +#define SENINF_N3D_A_CTL_W1CLR_SHIFT 7 +#define SENINF_N3D_A_CTL_W1CLR_MASK BIT(7) +#define SENINF_N3D_A_CTL_DIFF_EN_SHIFT 8 +#define SENINF_N3D_A_CTL_DIFF_EN_MASK BIT(8) +#define SENINF_N3D_A_CTL_DDBG_SEL_SHIFT 9 +#define SENINF_N3D_A_CTL_DDBG_SEL_MASK (0x7 << 9) +#define SENINF_N3D_A_CTL_MODE1_DBG_SHIFT 12 +#define SENINF_N3D_A_CTL_MODE1_DBG_MASK BIT(12) +#define SENINF_N3D_A_CTL_SEN1_TIM_EN_SHIFT 16 +#define SENINF_N3D_A_CTL_SEN1_TIM_EN_MASK BIT(16) +#define SENINF_N3D_A_CTL_SEN2_TIM_EN_SHIFT 17 +#define SENINF_N3D_A_CTL_SEN2_TIM_EN_MASK BIT(17) +#define SENINF_N3D_A_CTL_SEN1_OV_VS_INT_EN_SHIFT 18 +#define SENINF_N3D_A_CTL_SEN1_OV_VS_INT_EN_MASK BIT(18) +#define SENINF_N3D_A_CTL_SEN2_OV_VS_INT_EN_SHIFT 19 +#define SENINF_N3D_A_CTL_SEN2_OV_VS_INT_EN_MASK BIT(19) +#define SENINF_N3D_A_CTL_HW_SYNC_MODE_SHIFT 20 +#define SENINF_N3D_A_CTL_HW_SYNC_MODE_MASK BIT(20) +#define SENINF_N3D_A_CTL_VALID_TG_EN_SHIFT 21 +#define SENINF_N3D_A_CTL_VALID_TG_EN_MASK BIT(21) +#define SENINF_N3D_A_CTL_SYNC_PIN_A_EN_SHIFT 22 +#define SENINF_N3D_A_CTL_SYNC_PIN_A_EN_MASK BIT(22) +#define SENINF_N3D_A_CTL_SYNC_PIN_A_POLARITY_SHIFT 23 +#define SENINF_N3D_A_CTL_SYNC_PIN_A_POLARITY_MASK BIT(23) +#define SENINF_N3D_A_CTL_SYNC_PIN_B_EN_SHIFT 24 +#define SENINF_N3D_A_CTL_SYNC_PIN_B_EN_MASK BIT(24) +#define SENINF_N3D_A_CTL_SYNC_PIN_B_POLARITY_SHIFT 25 +#define SENINF_N3D_A_CTL_SYNC_PIN_B_POLARITY_MASK BIT(25) +#define SENINF_N3D_A_POS 0x0104 +#define SENINF_N3D_A_POS_N3D_POS_SHIFT 0 +#define SENINF_N3D_A_POS_N3D_POS_MASK (0xffffffff << 0) +#define SENINF_N3D_A_TRIG 0x0108 +#define SENINF_N3D_A_TRIG_I2CA_TRIG_SHIFT 0 +#define SENINF_N3D_A_TRIG_I2CA_TRIG_MASK BIT(0) +#define SENINF_N3D_A_TRIG_I2CB_TRIG_SHIFT 1 +#define SENINF_N3D_A_TRIG_I2CB_TRIG_MASK BIT(1) +#define SENINF_N3D_A_INT 0x010C +#define SENINF_N3D_A_INT_I2C1_INT_SHIFT 0 +#define SENINF_N3D_A_INT_I2C1_INT_MASK BIT(0) +#define SENINF_N3D_A_INT_I2C2_INT_SHIFT 1 +#define SENINF_N3D_A_INT_I2C2_INT_MASK BIT(1) +#define SENINF_N3D_A_INT_DIFF_INT_SHIFT 2 +#define SENINF_N3D_A_INT_DIFF_INT_MASK BIT(2) +#define SENINF_N3D_A_INT_SEN1_OV_VS_INT_SHIFT 4 +#define SENINF_N3D_A_INT_SEN1_OV_VS_INT_MASK BIT(4) +#define SENINF_N3D_A_INT_SEN2_OV_VS_INT_SHIFT 5 +#define SENINF_N3D_A_INT_SEN2_OV_VS_INT_MASK BIT(5) +#define SENINF_N3D_A_CNT0 0x0110 +#define SENINF_N3D_A_CNT0_N3D_CNT0_SHIFT 0 +#define SENINF_N3D_A_CNT0_N3D_CNT0_MASK (0xffffffff << 0) +#define SENINF_N3D_A_CNT1 0x0114 +#define SENINF_N3D_A_CNT1_N3D_CNT1_SHIFT 0 +#define SENINF_N3D_A_CNT1_N3D_CNT1_MASK (0xffffffff << 0) +#define SENINF_N3D_A_DBG 0x0118 +#define SENINF_N3D_A_DBG_N3D_DBG_SHIFT 0 +#define SENINF_N3D_A_DBG_N3D_DBG_MASK (0xffffffff << 0) +#define SENINF_N3D_A_DIFF_THR 0x011C +#define SENINF_N3D_A_DIFF_THR_N3D_DIFF_THR_SHIFT 0 +#define SENINF_N3D_A_DIFF_THR_N3D_DIFF_THR_MASK (0xffffffff << 0) +#define SENINF_N3D_A_DIFF_CNT 0x0120 +#define SENINF_N3D_A_DIFF_CNT_N3D_DIFF_CNT_SHIFT 0 +#define SENINF_N3D_A_DIFF_CNT_N3D_DIFF_CNT_MASK (0xffffffff << 0) +#define SENINF_N3D_A_DBG_1 0x0124 +#define SENINF_N3D_A_DBG_1_N3D_DBG_1_SHIFT 0 +#define SENINF_N3D_A_DBG_1_N3D_DBG_1_MASK (0xffffffff << 0) +#define SENINF_N3D_A_VALID_TG_CNT 0x0128 +#define SENINF_N3D_A_VALID_TG_CNT_N3D_VALID_TG_CNT_SHIFT 0 +#define SENINF_N3D_A_VALID_TG_CNT_N3D_VALID_TG_CNT_MASK (0xffffffff << 0) +#define SENINF_N3D_A_SYNC_A_PERIOD 0x012C +#define SENINF_N3D_A_SYNC_A_PERIOD_N3D_SYNC_A_PERIOD_SHIFT 0 +#define SENINF_N3D_A_SYNC_A_PERIOD_N3D_SYNC_A_PERIOD_MASK (0xffffffff << 0) +#define SENINF_N3D_A_SYNC_B_PERIOD 0x0130 +#define SENINF_N3D_A_SYNC_B_PERIOD_N3D_SYNC_B_PERIOD_SHIFT 0 +#define SENINF_N3D_A_SYNC_B_PERIOD_N3D_SYNC_B_PERIOD_MASK (0xffffffff << 0) +#define SENINF_N3D_A_SYNC_A_PULSE_LEN 0x0134 +#define SENINF_N3D_A_SYNC_A_PULSE_LEN_N3D_SYNC_A_PULSE_LEN_SHIFT 0 +#define SENINF_N3D_A_SYNC_A_PULSE_LEN_N3D_SYNC_A_PULSE_LEN_MASK \ +(0xffffffff << 0) +#define SENINF_N3D_A_SYNC_B_PULSE_LEN 0x0138 +#define SENINF_N3D_A_SYNC_B_PULSE_LEN_N3D_SYNC_B_PULSE_LEN_SHIFT 0 +#define SENINF_N3D_A_SYNC_B_PULSE_LEN_N3D_SYNC_B_PULSE_LEN_MASK \ +(0xffffffff << 0) +#define SENINF_N3D_A_SUB_CNT 0x013C +#define SENINF_N3D_A_SUB_CNT_VS1_SUB_CNT_SHIFT 0 +#define SENINF_N3D_A_SUB_CNT_VS1_SUB_CNT_MASK (0x3f << 0) +#define SENINF_N3D_A_SUB_CNT_VS1_SUB_CNT_EN_SHIFT 6 +#define SENINF_N3D_A_SUB_CNT_VS1_SUB_CNT_EN_MASK BIT(6) +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_A_RESET_SEL_SHIFT 7 +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_A_RESET_SEL_MASK BIT(7) +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_B_RESET_SEL_SHIFT 8 +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_B_RESET_SEL_MASK BIT(8) +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_A_RESET_SEL_EN_SHIFT 9 +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_A_RESET_SEL_EN_MASK BIT(9) +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_B_RESET_SEL_EN_SHIFT 10 +#define SENINF_N3D_A_SUB_CNT_SYNC_PIN_B_RESET_SEL_EN_MASK BIT(10) +#define SENINF_N3D_A_SUB_CNT_VS2_SUB_CNT_SHIFT 16 +#define SENINF_N3D_A_SUB_CNT_VS2_SUB_CNT_MASK (0x3f << 16) +#define SENINF_N3D_A_SUB_CNT_VS2_SUB_CNT_EN_SHIFT 22 +#define SENINF_N3D_A_SUB_CNT_VS2_SUB_CNT_EN_MASK BIT(22) +#define SENINF_N3D_A_VSYNC_CNT 0x0140 +#define SENINF_N3D_A_VSYNC_CNT_N3D_VSYNC_1_CNT_SHIFT 0 +#define SENINF_N3D_A_VSYNC_CNT_N3D_VSYNC_1_CNT_MASK (0xffff << 0) +#define SENINF_N3D_A_VSYNC_CNT_N3D_VSYNC_2_CNT_SHIFT 16 +#define SENINF_N3D_A_VSYNC_CNT_N3D_VSYNC_2_CNT_MASK (0xffff << 16) +#define SENINF_CTRL 0x0200 +#define SENINF_CTRL_SENINF_EN_SHIFT 0 +#define SENINF_CTRL_SENINF_EN_MASK BIT(0) +#define SENINF_CTRL_NCSI2_SW_RST_SHIFT 1 +#define SENINF_CTRL_NCSI2_SW_RST_MASK BIT(1) +#define SENINF_CTRL_OCSI2_SW_RST_SHIFT 2 +#define SENINF_CTRL_OCSI2_SW_RST_MASK BIT(2) +#define SENINF_CTRL_CCIR_SW_RST_SHIFT 3 +#define SENINF_CTRL_CCIR_SW_RST_MASK BIT(3) +#define SENINF_CTRL_CKGEN_SW_RST_SHIFT 4 +#define SENINF_CTRL_CKGEN_SW_RST_MASK BIT(4) +#define SENINF_CTRL_TEST_MODEL_SW_RST_SHIFT 5 +#define SENINF_CTRL_TEST_MODEL_SW_RST_MASK BIT(5) +#define SENINF_CTRL_SCAM_SW_RST_SHIFT 6 +#define SENINF_CTRL_SCAM_SW_RST_MASK BIT(6) +#define SENINF_CTRL_CSI2_SW_RST_SHIFT 7 +#define SENINF_CTRL_CSI2_SW_RST_MASK BIT(7) +#define SENINF_CTRL_CSI3_SW_RST_SHIFT 8 +#define SENINF_CTRL_CSI3_SW_RST_MASK BIT(8) +#define SENINF_CTRL_SENINF_SRC_SEL_SHIFT 12 +#define SENINF_CTRL_SENINF_SRC_SEL_MASK (0xf << 12) +#define SENINF_CTRL_SENINF_DEBUG_SEL_SHIFT 20 +#define SENINF_CTRL_SENINF_DEBUG_SEL_MASK (0xf << 20) +#define SENINF_CTRL_PAD2CAM_DATA_SEL_SHIFT 28 +#define SENINF_CTRL_PAD2CAM_DATA_SEL_MASK (0x7 << 28) +#define SENINF_CTRL_EXT 0x0204 +#define SENINF_CTRL_EXT_SENINF_OCSI2_IP_EN_SHIFT 0 +#define SENINF_CTRL_EXT_SENINF_OCSI2_IP_EN_MASK BIT(0) +#define SENINF_CTRL_EXT_SENINF_TESTMDL_IP_EN_SHIFT 1 +#define SENINF_CTRL_EXT_SENINF_TESTMDL_IP_EN_MASK BIT(1) +#define SENINF_CTRL_EXT_SENINF_SCAM_IP_EN_SHIFT 4 +#define SENINF_CTRL_EXT_SENINF_SCAM_IP_EN_MASK BIT(4) +#define SENINF_CTRL_EXT_SENINF_NCSI2_IP_EN_SHIFT 5 +#define SENINF_CTRL_EXT_SENINF_NCSI2_IP_EN_MASK BIT(5) +#define SENINF_CTRL_EXT_SENINF_CSI2_IP_EN_SHIFT 6 +#define SENINF_CTRL_EXT_SENINF_CSI2_IP_EN_MASK BIT(6) +#define SENINF_CTRL_EXT_SENINF_CSI3_IP_EN_SHIFT 7 +#define SENINF_CTRL_EXT_SENINF_CSI3_IP_EN_MASK BIT(7) +#define SENINF_CTRL_EXT_SENINF_SRC_SEL_EXT_SHIFT 16 +#define SENINF_CTRL_EXT_SENINF_SRC_SEL_EXT_MASK (0x3 << 16) +#define SENINF_ASYNC_CTRL 0x0208 +#define SENINF_ASYNC_CTRL_SENINF_ASYNC_FIFO_RST_SHIFT 0 +#define SENINF_ASYNC_CTRL_SENINF_ASYNC_FIFO_RST_MASK BIT(0) +#define SENINF_ASYNC_CTRL_SENINF_HSYNC_MASK_SHIFT 1 +#define SENINF_ASYNC_CTRL_SENINF_HSYNC_MASK_MASK BIT(1) +#define SENINF_ASYNC_CTRL_SENINF_VSYNC_POL_SHIFT 2 +#define SENINF_ASYNC_CTRL_SENINF_VSYNC_POL_MASK BIT(2) +#define SENINF_ASYNC_CTRL_SENINF_HSYNC_POL_SHIFT 3 +#define SENINF_ASYNC_CTRL_SENINF_HSYNC_POL_MASK BIT(3) +#define SENINF_ASYNC_CTRL_FIFO_PUSH_EN_SHIFT 16 +#define SENINF_ASYNC_CTRL_FIFO_PUSH_EN_MASK (0x3f << 16) +#define SENINF_ASYNC_CTRL_FIFO_FLUSH_EN_SHIFT 24 +#define SENINF_ASYNC_CTRL_FIFO_FLUSH_EN_MASK (0x3f << 24) +#define SENINF_TG1_PH_CNT 0x0600 +#define SENINF_TG1_PH_CNT_TGCLK_SEL_SHIFT 0 +#define SENINF_TG1_PH_CNT_TGCLK_SEL_MASK (0x3 << 0) +#define SENINF_TG1_PH_CNT_CLKFL_POL_SHIFT 2 +#define SENINF_TG1_PH_CNT_CLKFL_POL_MASK BIT(2) +#define SENINF_TG1_PH_CNT_EXT_RST_SHIFT 4 +#define SENINF_TG1_PH_CNT_EXT_RST_MASK BIT(4) +#define SENINF_TG1_PH_CNT_EXT_PWRDN_SHIFT 5 +#define SENINF_TG1_PH_CNT_EXT_PWRDN_MASK BIT(5) +#define SENINF_TG1_PH_CNT_PAD_PCLK_INV_SHIFT 6 +#define SENINF_TG1_PH_CNT_PAD_PCLK_INV_MASK BIT(6) +#define SENINF_TG1_PH_CNT_CAM_PCLK_INV_SHIFT 7 +#define SENINF_TG1_PH_CNT_CAM_PCLK_INV_MASK BIT(7) +#define SENINF_TG1_PH_CNT_CLKPOL_SHIFT 28 +#define SENINF_TG1_PH_CNT_CLKPOL_MASK BIT(28) +#define SENINF_TG1_PH_CNT_ADCLK_EN_SHIFT 29 +#define SENINF_TG1_PH_CNT_ADCLK_EN_MASK BIT(29) +#define SENINF_TG1_PH_CNT_PCEN_SHIFT 31 +#define SENINF_TG1_PH_CNT_PCEN_MASK BIT(31) +#define SENINF_TG1_SEN_CK 0x0604 +#define SENINF_TG1_SEN_CK_CLKFL_SHIFT 0 +#define SENINF_TG1_SEN_CK_CLKFL_MASK (0x3f << 0) +#define SENINF_TG1_SEN_CK_CLKRS_SHIFT 8 +#define SENINF_TG1_SEN_CK_CLKRS_MASK (0x3f << 8) +#define SENINF_TG1_SEN_CK_CLKCNT_SHIFT 16 +#define SENINF_TG1_SEN_CK_CLKCNT_MASK (0x3f << 16) +#define SENINF_TG1_TM_CTL 0x0608 +#define SENINF_TG1_TM_CTL_TM_EN_SHIFT 0 +#define SENINF_TG1_TM_CTL_TM_EN_MASK BIT(0) +#define SENINF_TG1_TM_CTL_TM_RST_SHIFT 1 +#define SENINF_TG1_TM_CTL_TM_RST_MASK BIT(1) +#define SENINF_TG1_TM_CTL_TM_FMT_SHIFT 2 +#define SENINF_TG1_TM_CTL_TM_FMT_MASK BIT(2) +#define SENINF_TG1_TM_CTL_TM_PAT_SHIFT 4 +#define SENINF_TG1_TM_CTL_TM_PAT_MASK (0xf << 4) +#define SENINF_TG1_TM_CTL_TM_VSYNC_SHIFT 8 +#define SENINF_TG1_TM_CTL_TM_VSYNC_MASK (0xff << 8) +#define SENINF_TG1_TM_CTL_TM_DUMMYPXL_SHIFT 16 +#define SENINF_TG1_TM_CTL_TM_DUMMYPXL_MASK (0xff << 16) +#define SENINF_TG1_TM_SIZE 0x060C +#define SENINF_TG1_TM_SIZE_TM_PXL_SHIFT 0 +#define SENINF_TG1_TM_SIZE_TM_PXL_MASK (0x1fff << 0) +#define SENINF_TG1_TM_SIZE_TM_LINE_SHIFT 16 +#define SENINF_TG1_TM_SIZE_TM_LINE_MASK (0x3fff << 16) +#define SENINF_TG1_TM_CLK 0x0610 +#define SENINF_TG1_TM_CLK_TM_CLK_CNT_SHIFT 0 +#define SENINF_TG1_TM_CLK_TM_CLK_CNT_MASK (0xf << 0) +#define SENINF_TG1_TM_CLK_TM_CLRBAR_OFT_SHIFT 16 +#define SENINF_TG1_TM_CLK_TM_CLRBAR_OFT_MASK (0x3ff << 16) +#define SENINF_TG1_TM_CLK_TM_CLRBAR_IDX_SHIFT 28 +#define SENINF_TG1_TM_CLK_TM_CLRBAR_IDX_MASK (0x7 << 28) +#define SENINF_TG1_TM_STP 0x0614 +#define SENINF_TG1_TM_STP_TG1_TM_STP_SHIFT 0 +#define SENINF_TG1_TM_STP_TG1_TM_STP_MASK (0xffffffff << 0) +#define MIPI_RX_CON24_CSI0 0x0824 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_NUM_SHIFT 0 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_NUM_MASK (0x3 << 0) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_EN_SHIFT 2 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_EN_MASK BIT(2) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_FIX_PAT_SHIFT 5 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_FIX_PAT_MASK BIT(5) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_CLK_SEL_SHIFT 6 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_CLK_SEL_MASK BIT(6) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_CLK4X_SEL_SHIFT 7 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_CLK4X_SEL_MASK BIT(7) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_TERM_DELAY_SHIFT 8 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_TERM_DELAY_MASK (0xff << 8) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_SETTLE_DELAY_SHIFT 16 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_SETTLE_DELAY_MASK (0xff << 16) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN0_MUX_SHIFT 24 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN0_MUX_MASK (0x3 << 24) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN1_MUX_SHIFT 26 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN1_MUX_MASK (0x3 << 26) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN2_MUX_SHIFT 28 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN2_MUX_MASK (0x3 << 28) +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN3_MUX_SHIFT 30 +#define MIPI_RX_CON24_CSI0_CSI0_BIST_LN3_MUX_MASK (0x3 << 30) +#define MIPI_RX_CON28_CSI0 0x0828 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_START_SHIFT 0 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_START_MASK BIT(0) +#define MIPI_RX_CON28_CSI0_CSI0_BIST_DATA_OK_SHIFT 1 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_DATA_OK_MASK BIT(1) +#define MIPI_RX_CON28_CSI0_CSI0_BIST_HS_FSM_OK_SHIFT 2 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_HS_FSM_OK_MASK BIT(2) +#define MIPI_RX_CON28_CSI0_CSI0_BIST_LANE_FSM_OK_SHIFT 3 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_LANE_FSM_OK_MASK BIT(3) +#define MIPI_RX_CON28_CSI0_CSI0_BIST_CSI2_DATA_OK_SHIFT 4 +#define MIPI_RX_CON28_CSI0_CSI0_BIST_CSI2_DATA_OK_MASK BIT(4) +#define MIPI_RX_CON34_CSI0 0x0834 +#define MIPI_RX_CON34_CSI0_BIST_MODE_SHIFT 0 +#define MIPI_RX_CON34_CSI0_BIST_MODE_MASK BIT(0) +#define MIPI_RX_CON34_CSI0_CSI0_BIST_HSDET_MUX_SHIFT 22 +#define MIPI_RX_CON34_CSI0_CSI0_BIST_HSDET_MUX_MASK (0x3 << 22) +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN4_MUX_SHIFT 24 +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN4_MUX_MASK (0x3 << 24) +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN5_MUX_SHIFT 26 +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN5_MUX_MASK (0x3 << 26) +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN6_MUX_SHIFT 28 +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN6_MUX_MASK (0x3 << 28) +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN7_MUX_SHIFT 30 +#define MIPI_RX_CON34_CSI0_CSI0_BIST_LN7_MUX_MASK (0x3 << 30) +#define MIPI_RX_CON38_CSI0 0x0838 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CTRL_MODE_SHIFT 0 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CTRL_MODE_MASK BIT(0) +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CAL_MODE_SHIFT 1 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CAL_MODE_MASK BIT(1) +#define MIPI_RX_CON38_CSI0_MIPI_RX_HW_CAL_START_SHIFT 2 +#define MIPI_RX_CON38_CSI0_MIPI_RX_HW_CAL_START_MASK BIT(2) +#define MIPI_RX_CON38_CSI0_MIPI_RX_HW_CAL_OPTION_SHIFT 3 +#define MIPI_RX_CON38_CSI0_MIPI_RX_HW_CAL_OPTION_MASK BIT(3) +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_RST_SHIFT 4 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_RST_MASK (0x1f << 4) +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CPHY_TX_MODE_SHIFT 9 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CPHY_TX_MODE_MASK BIT(9) +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CPHY_RX_MODE_SHIFT 10 +#define MIPI_RX_CON38_CSI0_MIPI_RX_SW_CPHY_RX_MODE_MASK BIT(10) +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO0_SHIFT 16 +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO0_MASK (0x1f << 16) +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO1_SHIFT 22 +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO1_MASK (0x1f << 22) +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO2_SHIFT 27 +#define MIPI_RX_CON38_CSI0_RG_CKPHASE_TRIO2_MASK (0x1f << 27) +#define MIPI_RX_CON3C_CSI0 0x083C +#define MIPI_RX_CON3C_CSI0_MIPI_RX_SW_CTRL__SHIFT 0 +#define MIPI_RX_CON3C_CSI0_MIPI_RX_SW_CTRL__MASK (0xffffffff << 0) +#define MIPI_RX_CON7C_CSI0 0x087C +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON7C_CSI0_DA_CSI0_LNRD0_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON80_CSI0 0x0880 +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON80_CSI0_DA_CSI0_LNRD1_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON84_CSI0 0x0884 +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON84_CSI0_DA_CSI0_LNRD2_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON88_CSI0 0x0888 +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON88_CSI0_DA_CSI0_LNRD3_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON8C_CSI0 0x088C +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON8C_CSI0_RG_CSI0_LNRD0_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON90_CSI0 0x0890 +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON90_CSI0_RG_CSI0_LNRD1_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON94_CSI0 0x0894 +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON94_CSI0_RG_CSI0_LNRD2_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CON98_CSI0 0x0898 +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CON98_CSI0_RG_CSI0_LNRD3_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CONA0_CSI0 0x08A0 +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_EN_SHIFT 0 +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_EN_MASK BIT(0) +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_APPLY_SHIFT 1 +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_APPLY_MASK BIT(1) +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_CODE_SHIFT 2 +#define MIPI_RX_CONA0_CSI0_RG_CSI0_LNRC_HSRX_DELAY_CODE_MASK (0x3f << 2) +#define MIPI_RX_CONB0_CSI0 0x08B0 +#define MIPI_RX_CONB0_CSI0_DELAY_APPLY_MODE_SHIFT 0 +#define MIPI_RX_CONB0_CSI0_DELAY_APPLY_MODE_MASK (0xf << 0) +#define MIPI_RX_CONB0_CSI0_DESKEW_SW_RST_SHIFT 7 +#define MIPI_RX_CONB0_CSI0_DESKEW_SW_RST_MASK BIT(7) +#define MIPI_RX_CONB0_CSI0_DESKEW_TRIGGER_MODE_SHIFT 8 +#define MIPI_RX_CONB0_CSI0_DESKEW_TRIGGER_MODE_MASK (0x7 << 8) +#define MIPI_RX_CONB0_CSI0_DESKEW_ACC_MODE_SHIFT 12 +#define MIPI_RX_CONB0_CSI0_DESKEW_ACC_MODE_MASK (0xf << 12) +#define MIPI_RX_CONB0_CSI0_DESKEW_CSI2_RST_ENABLE_SHIFT 16 +#define MIPI_RX_CONB0_CSI0_DESKEW_CSI2_RST_ENABLE_MASK BIT(16) +#define MIPI_RX_CONB0_CSI0_DESKEW_IP_SEL_SHIFT 30 +#define MIPI_RX_CONB0_CSI0_DESKEW_IP_SEL_MASK BIT(30) +#define MIPI_RX_CONB0_CSI0_DESKEW_ENABLE_SHIFT 31 +#define MIPI_RX_CONB0_CSI0_DESKEW_ENABLE_MASK BIT(31) +#define MIPI_RX_CONB4_CSI0 0x08B4 +#define MIPI_RX_CONB4_CSI0_SYNC_CODE_MASK_SHIFT 0 +#define MIPI_RX_CONB4_CSI0_SYNC_CODE_MASK_MASK (0xffff << 0) +#define MIPI_RX_CONB4_CSI0_EXPECTED_SYNC_CODE_SHIFT 16 +#define MIPI_RX_CONB4_CSI0_EXPECTED_SYNC_CODE_MASK (0xffff << 16) +#define MIPI_RX_CONB8_CSI0 0x08B8 +#define MIPI_RX_CONB8_CSI0_DESKEW_SETUP_TIME_SHIFT 0 +#define MIPI_RX_CONB8_CSI0_DESKEW_SETUP_TIME_MASK (0xf << 0) +#define MIPI_RX_CONB8_CSI0_DESKEW_HOLD_TIME_SHIFT 8 +#define MIPI_RX_CONB8_CSI0_DESKEW_HOLD_TIME_MASK (0xf << 8) +#define MIPI_RX_CONB8_CSI0_DESKEW_TIME_OUT_SHIFT 16 +#define MIPI_RX_CONB8_CSI0_DESKEW_TIME_OUT_MASK (0xff << 16) +#define MIPI_RX_CONB8_CSI0_DESKEW_TIME_OUT_EN_SHIFT 24 +#define MIPI_RX_CONB8_CSI0_DESKEW_TIME_OUT_EN_MASK BIT(24) +#define MIPI_RX_CONBC_CSI0 0x08BC +#define MIPI_RX_CONBC_CSI0_DESKEW_DETECTION_MODE_SHIFT 0 +#define MIPI_RX_CONBC_CSI0_DESKEW_DETECTION_MODE_MASK (0xf << 0) +#define MIPI_RX_CONBC_CSI0_DESKEW_DETECTION_CNT_SHIFT 8 +#define MIPI_RX_CONBC_CSI0_DESKEW_DETECTION_CNT_MASK (0x7f << 8) +#define MIPI_RX_CONBC_CSI0_DESKEW_DELAY_APPLY_MODE_SHIFT 16 +#define MIPI_RX_CONBC_CSI0_DESKEW_DELAY_APPLY_MODE_MASK (0xf << 16) +#define MIPI_RX_CONBC_CSI0_DESKEW_LANE_NUMBER_SHIFT 24 +#define MIPI_RX_CONBC_CSI0_DESKEW_LANE_NUMBER_MASK (0x3 << 24) +#define MIPI_RX_CONC0_CSI0 0x08C0 +#define MIPI_RX_CONC0_CSI0_DESKEW_INTERRUPT_ENABLE_SHIFT 0 +#define MIPI_RX_CONC0_CSI0_DESKEW_INTERRUPT_ENABLE_MASK (0xffff << 0) +#define MIPI_RX_CONC0_CSI0_DESKEW_INTERRUPT_W1C_EN_SHIFT 31 +#define MIPI_RX_CONC0_CSI0_DESKEW_INTERRUPT_W1C_EN_MASK BIT(31) +#define MIPI_RX_CONC4_CSI0 0x08C4 +#define MIPI_RX_CONC4_CSI0_DESKEW_INTERRUPT_STATUS_SHIFT 0 +#define MIPI_RX_CONC4_CSI0_DESKEW_INTERRUPT_STATUS_MASK (0xffff << 0) +#define MIPI_RX_CONC8_CSI0 0x08C8 +#define MIPI_RX_CONC8_CSI0_DESKEW_DEBUG_MUX_SELECT_SHIFT 0 +#define MIPI_RX_CONC8_CSI0_DESKEW_DEBUG_MUX_SELECT_MASK (0xff << 0) +#define MIPI_RX_CONCC_CSI0 0x08CC +#define MIPI_RX_CONCC_CSI0_DESKEW_DEBUG_OUTPUTS_SHIFT 0 +#define MIPI_RX_CONCC_CSI0_DESKEW_DEBUG_OUTPUTS_MASK (0xffffffff << 0) +#define MIPI_RX_COND0_CSI0 0x08D0 +#define MIPI_RX_COND0_CSI0_DESKEW_DELAY_LENGTH_SHIFT 0 +#define MIPI_RX_COND0_CSI0_DESKEW_DELAY_LENGTH_MASK (0x3f << 0) +#define SENINF_CSI2_CTL 0x0A00 +#define SENINF_CSI2_CTL_DATA_LANE0_EN_SHIFT 0 +#define SENINF_CSI2_CTL_DATA_LANE0_EN_MASK BIT(0) +#define SENINF_CSI2_CTL_DATA_LANE1_EN_SHIFT 1 +#define SENINF_CSI2_CTL_DATA_LANE1_EN_MASK BIT(1) +#define SENINF_CSI2_CTL_DATA_LANE2_EN_SHIFT 2 +#define SENINF_CSI2_CTL_DATA_LANE2_EN_MASK BIT(2) +#define SENINF_CSI2_CTL_DATA_LANE3_EN_SHIFT 3 +#define SENINF_CSI2_CTL_DATA_LANE3_EN_MASK BIT(3) +#define SENINF_CSI2_CTL_CLOCK_LANE_EN_SHIFT 4 +#define SENINF_CSI2_CTL_CLOCK_LANE_EN_MASK BIT(4) +#define SENINF_CSI2_CTL_ECC_EN_SHIFT 5 +#define SENINF_CSI2_CTL_ECC_EN_MASK BIT(5) +#define SENINF_CSI2_CTL_CRC_EN_SHIFT 6 +#define SENINF_CSI2_CTL_CRC_EN_MASK BIT(6) +#define SENINF_CSI2_CTL_HSRX_DET_EN_SHIFT 7 +#define SENINF_CSI2_CTL_HSRX_DET_EN_MASK BIT(7) +#define SENINF_CSI2_CTL_HS_PRPR_EN_SHIFT 8 +#define SENINF_CSI2_CTL_HS_PRPR_EN_MASK BIT(8) +#define SENINF_CSI2_CTL_HS_END_EN_SHIFT 9 +#define SENINF_CSI2_CTL_HS_END_EN_MASK BIT(9) +#define SENINF_CSI2_CTL_GENERIC_LONG_PACKET_EN_SHIFT 12 +#define SENINF_CSI2_CTL_GENERIC_LONG_PACKET_EN_MASK BIT(12) +#define SENINF_CSI2_CTL_IMAGE_PACKET_EN_SHIFT 13 +#define SENINF_CSI2_CTL_IMAGE_PACKET_EN_MASK BIT(13) +#define SENINF_CSI2_CTL_BYTE2PIXEL_EN_SHIFT 14 +#define SENINF_CSI2_CTL_BYTE2PIXEL_EN_MASK BIT(14) +#define SENINF_CSI2_CTL_VS_TYPE_SHIFT 15 +#define SENINF_CSI2_CTL_VS_TYPE_MASK BIT(15) +#define SENINF_CSI2_CTL_ED_SEL_SHIFT 16 +#define SENINF_CSI2_CTL_ED_SEL_MASK BIT(16) +#define SENINF_CSI2_CTL_FLUSH_MODE_SHIFT 18 +#define SENINF_CSI2_CTL_FLUSH_MODE_MASK (0x3 << 18) +#define SENINF_CSI2_CTL_HS_TRAIL_EN_SHIFT 25 +#define SENINF_CSI2_CTL_HS_TRAIL_EN_MASK BIT(25) +#define SENINF_CSI2_CTL_CLOCK_HS_OPTION_SHIFT 27 +#define SENINF_CSI2_CTL_CLOCK_HS_OPTION_MASK BIT(27) +#define SENINF_CSI2_CTL_VS_OUT_CYCLE_NUMBER_SHIFT 28 +#define SENINF_CSI2_CTL_VS_OUT_CYCLE_NUMBER_MASK (0x3 << 28) +#define SENINF_CSI2_LNRC_TIMING 0x0A04 +#define SENINF_CSI2_LNRC_TIMING_CLOCK_TERM_PARAMETER_SHIFT 0 +#define SENINF_CSI2_LNRC_TIMING_CLOCK_TERM_PARAMETER_MASK (0xff << 0) +#define SENINF_CSI2_LNRC_TIMING_CLOCK_SETTLE_PARAMETER_SHIFT 8 +#define SENINF_CSI2_LNRC_TIMING_CLOCK_SETTLE_PARAMETER_MASK (0xff << 8) +#define SENINF_CSI2_LNRD_TIMING 0x0A08 +#define SENINF_CSI2_LNRD_TIMING_DATA_TERM_PARAMETER_SHIFT 0 +#define SENINF_CSI2_LNRD_TIMING_DATA_TERM_PARAMETER_MASK (0xff << 0) +#define SENINF_CSI2_LNRD_TIMING_DATA_SETTLE_PARAMETER_SHIFT 8 +#define SENINF_CSI2_LNRD_TIMING_DATA_SETTLE_PARAMETER_MASK (0xff << 8) +#define SENINF_CSI2_DPCM 0x0A0C +#define SENINF_CSI2_DPCM_DPCM_MODE_SHIFT 0 +#define SENINF_CSI2_DPCM_DPCM_MODE_MASK (0xf << 0) +#define SENINF_CSI2_DPCM_DI_30_DPCM_EN_SHIFT 7 +#define SENINF_CSI2_DPCM_DI_30_DPCM_EN_MASK BIT(7) +#define SENINF_CSI2_DPCM_DI_31_DPCM_EN_SHIFT 8 +#define SENINF_CSI2_DPCM_DI_31_DPCM_EN_MASK BIT(8) +#define SENINF_CSI2_DPCM_DI_32_DPCM_EN_SHIFT 9 +#define SENINF_CSI2_DPCM_DI_32_DPCM_EN_MASK BIT(9) +#define SENINF_CSI2_DPCM_DI_33_DPCM_EN_SHIFT 10 +#define SENINF_CSI2_DPCM_DI_33_DPCM_EN_MASK BIT(10) +#define SENINF_CSI2_DPCM_DI_34_DPCM_EN_SHIFT 11 +#define SENINF_CSI2_DPCM_DI_34_DPCM_EN_MASK BIT(11) +#define SENINF_CSI2_DPCM_DI_35_DPCM_EN_SHIFT 12 +#define SENINF_CSI2_DPCM_DI_35_DPCM_EN_MASK BIT(12) +#define SENINF_CSI2_DPCM_DI_36_DPCM_EN_SHIFT 13 +#define SENINF_CSI2_DPCM_DI_36_DPCM_EN_MASK BIT(13) +#define SENINF_CSI2_DPCM_DI_37_DPCM_EN_SHIFT 14 +#define SENINF_CSI2_DPCM_DI_37_DPCM_EN_MASK BIT(14) +#define SENINF_CSI2_DPCM_DI_2A_DPCM_EN_SHIFT 15 +#define SENINF_CSI2_DPCM_DI_2A_DPCM_EN_MASK BIT(15) +#define SENINF_CSI2_INT_EN 0x0A10 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_SHIFT 0 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_MASK BIT(0) +#define SENINF_CSI2_INT_EN_ERR_ID_SHIFT 1 +#define SENINF_CSI2_INT_EN_ERR_ID_MASK BIT(1) +#define SENINF_CSI2_INT_EN_ERR_ECC_NO_ERROR_SHIFT 2 +#define SENINF_CSI2_INT_EN_ERR_ECC_NO_ERROR_MASK BIT(2) +#define SENINF_CSI2_INT_EN_ERR_ECC_CORRECTED_SHIFT 3 +#define SENINF_CSI2_INT_EN_ERR_ECC_CORRECTED_MASK BIT(3) +#define SENINF_CSI2_INT_EN_ERR_ECC_DOUBLE_SHIFT 4 +#define SENINF_CSI2_INT_EN_ERR_ECC_DOUBLE_MASK BIT(4) +#define SENINF_CSI2_INT_EN_ERR_CRC_SHIFT 5 +#define SENINF_CSI2_INT_EN_ERR_CRC_MASK BIT(5) +#define SENINF_CSI2_INT_EN_ERR_CRC_NO_ERROR_SHIFT 6 +#define SENINF_CSI2_INT_EN_ERR_CRC_NO_ERROR_MASK BIT(6) +#define SENINF_CSI2_INT_EN_ERR_MULTI_LANE_SYNC_SHIFT 7 +#define SENINF_CSI2_INT_EN_ERR_MULTI_LANE_SYNC_MASK BIT(7) +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD0_SHIFT 8 +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD0_MASK BIT(8) +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD1_SHIFT 9 +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD1_MASK BIT(9) +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD2_SHIFT 10 +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD2_MASK BIT(10) +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD3_SHIFT 11 +#define SENINF_CSI2_INT_EN_ERR_SOT_SYNC_HS_LNRD3_MASK BIT(11) +#define SENINF_CSI2_INT_EN_FS_SHIFT 12 +#define SENINF_CSI2_INT_EN_FS_MASK BIT(12) +#define SENINF_CSI2_INT_EN_LS_SHIFT 13 +#define SENINF_CSI2_INT_EN_LS_MASK BIT(13) +#define SENINF_CSI2_INT_EN_GS_SHIFT 14 +#define SENINF_CSI2_INT_EN_GS_MASK BIT(14) +#define SENINF_CSI2_INT_EN_FE_SHIFT 15 +#define SENINF_CSI2_INT_EN_FE_MASK BIT(15) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S0_SHIFT 16 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S0_MASK BIT(16) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S1_SHIFT 17 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S1_MASK BIT(17) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S2_SHIFT 18 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S2_MASK BIT(18) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S3_SHIFT 19 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S3_MASK BIT(19) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S4_SHIFT 20 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S4_MASK BIT(20) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S5_SHIFT 21 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S5_MASK BIT(21) +#define SENINF_CSI2_INT_EN_ERR_LANE_RESYNC_SHIFT 22 +#define SENINF_CSI2_INT_EN_ERR_LANE_RESYNC_MASK BIT(22) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S6_SHIFT 23 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S6_MASK BIT(23) +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S7_SHIFT 24 +#define SENINF_CSI2_INT_EN_ERR_FRAME_SYNC_S7_MASK BIT(24) +#define SENINF_CSI2_INT_EN_TRIO0_ESCAPE_CODE_DETECT_SHIFT 26 +#define SENINF_CSI2_INT_EN_TRIO0_ESCAPE_CODE_DETECT_MASK BIT(26) +#define SENINF_CSI2_INT_EN_TRIO1_ESCAPE_CODE_DETECT_SHIFT 27 +#define SENINF_CSI2_INT_EN_TRIO1_ESCAPE_CODE_DETECT_MASK BIT(27) +#define SENINF_CSI2_INT_EN_TRIO2_ESCAPE_CODE_DETECT_SHIFT 28 +#define SENINF_CSI2_INT_EN_TRIO2_ESCAPE_CODE_DETECT_MASK BIT(28) +#define SENINF_CSI2_INT_EN_TRIO3_ESCAPE_CODE_DETECT_SHIFT 29 +#define SENINF_CSI2_INT_EN_TRIO3_ESCAPE_CODE_DETECT_MASK BIT(29) +#define SENINF_CSI2_INT_EN_MERGE_FIFO_AF_SHIFT 30 +#define SENINF_CSI2_INT_EN_MERGE_FIFO_AF_MASK BIT(30) +#define SENINF_CSI2_INT_EN_INT_WCLR_EN_SHIFT 31 +#define SENINF_CSI2_INT_EN_INT_WCLR_EN_MASK BIT(31) +#define SENINF_CSI2_INT_STATUS 0x0A14 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_STA_SHIFT 0 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_STA_MASK BIT(0) +#define SENINF_CSI2_INT_STATUS_ERR_ID_STA_SHIFT 1 +#define SENINF_CSI2_INT_STATUS_ERR_ID_STA_MASK BIT(1) +#define SENINF_CSI2_INT_STATUS_ERR_ECC_NO_ERROR_STA_SHIFT 2 +#define SENINF_CSI2_INT_STATUS_ERR_ECC_NO_ERROR_STA_MASK BIT(2) +#define SENINF_CSI2_INT_STATUS_ERR_ECC_CORRECTED_STA_SHIFT 3 +#define SENINF_CSI2_INT_STATUS_ERR_ECC_CORRECTED_STA_MASK BIT(3) +#define SENINF_CSI2_INT_STATUS_ERR_ECC_DOUBLE_STA_SHIFT 4 +#define SENINF_CSI2_INT_STATUS_ERR_ECC_DOUBLE_STA_MASK BIT(4) +#define SENINF_CSI2_INT_STATUS_ERR_CRC_STA_SHIFT 5 +#define SENINF_CSI2_INT_STATUS_ERR_CRC_STA_MASK BIT(5) +#define SENINF_CSI2_INT_STATUS_ERR_MULTI_LANE_SYNC_STA_SHIFT 7 +#define SENINF_CSI2_INT_STATUS_ERR_MULTI_LANE_SYNC_STA_MASK BIT(7) +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD0_STA_SHIFT 8 +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD0_STA_MASK BIT(8) +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD1_STA_SHIFT 9 +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD1_STA_MASK BIT(9) +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD2_STA_SHIFT 10 +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD2_STA_MASK BIT(10) +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD3_STA_SHIFT 11 +#define SENINF_CSI2_INT_STATUS_ERR_SOT_SYNC_HS_LNRD3_STA_MASK BIT(11) +#define SENINF_CSI2_INT_STATUS_FS_STA_SHIFT 12 +#define SENINF_CSI2_INT_STATUS_FS_STA_MASK BIT(12) +#define SENINF_CSI2_INT_STATUS_LS_STA_SHIFT 13 +#define SENINF_CSI2_INT_STATUS_LS_STA_MASK BIT(13) +#define SENINF_CSI2_INT_STATUS_GS_STA_SHIFT 14 +#define SENINF_CSI2_INT_STATUS_GS_STA_MASK BIT(14) +#define SENINF_CSI2_INT_STATUS_FE_STA_SHIFT 15 +#define SENINF_CSI2_INT_STATUS_FE_STA_MASK BIT(15) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S0_STA_SHIFT 16 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S0_STA_MASK BIT(16) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S1_STA_SHIFT 17 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S1_STA_MASK BIT(17) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S2_STA_SHIFT 18 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S2_STA_MASK BIT(18) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S3_STA_SHIFT 19 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S3_STA_MASK BIT(19) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S4_STA_SHIFT 20 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S4_STA_MASK BIT(20) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S5_STA_SHIFT 21 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S5_STA_MASK BIT(21) +#define SENINF_CSI2_INT_STATUS_ERR_LANE_RESYNC_STA_SHIFT 22 +#define SENINF_CSI2_INT_STATUS_ERR_LANE_RESYNC_STA_MASK BIT(22) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S6_STA_SHIFT 23 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S6_STA_MASK BIT(23) +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S7_STA_SHIFT 24 +#define SENINF_CSI2_INT_STATUS_ERR_FRAME_SYNC_S7_STA_MASK BIT(24) +#define SENINF_CSI2_INT_STATUS_TRIO0_ESCAPE_CODE_DETECT_STA_SHIFT 26 +#define SENINF_CSI2_INT_STATUS_TRIO0_ESCAPE_CODE_DETECT_STA_MASK BIT(26) +#define SENINF_CSI2_INT_STATUS_TRIO1_ESCAPE_CODE_DETECT_STA_SHIFT 27 +#define SENINF_CSI2_INT_STATUS_TRIO1_ESCAPE_CODE_DETECT_STA_MASK BIT(27) +#define SENINF_CSI2_INT_STATUS_TRIO2_ESCAPE_CODE_DETECT_STA_SHIFT 28 +#define SENINF_CSI2_INT_STATUS_TRIO2_ESCAPE_CODE_DETECT_STA_MASK BIT(28) +#define SENINF_CSI2_INT_STATUS_TRIO3_ESCAPE_CODE_DETECT_STA_SHIFT 29 +#define SENINF_CSI2_INT_STATUS_TRIO3_ESCAPE_CODE_DETECT_STA_MASK BIT(29) +#define SENINF_CSI2_INT_STATUS_MERGE_FIFO_AF_SHIFT 30 +#define SENINF_CSI2_INT_STATUS_MERGE_FIFO_AF_MASK BIT(30) +#define SENINF_CSI2_DGB_SEL 0x0A18 +#define SENINF_CSI2_DGB_SEL_DEBUG_SEL_SHIFT 0 +#define SENINF_CSI2_DGB_SEL_DEBUG_SEL_MASK (0xff << 0) +#define SENINF_CSI2_DGB_SEL_DEBUG_EN_SHIFT 31 +#define SENINF_CSI2_DGB_SEL_DEBUG_EN_MASK BIT(31) +#define SENINF_CSI2_DBG_PORT 0x0A1C +#define SENINF_CSI2_DBG_PORT_CTL_DBG_PORT_SHIFT 0 +#define SENINF_CSI2_DBG_PORT_CTL_DBG_PORT_MASK (0xffff << 0) +#define SENINF_CSI2_SPARE0 0x0A20 +#define SENINF_CSI2_SPARE0_SPARE0_SHIFT 0 +#define SENINF_CSI2_SPARE0_SPARE0_MASK (0xffffffff << 0) +#define SENINF_CSI2_SPARE1 0x0A24 +#define SENINF_CSI2_SPARE1_SPARE1_SHIFT 0 +#define SENINF_CSI2_SPARE1_SPARE1_MASK (0xffffffff << 0) +#define SENINF_CSI2_LNRC_FSM 0x0A28 +#define SENINF_CSI2_LNRC_FSM_LNRC_RX_FSM_SHIFT 0 +#define SENINF_CSI2_LNRC_FSM_LNRC_RX_FSM_MASK (0x3f << 0) +#define SENINF_CSI2_LNRD_FSM 0x0A2C +#define SENINF_CSI2_LNRD_FSM_LNRD0_RX_FSM_SHIFT 0 +#define SENINF_CSI2_LNRD_FSM_LNRD0_RX_FSM_MASK (0x7f << 0) +#define SENINF_CSI2_LNRD_FSM_LNRD1_RX_FSM_SHIFT 8 +#define SENINF_CSI2_LNRD_FSM_LNRD1_RX_FSM_MASK (0x7f << 8) +#define SENINF_CSI2_LNRD_FSM_LNRD2_RX_FSM_SHIFT 16 +#define SENINF_CSI2_LNRD_FSM_LNRD2_RX_FSM_MASK (0x7f << 16) +#define SENINF_CSI2_LNRD_FSM_LNRD3_RX_FSM_SHIFT 24 +#define SENINF_CSI2_LNRD_FSM_LNRD3_RX_FSM_MASK (0x7f << 24) +#define SENINF_CSI2_FRAME_LINE_NUM 0x0A30 +#define SENINF_CSI2_FRAME_LINE_NUM_FRAME_NUM_SHIFT 0 +#define SENINF_CSI2_FRAME_LINE_NUM_FRAME_NUM_MASK (0xffff << 0) +#define SENINF_CSI2_FRAME_LINE_NUM_LINE_NUM_SHIFT 16 +#define SENINF_CSI2_FRAME_LINE_NUM_LINE_NUM_MASK (0xffff << 16) +#define SENINF_CSI2_GENERIC_SHORT 0x0A34 +#define SENINF_CSI2_GENERIC_SHORT_GENERIC_SHORT_PACKET_DT_SHIFT 0 +#define SENINF_CSI2_GENERIC_SHORT_GENERIC_SHORT_PACKET_DT_MASK (0x3f << 0) +#define SENINF_CSI2_GENERIC_SHORT_GENERIC_SHORT_PACKET_DATA_SHIFT 16 +#define SENINF_CSI2_GENERIC_SHORT_GENERIC_SHORT_PACKET_DATA_MASK (0xffff << 16) +#define SENINF_CSI2_HSRX_DBG 0x0A38 +#define SENINF_CSI2_HSRX_DBG_DATA_LANE0_HSRX_EN_SHIFT 0 +#define SENINF_CSI2_HSRX_DBG_DATA_LANE0_HSRX_EN_MASK BIT(0) +#define SENINF_CSI2_HSRX_DBG_DATA_LANE1_HSRX_EN_SHIFT 1 +#define SENINF_CSI2_HSRX_DBG_DATA_LANE1_HSRX_EN_MASK BIT(1) +#define SENINF_CSI2_HSRX_DBG_DATA_LANE2_HSRX_EN_SHIFT 2 +#define SENINF_CSI2_HSRX_DBG_DATA_LANE2_HSRX_EN_MASK BIT(2) +#define SENINF_CSI2_HSRX_DBG_DATA_LANE3_HSRX_EN_SHIFT 3 +#define SENINF_CSI2_HSRX_DBG_DATA_LANE3_HSRX_EN_MASK BIT(3) +#define SENINF_CSI2_HSRX_DBG_CLOCK_LANE_HSRX_EN_SHIFT 4 +#define SENINF_CSI2_HSRX_DBG_CLOCK_LANE_HSRX_EN_MASK BIT(4) +#define SENINF_CSI2_DI 0x0A3C +#define SENINF_CSI2_DI_VC0_SHIFT 0 +#define SENINF_CSI2_DI_VC0_MASK (0x3 << 0) +#define SENINF_CSI2_DI_DT0_SHIFT 2 +#define SENINF_CSI2_DI_DT0_MASK (0x3f << 2) +#define SENINF_CSI2_DI_VC1_SHIFT 8 +#define SENINF_CSI2_DI_VC1_MASK (0x3 << 8) +#define SENINF_CSI2_DI_DT1_SHIFT 10 +#define SENINF_CSI2_DI_DT1_MASK (0x3f << 10) +#define SENINF_CSI2_DI_VC2_SHIFT 16 +#define SENINF_CSI2_DI_VC2_MASK (0x3 << 16) +#define SENINF_CSI2_DI_DT2_SHIFT 18 +#define SENINF_CSI2_DI_DT2_MASK (0x3f << 18) +#define SENINF_CSI2_DI_VC3_SHIFT 24 +#define SENINF_CSI2_DI_VC3_MASK (0x3 << 24) +#define SENINF_CSI2_DI_DT3_SHIFT 26 +#define SENINF_CSI2_DI_DT3_MASK (0x3f << 26) +#define SENINF_CSI2_HS_TRAIL 0x0A40 +#define SENINF_CSI2_HS_TRAIL_HS_TRAIL_PARAMETER_SHIFT 0 +#define SENINF_CSI2_HS_TRAIL_HS_TRAIL_PARAMETER_MASK (0xff << 0) +#define SENINF_CSI2_DI_CTRL 0x0A44 +#define SENINF_CSI2_DI_CTRL_VC0_INTERLEAVING_SHIFT 0 +#define SENINF_CSI2_DI_CTRL_VC0_INTERLEAVING_MASK BIT(0) +#define SENINF_CSI2_DI_CTRL_DT0_INTERLEAVING_SHIFT 1 +#define SENINF_CSI2_DI_CTRL_DT0_INTERLEAVING_MASK (0x3 << 1) +#define SENINF_CSI2_DI_CTRL_VC1_INTERLEAVING_SHIFT 8 +#define SENINF_CSI2_DI_CTRL_VC1_INTERLEAVING_MASK BIT(8) +#define SENINF_CSI2_DI_CTRL_DT1_INTERLEAVING_SHIFT 9 +#define SENINF_CSI2_DI_CTRL_DT1_INTERLEAVING_MASK (0x3 << 9) +#define SENINF_CSI2_DI_CTRL_VC2_INTERLEAVING_SHIFT 16 +#define SENINF_CSI2_DI_CTRL_VC2_INTERLEAVING_MASK BIT(16) +#define SENINF_CSI2_DI_CTRL_DT2_INTERLEAVING_SHIFT 17 +#define SENINF_CSI2_DI_CTRL_DT2_INTERLEAVING_MASK (0x3 << 17) +#define SENINF_CSI2_DI_CTRL_VC3_INTERLEAVING_SHIFT 24 +#define SENINF_CSI2_DI_CTRL_VC3_INTERLEAVING_MASK BIT(24) +#define SENINF_CSI2_DI_CTRL_DT3_INTERLEAVING_SHIFT 25 +#define SENINF_CSI2_DI_CTRL_DT3_INTERLEAVING_MASK (0x3 << 25) +#define SENINF_CSI2_DETECT_CON1 0x0A4C +#define SENINF_CSI2_DETECT_CON1_DETECT_SYNC_DISABLE_SHIFT 0 +#define SENINF_CSI2_DETECT_CON1_DETECT_SYNC_DISABLE_MASK BIT(0) +#define SENINF_CSI2_DETECT_CON1_DETECT_SYNC_MASK_SHIFT 1 +#define SENINF_CSI2_DETECT_CON1_DETECT_SYNC_MASK_MASK (0x7f << 1) +#define SENINF_CSI2_DETECT_CON1_SYNC_WORD_SHIFT 8 +#define SENINF_CSI2_DETECT_CON1_SYNC_WORD_MASK (0x1fffff << 8) +#define SENINF_CSI2_DETECT_CON2 0x0A50 +#define SENINF_CSI2_DETECT_CON2_DETECT_ESCAPE_DISABLE_SHIFT 0 +#define SENINF_CSI2_DETECT_CON2_DETECT_ESCAPE_DISABLE_MASK BIT(0) +#define SENINF_CSI2_DETECT_CON2_DETECT_ESCAPE_MASK_SHIFT 1 +#define SENINF_CSI2_DETECT_CON2_DETECT_ESCAPE_MASK_MASK (0x7f << 1) +#define SENINF_CSI2_DETECT_CON2_ESCAPE_WORD_SHIFT 8 +#define SENINF_CSI2_DETECT_CON2_ESCAPE_WORD_MASK (0x1fffff << 8) +#define SENINF_CSI2_DETECT_CON3 0x0A54 +#define SENINF_CSI2_DETECT_CON3_DETECT_POST_DISABLE_SHIFT 0 +#define SENINF_CSI2_DETECT_CON3_DETECT_POST_DISABLE_MASK BIT(0) +#define SENINF_CSI2_DETECT_CON3_DETECT_POST_MASK_SHIFT 1 +#define SENINF_CSI2_DETECT_CON3_DETECT_POST_MASK_MASK (0x7f << 1) +#define SENINF_CSI2_DETECT_CON3_POST_WORD_SHIFT 8 +#define SENINF_CSI2_DETECT_CON3_POST_WORD_MASK (0x1fffff << 8) +#define SENINF_CSI2_RLR0_CON0 0x0A58 +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_PATTERN_SEL_SHIFT 0 +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_PATTERN_SEL_MASK (0xff << 0) +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_0_SHIFT 8 +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_0_MASK (0xff << 8) +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_1_SHIFT 16 +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_1_MASK (0xff << 16) +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_2_SHIFT 24 +#define SENINF_CSI2_RLR0_CON0_RLR0_PRBS_SEED_2_MASK (0xff << 24) +#define SENINF_CSI2_RLR1_CON0 0x0A5C +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_PATTERN_SEL_SHIFT 0 +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_PATTERN_SEL_MASK (0xff << 0) +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_0_SHIFT 8 +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_0_MASK (0xff << 8) +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_1_SHIFT 16 +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_1_MASK (0xff << 16) +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_2_SHIFT 24 +#define SENINF_CSI2_RLR1_CON0_RLR1_PRBS_SEED_2_MASK (0xff << 24) +#define SENINF_CSI2_RLR2_CON0 0x0A60 +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_PATTERN_SEL_SHIFT 0 +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_PATTERN_SEL_MASK (0xff << 0) +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_0_SHIFT 8 +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_0_MASK (0xff << 8) +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_1_SHIFT 16 +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_1_MASK (0xff << 16) +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_2_SHIFT 24 +#define SENINF_CSI2_RLR2_CON0_RLR2_PRBS_SEED_2_MASK (0xff << 24) +#define SENINF_CSI2_RLR_CON0 0x0A64 +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_PATTERN_SEL_SHIFT 0 +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_PATTERN_SEL_MASK (0xff << 0) +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_0_SHIFT 8 +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_0_MASK (0xff << 8) +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_1_SHIFT 16 +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_1_MASK (0xff << 16) +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_2_SHIFT 24 +#define SENINF_CSI2_RLR_CON0_RLRN_PRBS_SEED_2_MASK (0xff << 24) +#define SENINF_CSI2_MUX_CON 0x0A68 +#define SENINF_CSI2_MUX_CON_DPHY_RX_EXTERNAL_EN_SHIFT 0 +#define SENINF_CSI2_MUX_CON_DPHY_RX_EXTERNAL_EN_MASK BIT(0) +#define SENINF_CSI2_MUX_CON_CPHY_TX_EXTERNAL_EN_SHIFT 1 +#define SENINF_CSI2_MUX_CON_CPHY_TX_EXTERNAL_EN_MASK BIT(1) +#define SENINF_CSI2_MUX_CON_CPHY_RX_EXTERNAL_EN_SHIFT 2 +#define SENINF_CSI2_MUX_CON_CPHY_RX_EXTERNAL_EN_MASK BIT(2) +#define SENINF_CSI2_MUX_CON_RLR_PATTERN_DELAY_EN_SHIFT 3 +#define SENINF_CSI2_MUX_CON_RLR_PATTERN_DELAY_EN_MASK BIT(3) +#define SENINF_CSI2_MUX_CON_POST_PACKET_IGNORE_EN_SHIFT 4 +#define SENINF_CSI2_MUX_CON_POST_PACKET_IGNORE_EN_MASK BIT(4) +#define SENINF_CSI2_DETECT_DBG0 0x0A6C +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE0_ST_SHIFT 0 +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE0_ST_MASK BIT(0) +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE0_ST_SHIFT 1 +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE0_ST_MASK BIT(1) +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE0_ST_SHIFT 2 +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE0_ST_MASK BIT(2) +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE0_ST_SHIFT 3 +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE0_ST_MASK (0xf << 3) +#define SENINF_CSI2_DETECT_DBG0_POSITION_ESCAPE_LANE0_ST_SHIFT 7 +#define SENINF_CSI2_DETECT_DBG0_POSITION_ESCAPE_LANE0_ST_MASK (0xf << 7) +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE1_ST_SHIFT 12 +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE1_ST_MASK BIT(12) +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE1_ST_SHIFT 13 +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE1_ST_MASK BIT(13) +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE1_ST_SHIFT 14 +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE1_ST_MASK BIT(14) +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE1_ST_SHIFT 15 +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE1_ST_MASK (0xf << 15) +#define SENINF_CSI2_DETECT_DBG0_POSITION_ESCAPE_LANE1_ST_SHIFT 19 +#define SENINF_CSI2_DETECT_DBG0_POSITION_ESCAPE_LANE1_ST_MASK (0xf << 19) +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE2_ST_SHIFT 24 +#define SENINF_CSI2_DETECT_DBG0_DETECT_SYNC_LANE2_ST_MASK BIT(24) +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE2_ST_SHIFT 25 +#define SENINF_CSI2_DETECT_DBG0_DETECT_ESCAPE_LANE2_ST_MASK BIT(25) +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE2_ST_SHIFT 26 +#define SENINF_CSI2_DETECT_DBG0_DETECT_POST_LANE2_ST_MASK BIT(26) +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE2_ST_SHIFT 27 +#define SENINF_CSI2_DETECT_DBG0_POSITION_SYNC_LANE2_ST_MASK (0xf << 27) +#define SENINF_CSI2_DETECT_DBG1 0x0A70 +#define SENINF_CSI2_DETECT_DBG1_POSITION_ESCAPE_LANE2_ST_SHIFT 0 +#define SENINF_CSI2_DETECT_DBG1_POSITION_ESCAPE_LANE2_ST_MASK (0xf << 0) +#define SENINF_CSI2_RESYNC_MERGE_CTL 0x0A74 +#define SENINF_CSI2_RESYNC_MERGE_CTL_CPHY_LANE_RESYNC_CNT_SHIFT 0 +#define SENINF_CSI2_RESYNC_MERGE_CTL_CPHY_LANE_RESYNC_CNT_MASK (0x7 << 0) +#define SENINF_CSI2_RESYNC_MERGE_CTL_LANE_RESYNC_FLUSH_EN_SHIFT 8 +#define SENINF_CSI2_RESYNC_MERGE_CTL_LANE_RESYNC_FLUSH_EN_MASK BIT(8) +#define SENINF_CSI2_RESYNC_MERGE_CTL_LANE_RESYNC_DATAOUT_OPTION_SHIFT 9 +#define SENINF_CSI2_RESYNC_MERGE_CTL_LANE_RESYNC_DATAOUT_OPTION_MASK BIT(9) +#define SENINF_CSI2_RESYNC_MERGE_CTL_BYPASS_LANE_RESYNC_SHIFT 10 +#define SENINF_CSI2_RESYNC_MERGE_CTL_BYPASS_LANE_RESYNC_MASK BIT(10) +#define SENINF_CSI2_RESYNC_MERGE_CTL_CDPHY_SEL_SHIFT 11 +#define SENINF_CSI2_RESYNC_MERGE_CTL_CDPHY_SEL_MASK BIT(11) +#define SENINF_CSI2_CTRL_TRIO_MUX 0x0A78 +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO0_MUX_SHIFT 0 +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO0_MUX_MASK (0x7 << 0) +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO1_MUX_SHIFT 3 +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO1_MUX_MASK (0x7 << 3) +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO2_MUX_SHIFT 6 +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO2_MUX_MASK (0x7 << 6) +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO3_MUX_SHIFT 9 +#define SENINF_CSI2_CTRL_TRIO_MUX_TRIO3_MUX_MASK (0x7 << 9) +#define SENINF_CSI2_CTRL_TRIO_CON 0x0A7C +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO0_LPRX_EN_SHIFT 0 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO0_LPRX_EN_MASK BIT(0) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO0_HSRX_EN_SHIFT 1 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO0_HSRX_EN_MASK BIT(1) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO1_LPRX_EN_SHIFT 2 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO1_LPRX_EN_MASK BIT(2) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO1_HSRX_EN_SHIFT 3 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO1_HSRX_EN_MASK BIT(3) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO2_LPRX_EN_SHIFT 4 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO2_LPRX_EN_MASK BIT(4) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO2_HSRX_EN_SHIFT 5 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO2_HSRX_EN_MASK BIT(5) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO3_LPRX_EN_SHIFT 6 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO3_LPRX_EN_MASK BIT(6) +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO3_HSRX_EN_SHIFT 7 +#define SENINF_CSI2_CTRL_TRIO_CON_TRIO3_HSRX_EN_MASK BIT(7) +#define SENINF_FIX_ADDR_CPHY0_DBG 0x0A80 +#define SENINF_FIX_ADDR_CPHY0_DBG_ERROR_COUNT_CPHY0_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY0_DBG_ERROR_COUNT_CPHY0_MASK (0xff << 16) +#define SENINF_FIX_ADDR_CPHY0_DBG_WORD_COUNT_OVER_FLOAT_CPHY0_SHIFT 24 +#define SENINF_FIX_ADDR_CPHY0_DBG_WORD_COUNT_OVER_FLOAT_CPHY0_MASK BIT(24) +#define SENINF_FIX_ADDR_CPHY1_DBG 0x0A84 +#define SENINF_FIX_ADDR_CPHY1_DBG_ERROR_COUNT_CPHY1_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY1_DBG_ERROR_COUNT_CPHY1_MASK (0xff << 16) +#define SENINF_FIX_ADDR_CPHY1_DBG_WORD_COUNT_OVER_FLOAT_CPHY1_SHIFT 24 +#define SENINF_FIX_ADDR_CPHY1_DBG_WORD_COUNT_OVER_FLOAT_CPHY1_MASK BIT(24) +#define SENINF_FIX_ADDR_CPHY2_DBG 0x0A88 +#define SENINF_FIX_ADDR_CPHY2_DBG_ERROR_COUNT_CPHY2_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY2_DBG_ERROR_COUNT_CPHY2_MASK (0xff << 16) +#define SENINF_FIX_ADDR_CPHY2_DBG_WORD_COUNT_OVER_FLOAT_CPHY2_SHIFT 24 +#define SENINF_FIX_ADDR_CPHY2_DBG_WORD_COUNT_OVER_FLOAT_CPHY2_MASK BIT(24) +#define SENINF_FIX_ADDR_DBG 0x0A8C +#define SENINF_FIX_ADDR_DBG_ERROR_COUNT_SHIFT 16 +#define SENINF_FIX_ADDR_DBG_ERROR_COUNT_MASK (0xff << 16) +#define SENINF_FIX_ADDR_DBG_WORD_COUNT_OVER_FLOAT_SHIFT 24 +#define SENINF_FIX_ADDR_DBG_WORD_COUNT_OVER_FLOAT_MASK BIT(24) +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG0 0x0A90 +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG0_SYMBOL_STREAM0_CPHY0_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG0_SYMBOL_STREAM0_CPHY0_MASK \ +(0xffffffff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG1 0x0A94 +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG1_SYMBOL_STREAM1_CPHY0_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG1_SYMBOL_STREAM1_CPHY0_MASK \ +(0x3ff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG1_SYMBOL_STREAM_VALID_CPHY0_SHIFT 10 +#define SENINF_WIRE_STATE_DECODE_CPHY0_DBG1_SYMBOL_STREAM_VALID_CPHY0_MASK \ +BIT(10) +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG0 0x0A98 +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG0_SYMBOL_STREAM0_CPHY1_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG0_SYMBOL_STREAM0_CPHY1_MASK \ +(0xffffffff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG1 0x0A9C +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG1_SYMBOL_STREAM1_CPHY1_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG1_SYMBOL_STREAM1_CPHY1_MASK \ +(0x3ff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG1_SYMBOL_STREAM_VALID_CPHY1_SHIFT 10 +#define SENINF_WIRE_STATE_DECODE_CPHY1_DBG1_SYMBOL_STREAM_VALID_CPHY1_MASK \ +BIT(10) +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG0 0x0AA0 +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG0_SYMBOL_STREAM0_CPHY2_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG0_SYMBOL_STREAM0_CPHY2_MASK \ +(0xffffffff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG1 0x0AA4 +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG1_SYMBOL_STREAM1_CPHY2_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG1_SYMBOL_STREAM1_CPHY2_MASK \ +(0x3ff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG1_SYMBOL_STREAM_VALID_CPHY2_SHIFT 10 +#define SENINF_WIRE_STATE_DECODE_CPHY2_DBG1_SYMBOL_STREAM_VALID_CPHY2_MASK \ +BIT(10) +#define SENINF_SYNC_RESYNC_CTL 0x0AA8 +#define SENINF_SYNC_RESYNC_CTL_SYNC_DETECTION_SEL_SHIFT 0 +#define SENINF_SYNC_RESYNC_CTL_SYNC_DETECTION_SEL_MASK (0x7 << 0) +#define SENINF_SYNC_RESYNC_CTL_FLUSH_VALID_SHIFT 3 +#define SENINF_SYNC_RESYNC_CTL_FLUSH_VALID_MASK BIT(3) +#define SENINF_POST_DETECT_CTL 0x0AAC +#define SENINF_POST_DETECT_CTL_POST_DETECT_DISABLE_SHIFT 0 +#define SENINF_POST_DETECT_CTL_POST_DETECT_DISABLE_MASK BIT(0) +#define SENINF_POST_DETECT_CTL_POST_EN_SHIFT 1 +#define SENINF_POST_DETECT_CTL_POST_EN_MASK BIT(1) +#define SENINF_WIRE_STATE_DECODE_CONFIG 0x0AB0 +#define SENINF_WIRE_STATE_DECODE_CONFIG_INIT_STATE_DECODE_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CONFIG_INIT_STATE_DECODE_MASK (0x7 << 0) +#define SENINF_CSI2_CPHY_LNRD_FSM 0x0AB4 +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO0_RX_FSM_SHIFT 8 +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO0_RX_FSM_MASK (0x7f << 8) +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO1_RX_FSM_SHIFT 16 +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO1_RX_FSM_MASK (0x7f << 16) +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO2_RX_FSM_SHIFT 24 +#define SENINF_CSI2_CPHY_LNRD_FSM_TRIO2_RX_FSM_MASK (0x7f << 24) +#define SENINF_FIX_ADDR_CPHY0_DBG0 0x0AB8 +#define SENINF_FIX_ADDR_CPHY0_DBG0_WORD_COUNT_CPHY0_DBG0_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY0_DBG0_WORD_COUNT_CPHY0_DBG0_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY0_DBG1 0x0ABC +#define SENINF_FIX_ADDR_CPHY0_DBG1_WORD_COUNT_CPHY0_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY0_DBG1_WORD_COUNT_CPHY0_DBG1_MASK (0xffff << 0) +#define SENINF_FIX_ADDR_CPHY0_DBG1_ERROR_RECORD_CPHY0_DBG0_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY0_DBG1_ERROR_RECORD_CPHY0_DBG0_MASK \ +(0xffff << 16) +#define SENINF_FIX_ADDR_CPHY0_DBG2 0x0AC0 +#define SENINF_FIX_ADDR_CPHY0_DBG2_ERROR_RECORD_CPHY0_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY0_DBG2_ERROR_RECORD_CPHY0_DBG1_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY1_DBG0 0x0AC4 +#define SENINF_FIX_ADDR_CPHY1_DBG0_WORD_COUNT_CPHY1_DBG0_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY1_DBG0_WORD_COUNT_CPHY1_DBG0_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY1_DBG1 0x0AC8 +#define SENINF_FIX_ADDR_CPHY1_DBG1_WORD_COUNT_CPHY1_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY1_DBG1_WORD_COUNT_CPHY1_DBG1_MASK (0xffff << 0) +#define SENINF_FIX_ADDR_CPHY1_DBG1_ERROR_RECORD_CPHY1_DBG0_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY1_DBG1_ERROR_RECORD_CPHY1_DBG0_MASK (0xffff << 16) +#define SENINF_FIX_ADDR_CPHY1_DBG2 0x0ACC +#define SENINF_FIX_ADDR_CPHY1_DBG2_ERROR_RECORD_CPHY1_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY1_DBG2_ERROR_RECORD_CPHY1_DBG1_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY2_DBG0 0x0AD0 +#define SENINF_FIX_ADDR_CPHY2_DBG0_WORD_COUNT_CPHY2_DBG0_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY2_DBG0_WORD_COUNT_CPHY2_DBG0_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY2_DBG1 0x0AD4 +#define SENINF_FIX_ADDR_CPHY2_DBG1_WORD_COUNT_CPHY2_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY2_DBG1_WORD_COUNT_CPHY2_DBG1_MASK \ +(0xffff << 0) +#define SENINF_FIX_ADDR_CPHY2_DBG1_ERROR_RECORD_CPHY2_DBG0_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY2_DBG1_ERROR_RECORD_CPHY2_DBG0_MASK \ +(0xffff << 16) +#define SENINF_FIX_ADDR_CPHY2_DBG2 0x0AD8 +#define SENINF_FIX_ADDR_CPHY2_DBG2_ERROR_RECORD_CPHY2_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY2_DBG2_ERROR_RECORD_CPHY2_DBG1_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_DBG0 0x0ADC +#define SENINF_FIX_ADDR_DBG0_WORD_COUNT_DBG0_SHIFT 0 +#define SENINF_FIX_ADDR_DBG0_WORD_COUNT_DBG0_MASK (0xffffffff << 0) +#define SENINF_FIX_ADDR_DBG1 0x0AE0 +#define SENINF_FIX_ADDR_DBG1_WORD_COUNT_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_DBG1_WORD_COUNT_DBG1_MASK (0xffff << 0) +#define SENINF_FIX_ADDR_DBG1_ERROR_RECORD_DBG0_SHIFT 16 +#define SENINF_FIX_ADDR_DBG1_ERROR_RECORD_DBG0_MASK (0xffff << 16) +#define SENINF_FIX_ADDR_DBG2 0x0AE4 +#define SENINF_FIX_ADDR_DBG2_ERROR_RECORD_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_DBG2_ERROR_RECORD_DBG1_MASK (0xffffffff << 0) +#define SENINF_CSI2_MODE 0x0AE8 +#define SENINF_CSI2_MODE_CSR_CSI2_MODE_SHIFT 0 +#define SENINF_CSI2_MODE_CSR_CSI2_MODE_MASK (0xff << 0) +#define SENINF_CSI2_MODE_CSR_CSI2_HEADER_LEN_SHIFT 8 +#define SENINF_CSI2_MODE_CSR_CSI2_HEADER_LEN_MASK (0x7 << 8) +#define SENINF_CSI2_MODE_CSR_CPHY_DI_POS_SHIFT 16 +#define SENINF_CSI2_MODE_CSR_CPHY_DI_POS_MASK (0xff << 16) +#define SENINF_CSI2_MODE_CSR_CPHY_WC_POS_SHIFT 24 +#define SENINF_CSI2_MODE_CSR_CPHY_WC_POS_MASK (0xff << 24) +#define SENINF_CSI2_DI_EXT 0x0AF0 +#define SENINF_CSI2_DI_EXT_VC4_SHIFT 0 +#define SENINF_CSI2_DI_EXT_VC4_MASK (0x3 << 0) +#define SENINF_CSI2_DI_EXT_DT4_SHIFT 2 +#define SENINF_CSI2_DI_EXT_DT4_MASK (0x3f << 2) +#define SENINF_CSI2_DI_EXT_VC5_SHIFT 8 +#define SENINF_CSI2_DI_EXT_VC5_MASK (0x3 << 8) +#define SENINF_CSI2_DI_EXT_DT5_SHIFT 10 +#define SENINF_CSI2_DI_EXT_DT5_MASK (0x3f << 10) +#define SENINF_CSI2_DI_CTRL_EXT 0x0AF4 +#define SENINF_CSI2_DI_CTRL_EXT_VC4_INTERLEAVING_SHIFT 0 +#define SENINF_CSI2_DI_CTRL_EXT_VC4_INTERLEAVING_MASK BIT(0) +#define SENINF_CSI2_DI_CTRL_EXT_DT4_INTERLEAVING_SHIFT 1 +#define SENINF_CSI2_DI_CTRL_EXT_DT4_INTERLEAVING_MASK (0x3 << 1) +#define SENINF_CSI2_DI_CTRL_EXT_VC5_INTERLEAVING_SHIFT 8 +#define SENINF_CSI2_DI_CTRL_EXT_VC5_INTERLEAVING_MASK BIT(8) +#define SENINF_CSI2_DI_CTRL_EXT_DT5_INTERLEAVING_SHIFT 9 +#define SENINF_CSI2_DI_CTRL_EXT_DT5_INTERLEAVING_MASK (0x3 << 9) +#define SENINF_CSI2_CPHY_LOOPBACK 0x0AF8 +#define SENINF_CSI2_CPHY_LOOPBACK_TRIGGER_SYNC_INIT_SHIFT 0 +#define SENINF_CSI2_CPHY_LOOPBACK_TRIGGER_SYNC_INIT_MASK BIT(0) +#define SENINF_CSI2_CPHY_LOOPBACK_RELEASE_SYNC_INIT_SHIFT 1 +#define SENINF_CSI2_CPHY_LOOPBACK_RELEASE_SYNC_INIT_MASK BIT(1) +#define SENINF_CSI2_PROGSEQ_0 0x0B00 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S0_SHIFT 0 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S0_MASK (0x7 << 0) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S1_SHIFT 4 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S1_MASK (0x7 << 4) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S2_SHIFT 8 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S2_MASK (0x7 << 8) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S3_SHIFT 12 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S3_MASK (0x7 << 12) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S4_SHIFT 16 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S4_MASK (0x7 << 16) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S5_SHIFT 20 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S5_MASK (0x7 << 20) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S6_SHIFT 24 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S6_MASK (0x7 << 24) +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S7_SHIFT 28 +#define SENINF_CSI2_PROGSEQ_0_PROGSEQ_S7_MASK (0x7 << 28) +#define SENINF_CSI2_PROGSEQ_1 0x0B04 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S8_SHIFT 0 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S8_MASK (0x7 << 0) +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S9_SHIFT 4 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S9_MASK (0x7 << 4) +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S10_SHIFT 8 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S10_MASK (0x7 << 8) +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S11_SHIFT 12 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S11_MASK (0x7 << 12) +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S12_SHIFT 16 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S12_MASK (0x7 << 16) +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S13_SHIFT 20 +#define SENINF_CSI2_PROGSEQ_1_PROGSEQ_S13_MASK (0x7 << 20) +#define SENINF_CSI2_INT_EN_EXT 0x0B10 +#define SENINF_CSI2_INT_EN_EXT_DPHY0_RESYNC_FIFO_OVERFLOW_SHIFT 1 +#define SENINF_CSI2_INT_EN_EXT_DPHY0_RESYNC_FIFO_OVERFLOW_MASK BIT(1) +#define SENINF_CSI2_INT_EN_EXT_DPHY1_RESYNC_FIFO_OVERFLOW_SHIFT 2 +#define SENINF_CSI2_INT_EN_EXT_DPHY1_RESYNC_FIFO_OVERFLOW_MASK BIT(2) +#define SENINF_CSI2_INT_EN_EXT_DPHY2_RESYNC_FIFO_OVERFLOW_SHIFT 3 +#define SENINF_CSI2_INT_EN_EXT_DPHY2_RESYNC_FIFO_OVERFLOW_MASK BIT(3) +#define SENINF_CSI2_INT_EN_EXT_DPHY3_RESYNC_FIFO_OVERFLOW_SHIFT 4 +#define SENINF_CSI2_INT_EN_EXT_DPHY3_RESYNC_FIFO_OVERFLOW_MASK BIT(4) +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO0_SHIFT 8 +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO0_MASK BIT(8) +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO1_SHIFT 9 +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO1_MASK BIT(9) +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO2_SHIFT 10 +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO2_MASK BIT(10) +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO3_SHIFT 11 +#define SENINF_CSI2_INT_EN_EXT_ERR_SOT_SYNC_HS_TRIO3_MASK BIT(11) +#define SENINF_CSI2_INT_EN_EXT_INT_WCLR_EN_SHIFT 31 +#define SENINF_CSI2_INT_EN_EXT_INT_WCLR_EN_MASK BIT(31) +#define SENINF_CSI2_INT_STATUS_EXT 0x0B14 +#define SENINF_CSI2_INT_STATUS_EXT_DPHY0_RESYNC_FIFO_OVERFLOW_STA_SHIFT 1 +#define SENINF_CSI2_INT_STATUS_EXT_DPHY0_RESYNC_FIFO_OVERFLOW_STA_MASK \ +BIT(1) +#define SENINF_CSI2_INT_STATUS_EXT_DPHY1_RESYNC_FIFO_OVERFLOW_STA_SHIFT 2 +#define SENINF_CSI2_INT_STATUS_EXT_DPHY1_RESYNC_FIFO_OVERFLOW_STA_MASK \ +BIT(2) +#define SENINF_CSI2_INT_STATUS_EXT_DPHY2_RESYNC_FIFO_OVERFLOW_STA_SHIFT 3 +#define SENINF_CSI2_INT_STATUS_EXT_DPHY2_RESYNC_FIFO_OVERFLOW_STA_MASK \ +BIT(3) +#define SENINF_CSI2_INT_STATUS_EXT_DPHY3_RESYNC_FIFO_OVERFLOW_STA_SHIFT 4 +#define SENINF_CSI2_INT_STATUS_EXT_DPHY3_RESYNC_FIFO_OVERFLOW_STA_MASK \ +BIT(4) +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO0_SHIFT 8 +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO0_MASK BIT(8) +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO1_SHIFT 9 +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO1_MASK BIT(9) +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO2_SHIFT 10 +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO2_MASK BIT(10) +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO3_SHIFT 11 +#define SENINF_CSI2_INT_STATUS_EXT_ERR_SOT_SYNC_HS_TRIO3_MASK BIT(11) +#define SENINF_CSI2_CPHY_FIX_POINT_RST 0x0B18 +#define SENINF_CSI2_CPHY_FIX_POINT_RST_CPHY_FIX_POINT_RST_SHIFT 0 +#define SENINF_CSI2_CPHY_FIX_POINT_RST_CPHY_FIX_POINT_RST_MASK BIT(0) +#define SENINF_CSI2_CPHY_FIX_POINT_RST_CPHY_FIX_POINT_RST_MODE_SHIFT 1 +#define SENINF_CSI2_CPHY_FIX_POINT_RST_CPHY_FIX_POINT_RST_MODE_MASK BIT(1) +#define SENINF_CSI2_RLR3_CON0 0x0B1C +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_PATTERN_SEL_SHIFT 0 +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_PATTERN_SEL_MASK (0xff << 0) +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_0_SHIFT 8 +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_0_MASK (0xff << 8) +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_1_SHIFT 16 +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_1_MASK (0xff << 16) +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_2_SHIFT 24 +#define SENINF_CSI2_RLR3_CON0_RLR3_PRBS_SEED_2_MASK (0xff << 24) +#define SENINF_CSI2_DPHY_SYNC 0x0B20 +#define SENINF_CSI2_DPHY_SYNC_SYNC_SEQ_MASK_0_SHIFT 0 +#define SENINF_CSI2_DPHY_SYNC_SYNC_SEQ_MASK_0_MASK (0xffff << 0) +#define SENINF_CSI2_DPHY_SYNC_SYNC_SEQ_PAT_0_SHIFT 16 +#define SENINF_CSI2_DPHY_SYNC_SYNC_SEQ_PAT_0_MASK (0xffff << 16) +#define SENINF_CSI2_DESKEW_SYNC 0x0B24 +#define SENINF_CSI2_DESKEW_SYNC_SYNC_SEQ_MASK_1_SHIFT 0 +#define SENINF_CSI2_DESKEW_SYNC_SYNC_SEQ_MASK_1_MASK (0xffff << 0) +#define SENINF_CSI2_DESKEW_SYNC_SYNC_SEQ_PAT_1_SHIFT 16 +#define SENINF_CSI2_DESKEW_SYNC_SYNC_SEQ_PAT_1_MASK (0xffff << 16) +#define SENINF_CSI2_DETECT_DBG2 0x0B28 +#define SENINF_CSI2_DETECT_DBG2_DETECT_SYNC_LANE3_ST_SHIFT 0 +#define SENINF_CSI2_DETECT_DBG2_DETECT_SYNC_LANE3_ST_MASK BIT(0) +#define SENINF_CSI2_DETECT_DBG2_DETECT_ESCAPE_LANE3_ST_SHIFT 1 +#define SENINF_CSI2_DETECT_DBG2_DETECT_ESCAPE_LANE3_ST_MASK BIT(1) +#define SENINF_CSI2_DETECT_DBG2_DETECT_POST_LANE3_ST_SHIFT 2 +#define SENINF_CSI2_DETECT_DBG2_DETECT_POST_LANE3_ST_MASK BIT(2) +#define SENINF_CSI2_DETECT_DBG2_POSITION_SYNC_LANE3_ST_SHIFT 3 +#define SENINF_CSI2_DETECT_DBG2_POSITION_SYNC_LANE3_ST_MASK (0xf << 3) +#define SENINF_CSI2_DETECT_DBG2_POSITION_ESCAPE_LANE3_ST_SHIFT 7 +#define SENINF_CSI2_DETECT_DBG2_POSITION_ESCAPE_LANE3_ST_MASK (0xf << 7) +#define SENINF_FIX_ADDR_CPHY3_DBG0 0x0B30 +#define SENINF_FIX_ADDR_CPHY3_DBG0_WORD_COUNT_CPHY3_DBG0_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY3_DBG0_WORD_COUNT_CPHY3_DBG0_MASK \ +(0xffffffff << 0) +#define SENINF_FIX_ADDR_CPHY3_DBG1 0x0B34 +#define SENINF_FIX_ADDR_CPHY3_DBG1_WORD_COUNT_CPHY3_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY3_DBG1_WORD_COUNT_CPHY3_DBG1_MASK \ +(0xffff << 0) +#define SENINF_FIX_ADDR_CPHY3_DBG1_ERROR_RECORD_CPHY3_DBG0_SHIFT 16 +#define SENINF_FIX_ADDR_CPHY3_DBG1_ERROR_RECORD_CPHY3_DBG0_MASK \ +(0xffff << 16) +#define SENINF_FIX_ADDR_CPHY3_DBG2 0x0B38 +#define SENINF_FIX_ADDR_CPHY3_DBG2_ERROR_RECORD_CPHY3_DBG1_SHIFT 0 +#define SENINF_FIX_ADDR_CPHY3_DBG2_ERROR_RECORD_CPHY3_DBG1_MASK \ +(0xffffffff << 0) +#define SENINF_CSI2_DI_EXT_2 0x0B3C +#define SENINF_CSI2_DI_EXT_2_VC6_SHIFT 0 +#define SENINF_CSI2_DI_EXT_2_VC6_MASK (0x3 << 0) +#define SENINF_CSI2_DI_EXT_2_DT6_SHIFT 2 +#define SENINF_CSI2_DI_EXT_2_DT6_MASK (0x3f << 2) +#define SENINF_CSI2_DI_EXT_2_VC7_SHIFT 8 +#define SENINF_CSI2_DI_EXT_2_VC7_MASK (0x3 << 8) +#define SENINF_CSI2_DI_EXT_2_DT7_SHIFT 10 +#define SENINF_CSI2_DI_EXT_2_DT7_MASK (0x3f << 10) +#define SENINF_CSI2_DI_CTRL_EXT_2 0x0B40 +#define SENINF_CSI2_DI_CTRL_EXT_2_VC6_INTERLEAVING_SHIFT 0 +#define SENINF_CSI2_DI_CTRL_EXT_2_VC6_INTERLEAVING_MASK BIT(0) +#define SENINF_CSI2_DI_CTRL_EXT_2_DT6_INTERLEAVING_SHIFT 1 +#define SENINF_CSI2_DI_CTRL_EXT_2_DT6_INTERLEAVING_MASK (0x3 << 1) +#define SENINF_CSI2_DI_CTRL_EXT_2_VC7_INTERLEAVING_SHIFT 8 +#define SENINF_CSI2_DI_CTRL_EXT_2_VC7_INTERLEAVING_MASK BIT(8) +#define SENINF_CSI2_DI_CTRL_EXT_2_DT7_INTERLEAVING_SHIFT 9 +#define SENINF_CSI2_DI_CTRL_EXT_2_DT7_INTERLEAVING_MASK (0x3 << 9) +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG0 0x0B44 +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG0_SYMBOL_STREAM0_CPHY3_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG0_SYMBOL_STREAM0_CPHY3_MASK \ +(0xffffffff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG1 0x0B48 +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG1_SYMBOL_STREAM1_CPHY3_SHIFT 0 +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG1_SYMBOL_STREAM1_CPHY3_MASK \ +(0x3ff << 0) +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG1_SYMBOL_STREAM_VALID_CPHY3_SHIFT 10 +#define SENINF_WIRE_STATE_DECODE_CPHY3_DBG1_SYMBOL_STREAM_VALID_CPHY3_MASK \ +BIT(10) +#define SENINF_MUX_CTRL 0x0D00 +#define SENINF_MUX_CTRL_SENINF_MUX_SW_RST_SHIFT 0 +#define SENINF_MUX_CTRL_SENINF_MUX_SW_RST_MASK BIT(0) +#define SENINF_MUX_CTRL_SENINF_IRQ_SW_RST_SHIFT 1 +#define SENINF_MUX_CTRL_SENINF_IRQ_SW_RST_MASK BIT(1) +#define SENINF_MUX_CTRL_SENINF_MUX_RDY_MODE_SHIFT 4 +#define SENINF_MUX_CTRL_SENINF_MUX_RDY_MODE_MASK BIT(4) +#define SENINF_MUX_CTRL_SENINF_MUX_RDY_VALUE_SHIFT 5 +#define SENINF_MUX_CTRL_SENINF_MUX_RDY_VALUE_MASK BIT(5) +#define SENINF_MUX_CTRL_SENINF_HSYNC_MASK_SHIFT 7 +#define SENINF_MUX_CTRL_SENINF_HSYNC_MASK_MASK BIT(7) +#define SENINF_MUX_CTRL_SENINF_PIX_SEL_SHIFT 8 +#define SENINF_MUX_CTRL_SENINF_PIX_SEL_MASK BIT(8) +#define SENINF_MUX_CTRL_SENINF_VSYNC_POL_SHIFT 9 +#define SENINF_MUX_CTRL_SENINF_VSYNC_POL_MASK BIT(9) +#define SENINF_MUX_CTRL_SENINF_HSYNC_POL_SHIFT 10 +#define SENINF_MUX_CTRL_SENINF_HSYNC_POL_MASK BIT(10) +#define SENINF_MUX_CTRL_OVERRUN_RST_EN_SHIFT 11 +#define SENINF_MUX_CTRL_OVERRUN_RST_EN_MASK BIT(11) +#define SENINF_MUX_CTRL_SENINF_SRC_SEL_SHIFT 12 +#define SENINF_MUX_CTRL_SENINF_SRC_SEL_MASK (0xf << 12) +#define SENINF_MUX_CTRL_FIFO_PUSH_EN_SHIFT 16 +#define SENINF_MUX_CTRL_FIFO_PUSH_EN_MASK (0x3f << 16) +#define SENINF_MUX_CTRL_FIFO_FLUSH_EN_SHIFT 22 +#define SENINF_MUX_CTRL_FIFO_FLUSH_EN_MASK (0x3f << 22) +#define SENINF_MUX_CTRL_FIFO_FULL_WR_EN_SHIFT 28 +#define SENINF_MUX_CTRL_FIFO_FULL_WR_EN_MASK (0x3 << 28) +#define SENINF_MUX_CTRL_CROP_EN_SHIFT 30 +#define SENINF_MUX_CTRL_CROP_EN_MASK BIT(30) +#define SENINF_MUX_CTRL_SENINF_MUX_EN_SHIFT 31 +#define SENINF_MUX_CTRL_SENINF_MUX_EN_MASK BIT(31) +#define SENINF_MUX_INTEN 0x0D04 +#define SENINF_MUX_INTEN_SENINF_OVERRUN_IRQ_EN_SHIFT 0 +#define SENINF_MUX_INTEN_SENINF_OVERRUN_IRQ_EN_MASK BIT(0) +#define SENINF_MUX_INTEN_SENINF_CRCERR_IRQ_EN_SHIFT 1 +#define SENINF_MUX_INTEN_SENINF_CRCERR_IRQ_EN_MASK BIT(1) +#define SENINF_MUX_INTEN_SENINF_FSMERR_IRQ_EN_SHIFT 2 +#define SENINF_MUX_INTEN_SENINF_FSMERR_IRQ_EN_MASK BIT(2) +#define SENINF_MUX_INTEN_SENINF_VSIZEERR_IRQ_EN_SHIFT 3 +#define SENINF_MUX_INTEN_SENINF_VSIZEERR_IRQ_EN_MASK BIT(3) +#define SENINF_MUX_INTEN_SENINF_HSIZEERR_IRQ_EN_SHIFT 4 +#define SENINF_MUX_INTEN_SENINF_HSIZEERR_IRQ_EN_MASK BIT(4) +#define SENINF_MUX_INTEN_SENINF_SENSOR_VSIZEERR_IRQ_EN_SHIFT 5 +#define SENINF_MUX_INTEN_SENINF_SENSOR_VSIZEERR_IRQ_EN_MASK BIT(5) +#define SENINF_MUX_INTEN_SENINF_SENSOR_HSIZEERR_IRQ_EN_SHIFT 6 +#define SENINF_MUX_INTEN_SENINF_SENSOR_HSIZEERR_IRQ_EN_MASK BIT(6) +#define SENINF_MUX_INTEN_SENINF_IRQ_CLR_SEL_SHIFT 31 +#define SENINF_MUX_INTEN_SENINF_IRQ_CLR_SEL_MASK BIT(31) +#define SENINF_MUX_INTSTA 0x0D08 +#define SENINF_MUX_INTSTA_SENINF_OVERRUN_IRQ_STA_SHIFT 0 +#define SENINF_MUX_INTSTA_SENINF_OVERRUN_IRQ_STA_MASK BIT(0) +#define SENINF_MUX_INTSTA_SENINF_CRCERR_IRQ_STA_SHIFT 1 +#define SENINF_MUX_INTSTA_SENINF_CRCERR_IRQ_STA_MASK BIT(1) +#define SENINF_MUX_INTSTA_SENINF_FSMERR_IRQ_STA_SHIFT 2 +#define SENINF_MUX_INTSTA_SENINF_FSMERR_IRQ_STA_MASK BIT(2) +#define SENINF_MUX_INTSTA_SENINF_VSIZEERR_IRQ_STA_SHIFT 3 +#define SENINF_MUX_INTSTA_SENINF_VSIZEERR_IRQ_STA_MASK BIT(3) +#define SENINF_MUX_INTSTA_SENINF_HSIZEERR_IRQ_STA_SHIFT 4 +#define SENINF_MUX_INTSTA_SENINF_HSIZEERR_IRQ_STA_MASK BIT(4) +#define SENINF_MUX_INTSTA_SENINF_SENSOR_VSIZEERR_IRQ_STA_SHIFT 5 +#define SENINF_MUX_INTSTA_SENINF_SENSOR_VSIZEERR_IRQ_STA_MASK BIT(5) +#define SENINF_MUX_INTSTA_SENINF_SENSOR_HSIZEERR_IRQ_STA_SHIFT 6 +#define SENINF_MUX_INTSTA_SENINF_SENSOR_HSIZEERR_IRQ_STA_MASK BIT(6) +#define SENINF_MUX_SIZE 0x0D0C +#define SENINF_MUX_SIZE_SENINF_VSIZE_SHIFT 0 +#define SENINF_MUX_SIZE_SENINF_VSIZE_MASK (0xffff << 0) +#define SENINF_MUX_SIZE_SENINF_HSIZE_SHIFT 16 +#define SENINF_MUX_SIZE_SENINF_HSIZE_MASK (0xffff << 16) +#define SENINF_MUX_DEBUG_1 0x0D10 +#define SENINF_MUX_DEBUG_1_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_1_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_2 0x0D14 +#define SENINF_MUX_DEBUG_2_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_2_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_3 0x0D18 +#define SENINF_MUX_DEBUG_3_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_3_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_4 0x0D1C +#define SENINF_MUX_DEBUG_4_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_4_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_5 0x0D20 +#define SENINF_MUX_DEBUG_5_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_5_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_6 0x0D24 +#define SENINF_MUX_DEBUG_6_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_6_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_DEBUG_7 0x0D28 +#define SENINF_MUX_DEBUG_7_DEBUG_INFO_SHIFT 0 +#define SENINF_MUX_DEBUG_7_DEBUG_INFO_MASK (0xffffffff << 0) +#define SENINF_MUX_SPARE 0x0D2C +#define SENINF_MUX_SPARE_SENINF_CRC_SEL_SHIFT 9 +#define SENINF_MUX_SPARE_SENINF_CRC_SEL_MASK (0x3 << 9) +#define SENINF_MUX_SPARE_SENINF_VCNT_SEL_SHIFT 11 +#define SENINF_MUX_SPARE_SENINF_VCNT_SEL_MASK (0x3 << 11) +#define SENINF_MUX_SPARE_SENINF_FIFO_FULL_SEL_SHIFT 13 +#define SENINF_MUX_SPARE_SENINF_FIFO_FULL_SEL_MASK BIT(13) +#define SENINF_MUX_SPARE_SENINF_SPARE_SHIFT 14 +#define SENINF_MUX_SPARE_SENINF_SPARE_MASK (0x3f << 14) +#define SENINF_MUX_DATA 0x0D30 +#define SENINF_MUX_DATA_SENINF_DATA0_SHIFT 0 +#define SENINF_MUX_DATA_SENINF_DATA0_MASK (0xffff << 0) +#define SENINF_MUX_DATA_SENINF_DATA1_SHIFT 16 +#define SENINF_MUX_DATA_SENINF_DATA1_MASK (0xffff << 16) +#define SENINF_MUX_DATA_CNT 0x0D34 +#define SENINF_MUX_DATA_CNT_SENINF_DATA_CNT_SHIFT 0 +#define SENINF_MUX_DATA_CNT_SENINF_DATA_CNT_MASK (0xffffffff << 0) +#define SENINF_MUX_CROP 0x0D38 +#define SENINF_MUX_CROP_SENINF_CROP_X1_SHIFT 0 +#define SENINF_MUX_CROP_SENINF_CROP_X1_MASK (0xffff << 0) +#define SENINF_MUX_CROP_SENINF_CROP_X2_SHIFT 16 +#define SENINF_MUX_CROP_SENINF_CROP_X2_MASK (0xffff << 16) +#define SENINF_MUX_CTRL_EXT 0x0D3C +#define SENINF_MUX_CTRL_EXT_SENINF_SRC_SEL_EXT_SHIFT 0 +#define SENINF_MUX_CTRL_EXT_SENINF_SRC_SEL_EXT_MASK (0x3 << 0) +#define SENINF_MUX_CTRL_EXT_SENINF_PIX_SEL_EXT_SHIFT 4 +#define SENINF_MUX_CTRL_EXT_SENINF_PIX_SEL_EXT_MASK BIT(4) +#define SENINF_N3D_B_CTL 0x1100 +#define SENINF_N3D_B_CTL_MODE_SHIFT 0 +#define SENINF_N3D_B_CTL_MODE_MASK (0x3 << 0) +#define SENINF_N3D_B_CTL_I2C1_EN_SHIFT 2 +#define SENINF_N3D_B_CTL_I2C1_EN_MASK BIT(2) +#define SENINF_N3D_B_CTL_I2C2_EN_SHIFT 3 +#define SENINF_N3D_B_CTL_I2C2_EN_MASK BIT(3) +#define SENINF_N3D_B_CTL_I2C1_INT_EN_SHIFT 4 +#define SENINF_N3D_B_CTL_I2C1_INT_EN_MASK BIT(4) +#define SENINF_N3D_B_CTL_I2C2_INT_EN_SHIFT 5 +#define SENINF_N3D_B_CTL_I2C2_INT_EN_MASK BIT(5) +#define SENINF_N3D_B_CTL_N3D_EN_SHIFT 6 +#define SENINF_N3D_B_CTL_N3D_EN_MASK BIT(6) +#define SENINF_N3D_B_CTL_W1CLR_SHIFT 7 +#define SENINF_N3D_B_CTL_W1CLR_MASK BIT(7) +#define SENINF_N3D_B_CTL_DIFF_EN_SHIFT 8 +#define SENINF_N3D_B_CTL_DIFF_EN_MASK BIT(8) +#define SENINF_N3D_B_CTL_DDBG_SEL_SHIFT 9 +#define SENINF_N3D_B_CTL_DDBG_SEL_MASK (0x7 << 9) +#define SENINF_N3D_B_CTL_MODE1_DBG_SHIFT 12 +#define SENINF_N3D_B_CTL_MODE1_DBG_MASK BIT(12) +#define SENINF_N3D_B_CTL_SEN1_TIM_EN_SHIFT 16 +#define SENINF_N3D_B_CTL_SEN1_TIM_EN_MASK BIT(16) +#define SENINF_N3D_B_CTL_SEN2_TIM_EN_SHIFT 17 +#define SENINF_N3D_B_CTL_SEN2_TIM_EN_MASK BIT(17) +#define SENINF_N3D_B_CTL_SEN1_OV_VS_INT_EN_SHIFT 18 +#define SENINF_N3D_B_CTL_SEN1_OV_VS_INT_EN_MASK BIT(18) +#define SENINF_N3D_B_CTL_SEN2_OV_VS_INT_EN_SHIFT 19 +#define SENINF_N3D_B_CTL_SEN2_OV_VS_INT_EN_MASK BIT(19) +#define SENINF_N3D_B_CTL_HW_SYNC_MODE_SHIFT 20 +#define SENINF_N3D_B_CTL_HW_SYNC_MODE_MASK BIT(20) +#define SENINF_N3D_B_CTL_VALID_TG_EN_SHIFT 21 +#define SENINF_N3D_B_CTL_VALID_TG_EN_MASK BIT(21) +#define SENINF_N3D_B_CTL_SYNC_PIN_A_EN_SHIFT 22 +#define SENINF_N3D_B_CTL_SYNC_PIN_A_EN_MASK BIT(22) +#define SENINF_N3D_B_CTL_SYNC_PIN_A_POLARITY_SHIFT 23 +#define SENINF_N3D_B_CTL_SYNC_PIN_A_POLARITY_MASK BIT(23) +#define SENINF_N3D_B_CTL_SYNC_PIN_B_EN_SHIFT 24 +#define SENINF_N3D_B_CTL_SYNC_PIN_B_EN_MASK BIT(24) +#define SENINF_N3D_B_CTL_SYNC_PIN_B_POLARITY_SHIFT 25 +#define SENINF_N3D_B_CTL_SYNC_PIN_B_POLARITY_MASK BIT(25) +#define SENINF_N3D_B_POS 0x1104 +#define SENINF_N3D_B_POS_N3D_POS_SHIFT 0 +#define SENINF_N3D_B_POS_N3D_POS_MASK (0xffffffff << 0) +#define SENINF_N3D_B_TRIG 0x1108 +#define SENINF_N3D_B_TRIG_I2CA_TRIG_SHIFT 0 +#define SENINF_N3D_B_TRIG_I2CA_TRIG_MASK BIT(0) +#define SENINF_N3D_B_TRIG_I2CB_TRIG_SHIFT 1 +#define SENINF_N3D_B_TRIG_I2CB_TRIG_MASK BIT(1) +#define SENINF_N3D_B_INT 0x110C +#define SENINF_N3D_B_INT_I2C1_INT_SHIFT 0 +#define SENINF_N3D_B_INT_I2C1_INT_MASK BIT(0) +#define SENINF_N3D_B_INT_I2C2_INT_SHIFT 1 +#define SENINF_N3D_B_INT_I2C2_INT_MASK BIT(1) +#define SENINF_N3D_B_INT_DIFF_INT_SHIFT 2 +#define SENINF_N3D_B_INT_DIFF_INT_MASK BIT(2) +#define SENINF_N3D_B_INT_SEN1_OV_VS_INT_SHIFT 4 +#define SENINF_N3D_B_INT_SEN1_OV_VS_INT_MASK BIT(4) +#define SENINF_N3D_B_INT_SEN2_OV_VS_INT_SHIFT 5 +#define SENINF_N3D_B_INT_SEN2_OV_VS_INT_MASK BIT(5) +#define SENINF_N3D_B_CNT0 0x1110 +#define SENINF_N3D_B_CNT0_N3D_CNT0_SHIFT 0 +#define SENINF_N3D_B_CNT0_N3D_CNT0_MASK (0xffffffff << 0) +#define SENINF_N3D_B_CNT1 0x1114 +#define SENINF_N3D_B_CNT1_N3D_CNT1_SHIFT 0 +#define SENINF_N3D_B_CNT1_N3D_CNT1_MASK (0xffffffff << 0) +#define SENINF_N3D_B_DBG 0x1118 +#define SENINF_N3D_B_DBG_N3D_DBG_SHIFT 0 +#define SENINF_N3D_B_DBG_N3D_DBG_MASK (0xffffffff << 0) +#define SENINF_N3D_B_DIFF_THR 0x111C +#define SENINF_N3D_B_DIFF_THR_N3D_DIFF_THR_SHIFT 0 +#define SENINF_N3D_B_DIFF_THR_N3D_DIFF_THR_MASK (0xffffffff << 0) +#define SENINF_N3D_B_DIFF_CNT 0x1120 +#define SENINF_N3D_B_DIFF_CNT_N3D_DIFF_CNT_SHIFT 0 +#define SENINF_N3D_B_DIFF_CNT_N3D_DIFF_CNT_MASK (0xffffffff << 0) +#define SENINF_N3D_B_DBG_1 0x1124 +#define SENINF_N3D_B_DBG_1_N3D_DBG_1_SHIFT 0 +#define SENINF_N3D_B_DBG_1_N3D_DBG_1_MASK (0xffffffff << 0) +#define SENINF_N3D_B_VALID_TG_CNT 0x1128 +#define SENINF_N3D_B_VALID_TG_CNT_N3D_VALID_TG_CNT_SHIFT 0 +#define SENINF_N3D_B_VALID_TG_CNT_N3D_VALID_TG_CNT_MASK (0xffffffff << 0) +#define SENINF_N3D_B_SYNC_A_PERIOD 0x112C +#define SENINF_N3D_B_SYNC_A_PERIOD_N3D_SYNC_A_PERIOD_SHIFT 0 +#define SENINF_N3D_B_SYNC_A_PERIOD_N3D_SYNC_A_PERIOD_MASK (0xffffffff << 0) +#define SENINF_N3D_B_SYNC_B_PERIOD 0x1130 +#define SENINF_N3D_B_SYNC_B_PERIOD_N3D_SYNC_B_PERIOD_SHIFT 0 +#define SENINF_N3D_B_SYNC_B_PERIOD_N3D_SYNC_B_PERIOD_MASK (0xffffffff << 0) +#define SENINF_N3D_B_SYNC_A_PULSE_LEN 0x1134 +#define SENINF_N3D_B_SYNC_A_PULSE_LEN_N3D_SYNC_A_PULSE_LEN_SHIFT 0 +#define SENINF_N3D_B_SYNC_A_PULSE_LEN_N3D_SYNC_A_PULSE_LEN_MASK \ +(0xffffffff << 0) +#define SENINF_N3D_B_SYNC_B_PULSE_LEN 0x1138 +#define SENINF_N3D_B_SYNC_B_PULSE_LEN_N3D_SYNC_B_PULSE_LEN_SHIFT 0 +#define SENINF_N3D_B_SYNC_B_PULSE_LEN_N3D_SYNC_B_PULSE_LEN_MASK \ +(0xffffffff << 0) +#define SENINF_N3D_B_SUB_CNT 0x113C +#define SENINF_N3D_B_SUB_CNT_VS1_SUB_CNT_SHIFT 0 +#define SENINF_N3D_B_SUB_CNT_VS1_SUB_CNT_MASK (0x3f << 0) +#define SENINF_N3D_B_SUB_CNT_VS1_SUB_CNT_EN_SHIFT 6 +#define SENINF_N3D_B_SUB_CNT_VS1_SUB_CNT_EN_MASK BIT(6) +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_A_RESET_SEL_SHIFT 7 +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_A_RESET_SEL_MASK BIT(7) +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_B_RESET_SEL_SHIFT 8 +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_B_RESET_SEL_MASK BIT(8) +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_A_RESET_SEL_EN_SHIFT 9 +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_A_RESET_SEL_EN_MASK BIT(9) +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_B_RESET_SEL_EN_SHIFT 10 +#define SENINF_N3D_B_SUB_CNT_SYNC_PIN_B_RESET_SEL_EN_MASK BIT(10) +#define SENINF_N3D_B_SUB_CNT_VS2_SUB_CNT_SHIFT 16 +#define SENINF_N3D_B_SUB_CNT_VS2_SUB_CNT_MASK (0x3f << 16) +#define SENINF_N3D_B_SUB_CNT_VS2_SUB_CNT_EN_SHIFT 22 +#define SENINF_N3D_B_SUB_CNT_VS2_SUB_CNT_EN_MASK BIT(22) +#define SENINF_N3D_B_VSYNC_CNT 0x1140 +#define SENINF_N3D_B_VSYNC_CNT_N3D_VSYNC_1_CNT_SHIFT 0 +#define SENINF_N3D_B_VSYNC_CNT_N3D_VSYNC_1_CNT_MASK (0xffff << 0) + +#endif diff --git a/drivers/media/platform/mtk-isp/seninf/mtk_seninf_rx_reg.h b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_rx_reg.h new file mode 100644 index 000000000000..eb6f239e686d --- /dev/null +++ b/drivers/media/platform/mtk-isp/seninf/mtk_seninf_rx_reg.h @@ -0,0 +1,515 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __SENINF_RX_REG_H__ +#define __SENINF_RX_REG_H__ + +#define MIPI_RX_ANA00_CSI0A 0x0000 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_CPHY_EN_SHIFT 0 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_CPHY_EN_MASK BIT(0) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_EQ_PROTECT_EN_SHIFT 1 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_EQ_PROTECT_EN_MASK BIT(1) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_BG_LPF_EN_SHIFT 2 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_BG_LPF_EN_MASK BIT(2) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_BG_CORE_EN_SHIFT 3 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_BG_CORE_EN_MASK BIT(3) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L0_CKMODE_EN_SHIFT 5 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L0_CKMODE_EN_MASK BIT(5) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L0_CKSEL_SHIFT 6 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L0_CKSEL_MASK BIT(6) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L1_CKMODE_EN_SHIFT 8 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L1_CKMODE_EN_MASK BIT(8) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L1_CKSEL_SHIFT 9 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L1_CKSEL_MASK BIT(9) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L2_CKMODE_EN_SHIFT 11 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L2_CKMODE_EN_MASK BIT(11) +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L2_CKSEL_SHIFT 12 +#define MIPI_RX_ANA00_CSI0A_RG_CSI0A_DPHY_L2_CKSEL_MASK BIT(12) +#define MIPI_RX_ANA04_CSI0A 0x0004 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_LPRX_VTH_SEL_SHIFT 0 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_LPRX_VTH_SEL_MASK (0x7 << 0) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_LPRX_VTL_SEL_SHIFT 4 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_LPRX_VTL_SEL_MASK (0x7 << 4) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_HSDET_VTH_SEL_SHIFT 8 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_HSDET_VTH_SEL_MASK (0x7 << 8) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_HSDET_VTL_SEL_SHIFT 12 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_HSDET_VTL_SEL_MASK (0x7 << 12) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_VREF_SEL_SHIFT 16 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_VREF_SEL_MASK (0xf << 16) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_MON_VREF_SEL_SHIFT 24 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_BG_MON_VREF_SEL_MASK (0xf << 24) +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_FORCE_HSRT_EN_SHIFT 28 +#define MIPI_RX_ANA04_CSI0A_RG_CSI0A_FORCE_HSRT_EN_MASK BIT(28) +#define MIPI_RX_ANA08_CSI0A 0x0008 +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L0P_T0A_HSRT_CODE_SHIFT 0 +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L0P_T0A_HSRT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L0N_T0B_HSRT_CODE_SHIFT 8 +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L0N_T0B_HSRT_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L1P_T0C_HSRT_CODE_SHIFT 16 +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L1P_T0C_HSRT_CODE_MASK (0x1f << 16) +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L1N_T1A_HSRT_CODE_SHIFT 24 +#define MIPI_RX_ANA08_CSI0A_RG_CSI0A_L1N_T1A_HSRT_CODE_MASK (0x1f << 24) +#define MIPI_RX_ANA0C_CSI0A 0x000C +#define MIPI_RX_ANA0C_CSI0A_RG_CSI0A_L2P_T1B_HSRT_CODE_SHIFT 0 +#define MIPI_RX_ANA0C_CSI0A_RG_CSI0A_L2P_T1B_HSRT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA0C_CSI0A_RG_CSI0A_L2N_T1C_HSRT_CODE_SHIFT 8 +#define MIPI_RX_ANA0C_CSI0A_RG_CSI0A_L2N_T1C_HSRT_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA10_CSI0A 0x0010 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_DELAYCAL_EN_SHIFT 0 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_DELAYCAL_EN_MASK BIT(0) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_DELAYCAL_RSTB_SHIFT 1 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_DELAYCAL_RSTB_MASK BIT(1) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_VREF_SEL_SHIFT 2 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L0_VREF_SEL_MASK (0x3f << 2) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_DELAYCAL_EN_SHIFT 8 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_DELAYCAL_EN_MASK BIT(8) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_DELAYCAL_RSTB_SHIFT 9 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_DELAYCAL_RSTB_MASK BIT(9) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_VREF_SEL_SHIFT 10 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L1_VREF_SEL_MASK (0x3f << 10) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_DELAYCAL_EN_SHIFT 16 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_DELAYCAL_EN_MASK BIT(16) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_DELAYCAL_RSTB_SHIFT 17 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_DELAYCAL_RSTB_MASK BIT(17) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_VREF_SEL_SHIFT 18 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_DPHY_L2_VREF_SEL_MASK (0x3f << 18) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_CDR_DELAYCAL_EN_SHIFT 24 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_CDR_DELAYCAL_EN_MASK BIT(24) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_CDR_DELAYCAL_RSTB_SHIFT 25 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_CDR_DELAYCAL_RSTB_MASK BIT(25) +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_VREF_SEL_SHIFT 26 +#define MIPI_RX_ANA10_CSI0A_RG_CSI0A_CPHY_T0_VREF_SEL_MASK (0x3f << 26) +#define MIPI_RX_ANA14_CSI0A 0x0014 +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_CDR_DELAYCAL_EN_SHIFT 0 +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_CDR_DELAYCAL_EN_MASK BIT(0) +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_CDR_DELAYCAL_RSTB_SHIFT 1 +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_CDR_DELAYCAL_RSTB_MASK BIT(1) +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_VREF_SEL_SHIFT 2 +#define MIPI_RX_ANA14_CSI0A_RG_CSI0A_CPHY_T1_VREF_SEL_MASK (0x3f << 2) +#define MIPI_RX_ANA18_CSI0A 0x0018 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_OS_CAL_EN_SHIFT 0 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_OS_CAL_EN_MASK BIT(0) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_MON_EN_SHIFT 1 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_MON_EN_MASK BIT(1) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SCA_SHIFT 2 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SCA_MASK BIT(2) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SCB_SHIFT 3 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SCB_MASK BIT(3) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_IS_SHIFT 4 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_IS_MASK (0x3 << 4) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_BW_SHIFT 6 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_BW_MASK (0x3 << 6) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SRA_SHIFT 8 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SRA_MASK (0xf << 8) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SRB_SHIFT 12 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_L0_T0AB_EQ_SRB_MASK (0xf << 12) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_OS_CAL_EN_SHIFT 16 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_OS_CAL_EN_MASK BIT(16) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_MON_EN_SHIFT 17 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_MON_EN_MASK BIT(17) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SCA_SHIFT 18 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SCA_MASK BIT(18) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SCB_SHIFT 19 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SCB_MASK BIT(19) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_IS_SHIFT 20 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_IS_MASK (0x3 << 20) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_BW_SHIFT 22 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_BW_MASK (0x3 << 22) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SRA_SHIFT 24 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SRA_MASK (0xf << 24) +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SRB_SHIFT 28 +#define MIPI_RX_ANA18_CSI0A_RG_CSI0A_XX_T0CA_EQ_SRB_MASK (0xf << 28) +#define MIPI_RX_ANA1C_CSI0A 0x001C +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_OS_CAL_EN_SHIFT 0 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_OS_CAL_EN_MASK BIT(0) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_MON_EN_SHIFT 1 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_MON_EN_MASK BIT(1) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SCA_SHIFT 2 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SCA_MASK BIT(2) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SCB_SHIFT 3 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SCB_MASK BIT(3) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_IS_SHIFT 4 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_IS_MASK (0x3 << 4) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_BW_SHIFT 6 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_BW_MASK (0x3 << 6) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SRA_SHIFT 8 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SRA_MASK (0xf << 8) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SRB_SHIFT 12 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_XX_T0BC_EQ_SRB_MASK (0xf << 12) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_OS_CAL_EN_SHIFT 16 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_OS_CAL_EN_MASK BIT(16) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_MON_EN_SHIFT 17 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_MON_EN_MASK BIT(17) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SCA_SHIFT 18 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SCA_MASK BIT(18) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SCB_SHIFT 19 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SCB_MASK BIT(19) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_IS_SHIFT 20 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_IS_MASK (0x3 << 20) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_BW_SHIFT 22 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_BW_MASK (0x3 << 22) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SRA_SHIFT 24 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SRA_MASK (0xf << 24) +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SRB_SHIFT 28 +#define MIPI_RX_ANA1C_CSI0A_RG_CSI0A_L1_T1AB_EQ_SRB_MASK (0xf << 28) +#define MIPI_RX_ANA20_CSI0A 0x0020 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_OS_CAL_EN_SHIFT 0 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_OS_CAL_EN_MASK BIT(0) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_MON_EN_SHIFT 1 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_MON_EN_MASK BIT(1) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SCA_SHIFT 2 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SCA_MASK BIT(2) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SCB_SHIFT 3 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SCB_MASK BIT(3) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_IS_SHIFT 4 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_IS_MASK (0x3 << 4) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_BW_SHIFT 6 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_BW_MASK (0x3 << 6) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SRA_SHIFT 8 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SRA_MASK (0xf << 8) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SRB_SHIFT 12 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_XX_T1CA_EQ_SRB_MASK (0xf << 12) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_OS_CAL_EN_SHIFT 16 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_OS_CAL_EN_MASK BIT(16) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_MON_EN_SHIFT 17 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_MON_EN_MASK BIT(17) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SCA_SHIFT 18 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SCA_MASK BIT(18) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SCB_SHIFT 19 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SCB_MASK BIT(19) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_IS_SHIFT 20 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_IS_MASK (0x3 << 20) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_BW_SHIFT 22 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_BW_MASK (0x3 << 22) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SRA_SHIFT 24 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SRA_MASK (0xf << 24) +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SRB_SHIFT 28 +#define MIPI_RX_ANA20_CSI0A_RG_CSI0A_L2_T1BC_EQ_SRB_MASK (0xf << 28) +#define MIPI_RX_ANA24_CSI0A 0x0024 +#define MIPI_RX_ANA24_CSI0A_RG_CSI0A_RESERVE_SHIFT 24 +#define MIPI_RX_ANA24_CSI0A_RG_CSI0A_RESERVE_MASK (0xff << 24) +#define MIPI_RX_ANA28_CSI0A 0x0028 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_DIRECT_EN_SHIFT 0 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_DIRECT_EN_MASK BIT(0) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_AUTOLOAD_EN_SHIFT 1 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_AUTOLOAD_EN_MASK BIT(1) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_LPF_CTRL_SHIFT 2 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_LPF_CTRL_MASK (0x3 << 2) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_AB_WIDTH_SHIFT 4 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_AB_WIDTH_MASK (0xf << 4) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_BC_WIDTH_SHIFT 8 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_BC_WIDTH_MASK (0xf << 8) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_CA_WIDTH_SHIFT 12 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_CA_WIDTH_MASK (0xf << 12) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_CK_DELAY_SHIFT 16 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_CK_DELAY_MASK (0xf << 16) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_HSDET_SEL_SHIFT 20 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_HSDET_SEL_MASK (0x3 << 20) +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_MANUAL_EN_SHIFT 24 +#define MIPI_RX_ANA28_CSI0A_RG_CSI0A_CPHY_T0_CDR_MANUAL_EN_MASK BIT(24) +#define MIPI_RX_ANA2C_CSI0A 0x002C +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_INIT_CODE_SHIFT 0 +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_INIT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_EARLY_CODE_SHIFT 8 +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_EARLY_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_LATE_CODE_SHIFT 16 +#define MIPI_RX_ANA2C_CSI0A_RG_CSI0A_CPHY_T0_CDR_LATE_CODE_MASK (0x1f << 16) +#define MIPI_RX_ANA34_CSI0A 0x0034 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_DIRECT_EN_SHIFT 0 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_DIRECT_EN_MASK BIT(0) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_AUTOLOAD_EN_SHIFT 1 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_AUTOLOAD_EN_MASK BIT(1) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_LPF_CTRL_SHIFT 2 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_LPF_CTRL_MASK (0x3 << 2) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_AB_WIDTH_SHIFT 4 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_AB_WIDTH_MASK (0xf << 4) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_BC_WIDTH_SHIFT 8 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_BC_WIDTH_MASK (0xf << 8) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_CA_WIDTH_SHIFT 12 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_CA_WIDTH_MASK (0xf << 12) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_CK_DELAY_SHIFT 16 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_CK_DELAY_MASK (0xf << 16) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_HSDET_SEL_SHIFT 20 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_HSDET_SEL_MASK (0x3 << 20) +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_MANUAL_EN_SHIFT 24 +#define MIPI_RX_ANA34_CSI0A_RG_CSI0A_CPHY_T1_CDR_MANUAL_EN_MASK BIT(24) +#define MIPI_RX_ANA38_CSI0A 0x0038 +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_INIT_CODE_SHIFT 0 +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_INIT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_EARLY_CODE_SHIFT 8 +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_EARLY_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_LATE_CODE_SHIFT 16 +#define MIPI_RX_ANA38_CSI0A_RG_CSI0A_CPHY_T1_CDR_LATE_CODE_MASK (0x1f << 16) +#define MIPI_RX_ANA40_CSI0A 0x0040 +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_CPHY_FMCK_SEL_SHIFT 0 +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_CPHY_FMCK_SEL_MASK (0x3 << 0) +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_ASYNC_OPTION_SHIFT 4 +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_ASYNC_OPTION_MASK (0xf << 4) +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_CPHY_SPARE_SHIFT 16 +#define MIPI_RX_ANA40_CSI0A_RG_CSI0A_CPHY_SPARE_MASK (0xffff << 16) +#define MIPI_RX_ANA48_CSI0A 0x0048 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L0_T0AB_OS_CAL_CPLT_SHIFT 0 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L0_T0AB_OS_CAL_CPLT_MASK BIT(0) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T0CA_OS_CAL_CPLT_SHIFT 1 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T0CA_OS_CAL_CPLT_MASK BIT(1) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T0BC_OS_CAL_CPLT_SHIFT 2 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T0BC_OS_CAL_CPLT_MASK BIT(2) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L1_T1AB_OS_CAL_CPLT_SHIFT 3 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L1_T1AB_OS_CAL_CPLT_MASK BIT(3) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T1CA_OS_CAL_CPLT_SHIFT 4 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CPHY_T1CA_OS_CAL_CPLT_MASK BIT(4) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L2_T1BC_OS_CAL_CPLT_SHIFT 5 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_CDPHY_L2_T1BC_OS_CAL_CPLT_MASK BIT(5) +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_OS_CAL_CODE_SHIFT 8 +#define MIPI_RX_ANA48_CSI0A_RGS_CSI0A_OS_CAL_CODE_MASK (0xff << 8) +#define MIPI_RX_WRAPPER80_CSI0A 0x0080 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_CLK_MON_SHIFT 0 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_CLK_MON_MASK BIT(0) +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_CLK_EN_SHIFT 1 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_CLK_EN_MASK BIT(1) +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_MON_MUX_SHIFT 8 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_MON_MUX_MASK (0xff << 8) +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_RST_MODE_SHIFT 16 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_CSI_RST_MODE_MASK (0x3 << 16) +#define MIPI_RX_WRAPPER80_CSI0A_CSR_SW_RST_SHIFT 24 +#define MIPI_RX_WRAPPER80_CSI0A_CSR_SW_RST_MASK (0xf << 24) +#define MIPI_RX_WRAPPER84_CSI0A 0x0084 +#define MIPI_RX_WRAPPER84_CSI0A_CSI_DEBUG_OUT_SHIFT 0 +#define MIPI_RX_WRAPPER84_CSI0A_CSI_DEBUG_OUT_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER88_CSI0A 0x0088 +#define MIPI_RX_WRAPPER88_CSI0A_CSR_SW_MODE_0_SHIFT 0 +#define MIPI_RX_WRAPPER88_CSI0A_CSR_SW_MODE_0_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER8C_CSI0A 0x008C +#define MIPI_RX_WRAPPER8C_CSI0A_CSR_SW_MODE_1_SHIFT 0 +#define MIPI_RX_WRAPPER8C_CSI0A_CSR_SW_MODE_1_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER90_CSI0A 0x0090 +#define MIPI_RX_WRAPPER90_CSI0A_CSR_SW_MODE_2_SHIFT 0 +#define MIPI_RX_WRAPPER90_CSI0A_CSR_SW_MODE_2_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER94_CSI0A 0x0094 +#define MIPI_RX_WRAPPER94_CSI0A_CSR_SW_VALUE_0_SHIFT 0 +#define MIPI_RX_WRAPPER94_CSI0A_CSR_SW_VALUE_0_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER98_CSI0A 0x0098 +#define MIPI_RX_WRAPPER98_CSI0A_CSR_SW_VALUE_1_SHIFT 0 +#define MIPI_RX_WRAPPER98_CSI0A_CSR_SW_VALUE_1_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER9C_CSI0A 0x009C +#define MIPI_RX_WRAPPER9C_CSI0A_CSR_SW_VALUE_2_SHIFT 0 +#define MIPI_RX_WRAPPER9C_CSI0A_CSR_SW_VALUE_2_MASK (0xffffffff << 0) +#define MIPI_RX_ANAA4_CSI0A 0x00A4 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L0_T0_SYNC_INIT_SEL_SHIFT 0 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L0_T0_SYNC_INIT_SEL_MASK BIT(0) +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L0_T0_FORCE_INIT_SHIFT 1 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L0_T0_FORCE_INIT_MASK BIT(1) +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_DPHY_L1_SYNC_INIT_SEL_SHIFT 2 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_DPHY_L1_SYNC_INIT_SEL_MASK BIT(2) +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_DPHY_L1_FORCE_INIT_SHIFT 3 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_DPHY_L1_FORCE_INIT_MASK BIT(3) +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L2_T1_SYNC_INIT_SEL_SHIFT 4 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L2_T1_SYNC_INIT_SEL_MASK BIT(4) +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L2_T1_FORCE_INIT_SHIFT 5 +#define MIPI_RX_ANAA4_CSI0A_RG_CSI0A_CDPHY_L2_T1_FORCE_INIT_MASK BIT(5) +#define MIPI_RX_ANAA8_CSI0A 0x00A8 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_L0_T0_BYTECK_INVERT_SHIFT 0 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_L0_T0_BYTECK_INVERT_MASK BIT(0) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_L1_BYTECK_INVERT_SHIFT 1 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_L1_BYTECK_INVERT_MASK BIT(1) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_L2_T1_BYTECK_INVERT_SHIFT 2 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_L2_T1_BYTECK_INVERT_MASK BIT(2) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_HSDET_LEVEL_MODE_EN_SHIFT 3 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_HSDET_LEVEL_MODE_EN_MASK BIT(3) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_OS_CAL_SEL_SHIFT 4 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_OS_CAL_SEL_MASK (0x7 << 4) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_HSDET_DIG_BACK_EN_SHIFT 7 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_DPHY_HSDET_DIG_BACK_EN_MASK BIT(7) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_DELAYCAL_CK_SEL_SHIFT 8 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_CDPHY_DELAYCAL_CK_SEL_MASK (0x7 << 8) +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_OS_CAL_DIV_SHIFT 11 +#define MIPI_RX_ANAA8_CSI0A_RG_CSI0A_OS_CAL_DIV_MASK (0x3 << 11) +#define MIPI_RX_ANA00_CSI1A 0x2000 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_EQ_PROTECT_EN_SHIFT 1 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_EQ_PROTECT_EN_MASK BIT(1) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_BG_LPF_EN_SHIFT 2 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_BG_LPF_EN_MASK BIT(2) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_BG_CORE_EN_SHIFT 3 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_BG_CORE_EN_MASK BIT(3) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L0_CKMODE_EN_SHIFT 5 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L0_CKMODE_EN_MASK BIT(5) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L0_CKSEL_SHIFT 6 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L0_CKSEL_MASK BIT(6) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L1_CKMODE_EN_SHIFT 8 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L1_CKMODE_EN_MASK BIT(8) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L1_CKSEL_SHIFT 9 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L1_CKSEL_MASK BIT(9) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L2_CKMODE_EN_SHIFT 11 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L2_CKMODE_EN_MASK BIT(11) +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L2_CKSEL_SHIFT 12 +#define MIPI_RX_ANA00_CSI1A_RG_CSI1A_DPHY_L2_CKSEL_MASK BIT(12) +#define MIPI_RX_ANA04_CSI1A 0x2004 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_LPRX_VTH_SEL_SHIFT 0 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_LPRX_VTH_SEL_MASK (0x7 << 0) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_LPRX_VTL_SEL_SHIFT 4 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_LPRX_VTL_SEL_MASK (0x7 << 4) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_HSDET_VTH_SEL_SHIFT 8 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_HSDET_VTH_SEL_MASK (0x7 << 8) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_HSDET_VTL_SEL_SHIFT 12 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_HSDET_VTL_SEL_MASK (0x7 << 12) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_VREF_SEL_SHIFT 16 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_VREF_SEL_MASK (0xf << 16) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_MON_VREF_SEL_SHIFT 24 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_BG_MON_VREF_SEL_MASK (0xf << 24) +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_FORCE_HSRT_EN_SHIFT 28 +#define MIPI_RX_ANA04_CSI1A_RG_CSI1A_FORCE_HSRT_EN_MASK BIT(28) +#define MIPI_RX_ANA08_CSI1A 0x2008 +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L0P_HSRT_CODE_SHIFT 0 +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L0P_HSRT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L0N_HSRT_CODE_SHIFT 8 +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L0N_HSRT_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L1P_HSRT_CODE_SHIFT 16 +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L1P_HSRT_CODE_MASK (0x1f << 16) +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L1N_HSRT_CODE_SHIFT 24 +#define MIPI_RX_ANA08_CSI1A_RG_CSI1A_L1N_HSRT_CODE_MASK (0x1f << 24) +#define MIPI_RX_ANA0C_CSI1A 0x200C +#define MIPI_RX_ANA0C_CSI1A_RG_CSI1A_L2P_HSRT_CODE_SHIFT 0 +#define MIPI_RX_ANA0C_CSI1A_RG_CSI1A_L2P_HSRT_CODE_MASK (0x1f << 0) +#define MIPI_RX_ANA0C_CSI1A_RG_CSI1A_L2N_HSRT_CODE_SHIFT 8 +#define MIPI_RX_ANA0C_CSI1A_RG_CSI1A_L2N_HSRT_CODE_MASK (0x1f << 8) +#define MIPI_RX_ANA10_CSI1A 0x2010 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_DELAYCAL_EN_SHIFT 0 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_DELAYCAL_EN_MASK BIT(0) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_DELAYCAL_RSTB_SHIFT 1 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_DELAYCAL_RSTB_MASK BIT(1) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_VREF_SEL_SHIFT 2 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L0_VREF_SEL_MASK (0x3f << 2) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_DELAYCAL_EN_SHIFT 8 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_DELAYCAL_EN_MASK BIT(8) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_DELAYCAL_RSTB_SHIFT 9 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_DELAYCAL_RSTB_MASK BIT(9) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_VREF_SEL_SHIFT 10 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L1_VREF_SEL_MASK (0x3f << 10) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_DELAYCAL_EN_SHIFT 16 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_DELAYCAL_EN_MASK BIT(16) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_DELAYCAL_RSTB_SHIFT 17 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_DELAYCAL_RSTB_MASK BIT(17) +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_VREF_SEL_SHIFT 18 +#define MIPI_RX_ANA10_CSI1A_RG_CSI1A_DPHY_L2_VREF_SEL_MASK (0x3f << 18) +#define MIPI_RX_ANA18_CSI1A 0x2018 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_OS_CAL_EN_SHIFT 0 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_OS_CAL_EN_MASK BIT(0) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_MON_EN_SHIFT 1 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_MON_EN_MASK BIT(1) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SCA_SHIFT 2 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SCA_MASK BIT(2) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SCB_SHIFT 3 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SCB_MASK BIT(3) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_IS_SHIFT 4 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_IS_MASK (0x3 << 4) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_BW_SHIFT 6 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_BW_MASK (0x3 << 6) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SRA_SHIFT 8 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SRA_MASK (0xf << 8) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SRB_SHIFT 12 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L0_EQ_SRB_MASK (0xf << 12) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_OS_CAL_EN_SHIFT 16 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_OS_CAL_EN_MASK BIT(16) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_MON_EN_SHIFT 17 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_MON_EN_MASK BIT(17) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SCA_SHIFT 18 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SCA_MASK BIT(18) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SCB_SHIFT 19 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SCB_MASK BIT(19) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_IS_SHIFT 20 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_IS_MASK (0x3 << 20) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_BW_SHIFT 22 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_BW_MASK (0x3 << 22) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SRA_SHIFT 24 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SRA_MASK (0xf << 24) +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SRB_SHIFT 28 +#define MIPI_RX_ANA18_CSI1A_RG_CSI1A_L1_EQ_SRB_MASK (0xf << 28) +#define MIPI_RX_ANA1C_CSI1A 0x201C +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_OS_CAL_EN_SHIFT 0 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_OS_CAL_EN_MASK BIT(0) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_MON_EN_SHIFT 1 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_MON_EN_MASK BIT(1) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SCA_SHIFT 2 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SCA_MASK BIT(2) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SCB_SHIFT 3 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SCB_MASK BIT(3) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_IS_SHIFT 4 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_IS_MASK (0x3 << 4) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_BW_SHIFT 6 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_BW_MASK (0x3 << 6) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SRA_SHIFT 8 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SRA_MASK (0xf << 8) +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SRB_SHIFT 12 +#define MIPI_RX_ANA1C_CSI1A_RG_CSI1A_L2_EQ_SRB_MASK (0xf << 12) +#define MIPI_RX_ANA24_CSI1A 0x2024 +#define MIPI_RX_ANA24_CSI1A_RG_CSI1A_RESERVE_SHIFT 24 +#define MIPI_RX_ANA24_CSI1A_RG_CSI1A_RESERVE_MASK (0xff << 24) +#define MIPI_RX_ANA48_CSI1A 0x2048 +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L0_OS_CAL_CPLT_SHIFT 3 +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L0_OS_CAL_CPLT_MASK BIT(3) +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L1_OS_CAL_CPLT_SHIFT 4 +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L1_OS_CAL_CPLT_MASK BIT(4) +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L2_OS_CAL_CPLT_SHIFT 5 +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_DPHY_L2_OS_CAL_CPLT_MASK BIT(5) +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_OS_CAL_CODE_SHIFT 8 +#define MIPI_RX_ANA48_CSI1A_RGS_CSI1A_OS_CAL_CODE_MASK (0xff << 8) +#define MIPI_RX_WRAPPER80_CSI1A 0x2080 +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_CLK_MON_SHIFT 0 +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_CLK_MON_MASK BIT(0) +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_MON_MUX_SHIFT 8 +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_MON_MUX_MASK (0xff << 8) +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_RST_MODE_SHIFT 16 +#define MIPI_RX_WRAPPER80_CSI1A_CSR_CSI_RST_MODE_MASK (0x3 << 16) +#define MIPI_RX_WRAPPER80_CSI1A_CSR_SW_RST_SHIFT 24 +#define MIPI_RX_WRAPPER80_CSI1A_CSR_SW_RST_MASK (0xf << 24) +#define MIPI_RX_WRAPPER84_CSI1A 0x2084 +#define MIPI_RX_WRAPPER84_CSI1A_CSI_DEBUG_OUT_SHIFT 0 +#define MIPI_RX_WRAPPER84_CSI1A_CSI_DEBUG_OUT_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER88_CSI1A 0x2088 +#define MIPI_RX_WRAPPER88_CSI1A_CSR_SW_MODE_0_SHIFT 0 +#define MIPI_RX_WRAPPER88_CSI1A_CSR_SW_MODE_0_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER8C_CSI1A 0x208C +#define MIPI_RX_WRAPPER8C_CSI1A_CSR_SW_MODE_1_SHIFT 0 +#define MIPI_RX_WRAPPER8C_CSI1A_CSR_SW_MODE_1_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER90_CSI1A 0x2090 +#define MIPI_RX_WRAPPER90_CSI1A_CSR_SW_MODE_2_SHIFT 0 +#define MIPI_RX_WRAPPER90_CSI1A_CSR_SW_MODE_2_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER94_CSI1A 0x2094 +#define MIPI_RX_WRAPPER94_CSI1A_CSR_SW_VALUE_0_SHIFT 0 +#define MIPI_RX_WRAPPER94_CSI1A_CSR_SW_VALUE_0_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER98_CSI1A 0x2098 +#define MIPI_RX_WRAPPER98_CSI1A_CSR_SW_VALUE_1_SHIFT 0 +#define MIPI_RX_WRAPPER98_CSI1A_CSR_SW_VALUE_1_MASK (0xffffffff << 0) +#define MIPI_RX_WRAPPER9C_CSI1A 0x209C +#define MIPI_RX_WRAPPER9C_CSI1A_CSR_SW_VALUE_2_SHIFT 0 +#define MIPI_RX_WRAPPER9C_CSI1A_CSR_SW_VALUE_2_MASK (0xffffffff << 0) +#define MIPI_RX_ANAA4_CSI1A 0x20A4 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L0_SYNC_INIT_SEL_SHIFT 0 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L0_SYNC_INIT_SEL_MASK BIT(0) +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L0_FORCE_INIT_SHIFT 1 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L0_FORCE_INIT_MASK BIT(1) +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L1_SYNC_INIT_SEL_SHIFT 2 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L1_SYNC_INIT_SEL_MASK BIT(2) +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L1_FORCE_INIT_SHIFT 3 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L1_FORCE_INIT_MASK BIT(3) +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L2_SYNC_INIT_SEL_SHIFT 4 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L2_SYNC_INIT_SEL_MASK BIT(4) +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L2_FORCE_INIT_SHIFT 5 +#define MIPI_RX_ANAA4_CSI1A_RG_CSI1A_DPHY_L2_FORCE_INIT_MASK BIT(5) +#define MIPI_RX_ANAA8_CSI1A 0x20A8 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L0_BYTECK_INVERT_SHIFT 0 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L0_BYTECK_INVERT_MASK BIT(0) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L1_BYTECK_INVERT_SHIFT 1 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L1_BYTECK_INVERT_MASK BIT(1) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L2_BYTECK_INVERT_SHIFT 2 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_L2_BYTECK_INVERT_MASK BIT(2) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_HSDET_LEVEL_MODE_EN_SHIFT 3 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_HSDET_LEVEL_MODE_EN_MASK BIT(3) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_OS_CAL_SEL_SHIFT 4 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_OS_CAL_SEL_MASK (0x7 << 4) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_HSDET_DIG_BACK_EN_SHIFT 7 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_HSDET_DIG_BACK_EN_MASK BIT(7) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_DELAYCAL_CK_SEL_SHIFT 8 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_DPHY_DELAYCAL_CK_SEL_MASK (0x7 << 8) +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_OS_CAL_DIV_SHIFT 11 +#define MIPI_RX_ANAA8_CSI1A_RG_CSI1A_OS_CAL_DIV_MASK (0x3 << 11) +#endif -- 2.18.0 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek