On 03/11/2019 12:30 PM, Geert Uytterhoeven wrote:
>> Testing has shown that the RPC-IF module clock's parent is the RPCD2 clock,
>> not the RPC one -- the RPC-IF register reads stall otherwise...
>
> Perhaps... Or something else is wrong with how the RPC driver uses the
> clock hierarchy.
Yes, explicitly enabling RPCD2 did help as well.
> According to the docs, RPC clocks RPC-PHY, and RPCD2 clocks RPC-LINK.
I've also read the manual. Note it's not that reading a PHY register
hangs the kernel but reading CMNCR...
> Currently nothing references RPCD2, so it is disabled automatically.
Only on V3H.
> If you make RPC -> RPCD2 -> RPC-IF, enabling RPC-IF indeed enables
> both RPC and RPCD2.
Sure, it does. :-)
> Perhaps the RPC device node does need a reference to RPCD2?
Looks like that wouldn't hurt either...
> Is this also the case on R-Car V3M, where RPCD2 is not controlled by the
> CPG, but by the DIVREG register in the RPC-IF module itself?
No hangs were seen on V3M, despite the RPCD2 clock remained disabled.
The RPC clocks on both V3H and V3M suffer from a lack of clear documentation...
> See also section 62.4.7 (Frequency change), which does not have a
> subsection for V3H, but it may be impacted (changing RPCD2 causes
> an additional read of RPCCKR, satisfying the read-after-write requirement
> documented there).
Hmm, haven't seen this item before; it looks like we can't use the standard
divider component. BTW, this section in the 1.50 manual tells to use the soft
reset on V3MOK. OK, I'll investigate this...
>> Fixes: 94e3935b5756 ("clk: renesas: r8a77980: Add RPC clocks")
>> Signed-off-by: Sergei Shtylyov <[email protected]>
[...]
MBR, Sergei