|
15 | 15 | #include <linux/reset.h> |
16 | 16 | #include <linux/clk.h> |
17 | 17 | #include <dt-bindings/power/meson8-power.h> |
| 18 | +#include <dt-bindings/power/meson-axg-power.h> |
18 | 19 | #include <dt-bindings/power/meson-g12a-power.h> |
19 | 20 | #include <dt-bindings/power/meson-gxbb-power.h> |
20 | 21 | #include <dt-bindings/power/meson-sm1-power.h> |
@@ -134,6 +135,11 @@ static struct meson_ee_pwrc_top_domain sm1_pwrc_ge2d = SM1_EE_PD(19); |
134 | 135 | { __reg, BIT(14) }, \ |
135 | 136 | { __reg, BIT(15) } |
136 | 137 |
|
| 138 | +static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_vpu[] = { |
| 139 | + VPU_MEMPD(HHI_VPU_MEM_PD_REG0), |
| 140 | + VPU_HHI_MEMPD(HHI_MEM_PD_REG0), |
| 141 | +}; |
| 142 | + |
137 | 143 | static struct meson_ee_pwrc_mem_domain g12a_pwrc_mem_vpu[] = { |
138 | 144 | VPU_MEMPD(HHI_VPU_MEM_PD_REG0), |
139 | 145 | VPU_MEMPD(HHI_VPU_MEM_PD_REG1), |
@@ -190,6 +196,10 @@ static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_ge2d[] = { |
190 | 196 | { HHI_MEM_PD_REG0, GENMASK(25, 18) }, |
191 | 197 | }; |
192 | 198 |
|
| 199 | +static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_audio[] = { |
| 200 | + { HHI_MEM_PD_REG0, GENMASK(5, 4) }, |
| 201 | +}; |
| 202 | + |
193 | 203 | static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = { |
194 | 204 | { HHI_MEM_PD_REG0, GENMASK(5, 4) }, |
195 | 205 | { HHI_AUDIO_MEM_PD_REG0, GENMASK(1, 0) }, |
@@ -231,6 +241,13 @@ static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = { |
231 | 241 |
|
232 | 242 | static bool pwrc_ee_get_power(struct meson_ee_pwrc_domain *pwrc_domain); |
233 | 243 |
|
| 244 | +static struct meson_ee_pwrc_domain_desc axg_pwrc_domains[] = { |
| 245 | + [PWRC_AXG_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, axg_pwrc_mem_vpu, |
| 246 | + pwrc_ee_get_power, 5, 2), |
| 247 | + [PWRC_AXG_ETHERNET_MEM_ID] = MEM_PD("ETH", meson_pwrc_mem_eth), |
| 248 | + [PWRC_AXG_AUDIO_ID] = MEM_PD("AUDIO", axg_pwrc_mem_audio), |
| 249 | +}; |
| 250 | + |
234 | 251 | static struct meson_ee_pwrc_domain_desc g12a_pwrc_domains[] = { |
235 | 252 | [PWRC_G12A_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, g12a_pwrc_mem_vpu, |
236 | 253 | pwrc_ee_get_power, 11, 2), |
@@ -529,6 +546,11 @@ static struct meson_ee_pwrc_domain_data meson_ee_g12a_pwrc_data = { |
529 | 546 | .domains = g12a_pwrc_domains, |
530 | 547 | }; |
531 | 548 |
|
| 549 | +static struct meson_ee_pwrc_domain_data meson_ee_axg_pwrc_data = { |
| 550 | + .count = ARRAY_SIZE(axg_pwrc_domains), |
| 551 | + .domains = axg_pwrc_domains, |
| 552 | +}; |
| 553 | + |
532 | 554 | static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = { |
533 | 555 | .count = ARRAY_SIZE(gxbb_pwrc_domains), |
534 | 556 | .domains = gxbb_pwrc_domains, |
@@ -562,6 +584,10 @@ static const struct of_device_id meson_ee_pwrc_match_table[] = { |
562 | 584 | .compatible = "amlogic,meson8m2-pwrc", |
563 | 585 | .data = &meson_ee_m8b_pwrc_data, |
564 | 586 | }, |
| 587 | + { |
| 588 | + .compatible = "amlogic,meson-axg-pwrc", |
| 589 | + .data = &meson_ee_axg_pwrc_data, |
| 590 | + }, |
565 | 591 | { |
566 | 592 | .compatible = "amlogic,meson-gxbb-pwrc", |
567 | 593 | .data = &meson_ee_gxbb_pwrc_data, |
|
0 commit comments