From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F73B17A303 for ; Wed, 2 Sep 2026 04:05:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321950; cv=none; b=GbZzkuRxP4Kra6MTtj4XcOwX8MmErQ92w7U4X5f+xV6WsH34/11MSspd2R+FTR1cz85joksMvFjEDXnp4lJBQ048ZYujRKH+dnwLUuFZy/u0pefdAno9UxuQx4P7RW9RFUo8od0rdErj9Kmmv+AKEsdOT3TBUcPGhClVYa89YI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321950; c=relaxed/simple; bh=KzPHLtt4kfKkTPXcS5nhIPUGns0eQ8i2OaZ+FybtnV8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ac2QUWHrcxr+ykP/tp8GrXlHm+1eF5ETALSMM0b25NyvqZuEajGNedxjwZc42yg0xjJjyiVINHS1T/8gg7iStPPeHDrrlKQXMzgeqszY2V9h5XfPIFdft8C4T7dDJdVtSw+Q4Dijm4M/D6XjI3oKXOZndqhRN0lhnnPfOYAeq8U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=iMPqKvjx; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="iMPqKvjx" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-49cca4ffdcfso3587215e9.0 for ; Tue, 01 Sep 2026 21:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321947; x=1788926747; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=QouME4t0AL3EJvqTOq4K6OtxPVBm5ADgp3Dr3ti6+Os=; b=iMPqKvjxy2X1nKSMEC9qPRrvAdUdyLvVmIDsGMAsFqKZPpIl0wo80Nc6HPa2hlgHnk Zr/OKvwqr0jxrc6VsKbKn7pcji6VtnhlDEG1oPN81ZOexGa3BIwTVJucbxta1BAehr8C 0gKpeqsJj83iQqbIdEpCSGEiqg/7h86qfZ4gzAY0GddZXkFMeVkmARCDOST05NuXjHBl B3SatQ1/j09c0RW6xaorGmZqhNe//hylWejLx99wH+ElIXHs/6acDLTutodj0LBm7SVt bd6zzQEyz69zil3gKFSKxDkGdHf2pMRxm/K6XQJn3/F7BgLsGc9342rqlnnR/bLHVP/1 S1bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321947; x=1788926747; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=QouME4t0AL3EJvqTOq4K6OtxPVBm5ADgp3Dr3ti6+Os=; b=YrtUmtM190DLQKjgJipEhkkCvzKdF+1sOlJhpfY9VN0hf3+uFDhqXWhs+09kDGzlcD fZefArkUadL5NueU/IHCSI54ck4nHvAHzV18stWCLM2Gj+hTgnCvK2N9SKq7jplhQh+3 TYgXnprze8Ym4+1HzbohjYrwxuEEjxPgFmd1d9bslQBlVapVLU69bzjag6s+wzw7rE5/ rcGoKus1bmpqgzZpo+HEJI2y0ZNlBgy7cGsXNCtjtkPz1nZWIfoDKKdD/PhEVEoJu4cP 3Sgit98oClHz0crelWpjw5LG3aFjEeOCPI1pyUCbKH9uNZ+N06y7/vwmjTbD06Oto7iD d/cQ== X-Forwarded-Encrypted: i=1; AHgh+Rr1HSjHcz2nIJ3HlMJ7+elRQk+/MJ69pekhR2RdphQe1NSNfIoZbhTvDrL5hf4xbJyLEE+0ICauOYkP2QI=@vger.kernel.org X-Gm-Message-State: AFuF++m8COjLKx/UH69TQyd5yggfIJi+gSAq9UJp5ZQRKJK1KGhF6s/g QHYOk/6KnnWsG90LJ2zYlN1Y1go6muiM2Uu1tat+s4/omRuP7jjbzax5EcIYVfbMPa0= X-Gm-Gg: AR+sD13CYyTQolWDs4ttv6gPLER7Bo7ZXx7FfLao/cWDkkqFpJ3X6+zv+NBiByMFWq6 I7xlpoFongADcmdwg3RfH4wHfoIF1sfg9FHtKnFzvkhBRFNTkSM10Czw74iqWYgBII+l7J4bzgw m43FjYHpsYptIBa8pHZmtumj42+JDkpPg1hA2nDRpks6tSzlqWEYKnlxqWMYKj19qSdjOAVXtok Yo87iE70+aiBl0dH2ISMcXe1ToK4SZ8hcVnOpzPt7gv0tm3L4Rbzuwpg0zcv+EPmv855lq4RscG CcnuwmVjvD2FPfcblxUmWPbbVwJ/uH2DDSekDy2X+OgOn0W+bMnq9dhczDc6Nf2UCQoVXEqFqxk XNo7KPvcCR6qwxOFH2yNvWdR5sJx9oHcZ9PBLC96mbaBJKIaL5GcmRY675qRSK/fj/SbvgJZmGK XJgtzfrkvfq5fwShDFgHUZ4MXiS2tRaVz+LDT8PsIMVbOC2j6fJ8DcRVTDlD2P/bpYH33KQP0Eb tMSfYazYvTCiJLD9hXVupaU3qr34bcFNL6OdSWBlhOqGWXDnP9Q X-Received: by 2002:a05:600c:46cc:b0:49c:cb6a:1687 with SMTP id 5b1f17b1804b1-49ce5812d7cmr29059215e9.4.1788321946697; Tue, 01 Sep 2026 21:05:46 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:46 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:38 +0100 Subject: [PATCH v6 1/6] dt-bindings: soc: move,rename google,gs101-pmu-intr-gen and add exynos850 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: <20260902-exynos850-cpuhotplug-v6-1-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 The PMU interrupt generation block introduced for the Google GS101 is actually a standard Samsung Exynos IP block found in older SoCs, such as the Exynos850, and is not exclusive to Google SoCs. To accurately reflect its origin, move the schema file to under soc/samsung/ directory and rename it. Concurrently, add the new "samsung,exynos850-pmu-intr-gen" compatible string to the bindings. Support for this block is required to enable power management features like CPU hotplug and idle states on Exynos850 platforms. Also, move this file under Exynos850 SoC in MAINTAINERS entry. Reviewed-by: Rob Herring (Arm) Signed-off-by: Alexey Klimov --- .../samsung,exynos850-pmu-intr-gen.yaml} | 8 ++++= +--- MAINTAINERS | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu-= intr-gen.yaml b/Documentation/devicetree/bindings/soc/samsung/samsung,exyno= s850-pmu-intr-gen.yaml similarity index 70% rename from Documentation/devicetree/bindings/soc/google/google,gs101-pmu-i= ntr-gen.yaml rename to Documentation/devicetree/bindings/soc/samsung/samsung,exynos850-p= mu-intr-gen.yaml index 2be022ca6a7d..df23467d0e0e 100644 --- a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-ge= n.yaml +++ b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos850-pmu-i= ntr-gen.yaml @@ -1,10 +1,10 @@ # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- -$id: http://devicetree.org/schemas/soc/google/google,gs101-pmu-intr-gen.ya= ml# +$id: http://devicetree.org/schemas/soc/samsung/samsung,exynos850-pmu-intr-= gen.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: Google Power Management Unit (PMU) Interrupt Generation +title: Samsung Power Management Unit (PMU) Interrupt Generation =20 description: | PMU interrupt generator for handshaking between PMU through interrupts. @@ -15,7 +15,9 @@ maintainers: properties: compatible: items: - - const: google,gs101-pmu-intr-gen + - enum: + - google,gs101-pmu-intr-gen + - samsung,exynos850-pmu-intr-gen - const: syscon =20 reg: diff --git a/MAINTAINERS b/MAINTAINERS index eb4e5a61056e..554246ef6d91 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -11172,7 +11172,6 @@ P: Documentation/process/maintainer-soc-clean-dts.r= st C: irc://irc.oftc.net/pixel6-kernel-dev F: Documentation/devicetree/bindings/clock/google,gs101-clock.yaml F: Documentation/devicetree/bindings/phy/google,lga-usb-phy.yaml -F: Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-gen.= yaml F: Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml F: arch/arm64/boot/dts/exynos/google/ F: drivers/clk/samsung/clk-gs101.c @@ -24297,6 +24296,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated = for non-subscribers) L: linux-samsung-soc@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/clock/samsung,exynos850-clock.yaml +F: Documentation/devicetree/bindings/soc/samsung/samsung,exynos850-pmu-int= r-gen.yaml F: arch/arm64/boot/dts/exynos/exynos850* F: drivers/clk/samsung/clk-exynos850.c F: include/dt-bindings/clock/exynos850.h --=20 2.51.0 From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6295C35E926 for ; Wed, 2 Sep 2026 04:05:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321952; cv=none; b=E2j3dZ0FiIFIboeguBqyZJ3iHF5Q9RoScDm/Fmy5mg72igMSOYO89NJWZdbaHWY/HOkVLqaT3oPN/3MgvQlCyRoU56SGdhO9kBL9MRpTaKHGTGoU4Uth1PF1FK2dyLSsM70l+4FPgtkr4QIRwKQ5c6EZannJXSeMsJ3gb2MF2yo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321952; c=relaxed/simple; bh=rYZ6f8ke4/CgAKpv47zNC1/8drck6P5HXuC4yvBfoRg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k2Vftg5NfHRoUkVvTz6aVFl/SEIF9k1lJBo+Eq27+oXirsO4WM6BNwH34DUQ2NmpuCyRBPuKgG3Ntdep7gtsZx+K6Jfkdof+MPqxbnwjaBVd0pdaWSz/ciwczkP/rqj4Kk8Mm6IfNY06kNMIPothpW+XeE5KXTPzid8/LXkM7PU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=GwBh/3s7; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="GwBh/3s7" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-49b8687630fso3843775e9.3 for ; Tue, 01 Sep 2026 21:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321949; x=1788926749; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=bbNhV3sGP6oWXmNCm4cU9gjHDsysd2+OUMzLU54oMEk=; b=GwBh/3s7s615lKyOoW/do5WE1S2uLUZwqvI+cmeMsJegkdjSBK8x5jqPFEmH9cQN/Q yLLCU7PSKo5ClbHI1fm3Y8A9e3s1D33egu+LHsGGG+DDY4ihA3oJRapCMcb3kV37O6n8 eSmYLXXs4Zp655AZKTRHxdkROOW6Df7nAB1BS99MiKEv0Eev5J2D1odHHGhGTemzp2Rg xaW72g2WlA0A9LPqsQjq1e2lomy22fd3AcGdyo+3gZW3O89ozhywMYkqxS+RZEqiI9UJ PVEB2jM0LPbkxqI9KiVXCXuDEb2GF0QViDsNy/U+cxX8x4GwF9+SLiHrhwwwv2tpc0OV kinw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321949; x=1788926749; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bbNhV3sGP6oWXmNCm4cU9gjHDsysd2+OUMzLU54oMEk=; b=ans/u2EnIyy8Zxic6xaXusde+TLq4HpTWwcHHGi4KmZSAl9ExRwKQyuaKPtfwACsDV OZnQrA1mQBMVmC/R2A3W85O+FMVJPvNdjfU8HUNlPk3z1aO4B04FBUmTNEusaqh1Lg2w mbzrPfwqT8ld5yd39npO49tDS9arlmxgTsgqqBKTKuqiGDrZVnrwPmSSxW6/WDCVP5DO 9Gik+8t+A3921eGycDQVlYz7sVdTIvjLGp/AU8Zmw1UYxXpTUakKjdhHTHijhkKNWfVO A34nSL5xv1Ox19aMS54L9ouApAH6Lx6upQH2Qb4AeQS3p6DFAZa7WC8ZStBqUqFmxvi+ wL/g== X-Forwarded-Encrypted: i=1; AHgh+RpI9BV4nmDPeR9X+mzs/SNxylifl9p4FWdJ2528gmO+ejW8Bn16nZDse8uRRFjA29HMJ6Ivl9KLjqbaTkU=@vger.kernel.org X-Gm-Message-State: AFuF++kJ5Ki2Mkity2u3m/JZfsbmwlVjGApR3hKxttBV94/5gq1wzCOj L68aDDeITyt7Xww6R1AJ+53qhzIxk8aW0VlyZd5Do78pwgoq+QEOeJlrlNZXqSxuTl8= X-Gm-Gg: AR+sD12atX54ZNvQXLnqczFLTB2GK5wa41Bh8Zf3inyLrcsROuipgEDx0aPATRmI9cC iVjJ1+G2PpOGIwEIC7Wh4Ib2V27Kj/0s09GaMYc35B40w0vlCTkAuSdqakYhXTDA+KTKJHNwMI2 2/GTqr2jvOXJDPOgVsu/k+2kVqc74uJzm9g23h6DEYJdvJkFXehyFYyTApOSqGgl1Hhx9UkT+Ue N9RVTeZx9MZx2CEubYoCiu2Xf9T7v9uIt0MRE1W6gLcOKQud2LqAFNsatlRY7OLyhZkEN6bBjHW r+rdC7VOKEQC87DC4Eq4zu0gLqbUOmuROZSU6qQKBVlHh3S2cE+TiMXqZwaZ5oxO4hpnoduRQlz Tuo8kuUXBKt+fxHvjjUCtTBxvxVWOIAzeMrxwVofC1b9aWZG2rwjrWuYskZLm8atiNmj0SyJ+do fYuN5YMZ1ialmpf+vRe4gKtpGeinMlwhuUvbx/atrrJN3GtF9BeZ5h4MBu9DUuxpZNaVxY1o7q/ 3QvXGsVX931dORzU89mWkXmyGg9XjZ0mCjuqIYXvNn0/L0U0YKD X-Received: by 2002:a05:600c:3e10:b0:49b:9433:ea44 with SMTP id 5b1f17b1804b1-49ce57fe002mr33589265e9.4.1788321948081; Tue, 01 Sep 2026 21:05:48 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:47 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:39 +0100 Subject: [PATCH v6 2/6] dt-bindings: soc: samsung: exynos-pmu: Require pmu-intr-gen-syscon for Exynos850 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: <20260902-exynos850-cpuhotplug-v6-2-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 Update the Exynos PMU schema to mandate the 'google,pmu-intr-gen-syscon' property for the 'samsung,exynos850-pmu' compatible so the driver can obtain the necessary syscon regmap. The Exynos850 PMU relies on a separate system controller block to handle interrupts generation, similar to the hardware design of the GS101 SoC. To ensure the hardware is correctly described, this syscon phandle must be explicitly provided. Reviewed-by: Peter Griffin Acked-by: Rob Herring (Arm) Signed-off-by: Alexey Klimov --- Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml = b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml index 5bd39876e3b3..7d58976dccc4 100644 --- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml +++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml @@ -196,6 +196,7 @@ allOf: contains: enum: - google,gs101-pmu + - samsung,exynos850-pmu then: properties: reboot-mode: --=20 2.51.0 From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2378A313E00 for ; Wed, 2 Sep 2026 04:05:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; cv=none; b=lGE9vMhFA7csf3S3OG/1Kid04A9FEkUoBUg3FbjzkX1J9YUrLkp+mrczaC58NLqeLLSquOV//d0C1lfAMP4clsiMAFkc9UDe744AtvEGeIRG4N7NJx878zwkkYg95HE4DWLBJXWhEKI/m/ZThT+kR8K+5fQwncQuehWlwDbQahU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; c=relaxed/simple; bh=FtCKWvH8S6+ohyZ+EzNSsDqWMqpe8WiXE1pKSu9UyJc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gU/L1N0J6apbiWbBulJ/8ZkQ3BPgjufn8ScCiUvyw6JeALuJEUHQFuhmVbaqQwSlHZzwNi79WY5j/YMiNbIk7FCdh/r2qg40oQHYVTa7csmkKWFppK0EXc2OjrHZG+zRIlfApqD4nC0CWRBsmfqJIYX9PpmSaeMak4TX1gmXmRo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=zz174+KJ; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="zz174+KJ" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4957eefd361so3439325e9.1 for ; Tue, 01 Sep 2026 21:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321950; x=1788926750; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Yzi04IEdHT/tiD3LUgcMLCQrHKmEWsd5u6VlQXwSy44=; b=zz174+KJKok07f4TgHPMKGLyvV64YeeI7MTJjrBxLOIJSVi6SZPBQmVqVQvIgNWItZ v+PSMQ75s+rJ6RxcNoqz7SIua5nPzoOFj0y7VfIU/fsHw4R6bBYXUqswbieE/y8qyn8i dTzy5lNvFbhyy8tMMDf7g4uVNGlI//Ta3pJzFcCdYAuKmesWIbmgPAW9dfz0JOShRag+ QtJNvUgnJMiOtrL91/CsTUnrqcgl0O00hGME6LEZ2Sdg8eLx6gIs07GttUy3nuMVyA4V 0rGTqerT86gZMW1iAOBSgIRkhDgLt5Vw1drTCD2pglyRv05NLkuNCzOTJwWIHSGoR+8g dShw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321950; x=1788926750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Yzi04IEdHT/tiD3LUgcMLCQrHKmEWsd5u6VlQXwSy44=; b=Z5mNSXA1ZQLMHNkZeRxbbuA34QeSc0Fa3p6j1MFlSkzwJPIsSgo5RsirOSznoDuMy5 d0QA5E2QjsbnOc2L/3ioJDMJL6ak4mEZRF5KTlcqAz/MulHDRQS70NsJfhvDzkz8CXhN wFtGmjDbQOC3lnu1VPtHiWKE5zK063hPFbk648AU3E61GjD4OVehqjYJ5iKNG0GFraD+ Wlq5WlWUhFL46F4ogn+JtIAe6w+J8pxVuWOrbnDsyCVvVYQNl6z2y86Jff2psWAmPT8N qpRwFVscpQVbG+GoawrNEpIugGYZ8q/2QGP06tpeYfCoJQ7+I8uFe3iSgxSOmc4y7MuI DmrA== X-Forwarded-Encrypted: i=1; AHgh+RqAw4tY74eZHCqoK2iMDslwpuOG+byBzqHp5vtdVl7edEgYTX+OIS7RIdGwtjNK9TtlZXpFBImAr/zjCUE=@vger.kernel.org X-Gm-Message-State: AFuF++kY6VaWQr46v/htCjdj6VVQUQUAKSYKJNsRRAxCurSskAh4wXlM 0pkU3tBHLiVp1ftJ7QCYFcBX/JDGTNWKHNNwrcNZvyPhesmRpKpD3UsoEjXpD9zQ2T4+uafpimc DlEoT X-Gm-Gg: AR+sD10KFjJRIMA5Jt6i/t2v+zpafroLLQpcRA+sPm20kls3ZoD3JR9Slsl1w0SmpUj He2AUYlB/SWmbEqDZ+GdNo2ZdB6hb6l30voB1JGgG9KsoLrRCPvVwlZ1BOswqx//+2RmZ8Fv5AU BJ63IOQLx/ovFVw+3akTAxGZf4eD99PAICLo4WeX3/bTwd0CP4coAEqL2Ey+38UM7e25pTsh28O BFgDCuD5dOLVLBu9nTs5+1ZVQMZx1VUqCYebq/LIl6LJjG5ZZMnNdEaYKznNgfpgVpu4aR649Wy ZLm3wVZ0NZQa1ZsaQH9lZx3BacMkn+b1Ox1gEseCoS//ppSrjVm2Jl7Vvb9V9kS2AXBQ/Wd2UGd XVM2g3u5IIHka+zLDqHVEdxdnOmT0LtH84dOkWmVPDX0tXwcPcg2JJ3KflGCkiZtqa0azWb+oKO HUi6FE8ArAODvsctJ9fZpTcOXkAwqb3lUJSMY3y21RTgNegwIr4sVxWvMap37HuwmpvIblzd2QO cf19VeDPfE3OTDvh7F8bfbHk/dP91kMk4FSVIjMgnf1gxcK3gsP X-Received: by 2002:a05:600c:8b88:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-49ce581a0a0mr33499545e9.7.1788321950074; Tue, 01 Sep 2026 21:05:50 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:48 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:40 +0100 Subject: [PATCH v6 3/6] soc: samsung: exynos-pmu: generalise gs101-specific cpu{idle,hotplug} for Exynos SoCs 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: <20260902-exynos850-cpuhotplug-v6-3-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 The cpuhotplug and cpuidle support for GS101-based SoCs which utilizes GS101 PMU interrupts generation block can be generalised to be (re)used for other Exynos-based SoCs. Also, the GS101 PMU interrupts generation block is not exclusive to Google GS101 SoCs and should be made more Exynos-generic. Specifically, apply the following changes: - rename gs101-specific calls, structs, names to be exynos-prefixed; - move exynos_pmu_context and CPU_INFORM_* defines into exynos-pmu.h; - introduce cpu_pmu_{offline,online} callbacks in driver-specific exynos_pmu_data which can be used to hold PMU and PMU intr gen update routines for different platforms and update cpuidle and cpuhotplug support to use them; - add checks for the presense of cpu_pmu_{offline,online} callbacks; - move and rename gs101-specific cpu{offline,online} PMU updates routines into gs101-pmu.c file, also removing underscore prefix; - update gs101_pmu_data to use newly introduced callbacks; - rename PMU interrupts generation GS101_INTR_* regs to EXYNOS_INTR_*. This allows other platforms to add cpuhotplug and cpuidle support in a similar manner, using their own platform-specific PMU and PMU intr gen update routines. Reviewed-by: Peter Griffin Tested-by: Peter Griffin Signed-off-by: Alexey Klimov --- drivers/soc/samsung/exynos-pmu.c | 125 ++++++------------------= ---- drivers/soc/samsung/exynos-pmu.h | 33 ++++++++ drivers/soc/samsung/gs101-pmu.c | 51 ++++++++++++ include/linux/soc/samsung/exynos-regs-pmu.h | 10 +-- 4 files changed, 114 insertions(+), 105 deletions(-) diff --git a/drivers/soc/samsung/exynos-pmu.c b/drivers/soc/samsung/exynos-= pmu.c index fce922d5ab92..02076148c53d 100644 --- a/drivers/soc/samsung/exynos-pmu.c +++ b/drivers/soc/samsung/exynos-pmu.c @@ -24,24 +24,6 @@ =20 #include "exynos-pmu.h" =20 -struct exynos_pmu_context { - struct device *dev; - const struct exynos_pmu_data *pmu_data; - struct regmap *pmureg; - struct regmap *pmuintrgen; - /* - * Serialization lock for CPU hot plug and cpuidle ACPM hint - * programming. Also protects in_cpuhp, sys_insuspend & sys_inreboot - * flags. - */ - raw_spinlock_t cpupm_lock; - unsigned long *in_cpuhp; - bool sys_insuspend; - bool sys_inreboot; - int cpuhp_prepare_state; - int cpuhp_online_state; -}; - void __iomem *pmu_base_addr; static struct exynos_pmu_context *pmu_context; /* forward declaration */ @@ -221,44 +203,8 @@ struct regmap *exynos_get_pmu_regmap_by_phandle(struct= device_node *np, } EXPORT_SYMBOL_GPL(exynos_get_pmu_regmap_by_phandle); =20 -/* - * CPU_INFORM register "hint" values are required to be programmed in addi= tion to - * the standard PSCI calls to have functional CPU hotplug and CPU idle sta= tes. - * This is required to workaround limitations in the el3mon/ACPM firmware. - */ -#define CPU_INFORM_CLEAR 0 -#define CPU_INFORM_C2 1 - -/* - * __gs101_cpu_pmu_ prefix functions are common code shared by CPU PM noti= fiers - * (CPUIdle) and CPU hotplug callbacks. Functions should be called with IR= Qs - * disabled and cpupm_lock held. - */ -static int __gs101_cpu_pmu_online(unsigned int cpu) - __must_hold(&pmu_context->cpupm_lock) -{ - unsigned int cpuhint =3D smp_processor_id(); - u32 reg, mask; - - /* clear cpu inform hint */ - regmap_write(pmu_context->pmureg, GS101_CPU_INFORM(cpuhint), - CPU_INFORM_CLEAR); - - mask =3D BIT(cpu); - - regmap_update_bits(pmu_context->pmuintrgen, GS101_GRP2_INTR_BID_ENABLE, - mask, (0 << cpu)); - - regmap_read(pmu_context->pmuintrgen, GS101_GRP2_INTR_BID_UPEND, ®); - - regmap_write(pmu_context->pmuintrgen, GS101_GRP2_INTR_BID_CLEAR, - reg & mask); - - return 0; -} - /* Called from CPU PM notifier (CPUIdle code path) with IRQs disabled */ -static int gs101_cpu_pmu_online(void) +static int exynos_cpu_pmu_online(void) { int cpu; =20 @@ -270,20 +216,20 @@ static int gs101_cpu_pmu_online(void) } =20 cpu =3D smp_processor_id(); - __gs101_cpu_pmu_online(cpu); + pmu_context->pmu_data->cpu_pmu_online(pmu_context, cpu); raw_spin_unlock(&pmu_context->cpupm_lock); =20 return NOTIFY_OK; } =20 /* Called from CPU hot plug callback with IRQs enabled */ -static int gs101_cpuhp_pmu_online(unsigned int cpu) +static int exynos_cpuhp_pmu_online(unsigned int cpu) { unsigned long flags; =20 raw_spin_lock_irqsave(&pmu_context->cpupm_lock, flags); =20 - __gs101_cpu_pmu_online(cpu); + pmu_context->pmu_data->cpu_pmu_online(pmu_context, cpu); /* * Mark this CPU as having finished the hotplug. * This means this CPU can now enter C2 idle state. @@ -294,35 +240,8 @@ static int gs101_cpuhp_pmu_online(unsigned int cpu) return 0; } =20 -/* Common function shared by both CPU hot plug and CPUIdle */ -static int __gs101_cpu_pmu_offline(unsigned int cpu) - __must_hold(&pmu_context->cpupm_lock) -{ - unsigned int cpuhint =3D smp_processor_id(); - u32 reg, mask; - - /* set cpu inform hint */ - regmap_write(pmu_context->pmureg, GS101_CPU_INFORM(cpuhint), - CPU_INFORM_C2); - - mask =3D BIT(cpu); - regmap_update_bits(pmu_context->pmuintrgen, GS101_GRP2_INTR_BID_ENABLE, - mask, BIT(cpu)); - - regmap_read(pmu_context->pmuintrgen, GS101_GRP1_INTR_BID_UPEND, ®); - regmap_write(pmu_context->pmuintrgen, GS101_GRP1_INTR_BID_CLEAR, - reg & mask); - - mask =3D (BIT(cpu + 8)); - regmap_read(pmu_context->pmuintrgen, GS101_GRP1_INTR_BID_UPEND, ®); - regmap_write(pmu_context->pmuintrgen, GS101_GRP1_INTR_BID_CLEAR, - reg & mask); - - return 0; -} - /* Called from CPU PM notifier (CPUIdle code path) with IRQs disabled */ -static int gs101_cpu_pmu_offline(void) +static int exynos_cpu_pmu_offline(void) { int cpu; =20 @@ -340,14 +259,14 @@ static int gs101_cpu_pmu_offline(void) return NOTIFY_OK; } =20 - __gs101_cpu_pmu_offline(cpu); + pmu_context->pmu_data->cpu_pmu_offline(pmu_context, cpu); raw_spin_unlock(&pmu_context->cpupm_lock); =20 return NOTIFY_OK; } =20 /* Called from CPU hot plug callback with IRQs enabled */ -static int gs101_cpuhp_pmu_offline(unsigned int cpu) +static int exynos_cpuhp_pmu_offline(unsigned int cpu) { unsigned long flags; =20 @@ -357,29 +276,29 @@ static int gs101_cpuhp_pmu_offline(unsigned int cpu) * ACPM the CPU entering hotplug should not enter C2 idle state. */ set_bit(cpu, pmu_context->in_cpuhp); - __gs101_cpu_pmu_offline(cpu); + pmu_context->pmu_data->cpu_pmu_offline(pmu_context, cpu); =20 raw_spin_unlock_irqrestore(&pmu_context->cpupm_lock, flags); =20 return 0; } =20 -static int gs101_cpu_pm_notify_callback(struct notifier_block *self, +static int exynos_cpu_pm_notify_callback(struct notifier_block *self, unsigned long action, void *v) { switch (action) { case CPU_PM_ENTER: - return gs101_cpu_pmu_offline(); + return exynos_cpu_pmu_offline(); =20 case CPU_PM_EXIT: - return gs101_cpu_pmu_online(); + return exynos_cpu_pmu_online(); } =20 return NOTIFY_OK; } =20 -static struct notifier_block gs101_cpu_pm_notifier =3D { - .notifier_call =3D gs101_cpu_pm_notify_callback, +static struct notifier_block exynos_cpu_pm_notifier =3D { + .notifier_call =3D exynos_cpu_pm_notify_callback, /* * We want to be called first, as the ACPM hint and handshake is what * puts the CPU into C2. @@ -411,7 +330,7 @@ static struct notifier_block exynos_cpupm_reboot_nb =3D= { =20 static void destroy_cpuhp_and_cpuidle(void) { - cpu_pm_unregister_notifier(&gs101_cpu_pm_notifier); + cpu_pm_unregister_notifier(&exynos_cpu_pm_notifier); unregister_reboot_notifier(&exynos_cpupm_reboot_nb); =20 if (pmu_context->cpuhp_prepare_state !=3D CPUHP_INVALID) @@ -428,6 +347,12 @@ static int setup_cpuhp_and_cpuidle(struct device *dev) void __iomem *virt_addr; int ret, cpu; =20 + if (!pmu_context->pmu_data->cpu_pmu_offline || !pmu_context->pmu_data->cp= u_pmu_online) { + dev_warn(dev, + "PMU write/update sequence is not present for cpuhotplug and cpuidle\n"= ); + return 0; + } + if (!intr_gen_node) { /* * To maintain support for older DTs that didn't specify syscon @@ -468,28 +393,28 @@ static int setup_cpuhp_and_cpuidle(struct device *dev) =20 /* set PMU to power on */ for_each_online_cpu(cpu) - gs101_cpuhp_pmu_online(cpu); + exynos_cpuhp_pmu_online(cpu); =20 /* register CPU hotplug callbacks */ pmu_context->cpuhp_prepare_state =3D CPUHP_INVALID; pmu_context->cpuhp_online_state =3D CPUHP_INVALID; =20 ret =3D cpuhp_setup_state(CPUHP_BP_PREPARE_DYN, "soc/exynos-pmu:prepare", - gs101_cpuhp_pmu_online, NULL); + exynos_cpuhp_pmu_online, NULL); if (ret < 0) return ret; =20 pmu_context->cpuhp_prepare_state =3D ret; =20 ret =3D cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "soc/exynos-pmu:online", - NULL, gs101_cpuhp_pmu_offline); + NULL, exynos_cpuhp_pmu_offline); if (ret < 0) goto clean_cpuhp_states; =20 pmu_context->cpuhp_online_state =3D ret; =20 /* register CPU PM notifiers for cpuidle */ - ret =3D cpu_pm_register_notifier(&gs101_cpu_pm_notifier); + ret =3D cpu_pm_register_notifier(&exynos_cpu_pm_notifier); if (ret) goto clean_cpuhp_states; =20 @@ -498,7 +423,7 @@ static int setup_cpuhp_and_cpuidle(struct device *dev) /* Success */ return ret; =20 - cpu_pm_unregister_notifier(&gs101_cpu_pm_notifier); + cpu_pm_unregister_notifier(&exynos_cpu_pm_notifier); =20 clean_cpuhp_states: if (pmu_context->cpuhp_prepare_state !=3D CPUHP_INVALID) { diff --git a/drivers/soc/samsung/exynos-pmu.h b/drivers/soc/samsung/exynos-= pmu.h index fbe381e2a2e1..733e188fa2b1 100644 --- a/drivers/soc/samsung/exynos-pmu.h +++ b/drivers/soc/samsung/exynos-pmu.h @@ -13,6 +13,14 @@ =20 #define PMU_TABLE_END (-1U) =20 +/* + * CPU_INFORM register "hint" values are required to be programmed in addi= tion to + * the standard PSCI calls to have functional CPU hotplug and CPU idle sta= tes. + * This is required to workaround limitations in the el3mon/ACPM firmware. + */ +#define CPU_INFORM_CLEAR 0 +#define CPU_INFORM_C2 1 + struct regmap_access_table; =20 struct exynos_pmu_conf { @@ -20,6 +28,24 @@ struct exynos_pmu_conf { u8 val[NUM_SYS_POWERDOWN]; }; =20 +struct exynos_pmu_context { + struct device *dev; + const struct exynos_pmu_data *pmu_data; + struct regmap *pmureg; + struct regmap *pmuintrgen; + /* + * Serialization lock for CPU hot plug and cpuidle ACPM hint + * programming. Also protects in_cpuhp, sys_insuspend & sys_inreboot + * flags. + */ + raw_spinlock_t cpupm_lock; + unsigned long *in_cpuhp; + bool sys_insuspend; + bool sys_inreboot; + int cpuhp_prepare_state; + int cpuhp_online_state; +}; + /** * struct exynos_pmu_data - of_device_id (match) data * @@ -44,6 +70,10 @@ struct exynos_pmu_conf { * used (i.e. when @pmu_secure is @true). * @wr_table: A table of writable register ranges in case a custom regmap = is * used (i.e. when @pmu_secure is @true). + * @cpu_pmu_offline: Optional callback to be called before entering CPU of= fline + * or idle state. Only valid when pmu_cpuhp set to true. + * @cpu_pmu_online: Optional callback to be called after CPU onlined or af= ter + * exiting idle state. Only valid when pmu_cpuhp set to t= rue. */ struct exynos_pmu_data { const struct exynos_pmu_conf *pmu_config; @@ -57,6 +87,9 @@ struct exynos_pmu_data { =20 const struct regmap_access_table *rd_table; const struct regmap_access_table *wr_table; + + int (*cpu_pmu_offline)(struct exynos_pmu_context *pmu_context, unsigned i= nt cpu); + int (*cpu_pmu_online)(struct exynos_pmu_context *pmu_context, unsigned in= t cpu); }; =20 extern void __iomem *pmu_base_addr; diff --git a/drivers/soc/samsung/gs101-pmu.c b/drivers/soc/samsung/gs101-pm= u.c index 17dadc1b9c6e..ee7897eed20a 100644 --- a/drivers/soc/samsung/gs101-pmu.c +++ b/drivers/soc/samsung/gs101-pmu.c @@ -322,11 +322,62 @@ static const struct regmap_access_table gs101_pmu_wr_= table =3D { .n_no_ranges =3D ARRAY_SIZE(gs101_pmu_ro_registers), }; =20 +/* + * gs101_cpu_pmu_ prefix functions are common code shared by CPU PM notifi= ers + * (CPUIdle) and CPU hotplug callbacks. Functions should be called with IR= Qs + * disabled and cpupm_lock held. + */ +static int gs101_cpu_pmu_online(struct exynos_pmu_context *pmu_context, un= signed int cpu) + __must_hold(&pmu_context->cpupm_lock) +{ + unsigned int cpuhint =3D smp_processor_id(); + u32 reg, mask; + + /* clear cpu inform hint */ + regmap_write(pmu_context->pmureg, GS101_CPU_INFORM(cpuhint), CPU_INFORM_C= LEAR); + + mask =3D BIT(cpu); + regmap_update_bits(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_ENABLE, + mask, (0 << cpu)); + + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_UPEND, ®); + + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_CLEAR, reg & m= ask); + + return 0; +} + +/* Common function shared by both CPU hot plug and CPUIdle */ +static int gs101_cpu_pmu_offline(struct exynos_pmu_context *pmu_context, u= nsigned int cpu) + __must_hold(&pmu_context->cpupm_lock) +{ + unsigned int cpuhint =3D smp_processor_id(); + u32 reg, mask; + + /* set cpu inform hint */ + regmap_write(pmu_context->pmureg, GS101_CPU_INFORM(cpuhint), CPU_INFORM_C= 2); + + mask =3D BIT(cpu); + regmap_update_bits(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_ENABLE, + mask, BIT(cpu)); + + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_UPEND, ®); + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_CLEAR, reg & m= ask); + + mask =3D (BIT(cpu + 8)); + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_UPEND, ®); + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_CLEAR, reg & m= ask); + + return 0; +} + const struct exynos_pmu_data gs101_pmu_data =3D { .pmu_secure =3D true, .pmu_cpuhp =3D true, .rd_table =3D &gs101_pmu_rd_table, .wr_table =3D &gs101_pmu_wr_table, + .cpu_pmu_offline =3D gs101_cpu_pmu_offline, + .cpu_pmu_online =3D gs101_cpu_pmu_online, }; =20 /* diff --git a/include/linux/soc/samsung/exynos-regs-pmu.h b/include/linux/so= c/samsung/exynos-regs-pmu.h index db8a7ca81080..9c4d3da41dbf 100644 --- a/include/linux/soc/samsung/exynos-regs-pmu.h +++ b/include/linux/soc/samsung/exynos-regs-pmu.h @@ -1009,11 +1009,11 @@ #define GS101_PHY_CTRL_UFS 0x3ec8 =20 /* PMU INTR GEN */ -#define GS101_GRP1_INTR_BID_UPEND (0x0108) -#define GS101_GRP1_INTR_BID_CLEAR (0x010c) -#define GS101_GRP2_INTR_BID_ENABLE (0x0200) -#define GS101_GRP2_INTR_BID_UPEND (0x0208) -#define GS101_GRP2_INTR_BID_CLEAR (0x020c) +#define EXYNOS_GRP1_INTR_BID_UPEND (0x0108) +#define EXYNOS_GRP1_INTR_BID_CLEAR (0x010c) +#define EXYNOS_GRP2_INTR_BID_ENABLE (0x0200) +#define EXYNOS_GRP2_INTR_BID_UPEND (0x0208) +#define EXYNOS_GRP2_INTR_BID_CLEAR (0x020c) =20 /* exynosautov920 */ #define EXYNOSAUTOV920_PHY_CTRL_USB20 (0x0710) --=20 2.51.0 From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 708C535C691 for ; Wed, 2 Sep 2026 04:05:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; cv=none; b=TfzsQRRo3c2coUgAgrpAnuHQUvZMp68KWZ7FslA+X9CaPeu00UJ/mfGkPOh1EIENphQvbJp9eBrKipe9SAzfO0MdiKaNbF6DpraYxc0QRfGbM0+w0FYAbd2V7mKGe3af4P8TKzj9myh2mk1eWkdMd3HqWS1WrF9m+dg84u5t2xo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; c=relaxed/simple; bh=RGW62kuPKdpGZtlsWrT8q+dLZ60Gn74Urpdi1l5nyG8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qKq6Gk8Mh5vughRRnD118IvMwDv9EWvC7F4G27YwNUtKtm/eppjs6XioLhSaY/8B1JCxK+bFs2dNO9d9GyKqRQIlH9IsN/Fj/IPwNESVsD6aYZEh0SFC8sjuzZOnBdGIPO0gKmJLPUe/NQUFcSFFuS6axMEKEBOtlf1EIR54/pE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Ro3Cw67f; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Ro3Cw67f" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4956869750eso3173315e9.2 for ; Tue, 01 Sep 2026 21:05:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321951; x=1788926751; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7qMd2ZFBYSN7kxt9JqqMOCJYC6b6aEigB25kNAA0w7o=; b=Ro3Cw67fDyMs5tasVBlzpvz5ojIKVJfH/ggMZV7O+v4mijbkGBlWxbBGnTvmUhfczK kN8hRTOWeLJr+HovPkHQLY0IGgrzboPDfDvxWEX2l50mh4sKAjf+IjKCmATedrS4vb41 EQEYAKwPQxlxWRT2wmCxGhaogS6qUtQUhw+Q/pMZZn2qSdn8wrac+GcwvU++yvr0HHfz WZC/dRcwIuZUw86x9v1HRB5RevquEEu4bP43c9xc8BWB9fhSykFvGx1D1a67x+9QEp2x ItbOefT8AUZXcAZelEtckcTlRABrClbrE85fUzz09pMhQ8fasyCVmpxF2J11MRrQvJnv eS+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321951; x=1788926751; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7qMd2ZFBYSN7kxt9JqqMOCJYC6b6aEigB25kNAA0w7o=; b=Dsis4kcJr2zVXBd9h/woEmADaiqwSS+zUJpup6YlHk285tzBX9w5RD/43RD5/fuT3J hHXGeN2EkfDA28H8lqi/D8vvj1crpHPyStrYfzJvMZlARwNLxI2w64EuoxGdqlqolZCl LMxTwz/3+9p7b8W3SM4jmRnJC1w4ptGuTt68cdZUixMSNHCIhbXzy3rfY4O6D/vjieGO rNpHAxOjulHt3kcQCqEY/IB5BI82DBH1Q+jdPO8Xn7e7cBCEdrcetvmTXerOKgwFrV6P 2kcwhohYKPBiReW4BLsuApAqsIo0dkNQeXfrE1j4d+5KFg/fp/goCh5veMWMCM+HPnSM pjYw== X-Forwarded-Encrypted: i=1; AHgh+RoTJ1d3PuhKMg+yfDx9TWNxrFqNP8qw3zVGMIzjXhlIVDvdyAa0y59vBfJ5BA2lTCPpz0ELJOfBMvUN/Lo=@vger.kernel.org X-Gm-Message-State: AFuF++mfj6jzsv6i1Sg6KoJp/oshAkXNZLnWN9zdHqdzbjncxxQrKgrD TTLgsOl+d+fcaNEXLBZumr7j2s5LGzoM1yj9DsvqL0amGaN/w/7OaDePMvA+bJEb3AY= X-Gm-Gg: AR+sD121ge4Qk9N5bNiogj7erDZJsKdr3g5ixYWuaP/n7c6ZzRmBMAzkXUqQbY/DwQH /iTOTD9kwPxs/rdtr9dT6owfBAlZlInzbzblZGeKVBvHUFIk24Kk0ctEQdQwByippgu3emLD/6Y JASu8HzoC1zsKiHw948sG/my1f6dVXXYV4qVvafWVT4h269IUyqVEl7eEtBuuE0Gty7FxPDryTv NbQKG3gR5LWMniNbOLn80KGiIfWhsQxi6urL1dCxROhyRcmZV6EIisAanK3M9oq5MaYuHzxKNgw 4yKUDxOXQmmL7Hl4Z3Sd6/tIVljTitWztD4L4oWKwyecqYyEOnkIZ8yCpsMekI0p2Ny4N9d1svs 2K84FtzEhKPQKC94lvvDHD/9y4V3OLROOdCGBA1lI9DMwbo1vnBWEVMyJ7Nvgx4MqvSj2kxwAGx pjSaKt/NpInDZVZupTNF5q3kydAetS4ehtFNVxMyuOGOVtFGl8SaCC0lLNa/5Yztskx5xSIRr/D CPA8oJY4PLhf/CAGWvXPUpGDj9GQ3WmhdkLK6xuDIOKfGtGXmdLmT4C+7/ksC0= X-Received: by 2002:a05:600c:3b25:b0:49c:cfae:34d2 with SMTP id 5b1f17b1804b1-49ce55fb5f7mr29303145e9.4.1788321951546; Tue, 01 Sep 2026 21:05:51 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:50 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:41 +0100 Subject: [PATCH v6 4/6] soc: samsung: exynos-pmu: add Exynos850 CPU hotplug support 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: <20260902-exynos850-cpuhotplug-v6-4-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 Add cpuhotplug support for Exynos850 platforms. This SoC requires its own specific set of writes/updates to PMU and PMU interrupts generation block in order to put a CPU or a group of CPUs into a different sleep states or prepare these entities for a CPU_OFF or wake-up out of idle state or after CPU online. Without these writes/updates the CPU(s) wake-up or online fails. This also requires syscon regmap with raw spinlocks, so add its initialisation to main exynos pmu probe() routine. Signed-off-by: Alexey Klimov --- drivers/soc/samsung/Makefile | 2 +- drivers/soc/samsung/exynos-pmu.c | 24 ++++++++ drivers/soc/samsung/exynos-pmu.h | 1 + drivers/soc/samsung/exynos850-pmu.c | 95 +++++++++++++++++++++++++= ++++ include/linux/soc/samsung/exynos-regs-pmu.h | 5 ++ 5 files changed, 126 insertions(+), 1 deletion(-) diff --git a/drivers/soc/samsung/Makefile b/drivers/soc/samsung/Makefile index 636a762608c9..7f544e3c1fcc 100644 --- a/drivers/soc/samsung/Makefile +++ b/drivers/soc/samsung/Makefile @@ -7,7 +7,7 @@ exynos_chipid-y +=3D exynos-chipid.o exynos-asv.o obj-$(CONFIG_EXYNOS_USI) +=3D exynos-usi.o =20 obj-$(CONFIG_EXYNOS_PMU) +=3D exynos_pmu.o -exynos_pmu-y +=3D exynos-pmu.o gs101-pmu.o +exynos_pmu-y +=3D exynos-pmu.o gs101-pmu.o exynos850-pmu.o =20 obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) +=3D exynos3250-pmu.o exynos4-pmu.o \ exynos5250-pmu.o exynos5420-pmu.o diff --git a/drivers/soc/samsung/exynos-pmu.c b/drivers/soc/samsung/exynos-= pmu.c index 02076148c53d..19fd6ddd9498 100644 --- a/drivers/soc/samsung/exynos-pmu.c +++ b/drivers/soc/samsung/exynos-pmu.c @@ -92,6 +92,14 @@ static const struct regmap_config regmap_smccfg =3D { .use_raw_spinlock =3D true, }; =20 +static const struct regmap_config regmap_pmu =3D { + .name =3D "pmu_regs", + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .use_raw_spinlock =3D true, +}; + static const struct regmap_config regmap_pmu_intr =3D { .name =3D "pmu_intr_gen", .reg_bits =3D 32, @@ -133,6 +141,7 @@ static const struct of_device_id exynos_pmu_of_device_i= ds[] =3D { .compatible =3D "samsung,exynos7-pmu", }, { .compatible =3D "samsung,exynos850-pmu", + .data =3D &exynos850_pmu_data, }, { /*sentinel*/ }, }; @@ -482,6 +491,21 @@ static int exynos_pmu_probe(struct platform_device *pd= ev) ret =3D of_syscon_register_regmap(dev->of_node, regmap); if (ret) return ret; + /* + * For SoCs that support cpuhotplug/cpuidle via PMU updates callbacks. + * Such callbacks are executed under raw_spinlock so we need a custom + * regmap too. + */ + } else if (pmu_context->pmu_data && pmu_context->pmu_data->pmu_cpuhp) { + regmap =3D devm_regmap_init_mmio(dev, pmu_base_addr, ®map_pmu); + if (IS_ERR(regmap)) + return dev_err_probe(dev, PTR_ERR(regmap), + "hotplug regmap init failed\n"); + + ret =3D of_syscon_register_regmap(dev->of_node, regmap); + if (ret) + return dev_err_probe(dev, ret, + "failed to register hotplug regmap with syscon\n"); } else { /* let syscon create mmio regmap */ regmap =3D syscon_node_to_regmap(dev->of_node); diff --git a/drivers/soc/samsung/exynos-pmu.h b/drivers/soc/samsung/exynos-= pmu.h index 733e188fa2b1..4ecbf53cd4f7 100644 --- a/drivers/soc/samsung/exynos-pmu.h +++ b/drivers/soc/samsung/exynos-pmu.h @@ -104,6 +104,7 @@ extern const struct exynos_pmu_data exynos5250_pmu_data; extern const struct exynos_pmu_data exynos5420_pmu_data; #endif extern const struct exynos_pmu_data gs101_pmu_data; +extern const struct exynos_pmu_data exynos850_pmu_data; =20 extern void pmu_raw_writel(u32 val, u32 offset); extern u32 pmu_raw_readl(u32 offset); diff --git a/drivers/soc/samsung/exynos850-pmu.c b/drivers/soc/samsung/exyn= os850-pmu.c new file mode 100644 index 000000000000..0503c54d6363 --- /dev/null +++ b/drivers/soc/samsung/exynos850-pmu.c @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2026 Linaro Ltd. + * + * Exynos850 PMU support + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include + +#include "exynos-pmu.h" + +static int exynos850_cpu_pmu_offline(struct exynos_pmu_context *pmu_contex= t, unsigned int cpu) + __must_hold(&pmu_context->cpupm_lock) +{ + int cluster_id, core_id; + u32 reg, mask; + + cluster_id =3D topology_cluster_id(cpu); + if (cluster_id < 0) { + pr_err_ratelimited("invalid cluster ID for cpu: %u\n", cpu); + return -EINVAL; + } + + core_id =3D topology_core_id(cpu); + if (core_id < 0) { + pr_err_ratelimited("invalid core ID for cpu: %u\n", cpu); + return -EINVAL; + } + + /* set cpu inform hint */ + regmap_write(pmu_context->pmureg, EXYNOS850_CPU_INFORM(cpu), CPU_INFORM_C= 2); + + mask =3D BIT(cpu); + regmap_update_bits(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_ENABLE, + mask, BIT(cpu)); + + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_UPEND, ®); + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_CLEAR, reg & m= ask); + + mask =3D (BIT(cpu + 8)); + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_UPEND, ®); + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP1_INTR_BID_CLEAR, reg & m= ask); + + regmap_update_bits(pmu_context->pmureg, + EXYNOS850_CLUSTER_CPU_INT_EN(cluster_id, core_id), 1 << 3, 1 << 3); + return 0; +} + +static int exynos850_cpu_pmu_online(struct exynos_pmu_context *pmu_context= , unsigned int cpu) + __must_hold(&pmu_context->cpupm_lock) +{ + int cluster_id, core_id; + u32 reg, mask; + + cluster_id =3D topology_cluster_id(cpu); + if (cluster_id < 0) { + pr_err_ratelimited("invalid cluster ID for cpu: %u\n", cpu); + return -EINVAL; + } + + core_id =3D topology_core_id(cpu); + if (core_id < 0) { + pr_err_ratelimited("invalid core ID for cpu: %u\n", cpu); + return -EINVAL; + } + + /* clear cpu inform hint */ + regmap_write(pmu_context->pmureg, EXYNOS850_CPU_INFORM(cpu), CPU_INFORM_C= LEAR); + + mask =3D BIT(cpu); + regmap_update_bits(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_ENABLE, + mask, (0 << cpu)); + + regmap_read(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_UPEND, ®); + + regmap_write(pmu_context->pmuintrgen, EXYNOS_GRP2_INTR_BID_CLEAR, reg & m= ask); + + regmap_update_bits(pmu_context->pmureg, + EXYNOS850_CLUSTER_CPU_INT_EN(cluster_id, core_id), 1 << 3, 0 << 3); + return 0; +} + +const struct exynos_pmu_data exynos850_pmu_data =3D { + .pmu_cpuhp =3D true, + .cpu_pmu_offline =3D exynos850_cpu_pmu_offline, + .cpu_pmu_online =3D exynos850_cpu_pmu_online, +}; diff --git a/include/linux/soc/samsung/exynos-regs-pmu.h b/include/linux/so= c/samsung/exynos-regs-pmu.h index 9c4d3da41dbf..c7a82635fc36 100644 --- a/include/linux/soc/samsung/exynos-regs-pmu.h +++ b/include/linux/soc/samsung/exynos-regs-pmu.h @@ -1015,6 +1015,11 @@ #define EXYNOS_GRP2_INTR_BID_UPEND (0x0208) #define EXYNOS_GRP2_INTR_BID_CLEAR (0x020c) =20 +/* Exynos850 PMU Alive */ +#define EXYNOS850_CPU_INFORM(cpu) (0x0860 + ((cpu) & 7) * 4) +#define EXYNOS850_CLUSTER_CPU_OFFSET(cl, cpu) (0x1000 + (((cl) * 0x400) + = ((cpu) * 0x80))) +#define EXYNOS850_CLUSTER_CPU_INT_EN(cl, cpu) (EXYNOS850_CLUSTER_CPU_OFFSE= T(cl, cpu) + 0x44) + /* exynosautov920 */ #define EXYNOSAUTOV920_PHY_CTRL_USB20 (0x0710) #define EXYNOSAUTOV920_PHY_CTRL_USB31 (0x0714) --=20 2.51.0 From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C84E035836B for ; Wed, 2 Sep 2026 04:05:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; cv=none; b=grw4GTlFsIEhjv4K+LK+YTauHkpaij+8RpsNco4bt0AdJCnnNXVWiCOmHxckQ6SM+mjrmp/dsUQIz+njDrUDkvDvEkfvOp/i8KsxzJs1X/ayJUJfZ8/Z2bAZvnOiqqNjixyqggnrFYEfA88kDMH7mTlJEPgV6QhR2J+MD3HawJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321957; c=relaxed/simple; bh=U02rSKyzUzmCOmMCAOGr7JPyboEYq2F7JqSsroq7C50=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ml5Nw0CJtXaPa95neNXofWm1oRAH+eWrx8mxg7ibnf+HKDVB/oyglCTm3rs0M9DtJ9wKoS8ecS33xQ0zu49b2lko94l41PKddfF3hVIJTlfNPgtWd1j9Q8SF26dagxRptRZjVVlYeVKm+JunplsOTSgWMQdUpDtJVnC4E4DlZYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=W3ea2ono; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="W3ea2ono" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-49b392ccaacso7604795e9.2 for ; Tue, 01 Sep 2026 21:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321953; x=1788926753; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GFvygFZGUjQBUvyTV1K8zmfQ8M+g/wd4Pqbb8y8IqXE=; b=W3ea2onoKooBqbCDJnvgzlYoAdt89GyN7/iCwdILcLjgDl58tiZscDh6UiWXXkOLky Zk3t5/PQv/4jFRXE52e2kSU6lAQwjAp4A5kCcSQ5mtgYk0RlMp790g+RRNY+m4PPkUrO b51K7NZhFuNaJyVutDfkVUgF0CbWCvl1JIDtZCxxoJ9m3sOAD/J2IeHi/dajyrqw57fF xX/JxScysSEPM6xZkpOEENiPdO/94OUX0W5oOGOCHVHsoTN1AdcaNpNtzMKkuhtNlx+f fqJ4GHaSdAt63/SQvDGg0vdBqPKcHrCt+7HyTPXDePWnSbVK8nwkagwsZjkPnQwaOGoC x5tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321953; x=1788926753; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GFvygFZGUjQBUvyTV1K8zmfQ8M+g/wd4Pqbb8y8IqXE=; b=I57ws62jkUFQjHTE0J/EAvklGC4PwDjl5Hmh0jAR6VNHQmyu90U+EAfD10iqaUTVtc /9RA3kjI+8U22gpiqNbs5a1e/cd2mPI2VqvpWDbUdk92gybJDKau49CaNV2yParCkYMn 6yGXryWX0TrTqwUhU8EynzM4Xstja8Veex5F0FNeodHZ6Wzol3w1TkxSgqhJ0/GB02ZS tlyKE3N0Pm7tX5CkPH94aMf/3YBFeZXYc2uvjhp+3Xgd3wPCqGJQ7aBc3FOXvw2D8onp LvOCkWO3DJBGCwECJK9G5/fBYjyiCu7yWmVmUdlowv9KS0AKBQZlSeaBpeynJn380hhF 3izA== X-Forwarded-Encrypted: i=1; AHgh+RoSFJWtDEKJKhKIFoJOnvda4j8a2ce98chHRr7E32jBu/+kbsk8l8gSl7FvzCVdf1WXRoNVvZx7x6Y0hNw=@vger.kernel.org X-Gm-Message-State: AFuF++mDnMI4T2+rrsj4ylFk2sm1U+ZxTgj94Y0QVaM8i6Uu9dS+AVie C0CB0NFpA/cvNXcm+gLEwaI1hs+50Eypzn6W2kUOceeF9Epwz0EmnGC/idlFxMefSP0= X-Gm-Gg: AR+sD13HtpPpSNw0KOtSryzFUkx5xaq630cY3Ub2Hm3d4vyTX5x3mbgBDeK6AAGMbgV el19rryux2JoqMBDldiFF4naFUfBOoBjSVrrJ02AWGPURXJck6NQVimSPo8YnxSD8ZiHwtU+w1V r1/EsLHw8qs7RIrYHeAJa+2t0TpF/H3j81muKqhoEOFSa3AAIis0/Wx1kPj8ivm1GAutiiEk6zI NIRO5+G7Ya8CNuFHlxhG1++GHK1bdzJh1HpKiZruy3K+3I13lZutNi6rb7GFcLSlFyco0m3sREz Z2AhRmNLQVQ75i71bYJveWh/Ky0/oqG6Upxln/0uojCoWAJooRzaEjdpoSI2+MblQU4Qh8IshVT J5EQ1xUcOl5wCGjNY1LU5zQr4Mz7O8/stkd+YLgqzNU9ui6jjZf2Qcb41OTUk2AabWovn0N6zw7 oqcM5FQWpu9nTkufKmT6xrRWFKoFPRRa5FQ0xC77Cr4+WwjRwbHvCYIz0tXNDpmHDcklSgE7CoL Iyp3GPYq0PCZiFWlNodbsXyxmKV0VmUrQqJzy9y8Zpxidtxa5QTzsYIYoiwkOs= X-Received: by 2002:a05:600c:1f92:b0:49c:dada:30b7 with SMTP id 5b1f17b1804b1-49ce5816440mr28643995e9.2.1788321953089; Tue, 01 Sep 2026 21:05:53 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:52 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:42 +0100 Subject: [PATCH v6 5/6] MAINTAINERS: add Exynos850 PMU entry 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: <20260902-exynos850-cpuhotplug-v6-5-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 Add Exynos850 PMU entry describing new file drivers/soc/samsung/exynos850-pmu.c. Add myself as M there since I contributed Exynos850 PMU support and intend to maintain that. Signed-off-by: Alexey Klimov --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 554246ef6d91..44986153183d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -24290,6 +24290,13 @@ F: arch/arm64/boot/dts/exynos/exynos2200* F: drivers/clk/samsung/clk-exynos2200.c F: include/dt-bindings/clock/samsung,exynos2200-cmu.h =20 +SAMSUNG EXYNOS850 PMU SUPPORT +M: Alexey Klimov +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +L: linux-samsung-soc@vger.kernel.org +S: Maintained +F: drivers/soc/samsung/exynos850-pmu.c + SAMSUNG EXYNOS850 SoC SUPPORT M: Sam Protsenko L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) --=20 2.51.0 From nobody Sat Sep 26 11:48:09 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87D7F17A303 for ; Wed, 2 Sep 2026 04:05:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321958; cv=none; b=OMQK1haEfyrJCJQegwW9AQFBprYP/iZdHZdRdk9GuBZMSIhe28we9ZIsv7aBmk0Kz1oIv6wRpn0crWm6CFEL8/TvqSn8Ii+rYUZz22SpP6ga+ZN5+JlmkKcpWHDfjwuSX7WdXQ15QkG9G68qkaqKRJkD4iiSLZaDvHnhAh7QjIQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788321958; c=relaxed/simple; bh=XWk08yPlEEYsRaLrZ2NbI+7ePMXfSSERTc515p/viLM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EmNT8ncRZ/dRmewCqr50byD3V+AtRs4D9u9EKiw2J6jMQRGpkPxFjcJ9ALSFzCFrKd5UfOXdt38Q6z9yV8kP9Xgr5Zpu32vRam5g+LRECzWxg/OiPXZtfQ5kl0t9xystVrJK/lCVpZMa8BVUC23urUV4gmmLVVdD8FTinFsoyH0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=eeKbaE4o; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="eeKbaE4o" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-49954b88fffso3891565e9.0 for ; Tue, 01 Sep 2026 21:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788321955; x=1788926755; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eRKgobMcbQKYFXJECRgYm6MoWXyaDD5+5fNolQe68Bk=; b=eeKbaE4oqUVpT00Ihd2g6OUO1WGh5Og6F9yNzdTmTqsOZWNlhcu4moKNTIZ3XAIF4M m/C32lNPc05qMt8i9HoZIKG3Qvp7S29+5+LbwN3aVSpksVZD6JbQyWpOhJ+9JFBzXR7l aF+ndw9OIKCzgtJgFr/USD70BHMHTNeuIDOEOwQnZC1PNXvT1bnYzvOGcfzzwDyd902u vbRqotJW9QF3d56b132U6DakGS9o6URQXhPRxsEuWHWhoEd+oiWpKtyuHlz9GB9Zddrl bvf5Lk+OpiOVRAMOAHrXo6kHxY1O5c19yjL5eAwNwZiJakzdRagUiLF+a5jyBrANOgu1 +C9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788321955; x=1788926755; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eRKgobMcbQKYFXJECRgYm6MoWXyaDD5+5fNolQe68Bk=; b=hRl0Kp1aN12/ZLKsKog3nIXiFerP47ulPPXrwY1Jo4BCWLpVzPNQl/eZsj1zZCmdtb FWdgk7eZDPnhdLNN5VIWl3EsPUi76o0GaywczaGuw0x8zRezi5MkZxsYMptPDX9TwuNJ 4NQRoPJg8VGBx77NfidAtsoEtjWH9IYKm5cGm3hGgj7hs3UvzbJZvQ9LzJmPeQqmUcVh 5ijnaK9eugwQ7Wl3hlA1VaOkPjZuv2tTdurwE+P1dlY2Q2pmsFRdIbWKUij6QpjTzltd 6920fYGfmb4YQCtyPDQT4tgVw7ZPUpg6OV1c1oEmV0ohQ2G7FuzOOuDOK/Rk6+aKsB4q NNjQ== X-Forwarded-Encrypted: i=1; AHgh+RrHfed+OAakApzumnVRKqZnXxA2TGHLfEPxALuhy/L2pqp9ApAWHcQ07k2I49l73rc3fNmpxaHE612s0QI=@vger.kernel.org X-Gm-Message-State: AFuF++nWiywBLrt0QtIcs+h2WQdUMZp1CAgyR2KyI9Brkheq/FdpBBzB Sej0+BOR7Ljxb1Y1sfN2BmQ8IcslPWIAhwzo1dtiytm/hXdU64d1f2ZFzv+l1dAo6M8= X-Gm-Gg: AR+sD136XelUsE17LApGV6l/wVb7BhEVBtHlaTTneaVhc6rHQzbG1TaGpbutYy4SOMy GW+/5NBf4mrhWGFb9laQP9m+ajbzgbBedzH61qQfnKo1CBGDwjvggVrIZfT738m8r4TVkpuzOqi 7vndcLc3Q97DZQ4SjrxuEnaqquHN+ISbqS6YbCHzdiQmWVzLNeJqHzZOcSJr1w399NXhQDVHsIk TU1joYLAJUMtVXwBtxT7DhwAAF9nOqP8x0bTNboMfyTZnJfg7l01vIsVpOzjU5QryAYX92OLYpM 3HzeHoB8yplM3rZ59i8pa4AGVfL9Fe00i3Su6uxGiKJljWsNtPcrXrYBoZsFIkKwaQJR6RPcPd5 yETYamoaY5USi6FErSmn9QVKpQMbyyejM0p78USUI2S597oPRlepkFvqtTP3ajAIqxaaci0DUu/ 0aSIkM6gnm2pLQ5A+Exvx0FK+4qkkRakJ18iVSgaM6+Y2ScjsIyatbqdh0xdYxKd5J9a/0hhlc3 w4qlA1PHnNDrAo4RfiyRF8A8IHeyHG1/0ZQbW8vb7ukRwNc4T9Z X-Received: by 2002:a05:600c:3587:b0:49c:cee2:1697 with SMTP id 5b1f17b1804b1-49ce583bc25mr29047875e9.16.1788321954704; Tue, 01 Sep 2026 21:05:54 -0700 (PDT) Received: from [127.0.1.1] ([94.4.85.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49ce58da3acsm42979395e9.0.2026.09.01.21.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:05:53 -0700 (PDT) From: Alexey Klimov Date: Wed, 02 Sep 2026 05:05:43 +0100 Subject: [PATCH v6 6/6] arm64: dts: exynos850: add PMU interrupt generation node 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: <20260902-exynos850-cpuhotplug-v6-6-a85bb55bb118@linaro.org> References: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> In-Reply-To: <20260902-exynos850-cpuhotplug-v6-0-a85bb55bb118@linaro.org> To: Sam Protsenko , linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Peter Griffin Cc: linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Tudor Ambarus , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Henrik Grimler , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 Add pmu_intr_gen node for Exynos850. This hw block is required for different power management routines like CPU hotplug and different sleep and idle states. Also reference this node from main PMU node. Reviewed-by: Peter Griffin Signed-off-by: Alexey Klimov --- arch/arm64/boot/dts/exynos/exynos850.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/exynos/exynos850.dtsi b/arch/arm64/boot/dt= s/exynos/exynos850.dtsi index 911643008b9f..62dcfb18f7f9 100644 --- a/arch/arm64/boot/dts/exynos/exynos850.dtsi +++ b/arch/arm64/boot/dts/exynos/exynos850.dtsi @@ -226,6 +226,7 @@ gic: interrupt-controller@12a01000 { pmu_system_controller: system-controller@11860000 { compatible =3D "samsung,exynos850-pmu", "syscon"; reg =3D <0x11860000 0x10000>; + google,pmu-intr-gen-syscon =3D <&pmu_intr_gen>; =20 poweroff: syscon-poweroff { compatible =3D "syscon-poweroff"; @@ -243,6 +244,11 @@ reboot: syscon-reboot { }; }; =20 + pmu_intr_gen: syscon@11870000 { + compatible =3D "samsung,exynos850-pmu-intr-gen", "syscon"; + reg =3D <0x11870000 0x10000>; + }; + watchdog_cl0: watchdog@10050000 { compatible =3D "samsung,exynos850-wdt"; reg =3D <0x10050000 0x100>; --=20 2.51.0