瀏覽代碼

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>
Tomeu Vizoso 9 年之前
父節點
當前提交
609bed67bd
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/base/power/domain.c

+ 4 - 0
drivers/base/power/domain.c

@@ -1581,6 +1581,8 @@ int of_genpd_add_provider_onecell(struct device_node *np,
 	mutex_lock(&gpd_list_lock);
 	mutex_lock(&gpd_list_lock);
 
 
 	for (i = 0; i < data->num_domains; i++) {
 	for (i = 0; i < data->num_domains; i++) {
+		if (!data->domains[i])
+			continue;
 		if (!pm_genpd_present(data->domains[i]))
 		if (!pm_genpd_present(data->domains[i]))
 			goto error;
 			goto error;
 
 
@@ -1598,6 +1600,8 @@ int of_genpd_add_provider_onecell(struct device_node *np,
 
 
 error:
 error:
 	while (i--) {
 	while (i--) {
+		if (!data->domains[i])
+			continue;
 		data->domains[i]->provider = NULL;
 		data->domains[i]->provider = NULL;
 		data->domains[i]->has_provider = false;
 		data->domains[i]->has_provider = false;
 	}
 	}