[PATCH] powerpc: enable irq's for platform functions.
Make the platform function interrupt functions actually work. Calls irq_enable() for the first in the list, and irq_disable() for the last. Added *func to struct irq_client so the the user can pass just that to pmf_unregister_irq_client(). Signed-off-by: Ben Collins <bcollins@ubuntu.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
b62735d9c6
commit
cc0fa84a01
@@ -862,21 +862,28 @@ int pmf_register_irq_client(struct device_node *target,
|
||||
spin_unlock_irqrestore(&pmf_lock, flags);
|
||||
return -ENODEV;
|
||||
}
|
||||
if (list_empty(&func->irq_clients))
|
||||
func->dev->handlers->irq_enable(func);
|
||||
list_add(&client->link, &func->irq_clients);
|
||||
client->func = func;
|
||||
spin_unlock_irqrestore(&pmf_lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pmf_register_irq_client);
|
||||
|
||||
void pmf_unregister_irq_client(struct device_node *np,
|
||||
const char *name,
|
||||
struct pmf_irq_client *client)
|
||||
void pmf_unregister_irq_client(struct pmf_irq_client *client)
|
||||
{
|
||||
struct pmf_function *func = client->func;
|
||||
unsigned long flags;
|
||||
|
||||
BUG_ON(func == NULL);
|
||||
|
||||
spin_lock_irqsave(&pmf_lock, flags);
|
||||
client->func = NULL;
|
||||
list_del(&client->link);
|
||||
if (list_empty(&func->irq_clients))
|
||||
func->dev->handlers->irq_disable(func);
|
||||
spin_unlock_irqrestore(&pmf_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pmf_unregister_irq_client);
|
||||
|
Reference in New Issue
Block a user