|
@@ -559,22 +559,28 @@ EXPORT_SYMBOL(tegra_powergate_remove_clamping);
|
|
|
int tegra_powergate_sequence_power_up(unsigned int id, struct clk *clk,
|
|
|
struct reset_control *rst)
|
|
|
{
|
|
|
- struct tegra_powergate pg;
|
|
|
+ struct tegra_powergate *pg;
|
|
|
int err;
|
|
|
|
|
|
if (!tegra_powergate_is_available(id))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- pg.id = id;
|
|
|
- pg.clks = &clk;
|
|
|
- pg.num_clks = 1;
|
|
|
- pg.reset = rst;
|
|
|
- pg.pmc = pmc;
|
|
|
+ pg = kzalloc(sizeof(*pg), GFP_KERNEL);
|
|
|
+ if (!pg)
|
|
|
+ return -ENOMEM;
|
|
|
|
|
|
- err = tegra_powergate_power_up(&pg, false);
|
|
|
+ pg->id = id;
|
|
|
+ pg->clks = &clk;
|
|
|
+ pg->num_clks = 1;
|
|
|
+ pg->reset = rst;
|
|
|
+ pg->pmc = pmc;
|
|
|
+
|
|
|
+ err = tegra_powergate_power_up(pg, false);
|
|
|
if (err)
|
|
|
pr_err("failed to turn on partition %d: %d\n", id, err);
|
|
|
|
|
|
+ kfree(pg);
|
|
|
+
|
|
|
return err;
|
|
|
}
|
|
|
EXPORT_SYMBOL(tegra_powergate_sequence_power_up);
|