Re: [PATCH v7 2/4] PCI: qcom-ep: Add support for D-state change notification

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

 





On 7/10/2024 4:38 PM, Krishna chaitanya chundru wrote:
Add support to pass D-state change notification to Endpoint
function driver.
Read perst value to determine if the link is in D3Cold/D3hot.

Reviewed-by: Manivannan Sadhasivam <mani@xxxxxxxxxx>
Signed-off-by: Krishna chaitanya chundru <quic_krichai@xxxxxxxxxxx>
---
  drivers/pci/controller/dwc/pcie-qcom-ep.c | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 236229f66c80..817fad805c51 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -648,6 +648,7 @@ static irqreturn_t qcom_pcie_ep_global_irq_thread(int irq, void *data)
  	struct device *dev = pci->dev;
  	u32 status = readl_relaxed(pcie_ep->parf + PARF_INT_ALL_STATUS);
  	u32 mask = readl_relaxed(pcie_ep->parf + PARF_INT_ALL_MASK);
+	pci_power_t state;
  	u32 dstate, val;
writel_relaxed(status, pcie_ep->parf + PARF_INT_ALL_CLEAR);
@@ -671,11 +672,16 @@ static irqreturn_t qcom_pcie_ep_global_irq_thread(int irq, void *data)
  		dstate = dw_pcie_readl_dbi(pci, DBI_CON_STATUS) &
  					   DBI_CON_STATUS_POWER_STATE_MASK;
  		dev_dbg(dev, "Received D%d state event\n", dstate);
-		if (dstate == 3) {
+		state = dstate;
Can we use some meaningful name for variable "state" ? There is different purpose of variable "state" and "dstate" which is not getting reflected by looking variable names.

- Yogesh
+		if (dstate == PCI_D3hot) {
  			val = readl_relaxed(pcie_ep->parf + PARF_PM_CTRL);
  			val |= PARF_PM_CTRL_REQ_EXIT_L1;
  			writel_relaxed(val, pcie_ep->parf + PARF_PM_CTRL);
+
+			if (gpiod_get_value(pcie_ep->reset))
+				state = PCI_D3cold;
  		}
+		pci_epc_dstate_notify(pci->ep.epc, state);
  	} else if (FIELD_GET(PARF_INT_ALL_LINK_UP, status)) {
  		dev_dbg(dev, "Received Linkup event. Enumeration complete!\n");
  		dw_pcie_ep_linkup(&pci->ep);





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux