pmdomain providers:

- imx: Remove incorrect reset/clock mask for 8mq vpu
  - rockchip: Fix initial state of PM domain
 -----BEGIN PGP SIGNATURE-----
 
 iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAmlzZXoXHHVsZi5oYW5z
 c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjCl2MQ/9ENVi3Us1n2Uk6hBI9FC8l1I8
 JHtk7Oy8K+QYcenHU9Fevcgb/7HtR2XsugBu3Xuvn8jHGmdQM0ldCBoLDGamTvJX
 oUVjXNAW5Gh+M5OA5dnjt+kh0Nut7WjdAupdVlQwydD0mykakdp845Sc6PquqcrE
 SVFlElvmyfdKwbB+Quj4q49gJtEqqq9EKhZ2IxHTLC/uL/NdZV8vZSTsHe5V0s4q
 ofSPHtnNI8CfGPFCGWw5/DoFukPCboSbr/0T0qieDpRTyFee0HecdIFyyLSyLmAt
 +Z1LIaD+GLkMStLU25Klh7c08MPMD2vUYU2u2or1V5KTw7xU/mChzClTKYGBobce
 QC/HrniQKqJ5hJlPsMXJk0CurEkDt3/VoBj9DXkCqVGJSHVkg1zUB30Z/9IyKE9l
 GhYpVDBWS4lG9ABHo8uLXdH9T7/+dMioDUTs4QkoAc4NSygK4gLRpaMV6yk1dPdh
 gMEzzkFdhV+BpMHl83HGkTujhHpL9lHDcHYKFDqPNmMcuTzR9htQfSFlmrQjF6Nd
 t9sZ8PiK8JN8QLPNGK7o4amoAZ6o0FpEw7PU5oYDX+2mAHHwanNhJV/vQVDZb3pw
 CfurtSwV3blgfSt2ytlRwUZtDIIyFiu1bOdU03oup+Y2b+/yGw4IuK7REcUVHl7k
 ZRhWyLRYlxQ3omHcVvo=
 =yDKM
 -----END PGP SIGNATURE-----

Merge tag 'pmdomain-v6.19-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm

Pull pmdomain fixes from Ulf Hansson:

 - imx: Remove incorrect reset/clock mask for 8mq vpu

 - rockchip: Fix initial state of PM domain

* tag 'pmdomain-v6.19-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
  pmdomain:rockchip: Fix init genpd as GENPD_STATE_ON before regulator ready
  pmdomain: imx8m-blk-ctrl: Remove separate rst and clk mask for 8mq vpu
This commit is contained in:
Linus Torvalds 2026-01-23 13:12:49 -08:00
commit 9731fa48be
2 changed files with 17 additions and 4 deletions

View File

@ -846,22 +846,25 @@ static int imx8mq_vpu_power_notifier(struct notifier_block *nb,
return NOTIFY_OK;
}
/*
* For i.MX8MQ, the ADB in the VPUMIX domain has no separate reset and clock
* enable bits, but is ungated and reset together with the VPUs.
* Resetting G1 or G2 separately may led to system hang.
* Remove the rst_mask and clk_mask from the domain data of G1 and G2,
* Let imx8mq_vpu_power_notifier() do really vpu reset.
*/
static const struct imx8m_blk_ctrl_domain_data imx8mq_vpu_blk_ctl_domain_data[] = {
[IMX8MQ_VPUBLK_PD_G1] = {
.name = "vpublk-g1",
.clk_names = (const char *[]){ "g1", },
.num_clks = 1,
.gpc_name = "g1",
.rst_mask = BIT(1),
.clk_mask = BIT(1),
},
[IMX8MQ_VPUBLK_PD_G2] = {
.name = "vpublk-g2",
.clk_names = (const char *[]){ "g2", },
.num_clks = 1,
.gpc_name = "g2",
.rst_mask = BIT(0),
.clk_mask = BIT(0),
},
};

View File

@ -879,6 +879,16 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
pd->genpd.name = pd->info->name;
else
pd->genpd.name = kbasename(node->full_name);
/*
* power domain's needing a regulator should default to off, since
* the regulator state is unknown at probe time. Also the regulator
* state cannot be checked, since that usually requires IP needing
* (a different) power domain.
*/
if (pd->info->need_regulator)
rockchip_pd_power(pd, false);
pd->genpd.power_off = rockchip_pd_power_off;
pd->genpd.power_on = rockchip_pd_power_on;
pd->genpd.attach_dev = rockchip_pd_attach_dev;