On 23 June 2017 at 14:07, KONRAD Frederic <frederic.kon...@adacore.com> wrote: > Le 06/23/2017 à 02:47 PM, Peter Maydell a écrit : >> Each device "owns" its output clock objects, but input >> clocks are just pointers to the clock object owned by the >> device at the other end. In the board you wire up CI1 to C1, >> and CI2 to C2 (using link properties I guess). >> Then in device C you can implement the clock switching by >> some kind of bind(s->CI1, &s->C3) call because you have >> pointers to all the relevant clock objects. >> >> As I understand it your current implementation makes not >> just the output clocks C1 C2 C2 be clock objects, but also >> the inputs CI1 CI2, so effectively each link from a clock >> source to a clock sink has two objects involved.
> Yes that makes sense but you won't have the name. I don't think that's a big deal. > And one other thing I wanted to have is beeing able to refresh > the clock tree without refreshing everything. If you start a > refresh from the "pointer" and it is bind to other things you > will refresh the other devices as well. Maybe we don't care or we > can workaround that but.. The pointer is for your clock inputs -- when would you want to start a refresh from that? I would expect refreshes to only ever go downstream -- you update the config of your clock outputs and things downstream of them will update in turn. thanks -- PMM