From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0024c301.pphosted.com (mx0b-0024c301.pphosted.com [148.163.153.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D14325392C for ; Tue, 23 Dec 2025 03:01:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.153.153 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766458879; cv=fail; b=etn03WAIOXZbDzd4LraAMd7QNmvx0JtsxLKkDK8rcsoA6NryJ6/1zwX/bEgk3Pf8l17CNTImXmUQ1X7UCxwZSLhCiDO17Q13r9ikAwgUO6KFWyu9mOxQs7GFc1SMGfn+z5YMCdkF4C6WQk0JjUxHJA9ZCfc6Pwse9lQwOycJmCA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766458879; c=relaxed/simple; bh=Y7mRMgE9XZaKsr+FfGnqLgu1ZG0j00ahyIknI/3a8Ho=; h=Content-Type:Date:Message-Id:Subject:Cc:To:From:References: In-Reply-To:MIME-Version; b=LttK409bJ6GMB99xNNcJ5vxopcJDZxVWTSDLMruqw3RWGs31lxIFgF4RTD4HkO4Mwua2k4hlfPhUM0sgpWFuTCrDUhtjjMR42mYP62imn8i6Uf8+K5ukRiKk+kT1fDcyoxdR+GvV5+xXEx+w3a68bM0INGbPB1rXEDyEvHeiT8k= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=yaZDDgK9; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=AYqBu+Y9; arc=fail smtp.client-ip=148.163.153.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="yaZDDgK9"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="AYqBu+Y9" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMLXJoT1266135; Mon, 22 Dec 2025 20:37:53 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=evekN0/NeWhOZebyvs8qVgaIaj6W0SM/9n8XD/+zI8Y=; b=yaZDDgK97c83 wtd8zkWJJe2WXjOYZ4E0Kq2SVRzGvzP6R8Ks7WxES2NikLHdmpzezNxCyghWcO/v KlOTRhZJcwxAR2831ElEEpEo3HiNvW28yZ0pHX0I/dp393S5DiboxgO4YI6nWwDJ iSKXYFkYEVw1koxdUF8+HPqdx1tYS7LPIwEJ+sq5T+gRIlbBylfrGB3psnPKIVls K5b1WP6Nnka2jeuA7yVnGsrdMqoiDy8+lDK2k0v9DH26AjH0h71p9OmjwEl1P8CC w8hedRKMczzF7BVeNjVNvL9oQCv9Yjj4mWpSwReLzvFE8bYkYoRupByxAH7fwG97 pauJOZ+N8A== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11020136.outbound.protection.outlook.com [52.101.85.136]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4b5p6cc7cr-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 22 Dec 2025 20:37:53 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aA/SbuWeamU7FpZ3x3CX9U2sCUywIIeRZsuALOeriOq2E6qT8FhlTGjeYqH7RyR8F4fHqnKtaczcdJnlphWduM0lR7MBSIadvJw8iIc9qpg9gA18SSuKnqmNN9wFFPzM5Sp9OO/JQkSGLubpKF31vrowKqvI0my2VKYZDPvv0wDH8Tww8EzTt8qGvxir85JN7j+8JOlayOIFvkIa7SAMGrOvvVHShR/wsD5I6VPCl2MONvF+DjndpYR243Ex0XlDmcU6zhWxLgQzht/zwLp0VARyoWR7bVOENYt5aIGJKZJTKLIyn4OW0+E5stsi7kfOFOCubPBnFF6UkXKnkMUYyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=evekN0/NeWhOZebyvs8qVgaIaj6W0SM/9n8XD/+zI8Y=; b=cKkDREd3rJ4SfkH9CYQZ3ihuY3U+ACzXFbofrT8QAKD5SkMEs7cmmr8mJ9PppGVqKjHCkDka/zXZX7qQKve1qOL9jbEarT2J687qsjP2owj8EI0lsyQX3p8F3ccs0C51TK0FwNY9jHd+rpTrwa41f8ZqaNH0e5SRq4rtuaRtFwdCvHFfuL32qMIf8RZJnT+Dg5CQGTyKUtLI3j8+eDptxz7WjufyRCxOOrSYqEFkM7MwwCjUW0ByeZJoJwUtBrHmYixeuMKpwNOM/qIPT3H8n6axPdY5nYsFrX+eaiDpWqOxS/VjtJXPaondJVXsSEZec61oMAV0nRuR2kQY/wzvjg== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=evekN0/NeWhOZebyvs8qVgaIaj6W0SM/9n8XD/+zI8Y=; b=AYqBu+Y9RXgZXPJ6Sx3dljospx3eT0KJ4dAq+uTZUQjbYUyixYa4AV+kpb5mkxWa6lCKXniR9YKjWHDA0vLvWdWV5qCK0lw7wugFirV0PwHZr/VeM7iBixA3TA/kolb05Ra/0oLj+27eL7y7OXzELK0NjKm27bRO4V+VyM+MSRM= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by SA1PR11MB8543.namprd11.prod.outlook.com (2603:10b6:806:3ac::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Tue, 23 Dec 2025 02:37:51 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::2de6:bc88:2af7:3583]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::2de6:bc88:2af7:3583%3]) with mapi id 15.20.9434.009; Tue, 23 Dec 2025 02:37:50 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Mon, 22 Dec 2025 21:37:49 -0500 Message-Id: Subject: Re: [PATCH 14/14] greybus: cpc: add CPC SDIO host driver Cc: , "Johan Hovold" , "Alex Elder" , "Greg Kroah-Hartman" , "Silicon Labs Kernel Team" , "Gabriel Beaulieu" To: "Yacin Belmihoub-Martel" , From: =?utf-8?q?Damien_Ri=C3=A9gel?= X-Mailer: aerc 0.20.1 References: <20251212161308.25678-1-damien.riegel@silabs.com> <20251212161308.25678-15-damien.riegel@silabs.com> In-Reply-To: X-ClientProxiedBy: YQBPR0101CA0351.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:6b::10) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|SA1PR11MB8543:EE_ X-MS-Office365-Filtering-Correlation-Id: b2c79a8c-9532-4ea0-331f-08de41cc4413 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a0FEd01hZitjZGRDSnYvTlNwSTVWeG0yT0gzUGlhTk5HQVd4MWE1NDRGNmdD?= =?utf-8?B?dkx3WDBhTkpzTUpSR283a0JEQUtXMWY4TXJCZ0Z5enMwMDI0SkUzY3d0Vmpm?= =?utf-8?B?WHBIUFNtcS9YTTdoOThNMk11T09Ec0Jqa2luT1Y4Y1N1dTJyVWFLR2ZHV3pw?= =?utf-8?B?bHlDOWh0bVFiUk9mMXR6Y21XZ29ydFY0b2haN05jOExKbUtWR3lPZUhkMm92?= =?utf-8?B?VFJtRndQdEJ3bUQ3TW9mWXl3UDNaN0gyOHZ2Q0ZrMkJGUlVnSWhtSEdKaFRD?= =?utf-8?B?RkxGTXpGeEJmOHVXUmV5MmpWWE5CL2VjaTlHQjlqQTdvVTgxUW55SGNVNjB0?= =?utf-8?B?SjFOKzN5am1EKzFnY29YejhEbHc3TzNBa1BTNEJqOGdXYWtjdWJxcU1saUox?= =?utf-8?B?dVh6NzRqOTdNd1lPR0ZUQXlYOCswdlR2T3ZrallEbHZBdWxPaFZjVWZqLzdi?= =?utf-8?B?VW1LaFppdlhXWXlKam5mRGhUQWtOTEQzTWVlbmswclVmSmZ2VW04Vy85R1N3?= =?utf-8?B?bHRjWXd5VnU2N0VYdmN1cUZWRDJwMlBlYnJvT2lSN3JZMDd6K29iSzBWSjNn?= =?utf-8?B?NnVuZEtrWEZqWlllUlVRbkZad1BKZmVsSVFOdFlTZSt6OFhNUFZFREhYOUhZ?= =?utf-8?B?RGV4T3B6bkJuTGV1Z21wcUdoR1Y1bitiN01kcm82emJTeldMTzRFNEV3aTNX?= =?utf-8?B?Q0FXZnpjT2hqdmpQd1U3MXN0RllZMm5TcnhzNTdUaVJCcVQzL05uMlFNSlpF?= =?utf-8?B?ZHdYT3RaQ3JMZmdSR3FZTE82c0M1Q1F5THlZU1N6YUpUc2d2RmNzc1A5T294?= =?utf-8?B?RUlMYXJUZXNyQnh1R0phaTMzbEJMcjhLUFNhd2J3UVlRNUUydEhUV09HcTRa?= =?utf-8?B?dGlvWW5HUjhYL0w2aUltMVJya3ZRVms3bnVycnU0b2MzS3p3MVNoNHJncEc3?= =?utf-8?B?MmQ2bzFkajUxT00yMmJTWDA2YTVhZUJlUkJPdXVJYVFxelo1WTF5bWFJS25a?= =?utf-8?B?WVZBaDUxZ2EreXlzbkFaMDJiaTM4SHp1MmpUaDA1bEd5bkZ4aEtVY3hxVWRn?= =?utf-8?B?elhxS3ZjK3pGK255SnIrdEtpMStldVNVV1NJUzUzbTYrUzZuSFNwWnJQNExU?= =?utf-8?B?NHFkcEdocHFwakI0VTQ2MkdkMm9IQlpCbWJZN1JqcnVvTWpWM3NHcmZvZngv?= =?utf-8?B?TlJFNnhGUU1GRVRZdnVVcHpTY24ydldPdmNyM0preGtOT1FiREhHREF1akZq?= =?utf-8?B?OFBrT1FUdjJvREp4ODRCckw5akF1WWpiVHI4Q25NT1pBOVhUNFFUcWZWa0VV?= =?utf-8?B?ZkFmTTRUN28xZ0I2V1V0SVJSWlZiRmpTdkVweHFwejlHMjZ0RUtaUmlMQW9P?= =?utf-8?B?dDVmeUo2OFlkYVU4Nlcvcm5KVkQ1UXVjNHlkUmpjbXNFbU9qNVdCTWt2alpB?= =?utf-8?B?a0l5djFhazdBR3ROVDlucDJ2UUJDaWdTd0s1WWtWSEFBMVd5TGFKcFZ2NHp5?= =?utf-8?B?eE1OMmY4NkdzRlZHdFd6NG96VzVaeldmeStCbVl3WVRvTzhxTmFxb01zNDg2?= =?utf-8?B?a01MM3RCM29SNm51UWw5Y1N2UEtqb1BHNGtPSnFOcmZCZnYxdFJTczB5NWVs?= =?utf-8?B?N3VjUEdNNXc0TDZHY0NuTEJOTnZWbFpBdGN1RTV6TjFsQzhDZVJucCtseThr?= =?utf-8?B?aGxIU05WZmVRQWNxVFNuaXVnNUNYY0lBa1pNMjhrM2xjLzIveGNObkh0Z0FX?= =?utf-8?B?UlhFaTBDN24xZnRvV0R4L0o2UDZSNCtHczZObTVHeHhFeFlBaDZIakJzSG5J?= =?utf-8?B?ZDlrSlRmNi93bFFRY2RCNTBSZlBUc1h2M2JMK285TzQybE8yb3lsYWwxM2xh?= =?utf-8?B?bHRLOFRhUWZ6NzA3Z3E4eFIrbmJ1UmFjR01JRWRKaGNPOWxrTzNOVW1wSCtl?= =?utf-8?Q?xvcPq98Gt5kg7VeXCciwaGMuNvV1y9YP?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q2FCeGdHQnFCeWdDbTJuc2ZaN1ljRHpZR1BzcHZVdDQrUWFNL0JYWVU5VFdU?= =?utf-8?B?WDhBb1EwOUZrWVJHaW9WRnFUSnZsem91b1BZYU5jbVd4bWpPcTJneXp4YitY?= =?utf-8?B?dWYzeXFwRUtJSXpjRVJVL3E2Z25jcm9yNGlMWHZwZ0VyRUxEK2kvTGdNelNS?= =?utf-8?B?K0JRWnljZkhMalVtdnZSRlIrdzNXYkM1bGhwZklnWkJqZStjSDRvdmg3SENi?= =?utf-8?B?SlhRRTV6bHN0NFFpS090S0ovdjVHRWFGbDcwbS9KN1ZyUnRiQXg0WmoxcjA2?= =?utf-8?B?S3FiR1BVYTJBRkNSRGJjYytuV1dkLzh0TjZYcjhtWm94L05kN0UvajhvMWJy?= =?utf-8?B?QVJDeXhGREorUlZmekt5T0RoSzlpTCtENHJHcUU2KzJaMlpjRzZ3WDQyVVlB?= =?utf-8?B?QkRuSmlKWmlmTHNnVW9MYy8xQ09YV1B2R21zbkNieHFBdmxTb2VmTi8yWFkx?= =?utf-8?B?REwrdzZXc2U4Um44SkthM3Arenc2RklaYnpiVkRuWGQ4YmZMUXlmZjI3Z2tl?= =?utf-8?B?VjJDUzQwWGU3RUJiU3lKM0tVTkpVRnVKSXBMMm9HMU9RSm5xMzhvdnExYjBk?= =?utf-8?B?ejZlS0M0K0ZVS0pCY0xGb29iSEMwRTgzM3FTQTFjS0thUkl4M2pjYUx0SWF5?= =?utf-8?B?YjZoVUYycXFSaGlHc2p6Nndmemc5WHY4OGpuTjUrN091STkzbmc4WVZHUlJY?= =?utf-8?B?WjVKTjZXRmk3ZGpLZEN4dG5mK1JkOHNTRHJzWHVvSEV2YmVES3plWHlCcjFQ?= =?utf-8?B?MGxoZ1lkUEFSVzJHRFpBWW1WVHlJcndLNzJKN0h5MkxyQmgyTjRMZHZudE03?= =?utf-8?B?aGE3dTNuczFXMkQ4eGNTVlh3S2c5T3ZyLytFL2JZMkhRS2hsaDNmK0g4STZC?= =?utf-8?B?ejFQckkrbFdOZkQ3VHNTM1BpRUNKSzVDNURqTzJ3WnkzZHA3eGZVUG9ZaW8v?= =?utf-8?B?WTQyQUYxaGNRdlRTTXJvU3NZQkpLcm8rZUdVai9ISXpzbnFabExPN3JuckE3?= =?utf-8?B?ZmM2VE1iNVBRU0JHLyt6bGtqdWJxTSsvZGdBMTZqRmloRnZjWUwwUGFKKysv?= =?utf-8?B?QU1TS2x3alhXVENmYVBHMGlJRVZjYjVMUW5xZ1A0VXlGZEtzQzc5UkpCdzhH?= =?utf-8?B?UXpJMUE2aUswSG8yalh5blNXcGtkb0VvNGNtcVpYVVltdVUwZUd2SW9pTUdr?= =?utf-8?B?Vkx6OC9YanpZcCtPV3BnMXFOazNHYkR6aEtvem9SbjN4alBrNVI0b2ZmR2Rr?= =?utf-8?B?N2ZxOHhDUncyOFpEMkxlRFhuV0Q3NXRsSndSRnQ1eU5EbVkwbG5oNTI0U3lt?= =?utf-8?B?LzFvS2JMT09pTFJCTXlmNmlUSFlhK2FHQUdWS1FPMzJEZVQ2NXR3UkYzaU9R?= =?utf-8?B?RTBySjUyNWxTWUgrWDdVUG5mSmgraFJ4R0xoZUwvbFVxUzFadTAvNitvWCtS?= =?utf-8?B?cXVDVUYvVGpBRUtIN0dpTFpUcmdGMFlZbGQ3WEFPSzJ5OVR6NzVWUk1HbTl4?= =?utf-8?B?R0toOUpkQ2xnc0ZTcDRyb3ZZVG50Tis2K1piaDloWlBkMlMrQlhrQzkrMmp0?= =?utf-8?B?cDhOVjMwMGR3U1ZHL1Fub2MxSGU4S3JlZXdRbGFWQTdnOFd3QnJnUENTY2tT?= =?utf-8?B?dkN1Znkzd2xWRmx4TVAzT01WQjhEVVlQTzhCUW1MRDM5SzBFRjR5a0pPVERZ?= =?utf-8?B?bE9oai9HUlBMWUpRQmlpZ1l1cVIzanVUdzV0RnZFVVU4dzBmMzR4bEVYend3?= =?utf-8?B?azNUbllCZzZ2OFF3NGY4aGIreXRseWpIWHpHUW94M01lMTc4anR1VDB0UitV?= =?utf-8?B?MjRndHlNK2xwVEIxL2ZoWlg4Qnk2a0dZUXNXRWVVbnN1S1h5QVFXMnFMUjZh?= =?utf-8?B?SUtZN1pobjlxM0FJWGgwOC9pQ01VeGJLVGt2cnplM0loTzVsS3NRYUh5Q1dq?= =?utf-8?B?Rjk3OUtuVTZ3UzNpUDFsSncrSnQya1d6NlRjcm0xOVpETzlVN1Q2Y01qN2VX?= =?utf-8?B?WmhrcCttejJHQ0l5YURBRURPNlFQL3NGNENjbEFFVHlObU5Sb2JWc2hmNkh3?= =?utf-8?B?U3M4azhZUWtjazFvU2hnZDA1cEFiaDE5NWpPUHJFaXNIZ2JxcWNEejVWcFVU?= =?utf-8?B?cXlvRHJWV2hKaUZJZTNvS3cwYlZWbVZiM3RFbG5CYzlwYjlHMzJYV2ZRa0xk?= =?utf-8?B?MmxBM0ZKNlZrbzZTaXc1OFE2azBPU0dmbTQ2am8zZExuT2VVb2c3REtTT1Vq?= =?utf-8?B?TFJseTlFMThlamRCUDRyVmR1cDNmUi9LTGV1amJZUVdhdU54SkxWUjIzUnJh?= =?utf-8?B?dTAxUUJxcnBrbWhIcmkrVS90R0x0TjArS3ZnMllDRnZRRGZuQmU5bU1YRnAw?= =?utf-8?Q?3JEexFOXdcgh5d5EVYoWamoERJutG6i0ELDordQWnIhzg?= X-MS-Exchange-AntiSpam-MessageData-1: I1qlA+Sb91iQlw== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2c79a8c-9532-4ea0-331f-08de41cc4413 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2025 02:37:50.7893 (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: 62gTRqlqJDrFcn8oWe7+9RuVM0/179TU+gY4NEhBJ0roaHG9y7jQyOGmqIpeOnYmUxn2SPdnefkZdmWP9tuFPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB8543 X-Proofpoint-ORIG-GUID: 3_q8ZAAgmUZ0ggaBMe3NeJmCSCf8zefP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIzMDAyMCBTYWx0ZWRfX+Q9KEWb+Nv9m 6i4W7WdwHe80/wiwgtv579LX5/W7+PkMb7aT/f0D1tvbyRKexFVGb2GW3xBgV4HYWGFz+ulZjPR K7d8py6xcu8sxpErEG3zd5HOeSsmsNVaBvHG88kUGm3saKXT8ZDoRg4CiE63EbaDxCBcD7tdjif SIcxqzIjTubRNrYfHFRvMtpkBI+Q9BeLx12RiM0YkVt2maSTUDshpio2DgGvCcd8nY8spdNAVpB bW+tnJTfj1Aq06yM4m1KRiB15AMzmLQ4Ycprsz0vxMso5qjQy4UBZWg+mDzRk5YO8nGvo99ugPu BtT6cqZZrBCk9XPmMKeLImRuQ+gT2CZU/RFLAKt/9RNlysXh2dg1yRm4pYgPUksD8NlfBW2nqnd Zvs8KFXDqXQRB+W5eXSokK4JYT6axDHGdd9MkSQTwQM1Fmgv+6XzLfnv+YX/XfSMmTr62acfyO5 ZLRiBE8lrtFo11pev2A== X-Proofpoint-GUID: 3_q8ZAAgmUZ0ggaBMe3NeJmCSCf8zefP X-Authority-Analysis: v=2.4 cv=Z4Lh3XRA c=1 sm=1 tr=0 ts=694a0081 cx=c_pps a=ZiNoB/MLSX3+I0Tp4uZUxg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=eSEQp4nYg6waMJpvQ14A:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-22_04,2025-12-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 adultscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512230020 On Fri Dec 12, 2025 at 5:01 PM EST, Yacin Belmihoub-Martel wrote: > On Fri Dec 12, 2025 at 11:13 AM EST, Damien Ri=C3=A9gel wrote: >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include > > I think there are a few includes that are not used here (`atomic.h`, > `delay.h`, `minmax.h`, `slab.h`). Thanks, I'll check that. I wont reply to all your reviews to avoid unnecessary noise, but I will apply the suggestions you made and fix the errors reported by kernel test robot before spinning a new version. >> +/** >> + * Return the memory requirement in bytes for the aggregated frame alig= ned to the block size >> + */ >> +static size_t cpc_sdio_get_aligned_size(struct cpc_sdio *ctx, struct sk= _buff_head *frame_list) >> +{ >> + size_t size =3D 0; >> + struct sk_buff *frame; > > Check for reverse xmass tree notation, there are a few occurences in > this source file where this is not enforced. I renamed some variables last minute and I have missed some styling issues like this, will take care of that. > >> +static unsigned char *cpc_sdio_build_aggregated_frame(struct cpc_sdio *= ctx, >> + struct sk_buff_head *frame_list, >> + size_t *xfer_len) >> +{ >> + [...] >> + frame_count =3D (__le32 *)tx_buff; >> + *frame_count =3D cpu_to_le32(skb_queue_len(frame_list)); >> + i +=3D 4; > > `i +=3D sizeof(*frame_count);` to avoid magic value. Also, it is more > common to return the size of the built array instead of the array > itself, so I would instead pass `char **tx_buff` as an argument and > return `xfer_len`. Sure I can swap the length and the pointer. >> + >> + /* Copy frame headers to aggregate buffer */ >> + skb_queue_walk(frame_list, frame) { >> + memcpy(&tx_buff[i], frame->data, CPC_FRAME_HEADER_SIZE); >> + i +=3D CPC_FRAME_HEADER_SIZE; >> + } > > Declaring a local `struct frame_header*` would be more explicit. > >> + /* Zero-pad remainder of header block to fill complete SDIO block */ >> + if (i < GB_CPC_SDIO_BLOCK_SIZE) >> + memset(&tx_buff[i], 0, GB_CPC_SDIO_BLOCK_SIZE - i); > > Remove unnecessary `if`. > >> +/** >> + * Process aggregated frame >> + * Reconstructed frame layout: >> + * +-----+-----+-----+------+------+------+------+-------+---------+ >> + * | CPC Header (4B) | Size | OpID | Type | Stat | CPort | Payload | >> + * +-----+-----+-----+------+------+------+------+-------+---------+ >> + */ >> +static int cpc_sdio_process_aggregated_frame(struct cpc_sdio *ctx, unsi= gned char *aggregated_frame, >> + unsigned int frame_len) >> +{ >> + [...] >> + /* Ensure frame count doesn't exceed our negotiated maximum */ >> + if (frame_count > ctx->max_aggregation) { >> + dev_warn(ctx->dev, >> + "Process aggregated frame: frame count %u exceeds negotiated maximu= m %u\n", >> + frame_count, ctx->max_aggregation); >> + //frame_count =3D ctx->effective_max_aggregation; >> + } > > First off, remove inline comment. Also, this function returns an integer > that is never checked by the caller, so change the reurn type to `void`. > I think the solution to handling this error is to simply return. Agreed, anyway I plan to revisit aggregation, the way it's done currently is kind of a waste of space, and reading an invalid value here basically means the device sent us garbage, so I agree that the right course of action would be to just return and drop garbage data. With the new aggregation scheme, the device would be basically free to aggregate as many frames as it wants without breaking the protocol >> + >> + /* Header starts at block 0 after frame count */ >> + header =3D (struct frame_header *)&aggregated_frame[sizeof(__le32)]; > > Use `sizeof(frame_count)` to make this more explicit, and make it easier > to maintain if `frame_count` ever changes type. > >> + for (unsigned int i =3D 0; i < frame_count; i++) { > > No need for `i` to be unsigned, just use an `int` to alleviate the code. > >> + /* Allocate sk_buff for reconstructed frame */ >> + rx_skb =3D alloc_skb(frame_size, GFP_KERNEL); >> + if (rx_skb) { >> + /* Copy header */ >> + memcpy(skb_put(rx_skb, CPC_FRAME_HEADER_SIZE), header, >> + CPC_FRAME_HEADER_SIZE); >> + >> + /* Copy payload */ >> + if (payload_size > 0) >> + memcpy(skb_put(rx_skb, payload_size), payload_start, payload_size); >> + >> + /* Send reconstructed frame to CPC core */ >> + cpc_hd_rcvd(ctx->cpc_hd, rx_skb); >> + } >> + /* else: allocation failed, skip this frame but continue processing *= / > > No? If we're not able to allocate, we should just return. Change the > `if` to check for a failed allocation and return. This has the added > benefit of keeping the nominal path unindented. Sure >> +static u32 cpc_sdio_get_rx_num_bytes(struct sdio_func *func, int *err) >> +{ >> + unsigned int rx_num_block_addr =3D 0x0C; >> + >> + return sdio_readl(func, rx_num_block_addr, err); >> +} > > Have `0x0C` in a `GB_CPC_SDIO_RX_BLOCK_CNT_ADDR` define for better > readability. > >> +static void gb_cpc_sdio_tx(struct cpc_sdio *ctx) >> +{ >> +cleanup_frames: >> + /* Clean up any remaining frames in the list */ >> + skb_queue_purge(&frame_list); > > Misleading comment, since `frame_list` will always have frames left in > it, as they are never removed during TX. > >> +static void gb_cpc_sdio_rx_tx(struct cpc_sdio *ctx) >> +{ >> + gb_cpc_sdio_rx(ctx); >> + >> + set_bit(CPC_SDIO_FLAG_IRQ_RUNNING, &ctx->flags); >> + gb_cpc_sdio_tx(ctx); >> + clear_bit(CPC_SDIO_FLAG_IRQ_RUNNING, &ctx->flags); >> +} > > This is very surprising to me, why are we processing our TX in the RX > IRQ? This seems entirely unnecessary. It feels like we could rework this > and remove `CPC_SDIO_FLAG_IRQ_RUNNING`. This is a pattern I picked up from SDIO WiFi drivers. At least a few of them do that, I think to give some chance to the TX path to be exercised when the radio is consistently trying to send packets to the host. Otherwise, the TX path might be stuck most of the time on sdio_claim_host() as they will fight for access to the bus. I will leave it as is for now. This is something we can revisit later if we're still not happy with it. Cheers, --=20 Damien