linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 0/7] Add power domain and MSI functionality with PCIe host generic ECAM driver
@ 2024-07-15 18:13 Mayank Rana
  2024-07-15 18:13 ` [PATCH V2 1/7] PCI: dwc: Move MSI functionality related code to separate file Mayank Rana
                   ` (8 more replies)
  0 siblings, 9 replies; 37+ messages in thread
From: Mayank Rana @ 2024-07-15 18:13 UTC (permalink / raw)
  To: will, lpieralisi, kw, robh, bhelgaas, jingoohan1,
	manivannan.sadhasivam, cassel, yoshihiro.shimoda.uh, s-vadapalli,
	u.kleine-koenig, dlemoal, amishin, thierry.reding, jonathanh,
	Frank.Li, ilpo.jarvinen, vidyas, marek.vasut+renesas, krzk+dt,
	conor+dt, linux-pci, linux-arm-kernel, devicetree
  Cc: quic_ramkri, quic_nkela, quic_shazhuss, quic_msarkar,
	quic_nitegupt, Mayank Rana

Based on previously received feedback, this patch series adds functionalities
with existing PCIe host generic ECAM driver (pci-host-generic.c) to get PCIe
host root complex functionality on Qualcomm SA8775P auto platform.

Previously sent RFC patchset to have separate Qualcomm PCIe ECAM platform driver:
https://lore.kernel.org/all/d10199df-5fb3-407b-b404-a0a4d067341f@quicinc.com/T/                                                                                                      

1. Interface to allow requesting firmware to manage system resources and performing
PCIe Link up (devicetree binding in terms of power domain and runtime PM APIs is used in driver)
2. Performing D3 cold with system suspend and D0 with system resume (usage of GenPD
framework based power domain controls these operations)
3. SA8775P is using Synopsys Designware PCIe controller which supports MSI controller.
This MSI functionality is used with PCIe host generic driver after splitting existing MSI
functionality from pcie-designware-host.c file into pcie-designware-msi.c file.

Below architecture is used on Qualcomm SA8775P auto platform to get ECAM compliant PCIe
controller based functionality. Here firmware VM based PCIe driver takes care of resource
management and performing PCIe link related handling (D0 and D3cold). Linux VM based PCIe
host generic driver uses power domain to request firmware VM to perform these operations
using SCMI interface.
----------------


                                   ┌────────────────────────┐                                               
                                   │                        │                                               
  ┌──────────────────────┐         │     SHARED MEMORY      │            ┌──────────────────────────┐       
  │     Firmware VM      │         │                        │            │         Linux VM         │       
  │ ┌─────────┐          │         │                        │            │    ┌────────────────┐    │       
  │ │ Drivers │ ┌──────┐ │         │                        │            │    │   PCIE host    │    │       
  │ │ PCIE PHY◄─┤      │ │         │   ┌────────────────┐   │            │    │  generic driver│    │       
  │ │         │ │ SCMI │ │         │   │                │   │            │    │                │    │       
  │ │PCIE CTL │ │      │ ├─────────┼───►    PCIE        ◄───┼─────┐      │    └──┬──────────▲──┘    │       
  │ │         ├─►Server│ │         │   │    SHMEM       │   │     │      │       │          │       │       
  │ │Clk, Vreg│ │      │ │         │   │                │   │     │      │    ┌──▼──────────┴──┐    │       
  │ │GPIO,GDSC│ └─▲──┬─┘ │         │   └────────────────┘   │     └──────┼────┤PCIE SCMI Inst  │    │       
  │ └─────────┘   │  │   │         │                        │            │    └──▲──────────┬──┘    │       
  │               │  │   │         │                        │            │       │          │       │       
  └───────────────┼──┼───┘         │                        │            └───────┼──────────┼───────┘       
                  │  │             │                        │                    │          │               
                  │  │             └────────────────────────┘                    │          │               
                  │  │                                                           │          │               
                  │  │                                                           │          │               
                  │  │                                                           │          │               
                  │  │                                                           │IRQ       │HVC            
              IRQ │  │HVC                                                        │          │               
                  │  │                                                           │          │               
                  │  │                                                           │          │               
                  │  │                                                           │          │               
┌─────────────────┴──▼───────────────────────────────────────────────────────────┴──────────▼──────────────┐
│                                                                                                          │
│                                                                                                          │
│                                      HYPERVISOR                                                          │
│                                                                                                          │
│                                                                                                          │
│                                                                                                          │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────┘
                                                                                                            
  ┌─────────────┐    ┌─────────────┐  ┌──────────┐   ┌───────────┐   ┌─────────────┐  ┌────────────┐        
  │             │    │             │  │          │   │           │   │  PCIE       │  │   PCIE     │        
  │   CLOCK     │    │   REGULATOR │  │   GPIO   │   │   GDSC    │   │  PHY        │  │ controller │        
  └─────────────┘    └─────────────┘  └──────────┘   └───────────┘   └─────────────┘  └────────────┘        
                                                                                                            
----------
Changes in V2:
- Drop new PCIe Qcom ECAM driver, and use existing PCIe designware based MSI functionality
- Add power domain based functionality within existing ECAM driver

Tested:
- Validated NVME functionality with PCIe0 and PCIe1 on SA8775P-RIDE platform

Mayank Rana (7):
  PCI: dwc: Move MSI related code to separate file
  PCI: dwc: Add msi_ops to allow DBI based MSI register access
  PCI: dwc: Add pcie-designware-msi driver kconfig option
  dt-bindings: PCI: host-generic-pci: Add power-domains binding
  PCI: host-generic: Add power domain based handling for PCIe controller
  dt-bindings: PCI: host-generic-pci: Add snps,dw-pcie-ecam-msi binding
  PCI: host-generic: Add dwc MSI based MSI functionality

 .../devicetree/bindings/pci/host-generic-pci.yaml  |  64 +++
 drivers/pci/controller/dwc/Kconfig                 |   8 +
 drivers/pci/controller/dwc/Makefile                |   1 +
 drivers/pci/controller/dwc/pci-keystone.c          |  12 +-
 drivers/pci/controller/dwc/pcie-designware-host.c  | 438 ++-------------------
 drivers/pci/controller/dwc/pcie-designware-msi.c   | 413 +++++++++++++++++++
 drivers/pci/controller/dwc/pcie-designware-msi.h   |  63 +++
 drivers/pci/controller/dwc/pcie-designware.c       |   1 +
 drivers/pci/controller/dwc/pcie-designware.h       |  26 +-
 drivers/pci/controller/dwc/pcie-rcar-gen4.c        |   1 +
 drivers/pci/controller/dwc/pcie-tegra194.c         |   5 +-
 drivers/pci/controller/pci-host-generic.c          | 127 +++++-
 12 files changed, 723 insertions(+), 436 deletions(-)
 create mode 100644 drivers/pci/controller/dwc/pcie-designware-msi.c
 create mode 100644 drivers/pci/controller/dwc/pcie-designware-msi.h

-- 
2.7.4



^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2024-07-31 17:27 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-15 18:13 [PATCH V2 0/7] Add power domain and MSI functionality with PCIe host generic ECAM driver Mayank Rana
2024-07-15 18:13 ` [PATCH V2 1/7] PCI: dwc: Move MSI functionality related code to separate file Mayank Rana
2024-07-31 16:40   ` Manivannan Sadhasivam
2024-07-15 18:13 ` [PATCH V222/7] PCI: dwc: Add msi_ops to allow DBI based MSI register access Mayank Rana
2024-07-31 17:17   ` Manivannan Sadhasivam
2024-07-15 18:13 ` [PATCH V2 3/7] PCI: dwc: Add pcie-designware-msi driver related Kconfig option Mayank Rana
2024-07-15 18:39   ` Andrew Lunn
2024-07-16  0:04     ` Mayank Rana
2024-07-15 18:13 ` [PATCH V2 4/7] dt-bindings: PCI: host-generic-pci: Add power-domains related binding Mayank Rana
2024-07-16  7:25   ` Krzysztof Kozlowski
2024-07-16 21:47     ` Mayank Rana
2024-07-15 18:13 ` [PATCH V2 5/7] PCI: host-generic: Add power domain based handling for PCIe controller Mayank Rana
2024-07-15 18:13 ` [PATCH V226/7] dt-bindings: PCI: host-generic-pci: Add snps,dw-pcie-ecam-msi binding Mayank Rana
2024-07-15 19:43   ` Rob Herring (Arm)
2024-07-16  7:28   ` Krzysztof Kozlowski
2024-07-16 22:09     ` Mayank Rana
2024-07-17  6:47       ` Krzysztof Kozlowski
2024-07-17 17:20         ` Mayank Rana
2024-07-18  6:05           ` Krzysztof Kozlowski
2024-07-18 23:19             ` Mayank Rana
2024-07-20 18:30               ` Krzysztof Kozlowski
2024-07-31 17:26   ` Manivannan Sadhasivam
2024-07-15 18:13 ` [PATCH V2 7/7] PCI: host-generic: Add dwc PCIe controller based MSI controller usage Mayank Rana
2024-07-16  8:58   ` Will Deacon
2024-07-16 13:42     ` Rob Herring
2024-07-16 22:32       ` Mayank Rana
2024-07-23 22:56         ` Mayank Rana
2024-07-24  9:54           ` Manivannan Sadhasivam
2024-07-24  2:13 ` [PATCH V2 0/7] Add power domain and MSI functionality with PCIe host generic ECAM driver Dmitry Baryshkov
2024-07-24  3:58   ` Mayank Rana
2024-07-24  7:12     ` Dmitry Baryshkov
2024-07-24 13:31       ` Manivannan Sadhasivam
2024-07-24 13:34         ` Dmitry Baryshkov
2024-07-24 16:51           ` Mayank Rana
2024-07-29 17:19 ` Mayank Rana
2024-07-30  5:34   ` Manivannan Sadhasivam
2024-07-30 16:16     ` Mayank Rana

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).