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 0448EC4332F for ; Tue, 5 Oct 2021 13:58:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E4540610EA for ; Tue, 5 Oct 2021 13:58:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235476AbhJEN7y (ORCPT ); Tue, 5 Oct 2021 09:59:54 -0400 Received: from mail-dm3nam07on2072.outbound.protection.outlook.com ([40.107.95.72]:52448 "EHLO NAM02-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S236483AbhJEN6d (ORCPT ); Tue, 5 Oct 2021 09:58:33 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aF+GTNUT0TJrv7VRWGz/4O1e8DREFdfljkJGftEu3xGas1CfTf4kGqh8Pzvdwge0Bagdgk3j5RF+CErvjR4UCVx0qoH8dnyTHKNX3Uj3dJXmbr107qwJ4morqNWZgnBt/LKtJW4PLjPrgcdC9qouhM63U/unzQEdpu0jAefDqSsKSzeI5E2Lceh3yCjWjy1Ly4ESBj+SW8m09A2VlwufDgjHTutYomOwhFgTTJYsCbEkYmiYnjYAuZaTUYfACGLEsdic3hf7ZuWNBWg70+kvm586M40yDwXyxuJj9XcYSU/HZA4PPZUBtpve0hJSOZnhtAsjotn4g8b3YsyqrFFm2A== 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=iwSZqDpQit+YKHH2xx3fIcR6QfR470w8Irwg+O7hvkQ=; b=BwidG633rbHdB96F2icEbSvGlBh2uKmKSYWfoV4rJDwHwoWWmk3rbniedCYZnkMU7J/8wRN0Ox+U7vkB5TBB7wyp7KK1I0qGnopcQNVfsiUOO+IecSfGNz2O7RjkqljEo/bdnx+A6ZpcSXTzis00G6YqM4Df0TlkBPGLT/LFsW0oKgtQBCPZ8cHgzpSUIXIdX8tfjuoQtmAMmUrpi8kCND1/nBfe/AXgasjfTGOFZEdNzhzTowjdIaAh5Fnm+aUjsx4pszITss5rcQsQPJY0Pfu1QOMHsx/jJ2RfkCE4stBkwkjomtmJgglLLLa3bWhBiUeSXtci8hfMJeMJlxm+cw== 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=iwSZqDpQit+YKHH2xx3fIcR6QfR470w8Irwg+O7hvkQ=; b=IBWbHxcxmV8LPIBj+VFxMVxNgpaK3ITZRvTiKyRFEZoD4b2/c6O6YIsX++7eqX+icHy8T33u3b0XNFJMrLLSlXzqnxrWLux9HE3WOLtEF3vBo0n4oGsIcRbRjPwk84JV6ShCZ9wwGH40rsWhHIEJKT4Mn3SCYRt9mOCr5OmNh7Q= 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:43 +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:43 +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 08/24] wfx: add bus_sdio.c Date: Tue, 5 Oct 2021 15:53:44 +0200 Message-Id: <20211005135400.788058-9-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:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c1509636-94b8-426d-b2e8-08d98807aeae X-MS-TrafficTypeDiagnostic: PH0PR11MB5643: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2512; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fBHKIAS6atT8iE268ZK0VCkU3p2nc49jxMgumBMxsAHwj1IEvzHxY1may9sgQGHwZi+4aCSzg9UgB12KTuQt0mYFyyzSmFokxyXRhuKMcKanwgCqFpvQZPaWpxyZDiTmDJz2THA4KOgju0VESQD62+CAiPLJofUg4EraXKxt9D5H5DjDHGNwkenuh2HmWkUJwBN4u5sRsvctCo9atbIk19HIA78GsRT+xujbFgOUlpj6s0LrG0fv12OYZJkHCcCxHBiEt/ELPjbEVwkhGRinMUVy9RS8LCk3AZFgCWW14nFkEvZ0qfVKo83heo1pOGORPuXTBS/kozucU+/ByisNWN6ayqj2XA6ebDX8H1SAjNDahk8/f8O7HZQ88gsj5qgJiUlml/NxDtGAIPlFxvJ+pAn65A7Ad4PjVDpMmQNdfDiFxgkq2IVegSxj0jjCuafNra3uXosGY9akzqWFTWvUx7Eb466DHuoDo7g0vj6K3E20cH0BLI0969bN2WbczB02haXP9fv8h9MX4uK8MV7B6Ls3LzpOJBkXVN9cru1I5gf2qyxfsX3VRKxTgsJqkWTpYOnp07MvBO4F4XXMPgTgoa9zm6MeWlAz9M3+78xJ0F/HJ/zcu4DHDlFOb/NPmytUFfUboTWpcdB9YBJj+U+K3tpMnLigwGAfJB/6h/n4DikTFnap+ZPRdNXsq6b03Ay/wNNlcBR8xoXOWWRAaf1SQw== 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)(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?N1hVM3p3Z3JUenRDdjAvUkVndWxQRjhHM3lUYUFpOVJaelREWVUrUER1Y2FK?= =?utf-8?B?LytQNnAzOHZ6RFZjVWhKNFQveW1kRVdYeVNaL1lNZW9YSnByb3RXQkZ2SkFH?= =?utf-8?B?S1I2VTNtUHBWNEl6ak52WlQzcERJVVRmelJRSUdUY2NmWWtPdDg0NHF2WEJw?= =?utf-8?B?ZGd6MUVKYmpUUnVnWDVDSkRjcjNXcVhZWG1maFRrdytLV05COTd1dUtJUFZ4?= =?utf-8?B?RXo4YjZEMnZQZXVHbUgvYUdZcXZkQjIwVTVGQXBPQVNaUExISmhvUkVRWVg2?= =?utf-8?B?MkFsQ2xYcmltSGloODFJMGRNM0lTZVhYWncrb3Q5M29ScjlXQVJjNXJxVGlr?= =?utf-8?B?QTJ6N0lVQkNxMkljNHhtMjc3dy9BOFJrV3lSenlZZTlCbWNRRG1LNUMyald4?= =?utf-8?B?M0VVQnlNV1MxZEFaNVAvQUE5RGpkSzRPbTk1bWM0dTNEeTZkaXp6TlNVZUsr?= =?utf-8?B?SUw3ME9vV3FiV0VtZlZFRldBaXhUWk9jSVVEWjlRZHdtWVNYU0lDblp6aVh5?= =?utf-8?B?Z2l6V0ZCZ0hzeG4yejlUcmxtYUdJN0ZXcmhLRVNaZ05LSnRKV0pzdXQ1SS9S?= =?utf-8?B?MXZ6V2k4S2NCMXZrNFMwekVZaWFrZmxxMVZYTkpYejMvRkUvMHNxL2NPdUsz?= =?utf-8?B?cVB6NEhjcDRoTWM1QlhzRkhVSHBhV3p0cTBrRWpTR25nTFRQT3FWVVkwa3p0?= =?utf-8?B?bHp4VmtvdXd2WDB4TWRZZEp2d3laTU9wU014RldWOXBrQ200OFNYVlVKR09k?= =?utf-8?B?QW1Qa29zaUxITkcrNENDZVJOM1VjMVZRQlRscWpkZXZHc2NGblVXWHZGSDdK?= =?utf-8?B?TkVTVUREOTNCcEh2QW1sd2kwWW9XRFdmcmtYQlJEMys1eUg5MGU5TVZiVU1t?= =?utf-8?B?ZGIrTm9TS3puWW1MWkkxVFRTbFlFWFJhaWpvYnNWMzhNeWRWcENtUytuLys4?= =?utf-8?B?QmVHRXdQK09ZVXV0bGZ6azkzd2c4ZExJLytETS9VMFI0amFCRlhrL3Qwem1r?= =?utf-8?B?UnFKUE9oK25ndmJTZW9DdzBiYUZIOFhqM1IwaGtNSHdSTS9FMFBrS21OZjVs?= =?utf-8?B?Q1VsS0JGdzV1bFFiR3M5UWM1Y2V4ek0xZWNZZzE3Z01QQ2RHVmhFdnZ3dmV3?= =?utf-8?B?dWhCYjVqaXVOTVBoWjl3RWNMU0t0bmJUamJTMVhITFdZSnhzL0FZbUl2RENE?= =?utf-8?B?VlBCSGJLeWp6TmpWNUJSY0F0Si9LWXJKZHR5dXN4YnY1QzVmdkllYzRqc2ln?= =?utf-8?B?UFRQd2tBaGIxTnhYQ0xySkpIREhlWENwU3ZOL0pqZ0RrV05UNnZoekROMEhC?= =?utf-8?B?MTlMZXhnOGE3bk4zUmxnMkxVQUlLdUY1Y2s0QUJ1eDJsekVUMytrR2d5Slhu?= =?utf-8?B?VTFOTFNKRXdHcWhKZi83NDdKaGVuVkIwZWp2RHY2Uys3K2V1MTVlRklSYWw4?= =?utf-8?B?Z2lUbXBUeU1hTHg2Vkp1ZGtSa3p2S0JOblVqNDBYOFNmamZjYy9CNTYvWFhm?= =?utf-8?B?TGNqaXFrN0ZaWlJOTm9UZ09uelhYeUMzUHBmQkFwbm5pcUhiSDM4K3c0UDdz?= =?utf-8?B?dDZMNDkwQkQxWjg0T1RQZ3Y3a1pGOW9EOVpvRm9qV3F2bVJwSmhhMGxIbHRW?= =?utf-8?B?QkZtOUVoVGF1dE9EYXZUbkN4Z256ZkVUV1MvbXJjdTMxNWRBZ21qelBoWG90?= =?utf-8?B?cjAxUXNUY0E5MTQ2UDNESWMxajgrSFBCdDNVa3BySWVId2kzV1R1azlTT0p0?= =?utf-8?Q?55IfnvCXmOV8VKSfrr2OUHamuCHJmiTOPQfTzDN?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1509636-94b8-426d-b2e8-08d98807aeae 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:43.5081 (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: oEYp6IX+jQTLkBhO3wJ7U8L+vOurrEYQe5wriCXpJaIztDzuh/E2w0OTxNi/5ThN2bew8aqQMdMYAZ79myZRWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5643 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYyB8IDI4NyAr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyODcgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIyNWM3OTVjOThjNgotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpAQCAt MCwwICsxLDI4NyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQor LyoKKyAqIFNESU8gaW50ZXJmYWNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwLCBT aWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3NvbgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW1j L3NkaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+CisjaW5jbHVkZSA8bGlu dXgvbW1jL3NkaW9faWRzLmg+CisjaW5jbHVkZSA8bGludXgvbW1jL2NhcmQuaD4KKyNpbmNsdWRl IDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9vZl9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKyNpbmNsdWRlIDxs aW51eC9hbGlnbi5oPgorCisjaW5jbHVkZSAiYnVzLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5j bHVkZSAiaHdpby5oIgorI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJiaC5oIgorCitzdGF0 aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHBkYXRhX3dmMjAwID0geworCS5maWxl X2Z3ID0gIndmbV93ZjIwMCIsCisJLmZpbGVfcGRzID0gIndmMjAwLnBkcyIsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHBkYXRhX2JyZDQwMDFhID0geworCS5m aWxlX2Z3ID0gIndmbV93ZjIwMCIsCisJLmZpbGVfcGRzID0gImJyZDQwMDFhLnBkcyIsCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHBkYXRhX2JyZDgwMjJhID0g eworCS5maWxlX2Z3ID0gIndmbV93ZjIwMCIsCisJLmZpbGVfcGRzID0gImJyZDgwMjJhLnBkcyIs Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHBkYXRhX2JyZDgw MjNhID0geworCS5maWxlX2Z3ID0gIndmbV93ZjIwMCIsCisJLmZpbGVfcGRzID0gImJyZDgwMjNh LnBkcyIsCit9OworCisvKiBMZWdhY3kgRFQgZG9uJ3QgdXNlIGl0ICovCitzdGF0aWMgY29uc3Qg c3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHBkYXRhX3dmeF9zZGlvID0geworCS5maWxlX2Z3ID0g IndmbV93ZjIwMCIsCisJLmZpbGVfcGRzID0gIndmMjAwLnBkcyIsCit9OworCitzdHJ1Y3Qgd2Z4 X3NkaW9fcHJpdiB7CisJc3RydWN0IHNkaW9fZnVuYyAqZnVuYzsKKwlzdHJ1Y3Qgd2Z4X2RldiAq Y29yZTsKKwl1OCBidWZfaWRfdHg7CisJdTggYnVmX2lkX3J4OworCWludCBvZl9pcnE7Cit9Owor CitzdGF0aWMgaW50IHdmeF9zZGlvX2NvcHlfZnJvbV9pbyh2b2lkICpwcml2LCB1bnNpZ25lZCBp bnQgcmVnX2lkLAorCQkJCSB2b2lkICpkc3QsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgd2Z4 X3NkaW9fcHJpdiAqYnVzID0gcHJpdjsKKwl1bnNpZ25lZCBpbnQgc2Rpb19hZGRyID0gcmVnX2lk IDw8IDI7CisJaW50IHJldDsKKworCVdBUk4ocmVnX2lkID4gNywgImNoaXAgb25seSBoYXMgNyBy ZWdpc3RlcnMiKTsKKwlXQVJOKCFJU19BTElHTkVEKCh1aW50cHRyX3QpZHN0LCA0KSwgInVuYWxp Z25lZCBidWZmZXIgYWRkcmVzcyIpOworCVdBUk4oIUlTX0FMSUdORUQoY291bnQsIDQpLCAidW5h bGlnbmVkIGJ1ZmZlciBzaXplIik7CisKKwkvKiBVc2UgcXVldWUgbW9kZSBidWZmZXJzICovCisJ aWYgKHJlZ19pZCA9PSBXRlhfUkVHX0lOX09VVF9RVUVVRSkKKwkJc2Rpb19hZGRyIHw9IChidXMt PmJ1Zl9pZF9yeCArIDEpIDw8IDc7CisJcmV0ID0gc2Rpb19tZW1jcHlfZnJvbWlvKGJ1cy0+ZnVu YywgZHN0LCBzZGlvX2FkZHIsIGNvdW50KTsKKwlpZiAoIXJldCAmJiByZWdfaWQgPT0gV0ZYX1JF R19JTl9PVVRfUVVFVUUpCisJCWJ1cy0+YnVmX2lkX3J4ID0gKGJ1cy0+YnVmX2lkX3J4ICsgMSkg JSA0OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB3Znhfc2Rpb19jb3B5X3RvX2lv KHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCByZWdfaWQsCisJCQkgICAgICAgY29uc3Qgdm9pZCAq c3JjLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7 CisJdW5zaWduZWQgaW50IHNkaW9fYWRkciA9IHJlZ19pZCA8PCAyOworCWludCByZXQ7CisKKwlX QVJOKHJlZ19pZCA+IDcsICJjaGlwIG9ubHkgaGFzIDcgcmVnaXN0ZXJzIik7CisJV0FSTighSVNf QUxJR05FRCgodWludHB0cl90KXNyYywgNCksICJ1bmFsaWduZWQgYnVmZmVyIGFkZHJlc3MiKTsK KwlXQVJOKCFJU19BTElHTkVEKGNvdW50LCA0KSwgInVuYWxpZ25lZCBidWZmZXIgc2l6ZSIpOwor CisJLyogVXNlIHF1ZXVlIG1vZGUgYnVmZmVycyAqLworCWlmIChyZWdfaWQgPT0gV0ZYX1JFR19J Tl9PVVRfUVVFVUUpCisJCXNkaW9fYWRkciB8PSBidXMtPmJ1Zl9pZF90eCA8PCA3OworCS8qIEZJ WE1FOiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmb3Igc3JjICovCisJcmV0ID0gc2Rpb19t ZW1jcHlfdG9pbyhidXMtPmZ1bmMsIHNkaW9fYWRkciwgKHZvaWQgKilzcmMsIGNvdW50KTsKKwlp ZiAoIXJldCAmJiByZWdfaWQgPT0gV0ZYX1JFR19JTl9PVVRfUVVFVUUpCisJCWJ1cy0+YnVmX2lk X3R4ID0gKGJ1cy0+YnVmX2lkX3R4ICsgMSkgJSAzMjsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyB2b2lkIHdmeF9zZGlvX2xvY2sodm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3NkaW9f cHJpdiAqYnVzID0gcHJpdjsKKworCXNkaW9fY2xhaW1faG9zdChidXMtPmZ1bmMpOworfQorCitz dGF0aWMgdm9pZCB3Znhfc2Rpb191bmxvY2sodm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3Nk aW9fcHJpdiAqYnVzID0gcHJpdjsKKworCXNkaW9fcmVsZWFzZV9ob3N0KGJ1cy0+ZnVuYyk7Cit9 CisKK3N0YXRpYyB2b2lkIHdmeF9zZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1 bmMpCit7CisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHNkaW9fZ2V0X2RydmRhdGEoZnVu Yyk7CisKKwl3ZnhfYmhfcmVxdWVzdF9yeChidXMtPmNvcmUpOworfQorCitzdGF0aWMgaXJxcmV0 dXJuX3Qgd2Z4X3NkaW9faXJxX2hhbmRsZXJfZXh0KGludCBpcnEsIHZvaWQgKnByaXYpCit7CisJ c3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7CisKKwlzZGlvX2NsYWltX2hvc3QoYnVz LT5mdW5jKTsKKwl3ZnhfYmhfcmVxdWVzdF9yeChidXMtPmNvcmUpOworCXNkaW9fcmVsZWFzZV9o b3N0KGJ1cy0+ZnVuYyk7CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaW50IHdm eF9zZGlvX2lycV9zdWJzY3JpYmUodm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJp diAqYnVzID0gcHJpdjsKKwl1MzIgZmxhZ3M7CisJaW50IHJldDsKKwl1OCBjY2NyOworCisJaWYg KCFidXMtPm9mX2lycSkgeworCQlzZGlvX2NsYWltX2hvc3QoYnVzLT5mdW5jKTsKKwkJcmV0ID0g c2Rpb19jbGFpbV9pcnEoYnVzLT5mdW5jLCB3Znhfc2Rpb19pcnFfaGFuZGxlcik7CisJCXNkaW9f cmVsZWFzZV9ob3N0KGJ1cy0+ZnVuYyk7CisJCXJldHVybiByZXQ7CisJfQorCisJZmxhZ3MgPSBp cnFfZ2V0X3RyaWdnZXJfdHlwZShidXMtPm9mX2lycSk7CisJaWYgKCFmbGFncykKKwkJZmxhZ3Mg PSBJUlFGX1RSSUdHRVJfSElHSDsKKwlmbGFncyB8PSBJUlFGX09ORVNIT1Q7CisJcmV0ID0gZGV2 bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmYnVzLT5mdW5jLT5kZXYsIGJ1cy0+b2ZfaXJxLCBOVUxM LAorCQkJCQl3Znhfc2Rpb19pcnFfaGFuZGxlcl9leHQsIGZsYWdzLAorCQkJCQkid2Z4IiwgYnVz KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCXNkaW9fY2xhaW1faG9zdChidXMtPmZ1bmMp OworCWNjY3IgPSBzZGlvX2YwX3JlYWRiKGJ1cy0+ZnVuYywgU0RJT19DQ0NSX0lFTngsIE5VTEwp OworCWNjY3IgfD0gQklUKDApOworCWNjY3IgfD0gQklUKGJ1cy0+ZnVuYy0+bnVtKTsKKwlzZGlv X2YwX3dyaXRlYihidXMtPmZ1bmMsIGNjY3IsIFNESU9fQ0NDUl9JRU54LCBOVUxMKTsKKwlzZGlv X3JlbGVhc2VfaG9zdChidXMtPmZ1bmMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdm eF9zZGlvX2lycV91bnN1YnNjcmliZSh2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc2Rpb19w cml2ICpidXMgPSBwcml2OworCWludCByZXQ7CisKKwlpZiAoYnVzLT5vZl9pcnEpCisJCWRldm1f ZnJlZV9pcnEoJmJ1cy0+ZnVuYy0+ZGV2LCBidXMtPm9mX2lycSwgYnVzKTsKKwlzZGlvX2NsYWlt X2hvc3QoYnVzLT5mdW5jKTsKKwlyZXQgPSBzZGlvX3JlbGVhc2VfaXJxKGJ1cy0+ZnVuYyk7CisJ c2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5jKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg c2l6ZV90IHdmeF9zZGlvX2FsaWduX3NpemUodm9pZCAqcHJpdiwgc2l6ZV90IHNpemUpCit7CisJ c3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7CisKKwlyZXR1cm4gc2Rpb19hbGlnbl9z aXplKGJ1cy0+ZnVuYywgc2l6ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2Z4X2h3YnVz X29wcyB3Znhfc2Rpb19od2J1c19vcHMgPSB7CisJLmNvcHlfZnJvbV9pbyAgICA9IHdmeF9zZGlv X2NvcHlfZnJvbV9pbywKKwkuY29weV90b19pbyAgICAgID0gd2Z4X3NkaW9fY29weV90b19pbywK KwkuaXJxX3N1YnNjcmliZSAgID0gd2Z4X3NkaW9faXJxX3N1YnNjcmliZSwKKwkuaXJxX3Vuc3Vi c2NyaWJlID0gd2Z4X3NkaW9faXJxX3Vuc3Vic2NyaWJlLAorCS5sb2NrICAgICAgICAgICAgPSB3 Znhfc2Rpb19sb2NrLAorCS51bmxvY2sgICAgICAgICAgPSB3Znhfc2Rpb191bmxvY2ssCisJLmFs aWduX3NpemUgICAgICA9IHdmeF9zZGlvX2FsaWduX3NpemUsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCB3Znhfc2Rpb19vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGli bGUgPSAic2lsYWJzLHdmMjAwIiwgLmRhdGEgPSAmcGRhdGFfd2YyMDAgfSwKKwl7IC5jb21wYXRp YmxlID0gInNpbGFicyxicmQ0MDAxYSIsIC5kYXRhID0gJnBkYXRhX2JyZDQwMDFhIH0sCisJeyAu Y29tcGF0aWJsZSA9ICJzaWxhYnMsYnJkODAyMmEiLCAuZGF0YSA9ICZwZGF0YV9icmQ4MDIyYSB9 LAorCXsgLmNvbXBhdGlibGUgPSAic2lsYWJzLGJyZDgwMjNhIiwgLmRhdGEgPSAmcGRhdGFfYnJk ODAyM2EgfSwKKwl7IC5jb21wYXRpYmxlID0gInNpbGFicyx3Zngtc2RpbyIsIC5kYXRhID0gJnBk YXRhX3dmeF9zZGlvIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdmeF9z ZGlvX29mX21hdGNoKTsKKworc3RhdGljIGludCB3Znhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19m dW5jICpmdW5jLAorCQkJICBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKQoreworCWNv bnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNo X2RhdGEoJmZ1bmMtPmRldik7CisJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGZ1bmMtPmRldi5v Zl9ub2RlOworCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXM7CisJaW50IHJldDsKKworCWlmIChm dW5jLT5udW0gIT0gMSkgeworCQlkZXZfZXJyKCZmdW5jLT5kZXYsICJTRElPIGZ1bmN0aW9uIG51 bWJlciBpcyAlZCB3aGlsZSBpdCBzaG91bGQgYWx3YXlzIGJlIDEgKHVuc3VwcG9ydGVkIGNoaXA/ KVxuIiwKKwkJCWZ1bmMtPm51bSk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmICghcGRh dGEpIHsKKwkJZGV2X3dhcm4oJmZ1bmMtPmRldiwgIm5vIGNvbXBhdGlibGUgZGV2aWNlIGZvdW5k IGluIERUXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJYnVzID0gZGV2bV9remFsbG9j KCZmdW5jLT5kZXYsIHNpemVvZigqYnVzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidXMpCisJCXJl dHVybiAtRU5PTUVNOworCisJYnVzLT5mdW5jID0gZnVuYzsKKwlidXMtPm9mX2lycSA9IGlycV9v Zl9wYXJzZV9hbmRfbWFwKG5wLCAwKTsKKwlzZGlvX3NldF9kcnZkYXRhKGZ1bmMsIGJ1cyk7CisJ ZnVuYy0+Y2FyZC0+cXVpcmtzIHw9IE1NQ19RVUlSS19MRU5JRU5UX0ZOMCB8CisJCQkgICAgICBN TUNfUVVJUktfQkxLU1pfRk9SX0JZVEVfTU9ERSB8CisJCQkgICAgICBNTUNfUVVJUktfQlJPS0VO X0JZVEVfTU9ERV81MTI7CisKKwlzZGlvX2NsYWltX2hvc3QoZnVuYyk7CisJcmV0ID0gc2Rpb19l bmFibGVfZnVuYyhmdW5jKTsKKwkvKiBCbG9jayBvZiA2NCBieXRlcyBpcyBtb3JlIGVmZmljaWVu dCB0aGFuIDUxMkIgZm9yIGZyYW1lIHNpemVzIDwgNGsgKi8KKwlzZGlvX3NldF9ibG9ja19zaXpl KGZ1bmMsIDY0KTsKKwlzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJYnVzLT5jb3JlID0gd2Z4X2luaXRfY29tbW9uKCZmdW5jLT5kZXYsIHBkYXRh LCAmd2Z4X3NkaW9faHdidXNfb3BzLCBidXMpOworCWlmICghYnVzLT5jb3JlKSB7CisJCXJldCA9 IC1FSU87CisJCWdvdG8gc2Rpb19yZWxlYXNlOworCX0KKworCXJldCA9IHdmeF9wcm9iZShidXMt PmNvcmUpOworCWlmIChyZXQpCisJCWdvdG8gc2Rpb19yZWxlYXNlOworCisJcmV0dXJuIDA7CisK K3NkaW9fcmVsZWFzZToKKwlzZGlvX2NsYWltX2hvc3QoZnVuYyk7CisJc2Rpb19kaXNhYmxlX2Z1 bmMoZnVuYyk7CisJc2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7CisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIHZvaWQgd2Z4X3NkaW9fcmVtb3ZlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpCit7CisJ c3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHNkaW9fZ2V0X2RydmRhdGEoZnVuYyk7CisKKwl3 ZnhfcmVsZWFzZShidXMtPmNvcmUpOworCXNkaW9fY2xhaW1faG9zdChmdW5jKTsKKwlzZGlvX2Rp c2FibGVfZnVuYyhmdW5jKTsKKwlzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCB3Znhfc2Rpb19pZHNbXSA9IHsKKwl7IFNESU9f REVWSUNFKFNESU9fVkVORE9SX0lEX1NJTEFCUywgU0RJT19ERVZJQ0VfSURfU0lMQUJTX1dGMjAw KSB9LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIHdmeF9zZGlvX2lkcyk7 CisKK3N0cnVjdCBzZGlvX2RyaXZlciB3Znhfc2Rpb19kcml2ZXIgPSB7CisJLm5hbWUgPSAid2Z4 LXNkaW8iLAorCS5pZF90YWJsZSA9IHdmeF9zZGlvX2lkcywKKwkucHJvYmUgPSB3Znhfc2Rpb19w cm9iZSwKKwkucmVtb3ZlID0gd2Z4X3NkaW9fcmVtb3ZlLAorCS5kcnYgPSB7CisJCS5vd25lciA9 IFRISVNfTU9EVUxFLAorCQkub2ZfbWF0Y2hfdGFibGUgPSB3Znhfc2Rpb19vZl9tYXRjaCwKKwl9 Cit9OwotLSAKMi4zMy4wCgo=