7d0f3fbb93
Copy the best rational approximation calculation routines from Linux. Typical usecase for these routines is to calculate the M/N divider values for PLLs to reach a specific clock rate. This is based on linux kernel commit: "lib/math/rational.c: fix possible incorrect result from rational fractions helper" (sha1: 323dd2c3ed0641f49e89b4e420f9eef5d3d5a881) Signed-off-by: Tero Kristo <t-kristo@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Tero Kristo <kristo@kernel.org>
21 lines
639 B
C
21 lines
639 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* rational fractions
|
|
*
|
|
* Copyright (C) 2009 emlix GmbH, Oskar Schirmer <oskar@scara.com>
|
|
*
|
|
* helper functions when coping with rational numbers,
|
|
* e.g. when calculating optimum numerator/denominator pairs for
|
|
* pll configuration taking into account restricted register size
|
|
*/
|
|
|
|
#ifndef _LINUX_RATIONAL_H
|
|
#define _LINUX_RATIONAL_H
|
|
|
|
void rational_best_approximation(
|
|
unsigned long given_numerator, unsigned long given_denominator,
|
|
unsigned long max_numerator, unsigned long max_denominator,
|
|
unsigned long *best_numerator, unsigned long *best_denominator);
|
|
|
|
#endif /* _LINUX_RATIONAL_H */
|