root/drivers/clk/spear/clk.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. clk_round_rate_index

   1 /*
   2  * Copyright (C) 2012 ST Microelectronics
   3  * Viresh Kumar <vireshk@kernel.org>
   4  *
   5  * This file is licensed under the terms of the GNU General Public
   6  * License version 2. This program is licensed "as is" without any
   7  * warranty of any kind, whether express or implied.
   8  *
   9  * SPEAr clk - Common routines
  10  */
  11 
  12 #include <linux/clk-provider.h>
  13 #include <linux/types.h>
  14 #include "clk.h"
  15 
  16 long clk_round_rate_index(struct clk_hw *hw, unsigned long drate,
  17                 unsigned long parent_rate, clk_calc_rate calc_rate, u8 rtbl_cnt,
  18                 int *index)
  19 {
  20         unsigned long prev_rate, rate = 0;
  21 
  22         for (*index = 0; *index < rtbl_cnt; (*index)++) {
  23                 prev_rate = rate;
  24                 rate = calc_rate(hw, parent_rate, *index);
  25                 if (drate < rate) {
  26                         /* previous clock was best */
  27                         if (*index) {
  28                                 rate = prev_rate;
  29                                 (*index)--;
  30                         }
  31                         break;
  32                 }
  33         }
  34 
  35         if ((*index) == rtbl_cnt)
  36                 (*index)--;
  37 
  38         return rate;
  39 }

/* [<][>][^][v][top][bottom][index][help] */