From nobody Sun Feb 8 21:21:05 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 6B57626A1D9; Mon, 28 Apr 2025 12:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844066; cv=pass; b=TQddwd7RaA/zIm/dCE3C7L4Ba/X72jNBrKxhRFIXrZRBQ0y1zrvVf384fTCRyI9/30ZeNenYTYzsO30yu9g5W7EPRslhU/YfBGh18zES8opL0TppRn9qdEdMXbDGvkiVl6PhtyhAWhMjenYfHGps8phVvpJnos6lKiZZXDvw5ww= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844066; c=relaxed/simple; bh=eSH7pS3FqLeb/xI1kI+WUB9NAL3n9INVvbjzDwSBPiI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HiJQbODP3GwzFCHO+NdiQf3O+X1wUSf0vqn+XWUqGfDJBU4zj9ZliyBhgu2KPHsXKEa52SY3qXHpmuEcUCXvA9zCu1GmU0ZfKGo2z9iXFu/dFPJjtXfU0CGbPQrRyrDKGyRpK2ZHX6owfA+jUN7LbxtE8Cnp+N6wXKsAKhdnzfU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech; spf=pass smtp.mailfrom=pigmoral.tech; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b=SnHOqb+/; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b="SnHOqb+/" ARC-Seal: i=1; a=rsa-sha256; t=1745844037; cv=none; d=zohomail.com; s=zohoarc; b=ZjM0TOUpNTykAB6wBsRGLN2vQF4yfdVWZFejune0aN3IL77cTaTBsJanG/i+laETEck45ko6AqSfn/6kzB+EgliXcZMJIlNLyWeCqoD7O1fgTOxQlo8aA9zSfDhMppa5WTev+Mlw682Da4VOC8XKvL+fxWegOGOvBneROABjP1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745844037; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Vz+mwteOFVjUBYLK3kyTIENC2iJR9nyaEx8k9A7nLhQ=; b=CUmaoaRwSYXmneuzXX5KcMWjNKjHVT9Ajce7zG8MA1fhysQTTeH+g1W0t88xaPKomtpv4tgJSwtSw3ljrlFt1tRrpqEBdgZOoOccpIWwP6at2tag/67pCDaXNEtWe3oJiCSVx8UcOGupcNgGJljjap/g77NNVlX+lliktckQw8M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=pigmoral.tech; spf=pass smtp.mailfrom=junhui.liu@pigmoral.tech; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1745844037; s=zmail; d=pigmoral.tech; i=junhui.liu@pigmoral.tech; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=Vz+mwteOFVjUBYLK3kyTIENC2iJR9nyaEx8k9A7nLhQ=; b=SnHOqb+/DAiMhJz32Q8ynPBqAgC8lEYIAhe1+3qobi0h+UHHF9s8jddSfLHW9S4Q DxVfb/vVBfwFY+Qrb3vPGyBuTM2kbPxzATaOTm1HH/bxM0k7z6/GHzR5XZZGBwRjv9d LBVihE7weVkug/C1NMHwKX+msHYah1VkNc/2wkBU= Received: by mx.zohomail.com with SMTPS id 1745844036201935.8658413655802; Mon, 28 Apr 2025 05:40:36 -0700 (PDT) From: Junhui Liu Date: Mon, 28 Apr 2025 20:39:44 +0800 Subject: [PATCH v3 1/3] dt-bindings: mailbox: add Sophgo CV18XX series SoC 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: <20250428-cv18xx-mbox-v3-1-ed18dfd836d1@pigmoral.tech> References: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> In-Reply-To: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> To: Jassi Brar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Yuntao Dai , Junhui Liu , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, sophgo@lists.linux.dev, linux-riscv@lists.infradead.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745844011; l=2280; i=junhui.liu@pigmoral.tech; s=20250223; h=from:subject:message-id; bh=GsQbGKXKdavpmDUrRnVbgYgEwew9+AxTW4ckB/Jl3mU=; b=3n01u+mVvRti/CmYdllpkIIVaqbqsVAwzv9s/Od2O5EfPdjFXThao1F5VKh4qAZuxNiDwkNh2 IphQg6T3f0oAc/qhqMoDYercpFB4jx4RlYRu32tu3etkwO5Gr4Vx9wI X-Developer-Key: i=junhui.liu@pigmoral.tech; a=ed25519; pk=ZRZkOjG47iI+To+oAo2R4KIpMwtz8r0TffJ5/nO2tcg= X-ZohoMailClient: External From: Yuntao Dai Introduce the mailbox module for CV18XX series SoC, which is responsible for interchanging messages between asymmetric processors. Signed-off-by: Yuntao Dai Signed-off-by: Junhui Liu --- .../bindings/mailbox/sophgo,cv1800b-mailbox.yaml | 57 ++++++++++++++++++= ++++ 1 file changed, 57 insertions(+) diff --git a/Documentation/devicetree/bindings/mailbox/sophgo,cv1800b-mailb= ox.yaml b/Documentation/devicetree/bindings/mailbox/sophgo,cv1800b-mailbox.= yaml new file mode 100644 index 0000000000000000000000000000000000000000..5815dc02189c973d681f5b4ff22= a9fb7536802b9 --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/sophgo,cv1800b-mailbox.yaml @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mailbox/sophgo,cv1800b-mailbox.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sophgo CV1800/SG2000 mailbox controller + +maintainers: + - Yuntao Dai + - Junhui Liu + +description: | + Mailboxes integrated in Sophgo CV1800/SG2000 SoCs have 8 channels, each + shipping an 8-byte FIFO. Any processor can write to an arbitrary channel + and raise interrupts to receivers. Sending messages to itself is also + supported. + Sophgo CV1800/SG2000 SoCs include the following processors, numbered as: + <0> Cortex-A53 (Only available on CV181X/SG200X) + <1> C906B + <2> C906L + <3> 8051 + +properties: + compatible: + const: sophgo,cv1800b-mailbox + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + "#mbox-cells": + const: 2 + description: + The first cell indicates the channel index (0-7), the second cell + indicates the target processor ID (0-3) to which messages are sent. + +required: + - compatible + - reg + - interrupts + - "#mbox-cells" + +additionalProperties: false + +examples: + - | + #include + + mailbox@1900000 { + compatible =3D "sophgo,cv1800b-mailbox"; + reg =3D <0x01900000 0x1000>; + interrupts =3D <101 IRQ_TYPE_LEVEL_HIGH>; + #mbox-cells =3D <2>; + }; --=20 2.49.0 From nobody Sun Feb 8 21:21:05 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 E8EDF26B958; Mon, 28 Apr 2025 12:41:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844080; cv=pass; b=lG5SvmemD2XzyJP0ZMMVi77yG+oDlvQuiOKCr45Wte/RMSBF1xqbbGOcRT3Kviid50lVPnmmLFVOr3IO9PmTWcdwQNQxldaWY7CD4Xlq23jfrupDfh0p/CfZe+UhbfWyxOs4bUv+OpneqqnSZoPzYP1Y8zhgg08tfgbTFBjFkpE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844080; c=relaxed/simple; bh=BmJ8fFhrllrVNXh6foM0tOz5xDM3nSNM/fFkeFylePU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AJSQ+1AOZjv6G6A8gcG57BUP9CAhuP++DnGMoEzB9cJWOOx4bIrpo6DeUN3vfW7LCh6riKZ3mQOA2/tkk15l+maVKBoA/DR5wur9uOX8IwZvy7XgnmHE8Jj0srTcHQpMLqaKFQbaJCv8yLtraniFldNLx4+RQS0NtN44aTOp7pk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech; spf=pass smtp.mailfrom=pigmoral.tech; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b=mUOSWiUt; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b="mUOSWiUt" ARC-Seal: i=1; a=rsa-sha256; t=1745844050; cv=none; d=zohomail.com; s=zohoarc; b=hQ9kU5ovfWYh3xJW0FBLTEdtP8B4QMrQxe0OhCIyqy8l89uhvwBy+w94x1AQUTWBJll6HFtD8w1mvdEmmjGhOV4J9ihq7ECj3WH8DmEbFeukEZHM/zN5Vjeeid9NFu38GKvj8qelhGS84v5WNP7HxE+e7gbVRHLE6PALVu2mJAk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745844050; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=iDUWlWYITNoYcDcCC3jnCqiVPV8s0bgHvdEQpT3GAHI=; b=mkQToJlHeIgAmzuz7WstdN2eVe88kUck2JXyX09EtmuccQx0rOzdh6XSX28gGsJYX6tvlybqNt8PzllqjKr5AyyyCyGj81+jJjgP0xLjH62ul9cZdsx6wcr20Iv9y40LcqemVnjRDC8/L0hsfCA5KqDPR09OEkNpRonb8hTTE0Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=pigmoral.tech; spf=pass smtp.mailfrom=junhui.liu@pigmoral.tech; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1745844050; s=zmail; d=pigmoral.tech; i=junhui.liu@pigmoral.tech; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=iDUWlWYITNoYcDcCC3jnCqiVPV8s0bgHvdEQpT3GAHI=; b=mUOSWiUtolg48QWGbkJ4prdd9W2gijfvjSAvQtnI8ankqLssL6wGuKrr6fGiGOrR EMlZMTHeBs8FGlUN5lsBdXu/65jXmh4HzR5NRdqFiDH8k77yimqZBo8TQjg4EPqvQuX Kt7iG1YXmvm0RkgHjikoH7C+QMXOZlJVgpNfcMpY= Received: by mx.zohomail.com with SMTPS id 1745844048587698.6681306110062; Mon, 28 Apr 2025 05:40:48 -0700 (PDT) From: Junhui Liu Date: Mon, 28 Apr 2025 20:39:45 +0800 Subject: [PATCH v3 2/3] riscv: dts: add mailbox for Sophgo CV18XX series SoC 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: <20250428-cv18xx-mbox-v3-2-ed18dfd836d1@pigmoral.tech> References: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> In-Reply-To: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> To: Jassi Brar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Yuntao Dai , Junhui Liu , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, sophgo@lists.linux.dev, linux-riscv@lists.infradead.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745844011; l=884; i=junhui.liu@pigmoral.tech; s=20250223; h=from:subject:message-id; bh=CSLWYAdiw9/p/f2aE/yXFp+1aCvV9HAX2JHCuVxOo5Q=; b=MaKr8B+Qeb+49HSAO3AqIztELj+ryAHblwbpwEXmlyUkGDKJnaZk0YdLvkyy42JZIGCeM1y+p 6mzz2/ppmOGCLCbXlwjsanvwPw7bhJnv4F+tFzzZnK/5HhCw1Mq/3Zq X-Developer-Key: i=junhui.liu@pigmoral.tech; a=ed25519; pk=ZRZkOjG47iI+To+oAo2R4KIpMwtz8r0TffJ5/nO2tcg= X-ZohoMailClient: External From: Yuntao Dai Add mailbox node for Sophgo CV18XX series SoC. Signed-off-by: Yuntao Dai Signed-off-by: Junhui Liu --- arch/riscv/boot/dts/sophgo/cv18xx.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/riscv/boot/dts/sophgo/cv18xx.dtsi b/arch/riscv/boot/dts/s= ophgo/cv18xx.dtsi index c18822ec849f353bc296965d2d600a3df314cff6..f7277288f03c024039054bdc417= 6fc95c2c8be52 100644 --- a/arch/riscv/boot/dts/sophgo/cv18xx.dtsi +++ b/arch/riscv/boot/dts/sophgo/cv18xx.dtsi @@ -55,6 +55,13 @@ soc { dma-noncoherent; ranges; =20 + mailbox: mailbox@1900000 { + compatible =3D "sophgo,cv1800b-mailbox"; + reg =3D <0x01900000 0x1000>; + interrupts =3D <101 IRQ_TYPE_LEVEL_HIGH>; + #mbox-cells =3D <2>; + }; + clk: clock-controller@3002000 { reg =3D <0x03002000 0x1000>; clocks =3D <&osc>; --=20 2.49.0 From nobody Sun Feb 8 21:21:05 2026 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 C85F926B2CA; Mon, 28 Apr 2025 12:41:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844091; cv=pass; b=nQjDIYi9XubGFVnflIloLlplm4gHt8mMzcHvxNRO44B8IWtS2duM9bND3ac7Axc3xOHTnNPfb4rSzzWZz/B+mAspBiUT7TVDdOlcnD4dvCzNbqI3gTpOR0/dqIDlsTJCJaj4xWSDJKGKh+InPJ95k6S3luWSkHSfZpaj7c141AQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745844091; c=relaxed/simple; bh=U9UFlmHZeiS+KUsdbzQ0unOl01pl8YMI8AlCF7puW4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ePchXG3PFI3zEsxZG4x5PlchjSnO16niOQi4r+c6LdkCgEFmBFqF2lrQNGirEMHaik8DQXYteE5tjJCdmuW+B/O8FWf5kyH3ByO0WYjOTiAOI7GzxphI8NVfpgiM1E6UZhmFpqVIHF4s1BRb173GMji2IVpT1v3iBf86LUbLYOM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech; spf=pass smtp.mailfrom=pigmoral.tech; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b=gRdawnH3; arc=pass smtp.client-ip=136.143.188.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pigmoral.tech Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=pigmoral.tech header.i=junhui.liu@pigmoral.tech header.b="gRdawnH3" ARC-Seal: i=1; a=rsa-sha256; t=1745844062; cv=none; d=zohomail.com; s=zohoarc; b=GBoldrKMDj733oTqKS1hlyAFbtitZ71eQATg7zXl0YQR6nWzSz6nUVY7Oc7fAbLQ3AUSAWyTN+hfJ4CpHtrgklryzd3g3hFc1KFsx9OgjcWie1q5yQvWwzWChpE8hW01WR++hXDppZYagaKBpGroF4whA1ZcVkl+z3eVWMxshFw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745844062; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=LwU7gex0UJ1teZN3gOvMhmes4l80hzx46Q/azM5ECmU=; b=JUO4jq7fxeGTgG0TKjZBkZ48wluN09bk0yrvNF+JGTtrOoFM8pMKI+vtefcYBCak5NglR/6L6DCIw1xjBGKVJnc2DC2tVmFETFKv3+QA6m3IcqHD8BV2GeRS71CpiqZSo5Apo3BtpkySdiTyWFQYrHyTuyLsZLoQxSk4dHiWlIk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=pigmoral.tech; spf=pass smtp.mailfrom=junhui.liu@pigmoral.tech; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1745844062; s=zmail; d=pigmoral.tech; i=junhui.liu@pigmoral.tech; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=LwU7gex0UJ1teZN3gOvMhmes4l80hzx46Q/azM5ECmU=; b=gRdawnH3IE+hCz4MGBTQyNUNJo6Dyr4Msd6em7uVxiE7ymAjdQFn+enqCdue7rzM P9XWrSQS0DCtATEXdSUFVuZScXasBR8GQW+NW/rFcIxhUYH0Gs6cdJiadVHmMCewTuh vH08JiiDJYsc7kxq6qI2l0uEnpox63tJQPdsOxNg= Received: by mx.zohomail.com with SMTPS id 1745844060503793.2308254516073; Mon, 28 Apr 2025 05:41:00 -0700 (PDT) From: Junhui Liu Date: Mon, 28 Apr 2025 20:39:46 +0800 Subject: [PATCH v3 3/3] mailbox: sophgo: add mailbox driver for CV18XX series SoC 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: <20250428-cv18xx-mbox-v3-3-ed18dfd836d1@pigmoral.tech> References: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> In-Reply-To: <20250428-cv18xx-mbox-v3-0-ed18dfd836d1@pigmoral.tech> To: Jassi Brar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Yuntao Dai , Junhui Liu , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, sophgo@lists.linux.dev, linux-riscv@lists.infradead.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745844011; l=7910; i=junhui.liu@pigmoral.tech; s=20250223; h=from:subject:message-id; bh=o0p8ArrjYHxyP4B5Ea9j/zn/GdF+46F7w3mD/fqktCE=; b=y994W+NuJFZSeBspou7uhkitqRO/46cOQ1dy4UF86upyTZHJUVwopDx2cJstDbGw3Ky6zOsVN OskilfI3wTWA7lheV/qZTbqgunF8wpqcCyVM30vZ/12vTp3Yh8mhxQD X-Developer-Key: i=junhui.liu@pigmoral.tech; a=ed25519; pk=ZRZkOjG47iI+To+oAo2R4KIpMwtz8r0TffJ5/nO2tcg= X-ZohoMailClient: External From: Yuntao Dai Add mailbox controller driver for CV18XX SoCs, which provides 8 channels and each channel has an 8-byte FIFO. Signed-off-by: Yuntao Dai Signed-off-by: Junhui Liu --- drivers/mailbox/Kconfig | 10 ++ drivers/mailbox/Makefile | 2 + drivers/mailbox/cv1800-mailbox.c | 218 +++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 230 insertions(+) diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig index ed52db272f4d059ff60d608f40e3845411bc63f7..fd3f28d705bc00166028c372d33= 98f2e225aa8a7 100644 --- a/drivers/mailbox/Kconfig +++ b/drivers/mailbox/Kconfig @@ -36,6 +36,16 @@ config ARM_MHU_V3 that provides different means of transports: supported extensions will be discovered and possibly managed at probe-time. =20 +config CV1800_MBOX + tristate "cv1800 mailbox" + depends on ARCH_SOPHGO || COMPILE_TEST + help + Mailbox driver implementation for Sophgo CV18XX SoCs. This driver + can be used to send message between different processors in SoC. Any + processer can write data in a channel, and set co-responding register + to raise interrupt to notice another processor, and it is allowed to + send data to itself. + config EXYNOS_MBOX tristate "Exynos Mailbox" depends on ARCH_EXYNOS || COMPILE_TEST diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile index 9a1542b55539c673af874c5c37fbb3d438fd05d3..13a3448b327115add5ebb8c4f11= 6e68dedd755cb 100644 --- a/drivers/mailbox/Makefile +++ b/drivers/mailbox/Makefile @@ -11,6 +11,8 @@ obj-$(CONFIG_ARM_MHU_V2) +=3D arm_mhuv2.o =20 obj-$(CONFIG_ARM_MHU_V3) +=3D arm_mhuv3.o =20 +obj-$(CONFIG_CV1800_MBOX) +=3D cv1800-mailbox.o + obj-$(CONFIG_EXYNOS_MBOX) +=3D exynos-mailbox.o =20 obj-$(CONFIG_IMX_MBOX) +=3D imx-mailbox.o diff --git a/drivers/mailbox/cv1800-mailbox.c b/drivers/mailbox/cv1800-mail= box.c new file mode 100644 index 0000000000000000000000000000000000000000..339c155fb98ddf4155a84d5208c= 595043fc7a7ce --- /dev/null +++ b/drivers/mailbox/cv1800-mailbox.c @@ -0,0 +1,218 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2024 Sophgo Technology Inc. + * Copyright (C) 2024 Yuntao Dai + * Copyright (C) 2025 Junhui Liu + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RECV_CPU 1 + +#define MAILBOX_MAX_CHAN 8 + +#define MBOX_EN_REG(cpu) (cpu << 2) +#define MBOX_DONE_REG(cpu) ((cpu << 2) + 2) +#define MBOX_SET_CLR_REG(cpu) (0x10 + (cpu << 4)) +#define MBOX_SET_INT_REG(cpu) (0x18 + (cpu << 4)) +#define MBOX_SET_REG 0x60 + +#define MAILBOX_CONTEXT_OFFSET 0x0400 +#define MAILBOX_CONTEXT_SIZE 0x0040 + +#define MBOX_CONTEXT_BASE_INDEX(base, index) \ + ((u64 *)(base + MAILBOX_CONTEXT_OFFSET) + index) + +/** + * struct cv1800_mbox_chan_priv - cv1800 mailbox channel private data + * @idx: index of channel + * @cpu: send to which processor + */ +struct cv1800_mbox_chan_priv { + int idx; + int cpu; +}; + +struct cv1800_mbox { + struct mbox_controller mbox; + struct cv1800_mbox_chan_priv priv[MAILBOX_MAX_CHAN]; + struct mbox_chan chans[MAILBOX_MAX_CHAN]; + u64 __iomem *content[MAILBOX_MAX_CHAN]; + void __iomem *mbox_base; + int recvid; +}; + +static irqreturn_t cv1800_mbox_isr(int irq, void *dev_id) +{ + struct cv1800_mbox *mbox =3D (struct cv1800_mbox *)dev_id; + size_t i; + int ret =3D IRQ_NONE; + + for (i =3D 0; i < MAILBOX_MAX_CHAN; i++) { + if (mbox->content[i] && mbox->chans[i].cl) { + mbox_chan_received_data(&mbox->chans[i], + (void *)mbox->content[i]); + mbox->content[i] =3D NULL; + ret =3D IRQ_HANDLED; + } + } + + return ret; +} + +static irqreturn_t cv1800_mbox_irq(int irq, void *dev_id) +{ + struct cv1800_mbox *mbox =3D (struct cv1800_mbox *)dev_id; + u8 set, valid; + size_t i; + int ret =3D IRQ_NONE; + + set =3D readb(mbox->mbox_base + MBOX_SET_INT_REG(RECV_CPU)); + + if (!set) + return ret; + + for (i =3D 0; i < MAILBOX_MAX_CHAN; i++) { + valid =3D set & BIT(i); + if (valid) { + mbox->content[i] =3D + MBOX_CONTEXT_BASE_INDEX(mbox->mbox_base, i); + writeb(valid, + mbox->mbox_base + MBOX_SET_CLR_REG(RECV_CPU)); + writeb(~valid, mbox->mbox_base + MBOX_EN_REG(RECV_CPU)); + ret =3D IRQ_WAKE_THREAD; + } + } + + return ret; +} + +static int cv1800_mbox_send_data(struct mbox_chan *chan, void *data) +{ + struct cv1800_mbox_chan_priv *priv =3D + (struct cv1800_mbox_chan_priv *)chan->con_priv; + struct cv1800_mbox *mbox =3D dev_get_drvdata(chan->mbox->dev); + int idx =3D priv->idx; + int cpu =3D priv->cpu; + u8 en, valid; + + memcpy_toio(MBOX_CONTEXT_BASE_INDEX(mbox->mbox_base, idx), + data, 8); + + valid =3D BIT(idx); + writeb(valid, mbox->mbox_base + MBOX_SET_CLR_REG(cpu)); + en =3D readb(mbox->mbox_base + MBOX_EN_REG(cpu)); + writeb(en | valid, mbox->mbox_base + MBOX_EN_REG(cpu)); + writeb(valid, mbox->mbox_base + MBOX_SET_REG); + + return 0; +} + +static bool cv1800_last_tx_done(struct mbox_chan *chan) +{ + struct cv1800_mbox_chan_priv *priv =3D + (struct cv1800_mbox_chan_priv *)chan->con_priv; + struct cv1800_mbox *mbox =3D dev_get_drvdata(chan->mbox->dev); + u8 en; + + en =3D readb(mbox->mbox_base + MBOX_EN_REG(priv->cpu)); + + return !(en & BIT(priv->idx)); +} + +static const struct mbox_chan_ops cv1800_mbox_chan_ops =3D { + .send_data =3D cv1800_mbox_send_data, + .last_tx_done =3D cv1800_last_tx_done, +}; + +static struct mbox_chan *cv1800_mbox_xlate(struct mbox_controller *mbox, + const struct of_phandle_args *spec) +{ + struct cv1800_mbox_chan_priv *priv; + + int idx =3D spec->args[0]; + int cpu =3D spec->args[1]; + + if (idx >=3D mbox->num_chans) + return ERR_PTR(-EINVAL); + + priv =3D mbox->chans[idx].con_priv; + priv->cpu =3D cpu; + + return &mbox->chans[idx]; +} + +static const struct of_device_id cv1800_mbox_of_match[] =3D { + { .compatible =3D "sophgo,cv1800b-mailbox", }, + {}, +}; +MODULE_DEVICE_TABLE(of, cv1800_mbox_of_match); + +static int cv1800_mbox_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct cv1800_mbox *mb; + int irq, idx, err; + + mb =3D devm_kzalloc(dev, sizeof(*mb), GFP_KERNEL); + if (!mb) + return -ENOMEM; + + mb->mbox_base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(mb->mbox_base)) + return dev_err_probe(dev, PTR_ERR(mb->mbox_base), + "Failed to map resource\n"); + + mb->mbox.dev =3D dev; + mb->mbox.chans =3D mb->chans; + mb->mbox.txdone_poll =3D true; + mb->mbox.ops =3D &cv1800_mbox_chan_ops; + mb->mbox.num_chans =3D MAILBOX_MAX_CHAN; + mb->mbox.of_xlate =3D cv1800_mbox_xlate; + + irq =3D platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + err =3D devm_request_threaded_irq(dev, irq, cv1800_mbox_irq, + cv1800_mbox_isr, IRQF_ONESHOT, + dev_name(&pdev->dev), mb); + if (err < 0) + return dev_err_probe(dev, err, "Failed to register irq\n"); + + for (idx =3D 0; idx < MAILBOX_MAX_CHAN; idx++) { + mb->priv[idx].idx =3D idx; + mb->mbox.chans[idx].con_priv =3D &mb->priv[idx]; + } + + platform_set_drvdata(pdev, mb); + + err =3D devm_mbox_controller_register(dev, &mb->mbox); + if (err) + return dev_err_probe(dev, err, "Failed to register mailbox\n"); + + return 0; +} + +static struct platform_driver cv1800_mbox_driver =3D { + .driver =3D { + .name =3D "cv1800-mbox", + .of_match_table =3D cv1800_mbox_of_match, + }, + .probe =3D cv1800_mbox_probe, +}; + +module_platform_driver(cv1800_mbox_driver); + +MODULE_DESCRIPTION("cv1800 mailbox driver"); +MODULE_LICENSE("GPL"); --=20 2.49.0