UPSTREAM: soc: rockchip: power-domain: make idle handling optional
authorElaine Zhang <zhangqing@rock-chips.com>
Wed, 9 Mar 2016 21:22:53 +0000 (05:22 +0800)
committerGerrit Code Review <gerrit@rock-chips.com>
Tue, 29 Mar 2016 06:52:18 +0000 (14:52 +0800)
Not all new socs need to handle idle states on domain state changes,
so add the possibility to make them optional.

Change-Id: I46d869e1de9e03ec0664518effbcf2642053391e
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
(cherry picked from git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git
 v4.7-armsoc/drivers commit 6aa841c8097fee1b17b343719c45694e3166ca34)

drivers/soc/rockchip/pm_domains.c

index bb5ee88ea074d69ba5b8bcf46f65b8cc2cdd7ba4..c811fecb9864a1431b23aab3592f115c32bded54 100644 (file)
@@ -69,9 +69,9 @@ struct rockchip_pmu {
 {                                              \
        .pwr_mask = BIT(pwr),                   \
        .status_mask = BIT(status),             \
-       .req_mask = BIT(req),                   \
-       .idle_mask = BIT(idle),                 \
-       .ack_mask = BIT(ack),                   \
+       .req_mask = (req >= 0) ? BIT(req) : 0,          \
+       .idle_mask = (idle >= 0) ? BIT(idle) : 0,       \
+       .ack_mask = (ack >= 0) ? BIT(ack) : 0,          \
 }
 
 #define DOMAIN_RK3288(pwr, status, req)                \
@@ -97,6 +97,9 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
        struct rockchip_pmu *pmu = pd->pmu;
        unsigned int val;
 
+       if (pd_info->req_mask == 0)
+               return 0;
+
        regmap_update_bits(pmu->regmap, pmu->info->req_offset,
                           pd_info->req_mask, idle ? -1U : 0);