Re: h616 clocks

From: Emmanuel Vadot <manu_at_bidouilliste.com>
Date: Wed, 21 Jun 2023 13:55:51 UTC
 Hello Titus,

On Wed, 21 Jun 2023 10:58:17 +0300
titus <titus@edc.ro> wrote:

> I?m trying to add support for allwinner H616 ccu
> I downloaded H616 user manual and i mostly can figure out differences from allwinner H6 but i have a question
> how is the CCU_GATE clock parent assigned to a specifc ccu gate - there is no indication in the manual

 There is, you need to look at the system bus tree (page 90 for the H6
and page 46 for the H616).

> for example 
> CCU_GATE(CLK_BUS_DE, "bus-de", "psi-ahb1-ahb2", 0x60c, 0)
> the manual says that
> 0x060C DE Bus Gating Reset Register (Default Value: 0x0000_0000) has bit 0 as DE_GATING and bit 16 as DE_RST
> but why is psi-ahb1-ahb2 chosen as parent ? (can?t find any reference in the manual)

 No idea where you got this example as we don't have this clock defined
in FreeBSD so a bit hard to answer to this specific example.
 But indeed that looks correct as the DE engine sits on the PSI2AHB bus
which is on the PSI bus.
 If you look at page 91 in the H6 user manual you can see that AHB1 and
AHB2 are both the same clock and equal to the PSI one, which itself is
created from 4 possible parents (OSC24M, CCU_32K, RC16M and PLL_PERI0)
and two factors (N and M).
 Clocks can be a bit hard to understand, especially clock topology and
Allwinner doesn't make it better by not having a full clock topo table
in their docs usually. So open the doc 3 or 4 times and go back and
forth reading the clock tree and register definitions.
 Also don't hesitate to ask more questions I'll see if I can help.

 Cheers,

-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>