* [PATCH v2 0/2] Add power-controller support for rk3576 @ 2024-08-08 16:31 Detlev Casanova 2024-08-08 16:31 ` [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC Detlev Casanova 2024-08-08 16:31 ` [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC Detlev Casanova 0 siblings, 2 replies; 9+ messages in thread From: Detlev Casanova @ 2024-08-08 16:31 UTC (permalink / raw) To: linux-kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Detlev Casanova, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel Add support for the power domain controller on the rk3576 SoC. Patches from downstream have been rebased. Note that the mentioned TRM is not publicly available. Changes since v1: - Rename rk3576-power.h to rockchip,rk3576-power.h - Add memory reset support - Squashed header files with bindings commit - Updated license - Fix commit messages for subsystem. Finley Xiao (2): dt-bindings: power: Add support for RK3576 SoC pmdomain: rockchip: Add support for rk3576 SoC .../power/rockchip,power-controller.yaml | 1 + drivers/pmdomain/rockchip/pm-domains.c | 73 ++++++++++++++++++- .../dt-bindings/power/rockchip,rk3576-power.h | 30 ++++++++ 3 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 include/dt-bindings/power/rockchip,rk3576-power.h -- 2.46.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC 2024-08-08 16:31 [PATCH v2 0/2] Add power-controller support for rk3576 Detlev Casanova @ 2024-08-08 16:31 ` Detlev Casanova 2024-08-09 14:59 ` Conor Dooley 2024-08-08 16:31 ` [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC Detlev Casanova 1 sibling, 1 reply; 9+ messages in thread From: Detlev Casanova @ 2024-08-08 16:31 UTC (permalink / raw) To: linux-kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Detlev Casanova, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel From: Finley Xiao <finley.xiao@rock-chips.com> Define power domain IDs as described in the TRM and add compatible for rockchip,rk3576-power-controller Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> [reword, add yaml] Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> --- .../power/rockchip,power-controller.yaml | 1 + .../dt-bindings/power/rockchip,rk3576-power.h | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 include/dt-bindings/power/rockchip,rk3576-power.h diff --git a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml index 0d5e999a58f1b..650dc0aae6f51 100644 --- a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml +++ b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml @@ -41,6 +41,7 @@ properties: - rockchip,rk3368-power-controller - rockchip,rk3399-power-controller - rockchip,rk3568-power-controller + - rockchip,rk3576-power-controller - rockchip,rk3588-power-controller - rockchip,rv1126-power-controller diff --git a/include/dt-bindings/power/rockchip,rk3576-power.h b/include/dt-bindings/power/rockchip,rk3576-power.h new file mode 100644 index 0000000000000..324a056aa8512 --- /dev/null +++ b/include/dt-bindings/power/rockchip,rk3576-power.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ +#ifndef __DT_BINDINGS_POWER_RK3576_POWER_H__ +#define __DT_BINDINGS_POWER_RK3576_POWER_H__ + +/* VD_NPU */ +#define RK3576_PD_NPU 0 +#define RK3576_PD_NPUTOP 1 +#define RK3576_PD_NPU0 2 +#define RK3576_PD_NPU1 3 + +/* VD_GPU */ +#define RK3576_PD_GPU 4 + +/* VD_LOGIC */ +#define RK3576_PD_NVM 5 +#define RK3576_PD_SDGMAC 6 +#define RK3576_PD_USB 7 +#define RK3576_PD_PHP 8 +#define RK3576_PD_SUBPHP 9 +#define RK3576_PD_AUDIO 10 +#define RK3576_PD_VEPU0 11 +#define RK3576_PD_VEPU1 12 +#define RK3576_PD_VPU 13 +#define RK3576_PD_VDEC 14 +#define RK3576_PD_VI 15 +#define RK3576_PD_VO0 16 +#define RK3576_PD_VO1 17 +#define RK3576_PD_VOP 18 + +#endif -- 2.46.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC 2024-08-08 16:31 ` [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC Detlev Casanova @ 2024-08-09 14:59 ` Conor Dooley 2024-08-09 17:27 ` Detlev Casanova 0 siblings, 1 reply; 9+ messages in thread From: Conor Dooley @ 2024-08-09 14:59 UTC (permalink / raw) To: Detlev Casanova Cc: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel [-- Attachment #1: Type: text/plain, Size: 2593 bytes --] On Thu, Aug 08, 2024 at 12:31:04PM -0400, Detlev Casanova wrote: > From: Finley Xiao <finley.xiao@rock-chips.com> > > Define power domain IDs as described in the TRM and add compatible for > rockchip,rk3576-power-controller > > Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> > [reword, add yaml] To be honest, both here and in your other patch, you should remove this [] section and add a co-develop-ed-by instead. Acked-by: Conor Dooley <conor.dooley@microchip.com> > Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> > --- > .../power/rockchip,power-controller.yaml | 1 + > .../dt-bindings/power/rockchip,rk3576-power.h | 30 +++++++++++++++++++ > 2 files changed, 31 insertions(+) > create mode 100644 include/dt-bindings/power/rockchip,rk3576-power.h > > diff --git a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > index 0d5e999a58f1b..650dc0aae6f51 100644 > --- a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > +++ b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > @@ -41,6 +41,7 @@ properties: > - rockchip,rk3368-power-controller > - rockchip,rk3399-power-controller > - rockchip,rk3568-power-controller > + - rockchip,rk3576-power-controller > - rockchip,rk3588-power-controller > - rockchip,rv1126-power-controller > > diff --git a/include/dt-bindings/power/rockchip,rk3576-power.h b/include/dt-bindings/power/rockchip,rk3576-power.h > new file mode 100644 > index 0000000000000..324a056aa8512 > --- /dev/null > +++ b/include/dt-bindings/power/rockchip,rk3576-power.h > @@ -0,0 +1,30 @@ > +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ > +#ifndef __DT_BINDINGS_POWER_RK3576_POWER_H__ > +#define __DT_BINDINGS_POWER_RK3576_POWER_H__ > + > +/* VD_NPU */ > +#define RK3576_PD_NPU 0 > +#define RK3576_PD_NPUTOP 1 > +#define RK3576_PD_NPU0 2 > +#define RK3576_PD_NPU1 3 > + > +/* VD_GPU */ > +#define RK3576_PD_GPU 4 > + > +/* VD_LOGIC */ > +#define RK3576_PD_NVM 5 > +#define RK3576_PD_SDGMAC 6 > +#define RK3576_PD_USB 7 > +#define RK3576_PD_PHP 8 > +#define RK3576_PD_SUBPHP 9 > +#define RK3576_PD_AUDIO 10 > +#define RK3576_PD_VEPU0 11 > +#define RK3576_PD_VEPU1 12 > +#define RK3576_PD_VPU 13 > +#define RK3576_PD_VDEC 14 > +#define RK3576_PD_VI 15 > +#define RK3576_PD_VO0 16 > +#define RK3576_PD_VO1 17 > +#define RK3576_PD_VOP 18 > + > +#endif > -- > 2.46.0 > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC 2024-08-09 14:59 ` Conor Dooley @ 2024-08-09 17:27 ` Detlev Casanova 2024-08-12 16:19 ` Conor Dooley 0 siblings, 1 reply; 9+ messages in thread From: Detlev Casanova @ 2024-08-09 17:27 UTC (permalink / raw) To: Conor Dooley Cc: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel On Friday, 9 August 2024 10:59:58 EDT Conor Dooley wrote: > On Thu, Aug 08, 2024 at 12:31:04PM -0400, Detlev Casanova wrote: > > From: Finley Xiao <finley.xiao@rock-chips.com> > > > > Define power domain IDs as described in the TRM and add compatible for > > rockchip,rk3576-power-controller > > > > Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> > > [reword, add yaml] > > To be honest, both here and in your other patch, you should remove this > [] section and add a co-develop-ed-by instead. That seems to be used quite often though, I like how it gives an idea of what has been adapted from downstream patches. > Acked-by: Conor Dooley <conor.dooley@microchip.com> > > > Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> > > --- > > > > .../power/rockchip,power-controller.yaml | 1 + > > .../dt-bindings/power/rockchip,rk3576-power.h | 30 +++++++++++++++++++ > > 2 files changed, 31 insertions(+) > > create mode 100644 include/dt-bindings/power/rockchip,rk3576-power.h > > > > diff --git > > a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > index 0d5e999a58f1b..650dc0aae6f51 100644 > > --- > > a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > +++ > > b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml> > > @@ -41,6 +41,7 @@ properties: > > - rockchip,rk3368-power-controller > > - rockchip,rk3399-power-controller > > - rockchip,rk3568-power-controller > > > > + - rockchip,rk3576-power-controller > > > > - rockchip,rk3588-power-controller > > - rockchip,rv1126-power-controller > > > > diff --git a/include/dt-bindings/power/rockchip,rk3576-power.h > > b/include/dt-bindings/power/rockchip,rk3576-power.h new file mode 100644 > > index 0000000000000..324a056aa8512 > > --- /dev/null > > +++ b/include/dt-bindings/power/rockchip,rk3576-power.h > > @@ -0,0 +1,30 @@ > > +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ > > +#ifndef __DT_BINDINGS_POWER_RK3576_POWER_H__ > > +#define __DT_BINDINGS_POWER_RK3576_POWER_H__ > > + > > +/* VD_NPU */ > > +#define RK3576_PD_NPU 0 > > +#define RK3576_PD_NPUTOP 1 > > +#define RK3576_PD_NPU0 2 > > +#define RK3576_PD_NPU1 3 > > + > > +/* VD_GPU */ > > +#define RK3576_PD_GPU 4 > > + > > +/* VD_LOGIC */ > > +#define RK3576_PD_NVM 5 > > +#define RK3576_PD_SDGMAC 6 > > +#define RK3576_PD_USB 7 > > +#define RK3576_PD_PHP 8 > > +#define RK3576_PD_SUBPHP 9 > > +#define RK3576_PD_AUDIO 10 > > +#define RK3576_PD_VEPU0 11 > > +#define RK3576_PD_VEPU1 12 > > +#define RK3576_PD_VPU 13 > > +#define RK3576_PD_VDEC 14 > > +#define RK3576_PD_VI 15 > > +#define RK3576_PD_VO0 16 > > +#define RK3576_PD_VO1 17 > > +#define RK3576_PD_VOP 18 > > + > > +#endif ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC 2024-08-09 17:27 ` Detlev Casanova @ 2024-08-12 16:19 ` Conor Dooley 0 siblings, 0 replies; 9+ messages in thread From: Conor Dooley @ 2024-08-12 16:19 UTC (permalink / raw) To: Detlev Casanova Cc: linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel [-- Attachment #1: Type: text/plain, Size: 3725 bytes --] On Fri, Aug 09, 2024 at 01:27:18PM -0400, Detlev Casanova wrote: > On Friday, 9 August 2024 10:59:58 EDT Conor Dooley wrote: > > On Thu, Aug 08, 2024 at 12:31:04PM -0400, Detlev Casanova wrote: > > > From: Finley Xiao <finley.xiao@rock-chips.com> > > > > > > Define power domain IDs as described in the TRM and add compatible for > > > rockchip,rk3576-power-controller > > > > > > Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> > > > [reword, add yaml] > > > > To be honest, both here and in your other patch, you should remove this > > [] section and add a co-develop-ed-by instead. > > That seems to be used quite often though, I like how it gives an idea of what > has been adapted from downstream patches. Right, but if you modified it, then why not be a co-author? IMO the [] is only suitable for when patches are modified between submission and application by a maintainer and that anything else should be noted under the --- line. If you feel like the difference to the vendor kernel is worth having in the git history, it should be described in the commit message itself and the reason should be meaningful (like the numbers changed incompatibly) rather than that you did the minimum required for a patch to be acceptable. Cheers, Conor. > > > Acked-by: Conor Dooley <conor.dooley@microchip.com> > > > > > Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> > > > --- > > > > > > .../power/rockchip,power-controller.yaml | 1 + > > > .../dt-bindings/power/rockchip,rk3576-power.h | 30 +++++++++++++++++++ > > > 2 files changed, 31 insertions(+) > > > create mode 100644 include/dt-bindings/power/rockchip,rk3576-power.h > > > > > > diff --git > > > a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > > b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > > index 0d5e999a58f1b..650dc0aae6f51 100644 > > > --- > > > a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml > > > +++ > > > b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml> > > > @@ -41,6 +41,7 @@ properties: > > > - rockchip,rk3368-power-controller > > > - rockchip,rk3399-power-controller > > > - rockchip,rk3568-power-controller > > > > > > + - rockchip,rk3576-power-controller > > > > > > - rockchip,rk3588-power-controller > > > - rockchip,rv1126-power-controller > > > > > > diff --git a/include/dt-bindings/power/rockchip,rk3576-power.h > > > b/include/dt-bindings/power/rockchip,rk3576-power.h new file mode 100644 > > > index 0000000000000..324a056aa8512 > > > --- /dev/null > > > +++ b/include/dt-bindings/power/rockchip,rk3576-power.h > > > @@ -0,0 +1,30 @@ > > > +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ > > > +#ifndef __DT_BINDINGS_POWER_RK3576_POWER_H__ > > > +#define __DT_BINDINGS_POWER_RK3576_POWER_H__ > > > + > > > +/* VD_NPU */ > > > +#define RK3576_PD_NPU 0 > > > +#define RK3576_PD_NPUTOP 1 > > > +#define RK3576_PD_NPU0 2 > > > +#define RK3576_PD_NPU1 3 > > > + > > > +/* VD_GPU */ > > > +#define RK3576_PD_GPU 4 > > > + > > > +/* VD_LOGIC */ > > > +#define RK3576_PD_NVM 5 > > > +#define RK3576_PD_SDGMAC 6 > > > +#define RK3576_PD_USB 7 > > > +#define RK3576_PD_PHP 8 > > > +#define RK3576_PD_SUBPHP 9 > > > +#define RK3576_PD_AUDIO 10 > > > +#define RK3576_PD_VEPU0 11 > > > +#define RK3576_PD_VEPU1 12 > > > +#define RK3576_PD_VPU 13 > > > +#define RK3576_PD_VDEC 14 > > > +#define RK3576_PD_VI 15 > > > +#define RK3576_PD_VO0 16 > > > +#define RK3576_PD_VO1 17 > > > +#define RK3576_PD_VOP 18 > > > + > > > +#endif > > > > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC 2024-08-08 16:31 [PATCH v2 0/2] Add power-controller support for rk3576 Detlev Casanova 2024-08-08 16:31 ` [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC Detlev Casanova @ 2024-08-08 16:31 ` Detlev Casanova 2024-08-08 16:41 ` Heiko Stübner 1 sibling, 1 reply; 9+ messages in thread From: Detlev Casanova @ 2024-08-08 16:31 UTC (permalink / raw) To: linux-kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Ulf Hansson, Detlev Casanova, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel From: Finley Xiao <finley.xiao@rock-chips.com> Add configuration for RK3576 SoC and list the power domains. Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> [rebase, reword, squash] Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> --- drivers/pmdomain/rockchip/pm-domains.c | 73 ++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c index 9b76b62869d0d..863f1ad6b9e11 100644 --- a/drivers/pmdomain/rockchip/pm-domains.c +++ b/drivers/pmdomain/rockchip/pm-domains.c @@ -33,6 +33,7 @@ #include <dt-bindings/power/rk3368-power.h> #include <dt-bindings/power/rk3399-power.h> #include <dt-bindings/power/rk3568-power.h> +#include <dt-bindings/power/rockchip,rk3576-power.h> #include <dt-bindings/power/rk3588-power.h> struct rockchip_domain_info { @@ -50,6 +51,7 @@ struct rockchip_domain_info { u32 pwr_offset; u32 mem_offset; u32 req_offset; + u32 delay_us; }; struct rockchip_pmu_info { @@ -144,9 +146,27 @@ struct rockchip_pmu { .active_wakeup = wakeup, \ } -#define DOMAIN_RK3036(_name, req, ack, idle, wakeup) \ +#define DOMAIN_M_O_R_G(_name, p_offset, pwr, status, r_status, r_offset, req, idle, ack, g_mask, delay, wakeup) \ { \ - .name = _name, \ + .name = _name, \ + .pwr_offset = p_offset, \ + .pwr_w_mask = (pwr) << 16, \ + .pwr_mask = (pwr), \ + .status_mask = (status), \ + .mem_status_mask = (r_status), \ + .repair_status_mask = (r_status), \ + .req_offset = r_offset, \ + .req_w_mask = (req) << 16, \ + .req_mask = (req), \ + .idle_mask = (idle), \ + .ack_mask = (ack), \ + .delay_us = delay, \ + .active_wakeup = wakeup, \ +} + +#define DOMAIN_RK3036(_name, req, ack, idle, wakeup) \ +{ \ + .name = _name, \ .req_mask = (req), \ .req_w_mask = (req) << 16, \ .ack_mask = (ack), \ @@ -175,6 +195,9 @@ struct rockchip_pmu { #define DOMAIN_RK3568(name, pwr, req, wakeup) \ DOMAIN_M(name, pwr, pwr, req, req, req, wakeup) +#define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, req, idle, g_mask, delay, wakeup) \ + DOMAIN_M_O_R_G(name, p_offset, pwr, status, r_status, r_offset, req, idle, idle, g_mask, delay, wakeup) + /* * Dynamic Memory Controller may need to coordinate with us -- see * rockchip_pmu_block(). @@ -552,7 +575,10 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) /* if powering up, leave idle mode */ rockchip_pmu_set_idle_request(pd, false); - rockchip_pmu_restore_qos(pd); + if (pd->info->delay_us) + udelay(pd->info->delay_us); + else + rockchip_pmu_restore_qos(pd); } clk_bulk_disable(pd->num_clks, pd->clks); @@ -1106,6 +1132,28 @@ static const struct rockchip_domain_info rk3568_pm_domains[] = { [RK3568_PD_PIPE] = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false), }; +static const struct rockchip_domain_info rk3576_pm_domains[] = { + [RK3576_PD_NPU] = DOMAIN_RK3576("npu", 0x0, BIT(0), BIT(0), 0, 0x0, 0, 0, 0, 0, false), + [RK3576_PD_NVM] = DOMAIN_RK3576("nvm", 0x0, BIT(6), 0, BIT(6), 0x4, BIT(2), BIT(18), BIT(2), 0, false), + [RK3576_PD_SDGMAC] = DOMAIN_RK3576("sdgmac", 0x0, BIT(7), 0, BIT(7), 0x4, BIT(1), BIT(17), 0x6, 0, false), + [RK3576_PD_AUDIO] = DOMAIN_RK3576("audio", 0x0, BIT(8), 0, BIT(8), 0x4, BIT(0), BIT(16), BIT(0), 0, false), + [RK3576_PD_PHP] = DOMAIN_RK3576("php", 0x0, BIT(9), 0, BIT(9), 0x0, BIT(15), BIT(15), BIT(15), 0, false), + [RK3576_PD_SUBPHP] = DOMAIN_RK3576("subphp", 0x0, BIT(10), 0, BIT(10), 0x0, 0, 0, 0, 0, false), + [RK3576_PD_VOP] = DOMAIN_RK3576("vop", 0x0, BIT(11), 0, BIT(11), 0x0, 0x6000, 0x6000, 0x6000, 15, false), + [RK3576_PD_VO1] = DOMAIN_RK3576("vo1", 0x0, BIT(14), 0, BIT(14), 0x0, BIT(12), BIT(12), 0x7000, 0, false), + [RK3576_PD_VO0] = DOMAIN_RK3576("vo0", 0x0, BIT(15), 0, BIT(15), 0x0, BIT(11), BIT(11), 0x6800, 0, false), + [RK3576_PD_USB] = DOMAIN_RK3576("usb", 0x4, BIT(0), 0, BIT(16), 0x0, BIT(10), BIT(10), 0x6400, 0, true), + [RK3576_PD_VI] = DOMAIN_RK3576("vi", 0x4, BIT(1), 0, BIT(17), 0x0, BIT(9), BIT(9), BIT(9), 0, false), + [RK3576_PD_VEPU0] = DOMAIN_RK3576("vepu0", 0x4, BIT(2), 0, BIT(18), 0x0, BIT(7), BIT(7), 0x280, 0, false), + [RK3576_PD_VEPU1] = DOMAIN_RK3576("vepu1", 0x4, BIT(3), 0, BIT(19), 0x0, BIT(8), BIT(8), BIT(8), 0, false), + [RK3576_PD_VDEC] = DOMAIN_RK3576("vdec", 0x4, BIT(4), 0, BIT(20), 0x0, BIT(6), BIT(6), BIT(6), 0, false), + [RK3576_PD_VPU] = DOMAIN_RK3576("vpu", 0x4, BIT(5), 0, BIT(21), 0x0, BIT(5), BIT(5), BIT(5), 0, false), + [RK3576_PD_NPUTOP] = DOMAIN_RK3576("nputop", 0x4, BIT(6), 0, BIT(22), 0x0, 0x18, 0x18, 0x18, 15, false), + [RK3576_PD_NPU0] = DOMAIN_RK3576("npu0", 0x4, BIT(7), 0, BIT(23), 0x0, BIT(1), BIT(1), 0x1a, 0, false), + [RK3576_PD_NPU1] = DOMAIN_RK3576("npu1", 0x4, BIT(8), 0, BIT(24), 0x0, BIT(2), BIT(2), 0x1c, 0, false), + [RK3576_PD_GPU] = DOMAIN_RK3576("gpu", 0x4, BIT(9), 0, BIT(25), 0x0, BIT(0), BIT(0), BIT(0), 0, false), +}; + static const struct rockchip_domain_info rk3588_pm_domains[] = { [RK3588_PD_GPU] = DOMAIN_RK3588("gpu", 0x0, BIT(0), 0, 0x0, 0, BIT(1), 0x0, BIT(0), BIT(0), false), [RK3588_PD_NPU] = DOMAIN_RK3588("npu", 0x0, BIT(1), BIT(1), 0x0, 0, 0, 0x0, 0, 0, false), @@ -1284,6 +1332,21 @@ static const struct rockchip_pmu_info rk3568_pmu = { .domain_info = rk3568_pm_domains, }; +static const struct rockchip_pmu_info rk3576_pmu = { + .pwr_offset = 0x210, + .status_offset = 0x230, + .chain_status_offset = 0x248, + .mem_status_offset = 0x250, + .mem_pwr_offset = 0x300, + .req_offset = 0x110, + .idle_offset = 0x128, + .ack_offset = 0x120, + .repair_status_offset = 0x570, + + .num_domains = ARRAY_SIZE(rk3576_pm_domains), + .domain_info = rk3576_pm_domains, +}; + static const struct rockchip_pmu_info rk3588_pmu = { .pwr_offset = 0x14c, .status_offset = 0x180, @@ -1359,6 +1422,10 @@ static const struct of_device_id rockchip_pm_domain_dt_match[] = { .compatible = "rockchip,rk3568-power-controller", .data = (void *)&rk3568_pmu, }, + { + .compatible = "rockchip,rk3576-power-controller", + .data = (void *)&rk3576_pmu, + }, { .compatible = "rockchip,rk3588-power-controller", .data = (void *)&rk3588_pmu, -- 2.46.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC 2024-08-08 16:31 ` [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC Detlev Casanova @ 2024-08-08 16:41 ` Heiko Stübner 2024-08-08 17:53 ` Detlev Casanova 0 siblings, 1 reply; 9+ messages in thread From: Heiko Stübner @ 2024-08-08 16:41 UTC (permalink / raw) To: linux-kernel, Detlev Casanova Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Ulf Hansson, Detlev Casanova, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel Hi Detlev, Am Donnerstag, 8. August 2024, 18:31:05 CEST schrieb Detlev Casanova: > From: Finley Xiao <finley.xiao@rock-chips.com> > > Add configuration for RK3576 SoC and list the power domains. > > Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> > [rebase, reword, squash] > Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> > --- > drivers/pmdomain/rockchip/pm-domains.c | 73 ++++++++++++++++++++++++-- > 1 file changed, 70 insertions(+), 3 deletions(-) > > diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c > index 9b76b62869d0d..863f1ad6b9e11 100644 > --- a/drivers/pmdomain/rockchip/pm-domains.c > +++ b/drivers/pmdomain/rockchip/pm-domains.c [...] > @@ -175,6 +195,9 @@ struct rockchip_pmu { > #define DOMAIN_RK3568(name, pwr, req, wakeup) \ > DOMAIN_M(name, pwr, pwr, req, req, req, wakeup) > > +#define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, req, idle, g_mask, delay, wakeup) \ > + DOMAIN_M_O_R_G(name, p_offset, pwr, status, r_status, r_offset, req, idle, idle, g_mask, delay, wakeup) > + > /* > * Dynamic Memory Controller may need to coordinate with us -- see > * rockchip_pmu_block(). > @@ -552,7 +575,10 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) > /* if powering up, leave idle mode */ > rockchip_pmu_set_idle_request(pd, false); > > - rockchip_pmu_restore_qos(pd); > + if (pd->info->delay_us) > + udelay(pd->info->delay_us); > + else > + rockchip_pmu_restore_qos(pd); I still want this behaviour change in a separate patch with adequate commit message please. Going from always handling qos to allowing to just wait a specific time needs explanation and is not part of "just" adding rk3576 support. Heiko ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC 2024-08-08 16:41 ` Heiko Stübner @ 2024-08-08 17:53 ` Detlev Casanova 2024-08-08 17:59 ` Heiko Stübner 0 siblings, 1 reply; 9+ messages in thread From: Detlev Casanova @ 2024-08-08 17:53 UTC (permalink / raw) To: linux-kernel, Heiko Stübner Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Ulf Hansson, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel Hi Heiko, On Thursday, 8 August 2024 12:41:05 EDT Heiko Stübner wrote: > Hi Detlev, > > > > > @@ -552,7 +575,10 @@ static int rockchip_pd_power(struct > > rockchip_pm_domain *pd, bool power_on)> > > /* if powering up, leave idle mode */ > > rockchip_pmu_set_idle_request(pd, false); > > > > - rockchip_pmu_restore_qos(pd); > > + if (pd->info->delay_us) > > + udelay(pd->info->delay_us); > > + else > > + rockchip_pmu_restore_qos(pd); > > I still want this behaviour change in a separate patch with adequate > commit message please. > > Going from always handling qos to allowing to just wait a specific time > needs explanation and is not part of "just" adding rk3576 support. You are right, I didn't takle this issue. This is actually a bug, the else is not supposed to be there, it should only be an added delay for some PDs. Unfortunately, I'm not sure why that delay is needed exactly, so I'm willing to remove it for now (only used by nputop and vop, both unsupported) and come back to it if needed when VOP/NPU support is added. Would that work for this upstream ? Detlev. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC 2024-08-08 17:53 ` Detlev Casanova @ 2024-08-08 17:59 ` Heiko Stübner 0 siblings, 0 replies; 9+ messages in thread From: Heiko Stübner @ 2024-08-08 17:59 UTC (permalink / raw) To: linux-kernel, Detlev Casanova Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Ulf Hansson, Finley Xiao, Jagan Teki, Arnd Bergmann, Elaine Zhang, devicetree, linux-arm-kernel, linux-rockchip, linux-pm, kernel Hi Detlev, Am Donnerstag, 8. August 2024, 19:53:20 CEST schrieb Detlev Casanova: > On Thursday, 8 August 2024 12:41:05 EDT Heiko Stübner wrote: > > > @@ -552,7 +575,10 @@ static int rockchip_pd_power(struct > > > rockchip_pm_domain *pd, bool power_on)> > > > /* if powering up, leave idle mode */ > > > rockchip_pmu_set_idle_request(pd, false); > > > > > > - rockchip_pmu_restore_qos(pd); > > > + if (pd->info->delay_us) > > > + udelay(pd->info->delay_us); > > > + else > > > + rockchip_pmu_restore_qos(pd); > > > > I still want this behaviour change in a separate patch with adequate > > commit message please. > > > > Going from always handling qos to allowing to just wait a specific time > > needs explanation and is not part of "just" adding rk3576 support. > > You are right, I didn't takle this issue. > This is actually a bug, the else is not supposed to be there, it should only > be an added delay for some PDs. > > Unfortunately, I'm not sure why that delay is needed exactly, so I'm willing > to remove it for now (only used by nputop and vop, both unsupported) and come > back to it if needed when VOP/NPU support is added. > > Would that work for this upstream ? that would work. The whole delay thing is not part of the dt-binding which would be more critical to get right in the first round. So as long as your "add rk3576 support" patch really only adds the rk3576-specific data, but does not change how the shared code behaves, we should be fine and can find out about that delay later. Heiko ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-08-12 16:19 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-08-08 16:31 [PATCH v2 0/2] Add power-controller support for rk3576 Detlev Casanova 2024-08-08 16:31 ` [PATCH v2 1/2] dt-bindings: power: Add support for RK3576 SoC Detlev Casanova 2024-08-09 14:59 ` Conor Dooley 2024-08-09 17:27 ` Detlev Casanova 2024-08-12 16:19 ` Conor Dooley 2024-08-08 16:31 ` [PATCH v2 2/2] pmdomain: rockchip: Add support for rk3576 SoC Detlev Casanova 2024-08-08 16:41 ` Heiko Stübner 2024-08-08 17:53 ` Detlev Casanova 2024-08-08 17:59 ` Heiko Stübner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox