Skip to content

Commit

Permalink
ARM: 7392/1: CLKDEV: Optimize clk_find()
Browse files Browse the repository at this point in the history
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: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
viresh kumar authored and Russell King committed Apr 19, 2012
1 parent a8a97db commit 67b5087
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions drivers/clk/clkdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ static DEFINE_MUTEX(clocks_mutex);
static struct clk_lookup *clk_find(const char *dev_id, const char *con_id)
{
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) {
match = 0;
Expand All @@ -50,10 +55,10 @@ static struct clk_lookup *clk_find(const char *dev_id, const char *con_id)
match += 1;
}

if (match > best) {
if (match > best_found) {
cl = p;
if (match != 3)
best = match;
if (match != best_possible)
best_found = match;
else
break;
}
Expand Down

0 comments on commit 67b5087

Please sign in to comment.