]> git.karo-electronics.de Git - linux-beck.git/commitdiff
PM / Domains: Allow holes in genpd_data.domains array
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 15 Sep 2016 12:05:23 +0000 (14:05 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 16 Sep 2016 22:56:34 +0000 (00:56 +0200)
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>
drivers/base/power/domain.c

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