[Bug 217100] New: Bifurcation between pcie3x1 & pcie3x2 doesn't work in RK3568J.

Bjorn Helgaas helgaas at kernel.org
Tue Feb 28 04:44:27 PST 2023


On Tue, Feb 28, 2023 at 08:53:50AM +0000, bugzilla-daemon at kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=217100
> 
>            Summary: Bifurcation between pcie3x1 & pcie3x2 doesn't work in
>                     RK3568J.
> ...

> Hello.
> 
> First, I want to say that pcie3x1 crashes if started before pcie3x2 . Driver
> > pcie-designware.c 
> 
> in function 
> 
> > void dw_pcie_version_detect(struct dw_pcie *pci)
> 
> tries to read parameter from dbi register (PCIE_VERSION_NUMBER) and fails on
> it.
> So I changed sequence of declaration PCIE in rk3568.dtsi: first - pcie3x2 next
> pcie3x1. Now Linux first starts pcie3x2, then successfully starts pcie3x1.
> 
> But main problem is that bifurcation in phy driver 
> > phy-rockchip-snps-pcie3.c 
> 
> doesn't work. I tried add next lines in function
> 
> > static int rockchip_p3phy_probe(struct platform_device *pdev)
> 
> right after block check
> 
> > if (priv->num_lanes == -EINVAL) {
> > }
> 
> > priv->num_lanes = 2;
> > priv->lanes[0] = 1;
> > priv->lanes[1] = 2
> 
> And driver writes during Linux boot process that bifurcation is enabled, but
> 
> lspci
> 
> does't show second device.
> 
> Best regards,
> Anton.

Thanks much for your report, Anton.  People don't really pay attention
to the bugzilla, so I'm forwarding this to the mailing list and to
some folks who've worked on that driver in the past.

MAINTAINERS doesn't list an entry for pcie-dw-rockchip.c; I'm not sure
if that's an oversight or if nobody cares enough to actually maintain
it.

Bjorn



More information about the Linux-rockchip mailing list