soc: rockchip: power-domain: support qos node status get

check if qos node is available for use.

Change-Id: Ife40ee58664cd53a9705cda934b92d886ca35522
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
This commit is contained in:
Elaine Zhang
2018-11-06 16:47:57 +08:00
committed by Tao Huang
parent 9a0e9ea3cf
commit a2ad017987

View File

@@ -532,7 +532,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
struct rockchip_pm_domain *pd;
struct device_node *qos_node;
struct clk *clk;
int clk_cnt;
int clk_cnt, num_qos = 0, num_qos_reg = 0;
int i, j;
u32 id;
int error;
@@ -595,8 +595,14 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
clk, node->name);
}
pd->num_qos = of_count_phandle_with_args(node, "pm_qos",
NULL);
num_qos = of_count_phandle_with_args(node, "pm_qos", NULL);
for (j = 0; j < num_qos; j++) {
qos_node = of_parse_phandle(node, "pm_qos", j);
if (qos_node && of_device_is_available(qos_node))
pd->num_qos++;
of_node_put(qos_node);
}
if (pd->num_qos > 0) {
pd->qos_regmap = devm_kcalloc(pmu->dev, pd->num_qos,
@@ -618,19 +624,25 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
}
}
for (j = 0; j < pd->num_qos; j++) {
for (j = 0; j < num_qos; j++) {
qos_node = of_parse_phandle(node, "pm_qos", j);
if (!qos_node) {
error = -ENODEV;
goto err_out;
}
pd->qos_regmap[j] = syscon_node_to_regmap(qos_node);
if (IS_ERR(pd->qos_regmap[j])) {
error = -ENODEV;
of_node_put(qos_node);
goto err_out;
if (of_device_is_available(qos_node)) {
pd->qos_regmap[num_qos_reg] =
syscon_node_to_regmap(qos_node);
if (IS_ERR(pd->qos_regmap[num_qos_reg])) {
error = -ENODEV;
of_node_put(qos_node);
goto err_out;
}
num_qos_reg++;
}
of_node_put(qos_node);
if (num_qos_reg > pd->num_qos)
goto err_out;
}
}
@@ -910,7 +922,7 @@ static const struct rockchip_domain_info px30_pm_domains[] = {
static const struct rockchip_domain_info rk1808_pm_domains[] = {
[RK1808_VD_NPU] = DOMAIN_PX30(15, 15, 2, false),
[RK1808_PD_PCIE] = DOMAIN_PX30(9, 9, 4, false),
[RK1808_PD_PCIE] = DOMAIN_PX30(9, 9, 4, true),
[RK1808_PD_VPU] = DOMAIN_PX30(13, 13, 7, false),
[RK1808_PD_VIO] = DOMAIN_PX30(14, 14, 8, false),
};