aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2016-09-15 08:05:23 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-09-16 18:56:34 -0400
commit609bed67bd8f72981faba75d80b3b48d746b7206 (patch)
treebdbcf5687791e534a366599a703dc0fa081d12cc
parent17926551c98a4ff5d7fa3a574c60534fedb3f2c6 (diff)
PM / Domains: Allow holes in genpd_data.domains array
In platforms such as Rockchip's, the array of domains isn't always filled without holes, as which domains are present depend on the particular SoC revision. By allowing holes to be in the array, such SoCs can still use a single set of constants to index the array of power domains. Fixes: 0159ec670763 (PM / Domains: Verify the PM domain is present when adding a provider) Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Acked-by: Jon Hunter <jonathanh@nvidia.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Heiko Stuebner <heiko@sntech.de> Tested-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/base/power/domain.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index b0cf46dcae73..83ae3d7d3fdd 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -1581,6 +1581,8 @@ int of_genpd_add_provider_onecell(struct device_node *np,
1581 mutex_lock(&gpd_list_lock); 1581 mutex_lock(&gpd_list_lock);
1582 1582
1583 for (i = 0; i < data->num_domains; i++) { 1583 for (i = 0; i < data->num_domains; i++) {
1584 if (!data->domains[i])
1585 continue;
1584 if (!pm_genpd_present(data->domains[i])) 1586 if (!pm_genpd_present(data->domains[i]))
1585 goto error; 1587 goto error;
1586 1588
@@ -1598,6 +1600,8 @@ int of_genpd_add_provider_onecell(struct device_node *np,
1598 1600
1599error: 1601error:
1600 while (i--) { 1602 while (i--) {
1603 if (!data->domains[i])
1604 continue;
1601 data->domains[i]->provider = NULL; 1605 data->domains[i]->provider = NULL;
1602 data->domains[i]->has_provider = false; 1606 data->domains[i]->has_provider = false;
1603 } 1607 }