RE: [PATCH v3 0/6] Add the iMX8MP PCIe support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Richard Leitner <richard.leitner@xxxxxxxxx>
> Sent: 2022年8月25日 20:23
> To: Hongxing Zhu <hongxing.zhu@xxxxxxx>
> Cc: p.zabel@xxxxxxxxxxxxxx; l.stach@xxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx;
> lorenzo.pieralisi@xxxxxxx; robh@xxxxxxxxxx; shawnguo@xxxxxxxxxx;
> vkoul@xxxxxxxxxx; alexander.stein@xxxxxxxxxxxxxxx; marex@xxxxxxx;
> linux-phy@xxxxxxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> linux-pci@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx; dl-linux-imx
> <linux-imx@xxxxxxx>
> Subject: Re: [PATCH v3 0/6] Add the iMX8MP PCIe support
> 
> Hi Richard,
> 
> On Thu, Aug 18, 2022 at 03:02:27PM +0800, Richard Zhu wrote:
> > Based on the 6.0-rc1 of the pci/next branch.
> > This series adds the i.MX8MP PCIe support and had been tested on
> > i.MX8MP EVK board when one PCIe NVME device is used.
> >
> > - i.MX8MP PCIe has reversed initial PERST bit value refer to
> i.MX8MQ/i.MX8MM.
> >   Add the PHY PERST explicitly for i.MX8MP PCIe PHY.
> > - Add the i.MX8MP PCIe PHY support in the i.MX8M PCIe PHY driver.
> >   And share as much as possible codes with i.MX8MM PCIe PHY.
> > - Add the i.MX8MP PCIe support in binding document, DTS files, and PCIe
> >   driver.
> >
> > Main changes v2-->v3:
> > - Fix the schema checking error in the PHY dt-binding patch.
> > - Inspired by Lucas, the PLL configurations might not required when
> >   external OSC is used as PCIe referrence clock. It's true. Remove all
> >   the HSIO PLL bit manipulations, and PCIe works fine on i.MX8MP EVK
> board
> >   with one NVME device is used.
> > - Drop the #4 patch of v2, since it had been applied by Rob.
> >
> > Main changes v1-->v2:
> > - It's my fault forget including Vinod, re-send v2 after include Vinod
> >   and linux-phy@xxxxxxxxxxxxxxxxxxx.
> > - List the basements of this patch-set. The branch, codes changes and so on.
> > - Clean up some useless register and bit definitions in #3 patch.
> >
> > Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml |  16
> +++++++--
> > arch/arm64/boot/dts/freescale/imx8mp-evk.dts                 |  53
> +++++++++++++++++++++++++++++
> > arch/arm64/boot/dts/freescale/imx8mp.dtsi                    |  46
> ++++++++++++++++++++++++-
> > drivers/pci/controller/dwc/pci-imx6.c                        |  17
> +++++++++-
> > drivers/phy/freescale/phy-fsl-imx8m-pcie.c                   | 150
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
> ------------------
> > drivers/reset/reset-imx7.c                                   |   1 +
> > 6 files changed, 232 insertions(+), 51 deletions(-)
> >
> >  [PATCH v3 1/6] reset: imx7: Add the iMX8MP PCIe PHY PERST support
> > [PATCH v3 2/6] dt-binding: phy: Add iMX8MP PCIe PHY binding  [PATCH v3
> > 3/6] phy: freescale: imx8m-pcie: Add iMX8MP PCIe PHY  [PATCH v3 4/6]
> > arm64: dts: imx8mp: add the iMX8MP PCIe support  [PATCH v3 5/6] arm64:
> > dts: imx8mp-evk: Add PCIe support  [PATCH v3 6/6] PCI: imx6: Add the
> > iMX8MP PCIe support
> 
> Thanks for this series!
> I've just tested this on our custom i.MX8MP based board with an M.2 SSD and
> it seems to work!
> 
> Therefore please feel free to add:
> 
> Tested-by: Richard Leitner <richard.leitner@xxxxxxxxxxx>
It's great.
Thanks a lot for your kindly help.

Best Regards
Richard Zhu

> 
> I don't know if it's interesting to you, but here's the dmesg output:
> 
> [    0.060405] PCI: CLS 0 bytes, default 64
> [    1.252523] ehci-pci: EHCI PCI platform driver
> [    1.268608] ohci-pci: OHCI PCI platform driver
> [    1.750913] imx6q-pcie 33800000.pcie: host bridge
> /soc@0/pcie@33800000 ranges:
> [    1.758221] imx6q-pcie 33800000.pcie: Parsing ranges property...
> [    1.765479] imx6q-pcie 33800000.pcie:       IO
> 0x001ff80000..0x001ff8ffff -> 0x0000000000
> [    1.773695] imx6q-pcie 33800000.pcie:      MEM
> 0x0018000000..0x001fefffff -> 0x0018000000
> [    1.999331] phy phy-32f00000.pcie-phy.1: phy_power_on was called
> before phy_init
> [    2.007562] imx6q-pcie 33800000.pcie: Using 32 MSI vectors
> [    2.007626] imx6q-pcie 33800000.pcie: iATU unroll: enabled
> [    2.013124] imx6q-pcie 33800000.pcie: iATU regions: 4 ob, 4 ib, align 64K,
> limit 16G
> [    2.120921] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up
> [    2.226533] imx6q-pcie 33800000.pcie: PCIe Gen.3 x1 link up
> [    2.235492] imx6q-pcie 33800000.pcie: Link up, Gen3
> [    2.240380] imx6q-pcie 33800000.pcie: PCIe Gen.3 x1 link up
> [    2.246066] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00
> [    2.252437] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    2.257937] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
> [    2.264134] pci_bus 0000:00: root bus resource [mem
> 0x18000000-0x1fefffff]
> [    2.271019] pci_bus 0000:00: scanning bus
> [    2.271045] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
> [    2.277070] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
> [    2.283349] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff
> pref]
> [    2.293834] pci 0000:00:00.0: supports D1
> [    2.301828] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold
> [    2.308195] pci 0000:00:00.0: PME# disabled
> [    2.308348] pci 0000:00:00.0: vgaarb: pci_notify
> [    2.310109] pci_bus 0000:00: fixups for bus
> [    2.310117] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 0
> [    2.310178] pci_bus 0000:01: scanning bus
> [    2.310244] pci 0000:01:00.0: [126f:2263] type 00 class 0x010802
> [    2.316325] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff
> 64bit]
> [    2.323535] pci 0000:01:00.0: 7.876 Gb/s available PCIe bandwidth,
> limited by 8.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 31.504 Gb/s with
> 8.0 GT/s PCIe x4 link)
> [    2.338620] pci 0000:01:00.0: vgaarb: pci_notify
> [    2.347400] pci_bus 0000:01: fixups for bus
> [    2.347411] pci_bus 0000:01: bus scan returning with max=01
> [    2.347422] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 1
> [    2.347435] pci_bus 0000:00: bus scan returning with max=ff
> [    2.347455] pci 0000:00:00.0: BAR 0: assigned [mem
> 0x18000000-0x180fffff]
> [    2.354259] pci 0000:00:00.0: BAR 14: assigned [mem
> 0x18100000-0x181fffff]
> [    2.361146] pci 0000:00:00.0: BAR 6: assigned [mem
> 0x18200000-0x1820ffff pref]
> [    2.368383] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x18100000-0x18103fff 64bit]
> [    2.375728] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> [    2.380965] pci 0000:00:00.0:   bridge window [mem
> 0x18100000-0x181fffff]
> [    2.387853] pcieport 0000:00:00.0: vgaarb: pci_notify
> [    2.387921] pcieport 0000:00:00.0: assign IRQ: got 206
> [    2.387984] imx6q-pcie 33800000.pcie: msi#0 address_hi 0x0 address_lo
> 0x42587000
> [    2.388095] pcieport 0000:00:00.0: PME: Signaling with IRQ 207
> [    2.394218] pcieport 0000:00:00.0: AER: enabled with IRQ 207
> [    2.399963] pcieport 0000:00:00.0: saving config space at offset 0x0
> (reading 0xabcd16c3)
> [    2.399972] pcieport 0000:00:00.0: saving config space at offset 0x4
> (reading 0x100507)
> [    2.399979] pcieport 0000:00:00.0: saving config space at offset 0x8
> (reading 0x6040001)
> [    2.399985] pcieport 0000:00:00.0: saving config space at offset 0xc
> (reading 0x10000)
> [    2.399992] pcieport 0000:00:00.0: saving config space at offset 0x10
> (reading 0x18000000)
> [    2.399998] pcieport 0000:00:00.0: saving config space at offset 0x14
> (reading 0x0)
> [    2.400005] pcieport 0000:00:00.0: saving config space at offset 0x18
> (reading 0xff0100)
> [    2.400011] pcieport 0000:00:00.0: saving config space at offset 0x1c
> (reading 0xf0)
> [    2.400018] pcieport 0000:00:00.0: saving config space at offset 0x20
> (reading 0x18101810)
> [    2.400024] pcieport 0000:00:00.0: saving config space at offset 0x24
> (reading 0xfff0)
> [    2.400031] pcieport 0000:00:00.0: saving config space at offset 0x28
> (reading 0x0)
> [    2.400037] pcieport 0000:00:00.0: saving config space at offset 0x2c
> (reading 0x0)
> [    2.400043] pcieport 0000:00:00.0: saving config space at offset 0x30
> (reading 0x0)
> [    2.400049] pcieport 0000:00:00.0: saving config space at offset 0x34
> (reading 0x40)
> [    2.400056] pcieport 0000:00:00.0: saving config space at offset 0x38
> (reading 0x0)
> [    2.400062] pcieport 0000:00:00.0: saving config space at offset 0x3c
> (reading 0x201ce)
> [    2.400091] pcieport 0000:00:00.0: vgaarb: pci_notify
> [    2.400192] nvme 0000:01:00.0: vgaarb: pci_notify
> [    2.400230] nvme 0000:01:00.0: assign IRQ: got 206
> [    2.400431] nvme nvme0: pci function 0000:01:00.0
> [    2.405166] nvme 0000:01:00.0: vgaarb: pci_notify
> [    2.405178] nvme 0000:01:00.0: enabling device (0000 -> 0002)
> [    2.410959] nvme 0000:01:00.0: enabling bus mastering
> [    2.411068] imx6q-pcie 33800000.pcie: msi#1 address_hi 0x0 address_lo
> 0x42587000
> [    2.411132] nvme 0000:01:00.0: saving config space at offset 0x0 (reading
> 0x2263126f)
> [    2.411142] nvme 0000:01:00.0: saving config space at offset 0x4 (reading
> 0x100406)
> [    2.411151] nvme 0000:01:00.0: saving config space at offset 0x8 (reading
> 0x1080203)
> [    2.411162] nvme 0000:01:00.0: saving config space at offset 0xc (reading
> 0x0)
> [    2.411172] nvme 0000:01:00.0: saving config space at offset 0x10
> (reading 0x18100004)
> [    2.411184] nvme 0000:01:00.0: saving config space at offset 0x14
> (reading 0x0)
> [    2.411194] nvme 0000:01:00.0: saving config space at offset 0x18
> (reading 0x0)
> [    2.411205] nvme 0000:01:00.0: saving config space at offset 0x1c
> (reading 0x0)
> [    2.411216] nvme 0000:01:00.0: saving config space at offset 0x20
> (reading 0x0)
> [    2.411226] nvme 0000:01:00.0: saving config space at offset 0x24
> (reading 0x0)
> [    2.411237] nvme 0000:01:00.0: saving config space at offset 0x28
> (reading 0x0)
> [    2.411247] nvme 0000:01:00.0: saving config space at offset 0x2c
> (reading 0x22631dee)
> [    2.411258] nvme 0000:01:00.0: saving config space at offset 0x30
> (reading 0x0)
> [    2.411269] nvme 0000:01:00.0: saving config space at offset 0x34
> (reading 0x40)
> [    2.411280] nvme 0000:01:00.0: saving config space at offset 0x38
> (reading 0x0)
> [    2.411290] nvme 0000:01:00.0: saving config space at offset 0x3c
> (reading 0x1ce)
> [    2.415562] nvme nvme0: missing or invalid SUBNQN field.
> [    2.428381] nvme nvme0: allocated 64 MiB host memory buffer.
> [    2.436360] imx6q-pcie 33800000.pcie: msi#1 address_hi 0x0 address_lo
> 0x42587000
> [    2.436415] imx6q-pcie 33800000.pcie: msi#2 address_hi 0x0 address_lo
> 0x42587000
> [    2.436453] imx6q-pcie 33800000.pcie: msi#3 address_hi 0x0 address_lo
> 0x42587000
> [    2.436491] imx6q-pcie 33800000.pcie: msi#4 address_hi 0x0 address_lo
> 0x42587000
> [    2.436529] imx6q-pcie 33800000.pcie: msi#5 address_hi 0x0 address_lo
> 0x42587000
> [    2.442960] nvme nvme0: 4/0/0 default/read/poll queues
> [    2.452699] nvme nvme0: Ignoring bogus Namespace Identifiers
> [    2.459882]  nvme0n1: p1
> 
> regards;rl




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux