Subject: [PATCH v2 0/3] Power: A4: add power domain driver

Add power controller driver support for Amlogic A4 SoC.

Signed-off-by: Xianwei Zhao <[email protected]>
---
Changes in v2:
- dts: Move power-controller node to be a child of secure-monitor.
- dts: Include power head file.
- Link to v1: https://lore.kernel.org/r/[email protected]

---
Xianwei Zhao (3):
dt-bindings: power: add Amlogic A4 power domains
pmdomain: amlogic: Add support for A4 power domains controller
arm64: dts: amlogic: a4: add power domain controller node

.../bindings/power/amlogic,meson-sec-pwrc.yaml | 1 +
arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 10 ++++++++
drivers/pmdomain/amlogic/meson-secure-pwrc.c | 28 ++++++++++++++++++++++
include/dt-bindings/power/amlogic,a4-pwrc.h | 21 ++++++++++++++++
4 files changed, 60 insertions(+)
---
base-commit: 456f4f5e6e6d3a2228501068a37ce13fe0b333d4
change-id: 20240528-a4_secpowerdomain-5eb005648930

Best regards,
--
Xianwei Zhao <[email protected]>




Subject: [PATCH v2 1/3] dt-bindings: power: add Amlogic A4 power domains

From: Xianwei Zhao <[email protected]>

Add devicetree binding document and related header file for
Amlogic A4 secure power domains.

Acked-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Xianwei Zhao <[email protected]>
---
.../bindings/power/amlogic,meson-sec-pwrc.yaml | 1 +
include/dt-bindings/power/amlogic,a4-pwrc.h | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)

diff --git a/Documentation/devicetree/bindings/power/amlogic,meson-sec-pwrc.yaml b/Documentation/devicetree/bindings/power/amlogic,meson-sec-pwrc.yaml
index dab3d92bc273..59915f9d4860 100644
--- a/Documentation/devicetree/bindings/power/amlogic,meson-sec-pwrc.yaml
+++ b/Documentation/devicetree/bindings/power/amlogic,meson-sec-pwrc.yaml
@@ -20,6 +20,7 @@ properties:
enum:
- amlogic,meson-a1-pwrc
- amlogic,meson-s4-pwrc
+ - amlogic,a4-pwrc
- amlogic,c3-pwrc
- amlogic,t7-pwrc

diff --git a/include/dt-bindings/power/amlogic,a4-pwrc.h b/include/dt-bindings/power/amlogic,a4-pwrc.h
new file mode 100644
index 000000000000..bd2f9c558d22
--- /dev/null
+++ b/include/dt-bindings/power/amlogic,a4-pwrc.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (C) 2024 Amlogic, Inc. All rights reserved
+ */
+#ifndef _DT_BINDINGS_AMLOGIC_A4_POWER_H
+#define _DT_BINDINGS_AMLOGIC_A4_POWER_H
+
+#define PWRC_A4_AUDIO_ID 0
+#define PWRC_A4_SDIOA_ID 1
+#define PWRC_A4_EMMC_ID 2
+#define PWRC_A4_USB_COMB_ID 3
+#define PWRC_A4_ETH_ID 4
+#define PWRC_A4_VOUT_ID 5
+#define PWRC_A4_AUDIO_PDM_ID 6
+#define PWRC_A4_DMC_ID 7
+#define PWRC_A4_SYS_WRAP_ID 8
+#define PWRC_A4_AO_I2C_S_ID 9
+#define PWRC_A4_AO_UART_ID 10
+#define PWRC_A4_AO_IR_ID 11
+
+#endif

--
2.37.1



Subject: [PATCH v2 2/3] pmdomain: amlogic: Add support for A4 power domains controller

From: Xianwei Zhao <[email protected]>

Add support for A4 power controller. A4 power control
registers are in secure domain, and should be accessed by SMC.

Reviewed-by: Neil Armstrong <[email protected]>
Signed-off-by: Xianwei Zhao <[email protected]>
---
drivers/pmdomain/amlogic/meson-secure-pwrc.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

diff --git a/drivers/pmdomain/amlogic/meson-secure-pwrc.c b/drivers/pmdomain/amlogic/meson-secure-pwrc.c
index 4d5bda0d60fc..3a84d8a74a5e 100644
--- a/drivers/pmdomain/amlogic/meson-secure-pwrc.c
+++ b/drivers/pmdomain/amlogic/meson-secure-pwrc.c
@@ -14,6 +14,7 @@
#include <dt-bindings/power/amlogic,c3-pwrc.h>
#include <dt-bindings/power/meson-s4-power.h>
#include <dt-bindings/power/amlogic,t7-pwrc.h>
+#include <dt-bindings/power/amlogic,a4-pwrc.h>
#include <linux/arm-smccc.h>
#include <linux/firmware/meson/meson_sm.h>
#include <linux/module.h>
@@ -136,6 +137,24 @@ static struct meson_secure_pwrc_domain_desc a1_pwrc_domains[] = {
SEC_PD(RSA, 0),
};

+static struct meson_secure_pwrc_domain_desc a4_pwrc_domains[] = {
+ SEC_PD(A4_AUDIO, 0),
+ SEC_PD(A4_SDIOA, 0),
+ SEC_PD(A4_EMMC, 0),
+ SEC_PD(A4_USB_COMB, 0),
+ SEC_PD(A4_ETH, 0),
+ SEC_PD(A4_VOUT, 0),
+ SEC_PD(A4_AUDIO_PDM, 0),
+ /* DMC is for DDR PHY ana/dig and DMC, and should be always on */
+ SEC_PD(A4_DMC, GENPD_FLAG_ALWAYS_ON),
+ /* WRAP is secure_top, a lot of modules are included, and should be always on */
+ SEC_PD(A4_SYS_WRAP, GENPD_FLAG_ALWAYS_ON),
+ SEC_PD(A4_AO_I2C_S, 0),
+ SEC_PD(A4_AO_UART, 0),
+ /* IR is wake up trigger source, and should be always on */
+ SEC_PD(A4_AO_IR, GENPD_FLAG_ALWAYS_ON),
+};
+
static struct meson_secure_pwrc_domain_desc c3_pwrc_domains[] = {
SEC_PD(C3_NNA, 0),
SEC_PD(C3_AUDIO, 0),
@@ -311,6 +330,11 @@ static struct meson_secure_pwrc_domain_data meson_secure_a1_pwrc_data = {
.count = ARRAY_SIZE(a1_pwrc_domains),
};

+static struct meson_secure_pwrc_domain_data amlogic_secure_a4_pwrc_data = {
+ .domains = a4_pwrc_domains,
+ .count = ARRAY_SIZE(a4_pwrc_domains),
+};
+
static struct meson_secure_pwrc_domain_data amlogic_secure_c3_pwrc_data = {
.domains = c3_pwrc_domains,
.count = ARRAY_SIZE(c3_pwrc_domains),
@@ -331,6 +355,10 @@ static const struct of_device_id meson_secure_pwrc_match_table[] = {
.compatible = "amlogic,meson-a1-pwrc",
.data = &meson_secure_a1_pwrc_data,
},
+ {
+ .compatible = "amlogic,a4-pwrc",
+ .data = &amlogic_secure_a4_pwrc_data,
+ },
{
.compatible = "amlogic,c3-pwrc",
.data = &amlogic_secure_c3_pwrc_data,

--
2.37.1



Subject: [PATCH v2 3/3] arm64: dts: amlogic: a4: add power domain controller node

From: Xianwei Zhao <[email protected]>

Add power domain controller node for Amlogic A4 SoC

Signed-off-by: Xianwei Zhao <[email protected]>
---
arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
index 73ca1d7eed81..de10e7aebf21 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
+++ b/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
@@ -4,6 +4,7 @@
*/

#include "amlogic-a4-common.dtsi"
+#include <dt-bindings/power/amlogic,a4-pwrc.h>
/ {
cpus {
#address-cells = <2>;
@@ -37,4 +38,13 @@ cpu3: cpu@3 {
enable-method = "psci";
};
};
+
+ sm: secure-monitor {
+ compatible = "amlogic,meson-gxbb-sm";
+
+ pwrc: power-controller {
+ compatible = "amlogic,a4-pwrc";
+ #power-domain-cells = <1>;
+ };
+ };
};

--
2.37.1



2024-06-05 09:58:38

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] Power: A4: add power domain driver

On Wed, 29 May 2024 at 05:10, Xianwei Zhao via B4 Relay
<[email protected]> wrote:
>
> Add power controller driver support for Amlogic A4 SoC.
>
> Signed-off-by: Xianwei Zhao <[email protected]>
> ---
> Changes in v2:
> - dts: Move power-controller node to be a child of secure-monitor.
> - dts: Include power head file.
> - Link to v1: https://lore.kernel.org/r/[email protected]
>
> ---
> Xianwei Zhao (3):
> dt-bindings: power: add Amlogic A4 power domains
> pmdomain: amlogic: Add support for A4 power domains controller
> arm64: dts: amlogic: a4: add power domain controller node
>
> .../bindings/power/amlogic,meson-sec-pwrc.yaml | 1 +
> arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 10 ++++++++
> drivers/pmdomain/amlogic/meson-secure-pwrc.c | 28 ++++++++++++++++++++++
> include/dt-bindings/power/amlogic,a4-pwrc.h | 21 ++++++++++++++++
> 4 files changed, 60 insertions(+)
> ---

Patch 1 and 2 applied for next, thanks!

Note that the DT patch (patch1) is also available on the immutable dt branch.

Kind regards
Uffe

2024-06-05 10:03:13

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] Power: A4: add power domain driver

On 05/06/2024 11:57, Ulf Hansson wrote:
> On Wed, 29 May 2024 at 05:10, Xianwei Zhao via B4 Relay
> <[email protected]> wrote:
>>
>> Add power controller driver support for Amlogic A4 SoC.
>>
>> Signed-off-by: Xianwei Zhao <[email protected]>
>> ---
>> Changes in v2:
>> - dts: Move power-controller node to be a child of secure-monitor.
>> - dts: Include power head file.
>> - Link to v1: https://lore.kernel.org/r/[email protected]
>>
>> ---
>> Xianwei Zhao (3):
>> dt-bindings: power: add Amlogic A4 power domains
>> pmdomain: amlogic: Add support for A4 power domains controller
>> arm64: dts: amlogic: a4: add power domain controller node
>>
>> .../bindings/power/amlogic,meson-sec-pwrc.yaml | 1 +
>> arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 10 ++++++++
>> drivers/pmdomain/amlogic/meson-secure-pwrc.c | 28 ++++++++++++++++++++++
>> include/dt-bindings/power/amlogic,a4-pwrc.h | 21 ++++++++++++++++
>> 4 files changed, 60 insertions(+)
>> ---
>
> Patch 1 and 2 applied for next, thanks!
>
> Note that the DT patch (patch1) is also available on the immutable dt branch.

Thanks, I'll merge it in my arm64-dt branch !

Neil

>
> Kind regards
> Uffe


2024-06-05 10:07:28

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: amlogic: a4: add power domain controller node

On 29/05/2024 05:10, Xianwei Zhao via B4 Relay wrote:
> From: Xianwei Zhao <[email protected]>
>
> Add power domain controller node for Amlogic A4 SoC
>
> Signed-off-by: Xianwei Zhao <[email protected]>
> ---
> arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
> index 73ca1d7eed81..de10e7aebf21 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi
> @@ -4,6 +4,7 @@
> */
>
> #include "amlogic-a4-common.dtsi"
> +#include <dt-bindings/power/amlogic,a4-pwrc.h>
> / {
> cpus {
> #address-cells = <2>;
> @@ -37,4 +38,13 @@ cpu3: cpu@3 {
> enable-method = "psci";
> };
> };
> +
> + sm: secure-monitor {
> + compatible = "amlogic,meson-gxbb-sm";
> +
> + pwrc: power-controller {
> + compatible = "amlogic,a4-pwrc";
> + #power-domain-cells = <1>;
> + };
> + };
> };
>

Reviewed-by: Neil Armstrong <[email protected]>

2024-06-06 09:23:08

by Neil Armstrong

[permalink] [raw]
Subject: Re: (subset) [PATCH v2 0/3] Power: A4: add power domain driver

Hi,

On Wed, 29 May 2024 11:10:32 +0800, Xianwei Zhao wrote:
> Add power controller driver support for Amlogic A4 SoC.
>
>

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.11/arm64-dt)

[3/3] arm64: dts: amlogic: a4: add power domain controller node
https://git.kernel.org/amlogic/c/c830ead0d16131de93d2020369ede4d670a4123b

These changes has been applied on the intermediate git tree [1].

The v6.11/arm64-dt branch will then be sent via a formal Pull Request to the Linux SoC maintainers
for inclusion in their intermediate git branches in order to be sent to Linus during
the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate
kernel and as soon they appear on the Linux master branch they will be
backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3],
people are encouraged testing these pre-release kernels and report issues on the
relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert
patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

--
Neil