powerpc: sysdev/ipic irq_data conversion.
Signed-off-by: Lennert Buytenhek <buytenh@secretlab.ca> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
d420118434
commit
687228ad40
@@ -523,10 +523,10 @@ static inline struct ipic * ipic_from_irq(unsigned int virq)
|
|||||||
|
|
||||||
#define ipic_irq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq)
|
#define ipic_irq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq)
|
||||||
|
|
||||||
static void ipic_unmask_irq(unsigned int virq)
|
static void ipic_unmask_irq(struct irq_data *d)
|
||||||
{
|
{
|
||||||
struct ipic *ipic = ipic_from_irq(virq);
|
struct ipic *ipic = ipic_from_irq(d->irq);
|
||||||
unsigned int src = ipic_irq_to_hw(virq);
|
unsigned int src = ipic_irq_to_hw(d->irq);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 temp;
|
u32 temp;
|
||||||
|
|
||||||
@@ -539,10 +539,10 @@ static void ipic_unmask_irq(unsigned int virq)
|
|||||||
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipic_mask_irq(unsigned int virq)
|
static void ipic_mask_irq(struct irq_data *d)
|
||||||
{
|
{
|
||||||
struct ipic *ipic = ipic_from_irq(virq);
|
struct ipic *ipic = ipic_from_irq(d->irq);
|
||||||
unsigned int src = ipic_irq_to_hw(virq);
|
unsigned int src = ipic_irq_to_hw(d->irq);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 temp;
|
u32 temp;
|
||||||
|
|
||||||
@@ -559,10 +559,10 @@ static void ipic_mask_irq(unsigned int virq)
|
|||||||
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipic_ack_irq(unsigned int virq)
|
static void ipic_ack_irq(struct irq_data *d)
|
||||||
{
|
{
|
||||||
struct ipic *ipic = ipic_from_irq(virq);
|
struct ipic *ipic = ipic_from_irq(d->irq);
|
||||||
unsigned int src = ipic_irq_to_hw(virq);
|
unsigned int src = ipic_irq_to_hw(d->irq);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 temp;
|
u32 temp;
|
||||||
|
|
||||||
@@ -578,10 +578,10 @@ static void ipic_ack_irq(unsigned int virq)
|
|||||||
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipic_mask_irq_and_ack(unsigned int virq)
|
static void ipic_mask_irq_and_ack(struct irq_data *d)
|
||||||
{
|
{
|
||||||
struct ipic *ipic = ipic_from_irq(virq);
|
struct ipic *ipic = ipic_from_irq(d->irq);
|
||||||
unsigned int src = ipic_irq_to_hw(virq);
|
unsigned int src = ipic_irq_to_hw(d->irq);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 temp;
|
u32 temp;
|
||||||
|
|
||||||
@@ -601,11 +601,11 @@ static void ipic_mask_irq_and_ack(unsigned int virq)
|
|||||||
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
raw_spin_unlock_irqrestore(&ipic_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type)
|
static int ipic_set_irq_type(struct irq_data *d, unsigned int flow_type)
|
||||||
{
|
{
|
||||||
struct ipic *ipic = ipic_from_irq(virq);
|
struct ipic *ipic = ipic_from_irq(d->irq);
|
||||||
unsigned int src = ipic_irq_to_hw(virq);
|
unsigned int src = ipic_irq_to_hw(d->irq);
|
||||||
struct irq_desc *desc = irq_to_desc(virq);
|
struct irq_desc *desc = irq_to_desc(d->irq);
|
||||||
unsigned int vold, vnew, edibit;
|
unsigned int vold, vnew, edibit;
|
||||||
|
|
||||||
if (flow_type == IRQ_TYPE_NONE)
|
if (flow_type == IRQ_TYPE_NONE)
|
||||||
@@ -630,10 +630,10 @@ static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type)
|
|||||||
if (flow_type & IRQ_TYPE_LEVEL_LOW) {
|
if (flow_type & IRQ_TYPE_LEVEL_LOW) {
|
||||||
desc->status |= IRQ_LEVEL;
|
desc->status |= IRQ_LEVEL;
|
||||||
desc->handle_irq = handle_level_irq;
|
desc->handle_irq = handle_level_irq;
|
||||||
desc->chip = &ipic_level_irq_chip;
|
desc->irq_data.chip = &ipic_level_irq_chip;
|
||||||
} else {
|
} else {
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
desc->chip = &ipic_edge_irq_chip;
|
desc->irq_data.chip = &ipic_edge_irq_chip;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* only EXT IRQ senses are programmable on ipic
|
/* only EXT IRQ senses are programmable on ipic
|
||||||
@@ -661,19 +661,19 @@ static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type)
|
|||||||
/* level interrupts and edge interrupts have different ack operations */
|
/* level interrupts and edge interrupts have different ack operations */
|
||||||
static struct irq_chip ipic_level_irq_chip = {
|
static struct irq_chip ipic_level_irq_chip = {
|
||||||
.name = "IPIC",
|
.name = "IPIC",
|
||||||
.unmask = ipic_unmask_irq,
|
.irq_unmask = ipic_unmask_irq,
|
||||||
.mask = ipic_mask_irq,
|
.irq_mask = ipic_mask_irq,
|
||||||
.mask_ack = ipic_mask_irq,
|
.irq_mask_ack = ipic_mask_irq,
|
||||||
.set_type = ipic_set_irq_type,
|
.irq_set_type = ipic_set_irq_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct irq_chip ipic_edge_irq_chip = {
|
static struct irq_chip ipic_edge_irq_chip = {
|
||||||
.name = "IPIC",
|
.name = "IPIC",
|
||||||
.unmask = ipic_unmask_irq,
|
.irq_unmask = ipic_unmask_irq,
|
||||||
.mask = ipic_mask_irq,
|
.irq_mask = ipic_mask_irq,
|
||||||
.mask_ack = ipic_mask_irq_and_ack,
|
.irq_mask_ack = ipic_mask_irq_and_ack,
|
||||||
.ack = ipic_ack_irq,
|
.irq_ack = ipic_ack_irq,
|
||||||
.set_type = ipic_set_irq_type,
|
.irq_set_type = ipic_set_irq_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int ipic_host_match(struct irq_host *h, struct device_node *node)
|
static int ipic_host_match(struct irq_host *h, struct device_node *node)
|
||||||
|
Reference in New Issue
Block a user