mbox series

[v11,0/20] Refactoring Microchip PCIe driver and add StarFive PCIe

Message ID 20231115114912.71448-1-minda.chen@starfivetech.com
Headers show
Series Refactoring Microchip PCIe driver and add StarFive PCIe | expand

Message

Minda Chen Nov. 15, 2023, 11:48 a.m. UTC
This patchset final purpose is add PCIe driver for StarFive JH7110 SoC.
JH7110 using PLDA XpressRICH PCIe IP. Microchip PolarFire Using the
same IP and have commit their codes, which are mixed with PLDA
controller codes and Microchip platform codes.

For re-use the PLDA controller codes, I request refactoring microchip
codes, move PLDA common codes to PLDA files.
Desigware and Cadence is good example for refactoring codes.

----------------------------------------------------------
The refactoring patches total number is 16,(patch 1-16)
which do NOT contain changing logic of codes.

These patches just contain three type basic operations.
(rename, modify codes to support starfive platform, and moving to common file)
If these patched are all be reviewed. They can be accepted first.

Refactoring patches can be devided to different groups
1. (patch 1- 3 is the prepare work of refactoring)
patch1 is move PLDA XpressRICH PCIe host common properties dt-binding
       docs from microchip,pcie-host.yaml
patch2 is move PolarFire codes to PLDA directory.
patch3 is move PLDA IP register macros to plda-pcie.h

2. (patch4 - 6 is processing and re-use PCIe host instance)
patch4 is add bridge_addr field to PCIe host instance.
patch5 is rename data structure in microchip codes.
patch6 is moving two data structures to head file

3. (patch 7 - 9 are for re-use two PCIe setup function)
patch7 is rename two setup functions in microchip codes, prepare to move
to common file.
patch8 is change the arguments of plda_pcie_setup_iomems()
patch9 is move the two setup functions to common file pcie-plda-host.c

4.(patch 10 - 16 are for re-use interupt processing codes)
patch10 is rename the IRQ related functions, prepare to move to
pcie-plda-host.c
patch 11 - 15 is modify the interrupt event codes, preparing for support starfive
and microchip two platforms.
patch16 is move IRQ related functions to pcie-plda-host.c

------------------------------------------------------------
The remainder patches (patch 17 -20) are not refactoring patch.
They are for adding StarFive codes and dont modify the microchip's
codes.

patch17 is Add PLDA event interrupt codes and host init/deinit functions.
patch18 is add StarFive JH7110 PCIe dt-binding doc.
patch19 is add StarFive JH7110 Soc PCIe codes.
patch20 is Starfive dts config

This patchset is base on v6.7-rc1

previous version:
v6:https://patchwork.kernel.org/project/linux-pci/cover/20230915102243.59775-1-minda.chen@starfivetech.com/
v7:https://patchwork.kernel.org/project/linux-pci/cover/20230927100802.46620-1-minda.chen@starfivetech.com/
v8:https://patchwork.kernel.org/project/linux-pci/cover/20231011110514.107528-1-minda.chen@starfivetech.com/
v9:https://patchwork.kernel.org/project/linux-pci/cover/20231020104341.63157-1-minda.chen@starfivetech.com/
v10:https://patchwork.kernel.org/project/linux-pci/cover/20231031115430.113586-1-minda.chen@starfivetech.com/

change:
  v11:
     check and modify some commit messages again.
     All the codes are the same with v10.   

  v10:
   All the commit message set to fit in 75 columns.
   All the codes fit in less than 80 colunms.
   patch 14: 
	Commit message changes suggested by Conor.
   patch 19:
        Add 100 ms delay macro to pci.h
	generic phy pointer related codes moving to pcie-starfive.c
	This patch Change pcie-starfive only, bus_ops move to patch 16.
	Some Codes changes suggested by Bjorn.

  v9:
   v8 patch 10 squash to v9 patch 12, v8 patch 18 squash to v9 patch 16.
   patch 4 - 16: Add new review tags and add more accurate commit messages.
   patch 17: move the plda_pcie_host_init/deinit from patch 19. Make
             plda driver become to whole driver.

  v8:
    The patch description in cover-letter has been changed.

    v7 patch 4 split to v8 patch 4 - 6.
        (It is patches about re-use pcie host data structure, new patches just contain one
	function modification. It is more reguluar and easier to review).

    patch 7- 9: modify the commit messages and add reason of
		modifcation.
    patch10- 16 :
             Add review tag and add more commit messages to declear the
	     reason of modifying the codes.
    patch17: plda_handle_events() using bit mask macro. The function are
	     easier to read.

  v7:
    patch17: fix the build warning.
    patch19: Some format changes (Emil's comment)
    patch20: change the pcie node sequences by alphabetical
             delete the "interupt-parent" in pcie node.

  v6:
    v5 patch 4 split to patch 4 -9. New patches just contain one function modification. It is more reguluar.

    patch 9: Just move the two setup functions only
    patch 19 : draw a graph of PLDA local register, make it easier to
               review the codes.
    v5 patch 7 split to patch 10- 16. Each patch just contain one
                function modification. It is more regular.
    patch 10: rename IRQ related functions.
    patch 11 - 15 : modify the events codes, total five patch.
    patch 16: move IRQ related functions to pcie-plda-host.c
    patch 19- 20 using "linux,pci-domain" dts setting.

Minda Chen (20):
  dt-bindings: PCI: Add PLDA XpressRICH PCIe host common properties
  PCI: microchip: Move pcie-microchip-host.c to plda directory
  PCI: microchip: Move PLDA IP register macros to pcie-plda.h
  PCI: microchip: Add bridge_addr field to struct mc_pcie
  PCI: microchip: Rename two PCIe data structures
  PCI: microchip: Move PCIe host data structures to plda-pcie.h
  PCI: microchip: Rename two setup functions
  PCI: microchip: Change the argument of plda_pcie_setup_iomems()
  PCI: microchip: Move setup functions to pcie-plda-host.c
  PCI: microchip: Rename interrupt related functions
  PCI: microchip: Add num_events field to struct plda_pcie_rp
  PCI: microchip: Add request_event_irq() callback function
  PCI: microchip: Add INTx and MSI event num to struct plda_event
  PCI: microchip: Add get_events() callback function
  PCI: microchip: Add event IRQ domain ops to struct plda_event
  PCI: microchip: Move IRQ functions to pcie-plda-host.c
  PCI: plda: Add event interrupt codes and host init/deinit functions
  dt-bindings: PCI: Add StarFive JH7110 PCIe controller
  PCI: starfive: Add JH7110 PCIe controller
  riscv: dts: starfive: add PCIe dts configuration for JH7110

 .../bindings/pci/microchip,pcie-host.yaml     |  55 +-
 .../pci/plda,xpressrich3-axi-common.yaml      |  75 ++
 .../bindings/pci/starfive,jh7110-pcie.yaml    | 120 ++++
 MAINTAINERS                                   |  19 +-
 .../jh7110-starfive-visionfive-2.dtsi         |  64 ++
 arch/riscv/boot/dts/starfive/jh7110.dtsi      |  86 +++
 drivers/pci/controller/Kconfig                |   9 +-
 drivers/pci/controller/Makefile               |   2 +-
 drivers/pci/controller/plda/Kconfig           |  29 +
 drivers/pci/controller/plda/Makefile          |   4 +
 .../{ => plda}/pcie-microchip-host.c          | 602 ++--------------
 drivers/pci/controller/plda/pcie-plda-host.c  | 657 ++++++++++++++++++
 drivers/pci/controller/plda/pcie-plda.h       | 266 +++++++
 drivers/pci/controller/plda/pcie-starfive.c   | 460 ++++++++++++
 drivers/pci/pci.h                             |   7 +
 15 files changed, 1851 insertions(+), 604 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
 create mode 100644 Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
 create mode 100644 drivers/pci/controller/plda/Kconfig
 create mode 100644 drivers/pci/controller/plda/Makefile
 rename drivers/pci/controller/{ => plda}/pcie-microchip-host.c (54%)
 create mode 100644 drivers/pci/controller/plda/pcie-plda-host.c
 create mode 100644 drivers/pci/controller/plda/pcie-plda.h
 create mode 100644 drivers/pci/controller/plda/pcie-starfive.c


base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86

Comments

Damian Tometzki Nov. 29, 2023, 6:39 a.m. UTC | #1
Hello Minda,

i tried this Patchset on Linux-6.6.3 but boot with nvme doesnt work. Linux doesnt find
/root partition /dev/nvme0n1p4. 
I dont know if it has anything to do with this patchset ?
Best regards
Damian

On Wed, 15. Nov 19:48, Minda Chen wrote:
> This patchset final purpose is add PCIe driver for StarFive JH7110 SoC.
> JH7110 using PLDA XpressRICH PCIe IP. Microchip PolarFire Using the
> same IP and have commit their codes, which are mixed with PLDA
> controller codes and Microchip platform codes.
> 
> For re-use the PLDA controller codes, I request refactoring microchip
> codes, move PLDA common codes to PLDA files.
> Desigware and Cadence is good example for refactoring codes.
> 
> ----------------------------------------------------------
> The refactoring patches total number is 16,(patch 1-16)
> which do NOT contain changing logic of codes.
> 
> These patches just contain three type basic operations.
> (rename, modify codes to support starfive platform, and moving to common file)
> If these patched are all be reviewed. They can be accepted first.
> 
> Refactoring patches can be devided to different groups
> 1. (patch 1- 3 is the prepare work of refactoring)
> patch1 is move PLDA XpressRICH PCIe host common properties dt-binding
>        docs from microchip,pcie-host.yaml
> patch2 is move PolarFire codes to PLDA directory.
> patch3 is move PLDA IP register macros to plda-pcie.h
> 
> 2. (patch4 - 6 is processing and re-use PCIe host instance)
> patch4 is add bridge_addr field to PCIe host instance.
> patch5 is rename data structure in microchip codes.
> patch6 is moving two data structures to head file
> 
> 3. (patch 7 - 9 are for re-use two PCIe setup function)
> patch7 is rename two setup functions in microchip codes, prepare to move
> to common file.
> patch8 is change the arguments of plda_pcie_setup_iomems()
> patch9 is move the two setup functions to common file pcie-plda-host.c
> 
> 4.(patch 10 - 16 are for re-use interupt processing codes)
> patch10 is rename the IRQ related functions, prepare to move to
> pcie-plda-host.c
> patch 11 - 15 is modify the interrupt event codes, preparing for support starfive
> and microchip two platforms.
> patch16 is move IRQ related functions to pcie-plda-host.c
> 
> ------------------------------------------------------------
> The remainder patches (patch 17 -20) are not refactoring patch.
> They are for adding StarFive codes and dont modify the microchip's
> codes.
> 
> patch17 is Add PLDA event interrupt codes and host init/deinit functions.
> patch18 is add StarFive JH7110 PCIe dt-binding doc.
> patch19 is add StarFive JH7110 Soc PCIe codes.
> patch20 is Starfive dts config
> 
> This patchset is base on v6.7-rc1
> 
> previous version:
> v6:https://patchwork.kernel.org/project/linux-pci/cover/20230915102243.59775-1-minda.chen@starfivetech.com/
> v7:https://patchwork.kernel.org/project/linux-pci/cover/20230927100802.46620-1-minda.chen@starfivetech.com/
> v8:https://patchwork.kernel.org/project/linux-pci/cover/20231011110514.107528-1-minda.chen@starfivetech.com/
> v9:https://patchwork.kernel.org/project/linux-pci/cover/20231020104341.63157-1-minda.chen@starfivetech.com/
> v10:https://patchwork.kernel.org/project/linux-pci/cover/20231031115430.113586-1-minda.chen@starfivetech.com/
> 
> change:
>   v11:
>      check and modify some commit messages again.
>      All the codes are the same with v10.   
> 
>   v10:
>    All the commit message set to fit in 75 columns.
>    All the codes fit in less than 80 colunms.
>    patch 14: 
> 	Commit message changes suggested by Conor.
>    patch 19:
>         Add 100 ms delay macro to pci.h
> 	generic phy pointer related codes moving to pcie-starfive.c
> 	This patch Change pcie-starfive only, bus_ops move to patch 16.
> 	Some Codes changes suggested by Bjorn.
> 
>   v9:
>    v8 patch 10 squash to v9 patch 12, v8 patch 18 squash to v9 patch 16.
>    patch 4 - 16: Add new review tags and add more accurate commit messages.
>    patch 17: move the plda_pcie_host_init/deinit from patch 19. Make
>              plda driver become to whole driver.
> 
>   v8:
>     The patch description in cover-letter has been changed.
> 
>     v7 patch 4 split to v8 patch 4 - 6.
>         (It is patches about re-use pcie host data structure, new patches just contain one
> 	function modification. It is more reguluar and easier to review).
> 
>     patch 7- 9: modify the commit messages and add reason of
> 		modifcation.
>     patch10- 16 :
>              Add review tag and add more commit messages to declear the
> 	     reason of modifying the codes.
>     patch17: plda_handle_events() using bit mask macro. The function are
> 	     easier to read.
> 
>   v7:
>     patch17: fix the build warning.
>     patch19: Some format changes (Emil's comment)
>     patch20: change the pcie node sequences by alphabetical
>              delete the "interupt-parent" in pcie node.
> 
>   v6:
>     v5 patch 4 split to patch 4 -9. New patches just contain one function modification. It is more reguluar.
> 
>     patch 9: Just move the two setup functions only
>     patch 19 : draw a graph of PLDA local register, make it easier to
>                review the codes.
>     v5 patch 7 split to patch 10- 16. Each patch just contain one
>                 function modification. It is more regular.
>     patch 10: rename IRQ related functions.
>     patch 11 - 15 : modify the events codes, total five patch.
>     patch 16: move IRQ related functions to pcie-plda-host.c
>     patch 19- 20 using "linux,pci-domain" dts setting.
> 
> Minda Chen (20):
>   dt-bindings: PCI: Add PLDA XpressRICH PCIe host common properties
>   PCI: microchip: Move pcie-microchip-host.c to plda directory
>   PCI: microchip: Move PLDA IP register macros to pcie-plda.h
>   PCI: microchip: Add bridge_addr field to struct mc_pcie
>   PCI: microchip: Rename two PCIe data structures
>   PCI: microchip: Move PCIe host data structures to plda-pcie.h
>   PCI: microchip: Rename two setup functions
>   PCI: microchip: Change the argument of plda_pcie_setup_iomems()
>   PCI: microchip: Move setup functions to pcie-plda-host.c
>   PCI: microchip: Rename interrupt related functions
>   PCI: microchip: Add num_events field to struct plda_pcie_rp
>   PCI: microchip: Add request_event_irq() callback function
>   PCI: microchip: Add INTx and MSI event num to struct plda_event
>   PCI: microchip: Add get_events() callback function
>   PCI: microchip: Add event IRQ domain ops to struct plda_event
>   PCI: microchip: Move IRQ functions to pcie-plda-host.c
>   PCI: plda: Add event interrupt codes and host init/deinit functions
>   dt-bindings: PCI: Add StarFive JH7110 PCIe controller
>   PCI: starfive: Add JH7110 PCIe controller
>   riscv: dts: starfive: add PCIe dts configuration for JH7110
> 
>  .../bindings/pci/microchip,pcie-host.yaml     |  55 +-
>  .../pci/plda,xpressrich3-axi-common.yaml      |  75 ++
>  .../bindings/pci/starfive,jh7110-pcie.yaml    | 120 ++++
>  MAINTAINERS                                   |  19 +-
>  .../jh7110-starfive-visionfive-2.dtsi         |  64 ++
>  arch/riscv/boot/dts/starfive/jh7110.dtsi      |  86 +++
>  drivers/pci/controller/Kconfig                |   9 +-
>  drivers/pci/controller/Makefile               |   2 +-
>  drivers/pci/controller/plda/Kconfig           |  29 +
>  drivers/pci/controller/plda/Makefile          |   4 +
>  .../{ => plda}/pcie-microchip-host.c          | 602 ++--------------
>  drivers/pci/controller/plda/pcie-plda-host.c  | 657 ++++++++++++++++++
>  drivers/pci/controller/plda/pcie-plda.h       | 266 +++++++
>  drivers/pci/controller/plda/pcie-starfive.c   | 460 ++++++++++++
>  drivers/pci/pci.h                             |   7 +
>  15 files changed, 1851 insertions(+), 604 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
>  create mode 100644 Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
>  create mode 100644 drivers/pci/controller/plda/Kconfig
>  create mode 100644 drivers/pci/controller/plda/Makefile
>  rename drivers/pci/controller/{ => plda}/pcie-microchip-host.c (54%)
>  create mode 100644 drivers/pci/controller/plda/pcie-plda-host.c
>  create mode 100644 drivers/pci/controller/plda/pcie-plda.h
>  create mode 100644 drivers/pci/controller/plda/pcie-starfive.c
> 
> 
> base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86
> -- 
> 2.17.1
>
Damian Tometzki Nov. 29, 2023, 11:32 a.m. UTC | #2
On Wed, 29. Nov 07:39, Damian Tometzki wrote:
> Hello Minda,
> 
> i tried this Patchset on Linux-6.6.3 but boot with nvme doesnt work. Linux doesnt find
> /root partition /dev/nvme0n1p4. 
> I dont know if it has anything to do with this patchset ?
> Best regards
> Damian
Hi,
some additional information: 
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
[   11.097653] /soc/pcie@940000000: Failed to get clk index: 1 ret: -517
[   11.104147] pcie-starfive 940000000.pcie: error -ENODEV: failed to get pcie clocks
[   11.111981] /soc/pcie@9c0000000: Failed to get clk index: 1 ret: -517
[   11.118451] pcie-starfive 9c0000000.pcie: error -ENODEV: failed to get pcie clocks
[   11.126371] platform 17020000.pinctrl: deferred probe pending
[   11.132145] platform 16010000.mmc: deferred probe pending
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.

Damian

> 
> On Wed, 15. Nov 19:48, Minda Chen wrote:
> > This patchset final purpose is add PCIe driver for StarFive JH7110 SoC.
> > JH7110 using PLDA XpressRICH PCIe IP. Microchip PolarFire Using the
> > same IP and have commit their codes, which are mixed with PLDA
> > controller codes and Microchip platform codes.
> > 
> > For re-use the PLDA controller codes, I request refactoring microchip
> > codes, move PLDA common codes to PLDA files.
> > Desigware and Cadence is good example for refactoring codes.
> > 
> > ----------------------------------------------------------
> > The refactoring patches total number is 16,(patch 1-16)
> > which do NOT contain changing logic of codes.
> > 
> > These patches just contain three type basic operations.
> > (rename, modify codes to support starfive platform, and moving to common file)
> > If these patched are all be reviewed. They can be accepted first.
> > 
> > Refactoring patches can be devided to different groups
> > 1. (patch 1- 3 is the prepare work of refactoring)
> > patch1 is move PLDA XpressRICH PCIe host common properties dt-binding
> >        docs from microchip,pcie-host.yaml
> > patch2 is move PolarFire codes to PLDA directory.
> > patch3 is move PLDA IP register macros to plda-pcie.h
> > 
> > 2. (patch4 - 6 is processing and re-use PCIe host instance)
> > patch4 is add bridge_addr field to PCIe host instance.
> > patch5 is rename data structure in microchip codes.
> > patch6 is moving two data structures to head file
> > 
> > 3. (patch 7 - 9 are for re-use two PCIe setup function)
> > patch7 is rename two setup functions in microchip codes, prepare to move
> > to common file.
> > patch8 is change the arguments of plda_pcie_setup_iomems()
> > patch9 is move the two setup functions to common file pcie-plda-host.c
> > 
> > 4.(patch 10 - 16 are for re-use interupt processing codes)
> > patch10 is rename the IRQ related functions, prepare to move to
> > pcie-plda-host.c
> > patch 11 - 15 is modify the interrupt event codes, preparing for support starfive
> > and microchip two platforms.
> > patch16 is move IRQ related functions to pcie-plda-host.c
> > 
> > ------------------------------------------------------------
> > The remainder patches (patch 17 -20) are not refactoring patch.
> > They are for adding StarFive codes and dont modify the microchip's
> > codes.
> > 
> > patch17 is Add PLDA event interrupt codes and host init/deinit functions.
> > patch18 is add StarFive JH7110 PCIe dt-binding doc.
> > patch19 is add StarFive JH7110 Soc PCIe codes.
> > patch20 is Starfive dts config
> > 
> > This patchset is base on v6.7-rc1
> > 
> > previous version:
> > v6:https://patchwork.kernel.org/project/linux-pci/cover/20230915102243.59775-1-minda.chen@starfivetech.com/
> > v7:https://patchwork.kernel.org/project/linux-pci/cover/20230927100802.46620-1-minda.chen@starfivetech.com/
> > v8:https://patchwork.kernel.org/project/linux-pci/cover/20231011110514.107528-1-minda.chen@starfivetech.com/
> > v9:https://patchwork.kernel.org/project/linux-pci/cover/20231020104341.63157-1-minda.chen@starfivetech.com/
> > v10:https://patchwork.kernel.org/project/linux-pci/cover/20231031115430.113586-1-minda.chen@starfivetech.com/
> > 
> > change:
> >   v11:
> >      check and modify some commit messages again.
> >      All the codes are the same with v10.   
> > 
> >   v10:
> >    All the commit message set to fit in 75 columns.
> >    All the codes fit in less than 80 colunms.
> >    patch 14: 
> > 	Commit message changes suggested by Conor.
> >    patch 19:
> >         Add 100 ms delay macro to pci.h
> > 	generic phy pointer related codes moving to pcie-starfive.c
> > 	This patch Change pcie-starfive only, bus_ops move to patch 16.
> > 	Some Codes changes suggested by Bjorn.
> > 
> >   v9:
> >    v8 patch 10 squash to v9 patch 12, v8 patch 18 squash to v9 patch 16.
> >    patch 4 - 16: Add new review tags and add more accurate commit messages.
> >    patch 17: move the plda_pcie_host_init/deinit from patch 19. Make
> >              plda driver become to whole driver.
> > 
> >   v8:
> >     The patch description in cover-letter has been changed.
> > 
> >     v7 patch 4 split to v8 patch 4 - 6.
> >         (It is patches about re-use pcie host data structure, new patches just contain one
> > 	function modification. It is more reguluar and easier to review).
> > 
> >     patch 7- 9: modify the commit messages and add reason of
> > 		modifcation.
> >     patch10- 16 :
> >              Add review tag and add more commit messages to declear the
> > 	     reason of modifying the codes.
> >     patch17: plda_handle_events() using bit mask macro. The function are
> > 	     easier to read.
> > 
> >   v7:
> >     patch17: fix the build warning.
> >     patch19: Some format changes (Emil's comment)
> >     patch20: change the pcie node sequences by alphabetical
> >              delete the "interupt-parent" in pcie node.
> > 
> >   v6:
> >     v5 patch 4 split to patch 4 -9. New patches just contain one function modification. It is more reguluar.
> > 
> >     patch 9: Just move the two setup functions only
> >     patch 19 : draw a graph of PLDA local register, make it easier to
> >                review the codes.
> >     v5 patch 7 split to patch 10- 16. Each patch just contain one
> >                 function modification. It is more regular.
> >     patch 10: rename IRQ related functions.
> >     patch 11 - 15 : modify the events codes, total five patch.
> >     patch 16: move IRQ related functions to pcie-plda-host.c
> >     patch 19- 20 using "linux,pci-domain" dts setting.
> > 
> > Minda Chen (20):
> >   dt-bindings: PCI: Add PLDA XpressRICH PCIe host common properties
> >   PCI: microchip: Move pcie-microchip-host.c to plda directory
> >   PCI: microchip: Move PLDA IP register macros to pcie-plda.h
> >   PCI: microchip: Add bridge_addr field to struct mc_pcie
> >   PCI: microchip: Rename two PCIe data structures
> >   PCI: microchip: Move PCIe host data structures to plda-pcie.h
> >   PCI: microchip: Rename two setup functions
> >   PCI: microchip: Change the argument of plda_pcie_setup_iomems()
> >   PCI: microchip: Move setup functions to pcie-plda-host.c
> >   PCI: microchip: Rename interrupt related functions
> >   PCI: microchip: Add num_events field to struct plda_pcie_rp
> >   PCI: microchip: Add request_event_irq() callback function
> >   PCI: microchip: Add INTx and MSI event num to struct plda_event
> >   PCI: microchip: Add get_events() callback function
> >   PCI: microchip: Add event IRQ domain ops to struct plda_event
> >   PCI: microchip: Move IRQ functions to pcie-plda-host.c
> >   PCI: plda: Add event interrupt codes and host init/deinit functions
> >   dt-bindings: PCI: Add StarFive JH7110 PCIe controller
> >   PCI: starfive: Add JH7110 PCIe controller
> >   riscv: dts: starfive: add PCIe dts configuration for JH7110
> > 
> >  .../bindings/pci/microchip,pcie-host.yaml     |  55 +-
> >  .../pci/plda,xpressrich3-axi-common.yaml      |  75 ++
> >  .../bindings/pci/starfive,jh7110-pcie.yaml    | 120 ++++
> >  MAINTAINERS                                   |  19 +-
> >  .../jh7110-starfive-visionfive-2.dtsi         |  64 ++
> >  arch/riscv/boot/dts/starfive/jh7110.dtsi      |  86 +++
> >  drivers/pci/controller/Kconfig                |   9 +-
> >  drivers/pci/controller/Makefile               |   2 +-
> >  drivers/pci/controller/plda/Kconfig           |  29 +
> >  drivers/pci/controller/plda/Makefile          |   4 +
> >  .../{ => plda}/pcie-microchip-host.c          | 602 ++--------------
> >  drivers/pci/controller/plda/pcie-plda-host.c  | 657 ++++++++++++++++++
> >  drivers/pci/controller/plda/pcie-plda.h       | 266 +++++++
> >  drivers/pci/controller/plda/pcie-starfive.c   | 460 ++++++++++++
> >  drivers/pci/pci.h                             |   7 +
> >  15 files changed, 1851 insertions(+), 604 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
> >  create mode 100644 Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
> >  create mode 100644 drivers/pci/controller/plda/Kconfig
> >  create mode 100644 drivers/pci/controller/plda/Makefile
> >  rename drivers/pci/controller/{ => plda}/pcie-microchip-host.c (54%)
> >  create mode 100644 drivers/pci/controller/plda/pcie-plda-host.c
> >  create mode 100644 drivers/pci/controller/plda/pcie-plda.h
> >  create mode 100644 drivers/pci/controller/plda/pcie-starfive.c
> > 
> > 
> > base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86
> > -- 
> > 2.17.1
> >
Minda Chen Dec. 2, 2023, 1:17 p.m. UTC | #3
On 2023/12/1 23:32, Damian Tometzki wrote:
> On Fri, 01. Dec 15:15, Minda Chen wrote:
>> 
>> 
>> On 2023/11/29 19:32, Damian Tometzki wrote:
>> > On Wed, 29. Nov 07:39, Damian Tometzki wrote:
>> >> Hello Minda,
>> >> 
>> >> i tried this Patchset on Linux-6.6.3 but boot with nvme doesnt work. Linux doesnt find
>> >> /root partition /dev/nvme0n1p4. 
>> >> I dont know if it has anything to do with this patchset ?
>> >> Best regards
>> >> Damian
>> > Hi,
>> > some additional information: 
>> > Begin: Running /scripts/local-block ... done.
>> > Begin: Running /scripts/local-block ... done.
>> > [   11.097653] /soc/pcie@940000000: Failed to get clk index: 1 ret: -517
>> > [   11.104147] pcie-starfive 940000000.pcie: error -ENODEV: failed to get pcie clocks
>> > [   11.111981] /soc/pcie@9c0000000: Failed to get clk index: 1 ret: -517
>> > [   11.118451] pcie-starfive 9c0000000.pcie: error -ENODEV: failed to get pcie clocks
>> > [   11.126371] platform 17020000.pinctrl: deferred probe pending
>> > [   11.132145] platform 16010000.mmc: deferred probe pending
>> > Begin: Running /scripts/local-block ... done.
>> > Begin: Running /scripts/local-block ... done.
>> > 
>> > Damian
>> > 
>> It is get stg clk failed. Did you enable CONFIG_CLK_STARFIVE_JH7110_STG=y?
> Hi,
> 
> it is now a little bit better now i get: 
> Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
> Begin: Running /scripts/local-premount ... done.
> Begin: Waiting for root file system ... Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> [   13.916056] platform 940000000.pcie: deferred probe pending
> [   13.921668] platform 9c0000000.pcie: deferred probe pending
> [   13.927259] platform 16010000.mmc: deferred probe pending
> Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> Begin: Running /scripts/local-block ... done.
> 
> 
Hi 
Please check this configuation.
CONFIG_PHY_STARFIVE_JH7110_PCIE=y
CONFIG_PINCTRL_STARFIVE_JH7110=y
CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y
CONFIG_PINCTRL_STARFIVE_JH7110_AON=y

BTW, Maybe you can reply e-mail to me only.
Emil Renner Berthing Dec. 2, 2023, 2:44 p.m. UTC | #4
Minda Chen wrote:
> Add StarFive JH7110 SoC PCIe controller platform driver codes, JH7110
> with PLDA host PCIe core.
>
> Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
> Co-developed-by: Kevin Xie <kevin.xie@starfivetech.com>
> Reviewed-by: Mason Huo <mason.huo@starfivetech.com>
> ---
>  MAINTAINERS                                 |   7 +
>  drivers/pci/controller/plda/Kconfig         |  11 +
>  drivers/pci/controller/plda/Makefile        |   1 +
>  drivers/pci/controller/plda/pcie-plda.h     |  71 ++-
>  drivers/pci/controller/plda/pcie-starfive.c | 460 ++++++++++++++++++++
>  drivers/pci/pci.h                           |   7 +
>  6 files changed, 556 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/pci/controller/plda/pcie-starfive.c
>

...

> +
> +static int starfive_pcie_parse_dt(struct starfive_jh7110_pcie *pcie,
> +				  struct device *dev)
> +{
> +	int domain_nr;
> +
> +	pcie->num_clks = devm_clk_bulk_get_all(dev, &pcie->clks);
> +	if (pcie->num_clks < 0)
> +		return dev_err_probe(dev, -ENODEV,
> +				     "failed to get pcie clocks\n");

Hi Minda,
Minda Chen Dec. 4, 2023, 6:03 a.m. UTC | #5
On 2023/12/2 22:44, Emil Renner Berthing wrote:
> Minda Chen wrote:
>> Add StarFive JH7110 SoC PCIe controller platform driver codes, JH7110
>> with PLDA host PCIe core.
>>
>> Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
>> Co-developed-by: Kevin Xie <kevin.xie@starfivetech.com>
>> Reviewed-by: Mason Huo <mason.huo@starfivetech.com>
>> ---
>>  MAINTAINERS                                 |   7 +
>>  drivers/pci/controller/plda/Kconfig         |  11 +
>>  drivers/pci/controller/plda/Makefile        |   1 +
>>  drivers/pci/controller/plda/pcie-plda.h     |  71 ++-
>>  drivers/pci/controller/plda/pcie-starfive.c | 460 ++++++++++++++++++++
>>  drivers/pci/pci.h                           |   7 +
>>  6 files changed, 556 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/pci/controller/plda/pcie-starfive.c
>>
> 
> ...
> 
>> +
>> +static int starfive_pcie_parse_dt(struct starfive_jh7110_pcie *pcie,
>> +				  struct device *dev)
>> +{
>> +	int domain_nr;
>> +
>> +	pcie->num_clks = devm_clk_bulk_get_all(dev, &pcie->clks);
>> +	if (pcie->num_clks < 0)
>> +		return dev_err_probe(dev, -ENODEV,
>> +				     "failed to get pcie clocks\n");
> 
> Hi Minda,
> 
> From Damian's mail I noticed that this should propagate the error from
> devm_clk_bulk_get_all() properly, so -EPROBE is converted to an -ENODEV error.
> Eg.
> 
> 	if (pcie->num_clks < 0)
> 		return dev_err_probe(dev, pcie->num_clks,
> 				     "failed to get pcie clocks\n");
> 
Thanks. I will change it in next version.

>> +
>> +	pcie->resets = devm_reset_control_array_get_exclusive(dev);
>> +	if (IS_ERR(pcie->resets))
>> +		return dev_err_probe(dev, PTR_ERR(pcie->resets),
>> +				     "failed to get pcie resets");
>> +
>> +	pcie->reg_syscon =
>> +		syscon_regmap_lookup_by_phandle(dev->of_node,
>> +						"starfive,stg-syscon");
>> +
>> +	if (IS_ERR(pcie->reg_syscon))
>> +		return dev_err_probe(dev, PTR_ERR(pcie->reg_syscon),
>> +				     "failed to parse starfive,stg-syscon\n");
>> +
>> +	pcie->phy = devm_phy_optional_get(dev, NULL);
>> +	if (IS_ERR(pcie->phy))
>> +		return dev_err_probe(dev, PTR_ERR(pcie->phy),
>> +				     "failed to get pcie phy\n");
>> +
>> +	domain_nr = of_get_pci_domain_nr(dev->of_node);
>> +
>> +	if (domain_nr < 0 || domain_nr > 1)
>> +		return dev_err_probe(dev, -ENODEV,
>> +				     "failed to get valid pcie domain\n");
>> +
>> +	if (domain_nr == 0)
>> +		pcie->stg_pcie_base = STG_SYSCON_PCIE0_BASE;
>> +	else
>> +		pcie->stg_pcie_base = STG_SYSCON_PCIE1_BASE;
>> +
>> +	pcie->reset_gpio = devm_gpiod_get_optional(dev, "perst",
>> +						   GPIOD_OUT_HIGH);
>> +	if (IS_ERR(pcie->reset_gpio))
>> +		return dev_err_probe(dev, PTR_ERR(pcie->reset_gpio),
>> +				     "failed to get perst-gpio\n");
>> +
>> +	pcie->power_gpio = devm_gpiod_get_optional(dev, "enable",
>> +						   GPIOD_OUT_LOW);
>> +	if (IS_ERR(pcie->power_gpio))
>> +		return dev_err_probe(dev, PTR_ERR(pcie->power_gpio),
>> +				     "failed to get power-gpio\n");
>> +
>> +	return 0;
>> +}
Bjorn Helgaas Dec. 4, 2023, 9:28 p.m. UTC | #6
On Sat, Dec 02, 2023 at 09:17:24PM +0800, Minda Chen wrote:
> ...
> Please check this configuation.
> CONFIG_PHY_STARFIVE_JH7110_PCIE=y
> CONFIG_PINCTRL_STARFIVE_JH7110=y
> CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y
> CONFIG_PINCTRL_STARFIVE_JH7110_AON=y
> 
> BTW, Maybe you can reply e-mail to me only.

There's usually no benefit to replying off-list.  The list archives
are very valuable for future maintenance because they help us
understand the reason things were done a certain way.

Bjorn