[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