All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Heiko Stübner" <heiko@sntech.de>
To: MidG971 <midgy971@gmail.com>, Ulf Hansson <ulf.hansson@oss.qualcomm.com>
Cc: tomeu@tomeuvizoso.net, ogabbay@kernel.org, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, ulf.hansson@linaro.org,
	dri-devel@lists.freedesktop.org,
	linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,
	iommu@lists.linux.dev, linux-kernel@vger.kernel.org,
	xxm@rock-chips.com, chaoyi.chen@rock-chips.com,
	finley.xiao@rock-chips.com, diederik@cknow-tech.com,
	jonas@kwiboo.se
Subject: Re: [RFC PATCH v4 9/9] pmdomain: rockchip: Add a regulator to the RK3568 NPU power domain
Date: Wed, 08 Jul 2026 17:58:37 +0200	[thread overview]
Message-ID: <3205744.kC03pvyZki@diego> (raw)
In-Reply-To: <CAPx+jO_2=SYo0smYzwd8T+TUtHZtgXU0dSWQgZGZ_haV3aOU_Q@mail.gmail.com>

Hi Ulf,

Am Mittwoch, 8. Juli 2026, 17:24:04 Mitteleuropäische Sommerzeit schrieb Ulf Hansson:
> On Sat, Jun 13, 2026 at 9:01 AM MidG971 <midgy971@gmail.com> wrote:
> >
> > From: Midgy BALON <midgy971@gmail.com>
> >
> > The RK3568 NPU rail (vdd_npu) needs to be enabled before the domain is
> > powered on and disabled after it is powered off. Give DOMAIN_RK3568 a
> > regulator parameter (like DOMAIN_RK3588 already has) so the NPU domain
> > can set need_regulator, letting genpd manage the rail wired up as the
> > domain's domain-supply instead of marking it always-on in DT.
> >
> > Suggested-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
> > Signed-off-by: Midgy BALON <midgy971@gmail.com>
> 
> This looks good to me. I assume this can be picked up independently of
> the other patches, whenever you decide to move forward from the RFC.
> If not, please let me know.

Correct, this could be applied any time.

> 
> Kind regards
> Uffe
> 
> > ---
> >  drivers/pmdomain/rockchip/pm-domains.c | 36 ++++++++++++++++++--------
> >  1 file changed, 25 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
> > index 490bbb1d1d8e8..19db307e3811d 100644
> > --- a/drivers/pmdomain/rockchip/pm-domains.c
> > +++ b/drivers/pmdomain/rockchip/pm-domains.c
> > @@ -138,6 +138,20 @@ struct rockchip_pmu {
> >         .active_wakeup = wakeup,                        \
> >  }
> >
> > +#define DOMAIN_M_R(_name, pwr, status, req, idle, ack, wakeup, regulator)      \
> > +{                                                      \
> > +       .name = _name,                          \
> > +       .pwr_w_mask = (pwr) << 16,                      \
> > +       .pwr_mask = (pwr),                              \
> > +       .status_mask = (status),                        \
> > +       .req_w_mask = (req) << 16,                      \
> > +       .req_mask = (req),                              \
> > +       .idle_mask = (idle),                            \
> > +       .ack_mask = (ack),                              \
> > +       .active_wakeup = wakeup,                        \
> > +       .need_regulator = regulator,                    \
> > +}

but Midgy please do some alphabetical sorting ... in my book 
    DOMAIN_M_R
should be _below_
    DOMAIN_M_G

> > +
> >  #define DOMAIN_M_G(_name, pwr, status, req, idle, ack, g_mask, wakeup, keepon) \


Heiko


> >  {                                                      \
> >         .name = _name,                                  \
> > @@ -241,8 +255,8 @@ struct rockchip_pmu {
> >  #define DOMAIN_RK3562(name, pwr, req, g_mask, mem, wakeup)             \
> >         DOMAIN_M_G_SD(name, pwr, pwr, req, req, req, g_mask, mem, wakeup, false)
> >
> > -#define DOMAIN_RK3568(name, pwr, req, wakeup)          \
> > -       DOMAIN_M(name, pwr, pwr, req, req, req, wakeup)
> > +#define DOMAIN_RK3568(name, pwr, req, wakeup, regulator)               \
> > +       DOMAIN_M_R(name, pwr, pwr, req, req, req, wakeup, regulator)
> >
> >  #define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, req, idle, g_mask, wakeup)      \
> >         DOMAIN_M_O_R_G(name, p_offset, pwr, status, 0, r_status, r_status, r_offset, req, idle, idle, g_mask, wakeup)
> > @@ -1274,15 +1288,15 @@ static const struct rockchip_domain_info rk3562_pm_domains[] = {
> >  };
> >
> >  static const struct rockchip_domain_info rk3568_pm_domains[] = {
> > -       [RK3568_PD_NPU]         = DOMAIN_RK3568("npu",  BIT(1), BIT(2),  false),
> > -       [RK3568_PD_GPU]         = DOMAIN_RK3568("gpu",  BIT(0), BIT(1),  false),
> > -       [RK3568_PD_VI]          = DOMAIN_RK3568("vi",   BIT(6), BIT(3),  false),
> > -       [RK3568_PD_VO]          = DOMAIN_RK3568("vo",   BIT(7), BIT(4),  false),
> > -       [RK3568_PD_RGA]         = DOMAIN_RK3568("rga",  BIT(5), BIT(5),  false),
> > -       [RK3568_PD_VPU]         = DOMAIN_RK3568("vpu",  BIT(2), BIT(6),  false),
> > -       [RK3568_PD_RKVDEC]      = DOMAIN_RK3568("vdec", BIT(4), BIT(8),  false),
> > -       [RK3568_PD_RKVENC]      = DOMAIN_RK3568("venc", BIT(3), BIT(7),  false),
> > -       [RK3568_PD_PIPE]        = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false),
> > +       [RK3568_PD_NPU]         = DOMAIN_RK3568("npu",  BIT(1), BIT(2),  false, true),
> > +       [RK3568_PD_GPU]         = DOMAIN_RK3568("gpu",  BIT(0), BIT(1),  false, false),
> > +       [RK3568_PD_VI]          = DOMAIN_RK3568("vi",   BIT(6), BIT(3),  false, false),
> > +       [RK3568_PD_VO]          = DOMAIN_RK3568("vo",   BIT(7), BIT(4),  false, false),
> > +       [RK3568_PD_RGA]         = DOMAIN_RK3568("rga",  BIT(5), BIT(5),  false, false),
> > +       [RK3568_PD_VPU]         = DOMAIN_RK3568("vpu",  BIT(2), BIT(6),  false, false),
> > +       [RK3568_PD_RKVDEC]      = DOMAIN_RK3568("vdec", BIT(4), BIT(8),  false, false),
> > +       [RK3568_PD_RKVENC]      = DOMAIN_RK3568("venc", BIT(3), BIT(7),  false, false),
> > +       [RK3568_PD_PIPE]        = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false, false),
> >  };
> >
> >  static const struct rockchip_domain_info rk3576_pm_domains[] = {
> > --
> > 2.39.5
> >
> >
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 





WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: MidG971 <midgy971@gmail.com>, Ulf Hansson <ulf.hansson@oss.qualcomm.com>
Cc: tomeu@tomeuvizoso.net, ogabbay@kernel.org, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org, ulf.hansson@linaro.org,
	dri-devel@lists.freedesktop.org,
	linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,
	iommu@lists.linux.dev, linux-kernel@vger.kernel.org,
	xxm@rock-chips.com, chaoyi.chen@rock-chips.com,
	finley.xiao@rock-chips.com, diederik@cknow-tech.com,
	jonas@kwiboo.se
Subject: Re: [RFC PATCH v4 9/9] pmdomain: rockchip: Add a regulator to the RK3568 NPU power domain
Date: Wed, 08 Jul 2026 17:58:37 +0200	[thread overview]
Message-ID: <3205744.kC03pvyZki@diego> (raw)
In-Reply-To: <CAPx+jO_2=SYo0smYzwd8T+TUtHZtgXU0dSWQgZGZ_haV3aOU_Q@mail.gmail.com>

Hi Ulf,

Am Mittwoch, 8. Juli 2026, 17:24:04 Mitteleuropäische Sommerzeit schrieb Ulf Hansson:
> On Sat, Jun 13, 2026 at 9:01 AM MidG971 <midgy971@gmail.com> wrote:
> >
> > From: Midgy BALON <midgy971@gmail.com>
> >
> > The RK3568 NPU rail (vdd_npu) needs to be enabled before the domain is
> > powered on and disabled after it is powered off. Give DOMAIN_RK3568 a
> > regulator parameter (like DOMAIN_RK3588 already has) so the NPU domain
> > can set need_regulator, letting genpd manage the rail wired up as the
> > domain's domain-supply instead of marking it always-on in DT.
> >
> > Suggested-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
> > Signed-off-by: Midgy BALON <midgy971@gmail.com>
> 
> This looks good to me. I assume this can be picked up independently of
> the other patches, whenever you decide to move forward from the RFC.
> If not, please let me know.

Correct, this could be applied any time.

> 
> Kind regards
> Uffe
> 
> > ---
> >  drivers/pmdomain/rockchip/pm-domains.c | 36 ++++++++++++++++++--------
> >  1 file changed, 25 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
> > index 490bbb1d1d8e8..19db307e3811d 100644
> > --- a/drivers/pmdomain/rockchip/pm-domains.c
> > +++ b/drivers/pmdomain/rockchip/pm-domains.c
> > @@ -138,6 +138,20 @@ struct rockchip_pmu {
> >         .active_wakeup = wakeup,                        \
> >  }
> >
> > +#define DOMAIN_M_R(_name, pwr, status, req, idle, ack, wakeup, regulator)      \
> > +{                                                      \
> > +       .name = _name,                          \
> > +       .pwr_w_mask = (pwr) << 16,                      \
> > +       .pwr_mask = (pwr),                              \
> > +       .status_mask = (status),                        \
> > +       .req_w_mask = (req) << 16,                      \
> > +       .req_mask = (req),                              \
> > +       .idle_mask = (idle),                            \
> > +       .ack_mask = (ack),                              \
> > +       .active_wakeup = wakeup,                        \
> > +       .need_regulator = regulator,                    \
> > +}

but Midgy please do some alphabetical sorting ... in my book 
    DOMAIN_M_R
should be _below_
    DOMAIN_M_G

> > +
> >  #define DOMAIN_M_G(_name, pwr, status, req, idle, ack, g_mask, wakeup, keepon) \


Heiko


> >  {                                                      \
> >         .name = _name,                                  \
> > @@ -241,8 +255,8 @@ struct rockchip_pmu {
> >  #define DOMAIN_RK3562(name, pwr, req, g_mask, mem, wakeup)             \
> >         DOMAIN_M_G_SD(name, pwr, pwr, req, req, req, g_mask, mem, wakeup, false)
> >
> > -#define DOMAIN_RK3568(name, pwr, req, wakeup)          \
> > -       DOMAIN_M(name, pwr, pwr, req, req, req, wakeup)
> > +#define DOMAIN_RK3568(name, pwr, req, wakeup, regulator)               \
> > +       DOMAIN_M_R(name, pwr, pwr, req, req, req, wakeup, regulator)
> >
> >  #define DOMAIN_RK3576(name, p_offset, pwr, status, r_status, r_offset, req, idle, g_mask, wakeup)      \
> >         DOMAIN_M_O_R_G(name, p_offset, pwr, status, 0, r_status, r_status, r_offset, req, idle, idle, g_mask, wakeup)
> > @@ -1274,15 +1288,15 @@ static const struct rockchip_domain_info rk3562_pm_domains[] = {
> >  };
> >
> >  static const struct rockchip_domain_info rk3568_pm_domains[] = {
> > -       [RK3568_PD_NPU]         = DOMAIN_RK3568("npu",  BIT(1), BIT(2),  false),
> > -       [RK3568_PD_GPU]         = DOMAIN_RK3568("gpu",  BIT(0), BIT(1),  false),
> > -       [RK3568_PD_VI]          = DOMAIN_RK3568("vi",   BIT(6), BIT(3),  false),
> > -       [RK3568_PD_VO]          = DOMAIN_RK3568("vo",   BIT(7), BIT(4),  false),
> > -       [RK3568_PD_RGA]         = DOMAIN_RK3568("rga",  BIT(5), BIT(5),  false),
> > -       [RK3568_PD_VPU]         = DOMAIN_RK3568("vpu",  BIT(2), BIT(6),  false),
> > -       [RK3568_PD_RKVDEC]      = DOMAIN_RK3568("vdec", BIT(4), BIT(8),  false),
> > -       [RK3568_PD_RKVENC]      = DOMAIN_RK3568("venc", BIT(3), BIT(7),  false),
> > -       [RK3568_PD_PIPE]        = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false),
> > +       [RK3568_PD_NPU]         = DOMAIN_RK3568("npu",  BIT(1), BIT(2),  false, true),
> > +       [RK3568_PD_GPU]         = DOMAIN_RK3568("gpu",  BIT(0), BIT(1),  false, false),
> > +       [RK3568_PD_VI]          = DOMAIN_RK3568("vi",   BIT(6), BIT(3),  false, false),
> > +       [RK3568_PD_VO]          = DOMAIN_RK3568("vo",   BIT(7), BIT(4),  false, false),
> > +       [RK3568_PD_RGA]         = DOMAIN_RK3568("rga",  BIT(5), BIT(5),  false, false),
> > +       [RK3568_PD_VPU]         = DOMAIN_RK3568("vpu",  BIT(2), BIT(6),  false, false),
> > +       [RK3568_PD_RKVDEC]      = DOMAIN_RK3568("vdec", BIT(4), BIT(8),  false, false),
> > +       [RK3568_PD_RKVENC]      = DOMAIN_RK3568("venc", BIT(3), BIT(7),  false, false),
> > +       [RK3568_PD_PIPE]        = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false, false),
> >  };
> >
> >  static const struct rockchip_domain_info rk3576_pm_domains[] = {
> > --
> > 2.39.5
> >
> >
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 





_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2026-07-08 15:59 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-13  7:01 [RFC PATCH v4 0/9] accel: rocket: Add RK3568 NPU support MidG971
2026-06-13  7:01 ` MidG971
2026-06-13  7:01 ` [RFC PATCH v4 1/9] accel: rocket: Introduce per-SoC rocket_soc_data MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:10   ` sashiko-bot
2026-06-13  7:01 ` [RFC PATCH v4 2/9] accel: rocket: Derive DMA width and core count from match data MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:09   ` sashiko-bot
2026-06-13  7:01 ` [RFC PATCH v4 3/9] accel: rocket: Add RK3568 SoC support MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:11   ` sashiko-bot
2026-06-13  7:01 ` [RFC PATCH v4 4/9] accel: rocket: Reset the NPU before detaching the IOMMU on timeout MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:15   ` sashiko-bot
2026-06-13  7:01 ` [RFC PATCH v4 5/9] accel: rocket: Keep the IOMMU domain attached across jobs MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:12   ` sashiko-bot
2026-06-13  7:01 ` [RFC PATCH v4 6/9] dt-bindings: npu: rockchip, rk3588-rknn-core: Add RK3568 MidG971
2026-06-13  7:01   ` [RFC PATCH v4 6/9] dt-bindings: npu: rockchip,rk3588-rknn-core: " MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:11   ` sashiko-bot
2026-06-15 16:48     ` Conor Dooley
2026-06-15 16:49   ` Conor Dooley
2026-06-15 16:49     ` Conor Dooley
2026-06-13  7:01 ` [RFC PATCH v4 7/9] arm64: dts: rockchip: rk356x: Add the NPU and its IOMMU MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:09   ` sashiko-bot
2026-06-13  8:18   ` Jonas Karlman
2026-06-13  8:18     ` Jonas Karlman
2026-06-13  7:01 ` [RFC PATCH v4 8/9] arm64: dts: rockchip: rk3568-rock-3b: Enable the NPU MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:40   ` Jonas Karlman
2026-06-13  7:40     ` Jonas Karlman
2026-06-13  7:01 ` [RFC PATCH v4 9/9] pmdomain: rockchip: Add a regulator to the RK3568 NPU power domain MidG971
2026-06-13  7:01   ` MidG971
2026-06-13  7:21   ` sashiko-bot
2026-07-08 15:24   ` Ulf Hansson
2026-07-08 15:24     ` Ulf Hansson
2026-07-08 15:58     ` Heiko Stübner [this message]
2026-07-08 15:58       ` Heiko Stübner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3205744.kC03pvyZki@diego \
    --to=heiko@sntech.de \
    --cc=chaoyi.chen@rock-chips.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=diederik@cknow-tech.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=finley.xiao@rock-chips.com \
    --cc=iommu@lists.linux.dev \
    --cc=jonas@kwiboo.se \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=midgy971@gmail.com \
    --cc=ogabbay@kernel.org \
    --cc=robh@kernel.org \
    --cc=tomeu@tomeuvizoso.net \
    --cc=ulf.hansson@linaro.org \
    --cc=ulf.hansson@oss.qualcomm.com \
    --cc=xxm@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.