mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
PCI/MSI: Move pci_enable_msi() API to api.c
To disentangle the maze in msi.c all exported device-driver MSI APIs are now to be grouped in one file, api.c. Move pci_enable_msi() and make its kernel-doc comprehensive. Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://lore.kernel.org/r/20221111122014.755178149@linutronix.de
This commit is contained in:
parent
b12d0bec38
commit
bbda340798
3 changed files with 26 additions and 12 deletions
|
@ -12,6 +12,29 @@
|
||||||
|
|
||||||
#include "msi.h"
|
#include "msi.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pci_enable_msi() - Enable MSI interrupt mode on device
|
||||||
|
* @dev: the PCI device to operate on
|
||||||
|
*
|
||||||
|
* Legacy device driver API to enable MSI interrupts mode on device and
|
||||||
|
* allocate a single interrupt vector. On success, the allocated vector
|
||||||
|
* Linux IRQ will be saved at @dev->irq. The driver must invoke
|
||||||
|
* pci_disable_msi() on cleanup.
|
||||||
|
*
|
||||||
|
* NOTE: The newer pci_alloc_irq_vectors() / pci_free_irq_vectors() API
|
||||||
|
* pair should, in general, be used instead.
|
||||||
|
*
|
||||||
|
* Return: 0 on success, errno otherwise
|
||||||
|
*/
|
||||||
|
int pci_enable_msi(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
int rc = __pci_enable_msi_range(dev, 1, 1, NULL);
|
||||||
|
if (rc < 0)
|
||||||
|
return rc;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(pci_enable_msi);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pci_disable_msi() - Disable MSI interrupt mode on device
|
* pci_disable_msi() - Disable MSI interrupt mode on device
|
||||||
* @dev: the PCI device to operate on
|
* @dev: the PCI device to operate on
|
||||||
|
|
|
@ -790,8 +790,8 @@ void pci_disable_msix(struct pci_dev *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(pci_disable_msix);
|
EXPORT_SYMBOL(pci_disable_msix);
|
||||||
|
|
||||||
static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
|
int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
|
||||||
struct irq_affinity *affd)
|
struct irq_affinity *affd)
|
||||||
{
|
{
|
||||||
int nvec;
|
int nvec;
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -844,16 +844,6 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* deprecated, don't use */
|
|
||||||
int pci_enable_msi(struct pci_dev *dev)
|
|
||||||
{
|
|
||||||
int rc = __pci_enable_msi_range(dev, 1, 1, NULL);
|
|
||||||
if (rc < 0)
|
|
||||||
return rc;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(pci_enable_msi);
|
|
||||||
|
|
||||||
static int __pci_enable_msix_range(struct pci_dev *dev,
|
static int __pci_enable_msix_range(struct pci_dev *dev,
|
||||||
struct msix_entry *entries, int minvec,
|
struct msix_entry *entries, int minvec,
|
||||||
int maxvec, struct irq_affinity *affd,
|
int maxvec, struct irq_affinity *affd,
|
||||||
|
|
|
@ -87,6 +87,7 @@ static inline __attribute_const__ u32 msi_multi_mask(struct msi_desc *desc)
|
||||||
/* MSI internal functions invoked from the public APIs */
|
/* MSI internal functions invoked from the public APIs */
|
||||||
void pci_msi_shutdown(struct pci_dev *dev);
|
void pci_msi_shutdown(struct pci_dev *dev);
|
||||||
void pci_free_msi_irqs(struct pci_dev *dev);
|
void pci_free_msi_irqs(struct pci_dev *dev);
|
||||||
|
int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, struct irq_affinity *affd);
|
||||||
|
|
||||||
/* Legacy (!IRQDOMAIN) fallbacks */
|
/* Legacy (!IRQDOMAIN) fallbacks */
|
||||||
#ifdef CONFIG_PCI_MSI_ARCH_FALLBACKS
|
#ifdef CONFIG_PCI_MSI_ARCH_FALLBACKS
|
||||||
|
|
Loading…
Reference in a new issue