aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Hunter <jonathanh@nvidia.com>2016-06-30 06:56:24 -0400
committerThierry Reding <treding@nvidia.com>2016-06-30 07:30:40 -0400
commitc2710ac9f5a8dab4f9bb080713452fe6286ca83d (patch)
treeeaa9761991d0a168f950dacbdd4fc45f2274262b
parentda8f4b458944dccc371dba240cfa18c27b7b9802 (diff)
soc/tegra: pmc: Add specific error messages
When initialising a powergate, only a single error message is shown if the initialisation fails. Add more error messages to give specific details of what failed if the initialisation failed and remove the generic failure message. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/soc/tegra/pmc.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index 2ccbdfe751db..ecc1ec0a4ada 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -792,16 +792,19 @@ error:
792static void tegra_powergate_add(struct tegra_pmc *pmc, struct device_node *np) 792static void tegra_powergate_add(struct tegra_pmc *pmc, struct device_node *np)
793{ 793{
794 struct tegra_powergate *pg; 794 struct tegra_powergate *pg;
795 int id, err;
795 bool off; 796 bool off;
796 int id;
797 797
798 pg = kzalloc(sizeof(*pg), GFP_KERNEL); 798 pg = kzalloc(sizeof(*pg), GFP_KERNEL);
799 if (!pg) 799 if (!pg)
800 goto error; 800 return;
801 801
802 id = tegra_powergate_lookup(pmc, np->name); 802 id = tegra_powergate_lookup(pmc, np->name);
803 if (id < 0) 803 if (id < 0) {
804 dev_err(pmc->dev, "powergate lookup failed for %s: %d\n",
805 np->name, id);
804 goto free_mem; 806 goto free_mem;
807 }
805 808
806 /* 809 /*
807 * Clear the bit for this powergate so it cannot be managed 810 * Clear the bit for this powergate so it cannot be managed
@@ -817,16 +820,28 @@ static void tegra_powergate_add(struct tegra_pmc *pmc, struct device_node *np)
817 820
818 off = !tegra_powergate_is_powered(pg->id); 821 off = !tegra_powergate_is_powered(pg->id);
819 822
820 if (tegra_powergate_of_get_clks(pg, np)) 823 err = tegra_powergate_of_get_clks(pg, np);
824 if (err < 0) {
825 dev_err(pmc->dev, "failed to get clocks for %s: %d\n",
826 np->name, err);
821 goto set_available; 827 goto set_available;
828 }
822 829
823 if (tegra_powergate_of_get_resets(pg, np, off)) 830 err = tegra_powergate_of_get_resets(pg, np, off);
831 if (err < 0) {
832 dev_err(pmc->dev, "failed to get resets for %s: %d\n",
833 np->name, err);
824 goto remove_clks; 834 goto remove_clks;
835 }
825 836
826 pm_genpd_init(&pg->genpd, NULL, off); 837 pm_genpd_init(&pg->genpd, NULL, off);
827 838
828 if (of_genpd_add_provider_simple(np, &pg->genpd)) 839 err = of_genpd_add_provider_simple(np, &pg->genpd);
840 if (err < 0) {
841 dev_err(pmc->dev, "failed to add genpd provider for %s: %d\n",
842 np->name, err);
829 goto remove_resets; 843 goto remove_resets;
844 }
830 845
831 dev_dbg(pmc->dev, "added power domain %s\n", pg->genpd.name); 846 dev_dbg(pmc->dev, "added power domain %s\n", pg->genpd.name);
832 847
@@ -849,9 +864,6 @@ set_available:
849 864
850free_mem: 865free_mem:
851 kfree(pg); 866 kfree(pg);
852
853error:
854 dev_err(pmc->dev, "failed to create power domain for %s\n", np->name);
855} 867}
856 868
857static void tegra_powergate_init(struct tegra_pmc *pmc) 869static void tegra_powergate_init(struct tegra_pmc *pmc)