Loading drivers/pci/host/pci-msm.c +36 −4 Original line number Diff line number Diff line Loading @@ -4951,13 +4951,45 @@ static void msm_pcie_msi_nop(struct irq_data *d) { } static void msm_mask_msi_irq(struct irq_data *data) { struct msi_desc *desc = irq_data_get_msi_desc(data); struct pci_dev *pdev; struct msm_pcie_dev_t *pcie_dev; void __iomem *intr_en_addr; uint32_t offset = 0; pdev = msi_desc_to_pci_dev(desc); pcie_dev = PCIE_BUS_PRIV_DATA(pdev->bus); offset = data->irq - desc->irq; intr_en_addr = pcie_dev->dm_core + PCIE20_MSI_CTRL_INTR_EN; msm_pcie_write_mask(intr_en_addr, BIT(offset), 0); pci_msi_mask_irq(data); } static void msm_unmask_msi_irq(struct irq_data *data) { struct msi_desc *desc = irq_data_get_msi_desc(data); struct pci_dev *pdev; struct msm_pcie_dev_t *pcie_dev; void __iomem *intr_en_addr; uint32_t offset = 0; pci_msi_unmask_irq(data); pdev = msi_desc_to_pci_dev(desc); pcie_dev = PCIE_BUS_PRIV_DATA(pdev->bus); offset = data->irq - desc->irq; intr_en_addr = pcie_dev->dm_core + PCIE20_MSI_CTRL_INTR_EN; msm_pcie_write_mask(intr_en_addr, 0, BIT(offset)); } static struct irq_chip pcie_msi_chip = { .name = "msm-pcie-msi", .irq_ack = msm_pcie_msi_nop, .irq_enable = unmask_msi_irq, .irq_disable = mask_msi_irq, .irq_mask = mask_msi_irq, .irq_unmask = unmask_msi_irq, .irq_enable = msm_unmask_msi_irq, .irq_disable = msm_mask_msi_irq, .irq_mask = msm_mask_msi_irq, .irq_unmask = msm_unmask_msi_irq, }; static int msm_pcie_create_irq(struct msm_pcie_dev_t *dev) Loading Loading
drivers/pci/host/pci-msm.c +36 −4 Original line number Diff line number Diff line Loading @@ -4951,13 +4951,45 @@ static void msm_pcie_msi_nop(struct irq_data *d) { } static void msm_mask_msi_irq(struct irq_data *data) { struct msi_desc *desc = irq_data_get_msi_desc(data); struct pci_dev *pdev; struct msm_pcie_dev_t *pcie_dev; void __iomem *intr_en_addr; uint32_t offset = 0; pdev = msi_desc_to_pci_dev(desc); pcie_dev = PCIE_BUS_PRIV_DATA(pdev->bus); offset = data->irq - desc->irq; intr_en_addr = pcie_dev->dm_core + PCIE20_MSI_CTRL_INTR_EN; msm_pcie_write_mask(intr_en_addr, BIT(offset), 0); pci_msi_mask_irq(data); } static void msm_unmask_msi_irq(struct irq_data *data) { struct msi_desc *desc = irq_data_get_msi_desc(data); struct pci_dev *pdev; struct msm_pcie_dev_t *pcie_dev; void __iomem *intr_en_addr; uint32_t offset = 0; pci_msi_unmask_irq(data); pdev = msi_desc_to_pci_dev(desc); pcie_dev = PCIE_BUS_PRIV_DATA(pdev->bus); offset = data->irq - desc->irq; intr_en_addr = pcie_dev->dm_core + PCIE20_MSI_CTRL_INTR_EN; msm_pcie_write_mask(intr_en_addr, 0, BIT(offset)); } static struct irq_chip pcie_msi_chip = { .name = "msm-pcie-msi", .irq_ack = msm_pcie_msi_nop, .irq_enable = unmask_msi_irq, .irq_disable = mask_msi_irq, .irq_mask = mask_msi_irq, .irq_unmask = unmask_msi_irq, .irq_enable = msm_unmask_msi_irq, .irq_disable = msm_mask_msi_irq, .irq_mask = msm_mask_msi_irq, .irq_unmask = msm_unmask_msi_irq, }; static int msm_pcie_create_irq(struct msm_pcie_dev_t *dev) Loading