Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d519419 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "clk: Check for failure at clk_change_rate"

parents 0ff93a3e 1267aad1
Loading
Loading
Loading
Loading
+22 −4
Original line number Diff line number Diff line
@@ -1449,7 +1449,7 @@ static struct clk_core *clk_propagate_rate_change(struct clk_core *core,
 * walk down a subtree and set the new rates notifying the rate
 * change on the way
 */
static void clk_change_rate(struct clk_core *core)
static int clk_change_rate(struct clk_core *core)
{
	struct clk_core *child;
	struct hlist_node *tmp;
@@ -1457,6 +1457,7 @@ static void clk_change_rate(struct clk_core *core)
	unsigned long best_parent_rate = 0;
	bool skip_set_rate = false;
	struct clk_core *old_parent;
	int rc = 0;

	old_rate = core->rate;

@@ -1484,8 +1485,12 @@ static void clk_change_rate(struct clk_core *core)

	trace_clk_set_rate(core, core->new_rate);

	if (!skip_set_rate && core->ops->set_rate)
		core->ops->set_rate(core->hw, core->new_rate, best_parent_rate);
	if (!skip_set_rate && core->ops->set_rate) {
		rc = core->ops->set_rate(core->hw, core->new_rate,
						best_parent_rate);
		if (rc)
			goto out;
	}

	trace_clk_set_rate_complete(core, core->new_rate);

@@ -1511,6 +1516,13 @@ static void clk_change_rate(struct clk_core *core)
	/* handle the new child who might not be in core->children yet */
	if (core->new_child)
		clk_change_rate(core->new_child);

	return rc;

out:
	trace_clk_set_rate_complete(core, core->new_rate);

	return rc;
}

static int clk_core_set_rate_nolock(struct clk_core *core,
@@ -1545,7 +1557,13 @@ static int clk_core_set_rate_nolock(struct clk_core *core,
	}

	/* change the rates */
	clk_change_rate(top);
	ret = clk_change_rate(top);
	if (ret) {
		pr_err("%s: failed to set %s rate\n", __func__,
				top->name);
		clk_propagate_rate_change(top, ABORT_RATE_CHANGE);
		return ret;
	}

	core->req_rate = req_rate;