From patchwork Mon Mar 10 09:02:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Wilczynski X-Patchwork-Id: 14009415 Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.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 54BCC223705 for ; Mon, 10 Mar 2025 09:02:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.118.77.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597348; cv=none; b=oGZDu2fCxpbpaqcBYbNuxmm5KXBNH9AwbQsoDvSqIhIk5TZK38uD9Nm+iDSqzU1KbaoPkrtd6eEzJc/mNFNzGcd3JAvBrQIZEJ9aNtVi367YB7oZi5ZVPKOKWv8z7MsmBiAuu0TGXV6tZpWRLvIuur5wfyZye0t/l/zkEuFD7/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597348; c=relaxed/simple; bh=vPotdmFer/KkJRpHM1CgVgBvDOaBH+eHeIhoiFUXj7Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:MIME-Version: Content-Type:References; b=Jxux49qAgCf59EG/GlNXFc5FNc9gcg+VUvYiqrHRAM8gYlYyHZQ4GHRlIjeygkuBcBirFljqhNRinesHu/tB83aF6hlnMqWetNyFbwo9ke8Z0d3DHvYuLmZXaEgP2BWpN0054CSkelGAxwO8xvQ7pyooiz14H2e00rImD2xhqZE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com; spf=pass smtp.mailfrom=samsung.com; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b=CGjpLjrh; arc=none smtp.client-ip=210.118.77.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=samsung.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="CGjpLjrh" Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20250310090218euoutp022449cfd7cfaa2b794e506541ce244c45~rZY1U6EXh2542725427euoutp02x for ; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20250310090218euoutp022449cfd7cfaa2b794e506541ce244c45~rZY1U6EXh2542725427euoutp02x DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741597338; bh=QlOPvGKaMPU/idJug/zylqhE7fvuqnxP/B0lxZPddds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CGjpLjrhg8y/z3a9e6bcpvc2VZ89s5gpeJ7R3QXQf3KY9rzj20wotdOokLIb7ziOS wzdLPp0KAJYrEjAAxUgDJ4gmlB5rrUo9NHkxKCX5npCKF27VWvQuHY/qT+0pJtkVwC OphXZiNP0Q0Cjund6vpDgvdWdjrzl6RYAHMxrllI= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20250310090217eucas1p100fc3752de49bb7a7b1ed0e67e1cf273~rZY0wb_bE2282522825eucas1p1F; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 03.86.20409.99AAEC76; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20250310090217eucas1p2051d00809a53d8daca663c8ef8d78dc8~rZY0UoIW22912429124eucas1p2i; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20250310090217eusmtrp25434d7b666433bb05eb197ed40b200eb~rZY0T27pH2373823738eusmtrp2Z; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) X-AuditID: cbfec7f4-c39fa70000004fb9-c5-67ceaa99e909 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 30.E5.19920.99AAEC76; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) Received: from AMDC4942.home (unknown [106.210.136.40]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250310090216eusmtip224d54353dec5bb0b78398c86006803f3~rZYzQVSZl2674426744eusmtip2b; Mon, 10 Mar 2025 09:02:16 +0000 (GMT) From: Michal Wilczynski To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, drew@pdp7.com, guoren@kernel.org, wefu@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, jszhang@kernel.org, ulf.hansson@linaro.org, m.szyprowski@samsung.com Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Michal Wilczynski , Krzysztof Kozlowski Subject: [PATCH v7 1/5] dt-bindings: firmware: thead,th1520: Add support for firmware node Date: Mon, 10 Mar 2025 10:02:07 +0100 Message-Id: <20250310090211.286549-2-m.wilczynski@samsung.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310090211.286549-1-m.wilczynski@samsung.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBKsWRmVeSWpSXmKPExsWy7djPc7ozV51LN1iz2Mzi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOz2Pt6K7vF5V1z2Cw+9x5htNj2uYXN Yu2Ru+wW67/OZ7J4ebmH2aJtFr/F/z072C2Orw23aNk/hcVB2OPNy5csHoc7vrB73DsxjdVj 06pONo871/aweWxeUu/RsvYYk8f7fVfZPPq2rGL0uNR8nd3j8ya5AO4oLpuU1JzMstQifbsE roxTDUvYC1aJV7ycP5W5gXGJcBcjJ4eEgInE7v/n2bsYuTiEBFYwSvR2b2UESQgJfGGUOLcl HiLxmVFi0d8DTDAd++b1s0IkljNKTNjVBdX+hlHiQuNNNpAqNgEjiQfL54NViQj0M0n0HfkP 5jALPGSUeP2yCcjh4BAWiJG41RAJ0sAioCox6+ljdhCbV8BOYse95VDr5CX2HzzLDGJzCthL vNi4iRGiRlDi5MwnLCA2M1BN89bZzCDzJQS2c0pce/uKGaLZReLW1XVQtrDEq+Nb2CFsGYn/ O+dDLciXeLD1E1RNjcTOnuNQtrXEnXO/2EDuZBbQlFi/Sx8i7Chx718nE0hYQoBP4sZbQYgT +CQmbZvODBHmlehoE4KoVpOY2tMLt/Tcim1QSz0k9u25zjqBUXEWkmdmIXlmFsLeBYzMqxjF U0uLc9NTi43yUsv1ihNzi0vz0vWS83M3MQIT4+l/x7/sYFz+6qPeIUYmDsZDjBIczEoivGrb T6UL8aYkVlalFuXHF5XmpBYfYpTmYFES5120vzVdSCA9sSQ1OzW1ILUIJsvEwSnVwNTHcCdm e4jPhSfKXptzGa0mMJZtY+76sqzNJGuzwpHr2fYzOeZMiP9p90g9lnu1oknmkx053i/K5U1j /11n1O9Yu9iXJSvkxDof/RMX+kq0OpynfQr7G1WbLXrkzqQ7e96eenXu46aU365LuL516i98 LNDx+Ld/yfuN8SwvTp85duRqcgtfvZ/0FscmCZP+7DWC4p9/esktf6yrszb2vfNtsaMTBdo4 DYRu/jW6wypSeu9uLMeK6wyLTkrUX2OOVIzLOMClKCNSqPpz4bnFHPOdLCdt4j1RzvH2Ymjd 6XtuL2uuFX6tXab8a5GJhy3zjMRGp/Zv/RPeb76Y3Lp2p0De1tyz7fUptdGH77ocP6fEUpyR aKjFXFScCACf+9n0+wMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrBIsWRmVeSWpSXmKPExsVy+t/xe7ozV51LN2g8IGbx7M5XVoutv2ex W6zZe47JYv6Rc6wW9y5tYbJ4sbeRxaL52Ho2i5ez7rFZ7H29ld3i8q45bBafe48wWmz73MJm sfbIXXaL9V/nM1m8vNzDbNE2i9/i/54d7BbH14ZbtOyfwuIg7PHm5UsWj8MdX9g97p2Yxuqx aVUnm8eda3vYPDYvqfdoWXuMyeP9vqtsHn1bVjF6XGq+zu7xeZNcAHeUnk1RfmlJqkJGfnGJ rVK0oYWRnqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsaphiXsBavEK17On8rcwLhE uIuRk0NCwERi37x+1i5GLg4hgaWMEg/bl7NBJGQkrnW/ZIGwhSX+XOtigyh6xSix8fpmRpAE m4CRxIPl88G6RQQWMklcnbKBGSTBLPCUUWLbDXEQW1ggSmL9jrtMIDaLgKrErKeP2UFsXgE7 iR33ljNBbJCX2H/wLFgvp4C9xIuNm8AWCIHUdL9jhagXlDg58wkLxHx5ieats5knMArMQpKa hSS1gJFpFaNIamlxbnpusaFecWJucWleul5yfu4mRmAUbzv2c/MOxnmvPuodYmTiYDzEKMHB rCTCq7b9VLoQb0piZVVqUX58UWlOavEhRlOguycyS4km5wPTSF5JvKGZgamhiZmlgamlmbGS OK/b5fNpQgLpiSWp2ampBalFMH1MHJxSDUxht1PXVvDb767p5i9RKqzKOewo9u9AvELoFD/T uli9gz+CDKKu28/bJfp32zWFkvNPs63ZuNOTl2hVHPnKdTDVaMPH2zLGdv1WS2tSd1UsWyj8 z0F+wjeegEkxEcx2Qi+X5dg1+L0Tf5nZfitCa14nv6ilqaTthfJbLV8V+JcWik+e4zfTp3tP o1z9svX3d8RfatfnFio7Pzs+lq3a1yN0yZPkmikLz82z7fmc8alT76vgrE/KexulW36eVw1h N9syN/i1/3ybvkZuzRveArf2fS+9ZmkVuVVrluwvTaNWw8eWoX3PNt/hqdB+0WBzz3bG1tDD j0O/879YPX2F5KGX1axnZd3spJW3z9R7rMRSnJFoqMVcVJwIAC/heFhrAwAA X-CMS-MailID: 20250310090217eucas1p2051d00809a53d8daca663c8ef8d78dc8 X-Msg-Generator: CA X-RootMTR: 20250310090217eucas1p2051d00809a53d8daca663c8ef8d78dc8 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250310090217eucas1p2051d00809a53d8daca663c8ef8d78dc8 References: <20250310090211.286549-1-m.wilczynski@samsung.com> The kernel communicates with the E902 core through the mailbox transport using AON firmware protocol. Add dt-bindings to document it the dt node. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Michal Wilczynski --- .../bindings/firmware/thead,th1520-aon.yaml | 53 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/firmware/thead,th1520-aon.yaml diff --git a/Documentation/devicetree/bindings/firmware/thead,th1520-aon.yaml b/Documentation/devicetree/bindings/firmware/thead,th1520-aon.yaml new file mode 100644 index 000000000000..bbc183200400 --- /dev/null +++ b/Documentation/devicetree/bindings/firmware/thead,th1520-aon.yaml @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/firmware/thead,th1520-aon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: T-HEAD TH1520 AON (Always-On) Firmware + +description: | + The Always-On (AON) subsystem in the TH1520 SoC is responsible for managing + low-power states, system wakeup events, and power management tasks. It is + designed to operate independently in a dedicated power domain, allowing it to + remain functional even during the SoC's deep sleep states. + + At the heart of the AON subsystem is the E902, a low-power core that executes + firmware responsible for coordinating tasks such as power domain control, + clock management, and system wakeup signaling. Communication between the main + SoC and the AON subsystem is handled through a mailbox interface, which + enables message-based interactions with the AON firmware. + +maintainers: + - Michal Wilczynski + +properties: + compatible: + const: thead,th1520-aon + + mboxes: + maxItems: 1 + + mbox-names: + items: + - const: aon + + "#power-domain-cells": + const: 1 + +required: + - compatible + - mboxes + - mbox-names + - "#power-domain-cells" + +additionalProperties: false + +examples: + - | + aon: aon { + compatible = "thead,th1520-aon"; + mboxes = <&mbox_910t 1>; + mbox-names = "aon"; + #power-domain-cells = <1>; + }; diff --git a/MAINTAINERS b/MAINTAINERS index ed7aa6867674..15f4bc618064 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20427,6 +20427,7 @@ L: linux-riscv@lists.infradead.org S: Maintained T: git https://github.com/pdp7/linux.git F: Documentation/devicetree/bindings/clock/thead,th1520-clk-ap.yaml +F: Documentation/devicetree/bindings/firmware/thead,th1520-aon.yaml F: Documentation/devicetree/bindings/mailbox/thead,th1520-mbox.yaml F: Documentation/devicetree/bindings/net/thead,th1520-gmac.yaml F: Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml From patchwork Mon Mar 10 09:02:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Wilczynski X-Patchwork-Id: 14009416 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) (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 3A36622423C for ; Mon, 10 Mar 2025 09:02:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.118.77.11 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597350; cv=none; b=aaq8x0EXykBKIKP1KvIbCFjljX0qEdcZGJXj3bE+F+3/0hVO2N1iLi/R4gHOGVJYZL5lb6zKFN6Nex13Fmkl6QKUXJHVF9vKRlVn/NEsJe3besMbY4tJ6hwPc8O1p8RGD/aMt6/tRnoi3pOuz0roXXOda5BjXfOb2wKJOIAUDVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597350; c=relaxed/simple; bh=eeYMWDoZL9LyA0BEmtnhhp46+o950MSovd2jSx8T02k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:MIME-Version: Content-Type:References; b=TNIWO05PP0ZXClvRn/4NdsP6hH5Qay1xm+kSVQwwP33/DOXqJTbd4Q8MeYmvYpUVmxvG+rji0LZxco334lnGsJboNUDiHQGfnJWtRgoSwqaDJmhr4C0orjIx05kQrtQxueqlJm2ztQgU1d4sj8MgRLSeeLAcyP3Je830AASN/6o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com; spf=pass smtp.mailfrom=samsung.com; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b=ZCsGsyy3; arc=none smtp.client-ip=210.118.77.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=samsung.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="ZCsGsyy3" Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20250310090219euoutp01c3f8a6a2a8d52c2493052978cda284af~rZY1-0WFM0939009390euoutp01W for ; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20250310090219euoutp01c3f8a6a2a8d52c2493052978cda284af~rZY1-0WFM0939009390euoutp01W DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741597339; bh=7piyQdJ6QzftDxjYM8NMwAZ5E8bVQAIL26OpWKtuUHc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZCsGsyy3EQJiPXNh9PdsSaLA6tR4HIWkbIPmXir1XV5mRxSqK2+k28msLES2ETQoa 59oQV0nTZKQ9DhR5bkOarhBCdhSVYbnCrPgrypB2XGBgWU/G7C66wEHLoEMnU2v6ui 4ixg80xlgjE0wxl0eJiJ9o0UOT0JC5UGw/+6k+Fs= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20250310090218eucas1p17f2b1253a9bcf8ad1ca9b9f1c42e386f~rZY1gVgax2600526005eucas1p1Y; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id F4.86.20409.A9AAEC76; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20250310090218eucas1p20206eca4f8aaade70450ece10283dbf6~rZY1G5V2x2271322713eucas1p2F; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250310090218eusmtrp1120e1efb1e03b74fb09b3df5fe40af20~rZY1Effxa1037610376eusmtrp1P; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) X-AuditID: cbfec7f4-c0df970000004fb9-c8-67ceaa9a35ee Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 79.0F.19654.A9AAEC76; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) Received: from AMDC4942.home (unknown [106.210.136.40]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250310090217eusmtip257268fef92780504a9ace3595fec2015~rZY0NKL9C2844928449eusmtip2b; Mon, 10 Mar 2025 09:02:17 +0000 (GMT) From: Michal Wilczynski To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, drew@pdp7.com, guoren@kernel.org, wefu@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, jszhang@kernel.org, ulf.hansson@linaro.org, m.szyprowski@samsung.com Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Michal Wilczynski Subject: [PATCH v7 2/5] firmware: thead: Add AON firmware protocol driver Date: Mon, 10 Mar 2025 10:02:08 +0100 Message-Id: <20250310090211.286549-3-m.wilczynski@samsung.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310090211.286549-1-m.wilczynski@samsung.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCKsWRmVeSWpSXmKPExsWy7djPc7qzVp1LN7i0Tcvi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOzuLxrDpvF594jjBbbPrewWaw9cpfd Yv3X+UwWLy/3MFu0zeK3+L9nB7vF8bXhFi37p7A4CHm8efmSxeNwxxd2j3snprF6bFrVyeZx 59oeNo/NS+o9WtYeY/J4v+8qm0ffllWMHpear7N7fN4kF8AdxWWTkpqTWZZapG+XwJVx85Nm wcvpjBVf9sxlbWB8VNbFyMEhIWAi8azNr4uRi0NIYAWjxMyjDawQzhdGif3Hm9khnM+MEgcv r2HpYuQE6/i0bR8TRGI5o8SX/5Ohqt4wSqxb9Besik3ASOLB8vlgs0QE+pkk+o78B3OYBVYy Sty/cJYZpEpYwFPi5NcJjCA2i4CqxLrlDUwgNq+AncScHzfZIfbJS+w/CFHPKWAv8WLjJkaI GkGJkzOfgG1jBqpp3jqbGWSBhMB2TonF6/ezQjS7SJy59pkJwhaWeHV8C9RQGYnTk3ugHsqX eLD1EzOEXSOxs+c4lG0tcefcLzZQMDELaEqs36UPEXaUuH9lJgsk9PgkbrwVhDiBT2LStunM EGFeiY42IYhqNYmpPb1wS8+t2AZ1jIdE7/33zBMYFWcheWYWkmdmIexdwMi8ilE8tbQ4Nz21 2CgvtVyvODG3uDQvXS85P3cTIzAhnv53/MsOxuWvPuodYmTiYDzEKMHBrCTCq7b9VLoQb0pi ZVVqUX58UWlOavEhRmkOFiVx3kX7W9OFBNITS1KzU1MLUotgskwcnFINTI2BHqGXn6bv+WIu fOrKHa6/My6+fP1Du0ruvuTVs/N1Fe7kybHKxV2omv7wO+vdstvNq4QFa1vC1f0/6AQfM18m wOKRd2HduefnLTzCuLZPKG6Sm+u++nngnzn3tvyXd7ed46L/zF967ZPGs/Yeh0S294semK9h ZrmU3XvH5Ge+f5YxfS1beChwwtSvB/njrG03WjUuiau5HCPy75+jCN/Cqrzi8FV39R0Y9oqm 2+t0rL2a5sbkYeLU+Tib2X2ee9mB72HHfm1l1I49wV26Xeb5b367d3ZOX9P7WV2ZV5/2Vpmx slY6bMISt2NXTime8ffc2zd5jp1fZekNVaa77nr2BzQu5cac7j4QceXufyWW4oxEQy3mouJE APuutU/3AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCIsWRmVeSWpSXmKPExsVy+t/xe7qzVp1LN1i1jc/i2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOzuLxrDpvF594jjBbbPrewWaw9cpfd Yv3X+UwWLy/3MFu0zeK3+L9nB7vF8bXhFi37p7A4CHm8efmSxeNwxxd2j3snprF6bFrVyeZx 59oeNo/NS+o9WtYeY/J4v+8qm0ffllWMHpear7N7fN4kF8AdpWdTlF9akqqQkV9cYqsUbWhh pGdoaaFnZGKpZ2hsHmtlZKqkb2eTkpqTWZZapG+XoJdx85NmwcvpjBVf9sxlbWB8VNbFyMkh IWAi8WnbPqYuRi4OIYGljBLbjn9khUjISFzrfskCYQtL/LnWxQZR9IpR4sKkG2BFbAJGEg+W z2cFSYgILGSSuDplAzOIwyywllHi8NVL7CBVwgKeEie/TmAEsVkEVCXWLW9gArF5Bewk5vy4 yQ6xQl5i/8GzzCA2p4C9xIuNm8DqhYBqdnS/Y4WoF5Q4OfMJ2EnMQPXNW2czT2AUmIUkNQtJ agEj0ypGkdTS4tz03GIjveLE3OLSvHS95PzcTYzA6N127OeWHYwrX33UO8TIxMF4iFGCg1lJ hFdt+6l0Id6UxMqq1KL8+KLSnNTiQ4ymQHdPZJYSTc4Hpo+8knhDMwNTQxMzSwNTSzNjJXFe tivn04QE0hNLUrNTUwtSi2D6mDg4pRqYgv623f1lLBz3/s0BpuDV/vnisgXmm17oKKhxXbD+ u+/cVmaRohXSn6a5pG7N5HwlGn6taFLs0q3JJ32+lzQHu5tfesKrbSxxf+n8LPbd0ovLRBr6 dTwTpQqsnjQ4zpskc2rGtmdzVS+VZgk921AqJtUg0yd59IVkjHe4JpPj7f236hu3735T3PBS wj/efqpkTNjB9MQ3ga807mkeTxHZLx7II/9G3b4tg6P7eYz1rV3vFNVWXdy0QT3cMytWjoHD 6GZnSe5no0CdX8fM2LN4Mq2zf99wUzzQUikx59ifN9FLr6WbbtqXudz5TamCuP1Gt6iczIch n3zfXc8WOa/E9Oj3prdVK17d0LXVcVJiKc5INNRiLipOBADCL+66ZwMAAA== X-CMS-MailID: 20250310090218eucas1p20206eca4f8aaade70450ece10283dbf6 X-Msg-Generator: CA X-RootMTR: 20250310090218eucas1p20206eca4f8aaade70450ece10283dbf6 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250310090218eucas1p20206eca4f8aaade70450ece10283dbf6 References: <20250310090211.286549-1-m.wilczynski@samsung.com> The T-Head TH1520 SoC uses an E902 co-processor running Always-On (AON) firmware to manage power, clock, and other system resources [1]. This patch introduces a driver implementing the AON firmware protocol, allowing the Linux kernel to communicate with the firmware via mailbox channels. Through an RPC-based interface, the kernel can initiate power state transitions, update resource configurations, and perform other AON-related tasks. Link: https://openbeagle.org/beaglev-ahead/beaglev-ahead/-/blob/main/docs/TH1520%20System%20User%20Manual.pdf [1] Signed-off-by: Michal Wilczynski --- MAINTAINERS | 2 + drivers/firmware/Kconfig | 9 + drivers/firmware/Makefile | 1 + drivers/firmware/thead,th1520-aon.c | 248 ++++++++++++++++++ .../linux/firmware/thead/thead,th1520-aon.h | 200 ++++++++++++++ 5 files changed, 460 insertions(+) create mode 100644 drivers/firmware/thead,th1520-aon.c create mode 100644 include/linux/firmware/thead/thead,th1520-aon.h diff --git a/MAINTAINERS b/MAINTAINERS index 15f4bc618064..27fdf3d6a5c7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20433,10 +20433,12 @@ F: Documentation/devicetree/bindings/net/thead,th1520-gmac.yaml F: Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml F: arch/riscv/boot/dts/thead/ F: drivers/clk/thead/clk-th1520-ap.c +F: drivers/firmware/thead,th1520-aon.c F: drivers/mailbox/mailbox-th1520.c F: drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c F: drivers/pinctrl/pinctrl-th1520.c F: include/dt-bindings/clock/thead,th1520-clk-ap.h +F: include/linux/firmware/thead/thead,th1520-aon.h RNBD BLOCK DRIVERS M: Md. Haris Iqbal diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig index 9f35f69e0f9e..52c145097770 100644 --- a/drivers/firmware/Kconfig +++ b/drivers/firmware/Kconfig @@ -212,6 +212,15 @@ config SYSFB_SIMPLEFB If unsure, say Y. +config TH1520_AON_PROTOCOL + tristate "Always-On firmware protocol" + depends on ARCH_THEAD || COMPILE_TEST + help + Power, clock, and resource management capabilities on the TH1520 SoC are + managed by the E902 core. Firmware running on this core communicates with + the kernel through the Always-On protocol, using hardware mailbox as a medium. + Say yes if you need such capabilities. + config TI_SCI_PROTOCOL tristate "TI System Control Interface (TISCI) Message Protocol" depends on TI_MESSAGE_MANAGER diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile index 7a8d486e718f..5db9c042430c 100644 --- a/drivers/firmware/Makefile +++ b/drivers/firmware/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o obj-$(CONFIG_SYSFB) += sysfb.o obj-$(CONFIG_SYSFB_SIMPLEFB) += sysfb_simplefb.o +obj-$(CONFIG_TH1520_AON_PROTOCOL) += thead,th1520-aon.o obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o diff --git a/drivers/firmware/thead,th1520-aon.c b/drivers/firmware/thead,th1520-aon.c new file mode 100644 index 000000000000..4416e9bbf854 --- /dev/null +++ b/drivers/firmware/thead,th1520-aon.c @@ -0,0 +1,248 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 Alibaba Group Holding Limited. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. + * Author: Michal Wilczynski + */ + +#include +#include +#include +#include +#include + +#define MAX_RX_TIMEOUT (msecs_to_jiffies(3000)) +#define MAX_TX_TIMEOUT 500 + +struct th1520_aon_chan { + struct mbox_chan *ch; + struct th1520_aon_rpc_ack_common ack_msg; + struct mbox_client cl; + struct completion done; + + /* make sure only one RPC is performed at a time */ + struct mutex transaction_lock; +}; + +struct th1520_aon_msg_req_set_resource_power_mode { + struct th1520_aon_rpc_msg_hdr hdr; + u16 resource; + u16 mode; + u16 reserved[10]; +} __packed __aligned(1); + +/* + * This type is used to indicate error response for most functions. + */ +enum th1520_aon_error_codes { + LIGHT_AON_ERR_NONE = 0, /* Success */ + LIGHT_AON_ERR_VERSION = 1, /* Incompatible API version */ + LIGHT_AON_ERR_CONFIG = 2, /* Configuration error */ + LIGHT_AON_ERR_PARM = 3, /* Bad parameter */ + LIGHT_AON_ERR_NOACCESS = 4, /* Permission error (no access) */ + LIGHT_AON_ERR_LOCKED = 5, /* Permission error (locked) */ + LIGHT_AON_ERR_UNAVAILABLE = 6, /* Unavailable (out of resources) */ + LIGHT_AON_ERR_NOTFOUND = 7, /* Not found */ + LIGHT_AON_ERR_NOPOWER = 8, /* No power */ + LIGHT_AON_ERR_IPC = 9, /* Generic IPC error */ + LIGHT_AON_ERR_BUSY = 10, /* Resource is currently busy/active */ + LIGHT_AON_ERR_FAIL = 11, /* General I/O failure */ + LIGHT_AON_ERR_LAST +}; + +static int th1520_aon_linux_errmap[LIGHT_AON_ERR_LAST] = { + 0, /* LIGHT_AON_ERR_NONE */ + -EINVAL, /* LIGHT_AON_ERR_VERSION */ + -EINVAL, /* LIGHT_AON_ERR_CONFIG */ + -EINVAL, /* LIGHT_AON_ERR_PARM */ + -EACCES, /* LIGHT_AON_ERR_NOACCESS */ + -EACCES, /* LIGHT_AON_ERR_LOCKED */ + -ERANGE, /* LIGHT_AON_ERR_UNAVAILABLE */ + -EEXIST, /* LIGHT_AON_ERR_NOTFOUND */ + -EPERM, /* LIGHT_AON_ERR_NOPOWER */ + -EPIPE, /* LIGHT_AON_ERR_IPC */ + -EBUSY, /* LIGHT_AON_ERR_BUSY */ + -EIO, /* LIGHT_AON_ERR_FAIL */ +}; + +static inline int th1520_aon_to_linux_errno(int errno) +{ + if (errno >= LIGHT_AON_ERR_NONE && errno < LIGHT_AON_ERR_LAST) + return th1520_aon_linux_errmap[errno]; + + return -EIO; +} + +static void th1520_aon_rx_callback(struct mbox_client *c, void *rx_msg) +{ + struct th1520_aon_chan *aon_chan = + container_of(c, struct th1520_aon_chan, cl); + struct th1520_aon_rpc_msg_hdr *hdr = + (struct th1520_aon_rpc_msg_hdr *)rx_msg; + u8 recv_size = sizeof(struct th1520_aon_rpc_msg_hdr) + hdr->size; + + if (recv_size != sizeof(struct th1520_aon_rpc_ack_common)) { + dev_err(c->dev, "Invalid ack size, not completing\n"); + return; + } + + memcpy(&aon_chan->ack_msg, rx_msg, recv_size); + complete(&aon_chan->done); +} + +/** + * th1520_aon_call_rpc() - Send an RPC request to the TH1520 AON subsystem + * @aon_chan: Pointer to the AON channel structure + * @msg: Pointer to the message (RPC payload) that will be sent + * + * This function sends an RPC message to the TH1520 AON subsystem via mailbox. + * It takes the provided @msg buffer, formats it with version and service flags, + * then blocks until the RPC completes or times out. The completion is signaled + * by the `aon_chan->done` completion, which is waited upon for a duration + * defined by `MAX_RX_TIMEOUT`. + * + * Return: + * * 0 on success + * * -ETIMEDOUT if the RPC call times out + * * A negative error code if the mailbox send fails or if AON responds with + * a non-zero error code (converted via th1520_aon_to_linux_errno()). + */ +int th1520_aon_call_rpc(struct th1520_aon_chan *aon_chan, void *msg) +{ + struct th1520_aon_rpc_msg_hdr *hdr = msg; + int ret; + + mutex_lock(&aon_chan->transaction_lock); + reinit_completion(&aon_chan->done); + + RPC_SET_VER(hdr, TH1520_AON_RPC_VERSION); + RPC_SET_SVC_ID(hdr, hdr->svc); + RPC_SET_SVC_FLAG_MSG_TYPE(hdr, RPC_SVC_MSG_TYPE_DATA); + RPC_SET_SVC_FLAG_ACK_TYPE(hdr, RPC_SVC_MSG_NEED_ACK); + + ret = mbox_send_message(aon_chan->ch, msg); + if (ret < 0) { + dev_err(aon_chan->cl.dev, "RPC send msg failed: %d\n", ret); + goto out; + } + + if (!wait_for_completion_timeout(&aon_chan->done, MAX_RX_TIMEOUT)) { + dev_err(aon_chan->cl.dev, "RPC send msg timeout\n"); + mutex_unlock(&aon_chan->transaction_lock); + return -ETIMEDOUT; + } + + ret = aon_chan->ack_msg.err_code; + +out: + mutex_unlock(&aon_chan->transaction_lock); + + return th1520_aon_to_linux_errno(ret); +} +EXPORT_SYMBOL_GPL(th1520_aon_call_rpc); + +/** + * th1520_aon_power_update() - Change power state of a resource via TH1520 AON + * @aon_chan: Pointer to the AON channel structure + * @rsrc: Resource ID whose power state needs to be updated + * @power_on: Boolean indicating whether the resource should be powered on (true) + * or powered off (false) + * + * This function requests the TH1520 AON subsystem to set the power mode of the + * given resource (@rsrc) to either on or off. It constructs the message in + * `struct th1520_aon_msg_req_set_resource_power_mode` and then invokes + * th1520_aon_call_rpc() to make the request. If the AON call fails, an error + * message is logged along with the specific return code. + * + * Return: + * * 0 on success + * * A negative error code in case of failures (propagated from + * th1520_aon_call_rpc()). + */ +int th1520_aon_power_update(struct th1520_aon_chan *aon_chan, u16 rsrc, + bool power_on) +{ + struct th1520_aon_msg_req_set_resource_power_mode msg = {}; + struct th1520_aon_rpc_msg_hdr *hdr = &msg.hdr; + int ret; + + hdr->svc = TH1520_AON_RPC_SVC_PM; + hdr->func = TH1520_AON_PM_FUNC_SET_RESOURCE_POWER_MODE; + hdr->size = TH1520_AON_RPC_MSG_NUM; + + RPC_SET_BE16(&msg.resource, 0, rsrc); + RPC_SET_BE16(&msg.resource, 2, + (power_on ? TH1520_AON_PM_PW_MODE_ON : + TH1520_AON_PM_PW_MODE_OFF)); + + ret = th1520_aon_call_rpc(aon_chan, &msg); + if (ret) + dev_err(aon_chan->cl.dev, "failed to power %s resource %d ret %d\n", + power_on ? "up" : "off", rsrc, ret); + + return ret; +} +EXPORT_SYMBOL_GPL(th1520_aon_power_update); + +/** + * th1520_aon_init() - Initialize TH1520 AON firmware protocol interface + * @dev: Device pointer for the AON subsystem + * + * This function initializes the TH1520 AON firmware protocol interface by: + * - Allocating and initializing the AON channel structure + * - Setting up the mailbox client + * - Requesting the AON mailbox channel + * - Initializing synchronization primitives + * + * Return: + * * Valid pointer to th1520_aon_chan structure on success + * * ERR_PTR(-ENOMEM) if memory allocation fails + * * ERR_PTR() with other negative error codes from mailbox operations + */ +struct th1520_aon_chan *th1520_aon_init(struct device *dev) +{ + struct th1520_aon_chan *aon_chan; + struct mbox_client *cl; + + aon_chan = kzalloc(sizeof(*aon_chan), GFP_KERNEL); + if (!aon_chan) + return ERR_PTR(-ENOMEM); + + cl = &aon_chan->cl; + cl->dev = dev; + cl->tx_block = true; + cl->tx_tout = MAX_TX_TIMEOUT; + cl->rx_callback = th1520_aon_rx_callback; + + aon_chan->ch = mbox_request_channel_byname(cl, "aon"); + if (IS_ERR(aon_chan->ch)) { + dev_err(dev, "Failed to request aon mbox chan\n"); + kfree(aon_chan); + return ERR_CAST(aon_chan->ch); + } + + mutex_init(&aon_chan->transaction_lock); + init_completion(&aon_chan->done); + + return aon_chan; +} +EXPORT_SYMBOL_GPL(th1520_aon_init); + +/** + * th1520_aon_deinit() - Clean up TH1520 AON firmware protocol interface + * @aon_chan: Pointer to the AON channel structure to clean up + * + * This function cleans up resources allocated by th1520_aon_init(): + * - Frees the mailbox channel + * - Frees the AON channel + */ +void th1520_aon_deinit(struct th1520_aon_chan *aon_chan) +{ + mbox_free_channel(aon_chan->ch); + kfree(aon_chan); +} +EXPORT_SYMBOL_GPL(th1520_aon_deinit); + +MODULE_AUTHOR("Michal Wilczynski "); +MODULE_DESCRIPTION("T-HEAD TH1520 Always-On firmware protocol library"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/firmware/thead/thead,th1520-aon.h b/include/linux/firmware/thead/thead,th1520-aon.h new file mode 100644 index 000000000000..dae132b66873 --- /dev/null +++ b/include/linux/firmware/thead/thead,th1520-aon.h @@ -0,0 +1,200 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2021 Alibaba Group Holding Limited. + */ + +#ifndef _THEAD_AON_H +#define _THEAD_AON_H + +#include +#include + +#define AON_RPC_MSG_MAGIC (0xef) +#define TH1520_AON_RPC_VERSION 2 +#define TH1520_AON_RPC_MSG_NUM 7 + +struct th1520_aon_chan; + +enum th1520_aon_rpc_svc { + TH1520_AON_RPC_SVC_UNKNOWN = 0, + TH1520_AON_RPC_SVC_PM = 1, + TH1520_AON_RPC_SVC_MISC = 2, + TH1520_AON_RPC_SVC_AVFS = 3, + TH1520_AON_RPC_SVC_SYS = 4, + TH1520_AON_RPC_SVC_WDG = 5, + TH1520_AON_RPC_SVC_LPM = 6, + TH1520_AON_RPC_SVC_MAX = 0x3F, +}; + +enum th1520_aon_misc_func { + TH1520_AON_MISC_FUNC_UNKNOWN = 0, + TH1520_AON_MISC_FUNC_SET_CONTROL = 1, + TH1520_AON_MISC_FUNC_GET_CONTROL = 2, + TH1520_AON_MISC_FUNC_REGDUMP_CFG = 3, +}; + +enum th1520_aon_wdg_func { + TH1520_AON_WDG_FUNC_UNKNOWN = 0, + TH1520_AON_WDG_FUNC_START = 1, + TH1520_AON_WDG_FUNC_STOP = 2, + TH1520_AON_WDG_FUNC_PING = 3, + TH1520_AON_WDG_FUNC_TIMEOUTSET = 4, + TH1520_AON_WDG_FUNC_RESTART = 5, + TH1520_AON_WDG_FUNC_GET_STATE = 6, + TH1520_AON_WDG_FUNC_POWER_OFF = 7, + TH1520_AON_WDG_FUNC_AON_WDT_ON = 8, + TH1520_AON_WDG_FUNC_AON_WDT_OFF = 9, +}; + +enum th1520_aon_sys_func { + TH1520_AON_SYS_FUNC_UNKNOWN = 0, + TH1520_AON_SYS_FUNC_AON_RESERVE_MEM = 1, +}; + +enum th1520_aon_lpm_func { + TH1520_AON_LPM_FUNC_UNKNOWN = 0, + TH1520_AON_LPM_FUNC_REQUIRE_STR = 1, + TH1520_AON_LPM_FUNC_RESUME_STR = 2, + TH1520_AON_LPM_FUNC_REQUIRE_STD = 3, + TH1520_AON_LPM_FUNC_CPUHP = 4, + TH1520_AON_LPM_FUNC_REGDUMP_CFG = 5, +}; + +enum th1520_aon_pm_func { + TH1520_AON_PM_FUNC_UNKNOWN = 0, + TH1520_AON_PM_FUNC_SET_RESOURCE_REGULATOR = 1, + TH1520_AON_PM_FUNC_GET_RESOURCE_REGULATOR = 2, + TH1520_AON_PM_FUNC_SET_RESOURCE_POWER_MODE = 3, + TH1520_AON_PM_FUNC_PWR_SET = 4, + TH1520_AON_PM_FUNC_PWR_GET = 5, + TH1520_AON_PM_FUNC_CHECK_FAULT = 6, + TH1520_AON_PM_FUNC_GET_TEMPERATURE = 7, +}; + +struct th1520_aon_rpc_msg_hdr { + u8 ver; /* version of msg hdr */ + u8 size; /* msg size ,uinit in bytes,the size includes rpc msg header self */ + u8 svc; /* rpc main service id */ + u8 func; /* rpc sub func id of specific service, sent by caller */ +} __packed __aligned(1); + +struct th1520_aon_rpc_ack_common { + struct th1520_aon_rpc_msg_hdr hdr; + u8 err_code; +} __packed __aligned(1); + +#define RPC_SVC_MSG_TYPE_DATA 0 +#define RPC_SVC_MSG_TYPE_ACK 1 +#define RPC_SVC_MSG_NEED_ACK 0 +#define RPC_SVC_MSG_NO_NEED_ACK 1 + +#define RPC_GET_VER(MESG) ((MESG)->ver) +#define RPC_SET_VER(MESG, VER) ((MESG)->ver = (VER)) +#define RPC_GET_SVC_ID(MESG) ((MESG)->svc & 0x3F) +#define RPC_SET_SVC_ID(MESG, ID) ((MESG)->svc |= 0x3F & (ID)) +#define RPC_GET_SVC_FLAG_MSG_TYPE(MESG) (((MESG)->svc & 0x80) >> 7) +#define RPC_SET_SVC_FLAG_MSG_TYPE(MESG, TYPE) ((MESG)->svc |= (TYPE) << 7) +#define RPC_GET_SVC_FLAG_ACK_TYPE(MESG) (((MESG)->svc & 0x40) >> 6) +#define RPC_SET_SVC_FLAG_ACK_TYPE(MESG, ACK) ((MESG)->svc |= (ACK) << 6) + +#define RPC_SET_BE64(MESG, OFFSET, SET_DATA) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + u64 _set_data = (SET_DATA); \ + data[_offset + 7] = _set_data & 0xFF; \ + data[_offset + 6] = (_set_data & 0xFF00) >> 8; \ + data[_offset + 5] = (_set_data & 0xFF0000) >> 16; \ + data[_offset + 4] = (_set_data & 0xFF000000) >> 24; \ + data[_offset + 3] = (_set_data & 0xFF00000000) >> 32; \ + data[_offset + 2] = (_set_data & 0xFF0000000000) >> 40; \ + data[_offset + 1] = (_set_data & 0xFF000000000000) >> 48; \ + data[_offset + 0] = (_set_data & 0xFF00000000000000) >> 56; \ + } while (0) + +#define RPC_SET_BE32(MESG, OFFSET, SET_DATA) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + u64 _set_data = (SET_DATA); \ + data[_offset + 3] = (_set_data) & 0xFF; \ + data[_offset + 2] = (_set_data & 0xFF00) >> 8; \ + data[_offset + 1] = (_set_data & 0xFF0000) >> 16; \ + data[_offset + 0] = (_set_data & 0xFF000000) >> 24; \ + } while (0) + +#define RPC_SET_BE16(MESG, OFFSET, SET_DATA) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + u64 _set_data = (SET_DATA); \ + data[_offset + 1] = (_set_data) & 0xFF; \ + data[_offset + 0] = (_set_data & 0xFF00) >> 8; \ + } while (0) + +#define RPC_SET_U8(MESG, OFFSET, SET_DATA) \ + do { \ + u8 *data = (u8 *)(MESG); \ + data[OFFSET] = (SET_DATA) & 0xFF; \ + } while (0) + +#define RPC_GET_BE64(MESG, OFFSET, PTR) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + *(u32 *)(PTR) = \ + (data[_offset + 7] | data[_offset + 6] << 8 | \ + data[_offset + 5] << 16 | data[_offset + 4] << 24 | \ + data[_offset + 3] << 32 | data[_offset + 2] << 40 | \ + data[_offset + 1] << 48 | data[_offset + 0] << 56); \ + } while (0) + +#define RPC_GET_BE32(MESG, OFFSET, PTR) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + *(u32 *)(PTR) = \ + (data[_offset + 3] | data[_offset + 2] << 8 | \ + data[_offset + 1] << 16 | data[_offset + 0] << 24); \ + } while (0) + +#define RPC_GET_BE16(MESG, OFFSET, PTR) \ + do { \ + u8 *data = (u8 *)(MESG); \ + u64 _offset = (OFFSET); \ + *(u16 *)(PTR) = (data[_offset + 1] | data[_offset + 0] << 8); \ + } while (0) + +#define RPC_GET_U8(MESG, OFFSET, PTR) \ + do { \ + u8 *data = (u8 *)(MESG); \ + *(u8 *)(PTR) = (data[OFFSET]); \ + } while (0) + +/* + * Defines for SC PM Power Mode + */ +#define TH1520_AON_PM_PW_MODE_OFF 0 /* Power off */ +#define TH1520_AON_PM_PW_MODE_STBY 1 /* Power in standby */ +#define TH1520_AON_PM_PW_MODE_LP 2 /* Power in low-power */ +#define TH1520_AON_PM_PW_MODE_ON 3 /* Power on */ + +/* + * Defines for AON power islands + */ +#define TH1520_AON_AUDIO_PD 0 +#define TH1520_AON_VDEC_PD 1 +#define TH1520_AON_NPU_PD 2 +#define TH1520_AON_VENC_PD 3 +#define TH1520_AON_GPU_PD 4 +#define TH1520_AON_DSP0_PD 5 +#define TH1520_AON_DSP1_PD 6 + +struct th1520_aon_chan *th1520_aon_init(struct device *dev); +void th1520_aon_deinit(struct th1520_aon_chan *aon_chan); + +int th1520_aon_call_rpc(struct th1520_aon_chan *aon_chan, void *msg); +int th1520_aon_power_update(struct th1520_aon_chan *aon_chan, u16 rsrc, + bool power_on); + +#endif /* _THEAD_AON_H */ From patchwork Mon Mar 10 09:02:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Wilczynski X-Patchwork-Id: 14009417 Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.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 A07B32248B9 for ; Mon, 10 Mar 2025 09:02:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.118.77.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597350; cv=none; b=kTnhN+vmH2PztvCWbT34uJw7XXIlvm1YpL9/4vvW6ghIEYA/bHZGf/5k1eTf358tvx6388ERUkPRXzCvbDdln/eG7ionsOeaC+sOsf9erWLTe8y+P2Pfw/7eXFYVSWyTlJMoT9eDLcHGjn+JAF1IE6fiOPIDP0Iz/MbfKxoxEyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597350; c=relaxed/simple; bh=0/x1ZSg0Lpyd2Ds2KTEjkgI4HVqlhIR56EXBdJ0XwYI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:MIME-Version: Content-Type:References; b=Wx9/HERlC7EB4c8DDcDes6LO1T0AbfMcagNWLT01H+eKOFxWQ46c4lm04SKFC6RokiCSSq+2KfBzcoXg5MsD3Gl7GgojFXHr3gHrPQyxQ7uUEGISOlIax59fWKr6dDL7kMOHBQ905fhdDtVHD/vnufUrDQjQXQHv95D6VxlFfKc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com; spf=pass smtp.mailfrom=samsung.com; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b=oBR9X44D; arc=none smtp.client-ip=210.118.77.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=samsung.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="oBR9X44D" Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20250310090220euoutp02516d9a9786a4af2fb797f9207315e7c9~rZY27jeTO2552925529euoutp02v for ; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20250310090220euoutp02516d9a9786a4af2fb797f9207315e7c9~rZY27jeTO2552925529euoutp02v DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741597340; bh=K2KBwS7B77Ev1bGYtdC2d+pddTbj6i1oKKCPxQ8uO3s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oBR9X44DdmQIOnuF2oo+Opcdz4fRJR/q5Bh/58MzXLQOEeXqP/SmsMSFGRMk0U0my 3c6GhPUKwVsEmuifFasi66why9An0K7Nn4N/fY9fzZcIra55eQ53CMJ/hXTV2kUyDv E0h4MIG9yzBTWxpDFu5v79aJbTESXlrSM9K9tvAw= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20250310090219eucas1p120f9c79a52e77ac5756fcb51a23bf9f0~rZY2bsv_A2598725987eucas1p1t; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id A3.97.20397.B9AAEC76; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20250310090219eucas1p14066b32edfec12b55de972f76b641f6f~rZY2BanGF2339523395eucas1p1u; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250310090219eusmtrp1c1f197ae31dc3cb973033aa4362e1bbf~rZY16Vl0i1037610376eusmtrp1S; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) X-AuditID: cbfec7f5-ed1d670000004fad-e2-67ceaa9b9f6b Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id CA.0F.19654.B9AAEC76; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) Received: from AMDC4942.home (unknown [106.210.136.40]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250310090218eusmtip217372da02225495c4d254f123f828c0a~rZY1ABsYp3233232332eusmtip2x; Mon, 10 Mar 2025 09:02:18 +0000 (GMT) From: Michal Wilczynski To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, drew@pdp7.com, guoren@kernel.org, wefu@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, jszhang@kernel.org, ulf.hansson@linaro.org, m.szyprowski@samsung.com Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Michal Wilczynski , Krzysztof Kozlowski Subject: [PATCH v7 3/5] dt-bindings: power: Add TH1520 SoC power domains Date: Mon, 10 Mar 2025 10:02:09 +0100 Message-Id: <20250310090211.286549-4-m.wilczynski@samsung.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310090211.286549-1-m.wilczynski@samsung.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJKsWRmVeSWpSXmKPExsWy7djP87qzV51LN7h6RdPi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOz2Pt6K7vF5V1z2Cw+9x5htNj2uYXN Yu2Ru+wW67/OZ7J4ebmH2aJtFr/F/z072C2Orw23aNk/hcVB2OPNy5csHoc7vrB73DsxjdVj 06pONo871/aweWxeUu/RsvYYk8f7fVfZPPq2rGL0uNR8nd3j8ya5AO4oLpuU1JzMstQifbsE rozvexUL+nkr/qz/wdjA2MvdxcjJISFgInHr1SSWLkYuDiGBFYwSR1fMZYdwvjBKNB1cwwjh fGaUuHfhJyNMy8Rj06BaljNKbOy/BdXyhlHi+6qdzCBVbAJGEg+Wz2cFSYgI9DNJ9B35D+Yw CzxklHj9sokVpEpYwENi1dJvYHNZBFQlFuz8CtbNK2An0bpvMzvEPnmJ/QfPgsU5BewlXmzc xAhRIyhxcuYTFhCbGaimeetsZpAFEgLbOSXuNBxghWh2kbje2AY1SFji1fEtULaMxOnJPSwQ dr7Eg62fmCHsGomdPcehbGuJO+d+sXUxcgAt0JRYv0sfIuwoca19CSNIWEKAT+LGW0GIE/gk Jm2bzgwR5pXoaBOCqFaTmNrTC7f03IptTBC2h8STTbOZJzAqzkLyzCwkz8xC2LuAkXkVo3hq aXFuemqxcV5quV5xYm5xaV66XnJ+7iZGYGo8/e/41x2MK1591DvEyMTBeIhRgoNZSYRXbfup dCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8i/a3pgsJpCeWpGanphakFsFkmTg4pRqYiniMagyZ 1wSvXPzjgk1hSdITx6dsAgU2fw6fFDHMEO7ZrvtlZ7nlNof9URuvWLcvWzJ9goLtC5/odev6 PRXTFDYVn+9Zrns2qZ2pyY3tfItRSIO/xb7s5mksZYqLcrqOFWjLTJh971cUv7q74SmOCQ9f d23geF4ns0Uv+Vk1t/zDDxMr/j7OZ7Z5v+fV11qZsGrDE1s3hTf82/f4zlqx/XmLFwRbyl1L qpmhprhbg6PKYJqG8prFHYozKpc3Fh/qlJ7E6LyyXEHjkfptFhlP/qat1zgZC1fMj1b5xtP+ f2qW1LcrRkfc4jt6/O7znz7GLKHb92u/hnktzyqxWz517bdf7dNuyLlnt0t563IlluKMREMt 5qLiRAAJmBEE/AMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOIsWRmVeSWpSXmKPExsVy+t/xe7qzV51LN/i4jcvi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOz2Pt6K7vF5V1z2Cw+9x5htNj2uYXN Yu2Ru+wW67/OZ7J4ebmH2aJtFr/F/z072C2Orw23aNk/hcVB2OPNy5csHoc7vrB73DsxjdVj 06pONo871/aweWxeUu/RsvYYk8f7fVfZPPq2rGL0uNR8nd3j8ya5AO4oPZui/NKSVIWM/OIS W6VoQwsjPUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYzvexUL+nkr/qz/wdjA2Mvd xcjJISFgIjHx2DSWLkYuDiGBpYwS63tvsEMkZCSudb9kgbCFJf5c62KDKHrFKLHh/2ZGkASb gJHEg+XzWUESIgILmSSuTtnADJJgFnjKKLHthjiILSzgIbFq6TewBhYBVYkFO7+C1fAK2Em0 7tsMtU1eYv/Bs2BxTgF7iRcbN4HVCwHV7Oh+xwpRLyhxcuYTFoj58hLNW2czT2AUmIUkNQtJ agEj0ypGkdTS4tz03GIjveLE3OLSvHS95PzcTYzAGN527OeWHYwrX33UO8TIxMF4iFGCg1lJ hFdt+6l0Id6UxMqq1KL8+KLSnNTiQ4ymQHdPZJYSTc4HJpG8knhDMwNTQxMzSwNTSzNjJXFe tivn04QE0hNLUrNTUwtSi2D6mDg4pRqYprotOr3vzcE1J+b+eCrxyDj7ef/l6rMaPS+fdvE+ b9idZihsqJDJ2SVsuEfMYFHTrh9nvPynT6qR4Lk9LW32c3Ur7cnvctU+pnC7GVxd2KFYu+Tx x706kpecNEVaGztEmr4demb5oePy50dahZdzaud/YBRbP6v984dFpV02vPvN3MpyZzCZZefL zPq954ONmjuHiYmykZjo++flhfKhxW8M2yPfXTvZsnNKS8lplb48e93T/W/uSJXd5c3ve+4q L3fEy0VWhGNyjVFuzAyG2wxWXbFiAYsvL5gvanLBK+DOE/GeHdaMNo5q0fsOzn2XI/Z6w8X5 kdyr7FkesLMxu6UV/U3N9om4Ef/j2wclluKMREMt5qLiRACf6oHXagMAAA== X-CMS-MailID: 20250310090219eucas1p14066b32edfec12b55de972f76b641f6f X-Msg-Generator: CA X-RootMTR: 20250310090219eucas1p14066b32edfec12b55de972f76b641f6f X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250310090219eucas1p14066b32edfec12b55de972f76b641f6f References: <20250310090211.286549-1-m.wilczynski@samsung.com> Add power domain ID's for the TH1520 SoC power domains. Acked-by: Krzysztof Kozlowski Signed-off-by: Michal Wilczynski --- MAINTAINERS | 1 + .../dt-bindings/power/thead,th1520-power.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 include/dt-bindings/power/thead,th1520-power.h diff --git a/MAINTAINERS b/MAINTAINERS index 27fdf3d6a5c7..efef657ee528 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20438,6 +20438,7 @@ F: drivers/mailbox/mailbox-th1520.c F: drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c F: drivers/pinctrl/pinctrl-th1520.c F: include/dt-bindings/clock/thead,th1520-clk-ap.h +F: include/dt-bindings/power/thead,th1520-power.h F: include/linux/firmware/thead/thead,th1520-aon.h RNBD BLOCK DRIVERS diff --git a/include/dt-bindings/power/thead,th1520-power.h b/include/dt-bindings/power/thead,th1520-power.h new file mode 100644 index 000000000000..8395bd1459f3 --- /dev/null +++ b/include/dt-bindings/power/thead,th1520-power.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (C) 2022 Alibaba Group Holding Limited. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. + * Author: Michal Wilczynski + */ + +#ifndef __DT_BINDINGS_POWER_TH1520_H +#define __DT_BINDINGS_POWER_TH1520_H + +#define TH1520_AUDIO_PD 0 +#define TH1520_VDEC_PD 1 +#define TH1520_NPU_PD 2 +#define TH1520_VENC_PD 3 +#define TH1520_GPU_PD 4 +#define TH1520_DSP0_PD 5 +#define TH1520_DSP1_PD 6 + +#endif From patchwork Mon Mar 10 09:02:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Wilczynski X-Patchwork-Id: 14009418 Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.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 B43172248BE for ; Mon, 10 Mar 2025 09:02:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.118.77.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597351; cv=none; b=pyVVqo+fiBDcAu0JQN7RfQbAueZQFpv3F9aVICMQeeAvrvUbLbOzix5iHL0RsxUdQ4wi+pCBksPgpeBskr9zYDQZamg2ndCoDl8yZkalE5snFSBx4FgexXocssEcTZr86XSzrEpR5GYfZk0zubZTQru0lrmBDxE6X7ca20VW3kM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597351; c=relaxed/simple; bh=2Cj0UHyySSKIMUGOIDLH7HHcNe8kjrDIjfqtYMhIkl8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:MIME-Version: Content-Type:References; b=Qa6GNNR3QaUwO0HQRNMoED4l0m0n5ODfY5O0mAk3va+JInDRBlxOJUJpsKvrGNAEE/np9G+5VB0kch2kaFLvfA+w5tHSZygBPBh1OLv58B6nVI7xKMKoEfK2u/ad8dngTYwRNJb99tIeRGWIyPCgcJZsJMjsXIaSRFtQbksY3TY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com; spf=pass smtp.mailfrom=samsung.com; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b=tQpld/0T; arc=none smtp.client-ip=210.118.77.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=samsung.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="tQpld/0T" Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20250310090221euoutp02b8c7b685a914d066abe476e56d1130f3~rZY3o9F0p2542325423euoutp02t for ; Mon, 10 Mar 2025 09:02:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20250310090221euoutp02b8c7b685a914d066abe476e56d1130f3~rZY3o9F0p2542325423euoutp02t DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741597341; bh=w+GsXN3Wp44LCIsztJaP/q7j76AjP06Bmhqu8K3VRk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tQpld/0TDRTbq0fFB72fjbor9zYWmUFvdoI5iDlQVU5EWusOpPwtijvkkp0CtUKnJ D4exzNrokFdNCfhngvUGejgvWV0Q5Rb7l65j0CpqTFtdKTZljkgJemXeviRj1EE7Xx uoVtQsj3m2DCmr22+fbWSbOj6RdNHvtDY1RdwVmE= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20250310090220eucas1p283c2c59606d9717a79d4ec4c48ccb14d~rZY3L4jjv0513205132eucas1p2u; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 5B.75.20821.C9AAEC76; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20250310090220eucas1p1d5cf6a56935e21b5854f77fdc22236b1~rZY2vDeIq0805808058eucas1p1y; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20250310090220eusmtrp2f1a68a22e7602a443f50cfde9711a5fb~rZY2uR4BZ2373823738eusmtrp2f; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) X-AuditID: cbfec7f2-b11c470000005155-57-67ceaa9c80f7 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id FC.0F.19654.B9AAEC76; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from AMDC4942.home (unknown [106.210.136.40]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250310090219eusmtip2c49ff2bcf4a2d19c1202eeeaea152d91~rZY13cuPt2597425974eusmtip2R; Mon, 10 Mar 2025 09:02:19 +0000 (GMT) From: Michal Wilczynski To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, drew@pdp7.com, guoren@kernel.org, wefu@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, jszhang@kernel.org, ulf.hansson@linaro.org, m.szyprowski@samsung.com Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Michal Wilczynski Subject: [PATCH v7 4/5] pmdomain: thead: Add power-domain driver for TH1520 Date: Mon, 10 Mar 2025 10:02:10 +0100 Message-Id: <20250310090211.286549-5-m.wilczynski@samsung.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310090211.286549-1-m.wilczynski@samsung.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEKsWRmVeSWpSXmKPExsWy7djP87pzVp1LN5jWJm/x7M5XVoutv2ex W6zZe47JYv6Rc6wW9y5tYbJ4sbeRxaL52Ho2i5ez7rFZXN41h83ic+8RRottn1vYLNYeuctu sf7rfCaLl5d7mC3aZvFb/N+zg93i+Npwi5b9U1gchDzevHzJ4nG44wu7x70T01g9Nq3qZPO4 c20Pm8fmJfUeLWuPMXm833eVzaNvyypGj0vN19k9Pm+SC+CO4rJJSc3JLEst0rdL4Mro+qdS MMOv4sj+K0wNjJ8cuhg5OSQETCQOblrJ2MXIxSEksIJR4u6nJVDOF0aJCZuuMYNUCQl8ZpR4 +s4TpuPIillsEEXLGSXON5+BKnrDKDFxfjKIzSZgJPFg+XxWkCIRgX4mib4j/8EcZoGVjBL3 L5wF6xAW8JZ4OH8CG4jNIqAq8ejDHrA4r4CdxLkLxxgh1slL7D8IUc8pYC/xYuMmRogaQYmT M5+wgNjMQDXNW2czgyyQENjMKbH9Si87RLOLxInpn5khbGGJV8e3QMVlJP7vnM8EYedLPNj6 CaqmRmJnz3Eo21rizrlfQMdxAC3QlFi/Sx8i7Aj0/i9mkLCEAJ/EjbeCECfwSUzaNh0qzCvR 0SYEUa0mMbWnF27puRXboJZ6SDx++J1tAqPiLCTPzELyzCyEvQsYmVcxiqeWFuempxYb5qWW 6xUn5haX5qXrJefnbmIEJsPT/45/2sE499VHvUOMTByMhxglOJiVRHjVtp9KF+JNSaysSi3K jy8qzUktPsQozcGiJM67aH9rupBAemJJanZqakFqEUyWiYNTqoHJPmf/3D3cC6ZxcP05babv uubgPW6/9Q6prHvbpN0SXke7hvdNYijsVb7ietxQIdwo5VH9VImw/quFi27svxT4RuTJlPrZ pyZt5VDIyPupk+Nze71F8i37hIMMnPtZbFzmvN/TeXTT1EtLF/8RXaS1oEf3MKvmnjNZsSc/ fpq8dWnSG89M3/flJ6qDFdpOcpeed5Kt4xe+M8XH6Ejin6yjJ5LZ7vdIdBWvtM2LaBVmnvNl 77KV+5/e2/uy3sBTmmFe1/4jv44zCEVetN3S/IBte0HYrVfv7OI09xeEm4Ta3P3456udzboS o5/TyxcfWn+D2dspXKxwrr+GxhfOqjzDr+UT3k37znbkwuk9v5gUlViKMxINtZiLihMBgQcQ PPUDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMIsWRmVeSWpSXmKPExsVy+t/xe7pzVp1LNzg8h9Hi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOzuLxrDpvF594jjBbbPrewWaw9cpfd Yv3X+UwWLy/3MFu0zeK3+L9nB7vF8bXhFi37p7A4CHm8efmSxeNwxxd2j3snprF6bFrVyeZx 59oeNo/NS+o9WtYeY/J4v+8qm0ffllWMHpear7N7fN4kF8AdpWdTlF9akqqQkV9cYqsUbWhh pGdoaaFnZGKpZ2hsHmtlZKqkb2eTkpqTWZZapG+XoJfR9U+lYIZfxZH9V5gaGD85dDFyckgI mEgcWTGLrYuRi0NIYCmjRP/NNlaIhIzEte6XLBC2sMSfa11QRa8YJS5sXwWWYBMwkniwfD4r SEJEYCGTxNUpG5hBHGaBtYwSh69eYgepEhbwlng4fwIbiM0ioCrx6MMeZhCbV8BO4tyFY4wQ K+Ql9h88CxbnFLCXeLFxE1hcCKhmR/c7Voh6QYmTM5+AbWYGqm/eOpt5AqPALCSpWUhSCxiZ VjGKpJYW56bnFhvpFSfmFpfmpesl5+duYgTG7rZjP7fsYFz56qPeIUYmDsZDjBIczEoivGrb T6UL8aYkVlalFuXHF5XmpBYfYjQFunsis5Rocj4weeSVxBuaGZgamphZGphamhkrifOyXTmf JiSQnliSmp2aWpBaBNPHxMEp1cDU/Zx34v7ni6f773+YrHjqLK+m+2z7+onvFoWsnBsmNUH3 m61b27UqxxPMYTvz/2wxvnuwu85kgk3Msled7IpaNVcqtnjGcTSf0BFRsJnsOVGezcMl58Um 7fJbDncO5Op+7PthGD8x0bJaIbZN89Rjx+xD16MYXzxrf3c6NvGzDfcmdfdWiWwz0e77oa/6 L+5q2hJ+/X5ZqYd6qz6H8dbr2os31JmrL6tULzoWNuPi78mpeVWvv/9q4/u295/EKb8tiVvP e/vfDX6c1f7kW3/gxQSjg213Mu94sXjc/HLUTWjTtP3P138v3nTDvE+X8WPJdjefafELWJ6t t9F8YLdf5vsVeZmfzAwS2hf1/u1QYinOSDTUYi4qTgQAQQ3mAmYDAAA= X-CMS-MailID: 20250310090220eucas1p1d5cf6a56935e21b5854f77fdc22236b1 X-Msg-Generator: CA X-RootMTR: 20250310090220eucas1p1d5cf6a56935e21b5854f77fdc22236b1 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250310090220eucas1p1d5cf6a56935e21b5854f77fdc22236b1 References: <20250310090211.286549-1-m.wilczynski@samsung.com> The T-Head TH1520 SoC contains multiple power islands that can be programmatically turned on and off using the AON (Always-On) protocol and a hardware mailbox [1]. The relevant mailbox driver has already been merged into the mainline kernel in commit 5d4d263e1c6b ("mailbox: Introduce support for T-head TH1520 Mailbox driver"); Introduce a power-domain driver for the TH1520 SoC, which is using AON firmware protocol to communicate with E902 core through the hardware mailbox. This way it can send power on/off commands to the E902 core. The interaction with AUDIO power island e.g trying to turn it OFF proved to crash the firmware running on the E902 core. Introduce the workaround to disable interacting with the power island. Link: https://openbeagle.org/beaglev-ahead/beaglev-ahead/-/blob/main/docs/TH1520%20System%20User%20Manual.pdf [1] Signed-off-by: Michal Wilczynski --- MAINTAINERS | 1 + drivers/pmdomain/Kconfig | 1 + drivers/pmdomain/Makefile | 1 + drivers/pmdomain/thead/Kconfig | 12 ++ drivers/pmdomain/thead/Makefile | 2 + drivers/pmdomain/thead/th1520-pm-domains.c | 209 +++++++++++++++++++++ 6 files changed, 226 insertions(+) create mode 100644 drivers/pmdomain/thead/Kconfig create mode 100644 drivers/pmdomain/thead/Makefile create mode 100644 drivers/pmdomain/thead/th1520-pm-domains.c diff --git a/MAINTAINERS b/MAINTAINERS index efef657ee528..d3061bf0e295 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20437,6 +20437,7 @@ F: drivers/firmware/thead,th1520-aon.c F: drivers/mailbox/mailbox-th1520.c F: drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c F: drivers/pinctrl/pinctrl-th1520.c +F: drivers/pmdomain/thead/ F: include/dt-bindings/clock/thead,th1520-clk-ap.h F: include/dt-bindings/power/thead,th1520-power.h F: include/linux/firmware/thead/thead,th1520-aon.h diff --git a/drivers/pmdomain/Kconfig b/drivers/pmdomain/Kconfig index 23c64851a5b0..91f04ace35d4 100644 --- a/drivers/pmdomain/Kconfig +++ b/drivers/pmdomain/Kconfig @@ -16,6 +16,7 @@ source "drivers/pmdomain/st/Kconfig" source "drivers/pmdomain/starfive/Kconfig" source "drivers/pmdomain/sunxi/Kconfig" source "drivers/pmdomain/tegra/Kconfig" +source "drivers/pmdomain/thead/Kconfig" source "drivers/pmdomain/ti/Kconfig" source "drivers/pmdomain/xilinx/Kconfig" diff --git a/drivers/pmdomain/Makefile b/drivers/pmdomain/Makefile index a68ece2f4c68..7030f44a49df 100644 --- a/drivers/pmdomain/Makefile +++ b/drivers/pmdomain/Makefile @@ -14,6 +14,7 @@ obj-y += st/ obj-y += starfive/ obj-y += sunxi/ obj-y += tegra/ +obj-y += thead/ obj-y += ti/ obj-y += xilinx/ obj-y += core.o governor.o diff --git a/drivers/pmdomain/thead/Kconfig b/drivers/pmdomain/thead/Kconfig new file mode 100644 index 000000000000..c7a1ac0c61dc --- /dev/null +++ b/drivers/pmdomain/thead/Kconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config TH1520_PM_DOMAINS + tristate "Support TH1520 Power Domains" + depends on TH1520_AON_PROTOCOL || !TH1520_AON_PROTOCOL + select REGMAP_MMIO + help + This driver enables power domain management for the T-HEAD + TH-1520 SoC. On this SoC there are number of power domains, + which can be managed independently. For example GPU, NPU, + and DPU reside in their own power domains which can be + turned on/off. diff --git a/drivers/pmdomain/thead/Makefile b/drivers/pmdomain/thead/Makefile new file mode 100644 index 000000000000..adfdf5479c68 --- /dev/null +++ b/drivers/pmdomain/thead/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_TH1520_PM_DOMAINS) += th1520-pm-domains.o diff --git a/drivers/pmdomain/thead/th1520-pm-domains.c b/drivers/pmdomain/thead/th1520-pm-domains.c new file mode 100644 index 000000000000..7c78cf3955d2 --- /dev/null +++ b/drivers/pmdomain/thead/th1520-pm-domains.c @@ -0,0 +1,209 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 Alibaba Group Holding Limited. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. + * Author: Michal Wilczynski + */ + +#include +#include +#include +#include + +#include + +struct th1520_power_domain { + struct th1520_aon_chan *aon_chan; + struct generic_pm_domain genpd; + u32 rsrc; +}; + +struct th1520_power_info { + const char *name; + u32 rsrc; + bool disabled; +}; + +/* + * The AUDIO power domain is marked as disabled to prevent the driver from + * managing its power state. Direct AON firmware calls to control this power + * island trigger a firmware bug causing system instability. Until this + * firmware issue is resolved, the AUDIO power domain must remain disabled + * to avoid crashes. + */ +static const struct th1520_power_info th1520_pd_ranges[] = { + [TH1520_AUDIO_PD] = {"audio", TH1520_AON_AUDIO_PD, true }, + [TH1520_VDEC_PD] = { "vdec", TH1520_AON_VDEC_PD, false }, + [TH1520_NPU_PD] = { "npu", TH1520_AON_NPU_PD, false }, + [TH1520_VENC_PD] = { "venc", TH1520_AON_VENC_PD, false }, + [TH1520_GPU_PD] = { "gpu", TH1520_AON_GPU_PD, false }, + [TH1520_DSP0_PD] = { "dsp0", TH1520_AON_DSP0_PD, false }, + [TH1520_DSP1_PD] = { "dsp1", TH1520_AON_DSP1_PD, false } +}; + +static inline struct th1520_power_domain * +to_th1520_power_domain(struct generic_pm_domain *genpd) +{ + return container_of(genpd, struct th1520_power_domain, genpd); +} + +static int th1520_pd_power_on(struct generic_pm_domain *domain) +{ + struct th1520_power_domain *pd = to_th1520_power_domain(domain); + + return th1520_aon_power_update(pd->aon_chan, pd->rsrc, true); +} + +static int th1520_pd_power_off(struct generic_pm_domain *domain) +{ + struct th1520_power_domain *pd = to_th1520_power_domain(domain); + + return th1520_aon_power_update(pd->aon_chan, pd->rsrc, false); +} + +static struct generic_pm_domain *th1520_pd_xlate(const struct of_phandle_args *spec, + void *data) +{ + struct generic_pm_domain *domain = ERR_PTR(-ENOENT); + struct genpd_onecell_data *pd_data = data; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(th1520_pd_ranges); i++) { + struct th1520_power_domain *pd; + + if (th1520_pd_ranges[i].disabled) + continue; + + pd = to_th1520_power_domain(pd_data->domains[i]); + if (pd->rsrc == spec->args[0]) { + domain = &pd->genpd; + break; + } + } + + return domain; +} + +static struct th1520_power_domain * +th1520_add_pm_domain(struct device *dev, const struct th1520_power_info *pi) +{ + struct th1520_power_domain *pd; + int ret; + + pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); + if (!pd) + return ERR_PTR(-ENOMEM); + + pd->rsrc = pi->rsrc; + pd->genpd.power_on = th1520_pd_power_on; + pd->genpd.power_off = th1520_pd_power_off; + pd->genpd.name = pi->name; + + ret = pm_genpd_init(&pd->genpd, NULL, true); + if (ret) + return ERR_PTR(ret); + + return pd; +} + +static void th1520_pd_init_all_off(struct generic_pm_domain **domains, + struct device *dev) +{ + int ret; + int i; + + for (i = 0; i < ARRAY_SIZE(th1520_pd_ranges); i++) { + struct th1520_power_domain *pd; + + if (th1520_pd_ranges[i].disabled) + continue; + + pd = to_th1520_power_domain(domains[i]); + + ret = th1520_aon_power_update(pd->aon_chan, pd->rsrc, false); + if (ret) + dev_err(dev, + "Failed to initially power down power domain %s\n", + pd->genpd.name); + } +} + +static int th1520_pd_probe(struct platform_device *pdev) +{ + struct generic_pm_domain **domains; + struct genpd_onecell_data *pd_data; + struct th1520_aon_chan *aon_chan; + struct device *dev = &pdev->dev; + int i; + + aon_chan = th1520_aon_init(dev); + if (IS_ERR(aon_chan)) + return dev_err_probe(dev, PTR_ERR(aon_chan), + "Failed to get AON channel\n"); + + platform_set_drvdata(pdev, aon_chan); + + domains = devm_kcalloc(dev, ARRAY_SIZE(th1520_pd_ranges), + sizeof(*domains), GFP_KERNEL); + if (!domains) + return -ENOMEM; + + pd_data = devm_kzalloc(dev, sizeof(*pd_data), GFP_KERNEL); + if (!pd_data) + return -ENOMEM; + + for (i = 0; i < ARRAY_SIZE(th1520_pd_ranges); i++) { + struct th1520_power_domain *pd; + + if (th1520_pd_ranges[i].disabled) + continue; + + pd = th1520_add_pm_domain(dev, &th1520_pd_ranges[i]); + if (IS_ERR(pd)) + return PTR_ERR(pd); + + pd->aon_chan = aon_chan; + domains[i] = &pd->genpd; + dev_dbg(dev, "added power domain %s\n", pd->genpd.name); + } + + pd_data->domains = domains; + pd_data->num_domains = ARRAY_SIZE(th1520_pd_ranges); + pd_data->xlate = th1520_pd_xlate; + + /* + * Initialize all power domains to off to ensure they start in a + * low-power state. This allows device drivers to manage power + * domains by turning them on or off as needed. + */ + th1520_pd_init_all_off(domains, dev); + + return of_genpd_add_provider_onecell(dev->of_node, pd_data); +} + +static void th1520_pd_remove(struct platform_device *pdev) +{ + struct th1520_aon_chan *aon_chan = platform_get_drvdata(pdev); + + th1520_aon_deinit(aon_chan); +} + +static const struct of_device_id th1520_pd_match[] = { + { .compatible = "thead,th1520-aon" }, + { /* Sentinel */ } +}; +MODULE_DEVICE_TABLE(of, th1520_pd_match); + +static struct platform_driver th1520_pd_driver = { + .driver = { + .name = "th1520-pd", + .of_match_table = th1520_pd_match, + }, + .probe = th1520_pd_probe, + .remove = th1520_pd_remove, +}; +module_platform_driver(th1520_pd_driver); + +MODULE_AUTHOR("Michal Wilczynski "); +MODULE_DESCRIPTION("T-HEAD TH1520 SoC power domain controller"); +MODULE_LICENSE("GPL"); From patchwork Mon Mar 10 09:02:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Wilczynski X-Patchwork-Id: 14009419 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) (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 B05C12248AB for ; Mon, 10 Mar 2025 09:02:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.118.77.11 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597351; cv=none; b=Ld8lwa5QlRV+MqVT3mlILGZk2rm4HP+AAOrDUPPCE1FH/wejyQeq4JjVDN8KaGZUVOEFXDVtXpQ+rwbqcpJsxWp9UZknXkRPKrUFl+KIqeOH82lMsOyffLhf77ErCMB33eM4o7t4+orywkbviWxqUuB9S8mRs4uPFQDiiN4aLDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741597351; c=relaxed/simple; bh=LjNeeGPZTSfwAfwVgmY6/aONFof+BNi8pWf8VZUD+9U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:MIME-Version: Content-Type:References; b=Tyw4lTOC7I9NJTERoESMITS48htgmf2QeGPiPJSyteNl2DcQAM/DYTILxQL/i13w9XXSzPBPxNBRomdgN6Dl37LPSbYBXZCQQshyc8iu5G3vMZEl0t8Lt7b2KVli/HdpW97WpmoGbHlQRyxUBk6iB7orW/qIv+VDh6fr5Y1DqJE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com; spf=pass smtp.mailfrom=samsung.com; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b=bxznMqa9; arc=none smtp.client-ip=210.118.77.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=samsung.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="bxznMqa9" Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20250310090221euoutp01025310e44ce927695dd66b96a962ce2b~rZY4OQuau0780207802euoutp01- for ; Mon, 10 Mar 2025 09:02:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20250310090221euoutp01025310e44ce927695dd66b96a962ce2b~rZY4OQuau0780207802euoutp01- DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741597341; bh=GvH+KGxOLMWPvCT3kvkzzW6sq/iRIHCpZUQmHgtdxxI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bxznMqa9nXhUI8+SFusigApWXFGROHO2Annprj0ShgQ+lBhu4giEVznN92Kp1GHWV zDrPjQueKr5mf5fPi8xWBjUxen/rs5AffFvUnEVcyrd//DgH/wtNXby8J0yRwDrqaU j43MKqpsEsHm/RrFTql1ESjDKI+Cb0bFuoXmzhes= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20250310090221eucas1p18c5a64e40afb46abab95016c08a70fa2~rZY36jzSy2333723337eucas1p10; Mon, 10 Mar 2025 09:02:21 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 19.86.20409.D9AAEC76; Mon, 10 Mar 2025 09:02:21 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20250310090220eucas1p1bcb94d4d6c7145fa12a85305cb73068c~rZY3g6_8w2339523395eucas1p1v; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250310090220eusmtrp1ad878aee0609448e3166f1fd98b0d986~rZY3gKuI41041010410eusmtrp1D; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) X-AuditID: cbfec7f4-c0df970000004fb9-d7-67ceaa9d9371 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id BE.0F.19654.C9AAEC76; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) Received: from AMDC4942.home (unknown [106.210.136.40]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250310090220eusmtip26340f4f58568cd1b70452f8d5f384cac~rZY2rD9Xf2911429114eusmtip2G; Mon, 10 Mar 2025 09:02:20 +0000 (GMT) From: Michal Wilczynski To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, drew@pdp7.com, guoren@kernel.org, wefu@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, jszhang@kernel.org, ulf.hansson@linaro.org, m.szyprowski@samsung.com Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Michal Wilczynski Subject: [PATCH v7 5/5] riscv: Enable PM_GENERIC_DOMAINS for T-Head SoCs Date: Mon, 10 Mar 2025 10:02:11 +0100 Message-Id: <20250310090211.286549-6-m.wilczynski@samsung.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310090211.286549-1-m.wilczynski@samsung.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCKsWRmVeSWpSXmKPExsWy7djP87pzV51LN/hyWsji2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOzuLxrDpvF594jjBbbPrewWaw9cpfd Yv3X+UwWLy/3MFu0zeK3+L9nB7vF8bXhFi37p7A4CHm8efmSxeNwxxd2j3snprF6bFrVyeZx 59oeNo/NS+o9WtYeY/J4v+8qm0ffllWMHpear7N7fN4kF8AdxWWTkpqTWZZapG+XwJUxe+0Z poIpnBU9uy+wNTCeZu9i5OSQEDCRuHH3N3MXIxeHkMAKRonns+YyQjhfGCUOX9kD5XxmlPjw bDEbTEvn1C1QLcsZJX6f+scK4bxhlLjV+JEJpIpNwEjiwfL5YAkRgX4mib4j/8EcZoGVjBL3 L5xlBqkSFvCQeN3xFuwUFgFVid4ZT1lAbF4BO4meGddZIfbJS+w/CFHPKWAv8WLjJkaIGkGJ kzOfgNUzA9U0b53NDFG/mVNi6tsACNtFYnHPGqi4sMSr41ug3paROD25hwXCzpd4sPUTVE2N xM6e41C2tcSdc7+AfuYAmq8psX6XPkTYUeLMnq1gYQkBPokbbwUhLuCTmLRtOjNEmFeio00I olpNYmpPL9zScyu2MUHYHhKfj79hnsCoOAvJL7OQ/DILYe8CRuZVjOKppcW56anFRnmp5XrF ibnFpXnpesn5uZsYgQnx9L/jX3YwLn/1Ue8QIxMH4yFGCQ5mJRFete2n0oV4UxIrq1KL8uOL SnNSiw8xSnOwKInzLtrfmi4kkJ5YkpqdmlqQWgSTZeLglGpg2v5w561A60+cJZxhmRvXet+a Nq3E4smpMK5C1xeGdvOvclXJ6HwqNP9/N+aozpxfltde5F9ny+xlrewWkPvRHalQzZoXvMlK KY3hVM/KcI0NC56du8+g9Zz5UQ/nb/ufqQLai4Il10rqbjwrXPwls/fVumNqbE62J5O4Jk0p Md4t/PAgw8LoXWovXBf0TGhRjqjfrOCgPXVeMMOEJTt40nfmGE4oYL9T/M0qJfTXobPtjALL btp8FGg1UH+6K9k5QzZwj7fc9XVnXFLkpXVUIz/dkKltvrDyj6X0B62Q41PKOt0ffamZv9f0 2eKn6owTbkr+fLvs8J1f2tU3lxn/bmvbvcd7tXqBMi+fddJ2JZbijERDLeai4kQA9VAKKPcD AAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCIsWRmVeSWpSXmKPExsVy+t/xe7pzVp1LN1hzwcTi2Z2vrBZbf89i t1iz9xyTxfwj51gt7l3awmTxYm8ji0XzsfVsFi9n3WOzuLxrDpvF594jjBbbPrewWaw9cpfd Yv3X+UwWLy/3MFu0zeK3+L9nB7vF8bXhFi37p7A4CHm8efmSxeNwxxd2j3snprF6bFrVyeZx 59oeNo/NS+o9WtYeY/J4v+8qm0ffllWMHpear7N7fN4kF8AdpWdTlF9akqqQkV9cYqsUbWhh pGdoaaFnZGKpZ2hsHmtlZKqkb2eTkpqTWZZapG+XoJcxe+0ZpoIpnBU9uy+wNTCeZu9i5OSQ EDCR6Jy6hbmLkYtDSGApo8SFH81sEAkZiWvdL1kgbGGJP9e62CCKXjFKtD6dywySYBMwkniw fD4rSEJEYCGTxNUpG8BGMQusZZQ4fPUS2A5hAQ+J1x1vwWwWAVWJ3hlPwcbyCthJ9My4zgqx Ql5i/8GzYFM5BewlXmzcxAhiCwHV7Oh+xwpRLyhxcuYTsF5moPrmrbOZJzAKzEKSmoUktYCR aRWjSGppcW56brGRXnFibnFpXrpecn7uJkZg9G479nPLDsaVrz7qHWJk4mA8xCjBwawkwqu2 /VS6EG9KYmVValF+fFFpTmrxIUZToLsnMkuJJucD00deSbyhmYGpoYmZpYGppZmxkjgv25Xz aUIC6YklqdmpqQWpRTB9TBycUg1Mc0MOZN47eZhTI9XTlX3WN0Hn6Lnd7ycL70u+FPf9LEdN EcsJLomPju+OJDt+mnaq7WN5gFBrbfDd5cHivAYSoRtcHLWb/jDJXmf/leJlPEeWY5dhse0U 91zte0JRe0L913gIHLrnyrneTEexxHXjSc0KrWupP4MK524W/mGapOjv+dBWzN7KRN5+moQy t3LzNr7ELJaVbPeY9+2ZuqG54N0DmaWZ+78zHJp8uVlwNtf+j0IG388dvP35j5rylbyrjhzb H664/CXnt3NFs9Vf/uVzN3HOLW6bMjHq0dtzO6sjKnw4fbJ95DZO50z2v3n7y/adD+5aPJMR k4j4ZMqn9Lg/9GHNwelKL/zr3bmVWIozEg21mIuKEwF33gf7ZwMAAA== X-CMS-MailID: 20250310090220eucas1p1bcb94d4d6c7145fa12a85305cb73068c X-Msg-Generator: CA X-RootMTR: 20250310090220eucas1p1bcb94d4d6c7145fa12a85305cb73068c X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250310090220eucas1p1bcb94d4d6c7145fa12a85305cb73068c References: <20250310090211.286549-1-m.wilczynski@samsung.com> T-Head SoCs feature separate power domains (power islands) for major components like the GPU, Audio, and NPU. To manage the power states of these components effectively, the kernel requires generic power domain support. This commit enables `CONFIG_PM_GENERIC_DOMAINS` for T-Head SoCs, allowing the power domain driver for these components to be compiled and integrated. This ensures proper power management and energy efficiency on T-Head platforms. By selecting `PM_GENERIC_DOMAINS`, we provide the necessary framework for the power domain drivers to function correctly on RISC-V architecture with T-Head SoCs. Signed-off-by: Michal Wilczynski --- arch/riscv/Kconfig.socs | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs index 1916cf7ba450..83833ded8908 100644 --- a/arch/riscv/Kconfig.socs +++ b/arch/riscv/Kconfig.socs @@ -53,6 +53,7 @@ config ARCH_THEAD bool "T-HEAD RISC-V SoCs" depends on MMU && !XIP_KERNEL select ERRATA_THEAD + select PM_GENERIC_DOMAINS if PM help This enables support for the RISC-V based T-HEAD SoCs.