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.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 848A6C433E7 for ; Tue, 20 Oct 2020 13:15:20 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 F1747222C8 for ; Tue, 20 Oct 2020 13:15:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="H796t9DD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F1747222C8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 85B8A2E1C7; Tue, 20 Oct 2020 13:15:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Fp0wlXHMfwxj; Tue, 20 Oct 2020 13:15:05 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id A76AA2E1E3; Tue, 20 Oct 2020 13:14:15 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 67B651BF852 for ; Tue, 20 Oct 2020 13:14:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 638488562D for ; Tue, 20 Oct 2020 13:14:14 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EX4iVhN6oLAT for ; Tue, 20 Oct 2020 13:14:13 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2059.outbound.protection.outlook.com [40.107.92.59]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 7CD9784D56 for ; Tue, 20 Oct 2020 13:14:13 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h4PucN0ZsVQQvo49DeHMCLWPUHzMcb+G09HWN7b/VeSa9MH4t1l2tOMF6a+Rdx1XxzQf7qwcm5X9N5vJR06o4cF9i2MIr/wPwvJY106dtvV7oI9RINcvqxjdIns+o5F2cSHVQXW9Yw3Uk6KJrMgiD6RNtJd2TPCKTAvrwL8CVfFUFjZOX2d+wfR1NKfBohZFghCYi1+VpXQUmN+y85WWmud/MIyHBOzYzUJZfMeYzAz7V0K7hWVap6UeIryeJo24elI7/2ozxhJpH5e/W+MaMrdGLwMJzq9OvpY4ZiUQDLXASiYs0gPt7LaezvSY1XvaffbngqAGDUfDAzMmb3Kl+Q== 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=1tp3wYFuvi1fgrePDe+EDIV+7OVFd2InjDeH2C7ogj4=; b=GSoudAZG0VoubOJ2uBDeV+QU2slwzyU4j1+OydvCFBIJVdNTqXkgdRCG3TbsUPVxDuo7v3HFuCoWykTrWM9KVmlZGqOPYLPnEF+4D8OI14716MW5mpnDOZBCqOePwe6CX+bnmM9nDYGWaEBXvNrnQeS+zzg6u7lt2ivygyhm7xUIiV39M2JB9NzBO3QMJD0nYOb+PRgsKroEBEbqaAUDLLXA3UHI+gRii9w1bsEn8FL1LQWlWNT3CTPG6YXyDgObniSEjdpXkqEY2AkgKD6mEK9GjN4TjMi8atc1wDQKltpm531qx0deiGxX+hp7IxtR+ple4kf7ytPuvNLxQz2dCA== 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=1tp3wYFuvi1fgrePDe+EDIV+7OVFd2InjDeH2C7ogj4=; b=H796t9DDgQ4xrVqRoRXlG0CBRdkB0hLFKyDSFjxz6E26nB6gRyuuzloLmeo0Lkaq9LI6FcJsmFE38B1a9U/7gdidkZccibxEPH9uiIa99Y9LEPxs1nUGT1DlfSxV5ANrrcuklzFtTwhHL6IzscluVjWhZWY33A48wYuFbXay6b0= 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 SN6PR11MB2656.namprd11.prod.outlook.com (2603:10b6:805:58::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.28; Tue, 20 Oct 2020 12:58:59 +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.3477.028; Tue, 20 Oct 2020 12:58:59 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 08/24] wfx: add bus_sdio.c Date: Tue, 20 Oct 2020 14:58:01 +0200 Message-Id: <20201020125817.1632995-9-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020125817.1632995-1-Jerome.Pouiller@silabs.com> References: <20201020125817.1632995-1-Jerome.Pouiller@silabs.com> X-Originating-IP: [37.71.187.125] X-ClientProxiedBy: PR3P192CA0026.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:56::31) 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 (37.71.187.125) by PR3P192CA0026.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:56::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21 via Frontend Transport; Tue, 20 Oct 2020 12:58:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b9f242b6-4f16-4ba6-d931-08d874f7e957 X-MS-TrafficTypeDiagnostic: SN6PR11MB2656: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qfUoXZAZL/vpSvHvMuW58rk6bvp6FKj87OjX/CrmFmRlsj3oqgQ15igO7QpC2hCrgJGVW6xnVC+SRDxQFtHaS1GQdn4lR2uea1/TjDwXCnS/fb2q+1/z93IQqn6y3kE2HHpZ3la3MOfxip/lTkbTsfmHUWNieq1euaiO9T1b61gmisyyPazyOZPV96Yr+tJIobOPNqJweMa7vKgs8zTqhMq1aBoAjgNd1jsSK1RVhObcmGzgLcxXwRCddtHqAi+XIVOFzE+UoFUoDwByjfFaXjwIg2Oj4spHucrxPS8NVVjgrRzkN17CvMmblCPSIe1I 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:(396003)(366004)(136003)(39830400003)(346002)(376002)(186003)(316002)(4326008)(107886003)(8676002)(86362001)(26005)(2906002)(7696005)(478600001)(16526019)(956004)(6486002)(52116002)(36756003)(8936002)(2616005)(54906003)(5660300002)(1076003)(7416002)(66574015)(6666004)(66556008)(66476007)(66946007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: LLEfNLOiBibeoCYdNSA5AZl1LtamCk/kghegKytTF9UEjX4y8YWPXo1CWaJhM9f9R2Ogy6xZVKJshmMt6bRNNQZqf2DGxBLpUc7rxDs/ZvxQkatDcYkFmVg+lLnoN2HzuqNHxDLVhzxNdH7a50mM9HV7UjN8iLRlHby8+VuVfV5OEcukaj+LKpR2y5uynEKRzZGPwe5g3BHs7Au6GDH1bYD9ecglXIkFBM5nzn/NxACjfhFyTtUFTuqFPogqHyKHBP4OAWjdMqCno7Jp0mqPiju1ic65qmNHBkitK70fu1Ra2Nu3GNLOh6kJ70b4YnFgfQmlNYwbpcTNMj4ZW4WoBUokemp8SlUg4uX3cz8saTrINAsa0rX91q63f57SdlqV0EyF78Phh0MHw0zfAXRjKZ8vndf6ZDLO7qfMLliQyH/+5h7GzGm4sWBVRQm6Cfr1oFpfvzNxN+WiDiSuyeWvIhXhDwjUdRjU2tEiIXXFFebQaOT1P+h+gZBc6OV2mO1qbYVtLqQEmaZrpNXPXm4aKOBkloKzI00G6ralptlssV6usNHs6++TOMSJhi67KSoVEx0FnRf4Vogk+2Y4H4uvgP/joBDkbsvZq/F515yFh9pmGy0Rav63fDWiZTS2Rai6Q1BLIhXW4VzFpFhQmfc6NQ== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9f242b6-4f16-4ba6-d931-08d874f7e957 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2020 12:58:59.4967 (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: 6WDzHC+4GAr3ih8mc50rXd5IrYbjF1iCHcxt0u6bXno74WxMQ47ylR0Tf8EVJu5u/jLYalzDwJfsFCpNr9ErIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2656 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Ulf Hansson , Greg Kroah-Hartman , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , =?UTF-8?q?Pali=20Roh=C3=A1r?= , "David S . Miller" , Kalle Valo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYyB8IDI1OCAr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNTggaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3Nk aW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk0OTExOWQ0OTIwYwotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYnVzX3NkaW8uYwpAQCAt MCwwICsxLDI1OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQor 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 cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoIW5wIHx8ICFvZl9tYXRjaF9ub2RlKHdmeF9z ZGlvX29mX21hdGNoLCBucCkpIHsKKwkJZGV2X3dhcm4oJmZ1bmMtPmRldiwgIm5vIGNvbXBhdGli bGUgZGV2aWNlIGZvdW5kIGluIERUXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJYnVz LT5mdW5jID0gZnVuYzsKKwlidXMtPm9mX2lycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5wLCAw KTsKKwlzZGlvX3NldF9kcnZkYXRhKGZ1bmMsIGJ1cyk7CisJZnVuYy0+Y2FyZC0+cXVpcmtzIHw9 IE1NQ19RVUlSS19MRU5JRU5UX0ZOMCB8CisJCQkgICAgICBNTUNfUVVJUktfQkxLU1pfRk9SX0JZ VEVfTU9ERSB8CisJCQkgICAgICBNTUNfUVVJUktfQlJPS0VOX0JZVEVfTU9ERV81MTI7CisKKwlz ZGlvX2NsYWltX2hvc3QoZnVuYyk7CisJcmV0ID0gc2Rpb19lbmFibGVfZnVuYyhmdW5jKTsKKwkv LyBCbG9jayBvZiA2NCBieXRlcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIDUxMkIgZm9yIGZyYW1l IHNpemVzIDwgNGsKKwlzZGlvX3NldF9ibG9ja19zaXplKGZ1bmMsIDY0KTsKKwlzZGlvX3JlbGVh c2VfaG9zdChmdW5jKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycjA7CisKKwlidXMtPmNvcmUgPSB3 ZnhfaW5pdF9jb21tb24oJmZ1bmMtPmRldiwgJndmeF9zZGlvX3BkYXRhLAorCQkJCSAgICAmd2Z4 X3NkaW9faHdidXNfb3BzLCBidXMpOworCWlmICghYnVzLT5jb3JlKSB7CisJCXJldCA9IC1FSU87 CisJCWdvdG8gZXJyMTsKKwl9CisKKwlyZXQgPSB3ZnhfcHJvYmUoYnVzLT5jb3JlKTsKKwlpZiAo cmV0KQorCQlnb3RvIGVycjE7CisKKwlyZXR1cm4gMDsKKworZXJyMToKKwlzZGlvX2NsYWltX2hv c3QoZnVuYyk7CisJc2Rpb19kaXNhYmxlX2Z1bmMoZnVuYyk7CisJc2Rpb19yZWxlYXNlX2hvc3Qo ZnVuYyk7CitlcnIwOgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHdmeF9zZGlvX3Jl bW92ZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKQoreworCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpi dXMgPSBzZGlvX2dldF9kcnZkYXRhKGZ1bmMpOworCisJd2Z4X3JlbGVhc2UoYnVzLT5jb3JlKTsK KwlzZGlvX2NsYWltX2hvc3QoZnVuYyk7CisJc2Rpb19kaXNhYmxlX2Z1bmMoZnVuYyk7CisJc2Rp b19yZWxlYXNlX2hvc3QoZnVuYyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZp Y2VfaWQgd2Z4X3NkaW9faWRzW10gPSB7CisJeyBTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9T SUxBQlMsIFNESU9fREVWSUNFX0lEX1NJTEFCU19XRjIwMCkgfSwKKwl7IH0sCit9OworTU9EVUxF X0RFVklDRV9UQUJMRShzZGlvLCB3Znhfc2Rpb19pZHMpOworCitzdHJ1Y3Qgc2Rpb19kcml2ZXIg d2Z4X3NkaW9fZHJpdmVyID0geworCS5uYW1lID0gIndmeC1zZGlvIiwKKwkuaWRfdGFibGUgPSB3 Znhfc2Rpb19pZHMsCisJLnByb2JlID0gd2Z4X3NkaW9fcHJvYmUsCisJLnJlbW92ZSA9IHdmeF9z ZGlvX3JlbW92ZSwKKwkuZHJ2ID0geworCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm9mX21h dGNoX3RhYmxlID0gd2Z4X3NkaW9fb2ZfbWF0Y2gsCisJfQorfTsKLS0gCjIuMjguMAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBs aXN0CmRldmVsQGxpbnV4ZHJpdmVycHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRy aXZlcnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg==