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

Peter Geis pgwipeout at gmail.com
Tue Feb 28 12:21:38 PST 2023


On Tue, Feb 28, 2023 at 7:44 AM Bjorn Helgaas <helgaas at kernel.org> wrote:
>
> 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.

Good Afternoon,

That bug report leaves a lot to be desired. Configuration of the phy
must be completed correctly in the dts or the pci controller will hang
and / or crash depending on kernel configuration parameters.
Bifurcation is not automatic.

At a minimum we need to know what device they are attempting this on
as well as the full dts they attempted to use. A full kernel log would
also be helpful.

Very Respectfully,
Peter Geis

>
> Bjorn



More information about the Linux-rockchip mailing list