mirror of https://gitee.com/openkylin/linux.git
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: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
a8a97db984
commit
67b508715a
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue