From nobody Sat Feb 14 01:56:16 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 DB6D11FBC8C for ; Thu, 12 Feb 2026 15:19:49 +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=1770909592; cv=fail; b=eZemtUoqxckcd7eavdLVsuJ8coeLsPCAkDJxOKafaWjuKtHOb/RtHtryGp5pLD4RtTJuNHawBUs7Fv5DaiQS7rsVZLfsNxC90lmZ0hPTQD55K+x7tggGQzpmgw2orSxLK1vVQTtaeSEMMW4JVcXNuSql3ojJw7f0of5HkHIo02g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770909592; c=relaxed/simple; bh=SQQyBvdyQTtGyoBZ1NHjYrtUKzQdpbxIlg9aVCmBQ8o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ElDA9dACk9jVbn2uQQcDlgbD7/I/nn0gePB3UzmfGYcqd8NNuljJbS92L6mrt1xNUVtLoug8CP4i9qzbqjsnTI/Z2tFGuNon2rPyoKgNIMUiryP2s4FBJZBgexT7fcUFosUY0KKab2/cffCGOTiaLgcD+Se4HkaNVRSzgb12yOg= 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=qf1RdvWP; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=aY+MYgRd; 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="qf1RdvWP"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="aY+MYgRd" 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 61BMnYg2335638; Thu, 12 Feb 2026 08:44:10 -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=L7+uT8wzOBTyTAxDy6uZQafjiGnecSFVP9VgFtsAYvw=; b=qf1RdvWP1yol 3ceA1QlmMwIE7KNiUxIV7iaquQW7PffAWciDyBftEP3Rx8GHjAU3iJMXjtJhzMyC LVqn+BFgCQ0FXQK0ylXYGkOZftezqmvCs8QX9mqdnXbQxB8rQuvDiPmo3fap/eZg Yz3eRwQbjYMZ/dbBIoUYE6/Y6ML8AQRgh6o5vQw8YQ6bCLiF9H8Xd1mLLuMKAiMd MntOXRg2LBWd9rZmQ7DCrBPCkOtBGKuABECRnFknTlRrwScC6iuogTiS5tovGEun RBazDVAkCsPswIUO8sG2M+BX7yvrPd8RPmA7bH59yNfSob9iI5d1udUWPyd/Jh0v mxbk2tItHQ== Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020136.outbound.protection.outlook.com [52.101.201.136]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4c92w8sk2e-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Thu, 12 Feb 2026 08:44:09 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LDnts7vjS03XgluIPfmzAVmMXa0HLLx9Qr55IPf9Fi909eqWCKCUB0Wo0VOvPZlCQ9ZN7JeTfprcV9EhTiOOu64Ki7hJd27wnk6SU7Ghj4gHZVqcLutXCSevUiHlu/ZhM05xGOlL9oRnX44BDBJqyZFO6gCF1qUeCgAPa9eiZL6KSt8xOGhbAEbdI1xUSwRPmRcHOEp/wAVNmcgxSAAaOxWM460haYNd9dB9sbNNbGTP1FEVwj3Ki0lS9ogNBa2DEKX86H59LSCvppJACnekBO/wDepm7Ota8aALzEymupaGPc0dSTFlITm4qZ9+USFqlu1zgO49W+qt53B5jw9gRA== 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=L7+uT8wzOBTyTAxDy6uZQafjiGnecSFVP9VgFtsAYvw=; b=szxMQfD5pqfk3gx22Od5IihH/benFO2mxZuT5rVDzvcHqbHXoUsBuCkkt9BhgwPBGYJwlRaxtPEjFMK07nGQoSj3H0TD8zo0XYD+Nvkueepe10ADcM6cZxzKt2ajb8r8ysuPf6oY/t4dC1WOnr73w6PFVkege/sMpXAhnDit90kEycYvXb/r3e2oM49ELCszQ8Ks82Z8YpDRVWe4sbc/nWxlbHEk/l///qwYXAfzLQHM+V5EmmF/uq/73CdzGnAmi48EZb2eggwfUO0lwIZ3T4xeSNdd/ZKRCuBKvm8gaRaEWsEV1RqmV4XDSpBZgKxRnQZgVCS0J15OclQY2KU7hg== 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=L7+uT8wzOBTyTAxDy6uZQafjiGnecSFVP9VgFtsAYvw=; b=aY+MYgRd+HQdWuvb30PB5EnUH8cnODxHb4vinS8bLH4dsijhPSyT7jqO/zNAbT1suCZ/ZJadgLuyeWnGfzd4XmOrUdTv5x5TfkCkG1lUlQF2MYbA0HskwGW1Jo2U0aU5l7WSaiDRjmDK0gyirUvEpNB700r2WZsky7HGrBvjAzE= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CY8PR11MB7082.namprd11.prod.outlook.com (2603:10b6:930:52::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.13; Thu, 12 Feb 2026 14:44:05 +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.9611.008; Thu, 12 Feb 2026 14:44:05 +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 v3 01/14] greybus: cpc: add minimal CPC Host Device infrastructure Date: Thu, 12 Feb 2026 09:43:39 -0500 Message-ID: <20260212144352.93043-2-damien.riegel@silabs.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212144352.93043-1-damien.riegel@silabs.com> References: <20260212144352.93043-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YQBPR0101CA0124.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:5::27) 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_|CY8PR11MB7082:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f918272-f5cb-4192-f1b9-08de6a452bbf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Qk96MG10OUErejQwVXkvSFc0dE52YTQyaU0wOG53NHVRVkc5RmVHNFhYUmVY?= =?utf-8?B?czYxOVZmNTBxRTJxNHh2NW52a2s2UkNTYksvMHdLUEZjaU1DWkx0UGZPZkkx?= =?utf-8?B?ZnJvdWhIV2dMbktxclZpSWRhaWN2dnU3TmdCY2lSVi83Z0cwT09wcEkyM25k?= =?utf-8?B?c29XaGplRUFyUVB6QzRjK2tROXFaVUN6YU5pTkFkdkc1RUFRMENxMmgrTmNE?= =?utf-8?B?MHZJeXQvYkcyWWZVVHZrUTVYL0d4ZW5WZVk5VVJsWGMwMlVVZ04yZzlGM2Jy?= =?utf-8?B?VE5nL3dNMnZJb2IvNnlZNjdXMElTZjNQeFdrU202WFVOalVWUGhPczVFUEVM?= =?utf-8?B?N3lHWUZZVjVnWlNOOWpONjEwT3FYWldBemx4T0N1cXExOStrNCtjeVdMSEhZ?= =?utf-8?B?RlN6N0lyN0NRN0pUb0VHZGxvOUdwckVzUEE4aEl1dWF4dXovOTRjeGErdmht?= =?utf-8?B?Wks4YnZqRUpCVS9BdHN5MXk1bHh5SWphZnluNk9iRVQ1TmJ4eTdqWWdDL3VR?= =?utf-8?B?cVRNdHYxMGdtVUp2bVlOMjV0TGNVN2dQK2pQalY1RjVqRHFMbGNDQlQ3ZkFT?= =?utf-8?B?YXZYT1RQRkU2amZSemk1TFhEckpZYTNTRzZhdEhHdzhMY3VVRis2V1RmeVFI?= =?utf-8?B?Qi9OUUM2MzFKUGlmLzFxbnVUeThuVlNrd0NadUl6Z00xOStqQldlV0tHSWt3?= =?utf-8?B?L1ZaMTMzblJ5eUc2aGd2OHBaR3QyVFpnWkl0anN1SDBFa1ZzMzNsWTVjNk5V?= =?utf-8?B?b1FCS2FQVm1ZMEdaUWFmZXdXMFhKM2ZxdzcxRDJPbXFiTkdjOFZrWlJhbFhM?= =?utf-8?B?UkRYWFZBaVdCRXBXcVhQczk3WDFXemhnMFlDd3J6dDBJbzlOQnNpZDRGK1JH?= =?utf-8?B?VnBLeGMzaWlMZ3l3TUtHUzh4bit6bnQ4UHZHSTNyR0NpTmpoblVuQjllS0lu?= =?utf-8?B?b0kxNTErQ0x4S0R2akJCc0xnYys1QTMrb05BQnNhS0dhazZCcklCSlBBMVdD?= =?utf-8?B?QkhjNThNRHJiN0JmVmg0aHJyQ3FxNy9HNjZiVzRDOHhtMWRucnhQRzl5RDBn?= =?utf-8?B?QTlaYUVPdTErVVh1ZHY3eTNkWjh2aEk0QVJ2MFNqSEdVbENoaWNmRkY0aVpB?= =?utf-8?B?dGRGVzk2OTMvOVdPTUkvN0ltMHRxNXNTQXRZMmYxN2lRUDFnbzRtblo1N3I1?= =?utf-8?B?SGxBNlFiWW9jQzFpdVp6US9DZ2JtYlc5Q0FxbmY2Wk0vNmphM3ZCK1o0cnNV?= =?utf-8?B?d1RRSEptT0poMlAvdGNyL3RtaUtTZjE5MCs1ZFUvcHl2WVVSY01oV0JsTjJX?= =?utf-8?B?cHQrR0ExdTBSeFBEQjBFSG9xVmhxN3hUVC9qVWN1bzY1WG9NQnlwODEyTXVT?= =?utf-8?B?V1h6aTZ6aGxaVXpnd2gvNnpYT0czdVpmTG5qcjdkKzkyZkFxSXNxUE9ZcHAy?= =?utf-8?B?UmNmR05sVWZKTnFDRTQrWlhaaGtJSldmeEJIYWRoOTc4SFYxYUdlZHFMNjlt?= =?utf-8?B?ZU5SdDd1clU1ampuZ1hnLzZXbmp1NWc5Q09oVkNZUDhsalpiNEJwTXUzZVEy?= =?utf-8?B?ZjBqU2hPZGdqWXpLeTdpdE51eVh5MnNnQm1WaHJSelZnaURPcGRmYlRlK3U5?= =?utf-8?B?MERNVG5GdWRoWkd1QVJxK1dyQk1kYmc1cGNOK1hNZTkvQjBLVW51Vjh3YWlW?= =?utf-8?B?cGtSVzdncmR1ZnBjVWE5ZWt6Y0loRUt2Tzc5Ym5sSHhPU3lsaXlEamVuYXZv?= =?utf-8?B?bVJ3YjQ3YjgzZ2ljTlZWMFNUcUtYQkN1SkpWRElzUzgxT2JMQ3hJWXJIb2lI?= =?utf-8?B?SWFsejJsQTZUbndEZFRlU2k4NWlNeTN1TkhnUHN3T25zeUFFY3ozdW1HTmI1?= =?utf-8?B?YmMramRCUEVHc2YrVy9xVU45V1NLYzM5TnVnNkJZa0FUdms5RncycnQyL3lQ?= =?utf-8?B?N1Z2cmJWNVZLWkdNRHNhRlhJM2t4VERLODBEdEFsYW5DVHJVeEd0NFlNT0FT?= =?utf-8?B?dldJbmp1aWtMNGtOUkd4emxJTmZsZ1VLSS85MElaSWE3ZzFWZnpid095YmRp?= =?utf-8?B?SkJhNFBQUkVsOElxN2xPMWdqWWtDM2xoWE9HL0VUYmRZSzNiMFFPeTNkT1Rt?= =?utf-8?B?WUVNNUQ2enViRHJjeHhkSitSU1JScGMyZnpPQTFtOTdrMHlPMWIwYTZ3TCtv?= =?utf-8?Q?eguNl31UAP3OEmufdAWR6PQ=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)(366016)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VXZWYmlLRjVySW5zd095NUV1YWVGRDlyTU8yc1NIZlBaMnNNWjBEdjhBajV0?= =?utf-8?B?NDNBdlJCaEFkNmdPbzFsWjMzeUpDVFFybkxoaHp3NnJhaEdCVFJqQmxsclFM?= =?utf-8?B?KzRqeGJZLzFWRFMxTlJoanNCOGNWWkJwOVhtMUdMOSswRy9ZUmhNKzdMdjJD?= =?utf-8?B?Yy90MTVTQVlMaU9OQzZYSGRYcWFVVEFFQ0VzUG1VZmFvMzFNVlJweG9meHp5?= =?utf-8?B?OVNka3E2YS9Ia3FyQTFybVdrbTVRY0ZiMHJqeklJZHdBTFZUWUNRSDFyQjZs?= =?utf-8?B?MHlXVjlJL0tHVkU0YjV1eDdLZ0p2aEtqNnVJRi9SMW15elQwWmdyMkQ1VnJP?= =?utf-8?B?MklES3B3ditPQnFNc3ZOM3VHM3ZwVEhnbWpiYmxRa2VTdXZ3OVFiVWgxeTdZ?= =?utf-8?B?WDlHcGMyVXNFSmw1em1pMXdsRzRPbGFVc1poR2x4ZEU4TE90NEUwOVlLWFRT?= =?utf-8?B?cy9YRmhUcHk3RDBmMUQ4RkMwcjBWNEdjMnpTMWoreFRna0pxdEI3VTdWRXV2?= =?utf-8?B?MWZHaS84aVlwRGNIMnM0dnN6WE9uVk5kNDhVbVBXTEtPODV4Nkdld3FyYk40?= =?utf-8?B?ay92cjJFVDFsL20ySnlqU2NVbUE0a1c4enlhNUpnMzlXQWJCdFk4NHVMNjZK?= =?utf-8?B?ZVZDdUo4QXNhazI4TFl4Qkx6REtnMkY0V1A4WG16SnBvc1h6OVFuc3hrWHRN?= =?utf-8?B?VVBxKy9iMmxYNENQck9rQmNyaFRpckJoSVQyYzB2a1hCcC9HNGN5RmZ3cWJB?= =?utf-8?B?ZndlQ3ZXT2U3YWY0aC9sczV4Nkpic29lT3ZOd0xlajlHcmo2M08vS0dtOGxT?= =?utf-8?B?LzR0VjJONkFnMUxieXkvMFVZYVQ5OVpqTmpkd2M4bFpqWVNOQ1hHRGFxSXc4?= =?utf-8?B?d2lObVIxUTV4VWtnVk9YemlldGZpNnp6eERkRTVNZ1ptc1VkS1lnbml1Q0ti?= =?utf-8?B?QlI0MHNDZlE2eEswbkNMTmJSckhRdmpmUmNIVStNQ3NzazN3c2NtVkh5b25O?= =?utf-8?B?OHU1L0R2Vjk4eForUC94V014djJzOEUxbnpTbGRWdnl1REU3K21JanlSdFVZ?= =?utf-8?B?eXR1VGxyaEc0dkpuQ0J5enNJWEtYWFhaTm9QMHBqSFJGUE10R1UzT1UyZ3BE?= =?utf-8?B?WmNlZXErb3pnOTNMaThNTWk0YkozUUM3RHp1cFdTZ0FXV2x3SDlpNzlrWTN6?= =?utf-8?B?NWV3bjE3VmI5ODA1MWpwWE9TbjNzWi9GWkl6RUpqeDNFRWMveUU5WDZPamFV?= =?utf-8?B?aXEyU1VGYWlURjlLbDZqOUttVWszbUNKcU0yT0ZEQUozK3R0dHQrZHVRNWVY?= =?utf-8?B?RW1nTnM3SlNreHd0RjQ4a2hZaUQySURxT214UzVNZnFrby9ldnc3bVNzQTIw?= =?utf-8?B?V2pCTVJHdTc5WE9WNnpjZjAwekRYaFVBMmcvd1M3RHpLeVpVMmw5bExVKzdh?= =?utf-8?B?S3N2S0wxWGJOZ3JabVBYdFhRNURtZTZQS2dXSmZhYnFjNEtjS1JNWmZ3VExH?= =?utf-8?B?bExINktIc21hTWtvUVRVRDk3Qk5TZ1hPS1RVV2JiNnpFSVBqTjVxVmZOVVBM?= =?utf-8?B?TFcwT2ZjeVdadWk0S1p0blVEaEowVFZnMUtTZDhqclVkZE9KTXJ0bEwyMWp5?= =?utf-8?B?cUlhVVovZUVUWHEveW1YSFNPcWxMMUFsZUVnVWJrUkduenk0QmNsZloyTndJ?= =?utf-8?B?RHdkbnNUM1lRK1UvNHVRek9UR0dDSDJsRlZIZEhRRDZycFpYMXBPVkFzNDhy?= =?utf-8?B?eCtZNjFJREVZVGMzQk44QmZ6eTltbWVWTTFzSHV1Q2puQktDc3ZMQk9heHNp?= =?utf-8?B?SGxOL1M1MzdGREgxSFRFRmhUd0FlZE0zSVB0Ylh6VjBCNk9iRFlHa2pxL2o3?= =?utf-8?B?eGtkRnhVNkhzaHg2MldDazZFMWJPTE9SQjZOZS9JNDBadkY5LzJLMUdadEVL?= =?utf-8?B?c21FT0h1SGhlSFIyY1hOWno5VEZqa3J0QU1adDBSbmxNZCtQVFY4QlVKRnc5?= =?utf-8?B?WG4xMUJCdnduaHIzWEFxV1ZmTjkzejQ5bHNHWURkRXluRzk0RHdyKzROQmd4?= =?utf-8?B?d2JFOHJQZG9wbmE1eEhSQ0hlTXVPcnk1emU0MXFiNWVYRmwzc2ZSbHV1c1VP?= =?utf-8?B?eXkzREVqN2s3UytKUHdPSUlqTDRJOFJKVG83QzJnYVFwNjFiWEFtQzhkbU5y?= =?utf-8?B?TUhrTy9DZDNXZmV4VVI1VWNtK3VNQzhDejFvQmZXSTd5azNwSzRiQ2k4eXNT?= =?utf-8?B?K3hYQUs2Zlc2NGhSMXJodFFXeUpobnpPSllJMVJkaGNZemVLR1E1NGFqUTg5?= =?utf-8?B?MUVWdnRKb1VydG4xaXFxMnlpS2xPdU85T0twaXZCZXZpSWxOcjhHUT09?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f918272-f5cb-4192-f1b9-08de6a452bbf X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2026 14:44:05.4586 (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: FcpxhJrRrhX+soSKAM3507PdkwE/eLpfzVJaAwUqMicD4T/9RsGc9FuecWeaJ2Tq5gdE3F0gGqxa1QtD8V5iBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB7082 X-Authority-Analysis: v=2.4 cv=Ne3rFmD4 c=1 sm=1 tr=0 ts=698de739 cx=c_pps a=SjKxu3n00dGHhKqS4WZ18w==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=NEAV23lmAAAA:8 a=2AEO0YjSAAAA:8 a=VwQbUJbxAAAA:8 a=XnNIu7v9ea53sXSEXX8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjEyMDExMSBTYWx0ZWRfX8y06EKQDKe01 F0MB0R5n9AOzpUiDuVi6DhOMdy7cMNyBAdnGR7tCw/ihOodwRNXiOxEDDUJnKVkM0gybZkvsclV QE400XXmisxOfK/ywc+1iS9ZxGwp0SvTRTI/VcLUiRtGSYsQ4zeYyT84jIKOU+FVuCN6g5jh11e 6EQ7VcL0Pj1/dDJEyfzr+PVQdABRom44ZUdoBhFP2sZh5a2lde5MjX/BXnO5uYuJ9N0Z9NYja1u gCiyQWEVkTerwt/cJacDPau0Qr8Xz2bBYELpnfk6dBuLvKuNhc7FIv5kK6s3d5V6Sr0aXWh9ujs pV3gtiP3mJ5q4932m9Rf8NmqM7VsjqgDCiX2HTTyPW3p7WAVfrw3v7kLknIxrsyzlMX7edLzMut OzcFU5SxXH9H8HlGAONi/Igc6frpuHsVXwYlhR48K6CV6iE54JVX3mbeca3j2BAXQq5bEQgNzD/ SdXetxWaPooRCs3P/Ow== X-Proofpoint-ORIG-GUID: jO2WIsoMhvj-uyLC5IwMzbpzUdRtqr4G X-Proofpoint-GUID: jO2WIsoMhvj-uyLC5IwMzbpzUdRtqr4G X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-12_04,2026-02-12_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 clxscore=1015 spamscore=0 phishscore=0 malwarescore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602120111 CPC stands for Co-Processor Communication and currently exists as a userspace daemon [1]. It enables multiple applications running on a coprocessor to share a single physical link to a Linux host. CPC userspace and kernel implementations differ, as the kernel implementation relies on Greybus. So even though both share the "CPC" name, they are not the same protocol and are not intended to be compatible with each other. Kernel integration is intended to superseed the userspace daemon. The point of the kernel integration is gain access to more physical links, like SDIO, and eventually add Greybus drivers that integrate into kernel stacks like Wi-Fi and Bluetooth. The first step to add CPC support with Greybus is to add a very minimal module for CPC Host Devices. For now, this module only proxies calls to the Greybus Host Device API and does nothing useful, but further commits will use this base to build upon. [1] https://github.com/SiliconLabs/cpc-daemon Signed-off-by: Damien Ri=C3=A9gel --- Changes in v3: - rewrite commit message and Kconfig help message to better explain what CPC is MAINTAINERS | 6 +++ drivers/greybus/Kconfig | 2 + drivers/greybus/Makefile | 2 + drivers/greybus/cpc/Kconfig | 12 ++++++ drivers/greybus/cpc/Makefile | 6 +++ drivers/greybus/cpc/host.c | 84 ++++++++++++++++++++++++++++++++++++ drivers/greybus/cpc/host.h | 40 +++++++++++++++++ 7 files changed, 152 insertions(+) create mode 100644 drivers/greybus/cpc/Kconfig create mode 100644 drivers/greybus/cpc/Makefile create mode 100644 drivers/greybus/cpc/host.c create mode 100644 drivers/greybus/cpc/host.h diff --git a/MAINTAINERS b/MAINTAINERS index 6d1de82e6dc..56daf9ec310 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10774,6 +10774,12 @@ S: Maintained F: Documentation/devicetree/bindings/net/ti,cc1352p7.yaml F: drivers/greybus/gb-beagleplay.c =20 +GREYBUS CPC DRIVERS +M: Damien Ri=C3=A9gel +R: Silicon Labs Kernel Team +S: Supported +F: drivers/greybus/cpc/* + GREYBUS SUBSYSTEM M: Johan Hovold M: Alex Elder diff --git a/drivers/greybus/Kconfig b/drivers/greybus/Kconfig index c3f056d28b0..565a0fdcb2c 100644 --- a/drivers/greybus/Kconfig +++ b/drivers/greybus/Kconfig @@ -30,6 +30,8 @@ config GREYBUS_BEAGLEPLAY To compile this code as a module, chose M here: the module will be called gb-beagleplay.ko =20 +source "drivers/greybus/cpc/Kconfig" + config GREYBUS_ES2 tristate "Greybus ES3 USB host controller" depends on USB diff --git a/drivers/greybus/Makefile b/drivers/greybus/Makefile index d986e94f889..92fe1d62691 100644 --- a/drivers/greybus/Makefile +++ b/drivers/greybus/Makefile @@ -21,6 +21,8 @@ ccflags-y +=3D -I$(src) obj-$(CONFIG_GREYBUS_BEAGLEPLAY) +=3D gb-beagleplay.o =20 # Greybus Host controller drivers +obj-$(CONFIG_GREYBUS_CPC) +=3D cpc/ + gb-es2-y :=3D es2.o =20 obj-$(CONFIG_GREYBUS_ES2) +=3D gb-es2.o diff --git a/drivers/greybus/cpc/Kconfig b/drivers/greybus/cpc/Kconfig new file mode 100644 index 00000000000..0e72383381a --- /dev/null +++ b/drivers/greybus/cpc/Kconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 + +config GREYBUS_CPC + tristate "Greybus CPC driver" + help + CPC (Co-Processor Communication) is a protocol for sharing a single + physical link to a coprocessor between multiple users. CPC adds + checksumming, retransmissions and flow control to Greybus to transmit + messages as reliably as possible. + + To compile this code as a module, chose M here: the module will be + called gb-cpc.ko diff --git a/drivers/greybus/cpc/Makefile b/drivers/greybus/cpc/Makefile new file mode 100644 index 00000000000..490982a0ff5 --- /dev/null +++ b/drivers/greybus/cpc/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 + +gb-cpc-y :=3D host.o + +# CPC core +obj-$(CONFIG_GREYBUS_CPC) +=3D gb-cpc.o diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c new file mode 100644 index 00000000000..80516517ff6 --- /dev/null +++ b/drivers/greybus/cpc/host.c @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include +#include +#include + +#include "host.h" + +static struct cpc_host_device *gb_hd_to_cpc_hd(struct gb_host_device *hd) +{ + return (struct cpc_host_device *)&hd->hd_priv; +} + +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); + + return cpc_hd->driver->message_send(cpc_hd, cport_id, message, gfp_mask); +} + +static void cpc_gb_message_cancel(struct gb_message *message) +{ + /* Not implemented */ +} + +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, +}; + +struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent) +{ + struct cpc_host_device *cpc_hd; + struct gb_host_device *hd; + + if ((!driver->message_send) || (!driver->message_cancel)) { + dev_err(parent, "missing mandatory callbacks\n"); + return ERR_PTR(-EINVAL); + } + + hd =3D gb_hd_create(&cpc_gb_driver, parent, GB_CPC_MSG_SIZE_MAX, GB_CPC_N= UM_CPORTS); + if (IS_ERR(hd)) + return (struct cpc_host_device *)hd; + + cpc_hd =3D gb_hd_to_cpc_hd(hd); + cpc_hd->gb_hd =3D hd; + cpc_hd->driver =3D driver; + + return cpc_hd; +} +EXPORT_SYMBOL_GPL(cpc_hd_create); + +int cpc_hd_add(struct cpc_host_device *cpc_hd) +{ + return gb_hd_add(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_add); + +void cpc_hd_put(struct cpc_host_device *cpc_hd) +{ + return gb_hd_put(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_put); + +void cpc_hd_del(struct cpc_host_device *cpc_hd) +{ + return gb_hd_del(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_del); + +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length) +{ + greybus_data_rcvd(cpc_hd->gb_hd, cport_id, data, length); +} +EXPORT_SYMBOL_GPL(cpc_hd_rcvd); + +MODULE_DESCRIPTION("Greybus over CPC"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Silicon Laboratories, Inc."); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h new file mode 100644 index 00000000000..f55feb303f4 --- /dev/null +++ b/drivers/greybus/cpc/host.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#ifndef __CPC_HOST_H +#define __CPC_HOST_H + +#include +#include +#include + +#define GB_CPC_MSG_SIZE_MAX 4096 +#define GB_CPC_NUM_CPORTS 8 + +struct cpc_host_device; + +struct cpc_hd_driver { + int (*message_send)(struct cpc_host_device *hd, u16 dest_cport_id, + struct gb_message *message, gfp_t gfp_mask); + void (*message_cancel)(struct gb_message *message); +}; + +/** + * struct cpc_host_device - CPC host device. + * @gb_hd: pointer to Greybus Host Device this device belongs to. + * @driver: driver operations. + */ +struct cpc_host_device { + struct gb_host_device *gb_hd; + const struct cpc_hd_driver *driver; +}; + +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); +void cpc_hd_del(struct cpc_host_device *cpc_hd); +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length); + +#endif --=20 2.52.0