Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa01bdf5 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "pci: msm: Dump PCIe registers upon WAKE assertion"

parents 80b988c3 1048d7aa
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -721,7 +721,6 @@ struct msm_pcie_dev_t {
	bool enumerated;
	struct work_struct handle_wake_work;
	struct mutex recovery_lock;
	spinlock_t wakeup_lock;
	spinlock_t irq_lock;
	struct mutex aspm_lock;
	int prevent_l1;
@@ -768,6 +767,8 @@ struct msm_pcie_dev_t {
	int drv_disable_pc_vote;
	struct mutex drv_pc_lock;

	bool drv_supported;

	void (*rumi_init)(struct msm_pcie_dev_t *pcie_dev);
};

@@ -4799,7 +4800,7 @@ static irqreturn_t handle_wake_irq(int irq, void *data)
	unsigned long irqsave_flags;
	int i;

	spin_lock_irqsave(&dev->wakeup_lock, irqsave_flags);
	spin_lock_irqsave(&dev->irq_lock, irqsave_flags);

	dev->wake_counter++;
	PCIE_DBG(dev, "PCIe: No. %ld wake IRQ for RC%d\n",
@@ -4825,11 +4826,18 @@ static irqreturn_t handle_wake_irq(int irq, void *data)
					MSM_PCIE_EVENT_WAKEUP);
			}
		} else {
			if (dev->drv_supported && !dev->suspending &&
			    dev->link_status == MSM_PCIE_LINK_ENABLED) {
				pcie_phy_dump(dev);
				pcie_parf_dump(dev);
				pcie_dm_core_dump(dev);
			}

			msm_pcie_notify_client(dev, MSM_PCIE_EVENT_WAKEUP);
		}
	}

	spin_unlock_irqrestore(&dev->wakeup_lock, irqsave_flags);
	spin_unlock_irqrestore(&dev->irq_lock, irqsave_flags);

	return IRQ_HANDLED;
}
@@ -5549,7 +5557,6 @@ static int msm_pcie_probe(struct platform_device *pdev)
	int i, j;
	struct msm_pcie_dev_t *pcie_dev;
	struct device_node *of_node;
	bool drv_supported;

	dev_info(&pdev->dev, "PCIe: %s\n", __func__);

@@ -5827,8 +5834,9 @@ static int msm_pcie_probe(struct platform_device *pdev)
		goto decrease_rc_num;
	}

	drv_supported = of_property_read_bool(of_node, "qcom,drv-supported");
	if (drv_supported) {
	pcie_dev->drv_supported = of_property_read_bool(of_node,
							"qcom,drv-supported");
	if (pcie_dev->drv_supported) {
		ret = msm_pcie_setup_drv(pcie_dev, of_node);
		if (ret)
			PCIE_ERR(pcie_dev,
@@ -6522,7 +6530,6 @@ static int __init pcie_init(void)
		mutex_init(&msm_pcie_dev[i].recovery_lock);
		mutex_init(&msm_pcie_dev[i].aspm_lock);
		mutex_init(&msm_pcie_dev[i].drv_pc_lock);
		spin_lock_init(&msm_pcie_dev[i].wakeup_lock);
		spin_lock_init(&msm_pcie_dev[i].irq_lock);
		msm_pcie_dev[i].drv_ready = false;
		msm_pcie_dev[i].l23_rdy_poll_timeout = L23_READY_POLL_TIMEOUT;