From nobody Mon Sep 28 20:09:07 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11023141.outbound.protection.outlook.com [40.93.196.141]) (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 A4E152EEE8C; Tue, 18 Aug 2026 03:34:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.141 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024060; cv=fail; b=Su6OO0qKA1TTPqlNboBUQdnqoUzyD/rocMBE9C8c57cpF5GSBYDpP6DOj2Lf7G6asDbylyJX344RxQw46pAZszn378GfX0SKYtpnWE9LXUY93JOeFU/rkRXwKNg1q/nLL4MIbLiz0aBMV62FQg0xcUWT7FDuUxdPPiYFj7CRs/c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024060; c=relaxed/simple; bh=o9Gjyy0quPrEm6diMfo36DhltfBfMh0cJKJcjazo7T8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p3FrTEtE0Wv+YnajmNnQFB3aQJJjnN/SGhFJo4ZnG7BPKnIST38tosyyPQkLU9iwk6/vaNRdRphkWvzd17c6Smiko283a3Frkco6I1AryLsUj23iH0xgXydA5hh/vWW0LNNdbBNSoocXpVgSQmvVOGI6Rlxw5MjjvoP/lcHUCkQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com; spf=pass smtp.mailfrom=axiado.com; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b=QXj9YC5C; arc=fail smtp.client-ip=40.93.196.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axiado.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b="QXj9YC5C" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nYi+t7De5GSxsI78rTdeJI9sHY2uCyHXZMa0WPeT+EKnzwnuPfr5XSW26qa7haywSO5i8n7rp9Bsg6DnmCmSK/f1aXvUhko94YjJbKjrzKU0ukC7y77z3OZdfEYr99k3hBzCBUogRgkWcsYQoyYUsgv/h16Iz3KDIZpOCVhmodcqixi6uegXn4w+VrHTjMscGsEAUcf0m1Keh5fdNLSssgMH1hTjYW8SBkIR5eMc8M3GHgrt1wHOgyHEflKrGEE/2FGMrur8co3OGbWEci3gkAhzywPYlE8dsnHZkis/13EsXkbe6XBKK0VAKmAzAFgObOB78wK4LRmx7KjxLPnX/Q== 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=Dze1ngDGVreinW3wGpSZQaO+R56ZxjpGd0XL8vasJNs=; b=YwQ1IxNCxh4IxuDPcmDFvwrppDwgQ1efqwml/xIUmu3oFAKXipQIHlQuB4bk1xswA+4CVCeNTcOB3OstLDzpvJnGu6lcj0BGYNB2PmKTu3BxdES3SQq3cdR1KxFLbRCAmGIVjTjPl8vrQ+7ato9J7NVyKsbCzHPhVpFj1sUeMoJC0HW56jxUm9xu7eiGL24D2YqB0aqBKjmK9EWZ1NsCLGqms5cGMLu302blleYSt55Twsji0BxESpy9g7qn/qHS5h3DAjEdVnUHwfPAvN8eciGPrem2Hw6lxGkMZkJM9dYTIufiNOiRrNo5drXnqyqc4CfkyI+rBvdSui7T6dEPDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Dze1ngDGVreinW3wGpSZQaO+R56ZxjpGd0XL8vasJNs=; b=QXj9YC5CqaNzVOpcR5kjhCgLXUikr7H+nMe8yGvmjRL+XeU4fkUxlsWdidDk8lkGv10FFEPbdMpc5xABbe8v3EQGe8aMyIUqHdHyfJdfGUOm2MqNHE0wio0kfWGe8abi90AcD23MFJnq3uuseo8gNu+VSJEh4D0bZQCX5SBBGIImpiDw506Yenj05UdsVD35G0DsFSgxIH6MhERLRQiu658vMfX3s7/awiqo8Eaaql4GaS4fK61QnRuoxDIAgPv5XhRpi7B+fBzGW8I6skPbQR+jxHAHa1Vsik3H7ooCCra/0+J2J3kkpEUBPBmxSRgLle6SZYecM/rUdXjYDtlTfg== Received: from MN0PR05CA0022.namprd05.prod.outlook.com (2603:10b6:208:52c::22) by DS4PR18MB988372.namprd18.prod.outlook.com (2603:10b6:8:34a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 03:34:14 +0000 Received: from BL6PEPF0001AB74.namprd02.prod.outlook.com (2603:10b6:208:52c:cafe::7a) by MN0PR05CA0022.outlook.office365.com (2603:10b6:208:52c::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.8 via Frontend Transport; Tue, 18 Aug 2026 03:34:14 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.com; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; Received: from smtp.corp.axiado.com (64.62.143.114) by BL6PEPF0001AB74.mail.protection.outlook.com (10.167.242.167) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 03:34:14 +0000 Received: from axz-uw1-build-vm02.corp.axiado.com (unknown [10.14.1.22]) by smtp.corp.axiado.com (Postfix) with ESMTPS id 47C5B4186B5D; Mon, 17 Aug 2026 20:34:13 -0700 (PDT) From: Swark Yang Date: Mon, 17 Aug 2026 20:34:07 -0700 Subject: [PATCH v2 1/2] dt-bindings: mailbox: add Axiado AX3005 mailbox Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-1-25e713eccff3@axiado.com> References: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-0-25e713eccff3@axiado.com> In-Reply-To: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-0-25e713eccff3@axiado.com> To: Krishnakumar Kesavan , Prasad Bolisetty , Jassi Brar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Tzu-Hao Wei , Karthikeyan Mitran Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, openbmc@lists.ozlabs.org, Swark Yang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4431; i=syang@axiado.com; h=from:subject:message-id; bh=o9Gjyy0quPrEm6diMfo36DhltfBfMh0cJKJcjazo7T8=; b=owGbwMvMwCHWlWK8+EozbyzjabUkhqzmS1vU5RofJmdcS34/L3z+2+iU+DKWxa9UlU4eWxCsN Ukr+b1ZRykLgxgHg6yYIstXnW/5J3O173XuXVkKM4eVCWQIAxenAEwkcxLDP9ul3hofNP7Pzyy5 zbz9VeGD4xLy3LY2/Mma9f0eibetHRj+6WwIDZXeU1xXx251Najju9Tlm75Nhhy1AfcX1s1I3/W KBwA= X-Developer-Key: i=syang@axiado.com; a=openpgp; fpr=F52CF66FC96D2BDE89BDA9758A6433A3D4830D5D X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB74:EE_|DS4PR18MB988372:EE_ X-MS-Office365-Filtering-Correlation-Id: 137143ca-7619-489c-a0d3-08defcd9935d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|1800799024|376014|82310400026|23010399003|13003099007|6133799003|3023799007|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: E4HSysl3H+U7AzEXeWNE5YHAGskklthl/uCQ6Qztpwyy4RlHm/ekvoBuw+ZwkmNe5C6kjMKbZ+iW1sTpjWCeK7AFCn9JMM6EBNys8yXm24EYjyAP1GKTQ6bXH3e2B3h1vrD2EOSbU1aGPYrtupYFnzTkSqOK0Qfi/XkkDa6SjZC4ytRsLfkoTIbl4aCOrjOlwCQp+ABT7lSVp9Aec65At2Mwaifx1Vhxa3ci6IWmbQme1awbpJD6xrxfKOIcJ+BfgMmakGNxLKd19m2CICIl7Ntu14Bs8FcXoRSizuZjt1X2RNEvMvNEavxUo/+BWoeBH20YDTqEvRsL8hdhPaOhh5u8whnkNfRjzEmy3ANnm0A1lEK4IU94wiSICmOrw8uz4RlY3cgX1GvwHhUeh6DhM9iU4viF1ofnAym/SDb0W060GF2Cq8bRE8N06oH8OPQiVUPfPGCQged8WQSo3HJlaRIlunU0bbPWG/zNOCYpcP6Tv14ClT2iF/8H2cClxYdevvdhHqcaBjnBBBBjeAyX0VXy1DCOgUlr10oFm0eqVmaP44gfLOujBpXEnViR5LAmkWZa/gBAwDoEqxinb25rKQREKh9dW14ina2XlGb3dI7RAREI3VDPJjHCBsmZcxDl62ZZU7dJuHSnF+sFSlbozg== X-Forefront-Antispam-Report: CIP:64.62.143.114;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:smtp.corp.axiado.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(376014)(82310400026)(23010399003)(13003099007)(6133799003)(3023799007)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ATjHgeU3d0UH9TjFx/MyqT2NU4myNVA72zgeJ23Q9KB9vQrka1a0l3GSXLsrWmGQY/xEyvZGavmEAvKUjbU6L/rG2okLhV6PNbF9mAIQ9+694tf/jnsvR5B072PMBcfDDHxynl3BgSYHWVG9h+W2eXAK9CCefSTAzFHxcm/F2QkkN3NEyRAvcVztJnULDqefiYssgEGHM0Y6HqHZFek2QxQII02U5nAXQtH/TZ7MZt+nechmpqdP5o+/dw70sUB/MJuzfkXK2SfQuEoLw90WCMIUB7XW7HlrUD5d11lAt4oMcYi6ARtmmKzC+enDZ8lzTlpI0T9TEdVNhIiUr2+vncRAJc7D/inl9kcVhMZVRQSr0u0gzzyU//5NoZG01qqCHSQ/sjq5QjXBo1z4xExdOblm5CxJ0ooaDUP+d0U8JVW0WSdQtKm4YCoPS7X1zOHV X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 03:34:14.1908 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 137143ca-7619-489c-a0d3-08defcd9935d X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7;Ip=[64.62.143.114];Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB74.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR18MB988372 Add a devicetree binding for the Axiado AX3005 mailbox controller. The controller provides inter-processor communication channels between the host CPU and the coprocessor, with separate TX and RX register regions. Add the corresponding MAINTAINERS entry covering the binding. Signed-off-by: Swark Yang Reviewed-by: Krzysztof Kozlowski --- .../bindings/mailbox/axiado,ax3005-mailbox.yaml | 96 ++++++++++++++++++= ++++ MAINTAINERS | 7 ++ 2 files changed, 103 insertions(+) diff --git a/Documentation/devicetree/bindings/mailbox/axiado,ax3005-mailbo= x.yaml b/Documentation/devicetree/bindings/mailbox/axiado,ax3005-mailbox.ya= ml new file mode 100644 index 000000000000..82bf7d1848c9 --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/axiado,ax3005-mailbox.yaml @@ -0,0 +1,96 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mailbox/axiado,ax3005-mailbox.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Axiado AX3005 Mailbox Controller + +maintainers: + - Krishnakumar Kesavan + - Prasad Bolisetty + - Swark Yang + +description: + The Axiado mailbox controller provides inter-processor communication + channels between subsystems within the Axiado SoC. The hardware has + separate TX and RX register regions. Only the RX channels (channels 8-15) + generate interrupts; TX channels are purely poll/write-based. + +properties: + compatible: + const: axiado,ax3005-mailbox + + reg: + items: + - description: TX mailbox register region + - description: RX mailbox register region + + reg-names: + items: + - const: tx + - const: rx + + interrupts: + description: + One interrupt per RX channel. The hardware exposes eight RX interrupt + lines corresponding to channels 8 through 15. + maxItems: 8 + + interrupt-names: + description: + Named interrupt lines for each RX channel, from ch8 to ch15. + items: + - const: ch8 + - const: ch9 + - const: ch10 + - const: ch11 + - const: ch12 + - const: ch13 + - const: ch14 + - const: ch15 + + "#mbox-cells": + description: + Number of cells in a mailbox specifier. A single cell encodes the + channel index as seen by the client. + const: 1 + +required: + - compatible + - reg + - reg-names + - interrupts + - interrupt-names + - "#mbox-cells" + +additionalProperties: false + +examples: + - | + #include + + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + mailbox@330f2000 { + compatible =3D "axiado,ax3005-mailbox"; + reg =3D <0x0 0x330f2000 0x0 0x2000>, + <0x0 0x331b0000 0x0 0x1000>; + reg-names =3D "tx", "rx"; + /* Only RX channels (8-15) have IRQs */ + interrupts =3D , + , + , + , + , + , + , + ; + interrupt-names =3D "ch8", "ch9", "ch10", "ch11", + "ch12", "ch13", "ch14", "ch15"; + interrupt-parent =3D <&gic500>; + #mbox-cells =3D <1>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index a674e36529f7..af6c3571c9f2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4437,6 +4437,13 @@ F: Documentation/devicetree/bindings/phy/axiado,ax30= 00-emmc-phy.yaml F: drivers/phy/axiado/Kconfig F: drivers/phy/axiado/phy-axiado-emmc.c =20 +AXIADO MAILBOX DRIVER +M: Krishnakumar Kesavan +M: Prasad Bolisetty +M: Swark Yang +S: Supported +F: Documentation/devicetree/bindings/mailbox/axiado,ax3005-mailbox.yaml + AXI SPI ENGINE M: Michael Hennerich M: Nuno S=C3=A1 --=20 2.34.1 From nobody Mon Sep 28 20:09:07 2026 Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11021124.outbound.protection.outlook.com [52.101.57.124]) (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 C82E23CB2DC; Tue, 18 Aug 2026 03:34:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.57.124 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024062; cv=fail; b=fkqOyGnt1N3gZW2RIfcEDxi9o1vqNr80UWIXz6jCBpdQyBwZnEeGcJTAhvmScbtaioVUF1In6SDoJAOY3RkYTwb5XznIQHoGTmBbpxcoNeRI0JtsrMU+5Lhff2AMGKvBz7qS5kBl1phyGvOlrblJjmEvfWbBR2KRxp/4tol+K40= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787024062; c=relaxed/simple; bh=zBM3hKSuVqpzgeK9PV+FInK6q07NIPR2S8rP9pE4f1E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A0zqMLYzgaPwhWuFzREdtflaROsbKZKYM5mGxHKsNEIodMtqhnk86z3OJC7y/VvZ/kMA3ETmdjRI4jVuNORV9hCJDa1+gtJuTGWM2vbN6jIX+GP2LEJm04JDW2hXWKEq57DmiYi6FawBHZKuwl/mNAHr7QELVRTr9f/ca6vgTZA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com; spf=pass smtp.mailfrom=axiado.com; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b=qqtA+qEG; arc=fail smtp.client-ip=52.101.57.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axiado.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b="qqtA+qEG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QQprYtlcpqIwF0FSyaCzJ2lxyqjeGZcQJVXxVY0OtxJyzGvoikAbRWdIUyao2+/7Uv0ZM9XeWeDmXe8aDTslwpOc6AnzZInxk4evIvmC4Zkev9st1IrK5TskmO80EExB1iRy2fc9yggtjQ7skXt1olaTzNYMBXBOzuV+Kz4IcTofVyJLsLw8v7PHMGEj3WPgth3N9jvdonOzbkL364cw5j5SiV2LaVi/MF0gF1dag4DL5/t9fj/m5m9ge1K9i/tl3xX7xzlorVkh4tj+ADhOOan6ao0U9B/+R5hNJDNa+TPipprGRjnEqeDeIgY9/V/XWyk4T2gsM+JusTxjQgx2Kg== 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=Gq6yqqcZKc0uXDMf9Mkywd3g1kzFUuFs6VHpLtUJKnc=; b=gPQQDgBgFOvBuSxRpjHlR5aosKuKtApQW60NKBvDBc0ZHN1RZjyqhD1mWlKWWkm454mrMlKp67UnKqg39c9tLVzjQjeGxRHz2t0zLTiBq5d23bVjXUJzmUKfYhXbVVUwiMQi3et90ek05w+thAmAUCnWoh/r21XuK0dxr74kjPNOcE2ZmqM3mVVsPgqlsbONZvjAoU3Z4Ht7I5ooHY1rpCmNxmecVVGJQqvT6T2UiE5N+Yck/UxV7ihCFqEtwBVjHl8oXCnZUM7cxkVGJ/tdzeSAT7/gW/YdOYXu7mbtG/vEKwUgCpPtDwkX0IGfLqmNaVc1ZcZXygPteFtDh3JzWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gq6yqqcZKc0uXDMf9Mkywd3g1kzFUuFs6VHpLtUJKnc=; b=qqtA+qEGGd///6hp4ZT/7KQfdCQUQrJuYcViWVrLUGW4GsvI74D26QCrxrWalfQzMuK0NgeA9w2Bi9Tf3HGJDTI2PbSRHkrr7Na+az5VnZN5Y6UUtq2qablbnKxLoq/uKEd445jsZWuITZj2NzRBt9kNW83aX1/2m7sy8qpAV0BS3BlAGhNGE7SkXu5g51cqxZYtK3KUXxDGn8aT03+xhQY9amDZBGQ3CzB9cbKxX6vULhStSO0UUgn4QpCULBYCB6ENQ/dgsHtxMofFYl0NUeRdr6MdS+pU0d1yeLECK1c9+Arn/LHf3wr0lJ3JhnNixVm4i1FK88/aiHn0aBUO4w== Received: from BL1P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::6) by IA2PR18MB5885.namprd18.prod.outlook.com (2603:10b6:208:4af::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 03:34:15 +0000 Received: from BL6PEPF0001AB78.namprd02.prod.outlook.com (2603:10b6:208:2c5:cafe::57) by BL1P221CA0012.outlook.office365.com (2603:10b6:208:2c5::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.315.17 via Frontend Transport; Tue, 18 Aug 2026 03:34:14 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.com; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; Received: from smtp.corp.axiado.com (64.62.143.114) by BL6PEPF0001AB78.mail.protection.outlook.com (10.167.242.171) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 03:34:14 +0000 Received: from axz-uw1-build-vm02.corp.axiado.com (unknown [10.14.1.22]) by smtp.corp.axiado.com (Postfix) with ESMTPS id 8632640BFE04; Mon, 17 Aug 2026 20:34:13 -0700 (PDT) From: Swark Yang Date: Mon, 17 Aug 2026 20:34:08 -0700 Subject: [PATCH v2 2/2] mailbox: add Axiado AX3005 mailbox driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-2-25e713eccff3@axiado.com> References: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-0-25e713eccff3@axiado.com> In-Reply-To: <20260817-upstream-axiado-ax3005-mailbox-upstream-v2-0-25e713eccff3@axiado.com> To: Krishnakumar Kesavan , Prasad Bolisetty , Jassi Brar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Tzu-Hao Wei , Karthikeyan Mitran Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, openbmc@lists.ozlabs.org, Swark Yang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=13816; i=syang@axiado.com; h=from:subject:message-id; bh=zBM3hKSuVqpzgeK9PV+FInK6q07NIPR2S8rP9pE4f1E=; b=owGbwMvMwCHWlWK8+EozbyzjabUkhqzmS1ui8nhZ0p2S5q57IqbH/Vc17nvKrvqvhuvW5Ap/L LVt8pjYUcrCIMbBICumyPJV51v+yVzte517V5bCzGFlAhnCwMUpABM56c/wz1b6dWXozwuqLb/v HU3iP2VXGvlqgeE0vhqlm0YHT/ULlDEy3PC/H3V10ezNPTIWnWdrL0037hZ+flS/VnWy+TWXCb7 8fAA= X-Developer-Key: i=syang@axiado.com; a=openpgp; fpr=F52CF66FC96D2BDE89BDA9758A6433A3D4830D5D X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB78:EE_|IA2PR18MB5885:EE_ X-MS-Office365-Filtering-Correlation-Id: 06ce6a25-a94f-4479-efff-08defcd993b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|23010399003|376014|1800799024|82310400026|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: YQIkVbVecWHZTqAWBoNR4Ix0dzzZsBJHh39xAVYYQJ+EAWgHWJALMzjXwf6g3Ch83w1hX+GBaUKChjvvRozuuOPoTANZPu/8/rkfUmV6yztLKhtHlwMFqqWh/SwQWIVmNf8NjbayuBp/t9zvOHtA9aFiAvemM3roUfbR1aWE4hv4G5usymeO8HknIWiKg5J/JqlfELYpE6PP7Z0I3/F3qDQHZ0eLYqj3lnBAkXrvP5Ax0tNCxu3b/xjwCavy5WUcKqsgyo+mOTbaiNFNeQrCpn3RI3HQ7U4SNcUaOnG//Ks8g8b04feRZTThfahmNP/Si/JGue87I/e9dZEmnBzuOcDEw5j69stN5ugK7T3lsWI2lmXV/xxeyTHvP+TYABjiqoMiwguYIppWZolt4Nlj7UlPqgWzKfSczIdAImVj9E5qIHxWuPik1Ic0P4QNoJSesh4O248yu/cRnQPcnC2A6+CB1cm5xVx59gtyYy11wq7ctKlz695pFOY5+sV2PdMtTxD2AkrvmnFu4cVJoM4YWf68fy6q86feB9S4wwvJOrqtQL2rezv/cvCkUZ3Yws15BPk83FekIYzH5yJUKMw6xudt00GkDG0obQzzocxlXCujfidAENshfwnEjXNUSpV1KAqaJxRQjuPFyBaAkx2oBNTxWhuCRMZM8o0idbHfAY5d562nTWixNYvJQhC1gUSdbdK5jyDvDJd1Rsj0FknvcA== X-Forefront-Antispam-Report: CIP:64.62.143.114;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:smtp.corp.axiado.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(23010399003)(376014)(1800799024)(82310400026)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qV49t8RXYduu/PKS9ndcSg0/h8+3l+dHZawgkXuM3kS+FDtOoK64rK1uv6mAF9GmSZGV94gE2iK1FodT2ZZnrvYqBXZ627qd55LyXPt0CPStczw1bQq4oNSGAMJeDX/qqXMoJkxz41CP3GuFkCD8Fk4CPsvpzKL0195RuvUwdJM0T8i9ig7SQyPuPxX0cIN0nhevePMrmvI/UxEMftsyR8YLCrdAr82GS4dJXH6yOZwHQmtoDplqsnKo5wNP5B9ZOkWIZrTdIRas4UlKieFo1utXS4gxj/jjcWfo7tBbS5AEaVlx8nqVURWZMRyWg3K3i+mc0IC3g0PDnMP6bRKxfj64tisgHPRQVlSnABb03ItdZFM52n7U3JK7XBgjlZ3GvIWtRDV52qeYHnuRp7/yYKfSiPEwU0IG6kwxaL/554HJi5dtYSz52849V8CZNsE9 X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 03:34:14.7830 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06ce6a25-a94f-4479-efff-08defcd993b7 X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7;Ip=[64.62.143.114];Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB78.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA2PR18MB5885 Add a mailbox controller driver for the Axiado AX3005 SoC. The controller provides communication channels between the host CPU and the coprocessor. The hardware provides 8 TX channels and 8 RX channels through separate register regions. RX channels use per-channel interrupts, while TX completion is detected by polling the FIFO status. Add the driver path to the existing Axiado mailbox entry in MAINTAINERS. Signed-off-by: Swark Yang --- MAINTAINERS | 1 + drivers/mailbox/Kconfig | 10 + drivers/mailbox/Makefile | 2 + drivers/mailbox/axiado-mailbox.c | 395 +++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 408 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index af6c3571c9f2..80db69111889 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4443,6 +4443,7 @@ M: Prasad Bolisetty M: Swark Yang S: Supported F: Documentation/devicetree/bindings/mailbox/axiado,ax3005-mailbox.yaml +F: drivers/mailbox/axiado-mailbox.c =20 AXI SPI ENGINE M: Michael Hennerich diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig index 3062ee352f78..ab869769e278 100644 --- a/drivers/mailbox/Kconfig +++ b/drivers/mailbox/Kconfig @@ -399,4 +399,14 @@ config RISCV_SBI_MPXY_MBOX or HS-mode hypervisor). Say Y here, unless you are sure you do not need this. =20 +config AXIADO_MAILBOX + tristate "Axiado mailbox driver" + depends on ARCH_AXIADO || COMPILE_TEST + depends on OF + help + Enable support for the Axiado mailbox controller. The driver provides + communication channels between the host CPU and the coprocessor on + Axiado SoCs. + If unsure, say N. + endif diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile index 944d8ea39f34..45dc59bb3e7f 100644 --- a/drivers/mailbox/Makefile +++ b/drivers/mailbox/Makefile @@ -84,3 +84,5 @@ obj-$(CONFIG_CIX_MBOX) +=3D cix-mailbox.o obj-$(CONFIG_BCM74110_MAILBOX) +=3D bcm74110-mailbox.o =20 obj-$(CONFIG_RISCV_SBI_MPXY_MBOX) +=3D riscv-sbi-mpxy-mbox.o + +obj-$(CONFIG_AXIADO_MAILBOX) +=3D axiado-mailbox.o diff --git a/drivers/mailbox/axiado-mailbox.c b/drivers/mailbox/axiado-mail= box.c new file mode 100644 index 000000000000..3a3cf7421863 --- /dev/null +++ b/drivers/mailbox/axiado-mailbox.c @@ -0,0 +1,395 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2021-2026 Axiado Corporation (or its affiliates). + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AXIADO_MBOX_TX_CHANS 8 /* 0-7 */ +#define AXIADO_MBOX_RX_CHANS 8 /* 8-15 */ +#define AXIADO_MBOX_CHAN_STRIDE 0x4 +#define AXIADO_MBOX_TX_REG_STRIDE 0x40 +#define AXIADO_MBOX_RX_REG_STRIDE 0x30 +#define AXIADO_MBOX_RX_POLL_US 10 +#define AXIADO_MBOX_RX_TIMEOUT_US 1000 + +/* Mailbox CSR bit definitions */ +#define AXIADO_MBOX_CSR_EMPTY BIT(0) /* 1 =3D FIFO empty; 0 =3D data avai= lable */ +#define AXIADO_MBOX_CSR_OVERFLOW BIT(2) /* write 1 to clear (W1C) */ +#define AXIADO_MBOX_CSR_UNDERFLOW BIT(3) /* write 1 to clear (W1C) */ +#define AXIADO_MBOX_CSR_FLUSH BIT(4) /* W1TRG flush; startup/shutdown */ +#define AXIADO_MBOX_CSR_LEVEL GENMASK(11, 5) + +#define AXIADO_MBOX_CSR_ERRORS (AXIADO_MBOX_CSR_OVERFLOW | \ + AXIADO_MBOX_CSR_UNDERFLOW) + +struct axiado_mbox_data { + u8 num_chans; + u16 msg_size; +}; + +struct axiado_channel_data { + void __iomem *mbox_reg; + void __iomem *csr_reg; + void *rx_buffer; + u8 channel_num; + int irq; + struct mbox_chan *chan; + bool active; + atomic_t fifo_errors; +}; + +/* mailbox side */ +struct axiado_mbox { + struct mbox_controller mbox; + const struct axiado_mbox_data *drv_data; + void __iomem *tx_base; + void __iomem *rx_base; + struct dentry *debugfs_dir; +}; + +/* + * Checks OVERFLOW/UNDERFLOW, logs and W1C-clears them if set. Shared by t= he + * TX and RX paths; RX additionally flushes the FIFO afterwards to resync + * framing, which TX must not do since it could discard data the peer has + * not read yet. + */ +static bool axiado_mbox_clear_fifo_errors(struct axiado_channel_data *priv) +{ + struct device *dev =3D priv->chan->mbox->dev; + u32 errors; + + errors =3D readl(priv->csr_reg) & AXIADO_MBOX_CSR_ERRORS; + if (!errors) + return false; + + writel(errors, priv->csr_reg); + atomic_inc(&priv->fifo_errors); + + dev_warn_ratelimited(dev, "Channel %u FIFO error: %#x\n", + priv->channel_num, errors); + + return true; +} + +static int axiado_mbox_send_data(struct mbox_chan *chan, void *data) +{ + struct axiado_mbox *mb =3D dev_get_drvdata(chan->mbox->dev); + struct axiado_channel_data *priv =3D chan->con_priv; + unsigned int idx =3D priv->channel_num; + u8 tail[sizeof(u32)] =3D { 0 }; + const u8 *buf =3D data; + unsigned int tail_len; + unsigned int offset; + u32 msg_len; + + if (!data) + return -EINVAL; + + /* + * The Axiado mailbox message ABI stores the total message length, + * including this length word, as a little-endian byte count in the + * first word of every message. + */ + msg_len =3D get_unaligned_le32(data); + if (msg_len < sizeof(u32) || msg_len > mb->drv_data->msg_size) + return -EINVAL; + + /* Only touch the hardware after validating the message. */ + axiado_mbox_clear_fifo_errors(priv); + + if (!(readl(priv->csr_reg) & AXIADO_MBOX_CSR_EMPTY)) { + dev_warn_ratelimited(mb->mbox.dev, "Channel %u is busy\n", idx); + return -EBUSY; + } + + for (offset =3D 0; offset + sizeof(u32) <=3D msg_len; + offset +=3D sizeof(u32)) + writel(get_unaligned_le32(buf + offset), priv->mbox_reg); + + tail_len =3D msg_len - offset; + if (tail_len) { + memcpy(tail, buf + offset, tail_len); + writel(get_unaligned_le32(tail), priv->mbox_reg); + } + + dev_dbg(mb->mbox.dev, "%s: Ch-%u sent\n", __func__, idx); + + return 0; +} + +static irqreturn_t axiado_rx_thread(int irq, void *dev_id) +{ + struct axiado_channel_data *priv =3D dev_id; + struct mbox_chan *chan =3D priv->chan; + struct axiado_mbox *mb =3D dev_get_drvdata(chan->mbox->dev); + u8 *buf =3D priv->rx_buffer; + unsigned int num_words; + unsigned int remaining; + unsigned int i; + u32 msg_len; + u32 word; + u32 csr; + int ret; + + /* + * Clear and log/count any pending errors, but don't discard data + * on their account alone: a rejected overflow write doesn't + * corrupt what was already safely queued ahead of it, so let the + * length-based read below decide whether what's here is usable. + */ + axiado_mbox_clear_fifo_errors(priv); + + csr =3D readl(priv->csr_reg); + if (csr & AXIADO_MBOX_CSR_EMPTY) + return IRQ_NONE; + + /* + * The first word contains the total message length in bytes, + * including the length word itself. + */ + word =3D readl(priv->mbox_reg); + msg_len =3D word; + put_unaligned_le32(word, buf); + + if (msg_len < sizeof(u32) || msg_len > mb->drv_data->msg_size) + goto invalid_message; + + num_words =3D DIV_ROUND_UP(msg_len, sizeof(u32)); + remaining =3D num_words - 1; + + /* + * The not-empty interrupt may occur as soon as the first DW enters + * the FIFO. Wait until all remaining DWs of this message arrive. + */ + if (remaining) { + ret =3D readl_poll_timeout(priv->csr_reg, csr, + (csr & AXIADO_MBOX_CSR_ERRORS) || + FIELD_GET(AXIADO_MBOX_CSR_LEVEL, csr) >=3D + remaining, + AXIADO_MBOX_RX_POLL_US, + AXIADO_MBOX_RX_TIMEOUT_US); + if (ret) + goto incomplete_message; + + axiado_mbox_clear_fifo_errors(priv); + } + + for (i =3D 1; i < num_words; i++) { + word =3D readl(priv->mbox_reg); + put_unaligned_le32(word, buf + i * sizeof(u32)); + } + + axiado_mbox_clear_fifo_errors(priv); + + if (READ_ONCE(priv->active)) + mbox_chan_received_data(chan, priv->rx_buffer); + + return IRQ_HANDLED; + +incomplete_message: + dev_warn_ratelimited(chan->mbox->dev, + "Channel %u received an incomplete message\n", + priv->channel_num); + +invalid_message: + writel(AXIADO_MBOX_CSR_FLUSH, priv->csr_reg); + + return IRQ_HANDLED; +} + +static int axiado_mbox_startup(struct mbox_chan *chan) +{ + struct axiado_channel_data *priv =3D chan->con_priv; + + /* + * Only flush on a genuine error. A blind flush here would discard + * a message the peer legitimately sent before this side started + * up (e.g. during normal boot sequencing), which is not corrupt + * and does not need resyncing. + */ + if (axiado_mbox_clear_fifo_errors(priv)) + writel(AXIADO_MBOX_CSR_FLUSH, priv->csr_reg); + + WRITE_ONCE(priv->active, true); + + if (priv->channel_num >=3D AXIADO_MBOX_TX_CHANS) + enable_irq(priv->irq); + + return 0; +} + +static void axiado_mbox_shutdown(struct mbox_chan *chan) +{ + struct axiado_channel_data *priv =3D chan->con_priv; + + WRITE_ONCE(priv->active, false); + + if (priv->channel_num >=3D AXIADO_MBOX_TX_CHANS) + disable_irq(priv->irq); + + if (axiado_mbox_clear_fifo_errors(priv)) + writel(AXIADO_MBOX_CSR_FLUSH, priv->csr_reg); +} + +static bool axiado_mbox_last_tx_done(struct mbox_chan *chan) +{ + struct axiado_channel_data *priv =3D chan->con_priv; + + return !!(readl(priv->csr_reg) & AXIADO_MBOX_CSR_EMPTY); +} + +static const struct mbox_chan_ops axiado_mbox_chan_ops =3D { + .send_data =3D axiado_mbox_send_data, + .startup =3D axiado_mbox_startup, + .shutdown =3D axiado_mbox_shutdown, + .last_tx_done =3D axiado_mbox_last_tx_done, +}; + +static void axiado_mbox_debugfs_remove(void *dentry) +{ + debugfs_remove_recursive(dentry); +} + +static int axiado_mbox_probe(struct platform_device *pdev) +{ + const struct axiado_mbox_data *drv_data; + struct axiado_channel_data *ch_data; + struct device *dev =3D &pdev->dev; + struct axiado_mbox *mb; + unsigned int irq_idx =3D 0; + unsigned int rx_chan; + unsigned int i; + int ret; + + drv_data =3D device_get_match_data(dev); + if (!drv_data) + return -ENODEV; + + mb =3D devm_kzalloc(dev, sizeof(*mb), GFP_KERNEL); + if (!mb) + return -ENOMEM; + + mb->mbox.dev =3D dev; + mb->mbox.num_chans =3D drv_data->num_chans; + + mb->mbox.chans =3D devm_kcalloc(&pdev->dev, + drv_data->num_chans, + sizeof(*mb->mbox.chans), + GFP_KERNEL); + if (!mb->mbox.chans) + return -ENOMEM; + + mb->tx_base =3D devm_platform_ioremap_resource_byname(pdev, "tx"); + if (IS_ERR(mb->tx_base)) + return PTR_ERR(mb->tx_base); + + mb->rx_base =3D devm_platform_ioremap_resource_byname(pdev, "rx"); + if (IS_ERR(mb->rx_base)) + return PTR_ERR(mb->rx_base); + + ch_data =3D devm_kcalloc(&pdev->dev, + drv_data->num_chans, + sizeof(*ch_data), + GFP_KERNEL); + if (!ch_data) + return -ENOMEM; + + mb->debugfs_dir =3D debugfs_create_dir(dev_name(dev), NULL); + ret =3D devm_add_action_or_reset(dev, axiado_mbox_debugfs_remove, + mb->debugfs_dir); + if (ret) + return ret; + + for (i =3D 0; i < drv_data->num_chans; i++) { + char name[16]; + + ch_data[i].channel_num =3D i; + ch_data[i].chan =3D &mb->mbox.chans[i]; + + mb->mbox.chans[i].con_priv =3D &ch_data[i]; + + snprintf(name, sizeof(name), "chan%u-errors", i); + debugfs_create_atomic_t(name, 0444, mb->debugfs_dir, + &ch_data[i].fifo_errors); + + if (i < AXIADO_MBOX_TX_CHANS) { + ch_data[i].mbox_reg =3D mb->tx_base + (i * AXIADO_MBOX_CHAN_STRIDE); + ch_data[i].csr_reg =3D mb->tx_base + AXIADO_MBOX_TX_REG_STRIDE + + (i * AXIADO_MBOX_CHAN_STRIDE); + ch_data[i].irq =3D -1; + continue; + } + + ch_data[i].rx_buffer =3D devm_kzalloc(dev, drv_data->msg_size, + GFP_KERNEL); + if (!ch_data[i].rx_buffer) + return -ENOMEM; + + rx_chan =3D i - AXIADO_MBOX_TX_CHANS; + ch_data[i].mbox_reg =3D mb->rx_base + + (rx_chan * AXIADO_MBOX_CHAN_STRIDE); + ch_data[i].csr_reg =3D mb->rx_base + AXIADO_MBOX_RX_REG_STRIDE + + (rx_chan * AXIADO_MBOX_CHAN_STRIDE); + ch_data[i].irq =3D platform_get_irq(pdev, irq_idx++); + if (ch_data[i].irq < 0) + return dev_err_probe(dev, ch_data[i].irq, + "Failed to get IRQ for channel %u\n", i); + + ret =3D devm_request_threaded_irq(dev, ch_data[i].irq, NULL, + axiado_rx_thread, + IRQF_ONESHOT | IRQF_NO_AUTOEN, + dev_name(dev), &ch_data[i]); + if (ret) + return dev_err_probe(dev, ret, + "Failed to request IRQ for channel %u\n", i); + + dev_dbg(dev, "RX chan %u -> irq %d\n", i, ch_data[i].irq); + } + + platform_set_drvdata(pdev, mb); + mb->drv_data =3D drv_data; + mb->mbox.ops =3D &axiado_mbox_chan_ops; + mb->mbox.txdone_irq =3D false; + mb->mbox.txdone_poll =3D true; + mb->mbox.txpoll_period =3D 5; + + return devm_mbox_controller_register(dev, &mb->mbox); +} + +static const struct axiado_mbox_data axiado_drv_data =3D { + .num_chans =3D AXIADO_MBOX_TX_CHANS + AXIADO_MBOX_RX_CHANS, + .msg_size =3D 256, +}; + +static const struct of_device_id axiado_mbox_of_match[] =3D { + { .compatible =3D "axiado,ax3005-mailbox", .data =3D &axiado_drv_data }, + { } +}; +MODULE_DEVICE_TABLE(of, axiado_mbox_of_match); + +static struct platform_driver axiado_mbox_driver =3D { + .driver =3D { + .name =3D "axiado-mailbox", + .of_match_table =3D axiado_mbox_of_match, + }, + .probe =3D axiado_mbox_probe, +}; +module_platform_driver(axiado_mbox_driver); + +MODULE_AUTHOR("Axiado Corporation"); +MODULE_DESCRIPTION("Axiado Mailbox driver"); +MODULE_LICENSE("GPL"); --=20 2.34.1