Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: amlogic: meson-ee-pwrc: propagate errors from pm_genpd_init()

pm_genpd_init() can return an error. Propagate the error code to prevent
the driver from indicating that it successfully probed while there were
errors during pm_genpd_init().

Fixes: eef3c2ba0a42a6 ("soc: amlogic: Add support for Everything-Else power domains controller")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>

authored by

Martin Blumenstingl and committed by
Kevin Hilman
c67aafd6 0766d65e

+14 -6
+14 -6
drivers/soc/amlogic/meson-ee-pwrc.c
··· 323 323 struct meson_ee_pwrc *pwrc, 324 324 struct meson_ee_pwrc_domain *dom) 325 325 { 326 + int ret; 327 + 326 328 dom->pwrc = pwrc; 327 329 dom->num_rstc = dom->desc.reset_names_count; 328 330 dom->num_clks = dom->desc.clk_names_count; ··· 370 368 * prepare/enable counters won't be in sync. 371 369 */ 372 370 if (dom->num_clks && dom->desc.get_power && !dom->desc.get_power(dom)) { 373 - int ret = clk_bulk_prepare_enable(dom->num_clks, dom->clks); 371 + ret = clk_bulk_prepare_enable(dom->num_clks, dom->clks); 374 372 if (ret) 375 373 return ret; 376 374 377 - pm_genpd_init(&dom->base, &pm_domain_always_on_gov, false); 378 - } else 379 - pm_genpd_init(&dom->base, NULL, 380 - (dom->desc.get_power ? 381 - dom->desc.get_power(dom) : true)); 375 + ret = pm_genpd_init(&dom->base, &pm_domain_always_on_gov, 376 + false); 377 + if (ret) 378 + return ret; 379 + } else { 380 + ret = pm_genpd_init(&dom->base, NULL, 381 + (dom->desc.get_power ? 382 + dom->desc.get_power(dom) : true)); 383 + if (ret) 384 + return ret; 385 + } 382 386 383 387 return 0; 384 388 }