mbox series

[v5,00/12] PCI: imx6: Fix\rename\clean up and add lut information for imx95

Message ID 20240528-pci2_upstream-v5-0-750aa7edb8e2@nxp.com (mailing list archive)
Headers show
Series PCI: imx6: Fix\rename\clean up and add lut information for imx95 | expand

Message

Frank Li May 28, 2024, 7:39 p.m. UTC
Fixed 8mp EP mode problem.

imx6 actaully for all imx chips (imx6*, imx7*, imx8*, imx9*). To avoid     
confuse, rename all imx6_* to imx_*, IMX6_* to IMX_*. pci-imx6.c to        
pci-imx.c to avoid confuse.                                                

Using callback to reduce switch case for core reset and refclk.            

Add imx95 iommux and its stream id information.                            

Base on linux-pci/controller/imx

To: Richard Zhu <hongxing.zhu@nxp.com>
To: Lucas Stach <l.stach@pengutronix.de>
To: Lorenzo Pieralisi <lpieralisi@kernel.org>
To: Krzysztof Wilczyński <kw@linux.com>
To: Rob Herring <robh@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>
To: Shawn Guo <shawnguo@kernel.org>
To: Sascha Hauer <s.hauer@pengutronix.de>
To: Pengutronix Kernel Team <kernel@pengutronix.de>
To: Fabio Estevam <festevam@gmail.com>
To: NXP Linux Team <linux-imx@nxp.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
To: Liam Girdwood <lgirdwood@gmail.com>
To: Mark Brown <broonie@kernel.org>
To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
To: Conor Dooley <conor+dt@kernel.org>
Cc: linux-pci@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: bpf@vger.kernel.org
Cc: devicetree@vger.kernel.org
Signed-off-by: Frank Li <Frank.Li@nxp.com>

Changes in v5:                                                             
- Rebase to linux-pci next. fix conflict with gpiod change                    
- Add rob and cornor's review tag                         
- Link to v4: https://lore.kernel.org/r/20240507-pci2_upstream-v4-0-e8c80d874057@nxp.com

Changes in v4:                                                             
- Improve comment message for patch 1 and 2.
- Rework commit message for patch 3 and add mani's review tag
- Remove file rename patch and update maintainer patch
- [PATCH v3 06/11] PCI: imx: Simplify switch-case logic by involve set_ref_clk callback
	remove extra space.
	keep original comments format (wrap at 80 column width)
	update error message "'Failed to enable PCIe REFCLK'"
- PATCH v3 07/11] PCI: imx: Simplify switch-case logic by involve core_reset callback
	keep exact the logic as original code
- Add patch to update comment about workaround ERR010728
- Add patch about help function imx_pcie_match_device()
- Using bus device notify to update LUT information for imx95 to avoid
parse iommu-map and msi-map in driver code.  Bus notify will better and
only update lut when device added.
- split patch call PHY interface function.
- Improve commit message for imx8q. remove local-address dts proptery. and
use standard "range" to convert cpu address to bus address.             
- Check entry in cpu_fix function is too late. Check it at probe
- Link to v3: https://lore.kernel.org/r/20240402-pci2_upstream-v3-0-803414bdb430@nxp.com

Changes in v3:
- Add an EP fixed patch
  PCI: imx6: Fix PCIe link down when i.MX8MM and i.MX8MP PCIe is EP mode
  PCI: imx6: Fix i.MX8MP PCIe EP can not trigger MSI
- Add 8qxp rc support
dt-bing yaml pass binding check
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8  dt_binding_check DT_SCHEMA_FILES=fsl,imx6q-pcie.yaml
  LINT    Documentation/devicetree/bindings
  DTEX    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dts
  CHKDT   Documentation/devicetree/bindings/processed-schema.json
  SCHEMA  Documentation/devicetree/bindings/processed-schema.json
  DTC_CHK Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dtb

- Link to v2: https://lore.kernel.org/r/20240304-pci2_upstream-v2-0-ad07c5eb6d67@nxp.com

Changes in v2:
- remove file to 'pcie-imx.c'
- keep CONFIG unchange.
- Link to v1: https://lore.kernel.org/r/20240227-pci2_upstream-v1-0-b952f8333606@nxp.com

---
Frank Li (8):
      PCI: imx6: Rename imx6_* with imx_*
      PCI: imx6: Introduce SoC specific callbacks for controlling REFCLK
      PCI: imx6: Simplify switch-case logic by involve core_reset callback
      PCI: imx6: Improve comment for workaround ERR010728
      PCI: imx6: Add help function imx_pcie_match_device()
      PCI: imx6: Config look up table(LUT) to support MSI ITS and IOMMU for i.MX95
      PCI: imx6: Consolidate redundant if-checks
      PCI: imx6: Call: Common PHY API to set mode, speed, and submode

Richard Zhu (4):
      PCI: imx6: Fix establish link failure in EP mode for iMX8MM and iMX8MP
      PCI: imx6: Fix i.MX8MP PCIe EP's occasional failure to trigger MSI
      dt-bindings: imx6q-pcie: Add i.MX8Q pcie compatible string
      PCI: imx6: Add i.MX8Q PCIe root complex (RC) support

 .../devicetree/bindings/pci/fsl,imx6q-pcie.yaml    |   16 +
 drivers/pci/controller/dwc/pci-imx6.c              | 1181 ++++++++++++--------
 2 files changed, 730 insertions(+), 467 deletions(-)
---
base-commit: 50d96936b7b1be01bcc7b9ff898191214ee72697
change-id: 20240227-pci2_upstream-0cdd19a15163

Best regards,
---
Frank Li <Frank.Li@nxp.com>

Comments

Bjorn Helgaas May 28, 2024, 10:31 p.m. UTC | #1
On Tue, May 28, 2024 at 03:39:13PM -0400, Frank Li wrote:
> Fixed 8mp EP mode problem.
> 
> imx6 actaully for all imx chips (imx6*, imx7*, imx8*, imx9*). To avoid     
> confuse, rename all imx6_* to imx_*, IMX6_* to IMX_*. pci-imx6.c to        
> pci-imx.c to avoid confuse.                                                
> 
> Using callback to reduce switch case for core reset and refclk.            
> 
> Add imx95 iommux and its stream id information.                            
> 
> Base on linux-pci/controller/imx

This applies cleanly to the pci/controller/gpio branch, which has some
minor rework in pci-imx6.c.

When we apply this, I think we should do it on a a pci/controller/imx6
branch that is based on "main" (v6.10-rc1).

I can resolve the conflicts with pci/controller/gpio when building
pci/next.

Bjorn
Frank Li May 29, 2024, 3 p.m. UTC | #2
On Tue, May 28, 2024 at 05:31:36PM -0500, Bjorn Helgaas wrote:
> On Tue, May 28, 2024 at 03:39:13PM -0400, Frank Li wrote:
> > Fixed 8mp EP mode problem.
> > 
> > imx6 actaully for all imx chips (imx6*, imx7*, imx8*, imx9*). To avoid     
> > confuse, rename all imx6_* to imx_*, IMX6_* to IMX_*. pci-imx6.c to        
> > pci-imx.c to avoid confuse.                                                
> > 
> > Using callback to reduce switch case for core reset and refclk.            
> > 
> > Add imx95 iommux and its stream id information.                            
> > 
> > Base on linux-pci/controller/imx
> 
> This applies cleanly to the pci/controller/gpio branch, which has some
> minor rework in pci-imx6.c.
> 
> When we apply this, I think we should do it on a a pci/controller/imx6
> branch that is based on "main" (v6.10-rc1).
> 
> I can resolve the conflicts with pci/controller/gpio when building
> pci/next.

Sorry, I forget update this. It should be base on linux-pci/next
(e3fca37312892122d73f8c5293c0d1cc8c34500b). 

commit e3fca37312892122d73f8c5293c0d1cc8c34500b (pci/next, linux-pci/next)
Merge: 86e0cd3da71b5 d19a86d584e04
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Tue May 28 12:34:12 2024 -0500

    Merge branch 'pci/controller/tegra194'
    
    - Ensure Tegra194 and Tegra234 inbound ATU entries are 64KB-aligned to
      match the hardware restriction (Jon Hunter)
    
    * pci/controller/tegra194:
      PCI: tegra194: Set EP alignment restriction for inbound ATU


> 
> Bjorn
Bjorn Helgaas May 30, 2024, 5:27 p.m. UTC | #3
On Wed, May 29, 2024 at 11:00:49AM -0400, Frank Li wrote:
> On Tue, May 28, 2024 at 05:31:36PM -0500, Bjorn Helgaas wrote:
> > On Tue, May 28, 2024 at 03:39:13PM -0400, Frank Li wrote:
> ...

> > > Base on linux-pci/controller/imx
> > 
> > This applies cleanly to the pci/controller/gpio branch, which has some
> > minor rework in pci-imx6.c.
> > 
> > When we apply this, I think we should do it on a a pci/controller/imx6
> > branch that is based on "main" (v6.10-rc1).
> > 
> > I can resolve the conflicts with pci/controller/gpio when building
> > pci/next.
> 
> Sorry, I forget update this. It should be base on linux-pci/next
> (e3fca37312892122d73f8c5293c0d1cc8c34500b). 

I prefer patches that are based on -rc1, i.e., the pci/main branch,
not on the pci/next branch.

If a series *requires* functionality that is already on a topic
branch, you can base it on that branch instead of on pci/main.

This series happens to touch some of the same code as
pci/controller/gpio, but it doesn't require those gpio changes, so it
does not need to be based on pci/controller/gpio.

Having this series based on pci/main means that if we update or drop
the gpio branch for some reason, this series will still make sense.

Bjorn
Frank Li May 30, 2024, 5:56 p.m. UTC | #4
On Thu, May 30, 2024 at 12:27:49PM -0500, Bjorn Helgaas wrote:
> On Wed, May 29, 2024 at 11:00:49AM -0400, Frank Li wrote:
> > On Tue, May 28, 2024 at 05:31:36PM -0500, Bjorn Helgaas wrote:
> > > On Tue, May 28, 2024 at 03:39:13PM -0400, Frank Li wrote:
> > ...
> 
> > > > Base on linux-pci/controller/imx
> > > 
> > > This applies cleanly to the pci/controller/gpio branch, which has some
> > > minor rework in pci-imx6.c.
> > > 
> > > When we apply this, I think we should do it on a a pci/controller/imx6
> > > branch that is based on "main" (v6.10-rc1).
> > > 
> > > I can resolve the conflicts with pci/controller/gpio when building
> > > pci/next.
> > 
> > Sorry, I forget update this. It should be base on linux-pci/next
> > (e3fca37312892122d73f8c5293c0d1cc8c34500b). 
> 
> I prefer patches that are based on -rc1, i.e., the pci/main branch,
> not on the pci/next branch.
> 
> If a series *requires* functionality that is already on a topic
> branch, you can base it on that branch instead of on pci/main.
> 
> This series happens to touch some of the same code as
> pci/controller/gpio, but it doesn't require those gpio changes, so it
> does not need to be based on pci/controller/gpio.
> 
> Having this series based on pci/main means that if we update or drop
> the gpio branch for some reason, this series will still make sense.

v4 should cleanly apply to pci/main. It is not big deal. Do you have any
additional comments for this series?

We still have some other works (such as simply suspend/resume by using
common PME turn off method), which base on this series.

Frank

> 
> Bjorn
Frank Li June 6, 2024, 9:24 p.m. UTC | #5
On Tue, May 28, 2024 at 03:39:13PM -0400, Frank Li wrote:
> Fixed 8mp EP mode problem.


hi Manivannan:

	Do you have any additional comments except for the patch
Config look up table(LUT) to support MSI ITS and IOMMU for i.MX95?


Frank Li

> 
> imx6 actaully for all imx chips (imx6*, imx7*, imx8*, imx9*). To avoid     
> confuse, rename all imx6_* to imx_*, IMX6_* to IMX_*. pci-imx6.c to        
> pci-imx.c to avoid confuse.                                                
> 
> Using callback to reduce switch case for core reset and refclk.            
> 
> Add imx95 iommux and its stream id information.                            
> 
> Base on linux-pci/controller/imx
> 
> To: Richard Zhu <hongxing.zhu@nxp.com>
> To: Lucas Stach <l.stach@pengutronix.de>
> To: Lorenzo Pieralisi <lpieralisi@kernel.org>
> To: Krzysztof Wilczyński <kw@linux.com>
> To: Rob Herring <robh@kernel.org>
> To: Bjorn Helgaas <bhelgaas@google.com>
> To: Shawn Guo <shawnguo@kernel.org>
> To: Sascha Hauer <s.hauer@pengutronix.de>
> To: Pengutronix Kernel Team <kernel@pengutronix.de>
> To: Fabio Estevam <festevam@gmail.com>
> To: NXP Linux Team <linux-imx@nxp.com>
> To: Philipp Zabel <p.zabel@pengutronix.de>
> To: Liam Girdwood <lgirdwood@gmail.com>
> To: Mark Brown <broonie@kernel.org>
> To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> To: Conor Dooley <conor+dt@kernel.org>
> Cc: linux-pci@vger.kernel.org
> Cc: imx@lists.linux.dev
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> Cc: bpf@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> 
> Changes in v5:                                                             
> - Rebase to linux-pci next. fix conflict with gpiod change                    
> - Add rob and cornor's review tag                         
> - Link to v4: https://lore.kernel.org/r/20240507-pci2_upstream-v4-0-e8c80d874057@nxp.com
> 
> Changes in v4:                                                             
> - Improve comment message for patch 1 and 2.
> - Rework commit message for patch 3 and add mani's review tag
> - Remove file rename patch and update maintainer patch
> - [PATCH v3 06/11] PCI: imx: Simplify switch-case logic by involve set_ref_clk callback
> 	remove extra space.
> 	keep original comments format (wrap at 80 column width)
> 	update error message "'Failed to enable PCIe REFCLK'"
> - PATCH v3 07/11] PCI: imx: Simplify switch-case logic by involve core_reset callback
> 	keep exact the logic as original code
> - Add patch to update comment about workaround ERR010728
> - Add patch about help function imx_pcie_match_device()
> - Using bus device notify to update LUT information for imx95 to avoid
> parse iommu-map and msi-map in driver code.  Bus notify will better and
> only update lut when device added.
> - split patch call PHY interface function.
> - Improve commit message for imx8q. remove local-address dts proptery. and
> use standard "range" to convert cpu address to bus address.             
> - Check entry in cpu_fix function is too late. Check it at probe
> - Link to v3: https://lore.kernel.org/r/20240402-pci2_upstream-v3-0-803414bdb430@nxp.com
> 
> Changes in v3:
> - Add an EP fixed patch
>   PCI: imx6: Fix PCIe link down when i.MX8MM and i.MX8MP PCIe is EP mode
>   PCI: imx6: Fix i.MX8MP PCIe EP can not trigger MSI
> - Add 8qxp rc support
> dt-bing yaml pass binding check
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8  dt_binding_check DT_SCHEMA_FILES=fsl,imx6q-pcie.yaml
>   LINT    Documentation/devicetree/bindings
>   DTEX    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dts
>   CHKDT   Documentation/devicetree/bindings/processed-schema.json
>   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
>   DTC_CHK Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dtb
> 
> - Link to v2: https://lore.kernel.org/r/20240304-pci2_upstream-v2-0-ad07c5eb6d67@nxp.com
> 
> Changes in v2:
> - remove file to 'pcie-imx.c'
> - keep CONFIG unchange.
> - Link to v1: https://lore.kernel.org/r/20240227-pci2_upstream-v1-0-b952f8333606@nxp.com
> 
> ---
> Frank Li (8):
>       PCI: imx6: Rename imx6_* with imx_*
>       PCI: imx6: Introduce SoC specific callbacks for controlling REFCLK
>       PCI: imx6: Simplify switch-case logic by involve core_reset callback
>       PCI: imx6: Improve comment for workaround ERR010728
>       PCI: imx6: Add help function imx_pcie_match_device()
>       PCI: imx6: Config look up table(LUT) to support MSI ITS and IOMMU for i.MX95
>       PCI: imx6: Consolidate redundant if-checks
>       PCI: imx6: Call: Common PHY API to set mode, speed, and submode
> 
> Richard Zhu (4):
>       PCI: imx6: Fix establish link failure in EP mode for iMX8MM and iMX8MP
>       PCI: imx6: Fix i.MX8MP PCIe EP's occasional failure to trigger MSI
>       dt-bindings: imx6q-pcie: Add i.MX8Q pcie compatible string
>       PCI: imx6: Add i.MX8Q PCIe root complex (RC) support
> 
>  .../devicetree/bindings/pci/fsl,imx6q-pcie.yaml    |   16 +
>  drivers/pci/controller/dwc/pci-imx6.c              | 1181 ++++++++++++--------
>  2 files changed, 730 insertions(+), 467 deletions(-)
> ---
> base-commit: 50d96936b7b1be01bcc7b9ff898191214ee72697
> change-id: 20240227-pci2_upstream-0cdd19a15163
> 
> Best regards,
> ---
> Frank Li <Frank.Li@nxp.com>
>