提交 67b50871 编写于 作者: V viresh kumar 提交者: Russell King

ARM: 7392/1: CLKDEV: Optimize clk_find()

clk_find must return as soon as it gets the correct clock. Currently it check
all clocks until it found a lookup with both dev_id and con_id matching.

If only one of them is passed, then we don't actually need to wait for both of
them to match. We can quit as soon as the requested id (dev_id or con_id)
matches.
Signed-off-by: NViresh Kumar <viresh.kumar@st.com>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 a8a97db9
...@@ -35,7 +35,12 @@ static DEFINE_MUTEX(clocks_mutex); ...@@ -35,7 +35,12 @@ static DEFINE_MUTEX(clocks_mutex);
static struct clk_lookup *clk_find(const char *dev_id, const char *con_id) static struct clk_lookup *clk_find(const char *dev_id, const char *con_id)
{ {
struct clk_lookup *p, *cl = NULL; struct clk_lookup *p, *cl = NULL;
int match, best = 0; int match, best_found = 0, best_possible = 0;
if (dev_id)
best_possible += 2;
if (con_id)
best_possible += 1;
list_for_each_entry(p, &clocks, node) { list_for_each_entry(p, &clocks, node) {
match = 0; match = 0;
...@@ -50,10 +55,10 @@ static struct clk_lookup *clk_find(const char *dev_id, const char *con_id) ...@@ -50,10 +55,10 @@ static struct clk_lookup *clk_find(const char *dev_id, const char *con_id)
match += 1; match += 1;
} }
if (match > best) { if (match > best_found) {
cl = p; cl = p;
if (match != 3) if (match != best_possible)
best = match; best_found = match;
else else
break; break;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册