From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 D35B837C10C for ; Fri, 6 Mar 2026 10:29:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793001; cv=none; b=VNZJt3otWLtmNRwWY9m4Mf7IrMJaGUe8EFWASh7Wc8dgroCGFNcD9zvn0uw+nba8oU4PgZftHxAycEVCR5FYjtQshh5JpLEDRfp9vUB5F+aS6KPzZBHYaZcbKiU4aRyz8fMQV+NWn4E82SU1yXGWCSimaV4bKDm5upoAOxfe4Bg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793001; c=relaxed/simple; bh=VXqNGlqX3hZoD8cv8P59wyGVL5FoVdrO7llV2dEVFW0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=havtca5lO/iZWR8wcFXabGY13XHGkyDzI2R+h1QK7/+7l+JVIIAtVdFkQFKL1T+C9nwmMxzKaPW4MhMzByZyk+v2k9/8OmzxQ7mArSjvZEwaQTPOLSIbVhKGrShVMwIP05IgxtWc4sbghEZJsDj6Pq/BGo2ezQaPW5T1nBH66pY= 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=Aycb3yD5; arc=none smtp.client-ip=209.85.218.42 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="Aycb3yD5" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b886fc047d5so1489588766b.3 for ; Fri, 06 Mar 2026 02:29:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792995; x=1773397795; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4gPeJxyuGY5/8F9b5AqNdyg2EFBWflmTDpqYPujzuFU=; b=Aycb3yD5XIvxzGgghnjxETlzPRDnEKrqZc9X9CHGhewxeFsVVNUv9mTWZzB+u6Rmb3 /q9o21jyb9akjFBlv+2ouG9AQHwLZwehQFeBmLj+CdtCjSSrXeM+CHOPLXMZ0xWNU0h6 Etia5m4dywRX+lmWpxMmhfsvQG2WSXI4mzflHoLJ5fDnwpHRIzygPta5IYr7k9xY9Q3u bos6wGrb5eZqN/Djxoq4ewVx3QmnpzM8bVv8H6CfCuhPX87FlpKwyQBD2eIAJuqVCk4/ v04b/vumoDigrgQDQ6XonFSLgrxBdm+ifWmd2Rv4QLB6T1MAVAPaP3nxXeKihM9KIo/1 GrUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792995; x=1773397795; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4gPeJxyuGY5/8F9b5AqNdyg2EFBWflmTDpqYPujzuFU=; b=uU+Pmt/6eJIkG9h9/ztHboNbcxpe4G6D8LWmQvPScwNd7hF0sAxASm9FQ5/pW852SX NBnJ5mET0do8Vl0Um/dUU2ncoVh2S6L/BhcGW5ww0IrT8R9v2fLyNfMjs2DK7TvlzqTH B1sYZ2UGfDeqWPtLe17/gNPn1NIjn+dco4nS4U5nO/izTa5LmtDLsO+I+xZFfuvF5Hk7 YWcxdOoCcmZ0GwUaSRhEv0TzVJcZQ5oPP2OJy3nKeX9Oj1X2yBTtFiGKKW9oYEw7a69+ ATmHVkQk/IUQ+KX3AWIPld4mCOMaF2yACZoVm2IJuQp6GehR9vk5zKz6QCcglcbLYIsd /o/Q== X-Forwarded-Encrypted: i=1; AJvYcCVUZtPjPPRrbTzhUNXA1+sYPg6E9+Gti8MTneZZh0kooMD4J2f1wPFl7VwrHvCOmDvCPRsOWkq8N4Q1mBw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw36FMc5I0KoftOzP9hYgbNLjY6hHQvMHpRJFXQpAK8Dp33ePmE WhHMoWFcalU49k6V6yD2FwekKrZOcRfmJMa9qopsf8qE/MXNmbd0HM0bqn/GNFQS4mU= X-Gm-Gg: ATEYQzyKCxp3mm+v6AQ5xG6rogvpYFMZMBr9R8fjG9qqlmC9LeSo+YlcHNEsSnsJeL7 2AUk7c4TDOYXgXWUWfThFmaS01kqXdzHaBhNNGLr3ZiKOm8cUia7ToOFgowkD623uVg9MwqDe4t +iH3MN8zV8Pqmefeg48GaN64IfF7KS5clzP8htIclrA12V11RZSyZmUoFmXPVEV4u+WUgY02qua zGRAussUgV1KKDCFfxtSHe6swLriVoXAbbccOAlfCneOIx1FkNxcofHcOUY9g8nS+wI0Y08ehI8 XRP8ZybwSGFOKNFj/rOxG7fbzbU5GdqvWgwKKXVusXn8F9ZDB1vC+oNKjR1o39eLxo0BZXSrcuJ OGhbO051qgOP/0CgC0B2HVpiNuukXHxZJeeAqO4DUkjdgaoC3tqcJiFZ+mGsV2KDPIcEFqLnoMI 3qLYk9rYJ5yOGIG+rWedMXJhmXILtXl7h8gdqQduTeqEM5pABjHGO/hR58DNQeYCt3a6liGbsiv R+DYdmpkBB9yil1FMgA01l/Gg== X-Received: by 2002:a17:907:3d8b:b0:b43:b7ec:b8a1 with SMTP id a640c23a62f3a-b942dcee05cmr89065966b.24.1772792995144; Fri, 06 Mar 2026 02:29:55 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:54 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:52 +0000 Subject: [PATCH v7 01/10] dt-bindings: soc: google: add google,gs101-dtzpc 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: <20260306-gs101-pd-v7-1-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 The Exynos Distributed TruztZone Protection Control (D_TZPC) provides an interface to the protection bits that are included in the TrustZone design in a secure system. It configures each area of the memory as secure or non-secure. Reviewed-by: Rob Herring (Arm) Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- .../bindings/soc/google/google,gs101-dtzpc.yaml | 42 ++++++++++++++++++= ++++ MAINTAINERS | 1 + 2 files changed, 43 insertions(+) diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-dtzp= c.yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.ya= ml new file mode 100644 index 000000000000..a8c61ce069d6 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/google/google,gs101-dtzpc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Samsung Exynos Distributed TruztZone Protection Control. + +description: + Distributed TrustZone Protection Control (D_TZPC) provides an interface = to the + protection bits that are included in the TrustZone design in a secure sy= stem. + It configures each area of the memory as secure or non-secure. + +maintainers: + - Andr=C3=A9 Draszik + +properties: + compatible: + const: google,gs101-dtzpc + + clocks: + maxItems: 1 + + reg: + maxItems: 1 + +required: + - compatible + - clocks + - reg + +additionalProperties: false + +examples: + - | + #include + + dtzpc_hsi0: dtzpc@11010000 { + compatible =3D "google,gs101-dtzpc"; + reg =3D <0x11010000 0x10000>; + clocks =3D <&cmu_hsi0 CLK_GOUT_HSI0_D_TZPC_HSI0_PCLK>; + }; diff --git a/MAINTAINERS b/MAINTAINERS index f0b879760b6e..611fa8fb9f8f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10883,6 +10883,7 @@ 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-dtzpc.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/ --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 7BA7C37C91A for ; Fri, 6 Mar 2026 10:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772792999; cv=none; b=hLxppR2Y/5/aESUxn/NCndlYhPajHwBMPe45JINW0obY9cOhRiccDPPwlXdHBT0ZOZ4BXLlxEHtGrnFfSNUrYKYp78tHB4aUWKZLds+z25IdM/acqesIaujDE8N42PJ6zC3vDjq0CjoLHnBk353qSOgZtymSWaV34MmmlsV32Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772792999; c=relaxed/simple; bh=iALQKe1s8XYCZQRBPu9whaNUYAS1mnLDVYkgTcpyPr8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=md0gW9+gSNQ9sHzAMPjIfgKOm7Bspi+X5L1PsgaGe+g46mNajAWSXV+pm/xQ9ivWo0JovIVNb5MR+4yh/U5qgg9vfHV5/V8QwTlLe+8GNSgWfozhOd+BK/AGXU1NnkwiTh3GNgh652KHsgZVvz4c4YrlbRj/D5Zo3esEd1RD0Rc= 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=f1LOJGs5; arc=none smtp.client-ip=209.85.208.47 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="f1LOJGs5" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-65f92a597a1so13121718a12.0 for ; Fri, 06 Mar 2026 02:29:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792996; x=1773397796; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3FUcP5CBZJQtkRrAcWORzv320QMtIf9elaWuqQIxzig=; b=f1LOJGs5pWlcY+l4VxBI8Y0dKRfKoW7du+4GwEHr6qT7q8+ZqsvivPWlvLv3tD78A8 VtZAI7AWRpbV14e98AOmNugaqRV8ol5CA6ra2pZAxZ4Jdc8Hb1SBeHOgRoGT1ZAVBYdo 8GSaJ0euTsPJzOeXLL0I/Ur6bJvrggtybohvjWp/Lb0kGFXUV7m6rsa1MmFVuGaDwIMJ UlEtzVSClyeAroG6Rfxd3Gue6xG3P2KYDKdBZH3i6OWuOPoBpMk14WP/+nYYb2TQLfAg r0QsRzk43SfRjl45DP+iPiMgJpkfgV39VgasEqkuCE4MEU7Evo/mGAjFAPtUrYKt1qvs rF+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792996; x=1773397796; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3FUcP5CBZJQtkRrAcWORzv320QMtIf9elaWuqQIxzig=; b=i1//CiiogBdQVSg3kTx05Rz8iqtZ1vLjfoXY8D1U3ZiGNZ8X/LmxEXGBVDfd1h1y73 XEOD6vkVtDmEpR9V7coI0vG9qZrwoHYYnHoQADsOe0z7RaBh4i9e93Yp4Za1Y+6WoY5J nJTili34JsYotQSoLp8N0uogwHes0P0tDLBhm1ULk5hiF1EDJACq92i8oUBe3rMdjN5N qlegVrgT0DWH0Xe+0qxLslXZ5EdCt4osUBCps3JfUjyX7UDZ5WxB043yjpjlr0OvEnF+ twGjsAdgMDxTRBmW2at1EjWRWHKvH3nRrwws01dtAHYpn3JTQ5Mlmwg7U6PsTxMpBz5D sB+A== X-Forwarded-Encrypted: i=1; AJvYcCU4R8OMhLlj4+fyFdpGk/MQq4hY6IIfFc4lLkrazGui0IVAqbRkF8Z0Pf8yvd6Oje6AYckbU+8aSRjr50o=@vger.kernel.org X-Gm-Message-State: AOJu0Yxs3Pvv2CSoFq3eWQIVjRUtyxwhYplR+EJMclirrDULJYchIiNc VSFwrzGy8e3mTYqK/HiAb1iFTINUEdZFDPiKossnoZvvDSc/aXtHm9JYvhO785YX5VI= X-Gm-Gg: ATEYQzzmwfp1jbhdwoTgxL2SrqkD2LbkXNuJbC9XBFI8PAQg47l5ZNdAfaT7323r0jF ASn0sSm9rNT67H3jz4p4e6iF3ahFHiGrXP1b3f8IWRq6QjogQ6Cae/IRPfyo43ROwi50ozw2ke5 4aHo9JluVfmhRFcOWGhCa6a4dk6f/tZzuxfbmASeEFvbODQF6WTL/L4EDM8CUOIBqPmnwK0UOad L+YnJMq0+WhrdAEgvdDCLFuuk+8/Pih3JExVZfgl7DVuA07k/E6Jk3kUh1hd1y6ePfI4VGwSD3U g0J/eR8lOdXHrqFbgsOWg6qg6/0Io70NmJFkfTV6dhfco+oWA/gotXGYMRjTLv51PNVjT7ndQTR lVqPs+6uP/zil01Seu7B/7C1cUJS1fg/bFEfyxyrnoFW6pU0/xBP3XAKuSMnfzvuJF2ghxh6RjH KkAWB47gTYnMkX1cTDsyOyxTBakxAH1xGbpb2fD0p23WXxBRl61wi0Jw+YUhIYNCsvX53tm0FFT xn26OnFuSx/15c= X-Received: by 2002:a17:907:f816:b0:b83:b7c5:de2c with SMTP id a640c23a62f3a-b942dbcd35dmr93807866b.10.1772792995758; Fri, 06 Mar 2026 02:29:55 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:55 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:53 +0000 Subject: [PATCH v7 02/10] dt-bindings: power: samsung: add google,gs101-pd 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: <20260306-gs101-pd-v7-2-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 Add support for the Google gs101 version of the Exynos power domains. A new compatible is needed because register fields have changed and because power domain operations involve interfacing with the TrustZone protection control on newer Exynos SoCs. Power domains can also have a power supply linked to them, so add optional support for that, too. It is believed that all (existing) platforms could benefit from this, hence it's not being limited to gs101-pd. Reviewed-by: Rob Herring (Arm) Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- v5: - add domain-supply and update commit message v4: - add new vendor property samsung,dtzpc - drop previous tags due to that --- .../devicetree/bindings/power/pd-samsung.yaml | 33 ++++++++++++++++++= ++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/power/pd-samsung.yaml b/Docu= mentation/devicetree/bindings/power/pd-samsung.yaml index 9c2c51133457..3f1a2dc17862 100644 --- a/Documentation/devicetree/bindings/power/pd-samsung.yaml +++ b/Documentation/devicetree/bindings/power/pd-samsung.yaml @@ -13,12 +13,10 @@ description: |+ Exynos processors include support for multiple power domains which are u= sed to gate power to one or more peripherals on the processor. =20 -allOf: - - $ref: power-domain.yaml# - properties: compatible: enum: + - google,gs101-pd - samsung,exynos4210-pd - samsung,exynos5433-pd =20 @@ -33,6 +31,9 @@ properties: deprecated: true maxItems: 1 =20 + domain-supply: + description: domain regulator supply. + label: description: Human readable string with domain name. Will be visible in userspace @@ -44,11 +45,28 @@ properties: power-domains: maxItems: 1 =20 + samsung,dtzpc: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Distributed TrustZone Protection Control (DTZPC) node. + required: - compatible - "#power-domain-cells" - reg =20 +allOf: + - $ref: power-domain.yaml# + - if: + not: + properties: + compatible: + contains: + const: google,gs101-pd + then: + properties: + samsung,dtzpc: false + unevaluatedProperties: false =20 examples: @@ -66,3 +84,12 @@ examples: #power-domain-cells =3D <0>; label =3D "MFC"; }; + + power-domain@2080 { + compatible =3D "google,gs101-pd"; + reg =3D <0x2080 0x80>; + #power-domain-cells =3D <0>; + label =3D "hsi0"; + domain-supply =3D <&ldo7m>; + samsung,dtzpc =3D <&dtzpc_hsi0>; + }; --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.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 41FF337CD37 for ; Fri, 6 Mar 2026 10:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793003; cv=none; b=UpMCGZ4tScQ5re43WAiHWYHqe2A3RFYwuNHuVDhCMSdQlZ3cV4oMOlMFqOmn3iTS0xWIjOafqtCncuB8qLzcKSJ2UiMQpySJtQsCVpUeEJpHfmESUzsoXMfJCu6mMkvOJv3gS81bj1dAU78/jkPF+8uQ9TJvsFIBmHkcO/q7ID4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793003; c=relaxed/simple; bh=rQimVWIJS5wU+wNLCWMKgCOW5DPxO8PvrErq53XFv5s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qgGYMCca9zvX1BpzdnrNniTWpdySijxyfA/zUy/tmgLs0OgFhJ59PBMweAdxmcLzelKzVJWIHxqFAqSpK8FaqT71UwtCCtohcW/SgnO3Y9+mgFhT0lhKn+uLlkMBVcjWCfqNHFzXHEc0+PhlAyZQ0PVU7cmWDonvjIgRLCrvmZg= 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=vCc/8i0T; arc=none smtp.client-ip=209.85.218.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="vCc/8i0T" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b8f97c626aaso1559898466b.2 for ; Fri, 06 Mar 2026 02:29:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792996; x=1773397796; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=piJ92bCcZbzXtfYOaOOoHhs9Euyr6xn5G8q2SxoNOHc=; b=vCc/8i0T9FCtxsfB+aVfD2BwqXeKeRSjLJkVBjmFZg3+JMAyFMVhzNx4nsKqp09Gpn GDXq8fxd3Jj1rDAijc5h7xTGiNW0QUmROsLmtObZ8JzlMED3GQYB2LPl7Lfj0iE3B4c3 htZSyPmGRGfWRWDLiR9/NFsCtUGemQiIN51MOzhalC+X8ys722ezvXKazDOk+sfSi6Wg 3D4dEtWPn9ctVwRcmhSUUI79UTWQMmFR0jdTuHltHeGPOYpcoP07NBRdoDeHujT3KwaL AJaFsd84E/rdX0WYZ5SHAfrKtG6+6NMQZVdFHFVE3l7JCnAcoopc7iaIlTz+4Zrk4gP4 s3xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792996; x=1773397796; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=piJ92bCcZbzXtfYOaOOoHhs9Euyr6xn5G8q2SxoNOHc=; b=NwUsZ/hR8y0gGKgTGq71ysi+k6Z6D/FZEJeDzTF8MOpqw7iNs01oXOsQ5Q4VmY2lES 20+DNnG1sg15jeswOF2sPEIePpbwytQuly/3Spzns/cnNeCOnbiDhi+6vyv26i5yfgnq Z0i0x1OflKyVn2ZiAuYE4B1ojRemldr8STZg0Kc8VcSRxpbB9Zz+rqYx21aAnrxscaMh 326UR3DU2Gh5Kl1QB36bpz0d7KJWpO2rKh72q+3NNof/y5vciQPrLW9iDFI0Ixx2OOvz 93On6XbLO6QPmueELGcjKS7WwQXqID7Y3wbBvSsfFl1zLABZyeeBEiq1ArR607YnBckr Ur/g== X-Forwarded-Encrypted: i=1; AJvYcCUM9YTnS0WkE6yoSmOO7JN/3BvE/ZHNRTqPnWWpwHoT5VS/ZSxxZK1hvrGpnxBPJ7rm6MvalatV4IkHpkA=@vger.kernel.org X-Gm-Message-State: AOJu0YxVgn1KFLcCiU7L3DWwsAl+ELarP1FWAbBE4vp4ssQavvkUtUwE DOCTZlW+WnKCgasXc+OzHgxqiIMp4eBGt77zMzXMiZ0yD1kl4RVTozrFMbXQNrZM58s= X-Gm-Gg: ATEYQzxAnU2XydPTmC/rDRLuR9V9m0527/CGUGf3pmgKuO1iDmf8AhowCA9A61AS8nV 4aExhobA/LtBk3J5gb/u8JgN93xN+UNZnxMnPHMotz4HxLMhNwmOvdNJs61iQUrlBNNbNc5LLYU ZkXq5tiBIAK8V3I+zNkURa4F5EKWyairPUeprT/sozMm+LdlBM4kM/HMDaJ8eYunEqrxtYkLnb9 c6b/95J9gchmupUXjXaUuIWO++SXyD9GCHb1ggA58V5l7rYDWGBMNH5BxY5UoqyaS6uEACFhiHB L8iT5tTKUTpSMK6NCo0R7aU4XUkVq5pzxCzw+V+WtVy/srHEO4e9CxevXyWDVoJTSL0r48jRY/m Va2xKAKdzdKRQHYqd/KKTSeFh5mDYte3TvwQAn+AtmbPTSIuD38bihnjaxQcAPIPIVvxndMOGuh 4UyKDUcWzD4wQrrpAeRAnz2NCGXHXKLCiIsmiUIzgHk/YkcFCEvM6kZx8wPfzdiJS0AAW6v5hAk GFvsVsSwNyd4XVBX9fFvHui0A== X-Received: by 2002:a17:907:6d29:b0:b87:10fd:b590 with SMTP id a640c23a62f3a-b942e05ddbcmr87217966b.60.1772792996324; Fri, 06 Mar 2026 02:29:56 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:56 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:54 +0000 Subject: [PATCH v7 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding 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: <20260306-gs101-pd-v7-3-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 The gs101-pmu binding is going to acquire various additional (pattern) properties that don't apply to other PMUs supported by this binding. To enable this, move google,gs101-pmu into a separate binding. Reviewed-by: Rob Herring (Arm) Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- v7: - drop invalid tested-by tag (Krzysztof) v4: - update since 'syscon' was removed from gs101-pmu compatibles - update since 'select:' was removed from google,gs101-pmu.yaml v3: - use additionalProperties, not unevaluatedProperties - fix path in $id (Rob) - drop comment around 'select' (Rob) --- .../bindings/soc/google/google,gs101-pmu.yaml | 56 ++++++++++++++++++= ++++ .../bindings/soc/samsung/exynos-pmu.yaml | 20 -------- MAINTAINERS | 1 + 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.= yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml new file mode 100644 index 000000000000..a06bd8ec3c20 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/google/google,gs101-pmu.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Google GS101 Power Management Unit (PMU) + +maintainers: + - Andr=C3=A9 Draszik + +properties: + compatible: + const: google,gs101-pmu + + reg: + maxItems: 1 + + reboot-mode: + $ref: /schemas/power/reset/syscon-reboot-mode.yaml + type: object + description: + Reboot mode to alter bootloader behavior for the next boot + + syscon-poweroff: + $ref: /schemas/power/reset/syscon-poweroff.yaml# + type: object + description: + Node for power off method + + syscon-reboot: + $ref: /schemas/power/reset/syscon-reboot.yaml# + type: object + description: + Node for reboot method + + google,pmu-intr-gen-syscon: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle to PMU interrupt generation interface. + +required: + - compatible + - reg + - google,pmu-intr-gen-syscon + +additionalProperties: false + +examples: + - | + system-controller@17460000 { + compatible =3D "google,gs101-pmu"; + reg =3D <0x17460000 0x10000>; + + google,pmu-intr-gen-syscon =3D <&pmu_intr_gen>; + }; diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml = b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml index 76ce7e98c10f..09368dbb6de6 100644 --- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml +++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml @@ -12,8 +12,6 @@ maintainers: properties: compatible: oneOf: - - enum: - - google,gs101-pmu - items: - enum: - samsung,exynos3250-pmu @@ -110,11 +108,6 @@ properties: description: Node for reboot method =20 - google,pmu-intr-gen-syscon: - $ref: /schemas/types.yaml#/definitions/phandle - description: - Phandle to PMU interrupt generation interface. - required: - compatible - reg @@ -176,19 +169,6 @@ allOf: properties: dp-phy: false =20 - - if: - properties: - compatible: - contains: - enum: - - google,gs101-pmu - then: - required: - - google,pmu-intr-gen-syscon - else: - properties: - google,pmu-intr-gen-syscon: false - examples: - | #include diff --git a/MAINTAINERS b/MAINTAINERS index 611fa8fb9f8f..6a00d97ccd09 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10884,6 +10884,7 @@ 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-dtzpc.yaml +F: Documentation/devicetree/bindings/soc/google/google,gs101-pmu.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/ --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 D6E7237D105 for ; Fri, 6 Mar 2026 10:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793003; cv=none; b=uE+z64JDFIRYaA9PiaBsrcgz5CszB23od0PVj8u1bd80rtdA/THoeSY9Y/HaATkCTRJBdbHy0qh+oMPJpXDU6Qlu5AWvc7BwpK5CTJ7eZYNMgjtEfWQip+q9TNrHJ+DPusXfNBYogvuBOjcV+cJK8uGqJQbN/sI8hMI7AL3khkE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793003; c=relaxed/simple; bh=gEkS+KNCFb0DbKDNC52RYY6aT/xJwnLizD3yMfs/RpA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SlaHeK4VxOPBu6M34NM7rGk/OCNdia/FoTtFVp70VQ5CW9qbWT+ZHiRfQZ8tmCxGV/N0hesugm9pdHDyLz8zCQ4HCKgL2mzNqzTNzfeA1xAPJwDfO2Hko0PWU7lmhNPLoLQhTncu4WX/T2ED4Ja2OREnikQFTafWiTyVSaOtt2c= 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=zacejEse; arc=none smtp.client-ip=209.85.208.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="zacejEse" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-660be63279bso5160147a12.1 for ; Fri, 06 Mar 2026 02:29:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792997; x=1773397797; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bsgk7ZObqyZr/3jbiTlB5XfU/jafWS+xFJNQ3TVojOs=; b=zacejEsez5XKEYwcdnSN9M0+cmTz6cSMr7jO6/iSt2Kgn9c/XkERN7efuDnd9s6pDc u/isEHYn/csrdC1Kwk+ay3cdQYcR65wQ+3FcfHAcfHAe3cBjLFPHl8XsMfx0NKjTTLzd YH4wgeDWqkVFDsajhkJ7dCvZ3z4T/2rj3p3+AVbEkDA7cdvSvHMD7uQzqjVHKj1bpcK9 QH5LAQU3ut/pmEKjIh8u51nooHLgQIar3vAk6TzYj2yHTBqBz7VlP9Je5Folxo6FX5Qk EP7jOLyBKCj6URoR7os9exnsqdy2UQxYiWr2QiYpWipsAPSQqox4g3FixM5nxlcnIdKz xFNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792997; x=1773397797; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bsgk7ZObqyZr/3jbiTlB5XfU/jafWS+xFJNQ3TVojOs=; b=Ej54B/0aASf95DL54uUYeo1sDIXLAemmYAW7nEt7Nye37hFx/SKBKn2ZSOlsLWpOOZ PUnCgxc7T84NDUbhveIIILJ4kCvveAGgkIZWh0a/WYABqumscq+n+DjDcExshzmyn5Cp y+Cz9srNPPMjGvlTHG3JixBKgdYoETN2zNqy0cq7nOJSZ/q8WgsD/6B2v7XaIqQSoSXU VnAfKbq7KczrWYq7LMdz/vcjaZPZQ12pDpFzR6XJdbwVOuaDQNMArth/a++wCA6gJrRD vDJZxeoHUu5lODMmezWvbqbMaNx7fJFjER56g4R8QF/OBJ0vxqG5pOyh+9cBpCxAzdLk Jj9A== X-Forwarded-Encrypted: i=1; AJvYcCVscLaPEcZoox0d0Rk0AA87dnfh5+NRs3+ogsoFRJkybPha5n6eoe5hejo1m06nGDGmWGvcAw9TnYYgFyc=@vger.kernel.org X-Gm-Message-State: AOJu0YyBwC+P/6nwUGMJX4HsP2CIZnisA7UIiiqK/mcTj6LEjAbKcjee 1XnMq+o1H72ZWMQHwQby0Z6K96Wo0lVF8VsBFt0NDa5Y1k246VH1AiTTxPkXz4tsegI= X-Gm-Gg: ATEYQzwqoH2iO9OfFiRDZhsUiS+OSr+lsY6q3augQOrDn2HJjfkVwnZfGAg6dXOalmh 1kPpaq/y/VcB5rFqdaDBkBfsWYR2Mey8uhc1wgdkkdt7nNbtCh0P90yMRrZpXiDKla2l6Q3iHnC aR6vSTCPY+f9FdUvYsPqrVmwbjd9xF4ODWCplZCb1SBYcqYuTzbcYfyZffJIOPV6IP5clOUr9eP CNaXsBY+dML6NKymuql3djuAomJf+U6BRx02BtEKjkUT3uIC/ePbQwqXTvZ5LF8/kz4JI3RLJ45 onflW1RJEfGPfE7ZjYUWDYwwiyk8m3wWTWVxoz9rf+Nz7bVpNf//yi7SWHBBO7zmYaaeJi9YKQP eGFMQglpSpS7edNRBy9QHb3Gv7Tpcb1f5BdUYeMtJS/a7Hbe5UFNIzzySF7JTIwdiJDzhi9rM08 +nLWDc4yHmlP1VBOG8Q/l8C7stEGIbN7nfW2jTibMCk0SDJ2HkUeLQEmzRgPPKNR2Ll7ArWnJqR 1ZP63mq4+dA2htRc70tyc8TCQ== X-Received: by 2002:a17:907:8690:b0:b8f:c684:db28 with SMTP id a640c23a62f3a-b942d06f624mr92068866b.12.1772792997027; Fri, 06 Mar 2026 02:29:57 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:56 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:55 +0000 Subject: [PATCH v7 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children 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: <20260306-gs101-pd-v7-4-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 The power domains are a property of / implemented in the PMU. As such, they should be modelled as child nodes of the PMU. Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- v7: - really be consistent with quoting (Krzysztof) - drop invalid tested-by tag (Krzysztof) v4: - consistent quoting using " (Krzysztof) - add samsung,dtzpc to example Note: Because the properties added are 'required', this commit breaks DT validation of the existing DT for Pixel 6, but a) that's simply because the DT is incomplete and b) a DT update will be posted once the binding is accepted. It is not possible to write the binding such that it supports old (incomplete) DTs in addition to the full version, but as per above it's not required to keep supporting old DTs. --- .../bindings/soc/google/google,gs101-pmu.yaml | 41 ++++++++++++++++++= ++++ 1 file changed, 41 insertions(+) diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.= yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml index a06bd8ec3c20..dfe6f87e5949 100644 --- a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml +++ b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml @@ -16,6 +16,14 @@ properties: reg: maxItems: 1 =20 + "#address-cells": + const: 1 + + "#size-cells": + const: 1 + + ranges: true + reboot-mode: $ref: /schemas/power/reset/syscon-reboot-mode.yaml type: object @@ -39,9 +47,23 @@ properties: description: Phandle to PMU interrupt generation interface. =20 +patternProperties: + "^power-domain@[0-9a-f]+$": + type: object + description: Child node describing one power domain within the PMU + + additionalProperties: true + + properties: + compatible: + const: google,gs101-pd + required: - compatible - reg + - "#address-cells" + - "#size-cells" + - ranges - google,pmu-intr-gen-syscon =20 additionalProperties: false @@ -51,6 +73,25 @@ examples: system-controller@17460000 { compatible =3D "google,gs101-pmu"; reg =3D <0x17460000 0x10000>; + #address-cells =3D <1>; + #size-cells =3D <1>; + ranges; =20 google,pmu-intr-gen-syscon =3D <&pmu_intr_gen>; + + pd_g3d: power-domain@1e00 { + compatible =3D "google,gs101-pd"; + reg =3D <0x1e00 0x80>; + #power-domain-cells =3D <0>; + label =3D "g3d"; + samsung,dtzpc =3D <&pd_g3d>; + }; + + power-domain@2000 { + compatible =3D "google,gs101-pd"; + reg =3D <0x2000 0x80>; + #power-domain-cells =3D <0>; + power-domains =3D <&pd_g3d>; + label =3D "embedded_g3d"; + }; }; --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 A4F0F37D124 for ; Fri, 6 Mar 2026 10:29:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793004; cv=none; b=J8S0QcC46IsvbFchzza68msUR5t8rqJ2rggZxZ68H1F9uJVC2EA6jyoeVKOU+2FNiN3ZxDOwli8maXh8Pg2wGkE2X49aez9Rj5WrmSjoAP6F78R2k2I12QnifWJqUEJrDQA6nHgkWvWpTvAlxpvil3hzh8ug7wXszRUsWl1HXIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793004; c=relaxed/simple; bh=F1S+e9a469QdSHta0n9ziXmHQDihxHrwcFmPJNecLNg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q4mLlg6PUoFppXviNZhCpwp6z7chvV8JRfjZPfRLUuKxJDyQpxBZ/aTum8sXt+JXmM+pnaMBoWU1vKN7UjkX62TZa8Vz3VPOcG6rjG0ZxNsC+wGBxyoPOAUGuQlPIzjSuKzdca2iNdeExnr9dfTkomHcuFDeMydl+hi18LTa714= 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=kzh62mRL; arc=none smtp.client-ip=209.85.208.50 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="kzh62mRL" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-65f94011dfaso2798860a12.0 for ; Fri, 06 Mar 2026 02:29:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792998; x=1773397798; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=aJ65cMxmtD9hm2QF0vSs9PHPLSm4kdpoTVF35SUjEBw=; b=kzh62mRLtj6dodZ1vZhlgSbPGX37bmVRJ9S4aJLf5OcY0XT/yIq0Zv7M7nZUkUeq9d oL55HcptLpcKXkXX8v+PKcYlcGUj8d4Jc32Vkp6RnE0pUdyK/ClDhQrTlqeCrlBnlg5k NGJ8mRJGgbD7kua/AVxRU/J2CiEK/bD9umXzc4qLT05YyZLOdI2b/vpFblpofpOb5ss7 TzF8Yso2GYDwZvgJYBM//LWySOJJGJynHBVfzOEkko/l5gdQjsJWeXiOOBVu0iE0t3P2 7WKDx57Xu3RrvfLL6JPRCiGexNdIkK3j/duNBN1Lk9xHr4278wtjz1mO+HX7bz7DbP6z 0Saw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792998; x=1773397798; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=aJ65cMxmtD9hm2QF0vSs9PHPLSm4kdpoTVF35SUjEBw=; b=ATHrGu0jgtFLKxmKhhD808pwYijjOTUit6GxmLNpXWo7s6xXEE9vGeCA9hTw1z3W5l E56GQ0hS4ZplK5gBOEzDi79uRzgJPfLTzazRgTHEVI0pZh2ROU0ragvZnE462oidLnTN 9JU2k0/kUtNZtroVI792l+3in9xSMPWFM6ibGD6WlcVy0g4uXLSM4WWyiyB7S6M1/c0z DOOa0yJAp/S4WIWRcUOF7obXUS0Rje7jwsWLS/tM5ulODi5rc36j456F44DXaXo2Sniy pZXLKVEqCAQQL5BYGPquxPxGaH5mocThrGFIhfDZNVb/p2cVcXOEYKS8/d1yWVlcZ1uN 13oQ== X-Forwarded-Encrypted: i=1; AJvYcCWKWg9vD7EstcE+ZEZ55L7BmFGHy+hTQtmR3HjaIbXXYkGYuCrjfDpE2gmq2F8o425AFi1bqB5hdVIHJM8=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/k7PAFF9ztxRXCOJyOrXUOJFxAay2vCXZslZVzPK8hQdEtU2P mY7LiZnamyH9+/IVlYB3D6dB2p+LF825H8pyyUbZbqMqcgmEmrH78DxNc9A0bRlTRC0= X-Gm-Gg: ATEYQzxujwMmZd9H201N0FU0N+AnuA9slmFAVcnuKK3wFQovkMq8M1sEhiylqu0wKOO oeShugD6+vHyVDselM0XLwVnDFzlcfnLS2vDVqQlMWoJzYSD2a0J+viPEuykJrmXhCqLFtzG8c+ jNgfUAp21vh2KrxI59k6m/Xha5FNkcT3Sl1PYYsrQN4yndB/gSPb7puP382Z3e2u5QFyzzg4Np4 FWKLJpR8s6rGVTHs1hbGDdeJJk0+Un+TJ7z4Onlvz0oUtjqaH8TG/Sac1Gv2OaVkJyEssrlC4NS rV5eFgsiNom3P8aLuDhXzY5Sp4nfEctW8+UznKE5pgQ5ysznMA9gkyXe2ZKThSujJnJVbvJdSdX 5u5iX77ugby10zMjrQjZbMlKw07DVOVku6Cw+2x7n70l4O5iRZfwWEA2KIB/vd5T1i8OjRbO1JT w0TfFa9B/4FGik58wddSWViNgm7TnTlC7Em1iQjJ7PL6jhGTlTIewe4ADoVhpJhNy0J2uY0Cv4M 5AVG3H3cIhfBJn+1H26NhHxsg== X-Received: by 2002:a17:907:6ea6:b0:b86:fca7:3dc2 with SMTP id a640c23a62f3a-b942da71fb2mr86532966b.10.1772792997560; Fri, 06 Mar 2026 02:29:57 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:57 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:56 +0000 Subject: [PATCH v7 05/10] pmdomain: samsung: convert to using regmap 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: <20260306-gs101-pd-v7-5-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Marek Szyprowski X-Mailer: b4 0.14.3 On platforms such as Google gs101, direct mmio register access to the PMU registers doesn't necessarily work and access must happen via a regmap created by the PMU driver instead. In preparation for supporting such SoCs convert the existing mmio accesses to using a regmap wrapper. With this change in place, a follow-up patch can update the driver to optionally acquire the PMU-created regmap without having to change the rest of the code. Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- There is one checkpatch warning, relating to the non-const regmap_config. It can not easily be made const at this stage, but a follow-up patch allows us to make it const and the warning will go away anyway. v4: - rework the loop in exynos_pd_power() slightly, to not return 0 early to allow more code to be run after pd on/off register write without changing the loop again, required for gs101. - add error message in case first regmap write in exynos_pd_power() fails --- drivers/pmdomain/samsung/exynos-pm-domains.c | 83 +++++++++++++++++++++---= ---- 1 file changed, 62 insertions(+), 21 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index 5c3aa8983087..3bcba7d38ac1 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -9,15 +9,14 @@ // conjunction with runtime-pm. Support for both device-tree and non-devic= e-tree // based power domain support is included. =20 -#include #include #include #include #include #include #include -#include #include +#include =20 struct exynos_pm_domain_config { /* Value for LOCAL_PWR_CFG and STATUS fields for each domain */ @@ -28,7 +27,7 @@ struct exynos_pm_domain_config { * Exynos specific wrapper around the generic power domain */ struct exynos_pm_domain { - void __iomem *base; + struct regmap *regmap; struct generic_pm_domain pd; u32 local_pwr_cfg; }; @@ -36,31 +35,42 @@ struct exynos_pm_domain { static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) { struct exynos_pm_domain *pd; - void __iomem *base; u32 timeout, pwr; - char *op; + int err; =20 pd =3D container_of(domain, struct exynos_pm_domain, pd); - base =3D pd->base; =20 pwr =3D power_on ? pd->local_pwr_cfg : 0; - writel_relaxed(pwr, base); + err =3D regmap_write(pd->regmap, 0, pwr); + if (err) { + pr_err("Regmap write for power domain %s %sable failed: %d\n", + domain->name, power_on ? "en" : "dis", err); + return err; + } =20 /* Wait max 1ms */ timeout =3D 10; - - while ((readl_relaxed(base + 0x4) & pd->local_pwr_cfg) !=3D pwr) { - if (!timeout) { - op =3D (power_on) ? "enable" : "disable"; - pr_err("Power domain %s %s failed\n", domain->name, op); - return -ETIMEDOUT; + while (timeout-- > 0) { + unsigned int val; + + err =3D regmap_read(pd->regmap, 0x4, &val); + if (err || ((val & pd->local_pwr_cfg) !=3D pwr)) { + cpu_relax(); + usleep_range(80, 100); + continue; } - timeout--; - cpu_relax(); - usleep_range(80, 100); + + break; } =20 - return 0; + if (!timeout && !err) + /* Only return timeout if no other error also occurred. */ + err =3D -ETIMEDOUT; + if (err) + pr_err("Power domain %s %sable failed: %d\n", domain->name, + power_on ? "en" : "dis", err); + + return err; } =20 static int exynos_pd_power_on(struct generic_pm_domain *domain) @@ -109,8 +119,18 @@ static int exynos_pd_probe(struct platform_device *pde= v) struct device_node *np =3D dev->of_node; struct of_phandle_args child, parent; struct exynos_pm_domain *pd; + struct resource *res; + void __iomem *base; + unsigned int val; int on, ret; =20 + struct regmap_config reg_config =3D { + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .use_relaxed_mmio =3D true, + }; + pm_domain_cfg =3D of_device_get_match_data(dev); pd =3D devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); if (!pd) @@ -120,9 +140,26 @@ static int exynos_pd_probe(struct platform_device *pde= v) if (!pd->pd.name) return -ENOMEM; =20 - pd->base =3D of_iomap(np, 0); - if (!pd->base) - return -ENODEV; + /* + * The resource typically points into the address space of the PMU. + * Therefore, avoid using devm_platform_get_and_ioremap_resource() and + * instead use platform_get_resource() and devm_ioremap() to avoid + * conflicts due to address space overlap. + */ + res =3D platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return dev_err_probe(dev, -ENXIO, "missing IO resources"); + + base =3D devm_ioremap(dev, res->start, resource_size(res)); + if (!base) + return dev_err_probe(dev, -ENOMEM, + "failed to ioremap PMU registers"); + + reg_config.max_register =3D resource_size(res) - reg_config.reg_stride; + pd->regmap =3D devm_regmap_init_mmio(dev, base, ®_config); + if (IS_ERR(pd->regmap)) + return dev_err_probe(dev, PTR_ERR(base), + "failed to init regmap"); =20 pd->pd.power_off =3D exynos_pd_power_off; pd->pd.power_on =3D exynos_pd_power_on; @@ -137,7 +174,11 @@ static int exynos_pd_probe(struct platform_device *pde= v) of_device_is_compatible(np, "samsung,exynos4210-pd")) exynos_pd_power_off(&pd->pd); =20 - on =3D readl_relaxed(pd->base + 0x4) & pd->local_pwr_cfg; + ret =3D regmap_read(pd->regmap, 0x4, &val); + if (ret) + return dev_err_probe(dev, ret, "failed to read status"); + + on =3D val & pd->local_pwr_cfg; =20 pm_genpd_init(&pd->pd, NULL, !on); ret =3D of_genpd_add_provider_simple(np, &pd->pd); --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 32EFD37D130 for ; Fri, 6 Mar 2026 10:29:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793005; cv=none; b=UjbrDM1A0SQF4pXqe5EamtCShgSfa4tnmlOaGswg8WyZDeNHn/hOeP92L8eaI80s0V4hyD+LVpCQasy9CWdjZrd4v09WzkkqWHuY/J2S6p7x9B/WvpIWsunl4YcoaV8Ovm3vLCxKWX6V6kTAte3eaoP3znYLRw2Bt+a+H4gM8Vo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793005; c=relaxed/simple; bh=dHULg4KAQ86aduIcQuHp4BhJ2Nb07EP6bPz5fIOQLSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hiGRZVlFgxbOIcf9TogfOSFKr3QELBa5U/olSzWm8cUgmzcb392wA/OfAAE6KSu0gKLtAJMfOmEvltXMz4Qpnzu0xw40T/AKgWqigGs7VQl/gbA0cW4AFHHfexTB61exhbq4dh+lKfCOvXuuj3JLm+DFvACF34S2jW2CJp//8v8= 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=FL4AHvQE; arc=none smtp.client-ip=209.85.208.47 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="FL4AHvQE" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-6618bc129acso1339804a12.2 for ; Fri, 06 Mar 2026 02:29:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792998; x=1773397798; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=aes9Ymy2SVK6T0USFDpwiCwEp+iOTQGnFHuH7w4M/To=; b=FL4AHvQEVYvbAajWoTI8ePBmqFickSVhiwIdB43AaSjVsXPr3ujGMbZh4S2Fwg/pso 9D5GzB2iEcd21+1U5GzizJRFvXQ2fN+qFydGy9i9/cp4v+xJud6PFeRVxGYmR7KCL0Mi hWCkhdNi+WvVUl+HInB5h+jNtygB49ExlFetI9KTjCOviPX/Y0Inm8nGgWL7mVVakHOK I/Psk8OLhW/Vxie16lYKAKyvPTzKiwRfgMrT2hxy7c/n1v27+ERlgovVs9A0w20eka7L +Tdiw7PwEsX4zz18/ED0nV4O9GePgn4V5N5/vy78pnZdEZehCLkuseO3yT1ObfgfGufW GEgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792998; x=1773397798; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=aes9Ymy2SVK6T0USFDpwiCwEp+iOTQGnFHuH7w4M/To=; b=LnmMpDd6/Sb08csI9FEUAFkBCptkkPM9u9yU17AsIhgqlwIXjS1Mb0gVNYpOtXUMFa EID1TGqwXeeJy66urVGFtT9TDpoR/jAaAt/iQwj4rwmALcj24V7ddUMGkQ4V7/wDch/o IlJIJhJSzvK/Y4WqIi2fTbAUyO0NFqGfR/txn/Jo2raPxWGYyfT4JxWTkwsxxihvOOS/ jjNaDyi1tSqcmb122ZyiUKjIeBRMrwGnP7e0GfROSPWW3ob2hKd9yNae0is5QGYf3922 0dO/vx/y99ST21A+EmBaqLa7azBiRKODsKmiRnqPrPHd4b4UnK5QZKdy+XtgwXKiMZhq hShw== X-Forwarded-Encrypted: i=1; AJvYcCVr9oMth51Zi6NqmeKTpaU5dpVwhtwvllILOpNvFKM4mCPRHZWXBcEQ9RBF+lKXCAK01ZL7qAiakN3JIGU=@vger.kernel.org X-Gm-Message-State: AOJu0YyKQnYc0zABbY8DKhP2mXKPJpgJGhstaImedQ4TAR7gRcrWaPdk +JqzgwOjCt1w1B2yshtGOHuROtf/5g/EAwTMVT/XXxzbqsGPuKE625Dbn8V+mm/ZlL8= X-Gm-Gg: ATEYQzxpWBHlbm/RlyQp++2TVhHOnMgB+yWpz5Xfm1L375haAulyVd3BfcFMtSw21cL l7ALHcr88CybOtf8Jv7Vm0bdK5zQgv9NrGaJ5WGhet2S7XmTJex7n872HnQ5NRzkmR0sDkACIOE t++xkXEY8l5XrG2bIgMy9GB8xIlkbv7gk9WDV9dOB4ivQu7OveeWyvPdItLnptI+clIMPgO5DS/ 6Q+qptL8o6dDSUF57k5egC9jEFBssC1vxQooH25BSqfCob1FYpgKHjFmDdypvfbuhV/CEvHFWZf kr9ZJQgWdj8Fsp8HZ2n32/NYlipWK17kaR/wBwNT2ashVAydpE760MRBEhBJ8zaHIMujrJptw+R xburYZAD59QYbVkp6Q3QET+Y08veTW4m/8v6EJZ9ZGBfYRXpZrmRtlNoYypts8VIdII8TwJPi0z h2SATmwQFj+xSvEBGmk8YT+5+t4eRS2adOVOt7ao6LNZglbmLuknGYEshs/+u+0L8SRj+MRus79 8FLvEpb+ETEZA8= X-Received: by 2002:a17:906:9f8e:b0:b8e:7dcb:7f1b with SMTP id a640c23a62f3a-b942dbdc76fmr87190666b.21.1772792998248; Fri, 06 Mar 2026 02:29:58 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:57 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:57 +0000 Subject: [PATCH v7 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4 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: <20260306-gs101-pd-v7-6-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Marek Szyprowski X-Mailer: b4 0.14.3 On platforms such as Google gs101, direct mmio register access to the PMU registers doesn't necessarily work and access must happen via a regmap created by the PMU driver instead. When such a regmap is used it will cover the complete PMU memory region rather than individual power domains. This means the register offsets for the configuration and status registers will have to take the power domain offsets into account, rather than unconditionally hard-coding 0 and 4 respectively. Update the code to allow that. Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- drivers/pmdomain/samsung/exynos-pm-domains.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index 3bcba7d38ac1..8df46b41f9bc 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -30,6 +30,8 @@ struct exynos_pm_domain { struct regmap *regmap; struct generic_pm_domain pd; u32 local_pwr_cfg; + u32 configuration_reg; + u32 status_reg; }; =20 static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) @@ -41,7 +43,7 @@ static int exynos_pd_power(struct generic_pm_domain *doma= in, bool power_on) pd =3D container_of(domain, struct exynos_pm_domain, pd); =20 pwr =3D power_on ? pd->local_pwr_cfg : 0; - err =3D regmap_write(pd->regmap, 0, pwr); + err =3D regmap_write(pd->regmap, pd->configuration_reg, pwr); if (err) { pr_err("Regmap write for power domain %s %sable failed: %d\n", domain->name, power_on ? "en" : "dis", err); @@ -53,7 +55,7 @@ static int exynos_pd_power(struct generic_pm_domain *doma= in, bool power_on) while (timeout-- > 0) { unsigned int val; =20 - err =3D regmap_read(pd->regmap, 0x4, &val); + err =3D regmap_read(pd->regmap, pd->status_reg, &val); if (err || ((val & pd->local_pwr_cfg) !=3D pwr)) { cpu_relax(); usleep_range(80, 100); @@ -164,6 +166,8 @@ static int exynos_pd_probe(struct platform_device *pdev) pd->pd.power_off =3D exynos_pd_power_off; pd->pd.power_on =3D exynos_pd_power_on; pd->local_pwr_cfg =3D pm_domain_cfg->local_pwr_cfg; + pd->configuration_reg +=3D 0; + pd->status_reg +=3D 4; =20 /* * Some Samsung platforms with bootloaders turning on the splash-screen @@ -174,7 +178,7 @@ static int exynos_pd_probe(struct platform_device *pdev) of_device_is_compatible(np, "samsung,exynos4210-pd")) exynos_pd_power_off(&pd->pd); =20 - ret =3D regmap_read(pd->regmap, 0x4, &val); + ret =3D regmap_read(pd->regmap, pd->status_reg, &val); if (ret) return dev_err_probe(dev, ret, "failed to read status"); =20 --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (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 E2E3A37E2E6 for ; Fri, 6 Mar 2026 10:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793007; cv=none; b=HGhE2M+o3N2ICQ7nlXAE1RXQv4Ico96ur3DTKSbqUb/fM1OK+5agQDg/7sFAf6FErFuKSx6crMBVH8jJLuM03zsyGNoM3QJi0jIiQ2KZE6SWGa94t8Kn0SHjkh1pG9mc1v0wJbbWUlV7siQD+HJCarniBHuc8lOH9uWcdIJKeDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793007; c=relaxed/simple; bh=0U4HtqSeHlGrJn9AJ7ErQ0CtQcraLAhfSS8YefF1XM0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hHfucooCpd3j6NmpWD5F7i8X1fHXq50t+A1wnFJ7/rb9Q0KZlfx+RxaNm3qJrM4AD7NrTgzhAay0kEP5+DVo5tyKLeJWTiAVPx56rUvksuEui4lmXDjznXaE0sYIdl2RMGXDvSYsngQYEEol9De3y+q5ntSlORodn+F48dCgKTI= 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=qZE9N9f1; arc=none smtp.client-ip=209.85.208.49 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="qZE9N9f1" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-661568ce781so2482078a12.0 for ; Fri, 06 Mar 2026 02:30:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792999; x=1773397799; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=VJGr1pYRHm/J99djTiuPZ983bNSUstvUPO/CtwCwtA8=; b=qZE9N9f1CMPnzrFnwCxX3bekxlpg45NjSj3kEadC3TDB7UoZbuOQ5tbtjqJ2n0pUR/ UcsvstpwHKs8eYoJ5L1v9CHgETcB5OoVty2Rv/ohavJOxIWoptEJOWEkmIIxTGy1Zd03 mhqHc92bYAN3L2mgVu39a4UMWVcscuBTgruaDwS3Yr7ZtdIX5z/uJISMfgI3Hw4rTi4+ T2Bqrbvn1aBR9m2yTusw6+0B7mteEj3veP9p9vO7P4fpep8oqRmeYZjr6lXNEk7npYN7 sr+BqmGespubQ2deW7ALDmy69mq157qJFn2By4sInNAFdCVxyduBi5p6GLUmVlYX6sct peWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792999; x=1773397799; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=VJGr1pYRHm/J99djTiuPZ983bNSUstvUPO/CtwCwtA8=; b=Cdi8sZ5w9cy2aYSF/0myEiOUzNM/pxJCxSlJmc0Ed2/VnJTyjK1O9gUKR8betSxp35 TjS3/TVs/M6Q6ZfHXw0Vwe7gyi4gR4e0anEJsgzrc3FY5JcewYoSWXfvVXKSKNdJOb8L S6tAaRNv2p7RGc1NE4iGKaHdX0600wISefnx8sZRP9lQ8HgxFj1tiSWFYHiFdCTlT8Tw /I+L20AMHShMVDkAd5vSUilnL3ZPSdICK8coszok6TqZCnETfa4edzilyrHozHD5qnk/ h2Ql1Bf9ykusBy8+0sjmRbdIJZ0u0u4mCwmhFN0cXlufeyewhDWuIqvq9kg6q1s47X3W zVdg== X-Forwarded-Encrypted: i=1; AJvYcCUbZhezsH/lXw7ZqLPCimL0n8qZdW4bB9/QyddZCWhpETCRaXihZ7bCN+AcYR9JbARmQ+3eUkePgfJLd78=@vger.kernel.org X-Gm-Message-State: AOJu0YwCyuzQfejz8MMfcid1sq9WT586ogDj+yz2V3J0mXzWFGKoe5w2 xjD+Tj5BGfyKky/ca59KJ7uWtJm8AR2rt/PsV0AGApbgBEKQoF5slWbhWW9izUKtnOg= X-Gm-Gg: ATEYQzwMivdpDVGgaUqTVVEs7fLfFvrJBFhn0dmStiIws1kqiv1Xob6dI31Vr9B754M UrxL0s14+9CNQDZEdkDJNG67HhMsY4Camc1f4TRefCXSFM5b68DrVqibbkGMv5fwvD/VLboCIsX hkHZwSbrNimiS1gUz3452As1q1Q+vz9KQRHdnBKtt+8MPqZs07KeOhQw0JSE81+HfOQ1Q3U+70U olMmCr0V0jbHX4mAZV13gd0zsTJKkIH6Ns7qJaTXT0NjLBiSeOIglEW98u4l/G/ShEQNRERtHio 55rTrvlgNm6mExN7SGNry+mETx7BKf134b5De7ve8EZuhbQplODl++ERSEoa04tJmHLIYFNRfxf niKLemgjTbzOsr0zwYbu3BNH9B6oyOQp4aPfmq4fMi0MunFqAB8FlGyps3L3v5peJ3aBNSheK/j uaNfBbBRK1aK9EI1IrKIolSU/mAvKp5QbmZzbfEgjj/zrPVLSfQEmmL+l/dWd9OLuVBVcXN2kB7 mFBXtdtCKO8wXY= X-Received: by 2002:a17:907:6e9e:b0:b94:29e:a94c with SMTP id a640c23a62f3a-b942dbdc1femr96088266b.15.1772792998840; Fri, 06 Mar 2026 02:29:58 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:58 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:58 +0000 Subject: [PATCH v7 07/10] pmdomain: samsung: add support for google,gs101-pd 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: <20260306-gs101-pd-v7-7-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Marek Szyprowski X-Mailer: b4 0.14.3 On Google gs101, direct mmio register access to the PMU registers doesn't work and access must happen via a regmap created by the PMU driver instead. Add a flag to the device match data to denote this case, and obtain the regmap using the parent node in DT if true, while keeping to use the traditional direct mmio regmap otherwise. Additionally, the status is just one bit on gs101. Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- v4: - add 'use_parent_regmap' flag instead of going by 'syscon' compatible in parent, as it's not a given that the parent provides a syscon- compatible regmap (it actually doesn't anymore after recent changes on gs101) I've still kept Marek's Tested-by from v3, as legacy Exynos code doesn't change. --- drivers/pmdomain/samsung/exynos-pm-domains.c | 66 +++++++++++++++++++-----= ---- 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index 8df46b41f9bc..2214d9f32d59 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,7 @@ struct exynos_pm_domain_config { /* Value for LOCAL_PWR_CFG and STATUS fields for each domain */ u32 local_pwr_cfg; + bool use_parent_regmap; }; =20 /* @@ -93,8 +95,16 @@ static const struct exynos_pm_domain_config exynos5433_c= fg =3D { .local_pwr_cfg =3D 0xf, }; =20 +static const struct exynos_pm_domain_config gs101_cfg =3D { + .local_pwr_cfg =3D BIT(0), + .use_parent_regmap =3D true, +}; + static const struct of_device_id exynos_pm_domain_of_match[] =3D { { + .compatible =3D "google,gs101-pd", + .data =3D &gs101_cfg, + }, { .compatible =3D "samsung,exynos4210-pd", .data =3D &exynos4210_cfg, }, { @@ -122,17 +132,9 @@ static int exynos_pd_probe(struct platform_device *pde= v) struct of_phandle_args child, parent; struct exynos_pm_domain *pd; struct resource *res; - void __iomem *base; unsigned int val; int on, ret; =20 - struct regmap_config reg_config =3D { - .reg_bits =3D 32, - .val_bits =3D 32, - .reg_stride =3D 4, - .use_relaxed_mmio =3D true, - }; - pm_domain_cfg =3D of_device_get_match_data(dev); pd =3D devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); if (!pd) @@ -143,25 +145,49 @@ static int exynos_pd_probe(struct platform_device *pd= ev) return -ENOMEM; =20 /* - * The resource typically points into the address space of the PMU. + * The resource typically points into the address space of the PMU and + * we have to consider two cases: + * 1) some implementations require a custom regmap (from PMU parent) + * 2) this driver might map the same addresses as the PMU driver * Therefore, avoid using devm_platform_get_and_ioremap_resource() and - * instead use platform_get_resource() and devm_ioremap() to avoid + * instead use platform_get_resource() here, and below for case 1) use + * syscon_node_to_regmap() while for case 2) use devm_ioremap() to avoid * conflicts due to address space overlap. */ res =3D platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return dev_err_probe(dev, -ENXIO, "missing IO resources"); =20 - base =3D devm_ioremap(dev, res->start, resource_size(res)); - if (!base) - return dev_err_probe(dev, -ENOMEM, - "failed to ioremap PMU registers"); - - reg_config.max_register =3D resource_size(res) - reg_config.reg_stride; - pd->regmap =3D devm_regmap_init_mmio(dev, base, ®_config); - if (IS_ERR(pd->regmap)) - return dev_err_probe(dev, PTR_ERR(base), - "failed to init regmap"); + if (pm_domain_cfg->use_parent_regmap) { + pd->regmap =3D syscon_node_to_regmap(dev->parent->of_node); + if (IS_ERR(pd->regmap)) + return dev_err_probe(dev, PTR_ERR(pd->regmap), + "failed to acquire PMU regmap"); + + pd->configuration_reg =3D res->start; + pd->status_reg =3D res->start; + } else { + void __iomem *base; + + const struct regmap_config reg_config =3D { + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .use_relaxed_mmio =3D true, + .max_register =3D (resource_size(res) + - reg_config.reg_stride), + }; + + base =3D devm_ioremap(dev, res->start, resource_size(res)); + if (!base) + return dev_err_probe(dev, -ENOMEM, + "failed to ioremap PMU registers"); + + pd->regmap =3D devm_regmap_init_mmio(dev, base, ®_config); + if (IS_ERR(pd->regmap)) + return dev_err_probe(dev, PTR_ERR(base), + "failed to init regmap"); + } =20 pd->pd.power_off =3D exynos_pd_power_off; pd->pd.power_on =3D exynos_pd_power_on; --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 5462637E2FE for ; Fri, 6 Mar 2026 10:30:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793007; cv=none; b=NlZrmHjr2hBENWjHxjBCNM5z2dpq6Yr33n1JNxkVOzGxPoAetp4hTmIW4+DkfNVlD9yWVpitFWrLQ+7O2LrEsQn1yvw5dWdY2yb5OXjFEu7QafkkYmfIKnYPoA32IiKXjRL/2HkdAh7NccT8I7mIiIfrkGE9ao/T3tnwnlooDFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793007; c=relaxed/simple; bh=k+2eK86lvnhd0G39XcYd0Wo9v7NwbPnA00WtqszUSr0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ESHdzDki2xIPadnWjDOz4wgoGex8QiheWyP/3hNFkxSBkLGG7B5HQ3XZh+F4g4oMVzhm+geM6VWaG5FXHmfbxeQxA4LX+buEWdrxMn4hSsk/sHO0wJ+945MUgQw4WytGvxyAvaJRZRbAgPuGT2/iYw9L66VD6LEgNyYftE5Dc9c= 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=dKNuhlt3; arc=none smtp.client-ip=209.85.218.46 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="dKNuhlt3" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b9382e59c0eso454001166b.0 for ; Fri, 06 Mar 2026 02:30:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772792999; x=1773397799; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GJyveOpQYRN0Rj97xYSp2eMNn5Hi3Nxu7cTlokaFCRE=; b=dKNuhlt3KCfBsuTey8Np6s1O64kfB8yNf95T89pvdr0nD08aWxe5lj9CrquQYlcBSv FQr1qwZnDWnjsB7kGtONsMcnMYXbgB7eToQRh0r2WYf9wUEm47udvF9rGD6ixRFCwUk7 01M1xTNKr1uQT1T4HPjbbMBcYRs7Uj1bXn8YLOEaPKIHLUUOt9aCvGvEsTbNRGN5t+fg UTAwUjN2PYq0rgk/+90Zvnq1/Q0kI+YC/VY4NJAGOaYS8naluir2Uao/VwrjKt+QxAgZ EMNdd3fydPClvSs36YUHrQ+bAcv++NVaFKBeowH3p7CS1P9Qyha84lIcb4QbBZ+RSShr mHIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772792999; x=1773397799; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GJyveOpQYRN0Rj97xYSp2eMNn5Hi3Nxu7cTlokaFCRE=; b=LE9icv5JL6ElfXx4TzZdvSR75J/dajYENeMoNkKuFUQBIKpZSgRAzek2ZdWhYekePS 0vQxRzOu2OSa61ICCT+dlbl/ql1CuGsogz9gFa9gDrNIolRKlFjKEmNBlRwC9KmHyFqh rOhc9+ve08x/Nd3Lx2NR3J9NSljfCJhXWmKDT34dEKnc9VhkL+uchwe8Yp/ruMpQibWp SsP0OsuMW8mFlMS6bnZh4MsLDFwkv5zHI5FD9XTLkR2S2k4qnLKC421mKb/Av1DgI/wI +9FGELR5FZ6ZTKGjK4AX6U6cKBwdNLvJv8Jce/P4kflCfXN7F5BZk0PeI6RB0SB4qj0D ZBvw== X-Forwarded-Encrypted: i=1; AJvYcCWhlfi0/b++ixW+vshU0f1qUrfmTmHM5PlCvCKCLt89YRlI7sjrIi0awD5zU8Z8tJdtm6kUG8dzwU9gIG0=@vger.kernel.org X-Gm-Message-State: AOJu0Yxr1SINGQC6h5dYt2qR3Sxy63/HgqFemxJ6iLZ2xmZXFu200KIt mduQsCL1BT7xWLelyFo0tx8h7cx5wZx6nOxHHqkOApphEwF83nJIz+23Pcn1o9pvRzM= X-Gm-Gg: ATEYQzwKuQq8+KoqY65omFGP7ReVMJQuGJCjo3uShKSXkqItNvdwHdR91OPx+0f99j5 1/IjSlkslZh4N+cVsk0hMvo1TK6KUzkedakWUuW7EzSGdl/p4P+jxPV22sq28Cx3ch7P9SifVGl Tw8QYg6CQTQuahOm8XeHtFsHzsi5vdY9Wd9AoWCoKAG7MtM81JNUhqfHvPjUIT6n6gEP4Ku71tW kLFwh8WjhbFhqvzR1xl3pfh42gmC5BX8kZSdlL4DCMLpmJC3HLSK1OkbzczPKYoot9oE7nS9NPf rekwPQk87LtRem7ZMUwuIurGTOt1BjQvgfyehlj37l8rGbeg6kkijQq7h7VLSaR8RgUOEvzXB4D J1IBud78GSUx+tWTGIM0nwrrgqoKc6Ki3BX5vTqniT+0r0wcUl15vR2v4/8ujjAbhCAHeQ6ZD29 PesGm3288RR2UQ2XWsUc/bYwCHZGt5Y/1An8vkNFeZvq4agYNjwuGpNfPOFE7Qeqx98k10kr/6D TUXuzR1ipYH6MjFSxXEuBFhQQ== X-Received: by 2002:a17:906:6a0c:b0:b8e:3d49:25db with SMTP id a640c23a62f3a-b942e00db25mr86819966b.54.1772792999461; Fri, 06 Mar 2026 02:29:59 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:59 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:29:59 +0000 Subject: [PATCH v7 08/10] pmdomain: samsung: use dev_err() instead of pr_err() 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: <20260306-gs101-pd-v7-8-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Marek Szyprowski , Krzysztof Kozlowski X-Mailer: b4 0.14.3 dev_err() gives us more consistent error messages, which include the device. Switch to using dev_err(). Reviewed-by: Krzysztof Kozlowski Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- drivers/pmdomain/samsung/exynos-pm-domains.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index 2214d9f32d59..41a232b3cdaf 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -30,6 +30,7 @@ struct exynos_pm_domain_config { */ struct exynos_pm_domain { struct regmap *regmap; + struct device *dev; struct generic_pm_domain pd; u32 local_pwr_cfg; u32 configuration_reg; @@ -47,8 +48,9 @@ static int exynos_pd_power(struct generic_pm_domain *doma= in, bool power_on) pwr =3D power_on ? pd->local_pwr_cfg : 0; err =3D regmap_write(pd->regmap, pd->configuration_reg, pwr); if (err) { - pr_err("Regmap write for power domain %s %sable failed: %d\n", - domain->name, power_on ? "en" : "dis", err); + dev_err(pd->dev, + "Regmap write for power domain %s %sable failed: %d\n", + domain->name, power_on ? "en" : "dis", err); return err; } =20 @@ -71,8 +73,8 @@ static int exynos_pd_power(struct generic_pm_domain *doma= in, bool power_on) /* Only return timeout if no other error also occurred. */ err =3D -ETIMEDOUT; if (err) - pr_err("Power domain %s %sable failed: %d\n", domain->name, - power_on ? "en" : "dis", err); + dev_err(pd->dev, "Power domain %s %sable failed: %d\n", + domain->name, power_on ? "en" : "dis", err); =20 return err; } @@ -140,6 +142,8 @@ static int exynos_pd_probe(struct platform_device *pdev) if (!pd) return -ENOMEM; =20 + pd->dev =3D dev; + pd->pd.name =3D exynos_get_domain_name(dev, np); if (!pd->pd.name) return -ENOMEM; --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 53CC637CD52 for ; Fri, 6 Mar 2026 10:30:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793009; cv=none; b=eKMecD0zcrKxKZa6rTULkd7sBTYobCr62PXsCt5PRLhCXg1tvXfQlHoKrdAFRzXVwigWj0wcoIK6fkLfKcKd80Tay3A2V+OqLY7pcOVgAjh1zRikMbJlBnpz+h37WfIpXKPo1fZYiEAuiEKg14IMdjzC7B4vC/93COOv41WBILU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793009; c=relaxed/simple; bh=U+pgoXFtqVjylMufxL+ijffy+ks+RYDFMMjRK6SVUv8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=asSShdKpSClPYV+JlqReNZY1TtuKp4fFA/DhjKRuYnBL7yr/WUSnaJyn2JWiHC/pOR/qSLGKF5wdBLZBwPOb92o3WnjpOqfLZj+PdriyVcjsYvlDxdiwqEalW5QZTBcCbq0ihRwkOp6EAwsVrh0+nvr/wgEqFFTtYN1bDBUry6I= 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=bIOpDDAQ; arc=none smtp.client-ip=209.85.218.54 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="bIOpDDAQ" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b93695f7cdcso1198283066b.3 for ; Fri, 06 Mar 2026 02:30:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772793000; x=1773397800; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=v9aOQtXPMrRyOq0vhd4Vrs9+A7t+qYPDJvOzQNfneMs=; b=bIOpDDAQ+JzFAP+qM4P3B1GLGFG2OlUp0NqRAlxx6gywg7bFh1magOolomZhAg+fYT /FYUolzlEn83bouOGXUXWFyF8+qTGwGUPypXFUGr7gIKWcfX6f47IKeiisRc1lemyYES qjXF0z8gHXr6h6DhBPboFxQfc8a/EErTieQ8nD/e6Hn3EarSgXCpLcY4s2ABhS7K/TPA 5uuLrmf4YNuqL3mZ2yTkpfGUtBqmjjbF0J2lwIYtKfP1Inl2mUHImp0x2iITsH2OGuLw N8O9fiWkaz7YGVhDwoPcD8TO6VIVsOGR0i5IxuNfWqezEAo8t7STGGjTFZy1ntfL0IRB oq/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772793000; x=1773397800; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=v9aOQtXPMrRyOq0vhd4Vrs9+A7t+qYPDJvOzQNfneMs=; b=Mx8o7tZutyiPM4TXzyAKViuTNPdvjm2e0K1Eu4Mu2XgpZER2z4UlTV9UZIzbSO/wyF 236SQJabX2NM9sG9AAOZkR01v5XzKPd6YOnyxpsuVOmgpRGj+Ae2ir8NowtG0gnmXQNS QG4XQQwyEZap9NYNrUT/c/odkjf8dKoOkhPQ4pb6kiTzdrDV5K1cTnDZGdGzsASUXvS6 crbobEUmD0rSY2sBqpGy6roieWurIaBJpwMmgUHR48sjSgYdA8wntFRpGPx+N/9sT21u RJsk1cVIURM4hS9Yk8idpiiOslQDxzXV+7NVdAaQmL1UJ9GoK1KdrlKtcU1+SFXVbQqJ rl9Q== X-Forwarded-Encrypted: i=1; AJvYcCXXBFFULlLXC+UPDkREWKn6P7iwUKwkIDXcns6v2VYrGjUVm+AWpPPKl9UePNhmGkEkDb/xaJuZ5XCky90=@vger.kernel.org X-Gm-Message-State: AOJu0YyhBK0ncDmRznVoFcZh5Co+0LfSJowqSLoB1l45wxF6XGugheCX m34Ph6/3o/Ty4HMHEZS599+7DyYDHMA3DcYZTufstpzXOY1tGjzNMJLbhopB12wjBgQ= X-Gm-Gg: ATEYQzxCgzKdgIGmzlBFsOrrlx3MFzw51TxOFSQBD2enj03NMH8DwwIuY71pZz2gk87 0UcbKi3ywqqAPwsYsSm+MTJvOUvzfDDRhTqUIU6ol5PSL9MZeUreNk/r8Btz13lhHOg67rzTVpN gWv4tKBqf4iWj47PwOe3+PJ9qEAz+KsyHA88lsZrunpY5+M773SzMw2neP8NZK+Y7nYy6o6SVXx ZbO3BiLCf7pz/WLEGWzpX8cQGhktvDzcsJNSCiIkWAC8B86NoWZyeYRNS2bhPyTwuLvIf2rnG0m jZpulsONmtuqAYIM17h/EnGx6mfZrk/dFuvZxwLzQ/q15P7mmXc9wm4to8OoIwGGcIC1K4q2BDG qE/ylro36+DafzGDCYhayhkfa+281qCJ3OyrWy3rXefTD0GC0IaKu7up+4BGDo+yLWx41m0g2aN NthIvBxH6eSwKLZqDriKTWQG2y8nHUUvy3ZPXovbI10lfAS05vNkEZvydKs9zESOdUAZF61ugxB CeteSOQYwt4dzI= X-Received: by 2002:a17:907:3f87:b0:b94:2d07:6c3e with SMTP id a640c23a62f3a-b942ddf6c53mr95330966b.27.1772792999960; Fri, 06 Mar 2026 02:29:59 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.29.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:29:59 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:30:00 +0000 Subject: [PATCH v7 09/10] pmdomain: samsung: implement SMC to save / restore TZ config 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: <20260306-gs101-pd-v7-9-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 Newer Exynos platforms have a Distributed Trust Zone Protection Control (DTZPC) linked to each power domain. It controls the access permissions to various registers from secure and non-secure world. An SMC call is required to instruct the firmware that the power domain is about to be turned off and again once it was turned on. This allows the firmware to save and restore the DTZPC configuration. Without, register access to various registers becomes impossible from Linux (causing SError), as the PoR configuration doesn't allow access. Neither the requirement for the SMC call, nor its arguments appear to be specific to gs101, as at least Exynos E850 also uses the same as can be seen in [1], hence prefix the new macros simply with EXYNOS_. At least on gs101, this SMC call isn't implemented for all power domains (e.g. it's missing for HSI2 (UFS)), therefore we issue a test SMC to store the configuration during probe, and if it fails we mark a domain as always-on to avoid the SErrors and to avoid unnecessarily retrying for each domain on/off. Link: https://lore.kernel.org/all/20230308233822.31180-4-semen.protsenko@li= naro.org/ [1] Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- drivers/pmdomain/samsung/exynos-pm-domains.c | 96 ++++++++++++++++++++++++= ++-- 1 file changed, 90 insertions(+), 6 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index 41a232b3cdaf..f59986b56213 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -9,6 +9,7 @@ // conjunction with runtime-pm. Support for both device-tree and non-devic= e-tree // based power domain support is included. =20 +#include #include #include #include @@ -16,12 +17,19 @@ #include #include #include +#include #include #include =20 +#define EXYNOS_SMC_CMD_PREPARE_PD_ONOFF 0x82000410 +#define EXYNOS_GET_IN_PD_DOWN 0 +#define EXYNOS_WAKEUP_PD_DOWN 1 +#define EXYNOS_RUNTIME_PM_TZPC_GROUP 2 + struct exynos_pm_domain_config { /* Value for LOCAL_PWR_CFG and STATUS fields for each domain */ u32 local_pwr_cfg; + u32 smc_offset; bool use_parent_regmap; }; =20 @@ -32,11 +40,28 @@ struct exynos_pm_domain { struct regmap *regmap; struct device *dev; struct generic_pm_domain pd; - u32 local_pwr_cfg; + const struct exynos_pm_domain_config *cfg; u32 configuration_reg; u32 status_reg; + phys_addr_t ac_pa; }; =20 +static int exynos_pd_access_controller_power(struct exynos_pm_domain *pd, + bool power_on) +{ + struct arm_smccc_res res; + + if (!pd->ac_pa || !pd->cfg->smc_offset) + return 0; + + arm_smccc_smc(EXYNOS_SMC_CMD_PREPARE_PD_ONOFF, + power_on ? EXYNOS_WAKEUP_PD_DOWN : EXYNOS_GET_IN_PD_DOWN, + pd->ac_pa + pd->cfg->smc_offset, + EXYNOS_RUNTIME_PM_TZPC_GROUP, 0, 0, 0, 0, &res); + + return res.a0; +} + static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) { struct exynos_pm_domain *pd; @@ -45,7 +70,17 @@ static int exynos_pd_power(struct generic_pm_domain *dom= ain, bool power_on) =20 pd =3D container_of(domain, struct exynos_pm_domain, pd); =20 - pwr =3D power_on ? pd->local_pwr_cfg : 0; + if (!power_on) { + err =3D exynos_pd_access_controller_power(pd, power_on); + if (err) { + dev_err(pd->dev, + "SMC for power domain %s %sable failed: %d\n", + domain->name, power_on ? "en" : "dis", err); + return err; + } + } + + pwr =3D power_on ? pd->cfg->local_pwr_cfg : 0; err =3D regmap_write(pd->regmap, pd->configuration_reg, pwr); if (err) { dev_err(pd->dev, @@ -60,7 +95,7 @@ static int exynos_pd_power(struct generic_pm_domain *doma= in, bool power_on) unsigned int val; =20 err =3D regmap_read(pd->regmap, pd->status_reg, &val); - if (err || ((val & pd->local_pwr_cfg) !=3D pwr)) { + if (err || ((val & pd->cfg->local_pwr_cfg) !=3D pwr)) { cpu_relax(); usleep_range(80, 100); continue; @@ -72,9 +107,21 @@ static int exynos_pd_power(struct generic_pm_domain *do= main, bool power_on) if (!timeout && !err) /* Only return timeout if no other error also occurred. */ err =3D -ETIMEDOUT; - if (err) + if (err) { dev_err(pd->dev, "Power domain %s %sable failed: %d\n", domain->name, power_on ? "en" : "dis", err); + return err; + } + + if (power_on) { + err =3D exynos_pd_access_controller_power(pd, power_on); + if (err) { + dev_err(pd->dev, + "SMC for power domain %s %sable failed: %d\n", + domain->name, power_on ? "en" : "dis", err); + return err; + } + } =20 return err; } @@ -99,6 +146,7 @@ static const struct exynos_pm_domain_config exynos5433_c= fg =3D { =20 static const struct exynos_pm_domain_config gs101_cfg =3D { .local_pwr_cfg =3D BIT(0), + .smc_offset =3D 0x0204, .use_parent_regmap =3D true, }; =20 @@ -126,6 +174,38 @@ static const char *exynos_get_domain_name(struct devic= e *dev, return devm_kstrdup_const(dev, name, GFP_KERNEL); } =20 +static int exynos_pd_get_access_controller(struct exynos_pm_domain *pd) +{ + struct device_node *ac_np; + struct resource ac_res; + int ret; + + ac_np =3D of_parse_phandle(pd->dev->of_node, "samsung,dtzpc", 0); + if (!ac_np) + return 0; + + ret =3D of_address_to_resource(ac_np, 0, &ac_res); + of_node_put(ac_np); + if (ret) + return dev_err_probe(pd->dev, ret, + "failed to get access controller\n"); + + pd->ac_pa =3D ac_res.start; + + /* + * For some domains, TZ save/restore might not be implemented. If that + * is the case, simply mark it as always on, as otherwise a power cycle + * will lead to lost TZ configuration, making it impossible to access + * registers from Linux afterwards. + */ + if (exynos_pd_access_controller_power(pd, false) =3D=3D -ENOENT) { + pd->ac_pa =3D 0; + pd->pd.flags |=3D GENPD_FLAG_ALWAYS_ON; + } + + return 0; +} + static int exynos_pd_probe(struct platform_device *pdev) { const struct exynos_pm_domain_config *pm_domain_cfg; @@ -195,10 +275,14 @@ static int exynos_pd_probe(struct platform_device *pd= ev) =20 pd->pd.power_off =3D exynos_pd_power_off; pd->pd.power_on =3D exynos_pd_power_on; - pd->local_pwr_cfg =3D pm_domain_cfg->local_pwr_cfg; + pd->cfg =3D pm_domain_cfg; pd->configuration_reg +=3D 0; pd->status_reg +=3D 4; =20 + ret =3D exynos_pd_get_access_controller(pd); + if (ret) + return ret; + /* * Some Samsung platforms with bootloaders turning on the splash-screen * and handing it over to the kernel, requires the power-domains to be @@ -212,7 +296,7 @@ static int exynos_pd_probe(struct platform_device *pdev) if (ret) return dev_err_probe(dev, ret, "failed to read status"); =20 - on =3D val & pd->local_pwr_cfg; + on =3D val & pd->cfg->local_pwr_cfg; =20 pm_genpd_init(&pd->pd, NULL, !on); ret =3D of_genpd_add_provider_simple(np, &pd->pd); --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 17:15:19 2026 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (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 8203E37E31E for ; Fri, 6 Mar 2026 10:30:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793009; cv=none; b=UCMYttxqDYUTvzy6IFVaF+rhcfK6QYbT9NrdneQoCq0w6lhYjSP4I3xzgZTMy5Xpg6p6HKKx056CMLG6VA6TvZjQKyaSE6DUd78LAGDSGfqulB4udWT1UUz+orcVSEGRGbboWTchHBn14FgK5gh0HytWjHaWue1l0M8H+/VngTU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772793009; c=relaxed/simple; bh=NS+1Od4aVlTq9Wx7bCSooHKRSz+R9G4t7LsBp+nXiI4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vEV9AU/rPcPW5oFX09FvA8ecD793VXLuqXc9PwuAJJC9tFBKnIa7NmQgy/fewZZsnciNgHMX38TVO+nDfsnS1RqKO4VmYnhRXBYJ3kmBTMqqhr5gv5KVhonQRI9TU8emPg0L3yHTc48fUdCkxslRMEgnjPUCr/kGQ6WPR3/5h40= 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=xgrMqsqP; arc=none smtp.client-ip=209.85.208.42 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="xgrMqsqP" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-660fc3f30c1so3931753a12.1 for ; Fri, 06 Mar 2026 02:30:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772793001; x=1773397801; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Z+RpBQOuQW07kF7dgJNXDXfeT4g3XJJZS09GBpqTzzg=; b=xgrMqsqPCyPpiMffrm7NgJB0YV6/Kycvu/OwRzErzGYUSpggnw154a4M6ckLlUa6mu YfNYM7Abq6VYMtbJvh+yDu4yo71yPBW4JsJZ+m03IB7FqQQNanjbWv9jsN9VBDQwsa54 vcJpME/h/zLJ6aqITJ+4Roqzm2nbCQyik5uwvCp2sYzITKZI3qRktJ4RzJFZgF4APCUb u/7lhVBgpPqXVy/2YQGxgmnRIS7g/QtY61wkt28wsaykgQmqCgJnzWbbrkvpVSi2lhi1 z2k9ZSyEBfu/KPxoIhauH+Vc7kj6c+UNg5tumKT0P7DicyW++VhVkl9Zl5LddwhApHJJ 4k9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772793001; x=1773397801; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Z+RpBQOuQW07kF7dgJNXDXfeT4g3XJJZS09GBpqTzzg=; b=iAvgXyQOMxQOqKu3VUhk8RDCLPsNU0Q+4JtPCs5H9kfa1cXNRI1kdIjbzlE3j8gUFj o+AUORRbSZMVXiN7SPN4utsxZM3e0ciPnIj6o2zgxrVWBHWDWCnmehqxrltWbs29rXQm P++Pqz1IP6WBr6NE5ZGFZp49/TP1yQQZQ0E6Ux1Ygupexc2xdQTKLUuDMvSR1ZwwgJIl 1kB258j+U5AwU9RSfP54gxnea2Hf7luPiLeZ6657B8KzO5dKlStN7XOcQ8oiJzCxu7It VEMvZM8xjg08hJoPxgE2uIbquHrPDAnyOvIkc3bM7TJUDlzq/Qt5FstTWkZ22HWoKAne BayA== X-Forwarded-Encrypted: i=1; AJvYcCVX0Kv5W0fnG2JNlFRZcNS/lMulIfHW89Z0TN4Y9icRNmWlPA609ZFKNwZEEUouEwemZWRy7aV3ZLaTsR8=@vger.kernel.org X-Gm-Message-State: AOJu0YzcLimcDBWMJjykv/TC1fVeEmSfoI1hma/ulboYBxKFBpFsklaJ n1/sMpRIrcumlu8VIqNknSn7eKvr7xGg7E5yp+kHr8R6mnO8WWxwlDKThCHPfDJcfTc= X-Gm-Gg: ATEYQzzkyAMLCrT+4eaECFhNLTcIb89ol8SREU9IRQ35f2wk9HoaO8Ja7oJRl3U4JZw hWTw6ltLTY3i6FlGkU6wXEAQPLHW2e2oNYdqRUUaAt2QohM/1/Sv5PutuJGTukRDt2VX9eGH0ZH 8WA7cc0ShJriE8YFOrGmKKeBbxyCM9YJRFz2etWbClcU0WHq3naN10KJXPvw0YSXLZvuknRqon8 jZxQiEyZCHMnJEoyzcAJfoMvQ9b+oaTdmH8P4YbLZjAbH9Bq5NIUVkN1T0r6Ll4PjvwFzE3pJuP OBaMTWz3jbaFSIklnFtIKzR/bWF/JPjz312QytR3HQVQPne+MdxieNFgFsbbxg5gb579nNAX0qS ZJ89oH5tSxa1iHX2YAAk5dF6UI34EOBZ7dOySKUaeqOP+yA7nQSPnXuw4AGX99o9HNgE17lMY5g dDxSCjDFTtYeYMvYmIRBU4rGezIYXWKsGjPxs6Ot/1rqWwy7Fz0O/Jj0+mR0r3gvuI/cK/FklpA rpmT14FOL8XXyU= X-Received: by 2002:a17:906:f59a:b0:b93:4d73:e8af with SMTP id a640c23a62f3a-b942e0315e5mr100179566b.58.1772793000481; Fri, 06 Mar 2026 02:30:00 -0800 (PST) Received: from puffmais2.c.googlers.com (221.210.91.34.bc.googleusercontent.com. [34.91.210.221]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b942ef8c95csm42907266b.21.2026.03.06.02.30.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 02:30:00 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Mar 2026 10:30:01 +0000 Subject: [PATCH v7 10/10] pmdomain: samsung: implement domain-supply regulator 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: <20260306-gs101-pd-v7-10-03f7c7965ba5@linaro.org> References: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> In-Reply-To: <20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Ulf Hansson , Liam Girdwood , Mark Brown Cc: Peter Griffin , Tudor Ambarus , Juan Yescas , Will McVicker , kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.3 Some power domains on Exynos are fed by a regulator rail and therefore regulator control needs be implemented for Exynos power domains. On Google gs101, HSI0 (USB) is one example of such a power domain. While at it, add a to_exynos_pd() to avoid direct use of container_of() in various additional places, and update existing code to use it. Signed-off-by: Andr=C3=A9 Draszik Reviewed-by: Peter Griffin --- drivers/pmdomain/samsung/exynos-pm-domains.c | 53 ++++++++++++++++++++++++= +--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomai= n/samsung/exynos-pm-domains.c index f59986b56213..ed7a5807555b 100644 --- a/drivers/pmdomain/samsung/exynos-pm-domains.c +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c @@ -20,12 +20,15 @@ #include #include #include +#include =20 #define EXYNOS_SMC_CMD_PREPARE_PD_ONOFF 0x82000410 #define EXYNOS_GET_IN_PD_DOWN 0 #define EXYNOS_WAKEUP_PD_DOWN 1 #define EXYNOS_RUNTIME_PM_TZPC_GROUP 2 =20 +#define to_exynos_pd(gpd) container_of_const(gpd, struct exynos_pm_domain,= pd) + struct exynos_pm_domain_config { /* Value for LOCAL_PWR_CFG and STATUS fields for each domain */ u32 local_pwr_cfg; @@ -39,6 +42,7 @@ struct exynos_pm_domain_config { struct exynos_pm_domain { struct regmap *regmap; struct device *dev; + struct regulator *supply; struct generic_pm_domain pd; const struct exynos_pm_domain_config *cfg; u32 configuration_reg; @@ -64,12 +68,10 @@ static int exynos_pd_access_controller_power(struct exy= nos_pm_domain *pd, =20 static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on) { - struct exynos_pm_domain *pd; + struct exynos_pm_domain *pd =3D to_exynos_pd(domain); u32 timeout, pwr; int err; =20 - pd =3D container_of(domain, struct exynos_pm_domain, pd); - if (!power_on) { err =3D exynos_pd_access_controller_power(pd, power_on); if (err) { @@ -126,14 +128,45 @@ static int exynos_pd_power(struct generic_pm_domain *= domain, bool power_on) return err; } =20 +static int exynos_pd_regulator_enable(struct regulator *supply) +{ + return supply ? regulator_enable(supply) : 0; +} + +static int exynos_pd_regulator_disable(struct regulator *supply) +{ + return supply ? regulator_disable(supply) : 0; +} + static int exynos_pd_power_on(struct generic_pm_domain *domain) { - return exynos_pd_power(domain, true); + struct exynos_pm_domain *pd =3D to_exynos_pd(domain); + int ret; + + ret =3D exynos_pd_regulator_enable(pd->supply); + if (ret) + return ret; + + ret =3D exynos_pd_power(domain, true); + if (ret) + exynos_pd_regulator_disable(pd->supply); + + return ret; } =20 static int exynos_pd_power_off(struct generic_pm_domain *domain) { - return exynos_pd_power(domain, false); + struct exynos_pm_domain *pd =3D to_exynos_pd(domain); + int ret; + + ret =3D exynos_pd_power(domain, false); + if (ret) + return ret; + + /* Ignore regulator errors - the domain was disabled after all. */ + exynos_pd_regulator_disable(pd->supply); + + return 0; } =20 static const struct exynos_pm_domain_config exynos4210_cfg =3D { @@ -283,6 +316,16 @@ static int exynos_pd_probe(struct platform_device *pde= v) if (ret) return ret; =20 + /* get the domain power supply if required */ + pd->supply =3D devm_regulator_get_optional(dev, "domain"); + if (IS_ERR(pd->supply)) { + if (PTR_ERR(pd->supply) !=3D -ENODEV) + return dev_err_probe(dev, PTR_ERR(pd->supply), + "failed to get domain supply"); + + pd->supply =3D NULL; + } + /* * Some Samsung platforms with bootloaders turning on the splash-screen * and handing it over to the kernel, requires the power-domains to be --=20 2.53.0.473.g4a7958ca14-goog