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=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable 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 DB530C43467 for ; Mon, 12 Oct 2020 10:47:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 88353208FE for ; Mon, 12 Oct 2020 10:47:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="g+mzqXhZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387900AbgJLKrw (ORCPT ); Mon, 12 Oct 2020 06:47:52 -0400 Received: from mail-dm6nam11on2077.outbound.protection.outlook.com ([40.107.223.77]:59904 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387717AbgJLKrp (ORCPT ); Mon, 12 Oct 2020 06:47:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IuJvRbR1stYWXsTlvid4zZhufk1dGP/DZx6A7cEJL6mrtcTHG/FfAffRqnyP0neCzzHXs5XdHwW8+9RKFuilDkhkvZnDLY1ghLVlcsYPG3WBjGBEbfy0W2XHxJ2Eq26oAli+0zYwR4vN9wFSY4ekGCM4pYi/YN2O97HZb7RrHgkh1j2UvcSnGu0jWoY/cQA4UP943TPValbJDuJmqe6sTEl59//ZqrVGBYal1pqAW3GF5MYPCbY4/pQ/Gb2GNiruqls/Umj49zzzd/hGKFVeupl86HSt2P1kZ3XTDyJjLQgJ2LLrysbIwsuFPcOypn8WqCpdL1L7ks6d1HOLuTfjGw== 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=zBJw+Nyc5Pt6+CVdBbO3vTELXkCDorsL639neCuDNYc=; b=NJS6PijZE0WZ+nzqKyQuA1qnpktE8LiL9TxKai5+4K/Xkm2fBQkpjw5BnUrlOwGamtPDCuvdVY2R7Vr2hDK8/ViJS39th3zf9gNEU/ki2HybDAQDh2MZlhfrH2hXCNfKhufBawhIrMPIMh0Pw6iBAnLcm3fsIBLlk12XQDwBqsaQBk61ZhzGnAWuAvyqSJv7dH/Vbb3OlN0fBp9p/4vZ7y4xYeph3LcwACqYXR2jSztNMqdD6VtDdK4kwxvShLAYf4uF+ThL1JlVIGfOWefPMPoN9OKoIBYNvTaRyNQvYGHWxm7XNSP9AS5pv+d5CEYaZcMYBs7bSan9ZaklI5dWqQ== 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=zBJw+Nyc5Pt6+CVdBbO3vTELXkCDorsL639neCuDNYc=; b=g+mzqXhZRKPYD95JWW4zXpR7FCyolNS93AY0UNMEKDASpoc6lCl3jhGwIx7MpbxLESEYASpNCoR7YmULx4wY9cmw8RBeVxrRWcAilkogGEUBZHixJFlYUOVEXw/eILQI/5Pxxl4JqrVIUHFk+KczxBZyk13sFzuFU2TOOMkjpE8= 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 SA0PR11MB4734.namprd11.prod.outlook.com (2603:10b6:806:99::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23; Mon, 12 Oct 2020 10:47:19 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a%5]) with mapi id 15.20.3455.029; Mon, 12 Oct 2020 10:47:19 +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 , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH 07/23] wfx: add bus_sdio.c Date: Mon, 12 Oct 2020 12:46:32 +0200 Message-Id: <20201012104648.985256-8-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201012104648.985256-1-Jerome.Pouiller@silabs.com> References: <20201012104648.985256-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: PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (82.67.86.106) by PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21 via Frontend Transport; Mon, 12 Oct 2020 10:47:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 545ea4f0-5d44-475d-d880-08d86e9c30f1 X-MS-TrafficTypeDiagnostic: SA0PR11MB4734: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Rzvx1ZKkWy6xxrnSm71ywpnu+VcdMpgu83UxMGVunmtSxKwxgokp27iJM59ZMENRRnbH4PHlnM4vXIUw+OvC/h3HR4iRtecmT58u7Hdu3UmHsGrPs7lD1XwISCGbS05g82UqAToPGKZniaUriLl0b0It9AWMU6QR9hjtJzaWc6bJEXxUe5gLDpCifUGxkj5w28n3D4QyPgIXSR/0HwmFAPFXfvynWiFxd/vgh36l8XWOortJA9wEZ/W6nk8IIW6YLWWXpUhWFtvMXtsTGy6/ihRo8Kd8PbYBbGAIsz9cRtxbmDnyW1d+YyibZw9+cufu 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:(39850400004)(396003)(366004)(136003)(346002)(376002)(66556008)(66476007)(6512007)(26005)(36756003)(66946007)(16526019)(186003)(316002)(4326008)(2616005)(956004)(1076003)(5660300002)(107886003)(6486002)(54906003)(86362001)(8676002)(83380400001)(8936002)(66574015)(52116002)(2906002)(6506007)(8886007)(6666004)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: HszQkDfLtOAwffc8aX23+2+X6uCiNoRmQ7f9NImAgnqBCBo8+xrrR0PtFs7vAfxgCTYFBOAVdPd0DLOagGQBWJDz8NzSr+me7QHRajOLD6ptHqqtzJyXcNHVlNhi0YZbTO9bX50X5x0YgLxRwwlLJJFxjzZPUg/qbbfiYneIerV6GAYKVcSeAo7i78WOPqdTp6RW3swl386kOHS4MFN5MoN0SWjLaEZZ6KrKTB2jkJqFyxQXSCEVc7IpNobnRnZRDW+Ei68MPqCI+9AUk4uWVYvmj1JK7YsvBEinurGZGbf6D0cRstximLpTCIWvd9afnOBiGiahqukPKGq8Q6z4W7ryVOMk4TxZUQ5RqoAcsu523rvO7u9VSzap94cnkZp6kdN8VeyNDJGUP6jSbroPvM3ef8OSLMrpK/rmmpDZ8glJzaVRHZ6NFcJ+f4pBOjzudWXMGaGqY2qEmd0NGZRjoPrVfJu3Fa8u/NBO9urxCFfReuvisJ8w4YUrEUm8U75QkA9Xfmt3n+Fnk72ExpwHbqONLC9Muc4B0HKybH9xPVnvaPHogklqwvMvrQJPIhRjq/feEw4MfN0MMXAf763e91/I7TmmTFW3tLXhuUJd7RAlq9kwkFgtcseP6LUFU8nC4Ahnu2nualkbpl1snfT9ww== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 545ea4f0-5d44-475d-d880-08d86e9c30f1 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2020 10:47:18.9573 (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: KWHe6l9Fug8LAOwCtm+VPqFjN+KzuB7eXezfJalNaTJoQlTm8lJ03xzwMslN3OT243gju4WgTbE3Wuax6XApYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4734 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYyB8IDI2OSAr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwNmQ3ZTFlYmU5YwotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpAQCAt MCwwICsxLDI2OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQor LyoKKyAqIFNESU8gaW50ZXJmYWNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwLCBT aWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3NvbgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW1j L3NkaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+CisjaW5jbHVkZSA8bGlu dXgvbW1jL2NhcmQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxs aW51eC9vZl9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKworI2luY2x1ZGUgImJ1cy5o IgorI2luY2x1ZGUgIndmeC5oIgorI2luY2x1ZGUgImh3aW8uaCIKKyNpbmNsdWRlICJtYWluLmgi CisjaW5jbHVkZSAiYmguaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0 YSB3Znhfc2Rpb19wZGF0YSA9IHsKKwkuZmlsZV9mdyA9ICJ3Zm1fd2YyMDAiLAorCS5maWxlX3Bk cyA9ICJ3ZjIwMC5wZHMiLAorfTsKKworc3RydWN0IHdmeF9zZGlvX3ByaXYgeworCXN0cnVjdCBz ZGlvX2Z1bmMgKmZ1bmM7CisJc3RydWN0IHdmeF9kZXYgKmNvcmU7CisJdTggYnVmX2lkX3R4Owor CXU4IGJ1Zl9pZF9yeDsKKwlpbnQgb2ZfaXJxOworfTsKKworc3RhdGljIGludCB3Znhfc2Rpb19j b3B5X2Zyb21faW8odm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IHJlZ19pZCwKKwkJCQkgdm9pZCAq ZHN0LCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7 CisJdW5zaWduZWQgaW50IHNkaW9fYWRkciA9IHJlZ19pZCA8PCAyOworCWludCByZXQ7CisKKwlX QVJOKHJlZ19pZCA+IDcsICJjaGlwIG9ubHkgaGFzIDcgcmVnaXN0ZXJzIik7CisJV0FSTigoKHVp bnRwdHJfdClkc3QpICYgMywgInVuYWxpZ25lZCBidWZmZXIgc2l6ZSIpOworCVdBUk4oY291bnQg JiAzLCAidW5hbGlnbmVkIGJ1ZmZlciBhZGRyZXNzIik7CisKKwkvKiBVc2UgcXVldWUgbW9kZSBi dWZmZXJzICovCisJaWYgKHJlZ19pZCA9PSBXRlhfUkVHX0lOX09VVF9RVUVVRSkKKwkJc2Rpb19h ZGRyIHw9IChidXMtPmJ1Zl9pZF9yeCArIDEpIDw8IDc7CisJcmV0ID0gc2Rpb19tZW1jcHlfZnJv bWlvKGJ1cy0+ZnVuYywgZHN0LCBzZGlvX2FkZHIsIGNvdW50KTsKKwlpZiAoIXJldCAmJiByZWdf aWQgPT0gV0ZYX1JFR19JTl9PVVRfUVVFVUUpCisJCWJ1cy0+YnVmX2lkX3J4ID0gKGJ1cy0+YnVm X2lkX3J4ICsgMSkgJSA0OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB3Znhfc2Rp b19jb3B5X3RvX2lvKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCByZWdfaWQsCisJCQkgICAgICAg Y29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHdmeF9zZGlvX3ByaXYg KmJ1cyA9IHByaXY7CisJdW5zaWduZWQgaW50IHNkaW9fYWRkciA9IHJlZ19pZCA8PCAyOworCWlu dCByZXQ7CisKKwlXQVJOKHJlZ19pZCA+IDcsICJjaGlwIG9ubHkgaGFzIDcgcmVnaXN0ZXJzIik7 CisJV0FSTigoKHVpbnRwdHJfdClzcmMpICYgMywgInVuYWxpZ25lZCBidWZmZXIgc2l6ZSIpOwor CVdBUk4oY291bnQgJiAzLCAidW5hbGlnbmVkIGJ1ZmZlciBhZGRyZXNzIik7CisKKwkvKiBVc2Ug cXVldWUgbW9kZSBidWZmZXJzICovCisJaWYgKHJlZ19pZCA9PSBXRlhfUkVHX0lOX09VVF9RVUVV RSkKKwkJc2Rpb19hZGRyIHw9IGJ1cy0+YnVmX2lkX3R4IDw8IDc7CisJLy8gRklYTUU6IGRpc2Nh cmRzICdjb25zdCcgcXVhbGlmaWVyIGZvciBzcmMKKwlyZXQgPSBzZGlvX21lbWNweV90b2lvKGJ1 cy0+ZnVuYywgc2Rpb19hZGRyLCAodm9pZCAqKXNyYywgY291bnQpOworCWlmICghcmV0ICYmIHJl Z19pZCA9PSBXRlhfUkVHX0lOX09VVF9RVUVVRSkKKwkJYnVzLT5idWZfaWRfdHggPSAoYnVzLT5i dWZfaWRfdHggKyAxKSAlIDMyOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgd2Z4 X3NkaW9fbG9jayh2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBw cml2OworCisJc2Rpb19jbGFpbV9ob3N0KGJ1cy0+ZnVuYyk7Cit9CisKK3N0YXRpYyB2b2lkIHdm eF9zZGlvX3VubG9jayh2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMg PSBwcml2OworCisJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5jKTsKK30KKworc3RhdGljIHZv aWQgd2Z4X3NkaW9faXJxX2hhbmRsZXIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYykKK3sKKwlzdHJ1 Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzID0gc2Rpb19nZXRfZHJ2ZGF0YShmdW5jKTsKKworCXdmeF9i aF9yZXF1ZXN0X3J4KGJ1cy0+Y29yZSk7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCB3Znhfc2Rp b19pcnFfaGFuZGxlcl9leHQoaW50IGlycSwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3Qgd2Z4X3Nk aW9fcHJpdiAqYnVzID0gcHJpdjsKKworCXNkaW9fY2xhaW1faG9zdChidXMtPmZ1bmMpOworCXdm eF9iaF9yZXF1ZXN0X3J4KGJ1cy0+Y29yZSk7CisJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5j KTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3NkaW9faXJxX3N1 YnNjcmliZSh2b2lkICpwcml2KQoreworCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2 OworCXUzMiBmbGFnczsKKwlpbnQgcmV0OworCXU4IGNjY3I7CisKKwlpZiAoIWJ1cy0+b2ZfaXJx KSB7CisJCXNkaW9fY2xhaW1faG9zdChidXMtPmZ1bmMpOworCQlyZXQgPSBzZGlvX2NsYWltX2ly cShidXMtPmZ1bmMsIHdmeF9zZGlvX2lycV9oYW5kbGVyKTsKKwkJc2Rpb19yZWxlYXNlX2hvc3Qo YnVzLT5mdW5jKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzZGlvX2NsYWltX2hvc3QoYnVzLT5m dW5jKTsKKwljY2NyID0gc2Rpb19mMF9yZWFkYihidXMtPmZ1bmMsIFNESU9fQ0NDUl9JRU54LCBO VUxMKTsKKwljY2NyIHw9IEJJVCgwKTsKKwljY2NyIHw9IEJJVChidXMtPmZ1bmMtPm51bSk7CisJ c2Rpb19mMF93cml0ZWIoYnVzLT5mdW5jLCBjY2NyLCBTRElPX0NDQ1JfSUVOeCwgTlVMTCk7CisJ c2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5jKTsKKwlmbGFncyA9IGlycV9nZXRfdHJpZ2dlcl90 eXBlKGJ1cy0+b2ZfaXJxKTsKKwlpZiAoIWZsYWdzKQorCQlmbGFncyA9IElSUUZfVFJJR0dFUl9I SUdIOworCWZsYWdzIHw9IElSUUZfT05FU0hPVDsKKwlyZXR1cm4gZGV2bV9yZXF1ZXN0X3RocmVh ZGVkX2lycSgmYnVzLT5mdW5jLT5kZXYsIGJ1cy0+b2ZfaXJxLCBOVUxMLAorCQkJCQkgd2Z4X3Nk aW9faXJxX2hhbmRsZXJfZXh0LCBmbGFncywKKwkJCQkJICJ3ZngiLCBidXMpOworfQorCitzdGF0 aWMgaW50IHdmeF9zZGlvX2lycV91bnN1YnNjcmliZSh2b2lkICpwcml2KQoreworCXN0cnVjdCB3 Znhfc2Rpb19wcml2ICpidXMgPSBwcml2OworCWludCByZXQ7CisKKwlpZiAoYnVzLT5vZl9pcnEp CisJCWRldm1fZnJlZV9pcnEoJmJ1cy0+ZnVuYy0+ZGV2LCBidXMtPm9mX2lycSwgYnVzKTsKKwlz ZGlvX2NsYWltX2hvc3QoYnVzLT5mdW5jKTsKKwlyZXQgPSBzZGlvX3JlbGVhc2VfaXJxKGJ1cy0+ ZnVuYyk7CisJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5jKTsKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgc2l6ZV90IHdmeF9zZGlvX2FsaWduX3NpemUodm9pZCAqcHJpdiwgc2l6ZV90IHNp emUpCit7CisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7CisKKwlyZXR1cm4gc2Rp b19hbGlnbl9zaXplKGJ1cy0+ZnVuYywgc2l6ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aHdidXNfb3BzIHdmeF9zZGlvX2h3YnVzX29wcyA9IHsKKwkuY29weV9mcm9tX2lvID0gd2Z4X3Nk aW9fY29weV9mcm9tX2lvLAorCS5jb3B5X3RvX2lvID0gd2Z4X3NkaW9fY29weV90b19pbywKKwku aXJxX3N1YnNjcmliZSA9IHdmeF9zZGlvX2lycV9zdWJzY3JpYmUsCisJLmlycV91bnN1YnNjcmli ZSA9IHdmeF9zZGlvX2lycV91bnN1YnNjcmliZSwKKwkubG9jawkJCT0gd2Z4X3NkaW9fbG9jaywK KwkudW5sb2NrCQkJPSB3Znhfc2Rpb191bmxvY2ssCisJLmFsaWduX3NpemUJCT0gd2Z4X3NkaW9f YWxpZ25fc2l6ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdmeF9z ZGlvX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJzaWxhYnMsd2Z4LXNkaW8iIH0s CisJeyAuY29tcGF0aWJsZSA9ICJzaWxhYnMsd2YyMDAiIH0sCisJeyB9LAorfTsKK01PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIHdmeF9zZGlvX29mX21hdGNoKTsKKworc3RhdGljIGludCB3Znhfc2Rp b19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLAorCQkJICBjb25zdCBzdHJ1Y3Qgc2Rpb19k ZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBmdW5jLT5kZXYub2Zf bm9kZTsKKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzOworCWludCByZXQ7CisKKwlpZiAoZnVu Yy0+bnVtICE9IDEpIHsKKwkJZGV2X2VycigmZnVuYy0+ZGV2LCAiU0RJTyBmdW5jdGlvbiBudW1i ZXIgaXMgJWQgd2hpbGUgaXQgc2hvdWxkIGFsd2F5cyBiZSAxICh1bnN1cHBvcnRlZCBjaGlwPylc biIsCisJCQlmdW5jLT5udW0pOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlidXMgPSBkZXZt X2t6YWxsb2MoJmZ1bmMtPmRldiwgc2l6ZW9mKCpidXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1 cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAobnApIHsKKwkJaWYgKCFvZl9tYXRjaF9ub2Rl KHdmeF9zZGlvX29mX21hdGNoLCBucCkpIHsKKwkJCWRldl93YXJuKCZmdW5jLT5kZXYsICJubyBj b21wYXRpYmxlIGRldmljZSBmb3VuZCBpbiBEVFxuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJ fQorCQlidXMtPm9mX2lycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5wLCAwKTsKKwl9IGVsc2Ug eworCQlkZXZfd2FybigmZnVuYy0+ZGV2LAorCQkJICJkZXZpY2UgaXMgbm90IGRlY2xhcmVkIGlu IERULCBmZWF0dXJlcyB3aWxsIGJlIGxpbWl0ZWRcbiIpOworCQkvLyBGSVhNRTogaWdub3JlIFZJ RC9QSUQgYW5kIG9ubHkgcmVseSBvbiBkZXZpY2UgdHJlZQorCQkvLyByZXR1cm4gLUVOT0RFVjsK Kwl9CisKKwlidXMtPmZ1bmMgPSBmdW5jOworCXNkaW9fc2V0X2RydmRhdGEoZnVuYywgYnVzKTsK KwlmdW5jLT5jYXJkLT5xdWlya3MgfD0gTU1DX1FVSVJLX0xFTklFTlRfRk4wIHwKKwkJCSAgICAg IE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFIHwKKwkJCSAgICAgIE1NQ19RVUlSS19CUk9L RU5fQllURV9NT0RFXzUxMjsKKworCXNkaW9fY2xhaW1faG9zdChmdW5jKTsKKwlyZXQgPSBzZGlv X2VuYWJsZV9mdW5jKGZ1bmMpOworCS8vIEJsb2NrIG9mIDY0IGJ5dGVzIGlzIG1vcmUgZWZmaWNp ZW50IHRoYW4gNTEyQiBmb3IgZnJhbWUgc2l6ZXMgPCA0aworCXNkaW9fc2V0X2Jsb2NrX3NpemUo ZnVuYywgNjQpOworCXNkaW9fcmVsZWFzZV9ob3N0KGZ1bmMpOworCWlmIChyZXQpCisJCWdvdG8g ZXJyMDsKKworCWJ1cy0+Y29yZSA9IHdmeF9pbml0X2NvbW1vbigmZnVuYy0+ZGV2LCAmd2Z4X3Nk aW9fcGRhdGEsCisJCQkJICAgICZ3Znhfc2Rpb19od2J1c19vcHMsIGJ1cyk7CisJaWYgKCFidXMt PmNvcmUpIHsKKwkJcmV0ID0gLUVJTzsKKwkJZ290byBlcnIxOworCX0KKworCXJldCA9IHdmeF9w cm9iZShidXMtPmNvcmUpOworCWlmIChyZXQpCisJCWdvdG8gZXJyMTsKKworCXJldHVybiAwOwor CitlcnIxOgorCXNkaW9fY2xhaW1faG9zdChmdW5jKTsKKwlzZGlvX2Rpc2FibGVfZnVuYyhmdW5j KTsKKwlzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTsKK2VycjA6CisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIHZvaWQgd2Z4X3NkaW9fcmVtb3ZlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpCit7CisJ c3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHNkaW9fZ2V0X2RydmRhdGEoZnVuYyk7CisKKwl3 ZnhfcmVsZWFzZShidXMtPmNvcmUpOworCXNkaW9fY2xhaW1faG9zdChmdW5jKTsKKwlzZGlvX2Rp c2FibGVfZnVuYyhmdW5jKTsKKwlzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTsKK30KKworI2RlZmlu ZSBTRElPX1ZFTkRPUl9JRF9TSUxBQlMgICAgICAgIDB4MDAwMAorI2RlZmluZSBTRElPX0RFVklD RV9JRF9TSUxBQlNfV0YyMDAgIDB4MTAwMAorc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2Rldmlj ZV9pZCB3Znhfc2Rpb19pZHNbXSA9IHsKKwl7IFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX1NJ TEFCUywgU0RJT19ERVZJQ0VfSURfU0lMQUJTX1dGMjAwKSB9LAorCS8vIEZJWE1FOiBpZ25vcmUg VklEL1BJRCBhbmQgb25seSByZWx5IG9uIGRldmljZSB0cmVlCisJLy8geyBTRElPX0RFVklDRShT RElPX0FOWV9JRCwgU0RJT19BTllfSUQpIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFC TEUoc2Rpbywgd2Z4X3NkaW9faWRzKTsKKworc3RydWN0IHNkaW9fZHJpdmVyIHdmeF9zZGlvX2Ry aXZlciA9IHsKKwkubmFtZSA9ICJ3Zngtc2RpbyIsCisJLmlkX3RhYmxlID0gd2Z4X3NkaW9faWRz LAorCS5wcm9iZSA9IHdmeF9zZGlvX3Byb2JlLAorCS5yZW1vdmUgPSB3Znhfc2Rpb19yZW1vdmUs CisJLmRydiA9IHsKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJCS5vZl9tYXRjaF90YWJsZSA9 IHdmeF9zZGlvX29mX21hdGNoLAorCX0KK307Ci0tIAoyLjI4LjAKCg==