On Mon, Aug 12, 2019 at 04:22:27AM +0000, Z.q. Hou wrote: > From: Hou Zhiqiang <Zhiqiang.Hou@xxxxxxx> > > On FSL Layerscape SoCs, the number of lanes assigned to PCIe > controller is not fixed, it is determined by the selected > SerDes protocol in the RCW (Reset Configuration Word), and > the PCIe link training is completed automatically base on > the selected SerDes protocol, and the link width set-up is > updated by hardware. So the num-lanes is not needed to > specify the link width. > > The current num-lanes indicates the max lanes PCIe controller > can support up to, instead of the lanes assigned to the PCIe > controller. This can result in PCIe link training fail after > hot-reset. So remove the num-lanes to avoid set-up to incorrect > link width. It would be useful to explain *why* "num-lanes" in DT causes a link training failure. Maybe the code programs "num-lanes" somewhere, overriding what hardware automatically sensed? Maybe the code tries to bring up exactly "num-lanes" lanes even if not all are present? > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@xxxxxxx> > --- > arch/arm/boot/dts/ls1021a.dtsi | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/arch/arm/boot/dts/ls1021a.dtsi b/arch/arm/boot/dts/ls1021a.dtsi > index 464df4290ffc..2f6977ada447 100644 > --- a/arch/arm/boot/dts/ls1021a.dtsi > +++ b/arch/arm/boot/dts/ls1021a.dtsi > @@ -874,7 +874,6 @@ > #address-cells = <3>; > #size-cells = <2>; > device_type = "pci"; > - num-lanes = <4>; > num-viewport = <6>; > bus-range = <0x0 0xff>; > ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* downstream I/O */ > @@ -899,7 +898,6 @@ > #address-cells = <3>; > #size-cells = <2>; > device_type = "pci"; > - num-lanes = <4>; > num-viewport = <6>; > bus-range = <0x0 0xff>; > ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000 /* downstream I/O */ > -- > 2.17.1 >