soc: rockchip: power-domain: Fix wrong value when power up pd with writemask
authorFinley Xiao <finley.xiao@rock-chips.com>
Mon, 14 May 2018 03:29:38 +0000 (11:29 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jul 2018 09:24:51 +0000 (11:24 +0200)
commit 9e59c5f66c624b43c766a9fe3b2430e0e976bf0e upstream.

Solve the pd could only ever turn off but never turn them on again,
if the pd registers have the writemask bits.

So far this affects the rk3328 only.

Fixes: 79bb17ce8edb ("soc: rockchip: power-domain: Support domain control in hiword-registers")
Cc: stable@vger.kernel.org
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/soc/rockchip/pm_domains.c

index 40b75748835f552cd4f5a08525a770f839c69d4e..ba009bb9d82bd72cb860ffb0416990feaedb3c6a 100644 (file)
@@ -255,7 +255,7 @@ static void rockchip_do_pmu_set_power_domain(struct rockchip_pm_domain *pd,
                return;
        else if (pd->info->pwr_w_mask)
                regmap_write(pmu->regmap, pmu->info->pwr_offset,
-                            on ? pd->info->pwr_mask :
+                            on ? pd->info->pwr_w_mask :
                             (pd->info->pwr_mask | pd->info->pwr_w_mask));
        else
                regmap_update_bits(pmu->regmap, pmu->info->pwr_offset,