2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-11-18 23:54:26 +08:00

pci: Convert msi to new irq_chip functions

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Russell King <linux@arm.linux.org.uk>
This commit is contained in:
Thomas Gleixner 2010-09-28 16:46:51 +02:00
parent 7c5f13519a
commit 1c9db52534
12 changed files with 52 additions and 51 deletions

View File

@ -164,10 +164,10 @@ static void iop13xx_msi_nop(unsigned int irq)
static struct irq_chip iop13xx_msi_chip = { static struct irq_chip iop13xx_msi_chip = {
.name = "PCI-MSI", .name = "PCI-MSI",
.ack = iop13xx_msi_nop, .ack = iop13xx_msi_nop,
.enable = unmask_msi_irq, .irq_enable = unmask_msi_irq,
.disable = mask_msi_irq, .irq_disable = mask_msi_irq,
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
}; };
int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)

View File

@ -104,8 +104,8 @@ static int ia64_msi_retrigger_irq(unsigned int irq)
*/ */
static struct irq_chip ia64_msi_chip = { static struct irq_chip ia64_msi_chip = {
.name = "PCI-MSI", .name = "PCI-MSI",
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.ack = ia64_ack_msi_irq, .ack = ia64_ack_msi_irq,
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
.set_affinity = ia64_set_msi_irq_affinity, .set_affinity = ia64_set_msi_irq_affinity,

View File

@ -228,8 +228,8 @@ static int sn_msi_retrigger_irq(unsigned int irq)
static struct irq_chip sn_msi_chip = { static struct irq_chip sn_msi_chip = {
.name = "PCI-MSI", .name = "PCI-MSI",
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.ack = sn_ack_msi_irq, .ack = sn_ack_msi_irq,
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
.set_affinity = sn_set_msi_irq_affinity, .set_affinity = sn_set_msi_irq_affinity,

View File

@ -310,9 +310,9 @@ static void axon_msi_teardown_msi_irqs(struct pci_dev *dev)
} }
static struct irq_chip msic_irq_chip = { static struct irq_chip msic_irq_chip = {
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.shutdown = unmask_msi_irq, .irq_shutdown = mask_msi_irq,
.name = "AXON-MSI", .name = "AXON-MSI",
}; };

View File

@ -243,7 +243,7 @@ static unsigned int xics_startup(unsigned int virq)
* at that level, so we do it here by hand. * at that level, so we do it here by hand.
*/ */
if (irq_to_desc(virq)->msi_desc) if (irq_to_desc(virq)->msi_desc)
unmask_msi_irq(virq); unmask_msi_irq(irq_get_irq_data(virq));
/* unmask it */ /* unmask it */
xics_unmask_irq(virq); xics_unmask_irq(virq);

View File

@ -51,8 +51,8 @@ static void fsl_msi_end_irq(unsigned int virq)
} }
static struct irq_chip fsl_msi_chip = { static struct irq_chip fsl_msi_chip = {
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.ack = fsl_msi_end_irq, .ack = fsl_msi_end_irq,
.name = "FSL-MSI", .name = "FSL-MSI",
}; };

View File

@ -39,24 +39,24 @@
static struct mpic *msi_mpic; static struct mpic *msi_mpic;
static void mpic_pasemi_msi_mask_irq(unsigned int irq) static void mpic_pasemi_msi_mask_irq(struct irq_data *data)
{ {
pr_debug("mpic_pasemi_msi_mask_irq %d\n", irq); pr_debug("mpic_pasemi_msi_mask_irq %d\n", data->irq);
mask_msi_irq(irq); mask_msi_irq(data);
mpic_mask_irq(irq); mpic_mask_irq(data->irq);
} }
static void mpic_pasemi_msi_unmask_irq(unsigned int irq) static void mpic_pasemi_msi_unmask_irq(struct irq_data *data)
{ {
pr_debug("mpic_pasemi_msi_unmask_irq %d\n", irq); pr_debug("mpic_pasemi_msi_unmask_irq %d\n", data->irq);
mpic_unmask_irq(irq); mpic_unmask_irq(data->irq);
unmask_msi_irq(irq); unmask_msi_irq(data);
} }
static struct irq_chip mpic_pasemi_msi_chip = { static struct irq_chip mpic_pasemi_msi_chip = {
.shutdown = mpic_pasemi_msi_mask_irq, .irq_shutdown = mpic_pasemi_msi_mask_irq,
.mask = mpic_pasemi_msi_mask_irq, .irq_mask = mpic_pasemi_msi_mask_irq,
.unmask = mpic_pasemi_msi_unmask_irq, .irq_unmask = mpic_pasemi_msi_unmask_irq,
.eoi = mpic_end_irq, .eoi = mpic_end_irq,
.set_type = mpic_set_irq_type, .set_type = mpic_set_irq_type,
.set_affinity = mpic_set_affinity, .set_affinity = mpic_set_affinity,

View File

@ -23,22 +23,22 @@
/* A bit ugly, can we get this from the pci_dev somehow? */ /* A bit ugly, can we get this from the pci_dev somehow? */
static struct mpic *msi_mpic; static struct mpic *msi_mpic;
static void mpic_u3msi_mask_irq(unsigned int irq) static void mpic_u3msi_mask_irq(struct irq_data *data)
{ {
mask_msi_irq(irq); mask_msi_irq(data);
mpic_mask_irq(irq); mpic_mask_irq(data->irq);
} }
static void mpic_u3msi_unmask_irq(unsigned int irq) static void mpic_u3msi_unmask_irq(struct irq_data *data)
{ {
mpic_unmask_irq(irq); mpic_unmask_irq(data->irq);
unmask_msi_irq(irq); unmask_msi_irq(data);
} }
static struct irq_chip mpic_u3msi_chip = { static struct irq_chip mpic_u3msi_chip = {
.shutdown = mpic_u3msi_mask_irq, .irq_shutdown = mpic_u3msi_mask_irq,
.mask = mpic_u3msi_mask_irq, .irq_mask = mpic_u3msi_mask_irq,
.unmask = mpic_u3msi_unmask_irq, .irq_unmask = mpic_u3msi_unmask_irq,
.eoi = mpic_end_irq, .eoi = mpic_end_irq,
.set_type = mpic_set_irq_type, .set_type = mpic_set_irq_type,
.set_affinity = mpic_set_affinity, .set_affinity = mpic_set_affinity,

View File

@ -114,10 +114,10 @@ static void free_msi(struct pci_pbm_info *pbm, int msi_num)
static struct irq_chip msi_irq = { static struct irq_chip msi_irq = {
.name = "PCI-MSI", .name = "PCI-MSI",
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.enable = unmask_msi_irq, .irq_enable = unmask_msi_irq,
.disable = mask_msi_irq, .irq_disable = mask_msi_irq,
/* XXX affinity XXX */ /* XXX affinity XXX */
}; };

View File

@ -3441,8 +3441,8 @@ ir_set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask)
*/ */
static struct irq_chip msi_chip = { static struct irq_chip msi_chip = {
.name = "PCI-MSI", .name = "PCI-MSI",
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
.ack = ack_apic_edge, .ack = ack_apic_edge,
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
.set_affinity = set_msi_irq_affinity, .set_affinity = set_msi_irq_affinity,
@ -3452,8 +3452,8 @@ static struct irq_chip msi_chip = {
static struct irq_chip msi_ir_chip = { static struct irq_chip msi_ir_chip = {
.name = "IR-PCI-MSI", .name = "IR-PCI-MSI",
.unmask = unmask_msi_irq, .irq_unmask = unmask_msi_irq,
.mask = mask_msi_irq, .irq_mask = mask_msi_irq,
#ifdef CONFIG_INTR_REMAP #ifdef CONFIG_INTR_REMAP
.ack = ir_ack_apic_edge, .ack = ir_ack_apic_edge,
#ifdef CONFIG_SMP #ifdef CONFIG_SMP

View File

@ -170,27 +170,27 @@ static void msix_mask_irq(struct msi_desc *desc, u32 flag)
desc->masked = __msix_mask_irq(desc, flag); desc->masked = __msix_mask_irq(desc, flag);
} }
static void msi_set_mask_bit(unsigned irq, u32 flag) static void msi_set_mask_bit(struct irq_data *data, u32 flag)
{ {
struct msi_desc *desc = get_irq_msi(irq); struct msi_desc *desc = irq_data_get_msi(data);
if (desc->msi_attrib.is_msix) { if (desc->msi_attrib.is_msix) {
msix_mask_irq(desc, flag); msix_mask_irq(desc, flag);
readl(desc->mask_base); /* Flush write to device */ readl(desc->mask_base); /* Flush write to device */
} else { } else {
unsigned offset = irq - desc->dev->irq; unsigned offset = data->irq - desc->dev->irq;
msi_mask_irq(desc, 1 << offset, flag << offset); msi_mask_irq(desc, 1 << offset, flag << offset);
} }
} }
void mask_msi_irq(unsigned int irq) void mask_msi_irq(struct irq_data *data)
{ {
msi_set_mask_bit(irq, 1); msi_set_mask_bit(data, 1);
} }
void unmask_msi_irq(unsigned int irq) void unmask_msi_irq(struct irq_data *data)
{ {
msi_set_mask_bit(irq, 0); msi_set_mask_bit(data, 0);
} }
void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg) void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)

View File

@ -11,8 +11,9 @@ struct msi_msg {
/* Helper functions */ /* Helper functions */
struct irq_desc; struct irq_desc;
extern void mask_msi_irq(unsigned int irq); struct irq_data;
extern void unmask_msi_irq(unsigned int irq); extern void mask_msi_irq(struct irq_data *data);
extern void unmask_msi_irq(struct irq_data *data);
extern void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg); extern void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
extern void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg); extern void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
extern void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg); extern void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);