Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5880149pxu; Wed, 23 Dec 2020 07:42:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJz2xJl4kHae9Yr3/vJgb/bs6GYdke+Z9dsaENweKYQtNZnv/DritFUiWd8TJyAF5n2OZstq X-Received: by 2002:a05:6402:1352:: with SMTP id y18mr25327079edw.178.1608738138376; Wed, 23 Dec 2020 07:42:18 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1608738138; cv=pass; d=google.com; s=arc-20160816; b=Mb5BlP/jeeLciqQO41g5SQ2fOLjD4kfPZBsvj0FEoGAOAZXEg2zezUZ5Sr0bawhdyF GdO33RRcsWsEHHV3weGUz4ozq+D5ATAYpcqViu28AHg9/opTTqjQj/raTLtRjpyjYNiw mIptnhgnFshCg/1xjZdjQOMN0c6k8HqdyaCtB1TuxFY7wdmqtG4XDZ76SyPYeNG9pDQv ajlq7cqO/Dak//g4u585LaL57kCiJwYd78NLlSf9jjDpu/7nOk0rU3kb70uwpHlikMrS gM1FxkFSYoH322ne5vLxf6tYZXENCPSXzNGRLxh/gcA7duyMvlvhw5snUxw0KbpMv0rB qXgw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JfoVRrcUgHcaFj6+3LiruERtPT1T0IbpXjFu+jut+RA=; b=FLRmAR56LTs5Lgp48WgR+RMfmrkOsEdQa5iOEP1jBBsae2G7oj5/jz0QTB9w7JgR8z edGJUuOCgkVM5KwDflYvtAlCKg47XcL515h2pQ49z4nJRqlPEdgtjbJrqCTz+ygsLThQ YI+w62LE1J/gWV8FGgprHICCTJOiWRM7UVBdloqr1RQVTQvsmktBLp+hXYRSDxwZfLZr 4UG+ZTgzbm07/bJDr05PTOxOM8hMSodVM7kAYgVdZ6Bk6u85J8LBpCSqLdXNKqxkOIWz R9zHDi5ERg/vhaMwqRoJnDI+N5RRg8wlf5sobGhxEnyhRDiprHj4kHRwmQjLVoGPx64W ll6w== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b=B46csWqu; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hk1si12048939ejb.343.2020.12.23.07.41.55; Wed, 23 Dec 2020 07:42:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b=B46csWqu; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729081AbgLWPlW (ORCPT + 99 others); Wed, 23 Dec 2020 10:41:22 -0500 Received: from mail-bn8nam08on2071.outbound.protection.outlook.com ([40.107.100.71]:17953 "EHLO NAM04-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728775AbgLWPlT (ORCPT ); Wed, 23 Dec 2020 10:41:19 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DwaV1uV+bEAK4dvfcElBQy68Y+1KaLkxm/3xF8gAWWfuU6AI0WrPbk5HppWnOjc89xdv6NPliwgLTnTP4jAxGnh8MGiZSQa73GhVwW9ox0fNHshBh+aI4WaJMUVPnJrecGyiEpSfaPtDEMzliRSUskxweDUl1p2MIEFT+bS55YlP623UC0czGHD85RXUjeJRMlcx8+cZzsLprPA97xDMAp7Ou+5BX9DOPmbXYI9aJLyqaNmqiHXAfIaTK0E107KVVHj1XWaWz48zpE3Rn1QjfwoWka+xcVYgwf6uBCKVvej+qRUK5pSCkmQQzknyp3x6dCfHRe8YMlB2BiRgiVxyVQ== 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=JfoVRrcUgHcaFj6+3LiruERtPT1T0IbpXjFu+jut+RA=; b=mSW1T3bk4Zyy0Ly8ueZnzUr0DZvgRmZ0b/JwZM/OizoUadnxnbfp2lBJzzdDZV0EyeFkOb8HbTEuxx1KYm/6NwU9J/KZYVxEDnWoA7hwkQMRpVxRwWZts/CMyioWAPhToiqhJpWWCUXDVcoOPvpu+F4W/IhmmdBqz44YNOeiyeXpkH3i9CK727bGpSjyFehj2HeVweXJ4DiW09VPy6zQ5MzvXbDaRYRDTYByyNS91SzKIkAzu6zEkiqrYu492XaW7adojeMRzMSqDq4fvtcZe/0FUGs8X4PpVB5wwFXmqxnDTgJFAEJTrsKUBuerJ3158J257M4V91hRyXG+ORzgnQ== 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=JfoVRrcUgHcaFj6+3LiruERtPT1T0IbpXjFu+jut+RA=; b=B46csWqufb2QqCKpTlPYVYjJBVIOgGBqlxCDTiEa/UHPgWAIzxqc5iu0bhXuWNwHfXtU0wnCxd8ZFChi2NFbTBRBD/FKagXHZmyaLU5TAm2BzeXNSRtcTQW+8rj5JnxQGQrgiY0WrGw2J3ez9/1m9qNcs1aZvKxHhP+z/uU7XEQ= 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 SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SA0PR11MB4543.namprd11.prod.outlook.com (2603:10b6:806:99::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.29; Wed, 23 Dec 2020 15:39:58 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca%5]) with mapi id 15.20.3700.026; Wed, 23 Dec 2020 15:39:58 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "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 v4 07/24] wfx: add bus_spi.c Date: Wed, 23 Dec 2020 16:39:08 +0100 Message-Id: <20201223153925.73742-8-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> References: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Originating-IP: [82.67.86.106] X-ClientProxiedBy: SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (82.67.86.106) by SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Wed, 23 Dec 2020 15:39:56 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2e33a129-11eb-4af7-4320-08d8a759014d X-MS-TrafficTypeDiagnostic: SA0PR11MB4543: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2089; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 04mrH5bT4/gCV4sdqBy34P/YtbvmzKlO6LsU35WMpqx4Xz6kyYDxlKNzKAK+WRBV7V8/38CYeTD7sbDRMrhPQnXgWs2SYD9d5wbu8zO3yDIMQYDprSI2cXh87DzeIu/F/jIKRel2sUFkwygZseN8Ch3OmyUS/2urg9815fDcvUg86yaBKf3gO36fIYOW2CvX7ofdxvXVYze2oOpLr4Ruy9mpMe1eXMPz3RSm5kYpJYwrInd9cFG5BvS/Ly4dlDqZRJjrfu+0IJZOU8DCpJgURdNxPTL1bsK8v8Ukx2aCFXL2Dw5YZS3s8NyzDU1GsP7RU2pejQRT5T/tuhYbg76b0jjnGy6JBgN7kQ7GjDEut+sbPpC6GBOgM2xeo7HuT3bSp5HH5wfzNfWHZ731HgdmCQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(376002)(366004)(346002)(396003)(39850400004)(5660300002)(956004)(2616005)(66476007)(66556008)(86362001)(36756003)(107886003)(66574015)(66946007)(6486002)(4326008)(83380400001)(6666004)(8676002)(186003)(52116002)(16526019)(7416002)(478600001)(26005)(1076003)(316002)(7696005)(54906003)(8936002)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?WUJGZklKeDBzSk1tWWt0aUF2YmtkUGRPVmpwM3Y5YWJSUXZJODJ5RXhGRmlW?= =?utf-8?B?WGdpNndQSzcraVZjak0wcEFUWkFMVXA3ci9WWm93QzdkdHUrYmQwb2V6SzNi?= =?utf-8?B?MTNDQ0VzM1gxOElrcUFkdE5aVkhiQWpiVWtyYXFWY0dKQUQwRnlUeTVObFdr?= =?utf-8?B?YlZHRDB0RjFXU1hIcVVPaXU4ejg0a0Z1c2RRWDVEN1pnODE3ZGlXT2l0MXBK?= =?utf-8?B?OElrSTRvc1luZjAxbkxZTkdrbDZRRGFEZ2JZZCtEMEFIZDVESkhVVEt4OG9u?= =?utf-8?B?blFjUnBwOGlOSmRMR2lzMWlwcjZ0dzF2MGxDZEVvcnJnQUZwNWEwR3FuaXdC?= =?utf-8?B?RXIraWZvck92QndSbzh5OTdDd256ZGtxTks3cFlacEkzVlovQmZha0ZZQWQ0?= =?utf-8?B?cmZVdjVDUVVjd04za0dJam1CWFc3TzFaOWZobHBlN0p0K2d6M3RibXg5KzJQ?= =?utf-8?B?ZGpKcDl1V3UrVG1XdklIakwxSnBXd0VWZzVzLyt0Y1NuYURPU3c2ZUQ3bUdz?= =?utf-8?B?MmFhOWNVQ0NQbDBCY0MwOFg1WGEyVGdvTVd0c2lZbDFZUUFyeVF3Z2pyQTVv?= =?utf-8?B?RFJTQnV6aDdQblByQW5pNHVBV3lQWjBmZGtIemhSMVY2NXhHMTllTGZoam5U?= =?utf-8?B?K0VtTWljdUs5U1oxcjZ0N3hHSmFkU2k0dHBzUS9MdjRvUWlkSnd4RlJJMHhn?= =?utf-8?B?Rjd4L2FhUEFuREY4bVpUbXp1a2NkVnZGNXE3RGVpUHRXVkVIZ1U5WGF5clFW?= =?utf-8?B?NWRoZkVYVnM0WDlzUFlSd1hiamtQSkNYcFpORGZHbk8xZDJnTWF3Vkl3eGlh?= =?utf-8?B?Snh3N0M5TTJWSC83S0hmVXpKd3lPOE82ZGxaYkRkL1lTbmZabUhGdVVLckIy?= =?utf-8?B?bEk4ME9Ib2RuSTdIcng0enU5L3ZERVBadHE0K04wUW00eFZlNGxYSm1FNUps?= =?utf-8?B?TVJLenRTQTcxUUloNHhyS2JWZE9MMzYzVkZsRU0vb0NZcHlsSkxwbitJRUUx?= =?utf-8?B?eG5jUXJFN0tTRUI5N2d6c3BEeG9RRUp1amFpbXFwcjltcVhVQmwyeEQ0Z1pZ?= =?utf-8?B?M042MmF4RHBFR3BDd3FmVTJIS05rSk9wOVpDMEVzaGU2UXg5S29ienRVdWc5?= =?utf-8?B?Zm9EaGc2bWkyVjZuLytQaXIrL3hiTks0YTlrZDVGbEV2dFFjSTVCV3VOb0V0?= =?utf-8?B?amVqRjllc1BNZDUzNGhyK3ZiK2xLMzBRK1dTT1JtU1I4SkN6djBSQTVHbFkx?= =?utf-8?B?TThnZlkrUit5eTViMUhJeDBXaG5Wc0FIQ3B4b1hqcm5kVkJpZU1yMDlleGMy?= =?utf-8?Q?+DCAbcz9H2SLObwKszc7gzqAtJUZEBhLQX?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2020 15:39:58.7394 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-Network-Message-Id: 2e33a129-11eb-4af7-4320-08d8a759014d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jDf1r/4Si2xkAVmTSsU9ybcNs5QY0xJVhk8fDbGRpvH6W/o/nkVz+nCkKyL0TN6oGeWZ3bY6dzqcSpwi5GmvNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4543 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NwaS5jIHwgMjcxICsr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNzEgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nw aS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9idXNfc3Bp LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2J1c19zcGkuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2Mzc1MDA0YzkyMAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NwaS5jCkBAIC0wLDAg KzEsMjcxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgor ICogU1BJIGludGVyZmFjZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNv biBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMSwgU2FncmFkIEluYy4K KyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZ3Bp by9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9v Zi5oPgorCisjaW5jbHVkZSAiYnVzLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5jbHVkZSAiaHdp by5oIgorI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJiaC5oIgorCisjZGVmaW5lIFNFVF9X UklURSAweDdGRkYgICAgICAgIC8qIHVzYWdlOiBhbmQgb3BlcmF0aW9uICovCisjZGVmaW5lIFNF VF9SRUFEIDB4ODAwMCAgICAgICAgIC8qIHVzYWdlOiBvciBvcGVyYXRpb24gKi8KKworI2RlZmlu ZSBXRlhfUkVTRVRfSU5WRVJURUQgMQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9y bV9kYXRhIHdmeF9zcGlfcGRhdGEgPSB7CisJLmZpbGVfZncgPSAid2ZtX3dmMjAwIiwKKwkuZmls ZV9wZHMgPSAid2YyMDAucGRzIiwKKwkudXNlX3Jpc2luZ19jbGsgPSB0cnVlLAorfTsKKworc3Ry dWN0IHdmeF9zcGlfcHJpdiB7CisJc3RydWN0IHNwaV9kZXZpY2UgKmZ1bmM7CisJc3RydWN0IHdm eF9kZXYgKmNvcmU7CisJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb19yZXNldDsKKwlib29sIG5lZWRf c3dhYjsKK307CisKKy8qIFdGeCBjaGlwIHJlYWQgZGF0YSAxNmJpdHMgYXQgdGltZSBhbmQgcGxh Y2UgdGhlbSBkaXJlY3RseSBpbnRvIChsaXR0bGUKKyAqIGVuZGlhbikgQ1BVIHJlZ2lzdGVyLiBT bywgY2hpcCBleHBlY3QgYnl0ZSBvcmRlciBsaWtlICJCMSBCMCBCMyBCMiIgKHdoaWxlCisgKiBM RSBpcyAiQjAgQjEgQjIgQjMiIGFuZCBCRSBpcyAiQjMgQjIgQjEgQjAiKQorICoKKyAqIEEgbGl0 dGxlIGVuZGlhbiBob3N0IHdpdGggYml0c19wZXJfd29yZCA9PSAxNiBzaG91bGQgZG8gdGhlIHJp Z2h0IGpvYgorICogbmF0aXZlbHkuIFRoZSBjb2RlIGJlbG93IHRvIHN1cHBvcnQgYmlnIGVuZGlh biBob3N0IGFuZCBjb21tb25seSB1c2VkIFNQSQorICogOGJpdHMuCisgKi8KK3N0YXRpYyBpbnQg d2Z4X3NwaV9jb3B5X2Zyb21faW8odm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsCisJCQkJ dm9pZCAqZHN0LCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0g cHJpdjsKKwl1MTYgcmVnYWRkciA9IChhZGRyIDw8IDEyKSB8IChjb3VudCAvIDIpIHwgU0VUX1JF QUQ7CisJc3RydWN0IHNwaV9tZXNzYWdlICAgICAgbTsKKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAg ICB0X2FkZHIgPSB7CisJCS50eF9idWYgICAgICAgICA9ICZyZWdhZGRyLAorCQkubGVuICAgICAg ICAgICAgPSBzaXplb2YocmVnYWRkciksCisJfTsKKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAgICB0 X21zZyA9IHsKKwkJLnJ4X2J1ZiAgICAgICAgID0gZHN0LAorCQkubGVuICAgICAgICAgICAgPSBj b3VudCwKKwl9OworCXUxNiAqZHN0MTYgPSBkc3Q7CisJaW50IHJldCwgaTsKKworCVdBUk4oY291 bnQgJSAyLCAiYnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIiKTsKKworCWNwdV90 b19sZTE2cygmcmVnYWRkcik7CisJaWYgKGJ1cy0+bmVlZF9zd2FiKQorCQlzd2FiMTZzKCZyZWdh ZGRyKTsKKworCXNwaV9tZXNzYWdlX2luaXQoJm0pOworCXNwaV9tZXNzYWdlX2FkZF90YWlsKCZ0 X2FkZHIsICZtKTsKKwlzcGlfbWVzc2FnZV9hZGRfdGFpbCgmdF9tc2csICZtKTsKKwlyZXQgPSBz cGlfc3luYyhidXMtPmZ1bmMsICZtKTsKKworCWlmIChidXMtPm5lZWRfc3dhYiAmJiBhZGRyID09 IFdGWF9SRUdfQ09ORklHKQorCQlmb3IgKGkgPSAwOyBpIDwgY291bnQgLyAyOyBpKyspCisJCQlz d2FiMTZzKCZkc3QxNltpXSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB3Znhfc3Bp X2NvcHlfdG9faW8odm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsCisJCQkgICAgICBjb25z dCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgd2Z4X3NwaV9wcml2ICpidXMg PSBwcml2OworCXUxNiByZWdhZGRyID0gKGFkZHIgPDwgMTIpIHwgKGNvdW50IC8gMik7CisJLyog RklYTUU6IHVzZSBhIGJvdW5jZSBidWZmZXIgKi8KKwl1MTYgKnNyYzE2ID0gKHZvaWQgKilzcmM7 CisJaW50IHJldCwgaTsKKwlzdHJ1Y3Qgc3BpX21lc3NhZ2UgICAgICBtOworCXN0cnVjdCBzcGlf dHJhbnNmZXIgICAgIHRfYWRkciA9IHsKKwkJLnR4X2J1ZiAgICAgICAgID0gJnJlZ2FkZHIsCisJ CS5sZW4gICAgICAgICAgICA9IHNpemVvZihyZWdhZGRyKSwKKwl9OworCXN0cnVjdCBzcGlfdHJh bnNmZXIgICAgIHRfbXNnID0geworCQkudHhfYnVmICAgICAgICAgPSBzcmMsCisJCS5sZW4gICAg ICAgICAgICA9IGNvdW50LAorCX07CisKKwlXQVJOKGNvdW50ICUgMiwgImJ1ZmZlciBzaXplIG11 c3QgYmUgYSBtdWx0aXBsZSBvZiAyIik7CisJV0FSTihyZWdhZGRyICYgU0VUX1JFQUQsICJiYWQg YWRkciBvciBzaXplIG92ZXJmbG93Iik7CisKKwljcHVfdG9fbGUxNnMoJnJlZ2FkZHIpOworCisJ LyogUmVnaXN0ZXIgYWRkcmVzcyBhbmQgQ09ORklHIGNvbnRlbnQgYWx3YXlzIHVzZSAxNmJpdCBi aWcgZW5kaWFuCisJICogKCJCQURDIiBvcmRlcikKKwkgKi8KKwlpZiAoYnVzLT5uZWVkX3N3YWIp CisJCXN3YWIxNnMoJnJlZ2FkZHIpOworCWlmIChidXMtPm5lZWRfc3dhYiAmJiBhZGRyID09IFdG WF9SRUdfQ09ORklHKQorCQlmb3IgKGkgPSAwOyBpIDwgY291bnQgLyAyOyBpKyspCisJCQlzd2Fi MTZzKCZzcmMxNltpXSk7CisKKwlzcGlfbWVzc2FnZV9pbml0KCZtKTsKKwlzcGlfbWVzc2FnZV9h ZGRfdGFpbCgmdF9hZGRyLCAmbSk7CisJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnRfbXNnLCAmbSk7 CisJcmV0ID0gc3BpX3N5bmMoYnVzLT5mdW5jLCAmbSk7CisKKwlpZiAoYnVzLT5uZWVkX3N3YWIg JiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJRykKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50IC8gMjsg aSsrKQorCQkJc3dhYjE2cygmc3JjMTZbaV0pOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2 b2lkIHdmeF9zcGlfbG9jayh2b2lkICpwcml2KQoreworfQorCitzdGF0aWMgdm9pZCB3Znhfc3Bp X3VubG9jayh2b2lkICpwcml2KQoreworfQorCitzdGF0aWMgaXJxcmV0dXJuX3Qgd2Z4X3NwaV9p cnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc3BpX3ByaXYg KmJ1cyA9IHByaXY7CisKKwl3ZnhfYmhfcmVxdWVzdF9yeChidXMtPmNvcmUpOworCXJldHVybiBJ UlFfSEFORExFRDsKK30KKworc3RhdGljIGludCB3Znhfc3BpX2lycV9zdWJzY3JpYmUodm9pZCAq cHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3NwaV9wcml2ICpidXMgPSBwcml2OworCXUzMiBmbGFnczsK KworCWZsYWdzID0gaXJxX2dldF90cmlnZ2VyX3R5cGUoYnVzLT5mdW5jLT5pcnEpOworCWlmICgh ZmxhZ3MpCisJCWZsYWdzID0gSVJRRl9UUklHR0VSX0hJR0g7CisJZmxhZ3MgfD0gSVJRRl9PTkVT SE9UOworCXJldHVybiBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZidXMtPmZ1bmMtPmRldiwg YnVzLT5mdW5jLT5pcnEsIE5VTEwsCisJCQkJCSB3Znhfc3BpX2lycV9oYW5kbGVyLCBJUlFGX09O RVNIT1QsCisJCQkJCSAid2Z4IiwgYnVzKTsKK30KKworc3RhdGljIGludCB3Znhfc3BpX2lycV91 bnN1YnNjcmliZSh2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1cyA9IHBy aXY7CisKKwlkZXZtX2ZyZWVfaXJxKCZidXMtPmZ1bmMtPmRldiwgYnVzLT5mdW5jLT5pcnEsIGJ1 cyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzaXplX3Qgd2Z4X3NwaV9hbGlnbl9zaXplKHZv aWQgKnByaXYsIHNpemVfdCBzaXplKQoreworCS8qIE1vc3Qgb2YgU1BJIGNvbnRyb2xsZXJzIGF2 b2lkIERNQSBpZiBidWZmZXIgc2l6ZSBpcyBub3QgMzJiaXQgYWxpZ25lZAorCSAqLworCXJldHVy biBBTElHTihzaXplLCA0KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBod2J1c19vcHMgd2Z4 X3NwaV9od2J1c19vcHMgPSB7CisJLmNvcHlfZnJvbV9pbyA9IHdmeF9zcGlfY29weV9mcm9tX2lv LAorCS5jb3B5X3RvX2lvID0gd2Z4X3NwaV9jb3B5X3RvX2lvLAorCS5pcnFfc3Vic2NyaWJlID0g d2Z4X3NwaV9pcnFfc3Vic2NyaWJlLAorCS5pcnFfdW5zdWJzY3JpYmUgPSB3Znhfc3BpX2lycV91 bnN1YnNjcmliZSwKKwkubG9jawkJCT0gd2Z4X3NwaV9sb2NrLAorCS51bmxvY2sJCQk9IHdmeF9z cGlfdW5sb2NrLAorCS5hbGlnbl9zaXplCQk9IHdmeF9zcGlfYWxpZ25fc2l6ZSwKK307CisKK3N0 YXRpYyBpbnQgd2Z4X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqZnVuYykKK3sKKwlzdHJ1 Y3Qgd2Z4X3NwaV9wcml2ICpidXM7CisJaW50IHJldDsKKworCWlmICghZnVuYy0+Yml0c19wZXJf d29yZCkKKwkJZnVuYy0+Yml0c19wZXJfd29yZCA9IDE2OworCXJldCA9IHNwaV9zZXR1cChmdW5j KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCS8qIFRyYWNlIGJlbG93IGlzIGFsc28gZGlz cGxheWVkIGJ5IHNwaV9zZXR1cCgpIGlmIGNvbXBpbGVkIHdpdGggREVCVUcgKi8KKwlkZXZfZGJn KCZmdW5jLT5kZXYsICJTUEkgcGFyYW1zOiBDUz0lZCwgbW9kZT0lZCBiaXRzL3dvcmQ9JWQgc3Bl ZWQ9JWRcbiIsCisJCWZ1bmMtPmNoaXBfc2VsZWN0LCBmdW5jLT5tb2RlLCBmdW5jLT5iaXRzX3Bl cl93b3JkLAorCQlmdW5jLT5tYXhfc3BlZWRfaHopOworCWlmIChmdW5jLT5iaXRzX3Blcl93b3Jk ICE9IDE2ICYmIGZ1bmMtPmJpdHNfcGVyX3dvcmQgIT0gOCkKKwkJZGV2X3dhcm4oJmZ1bmMtPmRl diwgInVudXN1YWwgYml0cy93b3JkIHZhbHVlOiAlZFxuIiwKKwkJCSBmdW5jLT5iaXRzX3Blcl93 b3JkKTsKKwlpZiAoZnVuYy0+bWF4X3NwZWVkX2h6ID4gNTAwMDAwMDApCisJCWRldl93YXJuKCZm dW5jLT5kZXYsICIlZEh6IGlzIGEgdmVyeSBoaWdoIHNwZWVkXG4iLAorCQkJIGZ1bmMtPm1heF9z cGVlZF9oeik7CisKKwlidXMgPSBkZXZtX2t6YWxsb2MoJmZ1bmMtPmRldiwgc2l6ZW9mKCpidXMp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1cykKKwkJcmV0dXJuIC1FTk9NRU07CisJYnVzLT5mdW5j ID0gZnVuYzsKKwlpZiAoZnVuYy0+Yml0c19wZXJfd29yZCA9PSA4IHx8IElTX0VOQUJMRUQoQ09O RklHX0NQVV9CSUdfRU5ESUFOKSkKKwkJYnVzLT5uZWVkX3N3YWIgPSB0cnVlOworCXNwaV9zZXRf ZHJ2ZGF0YShmdW5jLCBidXMpOworCisJYnVzLT5ncGlvX3Jlc2V0ID0gZGV2bV9ncGlvZF9nZXRf b3B0aW9uYWwoJmZ1bmMtPmRldiwgInJlc2V0IiwKKwkJCQkJCSAgR1BJT0RfT1VUX0xPVyk7CisJ aWYgKElTX0VSUihidXMtPmdwaW9fcmVzZXQpKQorCQlyZXR1cm4gUFRSX0VSUihidXMtPmdwaW9f cmVzZXQpOworCWlmICghYnVzLT5ncGlvX3Jlc2V0KSB7CisJCWRldl93YXJuKCZmdW5jLT5kZXYs CisJCQkgImdwaW8gcmVzZXQgaXMgbm90IGRlZmluZWQsIHRyeWluZyB0byBsb2FkIGZpcm13YXJl IGFueXdheVxuIik7CisJfSBlbHNlIHsKKwkJZ3Bpb2Rfc2V0X2NvbnN1bWVyX25hbWUoYnVzLT5n cGlvX3Jlc2V0LCAid2Z4IHJlc2V0Iik7CisJCWlmIChzcGlfZ2V0X2RldmljZV9pZChmdW5jKS0+ ZHJpdmVyX2RhdGEgJiBXRlhfUkVTRVRfSU5WRVJURUQpCisJCQlncGlvZF90b2dnbGVfYWN0aXZl X2xvdyhidXMtPmdwaW9fcmVzZXQpOworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoYnVzLT5n cGlvX3Jlc2V0LCAxKTsKKwkJdXNsZWVwX3JhbmdlKDEwMCwgMTUwKTsKKwkJZ3Bpb2Rfc2V0X3Zh bHVlX2NhbnNsZWVwKGJ1cy0+Z3Bpb19yZXNldCwgMCk7CisJCXVzbGVlcF9yYW5nZSgyMDAwLCAy NTAwKTsKKwl9CisKKwlidXMtPmNvcmUgPSB3ZnhfaW5pdF9jb21tb24oJmZ1bmMtPmRldiwgJndm eF9zcGlfcGRhdGEsCisJCQkJICAgICZ3Znhfc3BpX2h3YnVzX29wcywgYnVzKTsKKwlpZiAoIWJ1 cy0+Y29yZSkKKwkJcmV0dXJuIC1FSU87CisKKwlyZXR1cm4gd2Z4X3Byb2JlKGJ1cy0+Y29yZSk7 Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKmZ1bmMp Cit7CisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gc3BpX2dldF9kcnZkYXRhKGZ1bmMpOwor CisJd2Z4X3JlbGVhc2UoYnVzLT5jb3JlKTsKKwlyZXR1cm4gMDsKK30KKworLyogRm9yIGR5bmFt aWMgZHJpdmVyIGJpbmRpbmcsIGtlcm5lbCBkb2VzIG5vdCB1c2UgT0YgdG8gbWF0Y2ggZHJpdmVy LiBJdCBvbmx5CisgKiB1c2UgbW9kYWxpYXMgYW5kIG1vZGFsaWFzIGlzIGEgY29weSBvZiAnY29t cGF0aWJsZScgRFQgbm9kZSB3aXRoIHZlbmRvcgorICogc3RyaXBwZWQuCisgKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCB3Znhfc3BpX2lkW10gPSB7CisJeyAid2Z4LXNwaSIs IFdGWF9SRVNFVF9JTlZFUlRFRCB9LAorCXsgIndmMjAwIiwgMCB9LAorCXsgfSwKK307CitNT0RV TEVfREVWSUNFX1RBQkxFKHNwaSwgd2Z4X3NwaV9pZCk7CisKKyNpZmRlZiBDT05GSUdfT0YKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdmeF9zcGlfb2ZfbWF0Y2hbXSA9IHsKKwl7 IC5jb21wYXRpYmxlID0gInNpbGFicyx3Zngtc3BpIiwgLmRhdGEgPSAodm9pZCAqKVdGWF9SRVNF VF9JTlZFUlRFRCB9LAorCXsgLmNvbXBhdGlibGUgPSAic2lsYWJzLHdmMjAwIiB9LAorCXsgfSwK K307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Znhfc3BpX29mX21hdGNoKTsKKyNlbmRpZgor CitzdHJ1Y3Qgc3BpX2RyaXZlciB3Znhfc3BpX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQku bmFtZSA9ICJ3Zngtc3BpIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHdmeF9z cGlfb2ZfbWF0Y2gpLAorCX0sCisJLmlkX3RhYmxlID0gd2Z4X3NwaV9pZCwKKwkucHJvYmUgPSB3 Znhfc3BpX3Byb2JlLAorCS5yZW1vdmUgPSB3Znhfc3BpX3JlbW92ZSwKK307Ci0tIAoyLjI5LjIK Cg==