2020-09-04 16:18:31

by Neil Armstrong

[permalink] [raw]
Subject: [PATCH RESEND 0/2] soc: amlogic: add support for the Meson AXG Power Controller

This adds the bindings and support for the Power Controller found in the
Amlogic AXG SoCs.

The Power Controller in the Amlogic AXG SoCs is similar to the GXL one
but with less VPU memory domains to enable and a supplementary Audio
memory power domain.

Neil Armstrong (2):
dt-bindings: power: amlogic,meson-ee-pwrc: add Amlogic AXG power
controller bindings
soc: amlogic: meson-ee-pwrc: add support for the Meson AXG SoCs

.../bindings/power/amlogic,meson-ee-pwrc.yaml | 23 ++++++++++++++--
drivers/soc/amlogic/meson-ee-pwrc.c | 26 +++++++++++++++++++
include/dt-bindings/power/meson-axg-power.h | 14 ++++++++++
3 files changed, 61 insertions(+), 2 deletions(-)
create mode 100644 include/dt-bindings/power/meson-axg-power.h

--
2.22.0


2020-09-04 16:18:37

by Neil Armstrong

[permalink] [raw]
Subject: [PATCH RESEND 1/2] dt-bindings: power: amlogic,meson-ee-pwrc: add Amlogic AXG power controller bindings

This adds the bindings of the Power Controller found in the Amlogic AXG SoCs.

Signed-off-by: Neil Armstrong <[email protected]>
---
.../bindings/power/amlogic,meson-ee-pwrc.yaml | 23 +++++++++++++++++--
include/dt-bindings/power/meson-axg-power.h | 14 +++++++++++
2 files changed, 35 insertions(+), 2 deletions(-)
create mode 100644 include/dt-bindings/power/meson-axg-power.h

diff --git a/Documentation/devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml b/Documentation/devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml
index 4f524f822e84..d30f85cc395e 100644
--- a/Documentation/devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml
+++ b/Documentation/devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml
@@ -27,6 +27,7 @@ properties:
- amlogic,meson8b-pwrc
- amlogic,meson8m2-pwrc
- amlogic,meson-gxbb-pwrc
+ - amlogic,meson-axg-pwrc
- amlogic,meson-g12a-pwrc
- amlogic,meson-sm1-pwrc

@@ -42,11 +43,11 @@ properties:
- const: vapb

resets:
- minItems: 11
+ minItems: 5
maxItems: 12

reset-names:
- minItems: 11
+ minItems: 5
maxItems: 12

"#power-domain-cells":
@@ -107,6 +108,24 @@ allOf:
- resets
- reset-names

+ - if:
+ properties:
+ compatible:
+ enum:
+ - amlogic,meson-axg-pwrc
+ then:
+ properties:
+ reset-names:
+ items:
+ - const: viu
+ - const: venc
+ - const: vcbus
+ - const: vencl
+ - const: vid_lock
+ required:
+ - resets
+ - reset-names
+
- if:
properties:
compatible:
diff --git a/include/dt-bindings/power/meson-axg-power.h b/include/dt-bindings/power/meson-axg-power.h
new file mode 100644
index 000000000000..e5243884b249
--- /dev/null
+++ b/include/dt-bindings/power/meson-axg-power.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/*
+ * Copyright (c) 2020 BayLibre, SAS
+ * Author: Neil Armstrong <[email protected]>
+ */
+
+#ifndef _DT_BINDINGS_MESON_AXG_POWER_H
+#define _DT_BINDINGS_MESON_AXG_POWER_H
+
+#define PWRC_AXG_VPU_ID 0
+#define PWRC_AXG_ETHERNET_MEM_ID 1
+#define PWRC_AXG_AUDIO_ID 2
+
+#endif
--
2.22.0

2020-09-04 16:20:02

by Neil Armstrong

[permalink] [raw]
Subject: [PATCH RESEND 2/2] soc: amlogic: meson-ee-pwrc: add support for the Meson AXG SoCs

The Power Controller in the Amlogic AXG SoCs is similar to the GXL one
but with less VPU memory domains to enable and a supplementary Audio
memory power domain.

Signed-off-by: Neil Armstrong <[email protected]>
---
drivers/soc/amlogic/meson-ee-pwrc.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

diff --git a/drivers/soc/amlogic/meson-ee-pwrc.c b/drivers/soc/amlogic/meson-ee-pwrc.c
index 43665b77aa9e..81834eb166d0 100644
--- a/drivers/soc/amlogic/meson-ee-pwrc.c
+++ b/drivers/soc/amlogic/meson-ee-pwrc.c
@@ -15,6 +15,7 @@
#include <linux/reset.h>
#include <linux/clk.h>
#include <dt-bindings/power/meson8-power.h>
+#include <dt-bindings/power/meson-axg-power.h>
#include <dt-bindings/power/meson-g12a-power.h>
#include <dt-bindings/power/meson-gxbb-power.h>
#include <dt-bindings/power/meson-sm1-power.h>
@@ -141,6 +142,11 @@ static struct meson_ee_pwrc_mem_domain g12a_pwrc_mem_vpu[] = {
VPU_HHI_MEMPD(HHI_MEM_PD_REG0),
};

+static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_vpu[] = {
+ VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
+ VPU_HHI_MEMPD(HHI_MEM_PD_REG0),
+};
+
static struct meson_ee_pwrc_mem_domain gxbb_pwrc_mem_vpu[] = {
VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
VPU_MEMPD(HHI_VPU_MEM_PD_REG1),
@@ -190,6 +196,10 @@ static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_ge2d[] = {
{ HHI_MEM_PD_REG0, GENMASK(25, 18) },
};

+static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_audio[] = {
+ { HHI_MEM_PD_REG0, GENMASK(5, 4) },
+};
+
static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = {
{ HHI_MEM_PD_REG0, GENMASK(5, 4) },
{ HHI_AUDIO_MEM_PD_REG0, GENMASK(1, 0) },
@@ -237,6 +247,13 @@ static struct meson_ee_pwrc_domain_desc g12a_pwrc_domains[] = {
[PWRC_G12A_ETH_ID] = MEM_PD("ETH", meson_pwrc_mem_eth),
};

+static struct meson_ee_pwrc_domain_desc axg_pwrc_domains[] = {
+ [PWRC_AXG_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, axg_pwrc_mem_vpu,
+ pwrc_ee_get_power, 5, 2),
+ [PWRC_AXG_ETHERNET_MEM_ID] = MEM_PD("ETH", meson_pwrc_mem_eth),
+ [PWRC_AXG_AUDIO_ID] = MEM_PD("AUDIO", axg_pwrc_mem_audio),
+};
+
static struct meson_ee_pwrc_domain_desc gxbb_pwrc_domains[] = {
[PWRC_GXBB_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, gxbb_pwrc_mem_vpu,
pwrc_ee_get_power, 12, 2),
@@ -529,6 +546,11 @@ static struct meson_ee_pwrc_domain_data meson_ee_g12a_pwrc_data = {
.domains = g12a_pwrc_domains,
};

+static struct meson_ee_pwrc_domain_data meson_ee_axg_pwrc_data = {
+ .count = ARRAY_SIZE(axg_pwrc_domains),
+ .domains = axg_pwrc_domains,
+};
+
static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = {
.count = ARRAY_SIZE(gxbb_pwrc_domains),
.domains = gxbb_pwrc_domains,
@@ -566,6 +588,10 @@ static const struct of_device_id meson_ee_pwrc_match_table[] = {
.compatible = "amlogic,meson-gxbb-pwrc",
.data = &meson_ee_gxbb_pwrc_data,
},
+ {
+ .compatible = "amlogic,meson-axg-pwrc",
+ .data = &meson_ee_axg_pwrc_data,
+ },
{
.compatible = "amlogic,meson-g12a-pwrc",
.data = &meson_ee_g12a_pwrc_data,
--
2.22.0

2020-09-14 22:59:51

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH RESEND 1/2] dt-bindings: power: amlogic, meson-ee-pwrc: add Amlogic AXG power controller bindings

On Fri, 04 Sep 2020 18:16:53 +0200, Neil Armstrong wrote:
> This adds the bindings of the Power Controller found in the Amlogic AXG SoCs.
>
> Signed-off-by: Neil Armstrong <[email protected]>
> ---
> .../bindings/power/amlogic,meson-ee-pwrc.yaml | 23 +++++++++++++++++--
> include/dt-bindings/power/meson-axg-power.h | 14 +++++++++++
> 2 files changed, 35 insertions(+), 2 deletions(-)
> create mode 100644 include/dt-bindings/power/meson-axg-power.h
>

Reviewed-by: Rob Herring <[email protected]>

2020-09-15 19:48:14

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH RESEND 2/2] soc: amlogic: meson-ee-pwrc: add support for the Meson AXG SoCs

Hi Neil,

On Fri, Sep 4, 2020 at 6:17 PM Neil Armstrong <[email protected]> wrote:
>
> The Power Controller in the Amlogic AXG SoCs is similar to the GXL one
> but with less VPU memory domains to enable and a supplementary Audio
> memory power domain.
>
> Signed-off-by: Neil Armstrong <[email protected]>
I have three small comments below - no show-stoppers though:
Acked-by: Martin Blumenstingl <[email protected]>

[...]
> +static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_vpu[] = {
> + VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
> + VPU_HHI_MEMPD(HHI_MEM_PD_REG0),
> +};
> +
I would put this above the g12a one

[...]
> +static struct meson_ee_pwrc_domain_desc axg_pwrc_domains[] = {
> + [PWRC_AXG_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, axg_pwrc_mem_vpu,
> + pwrc_ee_get_power, 5, 2),
> + [PWRC_AXG_ETHERNET_MEM_ID] = MEM_PD("ETH", meson_pwrc_mem_eth),
> + [PWRC_AXG_AUDIO_ID] = MEM_PD("AUDIO", axg_pwrc_mem_audio),
> +};
> +
same here

[...]
> static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = {
> .count = ARRAY_SIZE(gxbb_pwrc_domains),
> .domains = gxbb_pwrc_domains,
> @@ -566,6 +588,10 @@ static const struct of_device_id meson_ee_pwrc_match_table[] = {
> .compatible = "amlogic,meson-gxbb-pwrc",
> .data = &meson_ee_gxbb_pwrc_data,
> },
> + {
> + .compatible = "amlogic,meson-axg-pwrc",
> + .data = &meson_ee_axg_pwrc_data,
> + },
this one I would put above the GXBB one


Best regards,
Martin

2020-09-15 19:48:49

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH RESEND 1/2] dt-bindings: power: amlogic, meson-ee-pwrc: add Amlogic AXG power controller bindings

On Fri, Sep 4, 2020 at 6:17 PM Neil Armstrong <[email protected]> wrote:
>
> This adds the bindings of the Power Controller found in the Amlogic AXG SoCs.
>
> Signed-off-by: Neil Armstrong <[email protected]>
Acked-by: Martin Blumenstingl <[email protected]>

2020-09-16 07:18:26

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH RESEND 2/2] soc: amlogic: meson-ee-pwrc: add support for the Meson AXG SoCs

On 15/09/2020 21:45, Martin Blumenstingl wrote:
> Hi Neil,
>
> On Fri, Sep 4, 2020 at 6:17 PM Neil Armstrong <[email protected]> wrote:
>>
>> The Power Controller in the Amlogic AXG SoCs is similar to the GXL one
>> but with less VPU memory domains to enable and a supplementary Audio
>> memory power domain.
>>
>> Signed-off-by: Neil Armstrong <[email protected]>
> I have three small comments below - no show-stoppers though:
> Acked-by: Martin Blumenstingl <[email protected]>
>
> [...]
>> +static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_vpu[] = {
>> + VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
>> + VPU_HHI_MEMPD(HHI_MEM_PD_REG0),
>> +};
>> +
> I would put this above the g12a one

Sure, I'll change for v2

>
> [...]
>> +static struct meson_ee_pwrc_domain_desc axg_pwrc_domains[] = {
>> + [PWRC_AXG_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, axg_pwrc_mem_vpu,
>> + pwrc_ee_get_power, 5, 2),
>> + [PWRC_AXG_ETHERNET_MEM_ID] = MEM_PD("ETH", meson_pwrc_mem_eth),
>> + [PWRC_AXG_AUDIO_ID] = MEM_PD("AUDIO", axg_pwrc_mem_audio),
>> +};
>> +
> same here

Sure, I'll change for v2


>
> [...]
>> static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = {
>> .count = ARRAY_SIZE(gxbb_pwrc_domains),
>> .domains = gxbb_pwrc_domains,
>> @@ -566,6 +588,10 @@ static const struct of_device_id meson_ee_pwrc_match_table[] = {
>> .compatible = "amlogic,meson-gxbb-pwrc",
>> .data = &meson_ee_gxbb_pwrc_data,
>> },
>> + {
>> + .compatible = "amlogic,meson-axg-pwrc",
>> + .data = &meson_ee_axg_pwrc_data,
>> + },
> this one I would put above the GXBB one

Sure, I'll change for v2

Thanks for the review,
Neil
>
>
> Best regards,
> Martin
>