forked from Openwrt-EcoNet/openwrt
PCI_IRQ_LEGACY was renamed to PCI_IRQ_INTX for kernel 6.10. Fix compilation error: /home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/vrx518_ep-2.1.0/ep.c:469:69: error: 'PCI_IRQ_LEGACY' undeclared (first use in this function); did you mean 'NR_IRQS_LEGACY'? 469 | err = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_MSI | PCI_IRQ_LEGACY); | ^~~~~~~~~~~~~~ | NR_IRQS_LEGACY Signed-off-by: Andre Heider <a.heider@gmail.com> Co-authored-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18744 Signed-off-by: Robert Marko <robimarko@gmail.com>
105 lines
3.1 KiB
Diff
105 lines
3.1 KiB
Diff
--- a/ep.c
|
|
+++ b/ep.c
|
|
@@ -34,6 +34,7 @@
|
|
#include <linux/pci.h>
|
|
#include <linux/pci_regs.h>
|
|
#include <linux/platform_device.h>
|
|
+#include <linux/version.h>
|
|
|
|
#include "ep.h"
|
|
#include "aca.h"
|
|
@@ -373,23 +374,23 @@ int dc_ep_dev_info_req(int dev_idx, enum
|
|
|
|
switch (module) {
|
|
case DC_EP_INT_PPE:
|
|
- dev->irq = priv->irq_base;
|
|
+ dev->irq = pci_irq_vector(priv->pdev, 0);
|
|
if (priv->msi_mode == DC_EP_8_MSI_MODE) {
|
|
- dev->aca_tx_irq = priv->irq_base + 7;
|
|
- dev->aca_rx_irq = priv->irq_base + 6;
|
|
+ dev->aca_tx_irq = pci_irq_vector(priv->pdev, 7);
|
|
+ dev->aca_rx_irq = pci_irq_vector(priv->pdev, 6);
|
|
} else if (priv->msi_mode == DC_EP_4_MSI_MODE) {
|
|
- dev->aca_tx_irq = priv->irq_base + 2;
|
|
- dev->aca_rx_irq = priv->irq_base + 3;
|
|
+ dev->aca_tx_irq = pci_irq_vector(priv->pdev, 2);
|
|
+ dev->aca_rx_irq = pci_irq_vector(priv->pdev, 3);
|
|
} else {
|
|
dev_err(dev->dev, "%s ACA should never occur\n",
|
|
__func__);
|
|
}
|
|
break;
|
|
case DC_EP_INT_MEI:
|
|
- dev->irq = priv->irq_base + 1;
|
|
+ dev->irq = pci_irq_vector(priv->pdev, 1);
|
|
break;
|
|
default:
|
|
- dev->irq = priv->irq_base;
|
|
+ dev->irq = pci_irq_vector(priv->pdev, 0);
|
|
break;
|
|
}
|
|
|
|
@@ -466,8 +467,12 @@ static int dc_ep_msi_enable(struct pci_d
|
|
return -EIO;
|
|
}
|
|
|
|
- err = pci_enable_msi_exact(pdev, nvec);
|
|
- if (err) {
|
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0))
|
|
+ err = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
|
|
+#else
|
|
+ err = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_MSI | PCI_IRQ_INTX);
|
|
+#endif
|
|
+ if (err < 0) {
|
|
dev_err(&pdev->dev,
|
|
"%s: Failed to enable MSI interrupts error code: %d\n",
|
|
__func__, err);
|
|
@@ -589,15 +594,15 @@ static int dc_ep_probe(struct pci_dev *p
|
|
/* Target structures have a limit of 32 bit DMA pointers.
|
|
* DMA pointers can be wider than 32 bits by default on some systems.
|
|
*/
|
|
- ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
|
|
+ ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
|
|
if (ret) {
|
|
dev_err(&pdev->dev, "32-bit DMA not available: %d\n", ret);
|
|
goto err_region;
|
|
}
|
|
|
|
- ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
|
|
+ ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
|
|
if (ret) {
|
|
- dev_err(&pdev->dev, "cannot enable 32-bit consistent DMA\n");
|
|
+ dev_err(&pdev->dev, "cannot enable 32-bit coherent DMA\n");
|
|
goto err_region;
|
|
}
|
|
|
|
@@ -654,7 +659,7 @@ static int dc_ep_probe(struct pci_dev *p
|
|
goto err_iomap;
|
|
|
|
spin_lock(&dc_ep_lock);
|
|
- priv->irq_base = pdev->irq;
|
|
+ priv->irq_base = pci_irq_vector(pdev, 0);
|
|
spin_unlock(&dc_ep_lock);
|
|
|
|
#ifndef CONFIG_OF
|
|
@@ -715,7 +720,7 @@ static void dc_ep_remove(struct pci_dev
|
|
dc_ep_icu_disable(priv);
|
|
pci_iounmap(pdev, priv->mem);
|
|
pci_release_region(pdev, DC_EP_BAR_NUM);
|
|
- pci_disable_msi(pdev);
|
|
+ pci_free_irq_vectors(pdev);
|
|
wmb();
|
|
pci_clear_master(pdev);
|
|
pci_disable_device(pdev);
|
|
--- a/aca.c
|
|
+++ b/aca.c
|
|
@@ -756,7 +756,7 @@ static void aca_hif_param_init_done(stru
|
|
addr = fw_param->init_addr;
|
|
dev_dbg(priv->dev, "init_addr: %x\n", addr);
|
|
memcpy_toio(priv->mem + addr, hif_params, sizeof(*hif_params));
|
|
- kzfree(hif_params);
|
|
+ kfree(hif_params);
|
|
dev_dbg(priv->dev, "%s\n", __func__);
|
|
}
|
|
|