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

Commit 16c4424c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: pcie: add global lock for PCIe enumeration"

parents 028be1cf 1ed86e7e
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -596,7 +596,6 @@ struct msm_pcie_dev_t {
	bool				 cfg_access;
	spinlock_t			 cfg_lock;
	unsigned long		    irqsave_flags;
	struct mutex			enumerate_lock;
	struct mutex		     setup_lock;

	struct irq_domain		*irq_domain;
@@ -703,6 +702,9 @@ static u32 num_rc_on;
/* global lock for PCIe common PHY */
static struct mutex com_phy_lock;

/* global lock for PCIe enumeration */
static struct mutex enumerate_lock;

/* Table to track info of PCIe devices */
static struct msm_pcie_device_info
	msm_pcie_dev_tbl[MAX_RC_NUM * MAX_DEVICE_NUM];
@@ -4912,7 +4914,7 @@ int msm_pcie_enumerate(u32 rc_idx)
	int ret = 0, bus_ret = 0, scan_ret = 0;
	struct msm_pcie_dev_t *dev = &msm_pcie_dev[rc_idx];

	mutex_lock(&dev->enumerate_lock);
	mutex_lock(&enumerate_lock);

	PCIE_DBG(dev, "Enumerate RC%d\n", rc_idx);

@@ -5039,7 +5041,7 @@ int msm_pcie_enumerate(u32 rc_idx)
	}

out:
	mutex_unlock(&dev->enumerate_lock);
	mutex_unlock(&enumerate_lock);

	return ret;
}
@@ -6362,6 +6364,7 @@ int __init pcie_init(void)
	pcie_drv.rc_num = 0;
	mutex_init(&pcie_drv.drv_lock);
	mutex_init(&com_phy_lock);
	mutex_init(&enumerate_lock);

	for (i = 0; i < MAX_RC_NUM; i++) {
		snprintf(rc_name, MAX_RC_NAME_LEN, "pcie%d-short", i);
@@ -6396,7 +6399,6 @@ int __init pcie_init(void)
				rc_name, i);
		spin_lock_init(&msm_pcie_dev[i].cfg_lock);
		msm_pcie_dev[i].cfg_access = true;
		mutex_init(&msm_pcie_dev[i].enumerate_lock);
		mutex_init(&msm_pcie_dev[i].setup_lock);
		mutex_init(&msm_pcie_dev[i].recovery_lock);
		spin_lock_init(&msm_pcie_dev[i].linkdown_lock);