From nobody Thu Apr 9 23:26:09 2026 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.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 17B2026E6F2 for ; Thu, 5 Mar 2026 06:11:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691116; cv=none; b=AmfyD1nuZyaRnWbp0oh0kBGp2wI9WHPkqaFzt+wK0+EcheiYOiCWmrUj1eeRcb3wEyNOhq4cVideQcx7UT2vXZyK+0+YkE0qI0e1rr06OwJCvTZI6QEoD1fcl/794gN8vgbs3DwFo5RO61VQ9aG4jrrptbd3NoTxJjFwLnaQGSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691116; c=relaxed/simple; bh=VXqNGlqX3hZoD8cv8P59wyGVL5FoVdrO7llV2dEVFW0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ceh1pOe3A+iXfmSNaN2RVLOmK0rnI69oCX24P8ALWuYiyNRhgBRCN8hDI69l2GCSbfN2vE/PFTnVDmi4qYXxpVBVdjvVO7NWSPiMeZO9v+pgvx2JYVOYvbekqCNOvJA9zHMboe/KX0/O0b4/akCPiMvgNvmcpma9EDxLsi9VwzY= 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=C3Kz3SJr; arc=none smtp.client-ip=209.85.218.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="C3Kz3SJr" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b935ff845c8so988375766b.2 for ; Wed, 04 Mar 2026 22:11:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691113; x=1773295913; 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=C3Kz3SJrqqMDzFHma2oUYgsEw7i1exAQFHIJ19ZxXh/DPLmTNanpfy46sWA/llsLpf rbzwTG0BKjN19O9FTEnVJxai/eX8gS6tGLPsgdA49ihfa4dZ6L7ovdYONKW/uqKZS4Rj vLiZVqEK1WqwAJl4c5KY8WDPf5pCztb7BNaKu0eCVv81b2sOizm6MbP52mIiZWqUbe+7 d9+pzsQRwj81nl8PYXJlCJmcyuLggsdZ+LSnih8KOXmYdsadsYzgo1DSAIy7taHEegdw /gTQGwbJuFTe0m/kJC9xhXrVgb4H0OQ9fxKS10RG10FRq8a64DmFZRWKEb37pvsHTz6g N1Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691113; x=1773295913; 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=CGJLr1TJmn5usH7jAC38+2OOOOGqYgJqqaxxqsi0D9yUA/lEGUcLTezFwCjRHgV3sd Lt1fkKLbtaUO76JHjduU2SecGsH0jBfoict8yFNKupjohm9at1u/jEH5jh6hG6FrIU8T SggjcScO0M32xvrCyjQnglF3mkq5zcNw/9m7Pch0E06M/yI+ohQKIxK3Xi56eXJ5YmAT cALLI9aruZDwibe7+fO78raLt/Ow9e9+Ahq474sHiV/W10u7Az/z/l99K+lojP5nAkk3 W11HpZ9K+JWEVI7hkIPV/IQSNZd7O/vHrg43c4de232/6o6JKN5HBrVRZcwInspTsmFC Sjbg== X-Forwarded-Encrypted: i=1; AJvYcCXAyh5fL4Ts+ruVUlp+O8qLqcaV4ATr1mBQked3HOkxXNPy4veUUezMDNe8lfdJpAzMAsoWnS9upYFj2fg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7a1VC+rBU0h3++YVteQa6JebrfwMwq+jzM7DwX93dfPnw/yrp PlYRPMb3QjbvbaMw08XJfaKi8SXEszOFXMxStTZlo/HU8ig+Ym6VpY6Pjj0ZdIXUF9U= X-Gm-Gg: ATEYQzxdBuLiWi2sfMPU4FTH1U4fGhMFe2gsy4VModxe1DE1Z10fmPZ2lEWq+I9JZ4w TM0MzadgFuvPHM7nzQFW3Xp5m/wKJku1tlQ/scTuWQaKJ8+DtoSEqM4QvesTiqBIuEoGPlqfnaP +E8VGX3Gww6xumIE/UtazcyKbLeNk646IuTmYFMdCTeov6WWt85vQEgmZIbR8b74CeI7Fp31lLr eBlEQsCXa4V5OyC7w+KvfbSLk0flX6StPD8CvtRnGjGryFvIfOHJK84CaKcRlSy8PQ4S2axf927 lQlscfHyT9qOaAwz0aDcBY6pLl8Ly8auVmWmx+iWFZciIc9UErbtzjYfDJkmSr9zvi6H6bp3wH/ mVU2VJwxTxU08sKlrQrczAOWUpNdw48+8aK3EqYR4aEBurZcr0tQSV775SvCMLkJ2kW95cV1trV 9528gllU+Dku/gc8sRojhYqwoV9geOc30ICQENVTKJA7IUhJPuFZ7EHwCGb2vwMfiPlS/4imoD7 Esbhrmftx7hc6s= X-Received: by 2002:a17:907:6d28:b0:b88:47b4:7626 with SMTP id a640c23a62f3a-b93f11c65e4mr280686866b.27.1772691113364; Wed, 04 Mar 2026 22:11:53 -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-b935aec3243sm849355966b.53.2026.03.04.22.11.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:53 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:50 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-1-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- .../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 23:26:09 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 37B5B298CAB for ; Thu, 5 Mar 2026 06:11:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691117; cv=none; b=d1C/Wol7Wv5BkEDBbQgu+hRTj+vGE6rbDRnm4oDNUOB6OdIOWVuNDSHiJoDq48wIwYjXSLuZeisyBUITRbdEtob3ntw+bOafK6JlxBEqb9EjfI0AXUR03LWoOLDeUo8/UwKS+gPzci7NTXh5HiTB6N2C3vaK6sFcSID4k1PmlkU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691117; c=relaxed/simple; bh=iALQKe1s8XYCZQRBPu9whaNUYAS1mnLDVYkgTcpyPr8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cqfZbw902df01v1XvXdoVI90ZX8VheJgXBWBfOgZaAMlTgV53jfMM1A/oRVaSLHK5p5FufjuxvL3tGOD0uN6w0raS0dneuAlQDflPn23G9TBHjeMfySWYWWajwmlGimPYyjpVMD/WZ1NlDRp6xgMDArrsMQXFEX1IvaqFwCQFmc= 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=V61lqGK9; arc=none smtp.client-ip=209.85.218.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="V61lqGK9" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b936505e7a0so571133666b.1 for ; Wed, 04 Mar 2026 22:11:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691115; x=1773295915; 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=V61lqGK9WTWnm29tSJDXxDUta9HQFJN1mC4P88K541f4zwmN/huESi8fzi7oiuSftM uQvQncjvWZzd/U7odh3wc3Zt4vZsIyb0dkHhkkCt141K5aQJBNgmBjErmXJtjwPn3ioE /mkQc2o0Kj5mMP82UyEC6XESEYlNkQSV38rlAkzztSrTrCUi0cCpJb5wDMEZvaaMwA1S qCjsfq5RD46hmlajAcmW3VijtPvrZCFAqqHiBx1ilQ0N0StHsQqGIuTypTjKA7mcZzYA jjYnBbX/oR7/iPL61eI9DtZloQdEQ4dd/aNFN7/HUunsp7FX2fmAl0UJcePvNN+bvTrj WFkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691115; x=1773295915; 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=TJ52L6CM/Qmo3exQ9krxoRXoX5LY4ropKzif7/eFdr/aStScEAxRnnOg9NRYXc/ety Ah25mRXVGUjvG+iIqupjpbs7lNxW4Yulf5oqUa4qfdkezPl+sqWSmgkoJDhI/u2xXriw kvCFMVf/tntMMb88LiP0TS9iY0Zsm+cqmCgSkjM0LwVwXeTcLlIwor17v/BlOifGmxDe Tw1R55kkyxa5EOv/nqwiCesqzUjco3hAIkkqZhdR/r3BlRxLbBF+iVeiLcuWouohxVOy P1Hs3KQ1C08ylD4paVcRkRl//VLkznpgTRbBgY8ELaKI7ItXccUu3nK2LBjaBQlhmAkw N7OQ== X-Forwarded-Encrypted: i=1; AJvYcCXmpA/ZLyaHkHFwHJCora+Ryn5AzCSXWdypoagjazx3UHeAhaspp3NVkrhvlkFefBPhUyYyCFOcCRXC4nw=@vger.kernel.org X-Gm-Message-State: AOJu0YzRL0Bf1wH/PoW8YVhsxjthOTL+GJKhpSMvFggGPGWue8zBwPGf /0FaKTicHXVciGik5Zwf3HbH/1UIlpZKtIh4alX0Ek+EPK4mJzQr3dNzqpxOlQXGd8o= X-Gm-Gg: ATEYQzywUbsLlLoGvMT8sdN2c8J4V0/5c9Df+FvsnwWi6ZlckfvmMqqh7YUovtI8GZC kCf1bun7EuVGKeRsPqpIHZdybnbPBMuIMCebLZRvXBnZVzyG05sBj8iplbpjuX0G/tDnmQby5o8 jgDoGbIkYPAnMgfhcSErgoJF/i0abq5HPZdUU4BjtQFGnTHE5qa+S/H44q54UZdLqORHu/UuOEM BEZKVH2gjlpcYKNhDUzFTPCh4xQvGrsftb6TSqcRSDSqyQ5LPa4vFY70O6HMZHbuh8NYQIhsf2C iXr+iFxB3OU0CNuQWj/8XQUSp593Z/PBucJFZezqzBDMnZCXKwdPYvTPBpSa9Gzw6ZSR/MapC/9 HaAuFd02rqrchgTq4anFzklYm5+FwJz/1/MlnjTRV9kl+t5B9ozVFGectKJmi8k+tjb22W8bAqq 0Kj0z5qcoAdrBbYL1Fnr8dUom/A2YEDrC0GJCIahlCu9w1/2d+TaFj/pnlzS+sGY6y0c4tnPT8v vg/oBCc3vU3AS0= X-Received: by 2002:a17:907:7f93:b0:b93:5a2b:bcda with SMTP id a640c23a62f3a-b9409ef2b9cmr62071366b.29.1772691114572; Wed, 04 Mar 2026 22:11:54 -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-b935aec3243sm849355966b.53.2026.03.04.22.11.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:53 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:51 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-2-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 2026 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 85A3D29D266 for ; Thu, 5 Mar 2026 06:11:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691119; cv=none; b=aub46R6nPCwBaQHbry65+QKwplx0LwQ3Sfb0fQ+tfJ71RKKUrSZR29+0mjy+FhtDZOGUmdaOCHc4252AcKX2uHlwp0oQWoQLuu6mXlqU0G8P1M8fIFzTyyqL+cPOn3++c8RXTF4lYJa11vCzGtWRLN9WYqmPQhIV2q2gb+O0fu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691119; c=relaxed/simple; bh=EEPuxE3zx9i5YvvEVJqMlxzcsnK6a/x/2q1dl3xwiOA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JMXo7Dfc9szq04kDKI/0puJlr1aAGDEVLeHL9Y/RSzdcYt3GMX8Wr4ee3i1jejM70J/7jOBktiRWYY/IxOBBX4brogx0xm52AmWhMbMDLOHMGSsmUT4vqgxvVnkZ8eOuRj5gvVTZkGoAZb0J5KAnImjz5Gb1SBLH4qRcOFXvNjc= 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=NlTQ75Ul; arc=none smtp.client-ip=209.85.218.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="NlTQ75Ul" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b9382e59c0eso212949066b.0 for ; Wed, 04 Mar 2026 22:11:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691116; x=1773295916; 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=9PU4mxk2r95PV9tPzoHDwPxRIhg7ggXYRoeufjEkbG0=; b=NlTQ75UlGei5WYLh93YCkSzx3JNFbYHy+K2HrYBWGuw//8V4J+rFANPgQq1K7wwDII 5xCCR/iSROj8Fh/jFE/fIjxIUtthspXgfe5SK6JKD/od7aNpxCK8j24yBgL+xBnbtMxF xHeTvE74iCZpGqn033t+zI5/zb6WPWJYmxQ1quUU23lItWaFeJCAVRj86tTetybswImg Fh1iK1Odq485cBWgwwTR/UPTO7l4p57joATk6vD2912nN3gsrnKU+EvGCjG14r2xt/oR 5U5Mwr1rIv2Cl3cT4hAJVvbHVXT3ufh8c5J5aTuf9VhlScw1fnTLgKCIiTOkpGD61YvH LOWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691116; x=1773295916; 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=9PU4mxk2r95PV9tPzoHDwPxRIhg7ggXYRoeufjEkbG0=; b=LUWfPjEz3y5Eqt83kSfSWS+NO1FNJNX5KL6KDCqMv7ikaz727qt7UtCCgbpd1upcX7 OI7M1dhnyhDqXVNV3KfyoHP/CFWmL022KR/FcIVV1p+fyXw3mvfYknFnSiiu3iK4eCv1 d28jSTmWcvndUdiA0rzGGU6uxHaVeZgNIOV40U/6mb6CNiDr4Vb0tVBzV5srEGm7eRXQ nrQFPN+D9iJGiDXIt2PusR/GGbO6G7srLmhERDQoQ9xBR4wN43TGvP/i5ZHroOKAhcv8 decZsETwc/VBQaQKQcNuKIdceONbe1mCd24HcQKTHwkstHsfxQSDoZz3Jk1kE2Sr/Yq6 8vZw== X-Forwarded-Encrypted: i=1; AJvYcCUm7D2yHru4t0OSV+sZQcefQJ4MUGly5WmUJbVYwioJKPHYupDopYmZTSHxNCP29xlGPc18y/f9Y8UWNZs=@vger.kernel.org X-Gm-Message-State: AOJu0YwSQDkhyapz7r0lxfP7dJt4aL0FnW4DGdF6yPFC2Qan/BQ884nC ovy5ZwdnEyGP2RkfxFkRZ4EO2dfKhh5yQ7intR1XyzK2qQ2G3HnnYO+v6Z/jMNff6iE= X-Gm-Gg: ATEYQzxnbdYKOcpdsnv2mq7B+bY4jKo/+g1+92wDT5fbO1G+1hrXUKZgaFIeOa/py6t v6/JGZPAvLCj5bt7OS3GJSiO1yvmB24lDLKXiBF3vxaWjPMw0OKz1iJs8AsBCgKzmx0evYUSbu7 Xv2CgUxl2lCGrEhk6iD7ABG9wHnx+qvN9BJEwmIA3wysGeCUPGMpStnASxsCC7mdeDNEZHiEj+O mQHEre9QPkoPOjp+BIJczSPr0X+iPhFjDJ7Uli6rVh6A2N7czbeknmNkSqNp97V1Ue8Fy6+qoKW wEtT2j6yRGKr3kNtAFQ1Hxrg4H19AgBhlTrZ120T2uMjOAgtzJpqdMXp5RrORVFO2BKyvlxVbv3 pbvmS3LCYO2aLoJ9pVcxss/u2OQ83cyoD9xvc6BFoV/XNmPsZCbTlISGq2eMY0wqo5wc2//OmVg pPmll85eKloj8qOtvVGVtallXv/hRmsr7Dk7gdZS6iFEGUsjQ1rcMg86rQoZm6NlKZ8RBNR3WaQ Jkc7w4r7mlooVY= X-Received: by 2002:a17:907:97c4:b0:b7d:1cbb:5deb with SMTP id a640c23a62f3a-b93f11d67e3mr345346266b.27.1772691115747; Wed, 04 Mar 2026 22:11: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-b935aec3243sm849355966b.53.2026.03.04.22.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:54 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:52 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-3-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 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) Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik --- 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 23:26:09 2026 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 BECD92C0307 for ; Thu, 5 Mar 2026 06:11:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691120; cv=none; b=FeOqgwV38utS9iwNEi+1h5bPkdre3ORTvqhb2IruAr0gxHpS5b73/sIy3hpQevpvfS8NJ24HVOkO33K/7s6aIWupCEh2AMkPIlNv942/LsEQYeqMbfn2PevVKRt2DujcBklPEnoH8roBABRtLCPnHWLhHfKBhec4mIjmyfSyd+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691120; c=relaxed/simple; bh=tJrLoF1/TtxkwElfBX3P0k+hH3QFKNVAem9XW3Pf0N0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WF7LLDjfjw18hh+QYo2Eq3GF3iQbKfsuIjpvLKW7Rc3KhW/ZyeQNT9LBzrwuyP0EvxPBXjsENBKZRR2y69CFtwE4A+zj6A25XC5TEVO4YmVF9tNI1dxA2vympp92pEaf7FKfU80/OeHOrqP/oBmVoMX9Ij4KJ/hRp+W3ybicfX0= 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=zbHwmyTb; arc=none smtp.client-ip=209.85.218.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="zbHwmyTb" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b940a00415cso56314166b.1 for ; Wed, 04 Mar 2026 22:11:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691117; x=1773295917; 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=ZQtOQFVrniTIH/jIOVZYrUmJOb+M7nuCmtE/30pbV54=; b=zbHwmyTbDIJGeCa3KvuWsUDVZMahmgye5OBC2/axSu668t7/ZbhSpFiO4y2MCbLVy4 yHjV3weD0hw47Z+oZkb85jTHyS8fY4j8EM0EaFwbybpSSHzlXvP/hrFUfSCBrx38MHcL iiiBqnlID46aCGFBlv+KLUPLsTGp0WnyRutJHU6AXOxnz0tOR6wyPzVM9U+q6YGIjwif 3l1a8vW/UzLRJ1KD1ZXF8K5yYkPmTmVvmL3nP82BJ93CTW2ZE2+gKbzjFgzJ8D3+Ibw4 S4weKwr+buVdiKrATaiGFFBvoDFt9bUiy3aoJDSMlMOgnse27sQohnWFGPLS4Qkxwp2K 7czg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691117; x=1773295917; 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=ZQtOQFVrniTIH/jIOVZYrUmJOb+M7nuCmtE/30pbV54=; b=EgTApgIJZrw2PWM48CXL6avMobKfGx2CRJ6yyuMP5kVT5kDJWHElkg62noYKIE1mo/ KQh8864LKjI0miVfuVx5AL5J+bSyul8X3pe57rQNBPgkknBd/4CtoF7Yy11kZj2PhBVH kCCIYpLqt5pEsIxye+SAi1N98N5S220SMXYljKRIVT+27OJGRbSloCoTeTsf9YQRVFp3 B9B5yrgNRA/+0a2nF5ztVgnoZWAaBnzM/grkQu4W5SzYsMwY9bvufUUp6YxEbV6zZL3x 8b02yB3HqqLqCM93QIefMyYJpzS75wcDJcVZZgJ9BEJ1tsSnhn3mJnUXKN97pV0ltah2 Plvg== X-Forwarded-Encrypted: i=1; AJvYcCWb5E3CL0U3WZ9fk24Lxjyz7689kKWM+tcFp67UVK9H3VuuXHKa1PrwtT21ijrOsdziRSWk//E6HJItr9w=@vger.kernel.org X-Gm-Message-State: AOJu0YwqL1s91k2Ku+ReeMHIcuWvfB/S4gawlqeFw9xH3iIUtVmZG5bO cc2hprUdqx4+/DLAvh8V1HjZGMHvc2sq93Qg7u63Nwa/vGtHvIOsSc2Gv/bV4c/Gs0U= X-Gm-Gg: ATEYQzztsM1flYKwlTq9WrL8o6icBtxNjaO4J/KncUVSVO325XOpm0sVYNl75ceSoju 7dUeG+6jCGDUrE3oS566yJnSpSr+3o0N7SKCfC0r/ZuWtDsZrwhe9TuZNFfS3mioxMN8xpf6IZX DNsFYjd4A0z+UHLO7khzEh6puJbtHcCfDqzNBxJfwzzYW0TRLSaPdEB4T4ayjTvTiT8qjCaiOH+ /bL/sziKK1/yik6pA/8ZwAnsyCZMuaDUuf8+wGPAZf8IaYBxo+vIzmMsRFaK5II64z6DXUvc35/ f0ACoU2Gi+N/LZHCTlljz8D7ywHA8aUBQNETWiAclOC5UFWODwkRdaNo0CJE+YQZ6JrjCkhmanJ AjJ+D4+04U7sRyky067Kf7V13I0TKD/+lYijumKAnlhMYjy/Vq5nzQ/ky58aZyH06jUq/DOzeUJ wwVQ//92MNGk+5aM0uNwxK0Vc40wkRUi7Zdmiv6U74khzQOemTseHvkij+KSYKVWbOGXBG+Sxk+ dzYfUOgrmi4hoI= X-Received: by 2002:a17:907:c11:b0:b87:fad:442f with SMTP id a640c23a62f3a-b93f1467ffbmr287511466b.42.1772691117024; Wed, 04 Mar 2026 22:11: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-b935aec3243sm849355966b.53.2026.03.04.22.11.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:56 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:53 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-4-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 The power domains are a property of / implemented in the PMU. As such, they should be modelled as child nodes of the PMU. Tested-by: Marek Szyprowski Signed-off-by: Andr=C3=A9 Draszik --- 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..c1ee9575092a 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 23:26:09 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 45EBB2C21EC for ; Thu, 5 Mar 2026 06:11:59 +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=1772691121; cv=none; b=pawUzcS74Cp3McAvrD+EkYqtc2MjUb42cZFW0lyupnXLSrWSdJtZMg+DLACalf6z+3itsm0T2/Vc21Vv95rgYqcrvwwUXlOSWtq3meuUt5CaNgGEfW1+BK1A6iXZpcjgyfpmjM6sAIvKwn52cJx75A7A9FHVYJ878N32FaemkNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691121; c=relaxed/simple; bh=F1S+e9a469QdSHta0n9ziXmHQDihxHrwcFmPJNecLNg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=elT2W5YztXs7JERuJ1ptm1iO8enzC6vG9Fd2S71omn9qoGY5ijn0mSVZPpKW2Qev5DXGI8e4duPiBnw7sKpmrRTklKYApbEGJNOYjcGmesWRRapRg3Q1/H5w37YyhHr5+EjSGgWidxvT6DE2H91QdU/jOGuu5qUqA7uAjQ8Qobo= 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=y2ayCt3J; 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="y2ayCt3J" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b93698bb57aso661583966b.0 for ; Wed, 04 Mar 2026 22:11:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691118; x=1773295918; 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=y2ayCt3JPfFX3wD2lcldptVQLlwd1cWpEDqtJQXWh9TZ44Sve3nVHsNKwCIOMe02Lo pu19GLxU6g+Ipkf0nfcmF1rLq+Xl+1Fvfvb5ssagOdY/QQnk2+2SUek0jYbq/on7Goxf fk5nUFFuh2e9fSof6lN4hD9m4md0V9qabEQJwLpALBQVOhNb2WqWWwJtr4/IjyaAF3ZZ we3nsfR9nZpKJP79Y0/NpR8Tt3SteBRnaQW/0UInSzug5WgCB/txTljsoBc699nmFApr FbazG049pmTaZYNTz9Fu3YtkBmptJ5d49Yd4Y0sP2EP0nZ3xBqmlfoWo1qUFxmUDxt5o wd9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691118; x=1773295918; 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=MhMpciws8eDaBGhe3IP8ityO9odT1QSdgHaGuAq7hqdmxHfD4xddOeICKBFAET5ERC lt2Vp9WSbsyOxvr9TxFquO6Hn+6PxWekjduuXhpv+UaUfOuuG2/TSiqWIcrDaqK/80dw kKPZRlgeOSeo834oi1yAOWGSC9PStEHDDDz6+iLSm4Q+Uc548wgMqbIaxZlFHRhmCAWT PNBss+EjvBXqbIffn+4G+wwd+avtk1s0Z/shg2jUMzZtzKsZEUSa0HA3RtwOymabFTJm cOyyG2kKsTKpi6piwTDdTMpjEwZsARcpW00sEXGVwVZ4tNad+/zrZ0GB6btx63K1Vn82 3SRw== X-Forwarded-Encrypted: i=1; AJvYcCVvl337JD/TfvlZW3td5OdxY/KbVhU7C+tqruXHnuHBdroGK8cXSxCOzH0EO3SKSq6p5BFanP9ZApWLjVQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/c0XafMpcNlwfRNF9U2Z/Ee7DZF8BPSs6uQ0zrF9e+F91cnXt Mb1hy8RrhgolxxmoFMxMI5PNHpzFWjkQOzhTEOCLgCKVpTmbDrYfnkjTAGTeGWHOyW8= X-Gm-Gg: ATEYQzx1ZXhr/HxIZ6ZRS2epzJuerd9drJEAsyyKh/vbB6gzOp6zPFSgYNP3GjZRojD FkG3b/66Emh5mznOwQgv/PBnO4mu06wNnakYjiqTgzgpsDcVXuj8DGTruKc+I/7T7aEXY51nudx irc52Y7b+cEJtniZzc+RVz80IbglS323YgCDfd/Up+tRz7svjklzTfJRJlR4p7VIrP9QjGPJ/64 rLkBErrE3jraYupruJHkXUq68gOqn2m3I8xpnp4AQRxEByzRYB5J0LGtBoBDDQx79x7wgKHk07e 19kOYKsD4CRgOvloJ5rLjJXVWM6XcmvNztbxbt1ooPLncxvYbP/YfTVC0I4qm46pocYLI/qgBZx 3x+7iNDKNQwUojeFfsq5YsT9ja2XJdYvVpm9vxNR7DgX3sOmiCSBiNhX7i6pE658hPFJmzU4oYK /bAgfN/u2YZBlEDexZZtyLa1r1WeHlLqlN7IhwFV5K7YJXl2+lnjpyzDMNhYmZ83bfkKS7CYsc4 6VBoBwfsZ6Q+BU= X-Received: by 2002:a17:906:730a:b0:b93:80f3:b35b with SMTP id a640c23a62f3a-b9409e510c0mr64413966b.19.1772691117541; Wed, 04 Mar 2026 22:11: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-b935aec3243sm849355966b.53.2026.03.04.22.11.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:57 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:54 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-5-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.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 3A0D32D5922 for ; Thu, 5 Mar 2026 06:12:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691122; cv=none; b=pRofejwO8Icli8LeRslr0ZRCb8dcS5guK0mPeWkTlmwRGZElfW287JaD5IIg/OMIlsmdXqUjmUsx9Yl0nsbnzKYMQKt3Cod50y46fQA/QiIU2a6+TgIi41wU/FFFU6de2ZDRvd1Ku099BXA4GtoBIFWeN3d4YRKGzJLQlwg1LJg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691122; c=relaxed/simple; bh=dHULg4KAQ86aduIcQuHp4BhJ2Nb07EP6bPz5fIOQLSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJsGg3WGA5U2BhCMjm8Ru2+pl+Xu2cvyGnHXrUgT2vgzu6oVYBmvENqzT0uJBK4SrYQRt5CWLHeq13qdNB3muMmvYgYdDBDEcCPyOgaXNPcDKduw1OW8/lHMtO5A/8Z3Bb0F0Py5kgPJDXo5RNxKYYRK33DZiwj5cQjgPPKgEZo= 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=Pyx2Hrd+; arc=none smtp.client-ip=209.85.208.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="Pyx2Hrd+" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-660ea6ceb5aso2154789a12.0 for ; Wed, 04 Mar 2026 22:12:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691119; x=1773295919; 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=Pyx2Hrd+Z9OhjTWh6aRW9jXcmXxotjMhT/zSlyRrBLCM1+R6XGMEZNToJDcsfQSmtL 7bEK4Hck/tKNR157Kz9gjJuyHyvMwrZWiF0N2joiD6Mbr/fLGjDv1wJZ6zMR/HbAAFex +h4klHQrJ5WPOI1xwNA2xGgY8cC/ixn90nIgxDK/n3iKQYE7sx8KgC+0FZeZ1CVcRBXl W+uEolZ0gJ36EPW3nzmPxqCcKqObS5n7YcePFuoYytpgLGDuKYGvorjHHWgcFBGQBxvq uQ0O8Ga7DsIYZRIgaAlaleGk1Bru3jy9c31Vf34hTy3bH9SqtB/pLK8b9D7Sm7i3gY45 PHIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691119; x=1773295919; 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=fiVBgac25GCsxO61yeYfmsMV3JFQF0F6IPaf1cAkJpw4m31OrX0cOLJHBS6yd0zN39 syOWss8X5D6QMqsXcH6Ff9Mjbp/OBIj8IWUAbk0Xh+/Bwt0WEEMU8f1nQLUP+5QegcVJ aRUROWipeZPcxxzm0+beyyy3MDNnBkxz1xmNy75ynw8stZzg72p5IcIW0WAYmdlDJcUh vmqD7WBXGcaHhsXd3rwO3BBW7mEG2I3GmvfMcGNtQPKWmrgVCaiNMSDS1g3uf1tbW0Ce VQumvQG7WQY4k4r8rhiwve9rgpS/E7TcRA6pxsrQrlWTgJ6XGoQu52N+DSYBXK9aLHvN xspQ== X-Forwarded-Encrypted: i=1; AJvYcCU3ZKl60cxIxOI6bZ4WN2ueYtPgVtuW1FPGQeDXGHwShyi12n+dLAUHclT5Ubeq0bg+8/F3/jdpzNd0504=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2Vz18uopyMoUYgDbURPqVyK4w7OP2/Wri756KY7I1qf5tiv/L bjzybT9QCTJ+nCyKiTqn0vHXiPyDKPTDVM5OidkzLbV3r9UwNgQYYh32Mi5CS9UDvww= X-Gm-Gg: ATEYQzydsYEBuBMjNTHLLEjwPyXaVcGyvPBmhA1MCoGuJArXGG5/xLIgsuCL6N/3INB WxGzFNXkrHYLTL4k+q6AF7v8zDcGghusCFsK8jo4xRYsYlG/U41m8sv0+KoZkqd6/X4PPjxzHh6 culaUOVy7LLjWjprQlOINEhWJDQLxrgrdeEuDrd2QC6Lbi3rHvYZ7Ya5XZl/UtralQMbV2f1viC E2haJNI9whL0zRIJjKdJnnRkv/kyoPdvVCNNxDt04J8bhyB3p3Isux8LRSx2GQsEBbuIZOq/RDH rnjl4bXQr3xU+QRGHSvyvFYVBwVBkM1d3RmL1QkYGrgROAPnc3WTw8LbX3j4xAXxBCN7fbAI/i8 Lr2F4U0DMGYANdGuqEfWrcm1oaoh6u0duf9tz6LODEcwzrBxGTdv2lJry7NdzmsfkAL7JY8M2U4 vS2BSAmlqprMJiVJmHmD9IfA6DnG7vPjzDbe0TBg5sxinUrgYq2Etnho1Rvj2lZvU2eXj0H03IZ Ws4qtmlPxMt0K4= X-Received: by 2002:a17:907:d20:b0:b94:827:c561 with SMTP id a640c23a62f3a-b940885921dmr63080666b.4.1772691118046; Wed, 04 Mar 2026 22:11: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-b935aec3243sm849355966b.53.2026.03.04.22.11.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:57 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:55 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-6-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 2026 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 8390D29A9C8 for ; Thu, 5 Mar 2026 06:12:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691123; cv=none; b=sXedOqdhzTn8dPgPkm/wLCt+kFJmnVGuI41lGLvkxuwUbWdzRqZV2rbZhrl+3y3HzFkLdQml8oOJkN9U3JVBTS2mT6Tq3s3W/l4cl69fqsBxHAjVCU0xhx+NThfwbOYmH65bYZgd4lMCsdaF33iB9DSG/qA1+yX7YeCcGnEqNPs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691123; c=relaxed/simple; bh=0U4HtqSeHlGrJn9AJ7ErQ0CtQcraLAhfSS8YefF1XM0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aSrbFOkN6AkTtBlntbV06QZpIjdXMSVPgcoPqIYTKMnnbpmIRg+dG/ojt4BEDqt3KQzjBnSWtn/Q9Xb/VNgYfyme79aEzj8B7cjQHmLLpmC19L0/QcSlWTUO7SHM+aHcOOFTt1hPrFFtBxarDY1qySZ6BwzYNv3Fdz2YzVwtw8Y= 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=MumPSCyi; arc=none smtp.client-ip=209.85.208.41 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="MumPSCyi" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-65faaa8b807so4648698a12.3 for ; Wed, 04 Mar 2026 22:12:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691120; x=1773295920; 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=MumPSCyiIIGFBv3kg1V87YDaCD1aff37dN1kN1S8195p2Xn4a+d88P1PpZq0tT9UXT 1ZQvR+5qx61vBHI2iJf33z+UP999MH8Sv3EWepaoX4TcOoEj5+USVR2P7FKDfoKcGZ7h Q+QLftigKtQBCFH6/c6fT4zxc9zeXcPEeMlrUfCjiT9WQqbM59V1hs/tTkU/zujle8wy Qa9LQwxZvubO2mAYzrOa3po6l/7x/7SFyJKVimo4WTo6HmeZ4TH0bftrn0vnznIc6iK1 0/8LmnrvehLILbFcMgjZgZFQYBIuruCG1JzXbZhChgCw/zjDM3iUP+Acya6BXf6lZN9g dRew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691120; x=1773295920; 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=mhgQy1xeNOGpWVX0qRlq5F45eQNxuzcwmuySOzyE9bg8M1BQ9iq0Djxs03Z8gcqMSw gjSbTOUgGmOPIgo1p9LzcTqegWofZPw2YPaOsYFZilpLIt8fea+Ln2kq7g2GnANHuJ1/ PHHNOIcZLOJsgI2SLMGg/Op/psi6rhq23Nqmo1M5NSCldZxAfF8l0s9zWSlCmRjyUodJ 6Bzkob57SkGddF74QKozJHAxv96iwsI65rDSk95lwVd1TY3SxOyakpZfy+/dcevIPxvX uHpFXPsR4gW5HZaw3R8L1Wz4cgb4LUvvFRgEKiiaH7XPTOe4vbOXV73/v36jMXhGXmbz /XIw== X-Forwarded-Encrypted: i=1; AJvYcCUUWMxkS1Z9rziP2AJFSRTodqsLTrpo5YceB08LeLn37wBgVEj+zbvvFNt7OI9WkSAJdZHeD8yz+wtmjJA=@vger.kernel.org X-Gm-Message-State: AOJu0YzMClu9IDILqBoALWumjAzTouommJkPbYzkzrYC/xyY2CKWJRLu NUFRMaZSFpkUO1PljvYuZj6IPFt3i59XUrn/+7NHDnb3bc7F95fpPVVpdfwNB8L8ycs= X-Gm-Gg: ATEYQzzLDIHOg8vzyIU8vnhVmi/Qx8YZqHWkwStk0N1P3yPucdo+HyDqjEWKAXS7kHh NNpFwLFyH9b71KGs9Ob4pUE5m1BWvx/5DSXzXxc/3fX9qcsVT486zVL6K5UhbSzCBL4HS+Xp4s8 a3USaT5uHC65CmkGzfj5OQK/87Go/JZkcYdF4DFfXIjQApJSEFkyoi0iJULAsa7JuzMUdW4HM0C Nr9zLdTrpId8BOWEJ6FznnWyAqeMn/fB4gnjIvHqvysAbQMxWAHWnm3KUgYWarA3djLZ0XaVLQ9 ZNFhET8aDrIiGTrvKsKGgnP3JSuvjSRZtn2REVMyi+2EqjpOYomJySgKHIihgWVOl00dvIRZTu1 fQJFQVi7F8rJQbWEq2oyInT6jTXtgCfUwa39LQ4zqYxpLoulTh3VBNkFuGu2Jgm6nrO1ftve9GE 90KdCGt/ODtymiNehtxEHgFDh3Jwn2YVS5E4BArdSoxtMFDF157eikQ3MudAy21Mdw2uKu+lJYu fgGeXCCPssAkiE= X-Received: by 2002:a17:907:2d87:b0:b88:5158:d106 with SMTP id a640c23a62f3a-b93f154b56dmr291262066b.52.1772691119766; Wed, 04 Mar 2026 22:11: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-b935aec3243sm849355966b.53.2026.03.04.22.11.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:59 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:56 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-7-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.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 0A7532DC359 for ; Thu, 5 Mar 2026 06:12:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691123; cv=none; b=n4tS/ZvGQ3Ecs7w4iHjLQ1NPYf5KOMgwn+nZiqfqR5hdux+UNTkvh6hjx+UQNlD/77J9auCAyqhHBTt/lj5KDyt+K17XABL4oxQRq5MIlIhhDx6WPTe71noi2VWFvte791Mg5f1YUE6C7PX26OO57hjwKQiufCDeKYwk76Ky1ts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691123; c=relaxed/simple; bh=k+2eK86lvnhd0G39XcYd0Wo9v7NwbPnA00WtqszUSr0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EG1aVxQ0ck5xJbG9lxvWn0yaon3aAnfhoN/Wf2dPrXoJB/yrhjm92XYfwyIfmDCyIqi416KdWvpt5rFvNUNjaAg9p6Za8gtugrGuQNIwAg3JlSHKgCHne3Z90BKT8SyXha7DrK117pU8ysaWGCD1eC0ZrtBcGm3kYUnKUCAfucs= 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=u4k2GzsZ; arc=none smtp.client-ip=209.85.208.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="u4k2GzsZ" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-65faaa8b807so4648706a12.3 for ; Wed, 04 Mar 2026 22:12:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691120; x=1773295920; 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=u4k2GzsZuF9Bb9VgAvJB8IHq3AE+Kkvz9CufyLHj2pn6GljqJsfBwxfXil4+sfeCtk 7xXCTBpAXwA0j8PYuxJvv8+w6IRzqh6RjHZvscpl9DbCJJaUNArLrCvsmpft43NgvxEo BNGzKN1hPMBHbad4cQG6WRc33Oko41paYqVZTN6YPl4oJfks1qVPXR5KVZQNYXgzPKQi M7AbjJ/BzXeewOTonn/R07cXKKbzj+vdvic6O6EPo+AucEShWTHp3OT0i3bpRevrxY8s /cggWdrWXFPTS2Plm6Gd4R4cG3z91Q9P9CQpR7EY43DodDkm6ioYqsTe8Voqy7aDaR7d xlSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691120; x=1773295920; 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=SwNcd8bmI44WzdTgj/esiqzLYQQqP/x3AF40t71dztYAbtIOiZHvmZGmNUvHCwvZul z+wPAJNdMoFqLrXATO0jOkiLKA66S0OScvNEnlgm7g+sbba87LSg1TUmjrabGC59ygBJ zHHLFPPTd65A355jb9jNj7RKbLmzQL8I+5cKvIy3gq/QSDxdC6ax0ZNC1jcTZKH3Z/oQ Rv3rWHeQvW/rTYCWaGehLdwUituCiiW0P/RfD4D//I/HeRXmJsScE+1p/iZDICQlRteG shtUyuAKQ+1bB6E3P3+znXrdRbYeTTYP6hVYAGoEdFEUmWUPoMivvCWnt2bI9lCYCi1b Sfmg== X-Forwarded-Encrypted: i=1; AJvYcCWPxprts7PvdiE9iwoYfd/k7Hssu1AdQZb4TdbeeXhNxIbyL0ZdG9wDNTFHWdgKqJr/lzqwPMefpFT1Guk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7OyaLiscy/85Q9Av275q9Q+NFdGsyccdOKZCUE0q7iVHOnmnI YPXuKJUw1wCm+EjX1RmMXCEhOxXQBsjGQ0KoBmHl/oPeBU5neFN3lmBLajZ8R0qw+4KHu1caccJ JcKqvzejlgA== X-Gm-Gg: ATEYQzwy6okS3KPw8shT06FG0yLUlPdR8kVsWINE9DWEqjKCQHUiysUsxUJFpyOsJZD i1Mx0U65dwJtU1PB6dKYNKNqh6MJ8fkhvxdDgSiXkpD+pYSi4xbf5bYZjOvbovCcpxw168WkSRw bhOrUaNedKgVK1tkr2VOLoPKCTi1HzBVpe5a/8tQR0xzpqRwIj2VtLzWRRYL59xetpeKwG0HPnQ ZlpfKQvBAW5os/PeTH7R1cH/FruC7Jj06/+ySQYsNuOFL527eXywAocSMU3u8j0YCT99sLJ+KSF +zl5PydQ1/tUqhzgnumCnsgAwOWGhEdYAjPxJTpv2cJ3aA6NUfp6NtVCvgwDldjZzPWkcJE6SSi H1HTa0FFy0xQ3dBeSMFExjG74a88uj1GSmvQG1gbHpoOk6VocDHrYl1YA1a/VpaionCJ2RYzPih oXH2tI+QWePHlocOybtCIh2VDHwPVxWEQ3C/dG0bPpSjbtPgX9jio4F09ctWuMt8nCXHfEsfopc 9Rxyoa30Ua9FP8= X-Received: by 2002:a17:906:209a:b0:b94:102d:243a with SMTP id a640c23a62f3a-b94102d2a92mr24981766b.37.1772691120288; Wed, 04 Mar 2026 22:12: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-b935aec3243sm849355966b.53.2026.03.04.22.11.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:11:59 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:57 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-8-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 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 39FF52E762C for ; Thu, 5 Mar 2026 06:12:03 +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=1772691126; cv=none; b=FjPnEfK55sbKMCuvxn+PDrqpimBRz42cX1rY00qJaUlaK8enyNf+H1AhM70Am+ksIgXNHcZxWwat41dz+kiQZIAEkjtJ+16B2BhoBLg4JLICHX1uqqV/9GzIgHEa5pP5iZjBz7VFvw6+PsyCjwAJFCQmdCM51RS8uFTKsQZY4tA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691126; 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=T60tcsCNpSbxyH4Sgz0F/puhLJLrtPqMCLdVmev9K4F6hvO/fMIihAcGfI5QPCVqgAqiDYC3/F8AlHsnfZ2Yt3PO+o7hrNavZk1Bfr1QOU90zE0QwtaUBPRGuMhMBZTXw9nSp2J7u4Yaq/9aFkQPA1laeGIGWORN5YY9qagM4rI= 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=NTTSdiXA; 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="NTTSdiXA" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b939cfc1e83so610662066b.0 for ; Wed, 04 Mar 2026 22:12:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691122; x=1773295922; 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=NTTSdiXAMcokGV5pPK1MVvQnZ95L+JviWZpqPNu57t5IN5c7WCwKsfKb8bUihLLwM7 DSlksU9QLvNN6XeVSbmzDEJ0OeWbHxCo7A4bJc7nWd260X49HxlhhfpnNhUv1LXiATqz FCiT9j/iwxWHx3H3uMMI9ehyjwUvEyQBmCqKtQ89uoJrIBSiLfUzwDgxB5O4c0eQ0Co7 x1HK0yfRVeJMgJjVtHbZQDcucVB9fPVOR1m7x90z+LaL9SNWg6ofVxUBDLOUq1PNigHF jrpPWCil7qJQopWFgCY578aYl6h758oNz5K1yadKM0PjpbexRw4B0dNHKgmzGUC3HVp0 lf2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691122; x=1773295922; 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=AzBbj3pneu8lK7FsR/Q6qB9w5GttSWErjxHlhsU0W4wl6VHM+bcHVwkOJ9oCGvixsS Kawd3hWOzAGq7Oc8oGeKeT+C9oE+ZZ5rU6X+4BlWk8+NtyOfD1sZxF8tw0nMIdnE2CkE 4gdIVLPD+2S1FQ11P9iEXwjWf6C+vET8UIe93vujfArzIE6CgzQvdn8T5x83Y212zi+c JOj8DeQv/DNbb23pYbGWRBodrW1Y0urRTTIy6pqbPuTWhWHOeP/KWaDpohnKuD7uWrJR mmYBHT45h0XB95u4jchJBtqF2NRfLVadWVkgaWWIDV5HMRHY6Co0KhWwduImRvor0YRn UE3A== X-Forwarded-Encrypted: i=1; AJvYcCW5HuJ2tymZjXfHwbepA18vdkJrmds4PmkbxeOf1fMYPI6Mt7NvmLl3G/+yWZ2ihCQylQKBNxPrWwyYdog=@vger.kernel.org X-Gm-Message-State: AOJu0YzjXgzLXVhjlFQDzM117wA7+9dwIy2dHjLJBJ4Qk94aVYl7t1Jt 94eCUw0/A/rAv4mNoDbYcFJdj3XcN6YxgRnUCXQscceuZs+NnhkbCIa81bjp0/aT7CI= X-Gm-Gg: ATEYQzy8UMvDBgkbfpz2kh7U5trHlwu2nrC6OUvz0MUjUqy86SYlBH5yaH2vfSBrEB9 0D1s3p7ksXHfm73MAXarrOEAcF4U4uqg7r87skmhNUwvejCFsSQ40Zmqbp7mCK54UJfG7rtV+VD xOVUAgPkveK5lrT3JmdW3NxFVkayouIu6YYdCi8rNzIHfyvl6j5fj/7vZM8BO+6aPOz71WLUDez geWjMIH9WRLLzj8KAFbLk1fr8yEbSj3WdIA3nTpFr0KTOViuqMgg+/xMAeelz/BYtL6ik7AIAIl AwlCiW8j8qptegbLKjx62N3IbwdieBG30cZg40RwuS3IiQZp0LqCs2/e4h0g9KB4dJ8/2iD2UTx 6QwzqnQ0GcsYxC08Qb0QdBXqjzTvl6mneM1E6OHrUnzXHV4/S6BtORMRcdDVwu8ssZonIp74K+z dxC1DY5aNkeuAtlPglS4kkY76HO5PduuXPEKJ23m2WgGydzD6n4MFeLm+SZjLm4lUWWZYRFoBO7 z/Rd7BiNGBh8a8= X-Received: by 2002:a17:907:e106:b0:b94:e64:fe6a with SMTP id a640c23a62f3a-b940e65317amr30805866b.49.1772691121509; Wed, 04 Mar 2026 22:12:01 -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-b935aec3243sm849355966b.53.2026.03.04.22.12.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:12:01 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:58 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-9-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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 23:26:09 2026 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.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 8CAC62F1FE4 for ; Thu, 5 Mar 2026 06:12:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691126; cv=none; b=SqG6VtMZ8CHwmbOK57nUXb/kuzOipzKqUDIiQISX5q6/tnMUTWjum8KyRG4JrXgmPfC7ooq0LTb+0+xv0GsWZNd/edvQHL+45vqzhuoZKgKt8h51Dx6uv4J0LJC5aAjAFNeiaZIl2Pwd398MxXdDDDWGWB+toD69sTlRgxOJ4ZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772691126; 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=CmOqgT65kDXhI2i90m8mAveoDTtmQHj5q6ypAVgf4N9W1T6dV/pob8TkiX44PFoEaxY3Vk093gKGPsuJiB7+jiOA9Rfn4g2oDskHtIEwztiKNU9sFnsG1KL5/l0bSY3x5D2vqqqWer6x9MvxOE69tugMZSxADkfZpHZ5LAt6Yn0= 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=QXm4wPsv; arc=none smtp.client-ip=209.85.218.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="QXm4wPsv" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b9358dd7f79so217828966b.1 for ; Wed, 04 Mar 2026 22:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772691123; x=1773295923; 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=QXm4wPsv2/EY1cXyWOoY3DJWs/gUjFeuO9Dbv3CoE02OJHZSdVBOpKZrRocLc1yqF8 wn2j21FltlDQ51XGK3q4jtRq9nVhlmTgcVabSuhQUbw/QaHDuvIpMFS+BXMx5qTMChiP eMSYw56zQWR62jf7EHoerkUdA7U45jwJkEPT4jLlZoogOcselA5lyUMRHZ21+adAJhZ0 GV9Wej7a/e6yfhl77+JQlI1WiK1whHxg8W52Y8m9MD7jW8+9qNjMXbKWiWEiK6UD+Jr2 Jnk0weGlN7grynWio2busyLAHmCpZqungxbelCHgaDU+h55kpUIA6Za/N+nhuoQLVQS7 xomw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772691123; x=1773295923; 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=Pi9inl22wKt8suLVLtGpSeYHX0rA2Ce7YdfhrvoA8cpJe0OiJD6qUVOdyI5xLPy0ag OJr2eYXd5hBBxubjzLQqybWRPaVopj+PziFpbZbWOj3qJ1IR7G0CTB7293UuM6WbIVyt Z95BN6hmOyZI18OsOm0X13tmO+Q03RMCVBI3Hnj6bDhgbAzdPVYVVMwLKOsm3njBbI6d 4PKMtdDCBPenrTrT/HXI/L5LjG3IBEXnCzERYITsRzK2UDWklY0qPN0I8KFkUOtpaGTJ ZV8JsQNP9j7v20AX5gXbEsE27k0K/e7ukJw6ykMzPiR26XZBQS9QjBHtHqKAR2BFzpmf YIng== X-Forwarded-Encrypted: i=1; AJvYcCU959c4X47oRbr+YUEEEZKN6derqxkvsOLKX/ZLpui2KHgQMdkShD7KKIfbgwNQz3OTKjPfOTzeR661C+o=@vger.kernel.org X-Gm-Message-State: AOJu0YxVfq568Wv2zHvIOhcOiks2DHTzVWw7i26DM4H0YJO3qIM4eVw3 SfTgLeW+rBFusgKl01qusSmAK3crqu7dqLb8fDcvwCySi7/sYEOy5ieelRisSIglCKs= X-Gm-Gg: ATEYQzxMdACV7gp3KZWKjwk4XNNd4INhgeK3IapIPPHVQCAdFyKO9jvenbtK90Vor7c Gh9wsU99jLzoTcTiHVYDMdaCuzD/XxksyoNKH/U86qWdctPwNcakDCA1MzJ39tuEcx4nLizU+SF nlSNMM3a2WmzSRZR2Q3OVuTpGxOzmj/fEa7xbjB/gxnujx1uYAeut0OF7D+UJ4nUby2jLHprEke jVh2TfIFmjupzhvcPNSMc3C/YAkIMR7czJoLrYQQf7OKZHCmxEERhiMKP52JDMPpCc2JoPTewjT 5RJ9VUObHPXN9Ha7M7Rz17YxcmU5YyyUFGi5ZUNFiQZW63uVfzGT1iTPFVgn6JLwKJ9MhYpJAuL RNORXWoTchamPKuewX4fE4ZdnnYCs7fkbmZVFVrD5bxt/nRRUIoZ/Bwh95fhQdU+ZTpTlZ3szzb SJOhp6soZ6wyVY1Ve6PGbMo8INXuQjbHZ9KMw69Uwty73xLkhXcXXN+OMh8rIUG+hWBHTbDmERy 5kn2vEhV3lbZlwATCwd/MXlOQ== X-Received: by 2002:a17:906:6a1b:b0:b8f:8cf4:adf9 with SMTP id a640c23a62f3a-b93f115f763mr262528766b.6.1772691122762; Wed, 04 Mar 2026 22:12:02 -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-b935aec3243sm849355966b.53.2026.03.04.22.12.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 22:12:01 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Thu, 05 Mar 2026 06:11:59 +0000 Subject: [PATCH v6 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: <20260305-gs101-pd-v6-10-8cb953c1a723@linaro.org> References: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org> In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@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 --- 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