[PATCH v1 06/17] clk: starfive: Add StarFive JH7110 clock driver
Sean Anderson
seanga2 at gmail.com
Sat Jan 21 18:14:31 CET 2023
On 1/9/23 04:31, yanhong wang wrote:
> On 2023/1/5 3:13, Sean Anderson wrote:
>> On 12/11/22 21:50, Yanhong Wang wrote:
>>> +static const struct starfive_pllx_rate jh7110_pll2_tbl[] = {
>>> + PLLX_RATE(1228800000UL, 15, 768, 1, 1, 1),
>>> + PLLX_RATE(1188000000UL, 2, 99, 1, 1, 1),
>>> +};
>>
>> All of these rates set postdiv1/dacpd/dsmpd to 1. Do these fields need
>> to be stored?
>>
> The PLL supports integer and fraction muligple, you should set dacpd and dsmpd to high while integer multiple mode,
> and set both them to low while fraction multiple mode. The default configration set to integer multiple mode.
>
> Integer Multiple Mode
>
> Both dacpd and dsmpd should be set as 1 while integer multiple mode.
>
> The frequency of outputs can be figured out as below.
>
> Fvco = Fref*Nl/M
> NI is integer frequency dividing ratio of feedback divider, set by fbdiv1[11:0] , NI = 8, 9, 10, 12.13....4095
> M is frequency dividing ratio of pre-divider, set by prediv[5:0],M = 1,2...63
>
> Fclko1 = Fvco/Q1
> Q1 is frequency dividing ratio of post divider, set by postdiv1[1:0],Q1= 1,2,4,8
>
>
> Fraction Multiple Mode
>
> Both dacpd and dsmpd should be set as 0 while integer multiple mode.
>
> Fvco = Fref*(NI+NE)/M
> NI is integer frequency dividing ratio of feedback divider, set by fbdiv[11:0] , NI = 8, 9, 10, 12.13....4095
> NF is fractional frequency dividing ratio, set by frac[23:0], NF =frac[23:0]/2^24= 0~0.99999994
> M is frequency dividing ratio of pre-divider, set by prediv[5:0],M = 1,2...63
>
> Fclko1 = Fvco/Q1
> Q1 is frequency dividing ratio of post divider, set by postdivl[1:0],Q1= 1,24,8
>
If you are going to set these to the same value every time you can omit them
from struct starfive_pllx_rate.
--Sean
More information about the U-Boot
mailing list