[PATCH 00/11] Describe PCIe/USB3.0 clock generator on R-Car Gen3

Geert Uytterhoeven geert at linux-m68k.org
Tue Jan 13 06:19:08 PST 2026


Hi Marek,

On Thu, 1 Jan 2026 at 21:39, Marek Vasut
<marek.vasut+renesas at mailbox.org> wrote:
> Describe the 9FGV0841 PCIe and USB3.0 clock generator present on various
> R-Car Gen3 boards. The clock generator supplies 100 MHz differential clock
> for PCIe ports, USB 3.0 PHY and SATA.
>
> The series effectively has three parts, the first three patches are part 1,
> which fills in the missing USB 3.0 PHY on R-Car E3 Ebisu and enables it,
> thus aligning the Ebisu USB 3.0 support with the rest of the Gen3 boards.
>
> The second part is description of PCIe root ports on R-Car Gen3 SoCs where
> applicable, in this case that is H3/M3W/M3N/E3. The root port is used with
> PCIe port power control to also control the PCIe port clock. This is needed
> on Gen3 boards, because they often use separate clock output from the PCIe
> clock generator 9FGV0841 to supply clock to the controller and to the PCIe
> port.
>
> The third part is enablement of the 9FGV0841 PCIe clock controller on the
> R-Car Salvator-X/XS, ULCB and Ebisu boards. The boards use the PCIe clock
> controller outputs in a slightly different manner, all use the outputs to
> supply PCIe controllers and slots, as well as USB 3.0 SuperSpeed PHY. The
> ULCB board also uses the 9FGV0841 to supply SATA IP, but this is not yet
> described in DT, therefore it is also not part of this series.
>
> Marek Vasut (11):
>   dt-bindings: phy: renesas: usb3-phy: add r8a77990 support
>   arm64: dts: renesas: r8a77990: Add USB 3.0 PHY and USB3S0 clock nodes
>   arm64: dts: renesas: ebisu: Enable USB 3.0 PHY
>   arm64: dts: renesas: r8a77951: Describe PCIe root ports
>   arm64: dts: renesas: r8a77960: Describe PCIe root ports
>   arm64: dts: renesas: r8a77961: Describe PCIe root ports
>   arm64: dts: renesas: r8a77965: Describe PCIe root ports
>   arm64: dts: renesas: r8a77990: Describe PCIe root port
>   arm64: dts: renesas: salvator-common: Describe PCIe/USB3.0 clock
>     generator
>   arm64: dts: renesas: ulcb: ulcb-kf: Describe PCIe/USB3.0 clock
>     generator
>   arm64: dts: renesas: ebisu: Describe PCIe/USB3.0 clock generator

Thanks for your series!

This causes a crash during s2idle on e.g. Salvator-XS with R-Car
H3 ES2.0:

    PM: suspend entry (s2idle)
    Filesystems sync: 0.014 seconds
    Unable to handle kernel NULL pointer dereference at virtual
address 0000000000000008
    Mem abort info:
      ESR = 0x0000000096000004
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x04: level 0 translation fault
    Data abort info:
      ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
      CM = 0, WnR = 0, TnD = 0, TagAccess = 0
      GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=0000000504be2000
    [0000000000000008] pgd=0000000000000000, p4d=0000000000000000
    Internal error: Oops: 0000000096000004 [#1]  SMP
    CPU: 2 UID: 0 PID: 1000 Comm: s2idle Not tainted
6.19.0-rc5-arm64-renesas-04116-g331b300b41b0 #3416 PREEMPT
    Hardware name: Renesas Salvator-X 2nd version board based on r8a77951 (DT)
    pstate: a00000c5 (NzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : devres_for_each_res+0x60/0xe8
    lr : devres_for_each_res+0x48/0xe8
    sp : ffff800083263a70
    x29: ffff800083263a70 x28: 0000000000000000 x27: ffff0004c125aec8
    x26: ffff800083263af8 x25: ffff80008167bd38 x24: ffff800083263af8
    x23: ffff80008071b2f4 x22: ffff0004c125aed0 x21: ffff80008071acd8
    x20: ffff80008071ad44 x19: ffff0004c125ac20 x18: 0000000000000001
    x17: 00000000ffffffff x16: ffff800081b93ac8 x15: 0056c6b8a4d0b0e4
    x14: 00001998170d3e20 x13: 188a4fd930ce7024 x12: 0000000529c8ad17
    x11: 00000000000000c0 x10: 0000000000000960 x9 : ffff800083263a50
    x8 : ffff800083263b38 x7 : 0000000000000000 x6 : ffff0004c0dc36c0
    x5 : ffff800083263af8 x4 : 0000000000000000 x3 : 0000000000000001
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    Call trace:
     devres_for_each_res+0x60/0xe8 (P)
     dev_cache_fw_image+0x5c/0x1a8
     dpm_for_each_dev+0x50/0x80
     fw_pm_notify+0xc0/0xec
     blocking_notifier_call_chain_robust+0x70/0xdc
     pm_notifier_call_chain_robust+0x24/0x40
     pm_suspend+0x13c/0x1e0
     state_store+0x7c/0x100
     kobj_attr_store+0x14/0x24
     sysfs_kf_write+0x78/0x8c
     kernfs_fop_write_iter+0x128/0x1d0
     vfs_write+0x210/0x390
     ksys_write+0x6c/0x100
     __arm64_sys_write+0x18/0x20
     invoke_syscall+0x44/0x100
     el0_svc_common.constprop.0+0x3c/0xd4
     do_el0_svc+0x18/0x20
     el0_svc+0x24/0xd8
     el0t_64_sync_handler+0x98/0xdc
     el0t_64_sync+0x154/0x158
    Code: f94004dc eb1600df 540000e1 14000018 (f9400780)
    ---[ end trace 0000000000000000 ]---
    note: s2idle[1000] exited with irqs disabled
    note: s2idle[1000] exited with preempt_count 1

I do not know what is the actual issue.  Adding debug prints to
rs9_suspend() and rs9_resume() shows these functions are not called,
while adding 'status = "disabled"' to the renesas,9fgv0841 clock node
in arch/arm64/boot/dts/renesas/salvator-common.dtsi does fix the issue.

Perhaps you have pending patches for the rs9 or PCIe drivers?
Do you have a clue?
Thanks!

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



More information about the linux-arm-kernel mailing list