mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-22 16:48:14 +01:00 
			
		
		
		
	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 */
 |