[U-Boot] [PATCH] Origen: Correct equation to calculate PLL output frequency

Minkyu Kang mk7.kang at samsung.com
Mon Jul 1 10:26:10 CEST 2013


On 01/07/13 16:42, Rajeshwari Shinde wrote:
> EXYNOS4 user manual equation for calculating PLL output is
> FOUT= MDIV x FIN/(PDIV x 2^(SDIV -1))
> hence updating accordingly.
> 
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s at samsung.com>
> ---
>  arch/arm/cpu/armv7/exynos/clock.c |   11 +++++++++--
>  1 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c
> index e1c4246..af0fa5b 100644
> --- a/arch/arm/cpu/armv7/exynos/clock.c
> +++ b/arch/arm/cpu/armv7/exynos/clock.c
> @@ -116,8 +116,15 @@ static int exynos_get_pll_clk(int pllreg, unsigned int r, unsigned int k)
>  		/* FOUT = (MDIV + K / 1024) * FIN / (PDIV * 2^SDIV) */
>  		fout = (m + k / 1024) * (freq / (p * (1 << s)));
>  	} else {
> -		/* FOUT = MDIV * FIN / (PDIV * 2^SDIV) */
> -		fout = m * (freq / (p * (1 << s)));
> +		if (cpu_is_exynos4()) {
> +			if (s < 1)
> +				s = 1;
> +			/* FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1)) */
> +			fout = m * (freq / (p * (1 << (s - 1))));
> +		} else {
> +			/* FOUT = MDIV * FIN / (PDIV * 2^SDIV) */
> +			fout = m * (freq / (p * (1 << s)));
> +		}
>  	}
>  
>  	return fout;
> 

I checked about it.
It was wrong, but your patch doesn't fit too.

exynos4210
FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1)) 

exynos4412
FOUT = MDIV * FIN / (PDIV * 2^SDIV) 

exynos5250
FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1))

At past, our code was,
FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1))
It was changed by Akshay's patch.


commit 234370cab4b2f096e095fe8f3284fd39740a4023
Author: Akshay Saraswat <akshay.s at samsung.com>
Date:   Fri Mar 22 02:26:36 2013 +0000

    Exynos5: clock: Update the equation to calculate PLL output frequency
    
    According to the latest exynos5 user manual, the equation for
    calculating PLL output was changed to
    FOUT= MDIV x FIN/(PDIV x 2^SDIV)
    earlier it was
    FOUT= MDIV x FIN/(PDIV x 2^(SDIV -1))
    So updating the clock code accordingly.
    
    Signed-off-by: Hatim Ali <hatim.rv at samsung.com>
    Signed-off-by: Akshay Saraswat <akshay.s at samsung.com>
    Acked-by: Simon Glass <sjg at chromium.org>


According to Akshay's patch.
exynos5250 should be
FOUT = MDIV * FIN / (PDIV * 2^SDIV)
but my manual (I'm not sure that is latest version) shows
FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1))

Akshay,
please check this.

Rajeshwari,
Thank you for raise this issue,
I'll check it and resend the patch.

Thanks,
Minkyu Kang.


More information about the U-Boot mailing list