brintos

brintos / linux-shallow public Read only

0
0
Text · 730 B · 50847cc Raw
37 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (C) 2012 ST Microelectronics4 * Viresh Kumar <vireshk@kernel.org>5 *6 * SPEAr clk - Common routines7 */8 9#include <linux/clk-provider.h>10#include <linux/types.h>11#include "clk.h"12 13long clk_round_rate_index(struct clk_hw *hw, unsigned long drate,14		unsigned long parent_rate, clk_calc_rate calc_rate, u8 rtbl_cnt,15		int *index)16{17	unsigned long prev_rate, rate = 0;18 19	for (*index = 0; *index < rtbl_cnt; (*index)++) {20		prev_rate = rate;21		rate = calc_rate(hw, parent_rate, *index);22		if (drate < rate) {23			/* previous clock was best */24			if (*index) {25				rate = prev_rate;26				(*index)--;27			}28			break;29		}30	}31 32	if ((*index) == rtbl_cnt)33		(*index)--;34 35	return rate;36}37