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

Commit 63d61b62 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 support for multiple synopsys MSI"

parents e9b59def 98ddd9b1
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -4989,12 +4989,13 @@ static int msm_pcie_create_irq(struct msm_pcie_dev_t *dev)
static int arch_setup_msi_irq_default(struct pci_dev *pdev,
		struct msi_desc *desc, int nvec)
{
	int irq;
	int irq, index, firstirq = 0;
	struct msi_msg msg;
	struct msm_pcie_dev_t *dev = PCIE_BUS_PRIV_DATA(pdev->bus);

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

	for (index = 0; index < nvec; index++) {
		irq = msm_pcie_create_irq(dev);

		PCIE_DBG(dev, "IRQ %d is allocated.\n", irq);
@@ -5002,16 +5003,20 @@ static int arch_setup_msi_irq_default(struct pci_dev *pdev,
		if (irq < 0)
			return irq;

	PCIE_DBG(dev, "irq %d allocated\n", irq);
		if (index == 0)
			firstirq = irq;

	irq_set_chip_data(irq, pdev);
	irq_set_msi_desc(irq, desc);
		irq_set_msi_desc_off(firstirq, index, desc);
	}

	PCIE_DBG(dev, "firstirq:%d\n", firstirq);

	irq_set_chip_data(firstirq, pdev);
	/* write msi vector and data */
	msg.address_hi = 0;
	msg.address_lo = MSM_PCIE_MSI_PHY;
	msg.data = irq - irq_find_mapping(dev->irq_domain, 0);
	write_msi_msg(irq, &msg);
	msg.data = firstirq - irq_find_mapping(dev->irq_domain, 0);
	write_msi_msg(firstirq, &msg);

	return 0;
}
@@ -5189,7 +5194,6 @@ static const struct irq_domain_ops msm_pcie_msi_ops = {
static int32_t msm_pcie_irq_init(struct msm_pcie_dev_t *dev)
{
	int rc;
	int msi_start =  0;
	struct device *pdev = &dev->pdev->dev;

	PCIE_DBG(dev, "RC%d\n", dev->rc_idx);
@@ -5319,8 +5323,6 @@ static int32_t msm_pcie_irq_init(struct msm_pcie_dev_t *dev)

			return PTR_ERR(dev->irq_domain);
		}

		msi_start = irq_create_mapping(dev->irq_domain, 0);
	}

	return 0;