[PATCH v2 0/7] rockchip: rk3568: Fix use of PCIe bifurcation

Jonas Karlman jonas at kwiboo.se
Wed Sep 27 20:07:55 CEST 2023


Hi Kever,

On 2023-09-27 03:57, Kever Yang wrote:
> Hi Jonas,
> 
> 
>      Basically these patches are feature update and should be merge and 
> send in next MW.
> 

Great and thanks!

> 
> I have question about PCIe bifurcation, does this also merged in linux 
> kernel? I do check the status
> 
> in kernel mailing list but forget to feedback with you, I didn't see the 
> pcie node in rk3588 dtsi.

The snps-pcie3 phy driver should match what has been merged into mainline linux.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c

RK3588 DT nodes for PCIe2 and PCIe3 was merged for linux v6.6-rc1 in:

arm64: dts: rockchip: add PCIe3 support for rk3588
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip?id=0acf4fa7f187cd7e3dad93f1ee14e9509687621e

arm64: dts: rockchip: add rk3588 PCIe2 support
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip?id=8d81b77f4c49f8ee1432c20c22bf0f03c2937a88

And following two pending series add PCIe nodes to EVB1 and Rock 5B.

RK3588 EVB1 PCIe support
https://lore.kernel.org/all/20230918141327.131108-1-sebastian.reichel@collabora.com/

RK3588 Rock 5B PCIe support
https://lore.kernel.org/all/20230918141451.131247-1-sebastian.reichel@collabora.com/

This series was tested together with a device tree that should be very close
to what was merged for v6.6-rc1 and above Rock 5B PCIe nodes.
https://github.com/Kwiboo/u-boot-rockchip/commit/d040547bad665f7c6ea9e83c55ed8cca1ff73a5b

Following patch should sync latest rk3588 dtsi and add pcie nodes.
https://patchwork.ozlabs.org/project/uboot/patch/20230905114736.22585-1-naoki@radxa.com/

I expect that there may be a need for one more DT sync after all this
have landed in next/master.

> 
> I have a little bit confuse about how the phy init for different controller:
> 
> eg: if the hardware use pcie3 phy as 2lane + 1 lane + 1 lane, how to 
> write pcie/phy dts?
> 

This is an example from rk3568-radxa-e25.dts

&pcie30phy {
	/* First data-lane is routed to controller 1
	 * Second data-lane is routed to controller 2
	 */
	data-lanes = <1 2>;
	...
};

&pcie3x1 {
	/* Use 1 data-lane */
	num-lanes = <1>;
	...
};

&pcie3x2 {
	/* Use 1 data-lane */
	num-lanes = <1>;
	...
};

Above works with this series in U-Boot and also in mainline linux. Not
sure the RK3588 bifurcation part of driver have been verified on real HW,
rk3588 boards available for testing have typicality not used bifurcation.

For 2 lane + 1 lane + 1 lane I would expect DT to look something like:

&pcie3-phy {
	data-lanes = <1 1 2 3>;
};

&pcie3-1 {
	num-lanes = <2>;
};

&pcie3-2 {
	num-lanes = <1>;
};

&pcie3-3 {
	num-lanes = <1>;
};

See bindings for data-lanes property:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/phy/rockchip,pcie3-phy.yaml#n29

Regards,
Jonas

> 
> Thanks,
> 
> - Kever
> 
> On 2023/9/26 05:30, Jonas Karlman wrote:
>> Hi Kever,
>>
>> It would be nice to get some feedback and plans for this and the
>> following series :-)
>>
>> rockchip: rk3568: Fix use of PCIe bifurcation (this series)
>> https://patchwork.ozlabs.org/cover/1816140/
>>
>> rockchip: rk3568-nanopi-r5: Add missing PCIe options
>> https://patchwork.ozlabs.org/cover/1816147/
>>
>> rockchip: Port IO-domain driver for RK3568 from linux
>> https://patchwork.ozlabs.org/cover/1823769/
>>
>> I also plan to send a v2 with small update based on the little feedback
>> I got on the following:
>>
>> rockchip: Add GMAC support for RK3568 and RK3588
>> https://patchwork.ozlabs.org/cover/1817469/
>>
>> Regards,
>> Jonas
>>
>> On 2023-08-02 21:04, Jonas Karlman wrote:
>>> This series add support for use of PCIe bifurcation on RK3568, and as a
>>> bonus support for the RK3588 PHY is also included. With PCIe bifurcation
>>> supported it is possible to enable PCIe on more RK3568 boards, e.g. on
>>> NanoPi R5C and NanoPi R5S. This series only include fixing the mini PCIe
>>> slot on Radxa E25.
>>>
>>> Most parts of this series was imported almost 1:1 from mainline linux.
>>>
>>> Patch 1 fixes configuration of number of lanes in pcie_dw_rockchip.
>>> Patch 2-3 refactor the snps-pcie3 phy driver.
>>> Patch 4 add bifurcation support for RK3568.
>>> Patch 5 add support for RK3588 to snps-pcie3 driver.
>>> Patch 6 fixes use of pcie2x1l0 on ROCK 5B.
>>> Patch 7 enables the mini PCIe slot on Radxa E25.
>>>
>>> Changes in v2:
>>> - Fix use of signal from comb PHY on RK3588
>>> - Add fixes tag
>>>
>>> The RK3588 PHY part was tested on a ROCK 5B together with device tree
>>> files picked from Sebastian Reichel's rk3588 branch at [1].
>>>
>>> Patches in this series is also aviliable at [2].
>>>
>>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git/tree/?h=rk3588
>>> [2] https://github.com/Kwiboo/u-boot-rockchip/commits/rk35xx-pcie-bifurcation-v2
>>>
>>> Jonas Karlman (7):
>>>    pci: pcie_dw_rockchip: Configure number of lanes and link width speed
>>>    phy: rockchip: snps-pcie3: Refactor to use clk_bulk API
>>>    phy: rockchip: snps-pcie3: Refactor to use a phy_init ops
>>>    phy: rockchip: snps-pcie3: Add bifurcation support for RK3568
>>>    phy: rockchip: snps-pcie3: Add support for RK3588
>>>    phy: rockchip: naneng-combphy: Use signal from comb PHY on RK3588
>>>    rockchip: rk3568-radxa-e25: Enable pcie3x1 node
>>>
>>>   arch/arm/dts/rk3568-radxa-e25-u-boot.dtsi     |  11 +-
>>>   configs/radxa-e25-rk3568_defconfig            |   1 -
>>>   drivers/pci/pcie_dw_rockchip.c                |  58 ++++-
>>>   .../rockchip/phy-rockchip-naneng-combphy.c    |   6 +
>>>   .../phy/rockchip/phy-rockchip-snps-pcie3.c    | 230 ++++++++++++++----
>>>   5 files changed, 241 insertions(+), 65 deletions(-)
>>>


More information about the U-Boot mailing list