From nobody Mon Feb 9 06:48:31 2026 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 04E6E2C11FD for ; Thu, 15 Jan 2026 16:10:24 +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=1768493429; cv=fail; b=lzqiALS8v7rBAn9JjdkNo4SBMUKR/4feIeu0lnrmkJgSWLmRkvmr/dOb0OZzmt/i0LxbPJWddW0De1drw+3peIHP3REWKlO+oA/iK7+s3DZhGKt2AzpgfuAWWYnngOe8QRPrk3Y39gzK7WQ1kHAl6pl2486IQkI4QfJWM3q2t1g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768493429; c=relaxed/simple; bh=UW30b9dZkUv6/NKm0CR8jOixF8tvE/GMu1C103Ab85o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PzOW3a1TSsJCw5VUSblpm4SM2YhjuZ9ottadnwQN7fdhkCQMXQMoZ+tc/ZOEGpPMt31K4Jc6QzS+H0t+1lU7ZmaTyoaCPsYfzTBVu0WlvlipUSmKdeLYEYo3GWOUXOt200ATzIny000L/ktWHEyGKTSKnt2c1MH0Ugp2bZCiL/8= 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=b7NbGWzC; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=DPtwrKUS; 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="b7NbGWzC"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="DPtwrKUS" 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 60FFlYMs459372; Thu, 15 Jan 2026 09:58:36 -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=dY2ZY38R7KDVfc/TYv+75hVhZJztufc6KKcH5xn7Lbs=; b=b7NbGWzCsvDe VJPzChv7pMnXgx29x/mJlVTB6O3al1QpRx5K9YLL54T6yKOYuC8xnCiETXKeURXe tw6MRUgaA40TceNikDiX7g+olhqC47RyFO3uor/mIGALnoTqT4uQlfrYHdyzVuXA iqZkSO4lkRTITgib2mM3tTfXVAkTBpqLB5YhrXwOnNV7HilS6wpesCnMAfTzWkUA Z5RO6vtFCZI/qwBwMwewIL4REDSVmMAaLA4tK4xJLGf3kNkgUvM7QBQHqBSCKa6A GuIgQWcI4mNVM/I7KLf0hk7HCTMaOwejfFATwUQKKd/WpL5V5gMuPH/FKSWCT5BP 9HHNYNlHbQ== Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11021127.outbound.protection.outlook.com [52.101.52.127]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4bq36kr0ut-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Thu, 15 Jan 2026 09:58:36 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nuGUs5I5aX3wPlNktxhG3SX7JLgiL6WWnE4BqI2rFryHbnxRdVaELstz03ToYKWPEVx2OkGkzDzuE87fD+oVwXZiqme0z+qs9ohrT8gp+WPnJGIb2yzCvJQsJkERX3WXYfOBhi7rWZsm6YE/ikSImEgvAR2Lqrn2qCYXufs6g8xNw3TNyX25XPK1y+yTvdkHK/y4lCy5im3GCTh16B1Fvzs3wFuvQfFoZh/OOs0epWtV4pPjOEQXiColjPP9NHotJWG/Ah2ArxIOrUO5VCSECls+R9nzBwgtgjUQup5KYJihEMYVdl8hCB4dFLvY6TGZwm5xdwvhiVrp/4XMkzLrpw== 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=dY2ZY38R7KDVfc/TYv+75hVhZJztufc6KKcH5xn7Lbs=; b=ovII41NY9pqL+l2/eb0RST/o7AgBu+vFiVALROoe7EYkiD+rLcwy4lYJCMdWMvu124mwvs1tGLVWmkgxlZunXJD1kgXwv/AcdZE2K0pWFX+UTROjAIeYNuI0A54d/Ds2s0131yZfQ17xSU0/xNCqsiBsZnsNHjsm6Jt4/PqsM9TDO/sizh0x14WU8g2Q1SYBb0hejwnduIo/m6gTqf2buxQHLGqr/GEp7sWGFGd4OX35SavtbHYXY/pKc1dB5oP6QB+1lSWAMXn9Pfws2cKXW02NSSzAZTUWSiVey8oQA03xv9XKjJyYog2Mlh9HkLth0Lz/rOxVjBmzjJhT4a8UPQ== 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=dY2ZY38R7KDVfc/TYv+75hVhZJztufc6KKcH5xn7Lbs=; b=DPtwrKUS8a8rxdfUBdsZaRKECX/BZ5zaH8J7X7PJ5K5lNqUXPqpKhs7tIVlvvPqMwE/tb4poFZ3pWRktEy1jm/C6G8eu1vomze2NMJU7kUJ8NGgR1gjHcVpu2Jv3MQsV0M8EU/7TKXQEWoHlAXbE4VApBPxcs9jYEC7NhweyznM= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by SA1PR11MB8811.namprd11.prod.outlook.com (2603:10b6:806:467::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Thu, 15 Jan 2026 15:58:33 +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.9520.005; Thu, 15 Jan 2026 15:58:33 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [PATCH v2 02/14] greybus: cpc: introduce CPC cport structure Date: Thu, 15 Jan 2026 10:57:55 -0500 Message-ID: <20260115155808.36102-3-damien.riegel@silabs.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260115155808.36102-1-damien.riegel@silabs.com> References: <20260115155808.36102-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YQZPR01CA0025.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:86::22) 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_|SA1PR11MB8811:EE_ X-MS-Office365-Filtering-Correlation-Id: 59468919-dbaf-41aa-46f4-08de544eef14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VURsc0JIWTkvakN3aCtMNXFITXZ1cnM0aDljOUpRTlpIR3RkOFJ4bUp6SmdO?= =?utf-8?B?ZWR0TmlOQzlpZU5nc0tzYXVRYWZMN20wRThWZFNtMHQ1RWtOcnVtMklKL1VC?= =?utf-8?B?YmFTY284dkgwR3RNYm5aU2NsNWwrSEp2b0c4alpuTnhBaDZZRXBrYURuc3ZO?= =?utf-8?B?UnNMMC9QZGFjQWxJYTlRS0VncHE5SjV2amE1SHVhRmpCdTYwenpUczZtcXZZ?= =?utf-8?B?UXcxdWtYNjgxelllWWd0am0wZjhUSlR0bFIxY2RTZGtqb3RYd2M0T1RHcDFZ?= =?utf-8?B?K1VZTUVkTUY4TUlmMVFyVElaUzhGekp1V1d2UEVPYUFuc3Z5OVVNZkpWVkc4?= =?utf-8?B?V0lNMGlXN3BOeGZKSXhtbHdwdnNVN0E5dmRXSHlaZ3oxM2h0MU9qQXFtWS9v?= =?utf-8?B?MUFIN2NUU0JkTHJQeFgxeUk5Y0FlM0YwNDZ2NU1OUmc3cXNQNWtjVkppVE5S?= =?utf-8?B?NEE0RERIODlZNGtxQjZoSmEzTVRCMzdxVUJqb2tZblpSb3B4KzJuL1R1Z1VC?= =?utf-8?B?UHpPc1BlZ2Nhb2tqc3Q5YWZWc1NaK1cwaVl5S3d3bTlDWGxlT1E4eE0rQjZ5?= =?utf-8?B?VzJSSmVVeFNHWDNaY2VEakk4RnpmVTg5T09RNE5KcDF0VFRWL3dvajFMaU1G?= =?utf-8?B?Sm9wYnM0SVovUW40WmxkK1NuYWJFZlhuVHQweW9yL1l3SzBHNFdadEhUa1FM?= =?utf-8?B?NXpBU29xMjcvR3JVTWVaa1RTdUtZZ0N4NDFCTCtIWWl3UERKYXlBUVJIVVFM?= =?utf-8?B?b1VvTjhHQ1lWMk9FS0pSVERzYWNEOXFTV0p6dDFUd21JYVIwVjdsZWpYV3kx?= =?utf-8?B?ZmFDSk1yV1FRQWlrVElGbzVHcEVHSlpkZzdPeFU2ckJlcHpoc1R0VHBiQmU3?= =?utf-8?B?Y2hWVWVFVTRiMmhwWGhOS2FzdStCQlhhTVFDY1V4bG8xRHFTTUNycXdBRlpa?= =?utf-8?B?MXpPOW5SMVhZWSsxcHNoaTY1b3lpRVdROHJCY1JtUllybGhLTEE5MUxybnFj?= =?utf-8?B?Z3dBT1B1Q1lnN3JEc1h3M0ZLWW9yK3MyUHdHVVlWWVNxaXVXZ2ppMVJEQkxu?= =?utf-8?B?cngxaFVodWt4MGpVdTdJaWltYXNCU1EwYkNpOTdXbzg5Q0duOVk5aENVR0VN?= =?utf-8?B?T01tREc0TzN5OXVOUFJMYnZJaWRtSDZsTElNWCtnYVVoTUd2cDBhMUE5UUtq?= =?utf-8?B?TVBJTi9HTjdHTVo5RHNOZmROd2VWU1BLYjZoNzFlS0lMam05bXluN2J3WTkz?= =?utf-8?B?RlJqZ084dlQyeFo5L1l1dGZySW9ETUFxMXNyNndMR2FrTWJjeXdlT3Yyd0FI?= =?utf-8?B?cnBOVllvUFQrNEtLK1BpMzJmU3VRMVM3eWNpb3llUDR4cmRQOVFEUnVvU3cv?= =?utf-8?B?eWVGM0FmSGl6VnZoTGNyUW1nSXk1SWxMeTlRMmEyc0RaNHZBR05JbU9vR2cz?= =?utf-8?B?WVpsR2ZQOC9nY3YvZkc0Y0RIMDluU0V5VEh4eEl3K1FJTHdub3NZUHZaRUlt?= =?utf-8?B?S3RlTCtTeVFvZys1WVRBUzVDNE1SWHpGLy9uNTdQb2dnd0EwSGxYN2k4b0sz?= =?utf-8?B?eGhQZDdHcWhtS3hUVkhpTnZ1dTNOdzNBanF5enFLaXMxVDNpeUx4cDcxbDln?= =?utf-8?B?Tis4NlByL2ZlendVNmFpMVNlUFd3ZlZjajVhcmlJVjlxMnFjUmZMVlAzaExM?= =?utf-8?B?cE0zaG5OTUQwLzNjN2lTZmx6YTNNVUZIWnBIeEw5MngwMUZEVWlrSWV0cGNw?= =?utf-8?B?Z3h1bjBsbFFlWXl4ckg5aUhQK2lVL3lsb2FlU21pTTBRbHdWSThHYTc0STB3?= =?utf-8?B?TUxMclZWTHRvVEIyTXV5M1NDb0d1dWZ3YkxmTXBCVis2YU95c2xJOW1DNTBm?= =?utf-8?B?WXpaTTJiKzhrb1lnODJlbUt3Wkswc0huaTRxZUVPWExNa2F4UjQ3OTZ2dFJG?= =?utf-8?B?bTZHNjI1ODRJMFdXNUltNFpET2JLTHNzRTBza3YyZFBoWkttUDRIVVp0VnAr?= =?utf-8?B?OXJOMHFUejl5ZFdJblpmSTM4bERjZ0ROR0o0cXhnRDNpTlFPUmZ2VnhCNTFz?= =?utf-8?B?czltQWdmL24zOHl1S0dyTmpzZVVyZE8rejd2SXRXSmxGemJZb2djVzVoaGpw?= =?utf-8?B?LzJEL3laYmE3dkliV1hjV2NKdDBkSk1kcjBKMEQwTVpCaGlRYlZSSEtIOXYw?= =?utf-8?Q?DycZsVqnt4PvxBvn28wPcJ0=3D?= 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)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RmlibGhRN0NEZ3VCRjZvZmpPSzhSbExZR0xwSWZ6bTFJbFIreEZYZnJyZm10?= =?utf-8?B?TjFBWEEzL2JFWHpGck1FcVJ5MU4zWnFNUENsanoxWTEraTF1bTBBKzF4ZWVw?= =?utf-8?B?VnhkQU91STgrRnRwUExmeTdHQ0tGZVREbnY5YUVJSzZkcHBmSWhHV0tkNXd2?= =?utf-8?B?cUl6eUd4Uk85cW8yNWJoY1BkenlhcWsvMEYvZFEzL203NVE4Q0lqajRmVFAz?= =?utf-8?B?WmQvR2pob3NvaHBSZnlBcXozNzNudDUwOGdVdTB1NEdlUnUwZ2lvZmdwdXYy?= =?utf-8?B?OHdjbmQybkpDeDlsSXNhclVscFc3RDlrdDgvck51cTYwZXpyMkhlVjdDSk05?= =?utf-8?B?QXJ1U25nWWFudFBVWXpscXBFTGJJVnU1V09aWUdQNkVFcDRvQnBTcitkWnNm?= =?utf-8?B?M3Z1dVNpTE1TMjE2SExKU3dUMlZ1UU4zWjFvTWZpK1dER2RrNzd4R2dKL2pX?= =?utf-8?B?VXNDNDFZQnVJellaUjgyOGdqRmtHUDdpWEs3a29uOS9Rb2djRHdaMTVNbk51?= =?utf-8?B?blZ2cjA3eVplNlcyRUhnNG9hd092YVJDb0NzUzh5eXg3dTVnbzNDaDQ1QkVr?= =?utf-8?B?SytSVzdUOU5NMmRGRVlKdlNnUnB2S2d4ZisxTDBRYldlR3ZlRENvWjhNWjFS?= =?utf-8?B?OTZaeTUwTDBTc3VwTEhRUjJIc3FTdU40dGNnUklGekFDbU1MWGRLMTc5ZDdY?= =?utf-8?B?dmVxWkJyNEhjQUtMMk4zSlkzdUNPUStmY0JhN2V0Y3BOcFNHa0lQRHJWazlD?= =?utf-8?B?NWtBUDBVdmpudnJqYkZ3cGtaOFdzRjBTZzkrSTFOWTB0TWZwUVNSNlE3LzNU?= =?utf-8?B?VHhoVlNLQm5aWHg4RC8wUTRMTTlLaFp0TFhQM1FGYWRMZVAyQm5FajN6azZ0?= =?utf-8?B?bDVVRDI0Y3J3d3V0QTJ5NDh2NlZIL2dwb0Y5UC9rRGxORFMwNS9oRHpOTHor?= =?utf-8?B?bytMMUM1dzdTak16eVFtb0ZiSElkNUt5RjBaT1pIS2hJSS9WemhkVyt4eTEy?= =?utf-8?B?REJaOTFCdkRMZ0wvQU13cEt3bXpvSm90TThsMXNFNTdaWnJ4eFkwdUFhdDVS?= =?utf-8?B?eTZIMmRHNlZwdXlvYVR6SWlZQnJFZ3VtRm5JK1dnbWNSU2oxNmszdXNFZ1Zk?= =?utf-8?B?ZG5RRnlaSThxQmpTZ1doaURyd0hsNG12c3ZEWmltcjd0R1lQUVJTbkhMaDE3?= =?utf-8?B?T2hZYjczYXdIS3dlblgwcjQ2cUM2dkhJT3J5TUxTOERqdkZPS3QvNEkvSWhq?= =?utf-8?B?MHpQaVBXT0FlRXhTcTA3cFJSVG1KV1BvUngwMWp0azVxZ3lieVVZbWcyVnZ6?= =?utf-8?B?S2JnQU1tMmZObU9qQU9kUTVkaWE1WkJ3d3d4T291WEZndXFhR2xTSG5PWkZN?= =?utf-8?B?VFo0Q05CbDZqNGovdzJuYm5iRmY5Q09yZ1ZxT1k0UXFZb3dESlRWZmY1Z2pw?= =?utf-8?B?TStiR2t3cG81SEwzbU85Z0NpTE9FTm16elJJUGx3eWk4STBMM1FtVjRZYTVR?= =?utf-8?B?N1FUYlZtb29xRVBpa09MRG1pSG11cVI0V1B4VnVxS0ZXWGVxd0JCOFRQN2xG?= =?utf-8?B?Vm50ZEZVR3pab0xDZUVwWVNkdWNkNXE0VSt4SjJHTlo0UEtwakZTblNSZEc5?= =?utf-8?B?ZlNFTUdaaVhMeENveWF5Rnp1cjVldE5BQjB3eFBsU0w0R3pRYWdCMkF6M1BZ?= =?utf-8?B?cENsTC9YWWg4U1Y4T2Zpazl6Y1FNUlZQNGkyQ1pjZHpBYmFaRXRISy80V1dZ?= =?utf-8?B?RHZZUFhhU2ZZWlFmUVdrZ0k3Q3J2TXFFODhwTWZ3eVhybGhHZ3ZKU0JRQVNQ?= =?utf-8?B?N1ZudERaWnZmVEhNeTEwb2dnLzZDcUx2WHNpK3h0a3VpVVZGWTZValJINk9a?= =?utf-8?B?T3lNYWs4ZEhtUnRhTXlBU0djbmlUblZpczBjTUt0YmRPRTNzbWFZT0d4L3Aw?= =?utf-8?B?MVVBait4OXh4NlB4RzZZYnQxVHE1Z2tGcVVFSDBnaUJtL2Jwd1ZNZUVONHVU?= =?utf-8?B?djBnN0hzbkxyazFaa2NML1RWQUJuYVZYdEROZS85dFlrd3FIeG1ZbDlmZ3lB?= =?utf-8?B?UXpsL2lyTWNpZUhoZTBOMWJEZ0JzSndoK3lsbzJIRnJYNFNhVFh4Y29XTVpR?= =?utf-8?B?Q2l5WnV5K2cvVFBUYXkwY3NSdENVVmFqcExoODNrT0VUc1Z3Z0RTdTNiQVZC?= =?utf-8?B?SlFYdThMdUhJQWpLMzlzejlyQU5YSFNESkphcldmK2s3QTZWYkpMcm5zbzlQ?= =?utf-8?B?MlFtQ0czM2lGdGpQa045eGI5SElEWHFMalBTRVNnQUNrN0lpRUVMQWZVa25j?= =?utf-8?B?bCtzQkFtZXlHNTlTbGYwQXpDNTk4SzliSHVIRmg4c0UyaCsxTWlWdz09?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59468919-dbaf-41aa-46f4-08de544eef14 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2026 15:58:33.1150 (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: lo3vLNhspIGwoa4W7vwYwdpX9DeWI6Rh+Koinu7lh4hsbFWFpJZitvmB3kFMesYBOGqYGV3R5fCZhZRDupaX4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB8811 X-Proofpoint-GUID: qWPXatxaSCtsH7SvEWFlCAIzNM_3dJ4- X-Authority-Analysis: v=2.4 cv=M6BA6iws c=1 sm=1 tr=0 ts=69690eac cx=c_pps a=+Bba5nuaRI/XgWxKvljhhQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=iqUPcmWXN_vvxTOgPeMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDEyMSBTYWx0ZWRfX3bCpJsOPjA4w 8NRugQceLrkqHClYT3RyAraQhUpMiv3QXjCGpDTCHq0r5jLQwwgEAL+85Qwl6fx1s3iBxqqKxbC w+nKZSnfhTG7UTa54+qXX/iKL20+yYVOYMekC2Exriw3EIRu+g0gRb8igLShOujVDaqItaxmTAW kPIfgYYfNULQZTLwwnRqhap5NrTtoVwIbO/5QdQw4JMZRIiELg0D8tneKqRiR41qovlWvGdernk hSDoybJrfIWgmw3Qa8Ykt2T83m9CIxTBZzdjF73tNkWDBdPPMyDwrz+2ZqYmEtHXLd0ooyfrkuV KYsIBukN7+ZEus/mh9vcuD51IFZ9/7RCvazgluwZWjc/u7Jerygzyw3QuWMJcGV8MYmsoyrPvfo Y4CxxjKIE31wlsy9nl22wvGMBoze6+W2uNweQODrv43YWBEr5hFBmiOiIo2AXV32TN9FnDlb3me Wmxz97TlOhEAfzMC8Fg== X-Proofpoint-ORIG-GUID: qWPXatxaSCtsH7SvEWFlCAIzNM_3dJ4- 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=2026-01-15_05,2026-01-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 priorityscore=1501 clxscore=1015 lowpriorityscore=0 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150121 A number of CPC features, like retransmission or remote's receive window, are cport-based. In order to prepare for these features, introduce a CPC CPort context structure. The CPC Host Device module now implements cport_allocate and cport_release callbacks in order to allocate and release these structures when requested by Greybus module. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/Makefile | 2 +- drivers/greybus/cpc/cpc.h | 29 ++++++++++ drivers/greybus/cpc/cport.c | 37 ++++++++++++ drivers/greybus/cpc/host.c | 109 ++++++++++++++++++++++++++++++++++- drivers/greybus/cpc/host.h | 12 ++++ 5 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 drivers/greybus/cpc/cpc.h create mode 100644 drivers/greybus/cpc/cport.c diff --git a/drivers/greybus/cpc/Makefile b/drivers/greybus/cpc/Makefile index 490982a0ff5..3d50f8c5473 100644 --- a/drivers/greybus/cpc/Makefile +++ b/drivers/greybus/cpc/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 =20 -gb-cpc-y :=3D host.o +gb-cpc-y :=3D cport.o host.o =20 # CPC core obj-$(CONFIG_GREYBUS_CPC) +=3D gb-cpc.o diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h new file mode 100644 index 00000000000..3915a7fbc4f --- /dev/null +++ b/drivers/greybus/cpc/cpc.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#ifndef __CPC_H +#define __CPC_H + +#include +#include +#include + +/** + * struct cpc_cport - CPC cport + * @id: cport ID + * @cpc_hd: pointer to the CPC host device this cport belongs to + */ +struct cpc_cport { + u16 id; + + struct cpc_host_device *cpc_hd; +}; + +struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask); +void cpc_cport_release(struct cpc_cport *cport); + +int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask); + +#endif diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c new file mode 100644 index 00000000000..88bdb2f8182 --- /dev/null +++ b/drivers/greybus/cpc/cport.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include "cpc.h" +#include "host.h" + +/** + * cpc_cport_alloc() - Allocate and initialize CPC cport. + * @cport_id: cport ID. + * @gfp_mask: GFP mask for allocation. + * + * Return: Pointer to allocated and initialized cpc_cport, or NULL on fail= ure. + */ +struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask) +{ + struct cpc_cport *cport; + + cport =3D kzalloc(sizeof(*cport), gfp_mask); + if (!cport) + return NULL; + + cport->id =3D cport_id; + + return cport; +} + +void cpc_cport_release(struct cpc_cport *cport) +{ + kfree(cport); +} + +int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask) +{ + return cport->cpc_hd->driver->message_send(cport->cpc_hd, cport->id, mess= age, gfp_mask); +} diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 80516517ff6..98566ce7755 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -7,6 +7,7 @@ #include #include =20 +#include "cpc.h" #include "host.h" =20 static struct cpc_host_device *gb_hd_to_cpc_hd(struct gb_host_device *hd) @@ -14,12 +15,95 @@ static struct cpc_host_device *gb_hd_to_cpc_hd(struct g= b_host_device *hd) return (struct cpc_host_device *)&hd->hd_priv; } =20 +static struct cpc_cport *cpc_hd_get_cport(struct cpc_host_device *cpc_hd, = u16 cport_id) +{ + struct cpc_cport *cport; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + cport =3D cpc_hd->cports[i]; + if (cport && cport->id =3D=3D cport_id) + goto unlock; + } + + cport =3D NULL; + +unlock: + mutex_unlock(&cpc_hd->lock); + + return cport; +} + +static int cpc_hd_message_send(struct cpc_host_device *cpc_hd, u16 cport_i= d, + struct gb_message *message, gfp_t gfp_mask) +{ + struct cpc_cport *cport; + + cport =3D cpc_hd_get_cport(cpc_hd, cport_id); + if (!cport) { + dev_err(cpc_hd_dev(cpc_hd), "message_send: cport %u not found\n", cport_= id); + return -EINVAL; + } + + return cpc_cport_message_send(cport, message, gfp_mask); +} + +static int cpc_hd_cport_allocate(struct cpc_host_device *cpc_hd, int cport= _id, unsigned long flags) +{ + struct cpc_cport *cport; + int ret; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + if (cpc_hd->cports[i] !=3D NULL) + continue; + + if (cport_id < 0) + cport_id =3D i; + + cport =3D cpc_cport_alloc(cport_id, GFP_KERNEL); + if (!cport) { + ret =3D -ENOMEM; + goto unlock; + } + + cport->cpc_hd =3D cpc_hd; + + cpc_hd->cports[i] =3D cport; + ret =3D cport_id; + goto unlock; + } + + ret =3D -ENOSPC; +unlock: + mutex_unlock(&cpc_hd->lock); + + return ret; +} + +static void cpc_hd_cport_release(struct cpc_host_device *cpc_hd, u16 cport= _id) +{ + struct cpc_cport *cport; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + cport =3D cpc_hd->cports[i]; + + if (cport && cport->id =3D=3D cport_id) { + cpc_cport_release(cport); + cpc_hd->cports[i] =3D NULL; + break; + } + } + mutex_unlock(&cpc_hd->lock); +} + static int cpc_gb_message_send(struct gb_host_device *gb_hd, u16 cport_id, struct gb_message *message, gfp_t gfp_mask) { struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); =20 - return cpc_hd->driver->message_send(cpc_hd, cport_id, message, gfp_mask); + return cpc_hd_message_send(cpc_hd, cport_id, message, gfp_mask); } =20 static void cpc_gb_message_cancel(struct gb_message *message) @@ -27,12 +111,33 @@ static void cpc_gb_message_cancel(struct gb_message *m= essage) /* Not implemented */ } =20 +static int cpc_gb_cport_allocate(struct gb_host_device *gb_hd, int cport_i= d, unsigned long flags) +{ + struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); + + return cpc_hd_cport_allocate(cpc_hd, cport_id, flags); +} + +static void cpc_gb_cport_release(struct gb_host_device *gb_hd, u16 cport_i= d) +{ + struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); + + return cpc_hd_cport_release(cpc_hd, cport_id); +} + static struct gb_hd_driver cpc_gb_driver =3D { .hd_priv_size =3D sizeof(struct cpc_host_device), .message_send =3D cpc_gb_message_send, .message_cancel =3D cpc_gb_message_cancel, + .cport_allocate =3D cpc_gb_cport_allocate, + .cport_release =3D cpc_gb_cport_release, }; =20 +static void cpc_hd_init(struct cpc_host_device *cpc_hd) +{ + mutex_init(&cpc_hd->lock); +} + struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent) { struct cpc_host_device *cpc_hd; @@ -51,6 +156,8 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_driv= er *driver, struct devic cpc_hd->gb_hd =3D hd; cpc_hd->driver =3D driver; =20 + cpc_hd_init(cpc_hd); + return cpc_hd; } EXPORT_SYMBOL_GPL(cpc_hd_create); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index f55feb303f4..c3f2f56a939 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -8,11 +8,13 @@ =20 #include #include +#include #include =20 #define GB_CPC_MSG_SIZE_MAX 4096 #define GB_CPC_NUM_CPORTS 8 =20 +struct cpc_cport; struct cpc_host_device; =20 struct cpc_hd_driver { @@ -25,12 +27,22 @@ struct cpc_hd_driver { * struct cpc_host_device - CPC host device. * @gb_hd: pointer to Greybus Host Device this device belongs to. * @driver: driver operations. + * @lock: mutex to synchronize access to cport array. + * @cports: array of cport pointers allocated by Greybus core. */ struct cpc_host_device { struct gb_host_device *gb_hd; const struct cpc_hd_driver *driver; + + struct mutex lock; /* Synchronize access to cports */ + struct cpc_cport *cports[GB_CPC_NUM_CPORTS]; }; =20 +static inline struct device *cpc_hd_dev(struct cpc_host_device *cpc_hd) +{ + return &cpc_hd->gb_hd->dev; +} + struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent); int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); --=20 2.52.0