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=-7.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,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 803B6C352AA for ; Wed, 2 Oct 2019 10:38:20 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (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 5418921920 for ; Wed, 2 Oct 2019 10:38:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="p/X1lCNP"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="xjcCTAiz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5418921920 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=analog.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id F38E71657; Wed, 2 Oct 2019 12:37:26 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz F38E71657 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1570012697; bh=AV+ATIzMPLG5c6EyVyHl4hQh7wpMnkJ4bJBW2UYI12U=; h=From:To:Date:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=p/X1lCNPsAog615CWfHYVKMfXVb+ziNW9bp039pzEuIxX0OFfBze6ZzwqvLuRrmSX MJInz9g3s2w3brvoWxhiyYMENRDRJrY5pR0tNSc5xcdkjTVytVO28JKL4bPEEw6ouk 1oi0trYb6lN4S/LBf0T/GM+kC24t6VctZ6+bo+qw= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 89894F80377; Wed, 2 Oct 2019 12:37:26 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 24841F80391; Wed, 2 Oct 2019 12:37:25 +0200 (CEST) Received: from mx0b-00128a01.pphosted.com (mx0b-00128a01.pphosted.com [148.163.139.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 4E74FF8016F for ; Wed, 2 Oct 2019 12:37:20 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 4E74FF8016F Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="xjcCTAiz" Received: from pps.filterd (m0167091.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x92AWhlO026099; Wed, 2 Oct 2019 06:37:16 -0400 Received: from nam03-co1-obe.outbound.protection.outlook.com (mail-co1nam03lp2056.outbound.protection.outlook.com [104.47.40.56]) by mx0b-00128a01.pphosted.com with ESMTP id 2va19cw2sv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Oct 2019 06:37:16 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XnaMLlYSytCdbgDFcdtaZAP6eZZI9X9pJk6nrrQv06vAovPF6NQ99bpaDu8z48LBe4xKd4g4aLy8FCl/GKyy18zLdTtEW4iVJ4WCX0g+6q3mgRdMKX2QlvNh+EzCUqG+FxXjl/ioSN3eLCWy8MFwHUoqSm027J6kZlmhkmJ2dtlE/DGqjfQDVjZ1jR1npR7udXz3weC2WWOc+F480ySYGeEljV1xYXcCIUXviBqbtMzLNXPck6D1Kha0imLPHbxsEN7kO+3Mv7RS2WVoPHYhW7AV7ELTUjcMNa3v7z50OXEzxwPtzUliRFjQpHYhwuMMBvkqluy7416r6+eyvgl9HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rWOqi/j2Rmzlj3d/VUXqE9ggGK+uh2DIzInZY6ldmrg=; b=WyyVRJOgwc8npUWBLg0Hv3Wc4gGHxVQqTixnxeogMKav+/nvLQ3+tgvDOfsBWQQCLF2LsB4QgI8OVzIESEkpL32fH+Xu2CSCzMdHWtB9SMatd0Mh3dWrMVqWcdGkYkeUpqbooTvqHaif4SU53dx0Xk5mXUr0jhQV7JjZ9Q4ETMOTSIGjGZM1eO5oYO9PRzEZu/ugZFNZUN1Mo6heQ7j3c093aSVP6bWcIjJun5cDc0lxPpov+9niAKv5XJqqqGSG5pmtXRGuG87D+IrUyBjhgfDA5UbWOnyaLmFF/i61JODfRAlG1bF49fE77N7O1e76hp/jYliExxr5KMeOMD6xfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rWOqi/j2Rmzlj3d/VUXqE9ggGK+uh2DIzInZY6ldmrg=; b=xjcCTAizVX5shqcvYpD0pj8MvdImYuJQOYmrBQci73TgVJja+PiS4DIv/yr5Ni4LLsAdz6iiNFtqPzxNVvDce+QJZW+o0a/NiCgTYcuo8osiGNKhPdQnG+2RhTJANHjCXikfeOScvTJfu1l/zJvGKM3AOVuoya50WVjMnDJc2OM= Received: from BN6PR03CA0065.namprd03.prod.outlook.com (2603:10b6:404:4c::27) by MWHPR03MB3200.namprd03.prod.outlook.com (2603:10b6:301:42::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.17; Wed, 2 Oct 2019 10:37:13 +0000 Received: from BL2NAM02FT028.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::201) by BN6PR03CA0065.outlook.office365.com (2603:10b6:404:4c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.15 via Frontend Transport; Wed, 2 Oct 2019 10:37:13 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT028.mail.protection.outlook.com (10.152.77.165) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2305.20 via Frontend Transport; Wed, 2 Oct 2019 10:37:13 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id x92AbCjM019576 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Wed, 2 Oct 2019 03:37:12 -0700 Received: from nsa.sphairon.box (10.44.3.90) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 2 Oct 2019 06:37:10 -0400 From: =?UTF-8?q?Nuno=20S=C3=A1?= To: , Date: Wed, 2 Oct 2019 12:37:28 +0200 Message-ID: <20191002103729.94676-1-nuno.sa@analog.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Originating-IP: [10.44.3.90] X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(199004)(189003)(54906003)(186003)(2906002)(16526019)(6666004)(246002)(36756003)(8676002)(356004)(316002)(110136005)(26005)(5660300002)(6116002)(14444005)(53416004)(1076003)(50226002)(23676004)(8936002)(4326008)(47776003)(5820100001)(3846002)(486006)(30864003)(478600001)(50466002)(426003)(2870700001)(7736002)(6306002)(70206006)(45776006)(7636002)(70586007)(305945005)(966005)(86362001)(106002)(336012)(126002)(2616005)(476003); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB3200; H:nwd2mta2.analog.com; FPR:; SPF:Pass; LANG:en; PTR:nwd2mail11.analog.com; A:1; MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 736bb32e-7ca9-4616-8267-08d747247c94 X-MS-TrafficTypeDiagnostic: MWHPR03MB3200: X-MS-Exchange-PUrlCount: 2 X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1417; X-Forefront-PRVS: 0178184651 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q6BUtzJpeyNdbm1NP0t3T29HSeqCW2OkI8kI7a0AXzoiMyI9So7s95XXmN1w37bbJ++D3oKLvEV2PrxjqY6AMmnv7SdIRk66thYTav2X6Nj5vEVNh7McCZKnuiH7tzrp/88nQ4PAU2F8yLdSFN4RbW9Ug3XlogIauiDGbbOBFCGJZkDHnq6udKEu/2o3fQ9LYT4dIXl1gQG9hOZdANVERvFTK3rmaopsPlTTHyrE8fqdfTEwkYj1yvC2v5HGQPruTmbj6peXveTk8legwIrv1/Kchs4eZNhk18yoW6qK4l5znJHCumCnxAhoKlOeDKygckdNjkC4qFki9MPMCGPHcnGLUDELuD8jSOqeV8/MEmaVbxcpnJtglWbH68mP5BxIRYUderedxAEPYBSKlMjAim96GPtDprfYCMM6ZYDuq5s6lyD5VtMzcl0Qx82llejMOnX2rwMzotuAWYb+8BUW5A== X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2019 10:37:13.0246 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 736bb32e-7ca9-4616-8267-08d747247c94 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a; Ip=[137.71.25.57]; Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB3200 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-02_06:2019-10-01,2019-10-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 lowpriorityscore=0 mlxlogscore=999 adultscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 malwarescore=0 impostorscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910020099 Cc: Mark Rutland , Lars-Peter Clausen , Takashi Iwai , Rob Herring , Liam Girdwood , Mark Brown Subject: [alsa-devel] [PATCH v2 1/2] ASOC: Add ADAU7118 8 Channel PDM-to-I2S/TDM Converter driver X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSA4IGNoYW5uZWwgUERNLXRvLUkyUy9URE0g Y29udmVydGVyLiBUaGUKQURBVTcxMTggY29udmVydHMgZm91ciBzdGVyZW8gcHVsc2UgZGVuc2l0 eSBtb2R1bGF0aW9uIChQRE0pIGJpdHN0cmVhbXMKaW50byBvbmUgcHVsc2UgY29kZSBtb2R1bGF0 aW9uIChQQ00pIG91dHB1dCBzdHJlYW0uIFRoZSBzb3VyY2UgZm9yIHRoZSBQRE0KZGF0YSBjYW4g YmUgZWlnaHQgbWljcm9waG9uZXMgb3Igb3RoZXIgUERNIHNvdXJjZXMuIFRoZSBQQ00gYXVkaW8g ZGF0YSBpcwpvdXRwdXQgb24gYSBzZXJpYWwgYXVkaW8gaW50ZXJmYWNlIHBvcnQgaW4gZWl0aGVy IGludGVyLUlDIHNlcmlhbCAoSTJTKSBvcgp0aW1lIGRvbWFpbiBtdWx0aXBsZXhlZCAoVERNKSBm b3JtYXQuCgpTaWduZWQtb2ZmLWJ5OiBOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgotLS0K Q2hhbmdlcyBpbiB2MjoKICogVXNlIEMrKyBjb21lbnQgc3R5bGUgb24gdGhlIGVudGlyZSBjb21t ZW50IGluIHRoZSAuYyBmaWxlczsKICogRG8gbm90IHVzZSB0ZXJuZXJ5IG9wZXJhdG9yOwogKiBE byBub3QgdXNlIGBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWxgIGFzIHRoZSBkZXZpY2UgYWx3 YXlzIHJlcXVpcmVzIHBvd2VyOwogKiBMZXQgREFQTSBzdXNwZW5kL3Jlc3VtZSB0aGUgZGV2aWNl LgoKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc291bmQvc29jL2Nv ZGVjcy9LY29uZmlnICAgICAgICB8ICAyOCArKwogc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZSAg ICAgICB8ICAgNiArCiBzb3VuZC9zb2MvY29kZWNzL2FkYXU3MTE4LWh3LmMgIHwgIDQzICsrKwog c291bmQvc29jL2NvZGVjcy9hZGF1NzExOC1pMmMuYyB8ICA4MiArKysrKwogc291bmQvc29jL2Nv ZGVjcy9hZGF1NzExOC5jICAgICB8IDU4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwogc291bmQvc29jL2NvZGVjcy9hZGF1NzExOC5oICAgICB8ICAyNCArKwogNyBmaWxlcyBjaGFu Z2VkLCA3NzAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9jb2Rl Y3MvYWRhdTcxMTgtaHcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9jb2RlY3MvYWRh dTcxMTgtaTJjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL2FkYXU3MTE4 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL2FkYXU3MTE4LmgKCmRpZmYg LS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDI5NmRlMmI1MWM4My4uOGJh NDdjYWM4ZTgzIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAt MTAwMiw2ICsxMDAyLDcgQEAgRjoJZHJpdmVycy9tZWRpYS9pMmMvYWR2Nzg0MioKIAogQU5BTE9H IERFVklDRVMgSU5DIEFTT0MgQ09ERUMgRFJJVkVSUwogTToJTGFycy1QZXRlciBDbGF1c2VuIDxs YXJzQG1ldGFmb28uZGU+CitNOglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgogTDoJYWxz YS1kZXZlbEBhbHNhLXByb2plY3Qub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykK IFc6CWh0dHA6Ly93aWtpLmFuYWxvZy5jb20vCiBXOglodHRwOi8vZXouYW5hbG9nLmNvbS9jb21t dW5pdHkvbGludXgtZGV2aWNlLWRyaXZlcnMKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mv S2NvbmZpZyBiL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZwppbmRleCBiY2FjOTU3ODU0OTMuLmFl MjEzYzYzOTJlYyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9LY29uZmlnCisrKyBiL3Nv dW5kL3NvYy9jb2RlY3MvS2NvbmZpZwpAQCAtMzQsNiArMzQsOCBAQCBjb25maWcgU05EX1NPQ19B TExfQ09ERUNTCiAJc2VsZWN0IFNORF9TT0NfQURBVTE5NzdfSTJDIGlmIEkyQwogCXNlbGVjdCBT TkRfU09DX0FEQVUxNzAxIGlmIEkyQwogCXNlbGVjdCBTTkRfU09DX0FEQVU3MDAyCisJc2VsZWN0 IFNORF9TT0NfQURBVTcxMThfSTJDIGlmIEkyQworCXNlbGVjdCBTTkRfU09DX0FEQVU3MTE4X0hX CiAJc2VsZWN0IFNORF9TT0NfQURTMTE3WAogCXNlbGVjdCBTTkRfU09DX0FLNDEwNCBpZiBTUElf TUFTVEVSCiAJc2VsZWN0IFNORF9TT0NfQUs0MTE4IGlmIEkyQwpAQCAtMzk2LDYgKzM5OCwzMiBA QCBjb25maWcgU05EX1NPQ19BREFVMTk3N19JMkMKIGNvbmZpZyBTTkRfU09DX0FEQVU3MDAyCiAJ dHJpc3RhdGUgIkFuYWxvZyBEZXZpY2VzIEFEQVU3MDAyIFN0ZXJlbyBQRE0tdG8tSTJTL1RETSBD b252ZXJ0ZXIiCiAKK2NvbmZpZyBTTkRfU09DX0FEQVU3MTE4CisJdHJpc3RhdGUKKworY29uZmln IFNORF9TT0NfQURBVTcxMThfSFcKKwl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURBVTcxMTgg OCBDaGFubmVsIFBETS10by1JMlMvVERNIENvbnZlcnRlciAtIEhXIE1vZGUiCisJc2VsZWN0IFNO RF9TT0NfQURBVTcxMTgKKwloZWxwCisJICBFbmFibGUgc3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBE ZXZpY2VzIEFEQVU3MTE4IDggQ2hhbm5lbCBQRE0tdG8tSTJTL1RETQorCSAgQ29udmVydGVyLiBJ biB0aGlzIG1vZGUsIHRoZSBkZXZpY2Ugd29ya3MgaW4gc3RhbmRhbG9uZSBtb2RlIHdoaWNoCisJ ICBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGJ1cyB0byBjb211bmljYXRlIHdpdGggaXQuIFN0ZXJl byBtb2RlIGlzIG5vdAorCSAgc3VwcG9ydGVkIGluIHRoaXMgbW9kZS4KKworCSAgVG8gY29tcGls ZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQorCSAg d2lsbCBiZSBjYWxsZWQgc25kLXNvYy1hZGF1NzExOC1ody4KKworY29uZmlnIFNORF9TT0NfQURB VTcxMThfSTJDCisJdHJpc3RhdGUgIkFuYWxvZyBEZXZpY2VzIEFEQVU3MTE4IDggQ2hhbm5lbCBQ RE0tdG8tSTJTL1RETSBDb252ZXJ0ZXIgLSBJMkMiCisJc2VsZWN0IFNORF9TT0NfQURBVTcxMTgK KwlzZWxlY3QgUkVHTUFQX0kyQworCWhlbHAKKwkgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgQW5h bG9nIERldmljZXMgQURBVTcxMTggOCBDaGFubmVsIFBETS10by1JMlMvVERNCisJICBDb252ZXJ0 ZXIgb3ZlciBJMkMuIFRoaXMgZ2l2ZXMgZnVsbCBzdXBwb3J0IG92ZXIgdGhlIGRldmljZS4KKwor CSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhl IG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgc25kLXNvYy1hZGF1NzExOC1pMmMuCisKIGNvbmZp ZyBTTkRfU09DX0FEQVY4MFgKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29k ZWNzL01ha2VmaWxlIGIvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQppbmRleCA3M2IyZDU5ODJk Y2IuLjIxMTg0MDdhMWRkNSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQor KysgYi9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlCkBAIC0yMiw2ICsyMiw5IEBAIHNuZC1zb2Mt YWRhdTE5Nzctb2JqcyA6PSBhZGF1MTk3Ny5vCiBzbmQtc29jLWFkYXUxOTc3LXNwaS1vYmpzIDo9 IGFkYXUxOTc3LXNwaS5vCiBzbmQtc29jLWFkYXUxOTc3LWkyYy1vYmpzIDo9IGFkYXUxOTc3LWky Yy5vCiBzbmQtc29jLWFkYXU3MDAyLW9ianMgOj0gYWRhdTcwMDIubworc25kLXNvYy1hZGF1NzEx OC1vYmpzIDo9IGFkYXU3MTE4Lm8KK3NuZC1zb2MtYWRhdTcxMTgtaTJjLW9ianMgOj0gYWRhdTcx MTgtaTJjLm8KK3NuZC1zb2MtYWRhdTcxMTgtaHctb2JqcyA6PSBhZGF1NzExOC1ody5vCiBzbmQt c29jLWFkYXY4MHgtb2JqcyA6PSBhZGF2ODB4Lm8KIHNuZC1zb2MtYWRhdjgwMS1vYmpzIDo9IGFk YXY4MDEubwogc25kLXNvYy1hZGF2ODAzLW9ianMgOj0gYWRhdjgwMy5vCkBAIC0zMDUsNiArMzA4 LDkgQEAgb2JqLSQoQ09ORklHX1NORF9TT0NfQURBVTE5NzcpCQkrPSBzbmQtc29jLWFkYXUxOTc3 Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0FEQVUxOTc3X1NQSSkJKz0gc25kLXNvYy1hZGF1MTk3 Ny1zcGkubwogb2JqLSQoQ09ORklHX1NORF9TT0NfQURBVTE5NzdfSTJDKQkrPSBzbmQtc29jLWFk YXUxOTc3LWkyYy5vCiBvYmotJChDT05GSUdfU05EX1NPQ19BREFVNzAwMikJKz0gc25kLXNvYy1h ZGF1NzAwMi5vCitvYmotJChDT05GSUdfU05EX1NPQ19BREFVNzExOCkJKz0gc25kLXNvYy1hZGF1 NzExOC5vCitvYmotJChDT05GSUdfU05EX1NPQ19BREFVNzExOF9JMkMpCSs9IHNuZC1zb2MtYWRh dTcxMTgtaTJjLm8KK29iai0kKENPTkZJR19TTkRfU09DX0FEQVU3MTE4X0hXKQkrPSBzbmQtc29j LWFkYXU3MTE4LWh3Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX0FEQVY4MFgpICArPSBzbmQtc29j LWFkYXY4MHgubwogb2JqLSQoQ09ORklHX1NORF9TT0NfQURBVjgwMSkgICs9IHNuZC1zb2MtYWRh djgwMS5vCiBvYmotJChDT05GSUdfU05EX1NPQ19BREFWODAzKSAgKz0gc25kLXNvYy1hZGF2ODAz Lm8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWRhdTcxMTgtaHcuYyBiL3NvdW5kL3Nv Yy9jb2RlY3MvYWRhdTcxMTgtaHcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjQ1YTVkMmRjYzBmMgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL3NvYy9jb2RlY3Mv YWRhdTcxMTgtaHcuYwpAQCAtMCwwICsxLDQzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAorLy8KKy8vIEFuYWxvZyBEZXZpY2VzIEFEQVU3MTE4IDggY2hhbm5lbCBQRE0t dG8tSTJTL1RETSBDb252ZXJ0ZXIgU3RhbmRhbG9uZSBIdworLy8gZHJpdmVyCisvLworLy8gQ29w eXJpZ2h0IDIwMTkgQW5hbG9nIERldmljZXMgSW5jLgorCisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+CisKKyNpbmNsdWRlICJhZGF1NzExOC5oIgorCitzdGF0aWMgaW50 IGFkYXU3MTE4X3Byb2JlX2h3KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJcmV0 dXJuIGFkYXU3MTE4X3Byb2JlKCZwZGV2LT5kZXYsIE5VTEwsIHRydWUpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhZGF1NzExOF9vZl9tYXRjaFtdID0geworCXsgLmNv bXBhdGlibGUgPSAiYWRpLGFkYXU3MTE4IiB9LAorCXt9Cit9OworTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgYWRhdTcxMThfb2ZfbWF0Y2gpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHBsYXRmb3Jt X2RldmljZV9pZCBhZGF1NzExOF9pZFtdID0geworCXsgLm5hbWUJPSAiYWRhdTcxMTgiIH0sCisJ eyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgYWRhdTcxMThfaWQpOworCitz dGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhZGF1NzExOF9kcml2ZXJfaHcgPSB7CisJLmRy aXZlciA9IHsKKwkJLm5hbWUgPSAiYWRhdTcxMTgiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBhZGF1 NzExOF9vZl9tYXRjaCwKKwl9LAorCS5wcm9iZSA9IGFkYXU3MTE4X3Byb2JlX2h3LAorCS5pZF90 YWJsZSA9IGFkYXU3MTE4X2lkLAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWRhdTcxMThf ZHJpdmVyX2h3KTsKKworTU9EVUxFX0FVVEhPUigiTnVubyBTYSA8bnVuby5zYUBhbmFsb2cuY29t PiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJBREFVNzExOCA4IGNoYW5uZWwgUERNLXRvLUkyUy9U RE0gQ29udmVydGVyIGRyaXZlciBmb3Igc3RhbmRhbG9uZSBodyBtb2RlIik7CitNT0RVTEVfTElD RU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2FkYXU3MTE4LWkyYy5j IGIvc291bmQvc29jL2NvZGVjcy9hZGF1NzExOC1pMmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmE4MjExMzYyZmU4MgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5k L3NvYy9jb2RlY3MvYWRhdTcxMTgtaTJjLmMKQEAgLTAsMCArMSw4MiBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8vCisvLyBBbmFsb2cgRGV2aWNlcyBBREFVNzExOCA4 IGNoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIGRyaXZlciBvdmVyIEkyQworLy8KKy8v IENvcHlyaWdodCAyMDE5IEFuYWxvZyBEZXZpY2VzIEluYy4KKworI2luY2x1ZGUgPGxpbnV4L2ky Yy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5o PgorCisjaW5jbHVkZSAiYWRhdTcxMTguaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdfZGVm YXVsdCBhZGF1NzExOF9yZWdfZGVmYXVsdHNbXSA9IHsKKwl7IEFEQVU3MTE4X1JFR19WRU5ET1Jf SUQsIDB4NDEgfSwKKwl7IEFEQVU3MTE4X1JFR19ERVZJQ0VfSUQxLCAweDcxIH0sCisJeyBBREFV NzExOF9SRUdfREVWSUNFX0lEMiwgMHgxOCB9LAorCXsgQURBVTcxMThfUkVHX1JFVklTSU9OX0lE LCAweDAwIH0sCisJeyBBREFVNzExOF9SRUdfRU5BQkxFUywgMHgzRiB9LAorCXsgQURBVTcxMThf UkVHX0RFQ19SQVRJT19DTEtfTUFQLCAweEMwIH0sCisJeyBBREFVNzExOF9SRUdfSFBGX0NPTlRS T0wsIDB4RDAgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRfQ1RSTDEsIDB4NDEgfSwKKwl7IEFEQVU3 MTE4X1JFR19TUFRfQ1RSTDIsIDB4MDAgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRfQ1goMCksIDB4 MDEgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRfQ1goMSksIDB4MTEgfSwKKwl7IEFEQVU3MTE4X1JF R19TUFRfQ1goMiksIDB4MjEgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRfQ1goMyksIDB4MzEgfSwK Kwl7IEFEQVU3MTE4X1JFR19TUFRfQ1goNCksIDB4NDEgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRf Q1goNSksIDB4NTEgfSwKKwl7IEFEQVU3MTE4X1JFR19TUFRfQ1goNiksIDB4NjEgfSwKKwl7IEFE QVU3MTE4X1JFR19TUFRfQ1goNyksIDB4NzEgfSwKKwl7IEFEQVU3MTE4X1JFR19EUklWRV9TVFJF TkdUSCwgMHgyYSB9LAorCXsgQURBVTcxMThfUkVHX1JFU0VULCAweDAwIH0sCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgYWRhdTcxMThfcmVnbWFwX2NvbmZpZyA9IHsK KwkucmVnX2JpdHMgPSA4LAorCS52YWxfYml0cyA9IDgsCisJLnJlZ19kZWZhdWx0cyA9IGFkYXU3 MTE4X3JlZ19kZWZhdWx0cywKKwkubnVtX3JlZ19kZWZhdWx0cyA9IEFSUkFZX1NJWkUoYWRhdTcx MThfcmVnX2RlZmF1bHRzKSwKKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX1JCVFJFRSwKKwkubWF4 X3JlZ2lzdGVyID0gQURBVTcxMThfUkVHX1JFU0VULAorfTsKKworc3RhdGljIGludCBhZGF1NzEx OF9wcm9iZV9pMmMoc3RydWN0IGkyY19jbGllbnQgKmkyYywKKwkJCSAgICAgIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgcmVnbWFwICptYXA7CisKKwltYXAgPSBk ZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsICZhZGF1NzExOF9yZWdtYXBfY29uZmlnKTsKKwlpZiAo SVNfRVJSKG1hcCkpIHsKKwkJZGV2X2VycigmaTJjLT5kZXYsICJGYWlsZWQgdG8gaW5pdCByZWdt YXAgJWxkXG4iLCBQVFJfRVJSKG1hcCkpOworCQlyZXR1cm4gUFRSX0VSUihtYXApOworCX0KKwor CXJldHVybiBhZGF1NzExOF9wcm9iZSgmaTJjLT5kZXYsIG1hcCwgZmFsc2UpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhZGF1NzExOF9vZl9tYXRjaFtdID0geworCXsg LmNvbXBhdGlibGUgPSAiYWRpLGFkYXU3MTE4IiB9LAorCXt9Cit9OworTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgYWRhdTcxMThfb2ZfbWF0Y2gpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19k ZXZpY2VfaWQgYWRhdTcxMThfaWRbXSA9IHsKKwl7ImFkYXU3MTE4IiwgMH0sCisJe30KK307CitN T0RVTEVfREVWSUNFX1RBQkxFKGkyYywgYWRhdTcxMThfaWQpOworCitzdGF0aWMgc3RydWN0IGky Y19kcml2ZXIgYWRhdTcxMThfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImFk YXU3MTE4IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gYWRhdTcxMThfb2ZfbWF0Y2gsCisJfSwKKwku cHJvYmUgPSBhZGF1NzExOF9wcm9iZV9pMmMsCisJLmlkX3RhYmxlID0gYWRhdTcxMThfaWQsCit9 OworbW9kdWxlX2kyY19kcml2ZXIoYWRhdTcxMThfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigi TnVubyBTYSA8bnVuby5zYUBhbmFsb2cuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJBREFV NzExOCA4IGNoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIGRyaXZlciBvdmVyIEkyQyIp OworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9h ZGF1NzExOC5jIGIvc291bmQvc29jL2NvZGVjcy9hZGF1NzExOC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmY1YTVkNzVmODFhCi0tLSAvZGV2L251bGwKKysrIGIv c291bmQvc29jL2NvZGVjcy9hZGF1NzExOC5jCkBAIC0wLDAgKzEsNTg2IEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLy8KKy8vIEFuYWxvZyBEZXZpY2VzIEFEQVU3MTE4 IDggY2hhbm5lbCBQRE0tdG8tSTJTL1RETSBDb252ZXJ0ZXIgZHJpdmVyCisvLworLy8gQ29weXJp Z2h0IDIwMTkgQW5hbG9nIERldmljZXMgSW5jLgorCisjaW5jbHVkZSA8bGludXgvYml0ZmllbGQu aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4K KyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxzb3VuZC9w Y21fcGFyYW1zLmg+CisjaW5jbHVkZSA8c291bmQvc29jLmg+CisKKyNpbmNsdWRlICJhZGF1NzEx OC5oIgorCisjZGVmaW5lIEFEQVU3MTE4X0RFQ19SQVRJT19NQVNLCQlHRU5NQVNLKDEsIDApCisj ZGVmaW5lIEFEQVU3MTE4X0RFQ19SQVRJTyh4KQkJRklFTERfUFJFUChBREFVNzExOF9ERUNfUkFU SU9fTUFTSywgeCkKKyNkZWZpbmUgQURBVTcxMThfQ0xLX01BUF9NQVNLCQlHRU5NQVNLKDcsIDQp CisjZGVmaW5lIEFEQVU3MTE4X1NMT1RfV0lEVEhfTUFTSwlHRU5NQVNLKDUsIDQpCisjZGVmaW5l IEFEQVU3MTE4X1NMT1RfV0lEVEgoeCkJCUZJRUxEX1BSRVAoQURBVTcxMThfU0xPVF9XSURUSF9N QVNLLCB4KQorI2RlZmluZSBBREFVNzExOF9UUklTVEFURV9NQVNLCQlCSVQoNikKKyNkZWZpbmUg QURBVTcxMThfVFJJU1RBVEUoeCkJCUZJRUxEX1BSRVAoQURBVTcxMThfVFJJU1RBVEVfTUFTSywg eCkKKyNkZWZpbmUgQURBVTcxMThfREFUQV9GTVRfTUFTSwkJR0VOTUFTSygzLCAxKQorI2RlZmlu ZSBBREFVNzExOF9EQVRBX0ZNVCh4KQkJRklFTERfUFJFUChBREFVNzExOF9EQVRBX0ZNVF9NQVNL LCB4KQorI2RlZmluZSBBREFVNzExOF9TQUlfTU9ERV9NQVNLCQlCSVQoMCkKKyNkZWZpbmUgQURB VTcxMThfU0FJX01PREUoeCkJCUZJRUxEX1BSRVAoQURBVTcxMThfU0FJX01PREVfTUFTSywgeCkK KyNkZWZpbmUgQURBVTcxMThfTFJDTEtfQkNMS19QT0xfTUFTSwlHRU5NQVNLKDEsIDApCisjZGVm aW5lIEFEQVU3MTE4X0xSQ0xLX0JDTEtfUE9MKHgpIFwKKwkJCQlGSUVMRF9QUkVQKEFEQVU3MTE4 X0xSQ0xLX0JDTEtfUE9MX01BU0ssIHgpCisjZGVmaW5lIEFEQVU3MTE4X1NQVF9TTE9UX01BU0sJ CUdFTk1BU0soNywgNCkKKyNkZWZpbmUgQURBVTcxMThfU1BUX1NMT1QoeCkJCUZJRUxEX1BSRVAo QURBVTcxMThfU1BUX1NMT1RfTUFTSywgeCkKKyNkZWZpbmUgQURBVTcxMThfRlVMTF9TT0ZUX1Jf TUFTSwlCSVQoMSkKKyNkZWZpbmUgQURBVTcxMThfRlVMTF9TT0ZUX1IoeCkJCUZJRUxEX1BSRVAo QURBVTcxMThfRlVMTF9TT0ZUX1JfTUFTSywgeCkKKworc3RydWN0IGFkYXU3MTE4X2RhdGEgewor CXN0cnVjdCByZWdtYXAgKm1hcDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHJlZ3Vs YXRvciAqaW92ZGQ7CisJc3RydWN0IHJlZ3VsYXRvciAqZHZkZDsKKwl1MzIgc2xvdF93aWR0aDsK Kwl1MzIgc2xvdHM7CisJYm9vbCBod19tb2RlOworCWJvb2wgcmlnaHRfajsKK307CisKKy8qIElu cHV0IEVuYWJsZSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFkYXU3 MTE4X2RhcG1fcGRtX2NvbnRyb2xbNF0gPSB7CisJU09DX0RBUE1fU0lOR0xFKCJDYXB0dXJlIFN3 aXRjaCIsIEFEQVU3MTE4X1JFR19FTkFCTEVTLCAwLCAxLCAwKSwKKwlTT0NfREFQTV9TSU5HTEUo IkNhcHR1cmUgU3dpdGNoIiwgQURBVTcxMThfUkVHX0VOQUJMRVMsIDEsIDEsIDApLAorCVNPQ19E QVBNX1NJTkdMRSgiQ2FwdHVyZSBTd2l0Y2giLCBBREFVNzExOF9SRUdfRU5BQkxFUywgMiwgMSwg MCksCisJU09DX0RBUE1fU0lOR0xFKCJDYXB0dXJlIFN3aXRjaCIsIEFEQVU3MTE4X1JFR19FTkFC TEVTLCAzLCAxLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dp ZGdldCBhZGF1NzExOF93aWRnZXRzX3N3W10gPSB7CisJLyogSW5wdXQgRW5hYmxlIFN3aXRjaGVz ICovCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiUERNMCIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkJ CSAgICAmYWRhdTcxMThfZGFwbV9wZG1fY29udHJvbFswXSksCisJU05EX1NPQ19EQVBNX1NXSVRD SCgiUERNMSIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkJCSAgICAmYWRhdTcxMThfZGFwbV9wZG1f Y29udHJvbFsxXSksCisJU05EX1NPQ19EQVBNX1NXSVRDSCgiUERNMiIsIFNORF9TT0NfTk9QTSwg MCwgMCwKKwkJCSAgICAmYWRhdTcxMThfZGFwbV9wZG1fY29udHJvbFsyXSksCisJU05EX1NPQ19E QVBNX1NXSVRDSCgiUERNMyIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkJCSAgICAmYWRhdTcxMThf ZGFwbV9wZG1fY29udHJvbFszXSksCisKKwkvKiBQRE0gQ2xvY2tzICovCisJU05EX1NPQ19EQVBN X1NVUFBMWSgiUERNX0NMSzAiLCBBREFVNzExOF9SRUdfRU5BQkxFUywgNCwgMCwgTlVMTCwgMCks CisJU05EX1NPQ19EQVBNX1NVUFBMWSgiUERNX0NMSzEiLCBBREFVNzExOF9SRUdfRU5BQkxFUywg NSwgMCwgTlVMTCwgMCksCisKKwkvKiBPdXRwdXQgY2hhbm5lbHMgKi8KKwlTTkRfU09DX0RBUE1f QUlGX09VVCgiQUlGMVRYMSIsICJDYXB0dXJlIiwgMCwgQURBVTcxMThfUkVHX1NQVF9DWCgwKSwK KwkJCSAgICAgMCwgMCksCisJU05EX1NPQ19EQVBNX0FJRl9PVVQoIkFJRjFUWDIiLCAiQ2FwdHVy ZSIsIDAsIEFEQVU3MTE4X1JFR19TUFRfQ1goMSksCisJCQkgICAgIDAsIDApLAorCVNORF9TT0Nf REFQTV9BSUZfT1VUKCJBSUYxVFgzIiwgIkNhcHR1cmUiLCAwLCBBREFVNzExOF9SRUdfU1BUX0NY KDIpLAorCQkJICAgICAwLCAwKSwKKwlTTkRfU09DX0RBUE1fQUlGX09VVCgiQUlGMVRYNCIsICJD YXB0dXJlIiwgMCwgQURBVTcxMThfUkVHX1NQVF9DWCgzKSwKKwkJCSAgICAgMCwgMCksCisJU05E X1NPQ19EQVBNX0FJRl9PVVQoIkFJRjFUWDUiLCAiQ2FwdHVyZSIsIDAsIEFEQVU3MTE4X1JFR19T UFRfQ1goNCksCisJCQkgICAgIDAsIDApLAorCVNORF9TT0NfREFQTV9BSUZfT1VUKCJBSUYxVFg2 IiwgIkNhcHR1cmUiLCAwLCBBREFVNzExOF9SRUdfU1BUX0NYKDUpLAorCQkJICAgICAwLCAwKSwK KwlTTkRfU09DX0RBUE1fQUlGX09VVCgiQUlGMVRYNyIsICJDYXB0dXJlIiwgMCwgQURBVTcxMThf UkVHX1NQVF9DWCg2KSwKKwkJCSAgICAgMCwgMCksCisJU05EX1NPQ19EQVBNX0FJRl9PVVQoIkFJ RjFUWDgiLCAiQ2FwdHVyZSIsIDAsIEFEQVU3MTE4X1JFR19TUFRfQ1goNyksCisJCQkgICAgIDAs IDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgYWRhdTcx MThfcm91dGVzX3N3W10gPSB7CisJeyAiUERNMCIsICJDYXB0dXJlIFN3aXRjaCIsICJQRE1fREFU MCIgfSwKKwl7ICJQRE0xIiwgIkNhcHR1cmUgU3dpdGNoIiwgIlBETV9EQVQxIiB9LAorCXsgIlBE TTIiLCAiQ2FwdHVyZSBTd2l0Y2giLCAiUERNX0RBVDIiIH0sCisJeyAiUERNMyIsICJDYXB0dXJl IFN3aXRjaCIsICJQRE1fREFUMyIgfSwKKwl7ICJBSUYxVFgxIiwgTlVMTCwgIlBETTAiIH0sCisJ eyAiQUlGMVRYMiIsIE5VTEwsICJQRE0wIiB9LAorCXsgIkFJRjFUWDMiLCBOVUxMLCAiUERNMSIg fSwKKwl7ICJBSUYxVFg0IiwgTlVMTCwgIlBETTEiIH0sCisJeyAiQUlGMVRYNSIsIE5VTEwsICJQ RE0yIiB9LAorCXsgIkFJRjFUWDYiLCBOVUxMLCAiUERNMiIgfSwKKwl7ICJBSUYxVFg3IiwgTlVM TCwgIlBETTMiIH0sCisJeyAiQUlGMVRYOCIsIE5VTEwsICJQRE0zIiB9LAorCXsgIkNhcHR1cmUi LCBOVUxMLCAiUERNX0NMSzAiIH0sCisJeyAiQ2FwdHVyZSIsIE5VTEwsICJQRE1fQ0xLMSIgfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBhZGF1NzExOF93 aWRnZXRzX2h3W10gPSB7CisJU05EX1NPQ19EQVBNX0FJRl9PVVQoIkFJRjFUWCIsICJDYXB0dXJl IiwgMCwgU05EX1NPQ19OT1BNLCAwLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k X3NvY19kYXBtX3JvdXRlIGFkYXU3MTE4X3JvdXRlc19od1tdID0geworCXsgIkFJRjFUWCIsIE5V TEwsICJQRE1fREFUMCIgfSwKKwl7ICJBSUYxVFgiLCBOVUxMLCAiUERNX0RBVDEiIH0sCisJeyAi QUlGMVRYIiwgTlVMTCwgIlBETV9EQVQyIiB9LAorCXsgIkFJRjFUWCIsIE5VTEwsICJQRE1fREFU MyIgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBhZGF1 NzExOF93aWRnZXRzW10gPSB7CisJU05EX1NPQ19EQVBNX0lOUFVUKCJQRE1fREFUMCIpLAorCVNO RF9TT0NfREFQTV9JTlBVVCgiUERNX0RBVDEiKSwKKwlTTkRfU09DX0RBUE1fSU5QVVQoIlBETV9E QVQyIiksCisJU05EX1NPQ19EQVBNX0lOUFVUKCJQRE1fREFUMyIpLAorfTsKKworc3RhdGljIGlu dCBhZGF1NzExOF9zZXRfY2hhbm5lbF9tYXAoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksCisJCQkJ ICAgIHVuc2lnbmVkIGludCB0eF9udW0sIHVuc2lnbmVkIGludCAqdHhfc2xvdCwKKwkJCQkgICAg dW5zaWduZWQgaW50IHJ4X251bSwgdW5zaWduZWQgaW50ICpyeF9zbG90KQoreworCXN0cnVjdCBh ZGF1NzExOF9kYXRhICpzdCA9CisJCXNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGRhaS0+ Y29tcG9uZW50KTsKKwlpbnQgY2hhbiwgcmV0OworCisJZGV2X2RiZyhzdC0+ZGV2LCAiU2V0IGNo YW5uZWwgbWFwLCAlZCIsIHR4X251bSk7CisKKwlmb3IgKGNoYW4gPSAwOyBjaGFuIDwgdHhfbnVt OyBjaGFuKyspIHsKKwkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoZGFpLT5j b21wb25lbnQsCisJCQkJCUFEQVU3MTE4X1JFR19TUFRfQ1goY2hhbiksCisJCQkJCUFEQVU3MTE4 X1NQVF9TTE9UX01BU0ssCisJCQkJCUFEQVU3MTE4X1NQVF9TTE9UKHR4X3Nsb3RbY2hhbl0pKTsK KwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGFkYXU3MTE4X3NldF9mbXQoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIHVuc2ln bmVkIGludCBmbXQpCit7CisJc3RydWN0IGFkYXU3MTE4X2RhdGEgKnN0ID0KKwkJc25kX3NvY19j b21wb25lbnRfZ2V0X2RydmRhdGEoZGFpLT5jb21wb25lbnQpOworCWludCByZXQgPSAwOworCXUz MiByZWd2YWw7CisKKwlkZXZfZGJnKHN0LT5kZXYsICJTZXQgZm9ybWF0LCBmbXQ6JWRcbiIsIGZt dCk7CisKKwlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7CisJY2Fz ZSBTTkRfU09DX0RBSUZNVF9JMlM6CisJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9i aXRzKGRhaS0+Y29tcG9uZW50LAorCQkJCQkJICAgIEFEQVU3MTE4X1JFR19TUFRfQ1RSTDEsCisJ CQkJCQkgICAgQURBVTcxMThfREFUQV9GTVRfTUFTSywKKwkJCQkJCSAgICBBREFVNzExOF9EQVRB X0ZNVCgwKSk7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTEVGVF9KOgorCQlyZXQg PSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhkYWktPmNvbXBvbmVudCwKKwkJCQkJCSAg ICBBREFVNzExOF9SRUdfU1BUX0NUUkwxLAorCQkJCQkJICAgIEFEQVU3MTE4X0RBVEFfRk1UX01B U0ssCisJCQkJCQkgICAgQURBVTcxMThfREFUQV9GTVQoMSkpOworCQlicmVhazsKKwljYXNlIFNO RF9TT0NfREFJRk1UX1JJR0hUX0o6CisJCXN0LT5yaWdodF9qID0gdHJ1ZTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJZGV2X2VycihzdC0+ZGV2LCAiSW52YWxpZCBmb3JtYXQgJWQiLAorCQkJZm10 ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19E QUlGTVRfSU5WX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX05CX05GOgorCQlyZWd2YWwg PSBBREFVNzExOF9MUkNMS19CQ0xLX1BPTCgwKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0RB SUZNVF9OQl9JRjoKKwkJcmVndmFsID0gQURBVTcxMThfTFJDTEtfQkNMS19QT0woMik7CisJCWJy ZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfTkY6CisJCXJlZ3ZhbCA9IEFEQVU3MTE4X0xS Q0xLX0JDTEtfUE9MKDEpOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0lCX0lGOgor CQlyZWd2YWwgPSBBREFVNzExOF9MUkNMS19CQ0xLX1BPTCgzKTsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJZGV2X2VycihzdC0+ZGV2LCAiSW52YWxpZCBJbnYgbWFzayAlZCIsCisJCQlmbXQgJiBT TkRfU09DX0RBSUZNVF9JTlZfTUFTSyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9 IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGRhaS0+Y29tcG9uZW50LAorCQkJCQkgICAg QURBVTcxMThfUkVHX1NQVF9DVFJMMiwKKwkJCQkJICAgIEFEQVU3MTE4X0xSQ0xLX0JDTEtfUE9M X01BU0ssCisJCQkJCSAgICByZWd2YWwpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0Owor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWRhdTcxMThfc2V0X3RyaXN0YXRlKHN0cnVj dCBzbmRfc29jX2RhaSAqZGFpLCBpbnQgdHJpc3RhdGUpCit7CisJc3RydWN0IGFkYXU3MTE4X2Rh dGEgKnN0ID0KKwkJc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoZGFpLT5jb21wb25lbnQp OworCWludCByZXQ7CisKKwlkZXZfZGJnKHN0LT5kZXYsICJTZXQgdHJpc3RhdGUsICVkXG4iLCB0 cmlzdGF0ZSk7CisKKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhkYWktPmNv bXBvbmVudCwKKwkJCQkJICAgIEFEQVU3MTE4X1JFR19TUFRfQ1RSTDEsCisJCQkJCSAgICBBREFV NzExOF9UUklTVEFURV9NQVNLLAorCQkJCQkgICAgQURBVTcxMThfVFJJU1RBVEUodHJpc3RhdGUp KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGFkYXU3MTE4X3NldF90ZG1fc2xvdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwgdW5z aWduZWQgaW50IHR4X21hc2ssCisJCQkJIHVuc2lnbmVkIGludCByeF9tYXNrLCBpbnQgc2xvdHMs CisJCQkJIGludCBzbG90X3dpZHRoKQoreworCXN0cnVjdCBhZGF1NzExOF9kYXRhICpzdCA9CisJ CXNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGRhaS0+Y29tcG9uZW50KTsKKwlpbnQgcmV0 ID0gMDsKKwl1MzIgcmVndmFsOworCisJZGV2X2RiZyhzdC0+ZGV2LCAiU2V0IHRkbSwgc2xvdHM6 JWQgd2lkdGg6JWRcbiIsIHNsb3RzLCBzbG90X3dpZHRoKTsKKworCXN3aXRjaCAoc2xvdF93aWR0 aCkgeworCWNhc2UgMzI6CisJCXJlZ3ZhbCA9IEFEQVU3MTE4X1NMT1RfV0lEVEgoMCk7CisJCWJy ZWFrOworCWNhc2UgMjQ6CisJCXJlZ3ZhbCA9IEFEQVU3MTE4X1NMT1RfV0lEVEgoMik7CisJCWJy ZWFrOworCWNhc2UgMTY6CisJCXJlZ3ZhbCA9IEFEQVU3MTE4X1NMT1RfV0lEVEgoMSk7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCWRldl9lcnIoc3QtPmRldiwgIkludmFsaWQgc2xvdCB3aWR0aDol ZFxuIiwgc2xvdF93aWR0aCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IHNuZF9z b2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGRhaS0+Y29tcG9uZW50LAorCQkJCQkgICAgQURBVTcx MThfUkVHX1NQVF9DVFJMMSwKKwkJCQkJICAgIEFEQVU3MTE4X1NMT1RfV0lEVEhfTUFTSywgcmVn dmFsKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXN0LT5zbG90X3dpZHRoID0g c2xvdF93aWR0aDsKKwlzdC0+c2xvdHMgPSBzbG90czsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGFkYXU3MTE4X2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSwKKwkJCSAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJICAg ICAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IGFkYXU3MTE4X2RhdGEgKnN0 ID0KKwkJc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoZGFpLT5jb21wb25lbnQpOworCXUz MiBkYXRhX3dpZHRoID0gcGFyYW1zX3dpZHRoKHBhcmFtcyksIHNsb3RzX3dpZHRoOworCWludCBy ZXQ7CisJdTMyIHJlZ3ZhbDsKKworCWlmICghc3QtPnNsb3RzKSB7CisJCS8qIHNldCBzdGVyZW8g bW9kZSAqLworCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhkYWktPmNvbXBv bmVudCwKKwkJCQkJCSAgICBBREFVNzExOF9SRUdfU1BUX0NUUkwxLAorCQkJCQkJICAgIEFEQVU3 MTE4X1NBSV9NT0RFX01BU0ssCisJCQkJCQkgICAgQURBVTcxMThfU0FJX01PREUoMCkpOworCQlp ZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJc2xvdHNfd2lkdGggPSAzMjsKKwl9IGVs c2UgeworCQlzbG90c193aWR0aCA9IHN0LT5zbG90X3dpZHRoOworCX0KKworCWlmIChkYXRhX3dp ZHRoID4gc2xvdHNfd2lkdGgpIHsKKwkJZGV2X2VycihzdC0+ZGV2LCAiSW52YWxpZCBkYXRhX3dp ZHRoOiVkLCBzbG90c193aWR0aDolZCIsCisJCQlkYXRhX3dpZHRoLCBzbG90c193aWR0aCk7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChzdC0+cmlnaHRfaikgeworCQlzd2l0Y2ggKHNs b3RzX3dpZHRoIC0gZGF0YV93aWR0aCkgeworCQljYXNlIDg6CisJCQkvKiBkZWxheSBiY2xjayBi eSA4ICovCisJCQlyZWd2YWwgPSBBREFVNzExOF9EQVRBX0ZNVCgyKTsKKwkJCWJyZWFrOworCQlj YXNlIDEyOgorCQkJLyogZGVsYXkgYmNsY2sgYnkgMTIgKi8KKwkJCXJlZ3ZhbCA9IEFEQVU3MTE4 X0RBVEFfRk1UKDMpOworCQkJYnJlYWs7CisJCWNhc2UgMTY6CisJCQkvKiBkZWxheSBiY2xjayBi eSAxNiAqLworCQkJcmVndmFsID0gQURBVTcxMThfREFUQV9GTVQoNCk7CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKKwkJCWRldl9lcnIoc3QtPmRldiwKKwkJCQkiQ2Fubm90IHNldCByaWdodF9qIHNl dHRpbmcsIHNsb3RfdzolZCwgZGF0YV93OiVkXG4iLAorCQkJCQlzbG90c193aWR0aCwgZGF0YV93 aWR0aCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCXJldCA9IHNuZF9zb2NfY29tcG9u ZW50X3VwZGF0ZV9iaXRzKGRhaS0+Y29tcG9uZW50LAorCQkJCQkJICAgIEFEQVU3MTE4X1JFR19T UFRfQ1RSTDEsCisJCQkJCQkgICAgQURBVTcxMThfREFUQV9GTVRfTUFTSywKKwkJCQkJCSAgICBy ZWd2YWwpOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgYWRhdTcxMThfc2V0X2JpYXNfbGV2ZWwoc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjb21wb25lbnQsCisJCQkJICAgZW51bSBzbmRfc29jX2JpYXNfbGV2ZWwgbGV2 ZWwpCit7CisJc3RydWN0IGFkYXU3MTE4X2RhdGEgKnN0ID0gc25kX3NvY19jb21wb25lbnRfZ2V0 X2RydmRhdGEoY29tcG9uZW50KTsKKwlpbnQgcmV0ID0gMDsKKworCWRldl9kYmcoc3QtPmRldiwg IlNldCBiaWFzIGxldmVsICVkXG4iLCBsZXZlbCk7CisKKwlzd2l0Y2ggKGxldmVsKSB7CisJY2Fz ZSBTTkRfU09DX0JJQVNfT046CisJY2FzZSBTTkRfU09DX0JJQVNfUFJFUEFSRToKKwkJYnJlYWs7 CisKKwljYXNlIFNORF9TT0NfQklBU19TVEFOREJZOgorCQlpZiAoc25kX3NvY19jb21wb25lbnRf Z2V0X2JpYXNfbGV2ZWwoY29tcG9uZW50KSA9PQorCQkJCQkJCVNORF9TT0NfQklBU19PRkYpIHsK KwkJCS8qIHBvd2VyIG9uICovCisJCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKHN0LT5pb3ZkZCk7 CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisKKwkJCS8qIHRoZXJlJ3Mgbm8gdGltaW5n IGNvbnN0cmFpbnRzIGJlZm9yZSBlbmFibGluZyBkdmRkICovCisJCQlyZXQgPSByZWd1bGF0b3Jf ZW5hYmxlKHN0LT5kdmRkKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlyZWd1bGF0b3JfZGlzYWJsZShz dC0+aW92ZGQpOworCQkJCXJldHVybiByZXQ7CisJCQl9CisKKwkJCWlmIChzdC0+aHdfbW9kZSkK KwkJCQlyZXR1cm4gMDsKKworCQkJcmVnY2FjaGVfY2FjaGVfb25seShzdC0+bWFwLCBmYWxzZSk7 CisJCQkvKiBzeW5jIGNhY2hlICovCisJCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF9jYWNoZV9z eW5jKGNvbXBvbmVudCk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0JJQVNfT0ZGOgor CQkvKiBwb3dlciBvZmYgKi8KKwkJcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUoc3QtPmR2ZGQpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShz dC0+aW92ZGQpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlpZiAoc3QtPmh3X21v ZGUpCisJCQlyZXR1cm4gMDsKKworCQkvKiBjYWNoZSBvbmx5ICovCisJCXJlZ2NhY2hlX21hcmtf ZGlydHkoc3QtPm1hcCk7CisJCXJlZ2NhY2hlX2NhY2hlX29ubHkoc3QtPm1hcCwgdHJ1ZSk7CisK KwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhZGF1NzExOF9j b21wb25lbnRfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7CisJ c3RydWN0IGFkYXU3MTE4X2RhdGEgKnN0ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEo Y29tcG9uZW50KTsKKwlzdHJ1Y3Qgc25kX3NvY19kYXBtX2NvbnRleHQgKmRhcG0gPQorCQkJCQlz bmRfc29jX2NvbXBvbmVudF9nZXRfZGFwbShjb21wb25lbnQpOworCWludCByZXQgPSAwOworCisJ aWYgKHN0LT5od19tb2RlKSB7CisJCXJldCA9IHNuZF9zb2NfZGFwbV9uZXdfY29udHJvbHMoZGFw bSwgYWRhdTcxMThfd2lkZ2V0c19odywKKwkJCQkJQVJSQVlfU0laRShhZGF1NzExOF93aWRnZXRz X2h3KSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IHNuZF9zb2NfZGFw bV9hZGRfcm91dGVzKGRhcG0sIGFkYXU3MTE4X3JvdXRlc19odywKKwkJCQkJICAgICAgQVJSQVlf U0laRShhZGF1NzExOF9yb3V0ZXNfaHcpKTsKKwl9IGVsc2UgeworCQlzbmRfc29jX2NvbXBvbmVu dF9pbml0X3JlZ21hcChjb21wb25lbnQsIHN0LT5tYXApOworCQlyZXQgPSBzbmRfc29jX2RhcG1f bmV3X2NvbnRyb2xzKGRhcG0sIGFkYXU3MTE4X3dpZGdldHNfc3csCisJCQkJCUFSUkFZX1NJWkUo YWRhdTcxMThfd2lkZ2V0c19zdykpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQly ZXQgPSBzbmRfc29jX2RhcG1fYWRkX3JvdXRlcyhkYXBtLCBhZGF1NzExOF9yb3V0ZXNfc3csCisJ CQkJCSAgICAgIEFSUkFZX1NJWkUoYWRhdTcxMThfcm91dGVzX3N3KSk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgYWRhdTcxMThf b3BzID0geworCS5od19wYXJhbXMgPSBhZGF1NzExOF9od19wYXJhbXMsCisJLnNldF9jaGFubmVs X21hcCA9IGFkYXU3MTE4X3NldF9jaGFubmVsX21hcCwKKwkuc2V0X2ZtdCA9IGFkYXU3MTE4X3Nl dF9mbXQsCisJLnNldF90ZG1fc2xvdCA9IGFkYXU3MTE4X3NldF90ZG1fc2xvdCwKKwkuc2V0X3Ry aXN0YXRlID0gYWRhdTcxMThfc2V0X3RyaXN0YXRlLAorfTsKKworc3RhdGljIHN0cnVjdCBzbmRf c29jX2RhaV9kcml2ZXIgYWRhdTcxMThfZGFpID0geworCS5uYW1lID0gImFkYXU3MTE4LWhpZmkt Y2FwdHVyZSIsCisJLmNhcHR1cmUgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJDYXB0dXJlIiwKKwkJ LmNoYW5uZWxzX21pbiA9IDEsCisJCS5jaGFubmVsc19tYXggPSA4LAorCQkuZm9ybWF0cyA9IFNO RFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjBfM0xFIHwKKwkJCVNO RFJWX1BDTV9GTVRCSVRfUzIwX0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUgfAorCQkJU05E UlZfUENNX0ZNVEJJVF9TMjRfM0xFLAorCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV9DT05USU5V T1VTLAorCQkucmF0ZV9taW4gPSA0MDAwLAorCQkucmF0ZV9tYXggPSAxOTIwMDAsCisJCS5zaWdf Yml0cyA9IDI0LAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9u ZW50X2RyaXZlciBhZGF1NzExOF9jb21wb25lbnRfZHJpdmVyID0geworCS5wcm9iZQkJCT0gYWRh dTcxMThfY29tcG9uZW50X3Byb2JlLAorCS5zZXRfYmlhc19sZXZlbAkJPSBhZGF1NzExOF9zZXRf Ymlhc19sZXZlbCwKKwkuZGFwbV93aWRnZXRzCQk9IGFkYXU3MTE4X3dpZGdldHMsCisJLm51bV9k YXBtX3dpZGdldHMJPSBBUlJBWV9TSVpFKGFkYXU3MTE4X3dpZGdldHMpLAorCS51c2VfcG1kb3du X3RpbWUJPSAxLAorCS5lbmRpYW5uZXNzCQk9IDEsCisJLm5vbl9sZWdhY3lfZGFpX25hbWluZwk9 IDEsCit9OworCitzdGF0aWMgdm9pZCBhZGF1NzExOF9yZWd1bGF0b3JfZGlzYWJsZSh2b2lkICpk YXRhKQoreworCXN0cnVjdCBhZGF1NzExOF9kYXRhICpzdCA9IGRhdGE7CisJaW50IHJldDsKKwkv KgorCSAqIElmIHdlIGZhaWwgdG8gZGlzYWJsZSBEVkRELCBkb24ndCBib3RoZXIgaW4gdHJ5aW5n IElPVkRELiBXZQorCSAqIGFjdHVhbGx5IGRvbid0IHdhbnQgdG8gYmUgbGVmdCBpbiB0aGUgc2l0 dWF0aW9uIHdoZXJlIERWREQKKwkgKiBpcyBlbmFibGVkIGFuZCBJT1ZERCBpcyBkaXNhYmxlZC4K KwkgKi8KKwlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShzdC0+ZHZkZCk7CisJaWYgKHJldCkKKwkJ cmV0dXJuOworCisJcmVndWxhdG9yX2Rpc2FibGUoc3QtPmlvdmRkKTsKK30KKworc3RhdGljIGlu dCBhZGF1NzExOF9yZWd1bGF0b3Jfc2V0dXAoc3RydWN0IGFkYXU3MTE4X2RhdGEgKnN0KQorewor CXN0LT5pb3ZkZCA9IGRldm1fcmVndWxhdG9yX2dldChzdC0+ZGV2LCAiSU9WREQiKTsKKwlpZiAo SVNfRVJSKHN0LT5pb3ZkZCkpIHsKKwkJZGV2X2VycihzdC0+ZGV2LCAiQ291bGQgbm90IGdldCBp b3ZkZDogJWxkXG4iLAorCQkJUFRSX0VSUihzdC0+aW92ZGQpKTsKKwkJcmV0dXJuIFBUUl9FUlIo c3QtPmlvdmRkKTsKKwl9CisKKwlzdC0+ZHZkZCA9IGRldm1fcmVndWxhdG9yX2dldChzdC0+ZGV2 LCAiRFZERCIpOworCWlmIChJU19FUlIoc3QtPmR2ZGQpKSB7CisJCWRldl9lcnIoc3QtPmRldiwg IkNvdWxkIG5vdCBnZXQgZHZkZDogJWxkXG4iLAorCQkJUFRSX0VSUihzdC0+ZHZkZCkpOworCQly ZXR1cm4gUFRSX0VSUihzdC0+ZHZkZCk7CisJfQorCS8qIGp1c3QgYXNzdW1lIHRoZSBkZXZpY2Ug aXMgaW4gcmVzZXQgKi8KKwlpZiAoIXN0LT5od19tb2RlKSB7CisJCXJlZ2NhY2hlX21hcmtfZGly dHkoc3QtPm1hcCk7CisJCXJlZ2NhY2hlX2NhY2hlX29ubHkoc3QtPm1hcCwgdHJ1ZSk7CisJfQor CisJcmV0dXJuIGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChzdC0+ZGV2LCBhZGF1NzExOF9yZWd1 bGF0b3JfZGlzYWJsZSwKKwkJCQkJc3QpOworfQorCitzdGF0aWMgaW50IGFkYXU3MTE4X3BhcnNl dF9kdChjb25zdCBzdHJ1Y3QgYWRhdTcxMThfZGF0YSAqc3QpCit7CisJaW50IHJldDsKKwl1MzIg ZGVjX3JhdGlvID0gMDsKKwkvKiA0IGlucHV0cyAqLworCXUzMiBjbGtfbWFwWzRdLCByZWd2YWw7 CisKKwlpZiAoc3QtPmh3X21vZGUpCisJCXJldHVybiAwOworCisJcmV0ID0gZGV2aWNlX3Byb3Bl cnR5X3JlYWRfdTMyKHN0LT5kZXYsICJhZGksZGVjaW1hdGlvbi1yYXRpbyIsCisJCQkJICAgICAg ICZkZWNfcmF0aW8pOworCWlmICghcmV0KSB7CisJCXN3aXRjaCAoZGVjX3JhdGlvKSB7CisJCWNh c2UgNjQ6CisJCQlyZWd2YWwgPSBBREFVNzExOF9ERUNfUkFUSU8oMCk7CisJCQlicmVhazsKKwkJ Y2FzZSAzMjoKKwkJCXJlZ3ZhbCA9IEFEQVU3MTE4X0RFQ19SQVRJTygxKTsKKwkJCWJyZWFrOwor CQljYXNlIDE2OgorCQkJcmVndmFsID0gQURBVTcxMThfREVDX1JBVElPKDIpOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlkZXZfZXJyKHN0LT5kZXYsICJJbnZhbGlkIGRlYyByYXRpbzogJXUi LCBkZWNfcmF0aW8pOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlyZXQgPSByZWdtYXBf dXBkYXRlX2JpdHMoc3QtPm1hcCwKKwkJCQkJIEFEQVU3MTE4X1JFR19ERUNfUkFUSU9fQ0xLX01B UCwKKwkJCQkJIEFEQVU3MTE4X0RFQ19SQVRJT19NQVNLLCByZWd2YWwpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVhZF91MzJfYXJy YXkoc3QtPmRldiwgImFkaSxwZG0tY2xrLW1hcCIsCisJCQkJCSAgICAgY2xrX21hcCwgQVJSQVlf U0laRShjbGtfbWFwKSk7CisJaWYgKCFyZXQpIHsKKwkJaW50IHBkbTsKKwkJdTMyIF9jbGtfbWFw ID0gMDsKKworCQlmb3IgKHBkbSA9IDA7IHBkbSA8IEFSUkFZX1NJWkUoY2xrX21hcCk7IHBkbSsr KQorCQkJX2Nsa19tYXAgfD0gKGNsa19tYXBbcGRtXSA8PCAocGRtICsgNCkpOworCisJCXJldCA9 IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+bWFwLAorCQkJCQkgQURBVTcxMThfUkVHX0RFQ19SQVRJ T19DTEtfTUFQLAorCQkJCQkgQURBVTcxMThfQ0xLX01BUF9NQVNLLCBfY2xrX21hcCk7CisJCWlm IChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitpbnQgYWRhdTcx MThfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVnbWFwICptYXAsIGJvb2wgaHdf bW9kZSkKK3sKKwlzdHJ1Y3QgYWRhdTcxMThfZGF0YSAqc3Q7CisJaW50IHJldDsKKworCXN0ID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlmICghc3QpCisJ CXJldHVybiAtRU5PTUVNOworCisJc3QtPmRldiA9IGRldjsKKwlzdC0+aHdfbW9kZSA9IGh3X21v ZGU7CisJZGV2X3NldF9kcnZkYXRhKGRldiwgc3QpOworCisJaWYgKCFod19tb2RlKSB7CisJCXN0 LT5tYXAgPSBtYXA7CisJCWFkYXU3MTE4X2RhaS5vcHMgPSAmYWRhdTcxMThfb3BzOworCQkvKgor CQkgKiBQZXJmb3JtIGEgZnVsbCBzb2Z0IHJlc2V0LiBUaGlzIHdpbGwgc2V0IGFsbCByZWdpc3Rl cidzCisJCSAqIHdpdGggdGhlaXIgcmVzZXQgdmFsdWVzLgorCQkgKi8KKwkJcmV0ID0gcmVnbWFw X3VwZGF0ZV9iaXRzKG1hcCwgQURBVTcxMThfUkVHX1JFU0VULAorCQkJCQkgQURBVTcxMThfRlVM TF9TT0ZUX1JfTUFTSywKKwkJCQkJIEFEQVU3MTE4X0ZVTExfU09GVF9SKDEpKTsKKwkJaWYgKHJl dCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gYWRhdTcxMThfcGFyc2V0X2R0KHN0KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gYWRhdTcxMThfcmVndWxhdG9yX3Nl dHVwKHN0KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIGRldm1fc25kX3Nv Y19yZWdpc3Rlcl9jb21wb25lbnQoZGV2LAorCQkJCQkgICAgICAgJmFkYXU3MTE4X2NvbXBvbmVu dF9kcml2ZXIsCisJCQkJCSAgICAgICAmYWRhdTcxMThfZGFpLCAxKTsKK30KK0VYUE9SVF9TWU1C T0xfR1BMKGFkYXU3MTE4X3Byb2JlKTsKKworTU9EVUxFX0FVVEhPUigiTnVubyBTYSA8bnVuby5z YUBhbmFsb2cuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJBREFVNzExOCA4IGNoYW5uZWwg UERNLXRvLUkyUy9URE0gQ29udmVydGVyIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9hZGF1NzExOC5oIGIvc291bmQvc29jL2Nv ZGVjcy9hZGF1NzExOC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YzY1Njc5YTRkZmYxCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL2NvZGVjcy9hZGF1NzEx OC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCisjaWZuZGVmIF9MSU5VWF9BREFVNzExOF9ICisjZGVmaW5lIF9MSU5VWF9BREFVNzExOF9I CisKK3N0cnVjdCByZWdtYXA7CitzdHJ1Y3QgZGV2aWNlOworCisvKiByZWdpc3RlciBtYXAgKi8K KyNkZWZpbmUgQURBVTcxMThfUkVHX1ZFTkRPUl9JRAkJMHgwMAorI2RlZmluZSBBREFVNzExOF9S RUdfREVWSUNFX0lEMQkJMHgwMQorI2RlZmluZSBBREFVNzExOF9SRUdfREVWSUNFX0lEMgkJMHgw MgorI2RlZmluZSBBREFVNzExOF9SRUdfUkVWSVNJT05fSUQJMHgwMworI2RlZmluZSBBREFVNzEx OF9SRUdfRU5BQkxFUwkJMHgwNAorI2RlZmluZSBBREFVNzExOF9SRUdfREVDX1JBVElPX0NMS19N QVAJMHgwNQorI2RlZmluZSBBREFVNzExOF9SRUdfSFBGX0NPTlRST0wJMHgwNgorI2RlZmluZSBB REFVNzExOF9SRUdfU1BUX0NUUkwxCQkweDA3CisjZGVmaW5lIEFEQVU3MTE4X1JFR19TUFRfQ1RS TDIJCTB4MDgKKyNkZWZpbmUgQURBVTcxMThfUkVHX1NQVF9DWChudW0pCSgweDA5ICsgKG51bSkp CisjZGVmaW5lIEFEQVU3MTE4X1JFR19EUklWRV9TVFJFTkdUSAkweDExCisjZGVmaW5lIEFEQVU3 MTE4X1JFR19SRVNFVAkJMHgxMgorCitpbnQgYWRhdTcxMThfcHJvYmUoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgcmVnbWFwICptYXAsIGJvb2wgaHdfbW9kZSk7CisKKyNlbmRpZgotLSAKMi4y My4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNh LWRldmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cHM6Ly9t YWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCg==