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 <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> [...] MBR, Sergei