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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69904C43217 for ; Tue, 5 Oct 2021 13:57:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 12762610EA for ; Tue, 5 Oct 2021 13:57:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235408AbhJEN7f (ORCPT ); Tue, 5 Oct 2021 09:59:35 -0400 Received: from mail-dm3nam07on2073.outbound.protection.outlook.com ([40.107.95.73]:28128 "EHLO NAM02-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S236172AbhJEN56 (ORCPT ); Tue, 5 Oct 2021 09:57:58 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S+l5lH0jHPBBif1gr7Fo/GkIIcoIdLxmB3brQn20ad7vDNgFbz7zu6n2PTXcEobJ6r/9QPHH60SIFsHExYh+gQHliKYoMRBau3jC5u1cxjyMFPcbblBpeA7pN0n+xpdwxSey9Uykcylx6g/Jpx5E32m4ZDnodZ72bP9ioIr9Oy5xA/PIg4frYLyTi+O5gYg+D0niFfyw4L9LMAdAQiPUnMvVUGmhuOEvuL5MOze6t1fZyGxFJM0t1Aysa9coDdeEta39Jn98CpYTWI0mA55RpKC0Na3Mphd4haowdGbg412iAMMZ7nXtFMogX46DzFfct3c2J8UW+i5eSC+u0xhByQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=F3g7guzqvrKfaNdeZZWJqv6GI+uApsXjTpnySDnMvHU=; b=agbv9KS9s8GpqAsT0stI50bQdb4RfHX9JWR8Mq2E9Vfdc7hseps2fmaDxZhKMCqqbo9XJZW/2BJ40HJYa8Sj6f40it4GdU/hHhC/iVG8O8AbVyxBeRdlXn+747p+qAJD4hEIbjx1PxnIkdMs6Xef+MbFapGPqLVtm9Z+ECNyNhg7Ej0f4yinrky6qfjIFKeyCjqtmWuzDwLQu0LdADL8Vcoem9hVjvqYMhIDaj1lhRU84/PX3+JcpBYYDToPlDKT7/vC7DU1PfmroxqllKydlx5cGLz6oQTvWaHlP+qk0Tt9vYBkU9u3/8OkUxHD34hQs0uRWFV/xJ0O5Z2a4X7a4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F3g7guzqvrKfaNdeZZWJqv6GI+uApsXjTpnySDnMvHU=; b=ICYpqNubz046RNsRNqUNXLH2pYY9Is02hybAWGDujDxPEM7PMcFtbHs3EMvikgbTRtQVExQJM50icHZk5Y/R4KK9VaELoUXHXL33qmZN5uyAnb3HBnx9a4ctgW+kyXRziKcq9GCU1y5J6EiaieIx/OguP3/aXo/X/ja4yYzxwbk= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) by PH0PR11MB5643.namprd11.prod.outlook.com (2603:10b6:510:d5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Tue, 5 Oct 2021 13:54:40 +0000 Received: from PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4]) by PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4%9]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 13:54:40 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Kalle Valo Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v8 07/24] wfx: add bus_spi.c Date: Tue, 5 Oct 2021 15:53:43 +0200 Message-Id: <20211005135400.788058-8-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> References: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) To PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) MIME-Version: 1.0 Received: from pc-42.silabs.com (37.71.187.125) by PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Tue, 5 Oct 2021 13:54:37 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 616c63d9-9bef-48d1-0d39-08d98807acf0 X-MS-TrafficTypeDiagnostic: PH0PR11MB5643: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7LegOknnjn89eHUKPKlatWsCoiLtGIeM6esObH3xvoqViYAehI1++bTP8Um689HB+n3OBz6p3LWDT4o2qaFHqb3K87Jb+cS9uYjK+OlYoifgjUo38JuXrdWQCps25BrSJ/YIEI7XbbBrCGkx8Ndw/bSIm+cyv90D+rhbp++9vATxmoXVqGbrJWhv3FdmIaL1lqcOPkqNy1TjYmPTNAJ/g+pZszJFwhLxQM8JVcQUNGgCaqfMKygnvTjQrSuD6nBKmprcvRTjUsbvhBtRlloycTN26GcPGE7G4JDT4gjvmCwS0YVnRKkqcgySPeqR1fzmzEMpHTvyBgkmKiz8a+SIiPOm4KnwAXd8Yd/USLMM74eKt7pJUMEMC85iFvPhWhZTenPWmKMcMNiV/sO8saSpfeupWCzB3r7vSLYdFcBLJAvDK/P/TPssRJ1WF37DledVqgoQB45/1mI+ocxLvKOSYcRyjuyr3jrweXT91etmp7DFuvX+iNDyHB9uVdSgNZ7qCJBs0GOWWBXBqGKykxiXIY2ilk0QTp0w8jA67ldNHnAmC1RKI2YBXAhT3ZKXWeRfoMsvEQUrZK8tGZCCVfkWUzMeIdoNOWFgK8+fcKc3x37wlkeGHG/x1npvT7foJnlATSU0E3/1M3Jnuq2lQJxDywAqYUVlrGmoSFwFOoJNZWa6UxYSMsMOP2AHdfYPlw35lK+uWx23rgON9mZjgYGq9A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5657.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(7416002)(2616005)(956004)(54906003)(8936002)(66574015)(36756003)(1076003)(186003)(38100700002)(86362001)(6486002)(83380400001)(6916009)(5660300002)(38350700002)(66946007)(66476007)(66556008)(52116002)(7696005)(508600001)(6666004)(2906002)(316002)(4326008)(26005)(107886003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YmZRZ3VLUUQybWVtaTlpWG1IL0p1WGliQW1uZ1ZzZFVBb2FyU2Zybk5SYzlw?= =?utf-8?B?YkpiSlJaZlFZdk53R0FIZDRVdkRTVUc1UE1qNzBkaEt1QzFhUlM5L3JNTEYw?= =?utf-8?B?QkJVWU1ma2h4UE40S2dneGJmVXhtS3VlbWlXSXBOeGpuOWZxaE5qRmRuUFVX?= =?utf-8?B?ZWdhVGxCeTE2TnY0V2lMN1VzWDdkRmpHVnE1N3N0ZEprN2dEMmFlS1FZNnJw?= =?utf-8?B?U0IwZkFkMGlLbngwUjZVUFc2OC9HK0t4TmlEWTBrTnFpd0dXNWZDak5iQUxR?= =?utf-8?B?VE1QbExabDd3VlhNVS9JdmFuZ2VNaDJsTFNFYitiUG5HQmZLRk8wbUtocDll?= =?utf-8?B?WmRucFNGS01WYjNPWDRjU1Jqek5XZkFEb0tqMkU5NFRyakJmRGpwVkdMaUNs?= =?utf-8?B?YU5UZ0ovenhJUVd6OXZLdElJNHdkOHIvc0sxTXNielpub0dtcXJNWU11WGxD?= =?utf-8?B?UjRkNzNPcGdtZWpnRjhTdlhRb3pjSmFkcXRDdFZiZ0dSOVZJZGNBdzllMDhW?= =?utf-8?B?RGQxeTJHZTFqZnV1Qzg5bXV5dS8rcE9odm1scFB3VCttcDZPaFJVOVdYakJr?= =?utf-8?B?YVJzMDZqODd5eDRodFMwUC9KQ09LcTB2VHc1ZHRGcjRNMThCQ1pJczJmcWxP?= =?utf-8?B?WDk0cDAxMDBKL1dqOG1CS1V3eDh0c29JejJkcmNHZ2M5aDdqUXpxVWxrbytK?= =?utf-8?B?UDBXKzVGQWxKZVZtcVV0eXNSQ09pTG9kTHNwMVd5bFczVkErNzkzVEszY3Ev?= =?utf-8?B?d2w4UmdsT2VFc1lIOG5PRkVCbFNabjQyOC93SlB1UWhKN0dpdHFTMDFsZ2pK?= =?utf-8?B?aWcxUGNFYnIxUXB5M2NnSzNCVjlwdHRLZ0pRa1gwaUg3cnZOSDJ0NWU1T3VB?= =?utf-8?B?Uk9yS2xoQ2EyUFU1bzh2bnZ6cXVhdFFSK2hRalJGOEJpay9heFhjMC8zRVBi?= =?utf-8?B?dFVKbFZWK29hZkZhRGNWeUVVdURkcGJFTDBhQnQvNHR1S2FyY1RLOGRBV0Rw?= =?utf-8?B?Ymx3ZHRYNGRCYVF3blpTdjJ2TEpKeWhwZGdCS0pMTkZsSEswQ1ErSWZubERZ?= =?utf-8?B?TGhPaW5aZFFoNnRubTVjQi9VT0hPSVV5TVkyUC8zMlRzQVY1RXZvdi9vdWts?= =?utf-8?B?S2dlOThwUERIc1J3MlJSN25xTnVPSURBN29PSEZRZVBNZktVWDBZZFI3WXFh?= =?utf-8?B?YTV5TEY4dkhldnd2blp5WW1TL0E3MnFVMDJSU0NzYWN2cG5GZTg4d3d5UFp1?= =?utf-8?B?dVVoRlRCQjF3Rm9jdERRSzV5T3hOLzltb0k2WlV1YXQvZzd5azFBeWJjQ3V4?= =?utf-8?B?c1dTbURnaE1xcDAvR2FmV0s0L1p1RjBFS25PS0tmU2pIVmdxQkRWWk1mejdZ?= =?utf-8?B?S2tTVmJiZExodjBhN01ScGRWVzBqbE9tazlldUtWaGFiQWdvK3FORUdTUE55?= =?utf-8?B?Q3pKc05uZ3FBWFBwVmJ4Z205dVVlejgzY3pSeWpXSzNpeHRiRTllUGYrRGUy?= =?utf-8?B?U0ovNXZzbkN1eDF4U3ZzWTY3VysybGVqRG9idk5RWjVWWjFSNHVSRExuY1JE?= =?utf-8?B?cFBIek5iaGdNM2U2ZXpZSFhjY1RPSGNUbldnS1lwb3ZJRzR1eGpwM2UzdnFK?= =?utf-8?B?eEZqbW15MmEyMFk3Y0NIOHpEWVZ2U3hBVWkwWXlnbzJJblFCWWNXTFRjR2xP?= =?utf-8?B?ZDlSOXI5bHFPR3VBd08ydTRJMzNTdUx2OCs4WlBtQ01Jc3lKUSs5STJCMWdv?= =?utf-8?Q?YXJ91uYv5Q8ylDmJRdUo9tBfqpNAqYWoFsZbuyo?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 616c63d9-9bef-48d1-0d39-08d98807acf0 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5657.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2021 13:54:39.9766 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: buk9LcPoYHGz1h94+K6fJUIcFMDriiQFb4OlJWQFplPAqve7QDTRTkAMYYoUL7WSEoIhrQIwBFofD6YmOk9TcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5643 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NwaS5jIHwgMzA3ICsr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzMDcgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nw aS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9idXNfc3Bp LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2J1c19zcGkuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI2YjFiMWZkZWJkOAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NwaS5jCkBAIC0wLDAg KzEsMzA3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgor ICogU1BJIGludGVyZmFjZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNv biBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMSwgU2FncmFkIEluYy4K KyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZ3Bp by9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9v Zi5oPgorCisjaW5jbHVkZSAiYnVzLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5jbHVkZSAiaHdp by5oIgorI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJiaC5oIgorCisjZGVmaW5lIFNFVF9X UklURSAweDdGRkYgICAgICAgIC8qIHVzYWdlOiBhbmQgb3BlcmF0aW9uICovCisjZGVmaW5lIFNF VF9SRUFEIDB4ODAwMCAgICAgICAgIC8qIHVzYWdlOiBvciBvcGVyYXRpb24gKi8KKworc3RhdGlj IGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSBwZGF0YV93ZjIwMCA9IHsKKwkuZmlsZV9m dyA9ICJ3Zm1fd2YyMDAiLAorCS5maWxlX3BkcyA9ICJ3ZjIwMC5wZHMiLAorCS51c2VfcmlzaW5n X2NsayA9IHRydWUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRh IHBkYXRhX2JyZDQwMDFhID0geworCS5maWxlX2Z3ID0gIndmbV93ZjIwMCIsCisJLmZpbGVfcGRz ID0gImJyZDQwMDFhLnBkcyIsCisJLnVzZV9yaXNpbmdfY2xrID0gdHJ1ZSwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgcGRhdGFfYnJkODAyMmEgPSB7CisJLmZp bGVfZncgPSAid2ZtX3dmMjAwIiwKKwkuZmlsZV9wZHMgPSAiYnJkODAyMmEucGRzIiwKKwkudXNl X3Jpc2luZ19jbGsgPSB0cnVlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZv cm1fZGF0YSBwZGF0YV9icmQ4MDIzYSA9IHsKKwkuZmlsZV9mdyA9ICJ3Zm1fd2YyMDAiLAorCS5m aWxlX3BkcyA9ICJicmQ4MDIzYS5wZHMiLAorCS51c2VfcmlzaW5nX2NsayA9IHRydWUsCit9Owor CisvKiBMZWdhY3kgRFQgZG9uJ3QgdXNlIGl0ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHdmeF9w bGF0Zm9ybV9kYXRhIHBkYXRhX3dmeF9zcGkgPSB7CisJLmZpbGVfZncgPSAid2ZtX3dmMjAwIiwK KwkuZmlsZV9wZHMgPSAid2YyMDAucGRzIiwKKwkudXNlX3Jpc2luZ19jbGsgPSB0cnVlLAorCS5y ZXNldF9pbnZlcnRlZCA9IHRydWUsCit9OworCitzdHJ1Y3Qgd2Z4X3NwaV9wcml2IHsKKwlzdHJ1 Y3Qgc3BpX2RldmljZSAqZnVuYzsKKwlzdHJ1Y3Qgd2Z4X2RldiAqY29yZTsKKwlzdHJ1Y3QgZ3Bp b19kZXNjICpncGlvX3Jlc2V0OworCWJvb2wgbmVlZF9zd2FiOworfTsKKworLyogVGhlIGNoaXAg cmVhZHMgMTZiaXRzIG9mIGRhdGEgYXQgdGltZSBhbmQgcGxhY2UgdGhlbSBkaXJlY3RseSBpbnRv IChsaXR0bGUKKyAqIGVuZGlhbikgQ1BVIHJlZ2lzdGVyLiBTbywgdGhlIGNoaXAgZXhwZWN0cyBi eXRlcyBvcmRlciB0byBiZSAiQjEgQjAgQjMgQjIiCisgKiAod2hpbGUgTEUgaXMgIkIwIEIxIEIy IEIzIiBhbmQgQkUgaXMgIkIzIEIyIEIxIEIwIikKKyAqCisgKiBBIGxpdHRsZSBlbmRpYW4gaG9z dCB3aXRoIGJpdHNfcGVyX3dvcmQgPT0gMTYgc2hvdWxkIGRvIHRoZSByaWdodCBqb2IKKyAqIG5h dGl2ZWx5LiBUaGUgY29kZSBiZWxvdyB0byBzdXBwb3J0IGJpZyBlbmRpYW4gaG9zdCBhbmQgY29t bW9ubHkgdXNlZCBTUEkKKyAqIDhiaXRzLgorICovCitzdGF0aWMgaW50IHdmeF9zcGlfY29weV9m cm9tX2lvKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBhZGRyLAorCQkJCXZvaWQgKmRzdCwgc2l6 ZV90IGNvdW50KQoreworCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1cyA9IHByaXY7CisJdTE2IHJl Z2FkZHIgPSAoYWRkciA8PCAxMikgfCAoY291bnQgLyAyKSB8IFNFVF9SRUFEOworCXN0cnVjdCBz cGlfbWVzc2FnZSAgICAgIG07CisJc3RydWN0IHNwaV90cmFuc2ZlciAgICAgdF9hZGRyID0gewor CQkudHhfYnVmICAgICAgICAgPSAmcmVnYWRkciwKKwkJLmxlbiAgICAgICAgICAgID0gc2l6ZW9m KHJlZ2FkZHIpLAorCX07CisJc3RydWN0IHNwaV90cmFuc2ZlciAgICAgdF9tc2cgPSB7CisJCS5y eF9idWYgICAgICAgICA9IGRzdCwKKwkJLmxlbiAgICAgICAgICAgID0gY291bnQsCisJfTsKKwl1 MTYgKmRzdDE2ID0gZHN0OworCWludCByZXQsIGk7CisKKwlXQVJOKGNvdW50ICUgMiwgImJ1ZmZl ciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyIik7CisKKwljcHVfdG9fbGUxNnMoJnJlZ2Fk ZHIpOworCWlmIChidXMtPm5lZWRfc3dhYikKKwkJc3dhYjE2cygmcmVnYWRkcik7CisKKwlzcGlf bWVzc2FnZV9pbml0KCZtKTsKKwlzcGlfbWVzc2FnZV9hZGRfdGFpbCgmdF9hZGRyLCAmbSk7CisJ c3BpX21lc3NhZ2VfYWRkX3RhaWwoJnRfbXNnLCAmbSk7CisJcmV0ID0gc3BpX3N5bmMoYnVzLT5m dW5jLCAmbSk7CisKKwlpZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJ RykKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50IC8gMjsgaSsrKQorCQkJc3dhYjE2cygmZHN0MTZb aV0pOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5X3RvX2lvKHZv aWQgKnByaXYsIHVuc2lnbmVkIGludCBhZGRyLAorCQkJICAgICAgY29uc3Qgdm9pZCAqc3JjLCBz aXplX3QgY291bnQpCit7CisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsKKwl1MTYg cmVnYWRkciA9IChhZGRyIDw8IDEyKSB8IChjb3VudCAvIDIpOworCS8qIEZJWE1FOiB1c2UgYSBi b3VuY2UgYnVmZmVyICovCisJdTE2ICpzcmMxNiA9ICh2b2lkICopc3JjOworCWludCByZXQsIGk7 CisJc3RydWN0IHNwaV9tZXNzYWdlICAgICAgbTsKKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAgICB0 X2FkZHIgPSB7CisJCS50eF9idWYgICAgICAgICA9ICZyZWdhZGRyLAorCQkubGVuICAgICAgICAg ICAgPSBzaXplb2YocmVnYWRkciksCisJfTsKKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAgICB0X21z ZyA9IHsKKwkJLnR4X2J1ZiAgICAgICAgID0gc3JjLAorCQkubGVuICAgICAgICAgICAgPSBjb3Vu dCwKKwl9OworCisJV0FSTihjb3VudCAlIDIsICJidWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlw bGUgb2YgMiIpOworCVdBUk4ocmVnYWRkciAmIFNFVF9SRUFELCAiYmFkIGFkZHIgb3Igc2l6ZSBv dmVyZmxvdyIpOworCisJY3B1X3RvX2xlMTZzKCZyZWdhZGRyKTsKKworCS8qIFJlZ2lzdGVyIGFk ZHJlc3MgYW5kIENPTkZJRyBjb250ZW50IGFsd2F5cyB1c2UgMTZiaXQgYmlnIGVuZGlhbgorCSAq ICgiQkFEQyIgb3JkZXIpCisJICovCisJaWYgKGJ1cy0+bmVlZF9zd2FiKQorCQlzd2FiMTZzKCZy ZWdhZGRyKTsKKwlpZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJRykK KwkJZm9yIChpID0gMDsgaSA8IGNvdW50IC8gMjsgaSsrKQorCQkJc3dhYjE2cygmc3JjMTZbaV0p OworCisJc3BpX21lc3NhZ2VfaW5pdCgmbSk7CisJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnRfYWRk ciwgJm0pOworCXNwaV9tZXNzYWdlX2FkZF90YWlsKCZ0X21zZywgJm0pOworCXJldCA9IHNwaV9z eW5jKGJ1cy0+ZnVuYywgJm0pOworCisJaWYgKGJ1cy0+bmVlZF9zd2FiICYmIGFkZHIgPT0gV0ZY X1JFR19DT05GSUcpCisJCWZvciAoaSA9IDA7IGkgPCBjb3VudCAvIDI7IGkrKykKKwkJCXN3YWIx NnMoJnNyYzE2W2ldKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB3Znhfc3BpX2xv Y2sodm9pZCAqcHJpdikKK3sKK30KKworc3RhdGljIHZvaWQgd2Z4X3NwaV91bmxvY2sodm9pZCAq cHJpdikKK3sKK30KKworc3RhdGljIGlycXJldHVybl90IHdmeF9zcGlfaXJxX2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3NwaV9wcml2ICpidXMgPSBwcml2Owor CisJd2Z4X2JoX3JlcXVlc3RfcngoYnVzLT5jb3JlKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9 CisKK3N0YXRpYyBpbnQgd2Z4X3NwaV9pcnFfc3Vic2NyaWJlKHZvaWQgKnByaXYpCit7CisJc3Ry dWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsKKwl1MzIgZmxhZ3M7CisKKwlmbGFncyA9IGly cV9nZXRfdHJpZ2dlcl90eXBlKGJ1cy0+ZnVuYy0+aXJxKTsKKwlpZiAoIWZsYWdzKQorCQlmbGFn cyA9IElSUUZfVFJJR0dFUl9ISUdIOworCWZsYWdzIHw9IElSUUZfT05FU0hPVDsKKwlyZXR1cm4g ZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmYnVzLT5mdW5jLT5kZXYsIGJ1cy0+ZnVuYy0+aXJx LCBOVUxMLAorCQkJCQkgd2Z4X3NwaV9pcnFfaGFuZGxlciwgSVJRRl9PTkVTSE9ULAorCQkJCQkg IndmeCIsIGJ1cyk7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3NwaV9pcnFfdW5zdWJzY3JpYmUodm9p ZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3NwaV9wcml2ICpidXMgPSBwcml2OworCisJZGV2bV9m cmVlX2lycSgmYnVzLT5mdW5jLT5kZXYsIGJ1cy0+ZnVuYy0+aXJxLCBidXMpOworCXJldHVybiAw OworfQorCitzdGF0aWMgc2l6ZV90IHdmeF9zcGlfYWxpZ25fc2l6ZSh2b2lkICpwcml2LCBzaXpl X3Qgc2l6ZSkKK3sKKwkvKiBNb3N0IG9mIFNQSSBjb250cm9sbGVycyBhdm9pZCBETUEgaWYgYnVm ZmVyIHNpemUgaXMgbm90IDMyYml0IGFsaWduZWQKKwkgKi8KKwlyZXR1cm4gQUxJR04oc2l6ZSwg NCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2Z4X2h3YnVzX29wcyB3Znhfc3BpX2h3YnVz X29wcyA9IHsKKwkuY29weV9mcm9tX2lvICAgID0gd2Z4X3NwaV9jb3B5X2Zyb21faW8sCisJLmNv cHlfdG9faW8gICAgICA9IHdmeF9zcGlfY29weV90b19pbywKKwkuaXJxX3N1YnNjcmliZSAgID0g d2Z4X3NwaV9pcnFfc3Vic2NyaWJlLAorCS5pcnFfdW5zdWJzY3JpYmUgPSB3Znhfc3BpX2lycV91 bnN1YnNjcmliZSwKKwkubG9jayAgICAgICAgICAgID0gd2Z4X3NwaV9sb2NrLAorCS51bmxvY2sg ICAgICAgICAgPSB3Znhfc3BpX3VubG9jaywKKwkuYWxpZ25fc2l6ZSAgICAgID0gd2Z4X3NwaV9h bGlnbl9zaXplLAorfTsKKworc3RhdGljIGludCB3Znhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpmdW5jKQoreworCXN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAqcGRhdGE7CisJc3RydWN0 IHdmeF9zcGlfcHJpdiAqYnVzOworCWludCByZXQ7CisKKwlpZiAoIWZ1bmMtPmJpdHNfcGVyX3dv cmQpCisJCWZ1bmMtPmJpdHNfcGVyX3dvcmQgPSAxNjsKKwlyZXQgPSBzcGlfc2V0dXAoZnVuYyk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwlwZGF0YSA9IChzdHJ1Y3Qgd2Z4X3BsYXRmb3Jt X2RhdGEgKilzcGlfZ2V0X2RldmljZV9pZChmdW5jKS0+ZHJpdmVyX2RhdGE7CisJaWYgKCFwZGF0 YSkgeworCQlkZXZfZXJyKCZmdW5jLT5kZXYsICJ1bmFibGUgdG8gcmV0cmlldmUgZHJpdmVyIGRh dGEgKHBsZWFzZSByZXBvcnQpXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJLyogVHJh Y2UgYmVsb3cgaXMgYWxzbyBkaXNwbGF5ZWQgYnkgc3BpX3NldHVwKCkgaWYgY29tcGlsZWQgd2l0 aCBERUJVRyAqLworCWRldl9kYmcoJmZ1bmMtPmRldiwgIlNQSSBwYXJhbXM6IENTPSVkLCBtb2Rl PSVkIGJpdHMvd29yZD0lZCBzcGVlZD0lZFxuIiwKKwkJZnVuYy0+Y2hpcF9zZWxlY3QsIGZ1bmMt Pm1vZGUsIGZ1bmMtPmJpdHNfcGVyX3dvcmQsCisJCWZ1bmMtPm1heF9zcGVlZF9oeik7CisJaWYg KGZ1bmMtPmJpdHNfcGVyX3dvcmQgIT0gMTYgJiYgZnVuYy0+Yml0c19wZXJfd29yZCAhPSA4KQor CQlkZXZfd2FybigmZnVuYy0+ZGV2LCAidW51c3VhbCBiaXRzL3dvcmQgdmFsdWU6ICVkXG4iLAor CQkJIGZ1bmMtPmJpdHNfcGVyX3dvcmQpOworCWlmIChmdW5jLT5tYXhfc3BlZWRfaHogPiA1MDAw MDAwMCkKKwkJZGV2X3dhcm4oJmZ1bmMtPmRldiwgIiVkSHogaXMgYSB2ZXJ5IGhpZ2ggc3BlZWRc biIsCisJCQkgZnVuYy0+bWF4X3NwZWVkX2h6KTsKKworCWJ1cyA9IGRldm1fa3phbGxvYygmZnVu Yy0+ZGV2LCBzaXplb2YoKmJ1cyksIEdGUF9LRVJORUwpOworCWlmICghYnVzKQorCQlyZXR1cm4g LUVOT01FTTsKKwlidXMtPmZ1bmMgPSBmdW5jOworCWlmIChmdW5jLT5iaXRzX3Blcl93b3JkID09 IDggfHwgSVNfRU5BQkxFRChDT05GSUdfQ1BVX0JJR19FTkRJQU4pKQorCQlidXMtPm5lZWRfc3dh YiA9IHRydWU7CisJc3BpX3NldF9kcnZkYXRhKGZ1bmMsIGJ1cyk7CisKKwlidXMtPmdwaW9fcmVz ZXQgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbCgmZnVuYy0+ZGV2LCAicmVzZXQiLAorCQkJCQkJ ICBHUElPRF9PVVRfTE9XKTsKKwlpZiAoSVNfRVJSKGJ1cy0+Z3Bpb19yZXNldCkpCisJCXJldHVy biBQVFJfRVJSKGJ1cy0+Z3Bpb19yZXNldCk7CisJaWYgKCFidXMtPmdwaW9fcmVzZXQpIHsKKwkJ ZGV2X3dhcm4oJmZ1bmMtPmRldiwKKwkJCSAiZ3BpbyByZXNldCBpcyBub3QgZGVmaW5lZCwgdHJ5 aW5nIHRvIGxvYWQgZmlybXdhcmUgYW55d2F5XG4iKTsKKwl9IGVsc2UgeworCQlncGlvZF9zZXRf Y29uc3VtZXJfbmFtZShidXMtPmdwaW9fcmVzZXQsICJ3ZnggcmVzZXQiKTsKKwkJaWYgKHBkYXRh LT5yZXNldF9pbnZlcnRlZCkKKwkJCWdwaW9kX3RvZ2dsZV9hY3RpdmVfbG93KGJ1cy0+Z3Bpb19y ZXNldCk7CisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChidXMtPmdwaW9fcmVzZXQsIDEpOwor CQl1c2xlZXBfcmFuZ2UoMTAwLCAxNTApOworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoYnVz LT5ncGlvX3Jlc2V0LCAwKTsKKwkJdXNsZWVwX3JhbmdlKDIwMDAsIDI1MDApOworCX0KKworCWJ1 cy0+Y29yZSA9IHdmeF9pbml0X2NvbW1vbigmZnVuYy0+ZGV2LCBwZGF0YSwgJndmeF9zcGlfaHdi dXNfb3BzLCBidXMpOworCWlmICghYnVzLT5jb3JlKQorCQlyZXR1cm4gLUVJTzsKKworCXJldHVy biB3ZnhfcHJvYmUoYnVzLT5jb3JlKTsKK30KKworc3RhdGljIGludCB3Znhfc3BpX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqZnVuYykKK3sKKwlzdHJ1Y3Qgd2Z4X3NwaV9wcml2ICpidXMgPSBz cGlfZ2V0X2RydmRhdGEoZnVuYyk7CisKKwl3ZnhfcmVsZWFzZShidXMtPmNvcmUpOworCXJldHVy biAwOworfQorCisvKiBGb3IgZHluYW1pYyBkcml2ZXIgYmluZGluZywga2VybmVsIGRvZXMgbm90 IHVzZSBPRiB0byBtYXRjaCBkcml2ZXIuIEl0IG9ubHkKKyAqIHVzZSBtb2RhbGlhcyBhbmQgbW9k YWxpYXMgaXMgYSBjb3B5IG9mICdjb21wYXRpYmxlJyBEVCBub2RlIHdpdGggdmVuZG9yCisgKiBz dHJpcHBlZC4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHdmeF9zcGlf aWRbXSA9IHsKKwl7ICJ3ZjIwMCIsIChrZXJuZWxfdWxvbmdfdCkmcGRhdGFfd2YyMDAgfSwKKwl7 ICJicmQ0MDAxYSIsIChrZXJuZWxfdWxvbmdfdCkmcGRhdGFfYnJkNDAwMWEgfSwKKwl7ICJicmQ4 MDIyYSIsIChrZXJuZWxfdWxvbmdfdCkmcGRhdGFfYnJkODAyMmEgfSwKKwl7ICJicmQ4MDIzYSIs IChrZXJuZWxfdWxvbmdfdCkmcGRhdGFfYnJkODAyM2EgfSwKKwl7ICJ3Zngtc3BpIiwgKGtlcm5l bF91bG9uZ190KSZwZGF0YV93Znhfc3BpIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFC TEUoc3BpLCB3Znhfc3BpX2lkKTsKKworI2lmZGVmIENPTkZJR19PRgorc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgd2Z4X3NwaV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUg PSAic2lsYWJzLHdmMjAwIiwgLmRhdGEgPSAmcGRhdGFfd2YyMDAgfSwKKwl7IC5jb21wYXRpYmxl ID0gInNpbGFicyxicmQ0MDAxYSIsIC5kYXRhID0gJnBkYXRhX2JyZDQwMDFhIH0sCisJeyAuY29t cGF0aWJsZSA9ICJzaWxhYnMsYnJkODAyMmEiLCAuZGF0YSA9ICZwZGF0YV9icmQ4MDIyYSB9LAor CXsgLmNvbXBhdGlibGUgPSAic2lsYWJzLGJyZDgwMjNhIiwgLmRhdGEgPSAmcGRhdGFfYnJkODAy M2EgfSwKKwl7IC5jb21wYXRpYmxlID0gInNpbGFicyx3Zngtc3BpIiwgLmRhdGEgPSAmcGRhdGFf d2Z4X3NwaSB9LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Znhfc3BpX29m X21hdGNoKTsKKyNlbmRpZgorCitzdHJ1Y3Qgc3BpX2RyaXZlciB3Znhfc3BpX2RyaXZlciA9IHsK KwkuZHJpdmVyID0geworCQkubmFtZSA9ICJ3Zngtc3BpIiwKKwkJLm9mX21hdGNoX3RhYmxlID0g b2ZfbWF0Y2hfcHRyKHdmeF9zcGlfb2ZfbWF0Y2gpLAorCX0sCisJLmlkX3RhYmxlID0gd2Z4X3Nw aV9pZCwKKwkucHJvYmUgPSB3Znhfc3BpX3Byb2JlLAorCS5yZW1vdmUgPSB3Znhfc3BpX3JlbW92 ZSwKK307Ci0tIAoyLjMzLjAKCg==