From nobody Thu Oct 2 17:00:10 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 523D72571BD for ; Sat, 13 Sep 2025 21:16:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798186; cv=none; b=h/ONRjt5iecArh83K4T1kVNewQmPetHI+0uhG/gQmu26Y2sGDKg3RPaLYbwBEMjJ+8CYPrDiu+G/H/zcZWDpefw6n5mMBqIHVdnBrle7tpGziONBGIDYBnJkpAZrMoxKdywxymvY4QJg9eBwSDVgE2wmLF4QDErpNcnxHX7N+KM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798186; c=relaxed/simple; bh=aCY6RxCHQrKIRW5QIMBN86rD5F6gGG9oJuEhO1S8+yA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BpBxZVgTidQ1AzhBfb9FZzlhZ4ohzVHBNME/GKW6AJQQ09Bx0N0gd9p4GDhhGQTcSVwdcIywI/RLnbTuwclNuyUvQcE0/Kfl/T8oAsYudyQq756hMPgJaq/L3RiNIPXbh/8eCJDzUXI9y4HmqV+s+JHpmIwyPWpWvj4YimmCRic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PR+9TKTm; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PR+9TKTm" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-45b9814efbcso25622575e9.0 for ; Sat, 13 Sep 2025 14:16:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757798182; x=1758402982; 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=K/SeeyRvYxEIsfGVZybU2qc9C9N7ZeMuzRETBp2zbnM=; b=PR+9TKTmAs317hptaKAj9tbcjQVc26RuppF0H5MzfKyvw+lKcsrcx3ETL+itWkO4QW bJlIDiFe2/lVoRreVWnGG5q9xZ2vL4Lw2psriGhDltYZlwD9jgnV1jBnLfBu06pm56E8 g3Sdv/7iTeRnZdp9mMFCCS5LA2rXy4/pTu/oTCTOtrW0Fa941iaNiXqudJ+uQuTEHQKI dsI1MDTQXENru8WR/or3cOMopUyHTFyB0YndlyUNnznuz69596WkTGoZ5AI14sIQ6vyg UQwN6VxC1qnWQr0lCJ5E3dtoH7LLI2EaKoQtEGoRJLbEUkx+Ya7rpALf685oWz7MmvZs 0VQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757798182; x=1758402982; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K/SeeyRvYxEIsfGVZybU2qc9C9N7ZeMuzRETBp2zbnM=; b=NvCkQ+036jbLscsujc6CBC9EP1JF8Cm2Q6Srj4SJnutviO33ANp6TOIStaD6eCt9ic LHoz+lRFfXFJ6tv9JzujnFjuFtzddbpiS4J0sPE0t4ixFfLIBqxccnR+XbPfK6MAWKja C9m8l8GxytAHqniWf9dEfBUTi15J7KhyBhGJtlckKTzvJiluM64Z/mVmc9VOPLN3cw4k 1D6xZEe5RFGdrBdl0haLnlhWm4BsxQx2G4ND5o6oN/RTcz/P9eWNgt+nJJ1RtDv7T1XR 9VDtjB1s3dwiICp07HRNg8i5pjOxRSLuQQ1RAt1ogm2nGXXEyQFWYSNWQGebvkOa2lNT ZsQw== X-Forwarded-Encrypted: i=1; AJvYcCUQgLLqGsS/BVjgv9QcAFRCctDmW1enNO9H1TDqgYBqIIzki9YfpIy9QV7r4PpK11r9y4qWU1eAvqoZwrU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+7kj3v52IWkV8fDZb7HMUwKfJhqC9LtU0GBwI492ITFeWjMsd 7iwpRURFB7DqeCxIFOPnWnm5/XLxKoXDyI7JrzPxWfjF6+cC1KswVBVVpGnNGxqv X-Gm-Gg: ASbGncshs9bbHY6hQgNh3Aef6mdLg/bdr/ISFW99MMHhw1NwR2qTttXNwN//zdjnj+y JIlVRGMJWbxiaFi0Fqgw+zX+eTkWDDjLs8xDKWktykLiXjtIKLTKxg/EZWXwJ44ePLAY9Dmu1o9 SzB4jm08LhDWyOZjW5GwzH20/AeVE+EZxo9B++J5b+FAEebs7Pdv1KTXNnz43AtFWaa0vh0Mqfb u2EG1UdIbvKj2Fj6q1RnEu1DX9vbvRruARpQZhmH5RY/5jpuCnBxBxKnGc1BeWMKmZNj870F4ZP IEdrQ+NQJsnnqaNyokr1+6Ojt8l1/n22JOzS2qjF8hz3A1gNyle7fFquQi2tR7X0aLPPQZ4aCQ/ g2BXCNxoaolg+YjjKXVj+dQ4+qBy5PzzZHYYFQriFCg== X-Google-Smtp-Source: AGHT+IENdqe6tFLJhgaKYNDsjgAqN3Bky9aI7BhYtkMmCPhOAUK8jcHMz4D/zkFC+NDqh4hUyO9H9A== X-Received: by 2002:a05:600c:c3cf:b0:45b:8b95:7119 with SMTP id 5b1f17b1804b1-45dfd5c0dc5mr67761295e9.8.1757798182134; Sat, 13 Sep 2025 14:16:22 -0700 (PDT) Received: from Radijator.localdomain ([93.140.65.23]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e014ac468sm65403145e9.0.2025.09.13.14.16.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 14:16:21 -0700 (PDT) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sat, 13 Sep 2025 23:12:48 +0200 Subject: [PATCH v4 1/4] dt-bindings: clock: marvell,pxa1908: Add syscon compatible to apmu 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: <20250913-pxa1908-genpd-v4-1-55e4cf32f619@dujemihanovic.xyz> References: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> In-Reply-To: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ulf Hansson Cc: David Wronek , Karel Balej , phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Duje_Mihanovi=C4=87?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3482; i=duje@dujemihanovic.xyz; s=20240706; h=from:subject:message-id; bh=kOa/aUOGsrnkhFr1peiUiieuFcP0VPi+VrVXV4Tn/1U=; b=owGbwMvMwCW21nBykGv/WmbG02pJDBlH7yttDbZb+Le3+cKK2ZeWqipxNa3pOcUhyLc4dMmBw 6FLfLrWd5SyMIhxMciKKbLk/ne8xvtZZOv27GUGMHNYmUCGMHBxCsBEum4yMmxjT5Itvzxl/oap ZiuLk4I/dfmt0Jtq8vRR83GfC7/XPitkZNgSrH0n8uXkD+8eFLFU7dliJ1n0tk3zbnmpXdc1Ne5 uVWYA X-Developer-Key: i=duje@dujemihanovic.xyz; a=openpgp; fpr=6DFF41D60DF314B5B76BA630AD319352458FAD03 From: Duje Mihanovi=C4=87 Add required syscon compatible and #power-domain-cells to the APMU controller. This is required for the SoC's power domain controller as the registers are shared. Device tree bindings for said power domains are also added. Reviewed-by: Rob Herring (Arm) Signed-off-by: Duje Mihanovi=C4=87 --- v3: - Squash power binding patch - Update trailers v2: - Drop simple-mfd - Add #power-domain-cells --- .../devicetree/bindings/clock/marvell,pxa1908.yaml | 30 +++++++++++++++++-= ---- MAINTAINERS | 1 + include/dt-bindings/power/marvell,pxa1908-power.h | 17 ++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/marvell,pxa1908.yaml b= /Documentation/devicetree/bindings/clock/marvell,pxa1908.yaml index 4e78933232b6b925811425f853bedf6e9f01a27d..6f3a8578fe2a6810911fec5879c= 07c9ddb34565a 100644 --- a/Documentation/devicetree/bindings/clock/marvell,pxa1908.yaml +++ b/Documentation/devicetree/bindings/clock/marvell,pxa1908.yaml @@ -19,11 +19,14 @@ description: | =20 properties: compatible: - enum: - - marvell,pxa1908-apbc - - marvell,pxa1908-apbcp - - marvell,pxa1908-mpmu - - marvell,pxa1908-apmu + oneOf: + - enum: + - marvell,pxa1908-apbc + - marvell,pxa1908-apbcp + - marvell,pxa1908-mpmu + - items: + - const: marvell,pxa1908-apmu + - const: syscon =20 reg: maxItems: 1 @@ -31,6 +34,9 @@ properties: '#clock-cells': const: 1 =20 + '#power-domain-cells': + const: 1 + required: - compatible - reg @@ -38,11 +44,23 @@ required: =20 additionalProperties: false =20 +if: + not: + properties: + compatible: + contains: + const: marvell,pxa1908-apmu + +then: + properties: + '#power-domain-cells': false + examples: # APMU block: - | clock-controller@d4282800 { - compatible =3D "marvell,pxa1908-apmu"; + compatible =3D "marvell,pxa1908-apmu", "syscon"; reg =3D <0xd4282800 0x400>; #clock-cells =3D <1>; + #power-domain-cells =3D <1>; }; diff --git a/MAINTAINERS b/MAINTAINERS index cd7ff55b5d321752ac44c91d2d7e74de28e08960..6f1d29c42c2eccf7fad489fd6a9= b2c74fb24e4ff 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2872,6 +2872,7 @@ S: Maintained F: arch/arm64/boot/dts/marvell/mmp/ F: drivers/clk/mmp/clk-pxa1908*.c F: include/dt-bindings/clock/marvell,pxa1908.h +F: include/dt-bindings/power/marvell,pxa1908-power.h =20 ARM/Mediatek RTC DRIVER M: Eddie Huang diff --git a/include/dt-bindings/power/marvell,pxa1908-power.h b/include/dt= -bindings/power/marvell,pxa1908-power.h new file mode 100644 index 0000000000000000000000000000000000000000..19b088351af138823505a774ff2= 7203429fe2d97 --- /dev/null +++ b/include/dt-bindings/power/marvell,pxa1908-power.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ +/* + * Marvell PXA1908 power domains + * + * Copyright 2025, Duje Mihanovi=C4=87 + */ + +#ifndef __DTS_MARVELL_PXA1908_POWER_H +#define __DTS_MARVELL_PXA1908_POWER_H + +#define PXA1908_POWER_DOMAIN_VPU 0 +#define PXA1908_POWER_DOMAIN_GPU 1 +#define PXA1908_POWER_DOMAIN_GPU2D 2 +#define PXA1908_POWER_DOMAIN_DSI 3 +#define PXA1908_POWER_DOMAIN_ISP 4 + +#endif --=20 2.51.0 From nobody Thu Oct 2 17:00:10 2025 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 272D6283129 for ; Sat, 13 Sep 2025 21:16:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798188; cv=none; b=g+8pelyTyy04tn7ddBoY/VGr3zYQQOX4UHZDVnaYtDx7EQJL5eq2EfPoYzFZ/WyIXrpXxczjvBMcwFK5tMLCd0NGXEWmC55bvfhQf5lXId0X9EcocfZHlf6r2awIw0VlmSHxu4CsaBhx7T0ZVaH4w6DDoCcy6ADX6pwkK8lgukY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798188; c=relaxed/simple; bh=FbsSrDbIsf254X9ygdyJmab114sPqVBUJEm/ZgXYp8k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hJ9/eM00KqCyWFyF2u8+0E/qvXaJsln72UDBlm6kjPoKD8GwAP1VaGURCYPV/5TMJxrgSd6b/x9GJ5Ce4ZAgAEMDPdLUZRUibu5ewjwjKyx86ujILMheCxqpXQkGJaAkzngqY23saTRbmxmv6BdjWuHJg/Zu3AB6i5VyLJlFu3I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=d1E4NQlw; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d1E4NQlw" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-45e03730f83so13826525e9.0 for ; Sat, 13 Sep 2025 14:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757798184; x=1758402984; 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=hRPSMDhrgBlR28GcWuNEsdGj0gTClNNcrvrMo8tfw8k=; b=d1E4NQlwGwqFQ+WFnRgJY+NevmBkdDUJxOjIgNxpwg/zCJwxo0jwOXYF36yA425h9X 5R+w/DwhaJ1gwHOpolMPsUedXKyEhEvDfANnNEeH20HPYCEGpHKdELDteSho43F40uql pqdqlZsrOOHQ0cEDysNSk/erMEFLIMFezm7KWqFYoNbw5rYLMYiUUFckM9x5nSBUE95w UeqkiYZJ8e8uBVqbpajytEy0gIZr3Vur+D68hwC1f81UMrtfzAcTb/DEgwyGB91f83Rd Ib4hrnrfrEnbR4dC3C3XbPMQp1df8HuJQfIWhGMd1cTjejxJw+BhgBs1d7VQ2ubJaxcW 7heQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757798184; x=1758402984; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hRPSMDhrgBlR28GcWuNEsdGj0gTClNNcrvrMo8tfw8k=; b=Mtw77mrWKa7qg4PZSxWRPVbaayCgmdW9U3sqZaakhZJzOttH8ozvfMAeorvFajIhim lgE3O2X6YaJxzNcHe6GurotVgVrwsr0W+DeBM7/XK1Hx5jm09NbysXdjqHdJCfY0cUUR o5zgoyn75SYEc2ZIJOpsIWlS+TPpcoPOVbDFF0jSV6UpQdDU1vc5JCNuuKqWSTQTcERT GZkJiJqG0mKvlG5ESqiPD+g6m08mYIeweIXYLfbVDMd8g/kbO/QrhikgLiX9k0Ttewuk e+Ep+Hg+ov6KcmDl1yXxM6DU7ihNXFm3b3zRnCtdt7NfPzLDSY5V3AqTYDvX9Ob0FjYd Hg4A== X-Forwarded-Encrypted: i=1; AJvYcCWeJ4n7w50tSURF5pX0HrHW+wGDn3E3Myj1/0WExwXa4HPz+jqqSNSMRbT5J2aqVnrKpe/Lw9DtCpxtFyo=@vger.kernel.org X-Gm-Message-State: AOJu0YyH78yjC17whQPWcAsYexNhINruCXxjASnndMnLgl89zrg8hPwQ 4//YJIXCfOTFuZ0cOTTV0NyJ5Djx9xhe+2JUapat4Imd3Q//VBc+pOFtaFTerzhs X-Gm-Gg: ASbGnctj7NEbqwAYQgPnMfe0Y6smzIBGPiUyAZRWgXEfGX1zGxWQdVV8X5y1UT6VxlQ pCjUDv44DBA2u2ydMGWFUH86pMmZAtmW2XgI+0b2NRJzfYSgpoxbZPJl81V3VvetIchFdpQYVkO NId4mlmekq02ScG1bozndn7f4nZO1a116/bXSbkXqrtuocMqUKpromvjZUz1bPFiRjpik4Ck70E i79I17iKmXqofnnBqSvgkFgJ9OXRjclBCpHz7DaY1PT4zIAS0H5VObiZCfn9bY4dM+B+Gcy546c J+pL7KDL3wf18gZagXw3N0zexq1eVsaKhyBs2/o5tAIhizovM4pT93eIMadzGDtEToW7Uwa9jvt GKi/NGfsfWGcg5HFbX4y2w8pIB+dZzED/uaefGD45MOaQhwTkplzI X-Google-Smtp-Source: AGHT+IGn5Ct9i7dOW4IgjxA/5Yvs0me0MDivcN7ezFGBgxTgSHfWsOUNBtqLrEb3nQ0wFvqCLJX0Sw== X-Received: by 2002:a05:600c:5248:b0:45d:d9ab:b85a with SMTP id 5b1f17b1804b1-45f211e520bmr76729935e9.7.1757798183876; Sat, 13 Sep 2025 14:16:23 -0700 (PDT) Received: from Radijator.localdomain ([93.140.65.23]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e014ac468sm65403145e9.0.2025.09.13.14.16.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 14:16:23 -0700 (PDT) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sat, 13 Sep 2025 23:12:49 +0200 Subject: [PATCH v4 2/4] pmdomain: marvell: Add PXA1908 power domains 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: <20250913-pxa1908-genpd-v4-2-55e4cf32f619@dujemihanovic.xyz> References: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> In-Reply-To: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ulf Hansson Cc: David Wronek , Karel Balej , phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Duje_Mihanovi=C4=87?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=11858; i=duje@dujemihanovic.xyz; s=20240706; h=from:subject:message-id; bh=s4HrTeVpqN7u98RpTsl8VxYA+1XpjoqSONdA9Q+y97U=; b=owGbwMvMwCW21nBykGv/WmbG02pJDBlH7yv999zI+slIjc9EObVH5coCHm5Ok+YpAr57EmfZc cfLrDjbUcrCIMbFICumyJL73/Ea72eRrduzlxnAzGFlAhnCwMUpABMJYGRkmCh4W+TGlc1BWVxx zN/4Vu/9MMNuduUqbbPrjQuOsy95ksrwz+wuw+KOhiP9F/lWljbmmny+3/t2UR57yLUb+ofvvzr ZxQ8A X-Developer-Key: i=duje@dujemihanovic.xyz; a=openpgp; fpr=6DFF41D60DF314B5B76BA630AD319352458FAD03 From: Duje Mihanovi=C4=87 Marvell's PXA1908 SoC has a few power domains for its VPU, GPU, image processor and DSI PHY. Add a driver to control these. Signed-off-by: Duje Mihanovi=C4=87 --- v4: - Drop usage of &genpd->dev - Macros for poll sleep and timeout delays - Configure domains before registering - Clean up includes v3: - Move driver back to pmdomain subsystem, use auxiliary bus to instantiate the driver - Drop redundant 'struct device' pointer in 'struct pxa1908_pd' - Fix pxa1908_pd_is_on() for DSI domain - Replace usleep_range() with fsleep() - Use dev_err_probe() where sensible v2: - Move to clk subsystem, instantiate the driver from the APMU clock driver - Drop clock handling - Squash MAINTAINERS patch --- MAINTAINERS | 1 + drivers/pmdomain/Kconfig | 1 + drivers/pmdomain/Makefile | 1 + drivers/pmdomain/marvell/Kconfig | 18 ++ drivers/pmdomain/marvell/Makefile | 3 + .../pmdomain/marvell/pxa1908-power-controller.c | 274 +++++++++++++++++= ++++ 6 files changed, 298 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 6f1d29c42c2eccf7fad489fd6a9b2c74fb24e4ff..5b0e4767639b24d89fa760020a9= 681e5c2001a6e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2871,6 +2871,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated fo= r non-subscribers) S: Maintained F: arch/arm64/boot/dts/marvell/mmp/ F: drivers/clk/mmp/clk-pxa1908*.c +F: drivers/pmdomain/marvell/ F: include/dt-bindings/clock/marvell,pxa1908.h F: include/dt-bindings/power/marvell,pxa1908-power.h =20 diff --git a/drivers/pmdomain/Kconfig b/drivers/pmdomain/Kconfig index 91f04ace35d4b024fafdf6af4e26a179640eb82f..23076ae90e6641dea8e5dbc851d= 041cd7929cee6 100644 --- a/drivers/pmdomain/Kconfig +++ b/drivers/pmdomain/Kconfig @@ -7,6 +7,7 @@ source "drivers/pmdomain/apple/Kconfig" source "drivers/pmdomain/arm/Kconfig" source "drivers/pmdomain/bcm/Kconfig" source "drivers/pmdomain/imx/Kconfig" +source "drivers/pmdomain/marvell/Kconfig" source "drivers/pmdomain/mediatek/Kconfig" source "drivers/pmdomain/qcom/Kconfig" source "drivers/pmdomain/renesas/Kconfig" diff --git a/drivers/pmdomain/Makefile b/drivers/pmdomain/Makefile index 7030f44a49df9e91b1c9d1b6d12690a6248671fb..ebc802f13eb953db750f5a9507c= aa64c637a957a 100644 --- a/drivers/pmdomain/Makefile +++ b/drivers/pmdomain/Makefile @@ -5,6 +5,7 @@ obj-y +=3D apple/ obj-y +=3D arm/ obj-y +=3D bcm/ obj-y +=3D imx/ +obj-y +=3D marvell/ obj-y +=3D mediatek/ obj-y +=3D qcom/ obj-y +=3D renesas/ diff --git a/drivers/pmdomain/marvell/Kconfig b/drivers/pmdomain/marvell/Kc= onfig new file mode 100644 index 0000000000000000000000000000000000000000..6c4084c826670266b7d948438f6= e6d76acb416e2 --- /dev/null +++ b/drivers/pmdomain/marvell/Kconfig @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: GPL-2.0-only + +menu "Marvell PM Domains" + depends on ARCH_MMP || COMPILE_TEST + +config PXA1908_PM_DOMAINS + tristate "Marvell PXA1908 power domains" + depends on OF + depends on PM + default y if ARCH_MMP && ARM64 + select AUXILIARY_BUS + select MFD_SYSCON + select PM_GENERIC_DOMAINS + select PM_GENERIC_DOMAINS_OF + help + Say Y here to enable support for Marvell PXA1908's power domanis. + +endmenu diff --git a/drivers/pmdomain/marvell/Makefile b/drivers/pmdomain/marvell/M= akefile new file mode 100644 index 0000000000000000000000000000000000000000..22c25013f6c856a2ca01a121e83= 0279ee88eb0ed --- /dev/null +++ b/drivers/pmdomain/marvell/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +obj-$(CONFIG_PXA1908_PM_DOMAINS) +=3D pxa1908-power-controller.o diff --git a/drivers/pmdomain/marvell/pxa1908-power-controller.c b/drivers/= pmdomain/marvell/pxa1908-power-controller.c new file mode 100644 index 0000000000000000000000000000000000000000..ff5e6e82d3f8df2b373a362e046= 0ccb9e196d9ce --- /dev/null +++ b/drivers/pmdomain/marvell/pxa1908-power-controller.c @@ -0,0 +1,274 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright 2025 Duje Mihanovi=C4=87 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* VPU, GPU, ISP */ +#define APMU_PWR_CTRL_REG 0xd8 +#define APMU_PWR_BLK_TMR_REG 0xdc +#define APMU_PWR_STATUS_REG 0xf0 + +/* DSI */ +#define APMU_DEBUG 0x88 +#define DSI_PHY_DVM_MASK BIT(31) + +#define POWER_ON_LATENCY_US 300 +#define POWER_OFF_LATENCY_US 20 +#define POWER_POLL_TIMEOUT_US (25 * USEC_PER_MSEC) +#define POWER_POLL_SLEEP_US 6 + +#define NR_DOMAINS 5 + +#define to_pxa1908_pd(_genpd) container_of(_genpd, struct pxa1908_pd, genp= d) + +struct pxa1908_pd_ctrl { + struct generic_pm_domain *domains[NR_DOMAINS]; + struct genpd_onecell_data onecell_data; + struct regmap *base; + struct device *dev; +}; + +struct pxa1908_pd_data { + u32 reg_clk_res_ctrl; + u32 pwr_state; + u32 hw_mode; + bool keep_on; + int id; +}; + +struct pxa1908_pd { + const struct pxa1908_pd_data data; + struct pxa1908_pd_ctrl *ctrl; + struct generic_pm_domain genpd; + bool initialized; +}; + +static inline bool pxa1908_pd_is_on(struct pxa1908_pd *pd) +{ + struct pxa1908_pd_ctrl *ctrl =3D pd->ctrl; + + return pd->data.id !=3D PXA1908_POWER_DOMAIN_DSI + ? regmap_test_bits(ctrl->base, APMU_PWR_STATUS_REG, pd->data.pwr_state) + : regmap_test_bits(ctrl->base, APMU_DEBUG, DSI_PHY_DVM_MASK); +} + +static int pxa1908_pd_power_on(struct generic_pm_domain *genpd) +{ + struct pxa1908_pd *pd =3D to_pxa1908_pd(genpd); + const struct pxa1908_pd_data *data =3D &pd->data; + struct pxa1908_pd_ctrl *ctrl =3D pd->ctrl; + unsigned int status; + int ret =3D 0; + + regmap_set_bits(ctrl->base, data->reg_clk_res_ctrl, data->hw_mode); + if (data->id !=3D PXA1908_POWER_DOMAIN_ISP) + regmap_write(ctrl->base, APMU_PWR_BLK_TMR_REG, 0x20001fff); + regmap_set_bits(ctrl->base, APMU_PWR_CTRL_REG, data->pwr_state); + + ret =3D regmap_read_poll_timeout(ctrl->base, APMU_PWR_STATUS_REG, status, + status & data->pwr_state, POWER_POLL_SLEEP_US, + POWER_ON_LATENCY_US + POWER_POLL_TIMEOUT_US); + if (ret =3D=3D -ETIMEDOUT) + dev_err(ctrl->dev, "timed out powering on domain '%s'\n", pd->genpd.name= ); + + return ret; +} + +static int pxa1908_pd_power_off(struct generic_pm_domain *genpd) +{ + struct pxa1908_pd *pd =3D to_pxa1908_pd(genpd); + const struct pxa1908_pd_data *data =3D &pd->data; + struct pxa1908_pd_ctrl *ctrl =3D pd->ctrl; + unsigned int status; + int ret; + + regmap_clear_bits(ctrl->base, APMU_PWR_CTRL_REG, data->pwr_state); + + ret =3D regmap_read_poll_timeout(ctrl->base, APMU_PWR_STATUS_REG, status, + !(status & data->pwr_state), POWER_POLL_SLEEP_US, + POWER_OFF_LATENCY_US + POWER_POLL_TIMEOUT_US); + if (ret =3D=3D -ETIMEDOUT) { + dev_err(ctrl->dev, "timed out powering off domain '%s'\n", pd->genpd.nam= e); + return ret; + } + + return regmap_clear_bits(ctrl->base, data->reg_clk_res_ctrl, data->hw_mod= e); +} + +static inline int pxa1908_dsi_power_on(struct generic_pm_domain *genpd) +{ + struct pxa1908_pd *pd =3D to_pxa1908_pd(genpd); + struct pxa1908_pd_ctrl *ctrl =3D pd->ctrl; + + return regmap_set_bits(ctrl->base, APMU_DEBUG, DSI_PHY_DVM_MASK); +} + +static inline int pxa1908_dsi_power_off(struct generic_pm_domain *genpd) +{ + struct pxa1908_pd *pd =3D to_pxa1908_pd(genpd); + struct pxa1908_pd_ctrl *ctrl =3D pd->ctrl; + + return regmap_clear_bits(ctrl->base, APMU_DEBUG, DSI_PHY_DVM_MASK); +} + +#define DOMAIN(_id, _name, ctrl, mode, state) \ + [_id] =3D { \ + .data =3D { \ + .reg_clk_res_ctrl =3D ctrl, \ + .hw_mode =3D BIT(mode), \ + .pwr_state =3D BIT(state), \ + .id =3D _id, \ + }, \ + .genpd =3D { \ + .name =3D _name, \ + .power_on =3D pxa1908_pd_power_on, \ + .power_off =3D pxa1908_pd_power_off, \ + }, \ + } + +static struct pxa1908_pd domains[NR_DOMAINS] =3D { + DOMAIN(PXA1908_POWER_DOMAIN_VPU, "vpu", 0xa4, 19, 2), + DOMAIN(PXA1908_POWER_DOMAIN_GPU, "gpu", 0xcc, 11, 0), + DOMAIN(PXA1908_POWER_DOMAIN_GPU2D, "gpu2d", 0xf4, 11, 6), + DOMAIN(PXA1908_POWER_DOMAIN_ISP, "isp", 0x38, 15, 4), + [PXA1908_POWER_DOMAIN_DSI] =3D { + .genpd =3D { + .name =3D "dsi", + .power_on =3D pxa1908_dsi_power_on, + .power_off =3D pxa1908_dsi_power_off, + /* + * TODO: There is no DSI driver written yet and until then we probably + * don't want to power off the DSI PHY ever. + */ + .flags =3D GENPD_FLAG_ALWAYS_ON, + }, + .data =3D { + /* See above. */ + .keep_on =3D true, + }, + }, +}; + +static void pxa1908_pd_remove(struct auxiliary_device *auxdev) +{ + struct pxa1908_pd *pd; + int ret; + + for (int i =3D NR_DOMAINS - 1; i >=3D 0; i--) { + pd =3D &domains[i]; + + if (!pd->initialized) + continue; + + if (pxa1908_pd_is_on(pd) && !pd->data.keep_on) + pxa1908_pd_power_off(&pd->genpd); + + ret =3D pm_genpd_remove(&pd->genpd); + if (ret) + dev_err(&auxdev->dev, "failed to remove domain '%s': %d\n", + pd->genpd.name, ret); + } +} + +static int +pxa1908_pd_init(struct pxa1908_pd_ctrl *ctrl, int id, struct device *dev) +{ + struct pxa1908_pd *pd =3D &domains[id]; + int ret; + + ctrl->domains[id] =3D &pd->genpd; + + pd->ctrl =3D ctrl; + + /* Make sure the state of the hardware is synced with the domain table ab= ove. */ + if (pd->data.keep_on) { + ret =3D pd->genpd.power_on(&pd->genpd); + if (ret) + return dev_err_probe(dev, ret, "failed to power on domain '%s'\n", + pd->genpd.name); + } else { + if (pxa1908_pd_is_on(pd)) { + dev_warn(dev, + "domain '%s' is on despite being default off; powering off\n", + pd->genpd.name); + + ret =3D pd->genpd.power_off(&pd->genpd); + if (ret) + return dev_err_probe(dev, ret, + "failed to power off domain '%s'\n", + pd->genpd.name); + } + } + + ret =3D pm_genpd_init(&pd->genpd, NULL, !pd->data.keep_on); + if (ret) + return dev_err_probe(dev, ret, "domain '%s' failed to initialize\n", + pd->genpd.name); + + pd->initialized =3D true; + + return 0; +} + +static int +pxa1908_pd_probe(struct auxiliary_device *auxdev, const struct auxiliary_d= evice_id *aux_id) +{ + struct pxa1908_pd_ctrl *ctrl; + struct device *dev =3D &auxdev->dev; + int ret; + + ctrl =3D devm_kzalloc(dev, sizeof(*ctrl), GFP_KERNEL); + if (!ctrl) + return -ENOMEM; + + auxiliary_set_drvdata(auxdev, ctrl); + + ctrl->base =3D syscon_node_to_regmap(dev->parent->of_node); + if (IS_ERR(ctrl->base)) + return dev_err_probe(dev, PTR_ERR(ctrl->base), "no regmap available\n"); + + ctrl->dev =3D dev; + ctrl->onecell_data.domains =3D ctrl->domains; + ctrl->onecell_data.num_domains =3D NR_DOMAINS; + + for (int i =3D 0; i < NR_DOMAINS; i++) { + ret =3D pxa1908_pd_init(ctrl, i, dev); + if (ret) + goto err; + } + + return of_genpd_add_provider_onecell(dev->parent->of_node, &ctrl->onecell= _data); + +err: + pxa1908_pd_remove(auxdev); + return ret; +} + +static const struct auxiliary_device_id pxa1908_pd_id[] =3D { + { .name =3D "clk_pxa1908_apmu.power" }, + { } +}; +MODULE_DEVICE_TABLE(auxiliary, pxa1908_pd_id); + +static struct auxiliary_driver pxa1908_pd_driver =3D { + .probe =3D pxa1908_pd_probe, + .remove =3D pxa1908_pd_remove, + .id_table =3D pxa1908_pd_id, +}; +module_auxiliary_driver(pxa1908_pd_driver); + +MODULE_AUTHOR("Duje Mihanovi=C4=87 "); +MODULE_DESCRIPTION("Marvell PXA1908 power domain driver"); +MODULE_LICENSE("GPL"); --=20 2.51.0 From nobody Thu Oct 2 17:00:10 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.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 EFE00284663 for ; Sat, 13 Sep 2025 21:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798191; cv=none; b=MrAramWjuyCBD7zCHfcS4Pl8gg/Wyt9zRZJd/oEfasstPzs/0tKKwNhUSOU2HOCdYLPCF7/z+ssxiGMiOifm/9+iEy0ZnSF4DiLAbndu8zmqKCxlmiLPZA0OGKI9vYtINB9Uo84Ic7PaA9DMdsyl0e56HBV3DFPsmYMxmvgS8fQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798191; c=relaxed/simple; bh=5e7C8/TepjeMtvdq2kYyVr6fK/WhjkkaD45NrgvOPnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mDz3qgbC7au45z6uGLGyRi/QO++70wAXBuIgOkYbsEBxLU9mRqLKMbsyfTKhQZSifWnHlOd4aPHg2zrStiNLf6vXReNLoZjdH+RbWveb0J3k9UWtaPeYOSQN1/e73G1alSNtxAf7hNb7Ifj9Jcdz75o7TW3baozn6bQKkmDw8yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CbOTBjde; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CbOTBjde" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3e9a9298764so100997f8f.2 for ; Sat, 13 Sep 2025 14:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757798187; x=1758402987; 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=x+VP5nzPO7TU78rfhYTFY7al0sL7mhZVAIAF4JSoUlo=; b=CbOTBjde5lQ7N36F3xP1hZbPey4UiqlZJ0Qt4MCpUEwD9AwaVzNlTFX2n4JxxAMQaK zC3xw66p6M682DlD4Bll9KaGuOSjhZyruH++wbp3MSgPSO4jebD54Pq0sbz7RGcnVPq0 BnljcKv1E8fNVFmOolLRihI6bbor0hufy16Tw8E8P1ZOReL8l66yBqccEEEemLmwb6ES GMlWtl50IYK902AhJBecXDTjlBHGzykrPV8Wy/Tu7sVcdSuUKspACbiqc5lWFTKrAN/j +WCvXD7t6lgktm2ad4hKzxZLZiM4hkieAlqIQ4EXY/IMKiZDj08VuVxfsuzv95HJ3YNp StbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757798187; x=1758402987; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x+VP5nzPO7TU78rfhYTFY7al0sL7mhZVAIAF4JSoUlo=; b=i3A3/pAcdAUK3GWo1IZ+dB/B96plxtNlezreQ0D9LfMxrHUubKHbCQxry0m6W99xat eNEHIAI2/dLMhmS6DNvbijweuZjUaXLBPIHnqrWNkxuvxb6zBMam0IXBJfC80DI83Oqu SozVea5m9hME1ncPo5XMOOd5lpW1/64VEbGVbZ1cZubHsbmhszHgTeKYb8rBppW3JPFl ++LEGCtKVdV84QteWZDVmn6ehR7mfqoD1I82lLEn0hZWxgeTn3B74CNVhqIzHlOZYoXt 7gwRpV4uMYwt2G2uo/2HkAGcMwFSiLb8NlppntpcDuMv+BMZllg48JjFCGHKgeY9RBXv nlFA== X-Forwarded-Encrypted: i=1; AJvYcCUDbowJVY9bqxNm8vYyKhgKh+7srdGcW+nQXEp418+2QXO+vJWuAWIs/KKeCS0fOL2CpvHFiMr1gub1YQk=@vger.kernel.org X-Gm-Message-State: AOJu0YzGeNt53NtFdqob5ZDs5QG+yfzwlrieG0+k220dWCvBwUtZ3aSA FV2E710MmkYgVNdcWfzcKVJbJ/lQWEiiGc/4NJZ1Ni97jeFG04naPYNrTMIVco1F X-Gm-Gg: ASbGnct7vSUGt3oWP22NjNFIkUpLrl96JM0AziqgKC8ZoDiG34Ax/DMIdMlwK5WEb9M vNdnMiim4ICBBOndMegxRlF0yLSJfY5h98Z3ZxEb/h0/bj/Fbx5Ue8H3yeYxDxtnZVlzU8hl3Tb xkwV/rZJLihzwWKkWZ+EQu5V9erIcdOl6DW1/XaW/SlI4RYSx9oOkhYBwDqH2mYE1YgYiXpPkTQ ex1h79sZjhXcNSkIXosG+L+QjCAvRTEv1JojK7kznSts2WpcPBZU4pg8//rPyodaD0rDEV7FVtl Cy1UOuyzmJROKnaBJbeqHeV9cYC7xDvftU+pDOjVgKT6x+yYIitXU5Q0+hvKMx+NcDCXZ94qFwr imYfkUMKcgPhaDehE3hA50CutfYBnrARzo084dLFXjT8x+BXe/hj8 X-Google-Smtp-Source: AGHT+IErQfbzl+MbBvCHZhxs1p+1GYnI5sydo30kHH2h99Tqk9i7XQM6wd82P0gT6HpXmbTeKuaCjg== X-Received: by 2002:a05:6000:2289:b0:3de:5aff:3498 with SMTP id ffacd0b85a97d-3e7659c40f9mr6426295f8f.14.1757798186616; Sat, 13 Sep 2025 14:16:26 -0700 (PDT) Received: from Radijator.localdomain ([93.140.65.23]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e014ac468sm65403145e9.0.2025.09.13.14.16.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 14:16:26 -0700 (PDT) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sat, 13 Sep 2025 23:12:50 +0200 Subject: [PATCH v4 3/4] clk: mmp: pxa1908: Instantiate power driver through auxiliary bus 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: <20250913-pxa1908-genpd-v4-3-55e4cf32f619@dujemihanovic.xyz> References: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> In-Reply-To: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ulf Hansson Cc: David Wronek , Karel Balej , phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Duje_Mihanovi=C4=87?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4616; i=duje@dujemihanovic.xyz; s=20240706; h=from:subject:message-id; bh=w28rVWlir7yhdT2JFdKVFGiML/ldN3rGLXPeOpnXsl0=; b=owGbwMvMwCW21nBykGv/WmbG02pJDBlH7ytV2V8LFpVXk4iwbXp8pKpRROVavt7LuJkzhLbbe s1myKzrKGVhEONikBVTZMn973iN97PI1u3Zywxg5rAygQxh4OIUgIn47WVkWLF7ov5Fi8pXwYds p2TMzbuVvzdG5q5QekuY+E9u0ZPPzzIyfFr+4H/FqogKybKaJ9b6NkHfOJ8z6th9PeP96vi+gpo IfgA= X-Developer-Key: i=duje@dujemihanovic.xyz; a=openpgp; fpr=6DFF41D60DF314B5B76BA630AD319352458FAD03 From: Duje Mihanovi=C4=87 The power domain driver shares the APMU clock controller's registers. Instantiate the power domain driver through the APMU clock driver using the auxiliary bus. Also create a separate Kconfig entry for the PXA1908 clock driver to allow (de)selecting the driver at will and selecting CONFIG_AUXILIARY_BUS. Signed-off-by: Duje Mihanovi=C4=87 --- v4: - Use devm_auxiliary_device_create() v3: - Move driver back to pmdomain subsystem, use auxiliary bus to instantiate the driver v2: - Move to clk subsystem, instantiate the driver from the APMU clock driver - Drop clock handling - Squash MAINTAINERS patch --- MAINTAINERS | 2 ++ drivers/clk/Kconfig | 1 + drivers/clk/mmp/Kconfig | 10 ++++++++++ drivers/clk/mmp/Makefile | 5 ++++- drivers/clk/mmp/clk-pxa1908-apmu.c | 7 +++++++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 5b0e4767639b24d89fa760020a9681e5c2001a6e..148848dafac7c3dd50933ec22a3= bd26170535d47 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2869,7 +2869,9 @@ ARM/Marvell PXA1908 SOC support M: Duje Mihanovi=C4=87 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained +F: Documentation/devicetree/bindings/clock/marvell,pxa1908.yaml F: arch/arm64/boot/dts/marvell/mmp/ +F: drivers/clk/mmp/Kconfig F: drivers/clk/mmp/clk-pxa1908*.c F: drivers/pmdomain/marvell/ F: include/dt-bindings/clock/marvell,pxa1908.h diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig index 4d56475f94fc1e28823fe6aee626a96847d4e6d5..68a9641fc649a23013b2d8a9e9f= 5ecb31d623abb 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -511,6 +511,7 @@ source "drivers/clk/imx/Kconfig" source "drivers/clk/ingenic/Kconfig" source "drivers/clk/keystone/Kconfig" source "drivers/clk/mediatek/Kconfig" +source "drivers/clk/mmp/Kconfig" source "drivers/clk/meson/Kconfig" source "drivers/clk/mstar/Kconfig" source "drivers/clk/microchip/Kconfig" diff --git a/drivers/clk/mmp/Kconfig b/drivers/clk/mmp/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..b0d2fea3cda5de1284916ab75d3= af0412edcf57f --- /dev/null +++ b/drivers/clk/mmp/Kconfig @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config COMMON_CLK_PXA1908 + bool "Clock driver for Marvell PXA1908" + depends on ARCH_MMP || COMPILE_TEST + depends on OF + default y if ARCH_MMP && ARM64 + select AUXILIARY_BUS + help + This driver supports the Marvell PXA1908 SoC clocks. diff --git a/drivers/clk/mmp/Makefile b/drivers/clk/mmp/Makefile index 062cd87fa8ddcc6808b6236f8c4dd524aaf02030..0a94f2f0856389c8e959981ccaf= bb02140a7733d 100644 --- a/drivers/clk/mmp/Makefile +++ b/drivers/clk/mmp/Makefile @@ -11,4 +11,7 @@ obj-$(CONFIG_MACH_MMP_DT) +=3D clk-of-pxa168.o clk-of-pxa= 910.o obj-$(CONFIG_COMMON_CLK_MMP2) +=3D clk-of-mmp2.o clk-pll.o pwr-island.o obj-$(CONFIG_COMMON_CLK_MMP2_AUDIO) +=3D clk-audio.o =20 -obj-$(CONFIG_ARCH_MMP) +=3D clk-of-pxa1928.o clk-pxa1908-apbc.o clk-pxa190= 8-apbcp.o clk-pxa1908-apmu.o clk-pxa1908-mpmu.o +obj-$(CONFIG_COMMON_CLK_PXA1908) +=3D clk-pxa1908-apbc.o clk-pxa1908-apbcp= .o \ + clk-pxa1908-mpmu.o clk-pxa1908-apmu.o + +obj-$(CONFIG_ARCH_MMP) +=3D clk-of-pxa1928.o diff --git a/drivers/clk/mmp/clk-pxa1908-apmu.c b/drivers/clk/mmp/clk-pxa19= 08-apmu.c index d3a070687fc5b9fb5338f377f82e7664ca0aac29..7594a495a0093e8e22f2cfe3e61= a13d23dc3b9c2 100644 --- a/drivers/clk/mmp/clk-pxa1908-apmu.c +++ b/drivers/clk/mmp/clk-pxa1908-apmu.c @@ -1,4 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only +#include #include #include #include @@ -85,6 +86,7 @@ static void pxa1908_axi_periph_clk_init(struct pxa1908_cl= k_unit *pxa_unit) static int pxa1908_apmu_probe(struct platform_device *pdev) { struct pxa1908_clk_unit *pxa_unit; + struct auxiliary_device *adev; =20 pxa_unit =3D devm_kzalloc(&pdev->dev, sizeof(*pxa_unit), GFP_KERNEL); if (!pxa_unit) @@ -94,6 +96,11 @@ static int pxa1908_apmu_probe(struct platform_device *pd= ev) if (IS_ERR(pxa_unit->base)) return PTR_ERR(pxa_unit->base); =20 + adev =3D devm_auxiliary_device_create(&pdev->dev, "power", NULL); + if (IS_ERR(adev)) + return dev_err_probe(&pdev->dev, PTR_ERR(adev), + "Failed to register power controller\n"); + mmp_clk_init(pdev->dev.of_node, &pxa_unit->unit, APMU_NR_CLKS); =20 pxa1908_axi_periph_clk_init(pxa_unit); --=20 2.51.0 From nobody Thu Oct 2 17:00:10 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 7F43B284884 for ; Sat, 13 Sep 2025 21:16:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798192; cv=none; b=M2Dm1yCJzngCz4vdYkrucbngof4agwqcwUSsJo2ae20GkgbimOcX6D0LL2ZlW0qWCx2TRm/x02lHZSEuzTXY+lY4prweOQAEkNCDmd+G8hL8oeky9Epynbf4nKtQC2ijnUIIlUGVTZ1R21UywzA61A06yEoCwAWm7lZmV8Q4spk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757798192; c=relaxed/simple; bh=ynGpFvUCNh2azNjzmvH2cd0Aa2mM+V6AhQ6aSG5iG90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K2TsH+5ZzKMBFhJo42h9AgLyrqeUig2JXFO4eDOp2c2VCrk37dRth+GSipqS3PhZfkUCL5Db8lrufHF5bq2ftgvh61IhPrhOKZSqGp6iuUIK/PyKCeXQLck1jSumrVRwg2tqoY4h7AqCvceHJr6jdUT18bY/3IJpYYwzy50J3o4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KKN96Zxj; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KKN96Zxj" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-45dcff2f313so19428325e9.0 for ; Sat, 13 Sep 2025 14:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757798188; x=1758402988; 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=xc1itu5KlQDWqH+H4ca13G4lDoFzZa+J7vZRdBNUkg8=; b=KKN96ZxjFxFJ7psFdFs1UzO6znIt2i6t2FwsDgapW0RWmqbIxpcKTx1C6e3YiLD+Z9 PVLDFHr+1nS+EkjEGKHvJNn8aS1ffV78yKCExNddy5o0kUYqRYppLSaGlk/ygHo4nbQx XjaY3Bsa5rxyrUCPh7jLDMGiVgsxpx0B1g3RaG1o5jcZ/4EVJAcoLVKdNf/Zutgjm0Yj TMTGsi34i41gGeSBiHSto2xNqNePfo5zIgIdrB7aaXPRjZHFkh6jzbfp5CHqhpnWI3zU NJxBbQhnM1K/tUot4Dm+6mUxoF7SQ1HRZHN7PX3qYteDlGQbPAftjUwKJND9rITTAXK5 Fx2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757798188; x=1758402988; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xc1itu5KlQDWqH+H4ca13G4lDoFzZa+J7vZRdBNUkg8=; b=OFAeA88XlRQy9Uild62lpC5VFciZfHaMN0AR2ytfn+WVJdIDlVKUlzPSBzfJYsLaCw cjQhZg2my9PhyPtnz94zluU59TnjfwHtRZKkn3o8YDKR2/Jqye7TZSWVIhWVkpdajeVF 4czQIZ4hOEoLh92MKlSaV0ZE9pIExs/dTaVMV5+y0xJl66mLMCjf294V/gPvapgQtE5W 2VBYkNqKR3N/D4HlE/5gj7gA2+sRKRngLJnypIEUfaV6bxfpbxdd+pMT5jxO7dUrqWfc 44EYKg1zPIQwZmMEXZt/86NqplpfOAtzTWsatPrUm3gxYpowOTTKCZ5bY7srf33tefL5 fyzQ== X-Forwarded-Encrypted: i=1; AJvYcCVoLvP1LmB24B9KRdxPm/Zv0zubl0Wqu/BOeeASrDNIyRkJgwPJbvAMHyXDVA20+/sCtQA/3oj/44pXEBM=@vger.kernel.org X-Gm-Message-State: AOJu0YyBrjy3v9KKh2H5DGR1lpnNvI8THjRW/XIZ+A28FpvaaqBeQicb 9IbEVfBH+gdEW/7ruw1PGRR3TalXBxpVyvTBMrjTeAZA+uud9vEoaFzS2a6HSg== X-Gm-Gg: ASbGncvgC/5JxXj4KzGyQ5Jva5qTHY1+2iNxNYY3xZL9VFymXFeHBVGDdehCBkW5LJP TOC5I2Ywovrgm9V+4prBO/cRbjz6GobD0ev6zEcFwR+rHIC7XldCGwBTRi/msDNoXm7kXEeSFIu TyHfUyYd3iu1VmLzKHIvSEdN1WgcSr1L5OMZ5d92iWNiSIE4pC5QbCzcHUS3s3E6q5sfYBKf8jz cKpUPsOyE2Qj5qkN8+XgKsuewqro3D/kDFyCF030OGTsgbNbPyQUP0Z4iMKxYPp4K4os/ZR51jA L7+nQbY8yjUuUGOMNzG+FTWMBMH5FwsXRObu6DkvhJ8F48dmysrPZQ9UVXIpW3/uXh5PKQzJg32 0nSmFiPiJHwuPvHO/oDrJ4hhH/ako3lOhhbJHFLR5Qw== X-Google-Smtp-Source: AGHT+IGhdgswjdcu+5JC+27xL3gEdZUaPnM5znx2uaoFA5uc1n2maYqdCXzlYh1D0GuyCTtQVTqWqA== X-Received: by 2002:a05:600c:1c13:b0:45d:db2a:ce30 with SMTP id 5b1f17b1804b1-45f25971c61mr39608505e9.0.1757798188371; Sat, 13 Sep 2025 14:16:28 -0700 (PDT) Received: from Radijator.localdomain ([93.140.65.23]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e014ac468sm65403145e9.0.2025.09.13.14.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 14:16:27 -0700 (PDT) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sat, 13 Sep 2025 23:12:51 +0200 Subject: [PATCH v4 4/4] arm64: dts: marvell: pxa1908: Add power domains 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: <20250913-pxa1908-genpd-v4-4-55e4cf32f619@dujemihanovic.xyz> References: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> In-Reply-To: <20250913-pxa1908-genpd-v4-0-55e4cf32f619@dujemihanovic.xyz> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Ulf Hansson Cc: David Wronek , Karel Balej , phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, =?utf-8?q?Duje_Mihanovi=C4=87?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2261; i=duje@dujemihanovic.xyz; s=20240706; h=from:subject:message-id; bh=+LiKf5xAdZ3VQjErBPnxDlU3GQ3YyQ0Gx7TmBGM/obc=; b=owGbwMvMwCW21nBykGv/WmbG02pJDBlH7ysdPpw0RT3vQf4RtxL3zu1vTtn5ZOwt9qz2YQhlz BXfJbSso5SFQYyLQVZMkSX3v+M13s8iW7dnLzOAmcPKBDKEgYtTACZyaiLDP+1NE9us7d3Xf1+/ vbXEtXlV949f9+TOOPZX37FVFJh0UJDhN+tPww0L66uakjo2sWksUrm+eyXf0oDUq8/EZyrWzZW z5QYA X-Developer-Key: i=duje@dujemihanovic.xyz; a=openpgp; fpr=6DFF41D60DF314B5B76BA630AD319352458FAD03 From: Duje Mihanovi=C4=87 Update the APMU clock controller's compatible to allow the new power domain driver to probe. Also add the first two power domain consumers: IOMMU (fixes probing) and framebuffer. Signed-off-by: Duje Mihanovi=C4=87 --- v2: - Drop power controller node - &pd -> &apmu --- arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte.dts | 1 + arch/arm64/boot/dts/marvell/mmp/pxa1908.dtsi | 5 +++= +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte= .dts b/arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte.dts index 47a4f01a7077bfafe2cc50d0e59c37685ec9c2e9..d61922f326a4654a45ab4312ea5= 12ac1b8b01c50 100644 --- a/arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte.dts +++ b/arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte.dts @@ -23,6 +23,7 @@ chosen { fb0: framebuffer@17177000 { compatible =3D "simple-framebuffer"; reg =3D <0 0x17177000 0 (480 * 800 * 4)>; + power-domains =3D <&apmu PXA1908_POWER_DOMAIN_DSI>; width =3D <480>; height =3D <800>; stride =3D <(480 * 4)>; diff --git a/arch/arm64/boot/dts/marvell/mmp/pxa1908.dtsi b/arch/arm64/boot= /dts/marvell/mmp/pxa1908.dtsi index cf2b9109688ce560eec8a1397251ead68d78a239..ae85b90eeb408a8f4014ec7b600= 48ae1fd3d4044 100644 --- a/arch/arm64/boot/dts/marvell/mmp/pxa1908.dtsi +++ b/arch/arm64/boot/dts/marvell/mmp/pxa1908.dtsi @@ -3,6 +3,7 @@ =20 #include #include +#include =20 / { model =3D "Marvell Armada PXA1908"; @@ -79,6 +80,7 @@ smmu: iommu@c0010000 { #iommu-cells =3D <1>; interrupts =3D , ; + power-domains =3D <&apmu PXA1908_POWER_DOMAIN_VPU>; status =3D "disabled"; }; =20 @@ -291,9 +293,10 @@ sdh2: mmc@81000 { }; =20 apmu: clock-controller@82800 { - compatible =3D "marvell,pxa1908-apmu"; + compatible =3D "marvell,pxa1908-apmu", "syscon"; reg =3D <0x82800 0x400>; #clock-cells =3D <1>; + #power-domain-cells =3D <1>; }; }; }; --=20 2.51.0