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 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A6A06F4BB6A for ; Tue, 24 Feb 2026 17:56:07 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1022E10E5FF; Tue, 24 Feb 2026 17:56:07 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="UpzkfFqk"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Pm8f7alL"; dkim-atps=neutral Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by gabe.freedesktop.org (Postfix) with ESMTPS id A39DF10E600 for ; Tue, 24 Feb 2026 17:56:06 +0000 (UTC) Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61OHhdVk2220826 for ; Tue, 24 Feb 2026 17:56:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= jUronYKsSW9F5uXX2CjyB1l7gYUW9EJCBP2yU9CIbrY=; b=UpzkfFqkI5JefO/Y xK2DPikaFaT6XgUhrDEbS+32xhjHKk8rr0ts6Bcd6UrMPiZgONtUGAdXk7Pqn763 3jJEQSPpoAqP2r/oBnyYU3weWclCu4SVzP6HvgZI4s8/Y3glx20bGwiznV6tZFBj bTJWcjJMs5ZiV/W4fpDnpSMtajXL1BnxiP0WYYvzfEcQl9EIpgPDZ8lhoSYkhTXL VCmir/8kumyBT5rVMRa1mH84HozYAJ+7MLoH056+SyaiaAp0SQ31hn9+5jl62YvR YL4/g0Jvtvx1sY4uIJ6YBJG7hvFcAsWIvHo42aQZ3kfHcPz0EqZbDvejHH5mSMUs oUiO7g== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ch4e3ah55-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 24 Feb 2026 17:56:06 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-82320abbea2so2463350b3a.0 for ; Tue, 24 Feb 2026 09:56:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1771955765; x=1772560565; darn=lists.freedesktop.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jUronYKsSW9F5uXX2CjyB1l7gYUW9EJCBP2yU9CIbrY=; b=Pm8f7alLC6DMYe6yEoK9Ejh9vKrF5pxu/kBRcPPl8kDtgaUjzLEUJycS/nUuEXuiKm vjXvTdGJRlpetxMSC3h5vj+gWn0VtlDYomD4vXnkZbc1aQPXJSffTe9cIEYdrAUtWt2i DWhaHKriagIuV35CvhBtoyUUGSvOvsQD/hdVfR5syCWPr71214RbPgAGgEk3SQrK3WZX ZE+JoXzy2fBEcmLF2i+dYr19CKGPKFdDj7UkGvFNEkpDBwZPcqLnOIuoHAeZJnJsRSsg CKvikoAHgkL+Cn5eqAjYSYkS3C5qafLI5PDU9R3Q7MS2yuGwL60okNJaLKWsUwqKMUb/ hymw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771955765; x=1772560565; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jUronYKsSW9F5uXX2CjyB1l7gYUW9EJCBP2yU9CIbrY=; b=HzZA5cs16r383GSwfPLGAjNyhVYDqU5PFinlg3SICGBkug1Q3Q4i+V77WrO+rrxgA0 tlzLdVkU1exJJ7Ql96qLJJJuj/oPAZbvSSHVMpxpWmJc42e9XVXyrwkCOFdNL3YPTgjm P4C+4kBt6m8lFZohjazngd30E1YMLYFaTlPoDZYdMY9gR7vn6EO4CLN8odmEdilcud2C ABl5K+TLF6L1hdq7LXgNi1rHw9ahSY2R/hPf746ubnr+j6wSO/uTyVhundQkJ3DQDZGU rD8MetVU+WSpAXzazx/SM/0YaDcej1ViCHnrU/gS70nBQQhB4Gez1ffClVZY4cS8I+KU bfNw== X-Gm-Message-State: AOJu0Yy/SzwYCLPRAWZ4DZkpZP3YmakF4OLlVaNfhpcF0efPWa4O7bjj 1So7psDi7/VV93dZUstmggL0eTMn61/qM5wXMhPodYVC2Ghvig+MxieuV00V8zs5n+1GNCQCfde N+YD1tS04Qze/GAnvQL2GwpD8vGDeOWdgw+cNN2aTyqAAvJ7nrHdx1Wiy2t29eJP/SVstRxo= X-Gm-Gg: ATEYQzwd+S36rF1HfFL7rojv8IuRkz5TqhOtE+kVpaQH40W8ePdrGkaeYMxrvp3XpGM WbBYxpzt/OvhaJbA90WRKWDipiX0CuaAVCkMTsOybPWu+AtCrC/YG+RdaoSHqn3Hb0NFz2K4yUj seg/YMiELyFRvkWeJudcZODLjUyCEucXKnSEN04wvPyFALsZ9q1RXIqH4k4ugTdHsxv1+IaXmLm rjrJDao8/7gT/Jlg4k3O2FuxPT7sGL45XVxiNrxmu0uftqLzAwG7EK67IFt239vOYR34vjqC4RR OYFd9ei/cCS/HAbCaMXv39/tuMaYhK8G2XCQREThjLuewr858Tran0OgDYpGQ7Pe827Xcetm4xB Uz70sf3DKKF8eocm/sxYodzC8sUIj88luCDloZ2LhEAxW9amwp6vL+7P0A/UYCi2JpUAvu+RmhK MfQWYPXmLuB3sD6znPAXzrbXeRlJcT5N3l0tmyFUt1ZQ== X-Received: by 2002:a05:6a00:4d10:b0:81f:475a:d242 with SMTP id d2e1a72fcca58-826daa0c788mr5486058b3a.4.1771955765087; Tue, 24 Feb 2026 09:56:05 -0800 (PST) X-Received: by 2002:a05:6a00:4d10:b0:81f:475a:d242 with SMTP id d2e1a72fcca58-826daa0c788mr5486041b3a.4.1771955764378; Tue, 24 Feb 2026 09:56:04 -0800 (PST) Received: from hu-vishsain-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-826dd68e147sm10338005b3a.19.2026.02.24.09.55.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Feb 2026 09:56:03 -0800 (PST) From: Vishnu Saini Date: Tue, 24 Feb 2026 23:25:36 +0530 Subject: [PATCH v4 2/2] drm/bridge: add support for lontium lt8713sx bridge driver MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260224-lt8713sx-bridge-driver-v4-2-b5603f5458d8@oss.qualcomm.com> References: <20260224-lt8713sx-bridge-driver-v4-0-b5603f5458d8@oss.qualcomm.com> In-Reply-To: <20260224-lt8713sx-bridge-driver-v4-0-b5603f5458d8@oss.qualcomm.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Tony Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Vishnu Saini , prahlad.valluru@oss.qualcomm.com, Prahlad Valluru , =?utf-8?q?=E6=9C=B1=E6=99=93=E6=98=8E?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1771955743; l=19343; i=vishnu.saini@oss.qualcomm.com; s=20251113; h=from:subject:message-id; bh=0c7I6lCfGoQlt7xddA/LipC/G/oRreJ6Rcby/wv/eQQ=; b=8LoN06xi/SiFB4URDz8kc7N2LHcgDycSf00eOGNVifrEd3/oXDyDFx9KabQQN9DGueIo9a1Yp AwBIJ37IoqADV//y3mGd7Y0FVnqwFJV5eZBkkl/Jsj8InzP9Pgvroum X-Developer-Key: i=vishnu.saini@oss.qualcomm.com; a=ed25519; pk=8hlXlF8j/3GeOaDK3w2LYhkv9FanCQru0c7kRH/It7k= X-Authority-Analysis: v=2.4 cv=DfIaa/tW c=1 sm=1 tr=0 ts=699de636 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=1XWaLZrsAAAA:8 a=Kz8-B0t5AAAA:8 a=QrKC4IKgJVbfS20aV78A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=RuZk68QooNbwfxovefhk:22 X-Proofpoint-GUID: _8ujujrWulAz6mzuo-hMhF1MEk9CwFvh X-Proofpoint-ORIG-GUID: _8ujujrWulAz6mzuo-hMhF1MEk9CwFvh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI0MDE1MSBTYWx0ZWRfX91YDTP7+CIBd aH7vecis5ZP+o9g2jzzyRiHXE8cN3sNzdzrTX1IAhZA3Ip3mx19DeNbGrR5h2s/O7eg9rk2R84a DxEGuswa2v+KacQayX4hfMeWSRKnO7hrQv24KqQYBWBGrHP79YYf4yV77kU2i2zkP1J+TqpZJ/Q wA/ECFHkAXtSzcqLBw2+5VDk7M3GAY+y9CMAa5pXbiWrUxUhLa5Vfkh5MFgbvpo2ZL23OamFS9J VY1FMMa/vnAdS1NzJlhDCJ4+5VX6rY172Q0gLHpmwWi+0UAKen0F5cQX7UiWkbZeAYw6rJNRg5H j7oReb5jZikrheU2nrxPbYnPxpaQAOdKQhvMselehvGpBapQiDPqA3gekjuyl+m2Ksmk6igCGuo 1h3gTe4RkzEKmTsC1MC9uHKyc0odcJjAvFZoGMwp729hQB0WEIYg3XCYRG5oPYtWDQXxgYI1aPp xlOGxjKSgLVzoLktQAg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_02,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 impostorscore=0 bulkscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602240151 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VGhlIGx0ODcxM3N4IGlzIGEgVHlwZS1DL0RQMS40IHRvIFR5cGUtQy9EUDEuNC9IRE1JMi4wIGNv bnZlcnRlciwKd2l0aCB0aHJlZSBjb25maWd1cmFibGUgRFAxLjQvSERNSTIuMC9EUCsrIG91dHB1 dCBpbnRlcmZhY2VzIGFuZAphdWRpbyBvdXRwdXQgaW50ZXJmYWNlLgoKRHJpdmVyIGlzIHJlcXVp cmVkIGZvciBmaXJtd2FyZSB1cGdyYWRlIGFuZCBlbmFibGluZyB0aGUgYnJpZGdlIGNoaXAuCgpD by1kZXZlbG9wZWQtYnk6IFByYWhsYWQgVmFsbHVydSA8dnZhbGx1cnVAcXRpLnF1YWxjb21tLmNv bT4KU2lnbmVkLW9mZi1ieTogUHJhaGxhZCBWYWxsdXJ1IDx2dmFsbHVydUBxdGkucXVhbGNvbW0u Y29tPgpTaWduZWQtb2ZmLWJ5OiBWaXNobnUgU2FpbmkgPHZpc2hudS5zYWluaUBvc3MucXVhbGNv bW0uY29tPgpDYzog5pyx5pmT5piOIDx4bXpodUBsb250aXVtLmNvcnAtcGFydG5lci5nb29nbGUu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAgICAgIHwgIDEw ICsKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1sdDg3MTNzeC5jIHwgNTk4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2MDkgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCBhMjUwYWZkOGQ2NjIuLjdmZWYzODNlZDdjYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvS2NvbmZpZwpAQCAtMTg0LDYgKzE4NCwxNiBAQCBjb25maWcgRFJNX0xPTlRJ VU1fTFQ5NjExVVhDCiAJICBIRE1JIHNpZ25hbHMKIAkgIFBsZWFzZSBzYXkgWSBpZiB5b3UgaGF2 ZSBzdWNoIGhhcmR3YXJlLgogCitjb25maWcgRFJNX0xPTlRJVU1fTFQ4NzEzU1gKKwl0cmlzdGF0 ZSAiTG9udGl1bSBMVDg3MTNTWCBEUCBNU1QgYnJpZGdlIgorCWRlcGVuZHMgb24gT0YKKwlzZWxl Y3QgUkVHTUFQX0kyQworCWhlbHAKKwkgIERyaXZlciBmb3IgTG9udGl1bSBMVDg3MTNTWCBEUCBN U1QgYnJpZGdlCisJICBjaGlwIGZpcm13YXJlIHVwZ3JhZGUsIHdoaWNoIGNvbnZlcnRzIFR5cGUt Qy9EUDEuNAorCSAgdG8gMyBjb25maWd1cmFibGUgVHlwZS1DL0RQMS40L0hETUkyLjAgb3V0cHV0 cworCSAgUGxlYXNlIHNheSBZIGlmIHlvdSBoYXZlIHN1Y2ggaGFyZHdhcmUuCisKIGNvbmZpZyBE Uk1fSVRFX0lUNjYxMjEKIAl0cmlzdGF0ZSAiSVRFIElUNjYxMjEgSERNSSBicmlkZ2UiCiAJZGVw ZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKaW5kZXggYzdkYzAzMTgyZTU5Li4wN2Vl YjEzZmE0OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKKysr IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBvYmot JChDT05GSUdfRFJNX0xPTlRJVU1fTFQ4OTEyQikgKz0gbG9udGl1bS1sdDg5MTJiLm8KIG9iai0k KENPTkZJR19EUk1fTE9OVElVTV9MVDkyMTEpICs9IGxvbnRpdW0tbHQ5MjExLm8KIG9iai0kKENP TkZJR19EUk1fTE9OVElVTV9MVDk2MTEpICs9IGxvbnRpdW0tbHQ5NjExLm8KIG9iai0kKENPTkZJ R19EUk1fTE9OVElVTV9MVDk2MTFVWEMpICs9IGxvbnRpdW0tbHQ5NjExdXhjLm8KK29iai0kKENP TkZJR19EUk1fTE9OVElVTV9MVDg3MTNTWCkgKz0gbG9udGl1bS1sdDg3MTNzeC5vCiBvYmotJChD T05GSUdfRFJNX0xWRFNfQ09ERUMpICs9IGx2ZHMtY29kZWMubwogb2JqLSQoQ09ORklHX0RSTV9N RUdBQ0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZXKSArPSBtZWdhY2hpcHMtc3RkcHh4eHgtZ2Ut Yjg1MHYzLWZ3Lm8KIG9iai0kKENPTkZJR19EUk1fTUlDUk9DSElQX0xWRFNfU0VSSUFMSVpFUikg Kz0gbWljcm9jaGlwLWx2ZHMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9s b250aXVtLWx0ODcxM3N4LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2xvbnRpdW0tbHQ4NzEz c3guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNkOTlmN2I5NGM3 ZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1sdDg3 MTNzeC5jCkBAIC0wLDAgKzEsNTk4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAorLyoKKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFu ZC9vciBpdHMgc3Vic2lkaWFyaWVzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jcmM4Lmg+Cisj aW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVy Lmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+ CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNp bmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRv ci9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8bGludXgv d2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorCisjaW5jbHVkZSA8ZHJtL2Ry bV9icmlkZ2UuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+CisKKyNkZWZpbmUgRldfRklMRSAi bHQ4NzEzc3hfZncuYmluIgorCisjZGVmaW5lIFJFR19QQUdFX0NPTlRST0wJMHhmZgorCisjZGVm aW5lIExUODcxM1NYX1BBR0VfU0laRQkyNTYKKworREVDTEFSRV9DUkM4X1RBQkxFKGx0ODcxM3N4 X2NyY190YWJsZSk7CisKK3N0cnVjdCBsdDg3MTNzeCB7CisJc3RydWN0IGRldmljZSAqZGV2Owor CXN0cnVjdCBkcm1fYnJpZGdlIGJyaWRnZTsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqbmV4dF9icmlk Z2U7CisKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJLyogUHJvdGVjdHMgYWxsIGFjY2Vzc2Vz IHRvIHJlZ2lzdGVycyBieSBzdG9wcGluZyB0aGUgb24tY2hpcCBNQ1UgKi8KKwlzdHJ1Y3QgbXV0 ZXggb2NtX2xvY2s7CisKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOworCXN0cnVjdCBn cGlvX2Rlc2MgKmVuYWJsZV9ncGlvOworCisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlj b25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OworCisJdTggKmZ3X2J1ZmZlcjsKKworCXUzMiBtYWlu X2NyY192YWx1ZTsKKwl1MzIgYmFua19jcmNfdmFsdWVbMTddOworCisJaW50IGJhbmtfbnVtOwor fTsKKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfcmVzZXQoc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNz eCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX3JhbmdlIGx0ODcxM3N4X3Jhbmdlc1td ID0geworCXsKKwkJLnJhbmdlX21pbiA9IDB4MDAwMCwKKwkJLnJhbmdlX21heCA9IDB4ZmZmZgor CX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUgbHQ4NzEz c3hfdGFibGUgPSB7CisJLnllc19yYW5nZXMgPSBsdDg3MTNzeF9yYW5nZXMsCisJLm5feWVzX3Jh bmdlcyA9IEFSUkFZX1NJWkUobHQ4NzEzc3hfcmFuZ2VzKSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgcmVnbWFwX3JhbmdlX2NmZyBsdDg3MTNzeF9yYW5nZV9jZmcgPSB7CisJLm5hbWUgPSAi bHQ4NzEzc3giLAorCS5yYW5nZV9taW4gPSAweDAwMDAsCisJLnJhbmdlX21heCA9IDB4ZmZmZiwK Kwkuc2VsZWN0b3JfcmVnID0gUkVHX1BBR0VfQ09OVFJPTCwKKwkuc2VsZWN0b3JfbWFzayA9IDB4 ZmYsCisJLnNlbGVjdG9yX3NoaWZ0ID0gMCwKKwkud2luZG93X3N0YXJ0ID0gMCwKKwkud2luZG93 X2xlbiA9IDB4MTAwLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGx0 ODcxM3N4X3JlZ21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzID0gOCwKKwkudmFsX2JpdHMgPSA4 LAorCS52b2xhdGlsZV90YWJsZSA9ICZsdDg3MTNzeF90YWJsZSwKKwkucmFuZ2VzID0gJmx0ODcx M3N4X3JhbmdlX2NmZywKKwkubnVtX3JhbmdlcyA9IDEsCisJLmNhY2hlX3R5cGUgPSBSRUdDQUNI RV9OT05FLAorCS5tYXhfcmVnaXN0ZXIgPSAweGZmZmYsCit9OworCitzdGF0aWMgdm9pZCBsdDg3 MTNzeF9pMmNfZW5hYmxlKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEzc3gpCit7CisJcmVnbWFwX3dy aXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTBlZSwgMHgwMSk7Cit9CisKK3N0YXRpYyB2b2lkIGx0 ODcxM3N4X2kyY19kaXNhYmxlKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEzc3gpCit7CisJcmVnbWFw X3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTBlZSwgMHgwMCk7Cit9CisKK3N0YXRpYyBpbnQg bHQ4NzEzc3hfcHJlcGFyZV9maXJtd2FyZV9kYXRhKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEzc3gp Cit7CisJaW50IHJldCA9IDA7CisJdTY0IHN6XzEyayA9IDEyICogU1pfMUs7CisKKwlyZXQgPSBy ZXF1ZXN0X2Zpcm13YXJlKCZsdDg3MTNzeC0+ZncsIEZXX0ZJTEUsIGx0ODcxM3N4LT5kZXYpOwor CWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIobHQ4NzEzc3gtPmRldiwgInJlcXVlc3QgZmlybXdh cmUgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfZGJnKGx0ODcxM3N4LT5k ZXYsICJGaXJtd2FyZSBzaXplOiAlenUgYnl0ZXNcbiIsIGx0ODcxM3N4LT5mdy0+c2l6ZSk7CisK KwlpZiAobHQ4NzEzc3gtPmZ3LT5zaXplID4gU1pfMjU2SyAtIDEpIHsKKwkJZGV2X2VycihsdDg3 MTNzeC0+ZGV2LCAiRmlybXdhcmUgc2l6ZSBleGNlZWRzIDI1NktCIGxpbWl0XG4iKTsKKwkJcmVs ZWFzZV9maXJtd2FyZShsdDg3MTNzeC0+ZncpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwls dDg3MTNzeC0+ZndfYnVmZmVyID0ga3ZtYWxsb2MoU1pfMjU2SywgR0ZQX0tFUk5FTCk7CisJaWYg KCFsdDg3MTNzeC0+ZndfYnVmZmVyKSB7CisJCXJlbGVhc2VfZmlybXdhcmUobHQ4NzEzc3gtPmZ3 KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJbWVtc2V0KGx0ODcxM3N4LT5md19idWZmZXIs IDB4ZmYsIFNaXzI1NkspOworCisJLyogbWFpbiBmaXJtd2FyZSAqLworCW1lbWNweShsdDg3MTNz eC0+ZndfYnVmZmVyLCBsdDg3MTNzeC0+ZnctPmRhdGEsIFNaXzY0SyAtIDEpOworCisJbHQ4NzEz c3gtPmZ3X2J1ZmZlcltTWl82NEsgLSAxXSA9CisJCWNyYzgobHQ4NzEzc3hfY3JjX3RhYmxlLCBs dDg3MTNzeC0+ZndfYnVmZmVyLCBTWl82NEsgLSAxLCAwKTsKKwlsdDg3MTNzeC0+bWFpbl9jcmNf dmFsdWUgPSBsdDg3MTNzeC0+ZndfYnVmZmVyW1NaXzY0SyAtIDFdOworCWRldl9kYmcobHQ4NzEz c3gtPmRldiwKKwkJIk1haW4gRmlybXdhcmUgRGF0YSAgQ3JjID0gMHglMDJYXG4iLCBsdDg3MTNz eC0+bWFpbl9jcmNfdmFsdWUpOworCisJLyogYmFuayBmaXJtd2FyZSAqLworCW1lbWNweShsdDg3 MTNzeC0+ZndfYnVmZmVyICsgU1pfNjRLLAorCSAgICAgICBsdDg3MTNzeC0+ZnctPmRhdGEgKyBT Wl82NEssCisJICAgICAgIGx0ODcxM3N4LT5mdy0+c2l6ZSAtIFNaXzY0Syk7CisKKwlsdDg3MTNz eC0+YmFua19udW0gPSAobHQ4NzEzc3gtPmZ3LT5zaXplIC0gU1pfNjRLICsgc3pfMTJrIC0gMSkg LyBzel8xMms7CisJZGV2X2RiZyhsdDg3MTNzeC0+ZGV2LCAiQmFuayBOdW1iZXIgVG90YWwgaXMg JWQuXG4iLCBsdDg3MTNzeC0+YmFua19udW0pOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsdDg3 MTNzeC0+YmFua19udW07IGkrKykgeworCQlsdDg3MTNzeC0+YmFua19jcmNfdmFsdWVbaV0gPQor CQkJY3JjOChsdDg3MTNzeF9jcmNfdGFibGUsIGx0ODcxM3N4LT5md19idWZmZXIgKyBTWl82NEsg KyBpICogc3pfMTJrLAorCQkJICAgICBzel8xMmssIDApOworCQlkZXZfZGJnKGx0ODcxM3N4LT5k ZXYsICJCYW5rIG51bWJlcjolZDsgRmlybXdhcmUgRGF0YSAgQ3JjOjB4JTAyWFxuIiwKKwkJCWks IGx0ODcxM3N4LT5iYW5rX2NyY192YWx1ZVtpXSk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCBsdDg3MTNzeF9jb25maWdfcGFyYW1ldGVycyhzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcx M3N4KQoreworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAweGUwNWUsIDB4YzEpOwor CXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAweGUwNTgsIDB4MDApOworCXJlZ21hcF93 cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAweGUwNTksIDB4NTApOworCXJlZ21hcF93cml0ZShsdDg3 MTNzeC0+cmVnbWFwLCAweGUwNWEsIDB4MTApOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVn bWFwLCAweGUwNWEsIDB4MDApOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAweGUw NTgsIDB4MjEpOworfQorCitzdGF0aWMgdm9pZCBsdDg3MTNzeF93cmVuKHN0cnVjdCBsdDg3MTNz eCAqbHQ4NzEzc3gpCit7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTEwMywg MHhiZik7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTEwMywgMHhmZik7CisJ cmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA1YSwgMHgwNCk7CisJcmVnbWFwX3dy aXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA1YSwgMHgwMCk7Cit9CisKK3N0YXRpYyB2b2lkIGx0 ODcxM3N4X3dyZGkoc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCkKK3sKKwlyZWdtYXBfd3JpdGUo bHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDVhLCAweDA4KTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gt PnJlZ21hcCwgMHhlMDVhLCAweDAwKTsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfZmlmb19y ZXNldChzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4KQoreworCXJlZ21hcF93cml0ZShsdDg3MTNz eC0+cmVnbWFwLCAweGUxMDMsIDB4YmYpOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFw LCAweGUxMDMsIDB4ZmYpOworfQorCitzdGF0aWMgdm9pZCBsdDg3MTNzeF9kaXNhYmxlX3NyYW1f d3JpdGUoc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCkKK3sKKwlyZWdtYXBfd3JpdGUobHQ4NzEz c3gtPnJlZ21hcCwgMHhlMDU1LCAweDAwKTsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfc3Jh bV90b19mbGFzaChzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4KQoreworCXJlZ21hcF93cml0ZShs dDg3MTNzeC0+cmVnbWFwLCAweGUwNWEsIDB4MzApOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+ cmVnbWFwLCAweGUwNWEsIDB4MDApOworfQorCitzdGF0aWMgdm9pZCBsdDg3MTNzeF9pMmNfdG9f c3JhbShzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4KQoreworCXJlZ21hcF93cml0ZShsdDg3MTNz eC0+cmVnbWFwLCAweGUwNTUsIDB4ODApOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFw LCAweGUwNWUsIDB4YzApOworCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAweGUwNTgs IDB4MjEpOworfQorCitzdGF0aWMgdTggbHQ4NzEzc3hfcmVhZF9mbGFzaF9zdGF0dXMoc3RydWN0 IGx0ODcxM3N4ICpsdDg3MTNzeCkKK3sKKwl1MzIgZmxhc2hfc3RhdHVzID0gMDsKKworCXJlZ21h cF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAgMHhlMTAzLCAweDNmKTsKKwlyZWdtYXBfd3JpdGUo bHQ4NzEzc3gtPnJlZ21hcCwgIDB4ZTEwMywgMHhmZik7CisKKwlyZWdtYXBfd3JpdGUobHQ4NzEz c3gtPnJlZ21hcCwgIDB4ZTA1ZSwgMHg0MCk7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdt YXAsICAweGUwNTYsIDB4MDUpOyAvKiBvcGNvZGU9cmVhZCBzdGF0dXMgcmVnaXN0ZXIgKi8KKwly ZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgIDB4ZTA1NSwgMHgyNSk7CisJcmVnbWFwX3dy aXRlKGx0ODcxM3N4LT5yZWdtYXAsICAweGUwNTUsIDB4MDEpOworCXJlZ21hcF93cml0ZShsdDg3 MTNzeC0+cmVnbWFwLCAgMHhlMDU4LCAweDIxKTsKKworCXJlZ21hcF9yZWFkKGx0ODcxM3N4LT5y ZWdtYXAsIDB4ZTA1ZiwgJmZsYXNoX3N0YXR1cyk7CisJZGV2X2RiZyhsdDg3MTNzeC0+ZGV2LCAi Zmxhc2hfc3RhdHVzOiV4XG4iLCBmbGFzaF9zdGF0dXMpOworCisJcmV0dXJuIGZsYXNoX3N0YXR1 czsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfYmxvY2tfZXJhc2Uoc3RydWN0IGx0ODcxM3N4 ICpsdDg3MTNzeCkKK3sKKwl1MzIgaSA9IDA7CisJdTggZmxhc2hfc3RhdHVzID0gMDsKKwl1OCBi bG9ja251bSA9IDB4MDA7CisJdTMyIGZsYXNoYWRkciA9IDB4MDA7CisKKwlmb3IgKGJsb2NrbnVt ID0gMDsgYmxvY2tudW0gPCA4OyBibG9ja251bSsrKSB7CisJCWZsYXNoYWRkciA9IGJsb2NrbnVt ICogU1pfMzJLOworCQlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgIDB4ZTA1YSwgMHgw NCk7CisJCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAgMHhlMDVhLCAweDAwKTsKKwkJ cmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsICAweGUwNWIsIGZsYXNoYWRkciA+PiAxNik7 CisJCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAgMHhlMDVjLCBmbGFzaGFkZHIgPj4g OCk7CisJCXJlZ21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAgMHhlMDVkLCBmbGFzaGFkZHIp OworCQlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgIDB4ZTA1YSwgMHgwMSk7CisJCXJl Z21hcF93cml0ZShsdDg3MTNzeC0+cmVnbWFwLCAgMHhlMDVhLCAweDAwKTsKKwkJbXNsZWVwKDEw MCk7CisJCWkgPSAwOworCQl3aGlsZSAoMSkgeworCQkJZmxhc2hfc3RhdHVzID0gbHQ4NzEzc3hf cmVhZF9mbGFzaF9zdGF0dXMobHQ4NzEzc3gpOworCQkJaWYgKChmbGFzaF9zdGF0dXMgJiAweDAx KSA9PSAwKQorCQkJCWJyZWFrOworCisJCQlpZiAoaSA+IDUwKQorCQkJCWJyZWFrOworCisJCQlp Kys7CisJCQltc2xlZXAoNTApOworCQl9CisJfQorCWRldl9kYmcobHQ4NzEzc3gtPmRldiwgImVy YXNlIGZsYXNoIGRvbmUuXG4iKTsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfbG9hZF9tYWlu X2Z3X3RvX3NyYW0oc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCkKK3sKKwlyZWdtYXBfd3JpdGUo bHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDY4LCAweDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gt PnJlZ21hcCwgMHhlMDY5LCAweDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwg MHhlMDZhLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDY1LCAw eDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDY2LCAweGZmKTsKKwly ZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDY3LCAweGZmKTsKKwlyZWdtYXBfd3Jp dGUobHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDZiLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEz c3gtPnJlZ21hcCwgMHhlMDZjLCAweDAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21h cCwgMHhlMDYwLCAweDAxKTsKKwltc2xlZXAoMjAwKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gt PnJlZ21hcCwgMHhlMDYwLCAweDAwKTsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfbG9hZF9i YW5rX2Z3X3RvX3NyYW0oc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCwgdTY0IGFkZHIpCit7CisJ cmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2OCwgKChhZGRyICYgMHhmZjAwMDAp ID4+IDE2KSk7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2OSwgKChhZGRy ICYgMHgwMGZmMDApID4+IDgpKTsKKwlyZWdtYXBfd3JpdGUobHQ4NzEzc3gtPnJlZ21hcCwgMHhl MDZhLCAoYWRkciAmIDB4MDAwMGZmKSk7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAs IDB4ZTA2NSwgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2Niwg MHgzMCk7CisJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2NywgMHgwMCk7CisJ cmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2YiwgMHgwMCk7CisJcmVnbWFwX3dy aXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA2YywgMHgwMCk7CisJcmVnbWFwX3dyaXRlKGx0ODcx M3N4LT5yZWdtYXAsIDB4ZTA2MCwgMHgwMSk7CisJbXNsZWVwKDUwKTsKKwlyZWdtYXBfd3JpdGUo bHQ4NzEzc3gtPnJlZ21hcCwgMHhlMDYwLCAweDAwKTsKK30KKworc3RhdGljIGludCBsdDg3MTNz eF93cml0ZV9kYXRhKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEzc3gsIGNvbnN0IHU4ICpkYXRhLCB1 NjQgZmlsZXNpemUpCit7CisJaW50IHBhZ2UgPSAwLCBudW0gPSAwLCBpID0gMCwgdmFsOworCisJ cGFnZSA9IChmaWxlc2l6ZSAlIExUODcxM1NYX1BBR0VfU0laRSkgPworCQkJKChmaWxlc2l6ZSAv IExUODcxM1NYX1BBR0VfU0laRSkgKyAxKSA6IChmaWxlc2l6ZSAvIExUODcxM1NYX1BBR0VfU0la RSk7CisKKwlkZXZfZGJnKGx0ODcxM3N4LT5kZXYsCisJCSJXcml0aW5nIHRvIFNyYW09JXUgcGFn ZXMsIHRvdGFsIHNpemUgPSAlbGx1IGJ5dGVzXG4iLCBwYWdlLCBmaWxlc2l6ZSk7CisKKwlmb3Ig KG51bSA9IDA7IG51bSA8IHBhZ2U7IG51bSsrKSB7CisJCWRldl9kYmcobHQ4NzEzc3gtPmRldiwg InBhZ2VbJWRdXG4iLCBudW0pOworCQlsdDg3MTNzeF9pMmNfdG9fc3JhbShsdDg3MTNzeCk7CisK KwkJZm9yIChpID0gMDsgaSA8IExUODcxM1NYX1BBR0VfU0laRTsgaSsrKSB7CisJCQlpZiAoKG51 bSAqIExUODcxM1NYX1BBR0VfU0laRSArIGkpIDwgZmlsZXNpemUpCisJCQkJdmFsID0gKihkYXRh ICsgKG51bSAqIExUODcxM1NYX1BBR0VfU0laRSArIGkpKTsKKwkJCWVsc2UKKwkJCQl2YWwgPSAw eGZmOworCQkJcmVnbWFwX3dyaXRlKGx0ODcxM3N4LT5yZWdtYXAsIDB4ZTA1OSwgdmFsKTsKKwkJ fQorCisJCWx0ODcxM3N4X3dyZW4obHQ4NzEzc3gpOworCQlsdDg3MTNzeF9zcmFtX3RvX2ZsYXNo KGx0ODcxM3N4KTsKKwl9CisKKwlsdDg3MTNzeF93cmRpKGx0ODcxM3N4KTsKKwlsdDg3MTNzeF9k aXNhYmxlX3NyYW1fd3JpdGUobHQ4NzEzc3gpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGx0ODcxM3N4X21haW5fdXBncmFkZV9yZXN1bHQoc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNz eCkKK3sKKwl1MzIgbWFpbl9jcmNfcmVzdWx0OworCisJcmVnbWFwX3JlYWQobHQ4NzEzc3gtPnJl Z21hcCwgMHhlMDIzLCAmbWFpbl9jcmNfcmVzdWx0KTsKKworCWRldl9kYmcobHQ4NzEzc3gtPmRl diwgIk1haW4gQ1JDIEhXOiAweCUwMlhcbiIsIG1haW5fY3JjX3Jlc3VsdCk7CisJZGV2X2RiZyhs dDg3MTNzeC0+ZGV2LCAiTWFpbiBDUkMgRlc6IDB4JTAyWFxuIiwgbHQ4NzEzc3gtPm1haW5fY3Jj X3ZhbHVlKTsKKworCWlmIChtYWluX2NyY19yZXN1bHQgPT0gbHQ4NzEzc3gtPm1haW5fY3JjX3Zh bHVlKQorCQlkZXZfaW5mbyhsdDg3MTNzeC0+ZGV2LCAiTWFpbiBGaXJtd2FyZSBVcGdyYWRlIFN1 Y2Nlc3MuXG4iKTsKKwllbHNlCisJCWRldl9lcnIobHQ4NzEzc3gtPmRldiwgIk1haW4gRmlybXdh cmUgVXBncmFkZSBGYWlsZWQuXG4iKTsKK30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfYmFua191 cGdyYWRlX3Jlc3VsdChzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4LCB1OCBiYW5rbnVtKQorewor CXUzMiBiYW5rX2NyY19yZXN1bHQ7CisKKwlyZWdtYXBfcmVhZChsdDg3MTNzeC0+cmVnbWFwLCAw eGUwMjMsICZiYW5rX2NyY19yZXN1bHQpOworCisJZGV2X2RiZyhsdDg3MTNzeC0+ZGV2LCAiQmFu ayAlZCBDUkMgUmVzdWx0OiAweCUwMlhcbiIsIGJhbmtudW0sIGJhbmtfY3JjX3Jlc3VsdCk7CisK KwlpZiAoYmFua19jcmNfcmVzdWx0ID09IGx0ODcxM3N4LT5iYW5rX2NyY192YWx1ZVtiYW5rbnVt XSkKKwkJZGV2X2luZm8obHQ4NzEzc3gtPmRldiwgIkJhbmsgJWQgRmlybXdhcmUgVXBncmFkZSBT dWNjZXNzLlxuIiwgYmFua251bSk7CisJZWxzZQorCQlkZXZfZXJyKGx0ODcxM3N4LT5kZXYsICJC YW5rICVkIEZpcm13YXJlIFVwZ3JhZGUgRmFpbGVkLlxuIiwgYmFua251bSk7Cit9CisKK3N0YXRp YyB2b2lkIGx0ODcxM3N4X2JhbmtfcmVzdWx0X2NoZWNrKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEz c3gpCit7CisJaW50IGk7CisJdTY0IGFkZHIgPSAweDAxMDAwMDsKKworCWZvciAoaSA9IDA7IGkg PCBsdDg3MTNzeC0+YmFua19udW07IGkrKykgeworCQlsdDg3MTNzeF9sb2FkX2JhbmtfZndfdG9f c3JhbShsdDg3MTNzeCwgYWRkcik7CisJCWx0ODcxM3N4X2JhbmtfdXBncmFkZV9yZXN1bHQobHQ4 NzEzc3gsIGkpOworCQlhZGRyICs9IDB4MzAwMDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgbHQ4NzEz c3hfZmlybXdhcmVfdXBncmFkZShzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4KQoreworCWludCBy ZXQ7CisKKwlsdDg3MTNzeF9jb25maWdfcGFyYW1ldGVycyhsdDg3MTNzeCk7CisKKwlsdDg3MTNz eF9ibG9ja19lcmFzZShsdDg3MTNzeCk7CisKKwlpZiAobHQ4NzEzc3gtPmZ3LT5zaXplIDwgU1pf NjRLKSB7CisJCXJldCA9IGx0ODcxM3N4X3dyaXRlX2RhdGEobHQ4NzEzc3gsIGx0ODcxM3N4LT5m d19idWZmZXIsIFNaXzY0Syk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlkZXZfZXJyKGx0ODcxM3N4 LT5kZXYsICJGYWlsZWQgdG8gd3JpdGUgZmlybXdhcmUgZGF0YTogJWRcbiIsIHJldCk7CisJCQly ZXR1cm4gcmV0OworCQl9CisJfSBlbHNlIHsKKwkJcmV0ID0gbHQ4NzEzc3hfd3JpdGVfZGF0YShs dDg3MTNzeCwgbHQ4NzEzc3gtPmZ3X2J1ZmZlciwgbHQ4NzEzc3gtPmZ3LT5zaXplKTsKKwkJaWYg KHJldCA8IDApIHsKKwkJCWRldl9lcnIobHQ4NzEzc3gtPmRldiwgIkZhaWxlZCB0byB3cml0ZSBm aXJtd2FyZSBkYXRhOiAlZFxuIiwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJZGV2 X2RiZyhsdDg3MTNzeC0+ZGV2LCAiV3JpdGUgRGF0YSBkb25lLlxuIik7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBsdDg3MTNzeF9maXJtd2FyZV91cGRhdGUoc3RydWN0IGx0ODcxM3N4 ICpsdDg3MTNzeCkKK3sKKwlpbnQgcmV0ID0gMDsKKworCWd1YXJkKG11dGV4KSgmbHQ4NzEzc3gt Pm9jbV9sb2NrKTsKKwlsdDg3MTNzeF9pMmNfZW5hYmxlKGx0ODcxM3N4KTsKKworCXJldCA9IGx0 ODcxM3N4X3ByZXBhcmVfZmlybXdhcmVfZGF0YShsdDg3MTNzeCk7CisJaWYgKHJldCA8IDApIHsK KwkJZGV2X2VycihsdDg3MTNzeC0+ZGV2LCAiRmFpbGVkIHRvIHByZXBhcmUgZmlybXdhcmUgZGF0 YTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyb3I7CisJfQorCisJcmV0ID0gbHQ4NzEzc3hfZmly bXdhcmVfdXBncmFkZShsdDg3MTNzeCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihsdDg3 MTNzeC0+ZGV2LCAiVXBncmFkZSBmYWlsdXJlLlxuIik7CisJCWdvdG8gZXJyb3I7CisJfQorCisJ LyogVmFsaWRhdGUgQ1JDICovCisJbHQ4NzEzc3hfbG9hZF9tYWluX2Z3X3RvX3NyYW0obHQ4NzEz c3gpOworCWx0ODcxM3N4X21haW5fdXBncmFkZV9yZXN1bHQobHQ4NzEzc3gpOworCWx0ODcxM3N4 X3dyZGkobHQ4NzEzc3gpOworCWx0ODcxM3N4X2ZpZm9fcmVzZXQobHQ4NzEzc3gpOworCWx0ODcx M3N4X2JhbmtfcmVzdWx0X2NoZWNrKGx0ODcxM3N4KTsKKwlsdDg3MTNzeF93cmRpKGx0ODcxM3N4 KTsKKworZXJyb3I6CisJbHQ4NzEzc3hfaTJjX2Rpc2FibGUobHQ4NzEzc3gpOworCWlmICghcmV0 KQorCQlsdDg3MTNzeF9yZXNldChsdDg3MTNzeCk7CisKKwlrdmZyZWUobHQ4NzEzc3gtPmZ3X2J1 ZmZlcik7CisJbHQ4NzEzc3gtPmZ3X2J1ZmZlciA9IE5VTEw7CisKKwlpZiAobHQ4NzEzc3gtPmZ3 KSB7CisJCXJlbGVhc2VfZmlybXdhcmUobHQ4NzEzc3gtPmZ3KTsKKwkJbHQ4NzEzc3gtPmZ3ID0g TlVMTDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBsdDg3MTNzeF9yZXNl dChzdHJ1Y3QgbHQ4NzEzc3ggKmx0ODcxM3N4KQoreworCWRldl9kYmcobHQ4NzEzc3gtPmRldiwg InJlc2V0IGJyaWRnZS5cbiIpOworCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChsdDg3MTNzeC0+ cmVzZXRfZ3BpbywgMSk7CisJbXNsZWVwKDIwKTsKKworCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVl cChsdDg3MTNzeC0+cmVzZXRfZ3BpbywgMCk7CisJbXNsZWVwKDIwKTsKKworCWRldl9kYmcobHQ4 NzEzc3gtPmRldiwgInJlc2V0IGRvbmUuXG4iKTsKK30KKworc3RhdGljIGludCBsdDg3MTNzeF9y ZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBsdDg3MTNzeCAqbHQ4NzEzc3gpCit7CisJaW50IHJldDsK KworCXJldCA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGUobHQ4NzEzc3gtPmRldiwgInZkZCIp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShsdDg3MTNzeC0+ZGV2LCBy ZXQsICJmYWlsZWQgdG8gZW5hYmxlIHZkZCByZWd1bGF0b3JcbiIpOworCisJdXNsZWVwX3Jhbmdl KDEwMDAsIDEwMDAwKTsKKworCXJldCA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGUobHQ4NzEz c3gtPmRldiwgInZjYyIpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShs dDg3MTNzeC0+ZGV2LCByZXQsICJmYWlsZWQgdG8gZW5hYmxlIHZjYyByZWd1bGF0b3JcbiIpOwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGx0ODcxM3N4X2JyaWRnZV9hdHRhY2goc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCQkgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK KwkJCQkgIGVudW0gZHJtX2JyaWRnZV9hdHRhY2hfZmxhZ3MgZmxhZ3MpCit7CisJc3RydWN0IGx0 ODcxM3N4ICpsdDg3MTNzeCA9IGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCBsdDg3MTNzeCwg YnJpZGdlKTsKKworCXJldHVybiBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLAorCQkJCWx0ODcx M3N4LT5uZXh0X2JyaWRnZSwKKwkJCQlicmlkZ2UsIGZsYWdzKTsKK30KKworc3RhdGljIGludCBs dDg3MTNzeF9ncGlvX2luaXQoc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCkKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBsdDg3MTNzeC0+ZGV2OworCisJbHQ4NzEzc3gtPnJlc2V0X2dwaW8gPSBk ZXZtX2dwaW9kX2dldChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJS KGx0ODcxM3N4LT5yZXNldF9ncGlvKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJf RVJSKGx0ODcxM3N4LT5yZXNldF9ncGlvKSwKKwkJCQkgICAgICJmYWlsZWQgdG8gYWNxdWlyZSBy ZXNldCBncGlvXG4iKTsKKworCS8qIHBvd2VyIGVuYWJsZSBncGlvICovCisJbHQ4NzEzc3gtPmVu YWJsZV9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAiZW5hYmxlIiwgR1BJT0Rf T1VUX0hJR0gpOworCWlmIChJU19FUlIobHQ4NzEzc3gtPmVuYWJsZV9ncGlvKSkKKwkJcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGx0ODcxM3N4LT5lbmFibGVfZ3BpbyksCisJCQkJ ICAgICAiZmFpbGVkIHRvIGFjcXVpcmUgZW5hYmxlIGdwaW9cbiIpOworCXJldHVybiAwOworfQor CitzdGF0aWMgc3NpemVfdCBsdDg3MTNzeF9maXJtd2FyZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpk ZXYsCisJCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAg ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pCit7CisJc3RydWN0IGx0ODcxM3N4ICpsdDg3 MTNzeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlyZXQgPSBsdDg3MTNz eF9maXJtd2FyZV91cGRhdGUobHQ4NzEzc3gpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0 OworCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUl9XTyhsdDg3MTNzeF9maXJt d2FyZSk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpsdDg3MTNzeF9hdHRyc1tdID0gewor CSZkZXZfYXR0cl9sdDg3MTNzeF9maXJtd2FyZS5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBsdDg3MTNzeF9hdHRyX2dyb3VwID0geworCS5h dHRycyA9IGx0ODcxM3N4X2F0dHJzLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKmx0ODcxM3N4X2F0dHJfZ3JvdXBzW10gPSB7CisJJmx0ODcxM3N4X2F0dHJfZ3Jv dXAsCisJTlVMTCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBs dDg3MTNzeF9icmlkZ2VfZnVuY3MgPSB7CisJLmF0dGFjaCA9IGx0ODcxM3N4X2JyaWRnZV9hdHRh Y2gsCit9OworCitzdGF0aWMgaW50IGx0ODcxM3N4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCit7CisJc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeDsKKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmY2xpZW50LT5kZXY7CisJaW50IHJldDsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9u YWxpdHkoY2xpZW50LT5hZGFwdGVyLCBJMkNfRlVOQ19JMkMpKQorCQlyZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIC1FTk9ERVYsICJkZXZpY2UgZG9lc24ndCBzdXBwb3J0IEkyQ1xuIik7CisKKwls dDg3MTNzeCA9IGRldm1fZHJtX2JyaWRnZV9hbGxvYyhkZXYsIHN0cnVjdCBsdDg3MTNzeCwgYnJp ZGdlLCAmbHQ4NzEzc3hfYnJpZGdlX2Z1bmNzKTsKKwlpZiAoSVNfRVJSKGx0ODcxM3N4KSkKKwkJ cmV0dXJuIFBUUl9FUlIobHQ4NzEzc3gpOworCisJbHQ4NzEzc3gtPmRldiA9IGRldjsKKwlsdDg3 MTNzeC0+Y2xpZW50ID0gY2xpZW50OworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGx0ODcx M3N4KTsKKworCXJldCA9IGRldm1fbXV0ZXhfaW5pdChsdDg3MTNzeC0+ZGV2LCAmbHQ4NzEzc3gt Pm9jbV9sb2NrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJbHQ4NzEzc3gtPnJlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJmx0ODcxM3N4X3JlZ21hcF9jb25maWcp OworCWlmIChJU19FUlIobHQ4NzEzc3gtPnJlZ21hcCkpCisJCXJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgUFRSX0VSUihsdDg3MTNzeC0+cmVnbWFwKSwgInJlZ21hcCBpMmMgaW5pdCBmYWlsZWRc biIpOworCisJcmV0ID0gZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdlKGx0ODcxM3N4LT5kZXYt Pm9mX25vZGUsIDEsIC0xLCBOVUxMLAorCQkJCQkgICZsdDg3MTNzeC0+bmV4dF9icmlkZ2UpOwor CWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbHQ4NzEzc3hfZ3Bpb19pbml0 KGx0ODcxM3N4KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGx0ODcx M3N4X3JlZ3VsYXRvcl9lbmFibGUobHQ4NzEzc3gpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwlsdDg3MTNzeF9yZXNldChsdDg3MTNzeCk7CisKKwlsdDg3MTNzeC0+YnJpZGdlLmZ1bmNz ID0gJmx0ODcxM3N4X2JyaWRnZV9mdW5jczsKKwlsdDg3MTNzeC0+YnJpZGdlLm9mX25vZGUgPSBk ZXYtPm9mX25vZGU7CisJbHQ4NzEzc3gtPmJyaWRnZS50eXBlID0gRFJNX01PREVfQ09OTkVDVE9S X0Rpc3BsYXlQb3J0OworCWRybV9icmlkZ2VfYWRkKCZsdDg3MTNzeC0+YnJpZGdlKTsKKworCWNy YzhfcG9wdWxhdGVfbXNiKGx0ODcxM3N4X2NyY190YWJsZSwgMHgzMSk7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgbHQ4NzEzc3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCit7CisJc3RydWN0IGx0ODcxM3N4ICpsdDg3MTNzeCA9IGkyY19nZXRfY2xpZW50ZGF0YShj bGllbnQpOworCisJZHJtX2JyaWRnZV9yZW1vdmUoJmx0ODcxM3N4LT5icmlkZ2UpOworfQorCitz dGF0aWMgc3RydWN0IGkyY19kZXZpY2VfaWQgbHQ4NzEzc3hfaWRbXSA9IHsKKwl7ICJsb250aXVt LGx0ODcxM3N4IiwgMCB9LAorCXsgLyogc2VudGluZWwgKi8gfQorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgbHQ4NzEzc3hfbWF0Y2hfdGFibGVbXSA9IHsKKwl7IC5jb21w YXRpYmxlID0gImxvbnRpdW0sbHQ4NzEzc3giIH0sCisJeyAvKiBzZW50aW5lbCAqLyB9Cit9Owor TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHQ4NzEzc3hfbWF0Y2hfdGFibGUpOworCitzdGF0aWMg c3RydWN0IGkyY19kcml2ZXIgbHQ4NzEzc3hfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5u YW1lID0gImx0ODcxM3N4IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gbHQ4NzEzc3hfbWF0Y2hfdGFi bGUsCisJCS5kZXZfZ3JvdXBzID0gbHQ4NzEzc3hfYXR0cl9ncm91cHMsCisJfSwKKwkucHJvYmUg PSBsdDg3MTNzeF9wcm9iZSwKKwkucmVtb3ZlID0gbHQ4NzEzc3hfcmVtb3ZlLAorCS5pZF90YWJs ZSA9IGx0ODcxM3N4X2lkLAorfTsKKworbW9kdWxlX2kyY19kcml2ZXIobHQ4NzEzc3hfZHJpdmVy KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigibHQ4NzEzc3gg ZHJtIGJyaWRnZSBkcml2ZXIiKTsKK01PRFVMRV9BVVRIT1IoIlRvbnkgPHN5eWFuZ0Bsb250aXVt LmNvbT4iKTsKK01PRFVMRV9GSVJNV0FSRShGV19GSUxFKTsKCi0tIAoyLjM0LjEKCg==