Commit 729e7d7e authored by David S. Miller's avatar David S. Miller

[SPARC64]: Minor irq handling cleanups.

Use struct irq_chip instead of hw_interrupt_type.

Delete hw_resend_irq(), totally unused.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 15f14834
...@@ -372,14 +372,14 @@ static void run_pre_handler(unsigned int virt_irq) ...@@ -372,14 +372,14 @@ static void run_pre_handler(unsigned int virt_irq)
} }
} }
static struct hw_interrupt_type sun4u_irq = { static struct irq_chip sun4u_irq = {
.typename = "sun4u", .typename = "sun4u",
.enable = sun4u_irq_enable, .enable = sun4u_irq_enable,
.disable = sun4u_irq_disable, .disable = sun4u_irq_disable,
.end = sun4u_irq_end, .end = sun4u_irq_end,
}; };
static struct hw_interrupt_type sun4u_irq_ack = { static struct irq_chip sun4u_irq_ack = {
.typename = "sun4u+ack", .typename = "sun4u+ack",
.enable = sun4u_irq_enable, .enable = sun4u_irq_enable,
.disable = sun4u_irq_disable, .disable = sun4u_irq_disable,
...@@ -387,14 +387,14 @@ static struct hw_interrupt_type sun4u_irq_ack = { ...@@ -387,14 +387,14 @@ static struct hw_interrupt_type sun4u_irq_ack = {
.end = sun4u_irq_end, .end = sun4u_irq_end,
}; };
static struct hw_interrupt_type sun4v_irq = { static struct irq_chip sun4v_irq = {
.typename = "sun4v", .typename = "sun4v",
.enable = sun4v_irq_enable, .enable = sun4v_irq_enable,
.disable = sun4v_irq_disable, .disable = sun4v_irq_disable,
.end = sun4v_irq_end, .end = sun4v_irq_end,
}; };
static struct hw_interrupt_type sun4v_irq_ack = { static struct irq_chip sun4v_irq_ack = {
.typename = "sun4v+ack", .typename = "sun4v+ack",
.enable = sun4v_irq_enable, .enable = sun4v_irq_enable,
.disable = sun4v_irq_disable, .disable = sun4v_irq_disable,
...@@ -493,22 +493,6 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) ...@@ -493,22 +493,6 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
return bucket->virt_irq; return bucket->virt_irq;
} }
void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq)
{
struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);
unsigned long pstate;
unsigned int *ent;
__asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate));
__asm__ __volatile__("wrpr %0, %1, %%pstate"
: : "r" (pstate), "i" (PSTATE_IE));
ent = irq_work(smp_processor_id());
bucket->irq_chain = *ent;
*ent = __irq(bucket);
set_softint(1 << PIL_DEVICE_IRQ);
__asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate));
}
void ack_bad_irq(unsigned int virt_irq) void ack_bad_irq(unsigned int virt_irq)
{ {
struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);
......
#ifndef __ASM_SPARC64_HW_IRQ_H #ifndef __ASM_SPARC64_HW_IRQ_H
#define __ASM_SPARC64_HW_IRQ_H #define __ASM_SPARC64_HW_IRQ_H
extern void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment