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)
committerHeiko Stuebner <heiko@sntech.de>
Mon, 28 Mar 2016 10:03:29 +0000 (12:03 +0200)
Not all new socs need to handle idle states on domain state changes,
so add the possibility to make them optional.

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
drivers/soc/rockchip/pm_domains.c

index 43155e1f97b92ca7ee8f05b901ad681501041d80..7ae7d84e6776503b1d668acea44ea039649194ee 100644 (file)
@@ -68,9 +68,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)                \
@@ -96,6 +96,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);