Skip to content

Commit

Permalink
genirq: Remove default magic
Browse files Browse the repository at this point in the history
Now that everything uses the wrappers, we can remove the default
functions. None of those functions is performance critical.

That makes the IRQ_MASKED flag tracking fully consistent.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Thomas Gleixner committed Feb 19, 2011
1 parent 8792347 commit 50f7c03
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 60 deletions.
73 changes: 15 additions & 58 deletions kernel/irq/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,45 +208,29 @@ void irq_shutdown(struct irq_desc *desc)
{
desc->status |= IRQ_MASKED | IRQ_DISABLED;
desc->depth = 1;
desc->irq_data.chip->irq_shutdown(&desc->irq_data);
if (desc->irq_data.chip->irq_shutdown)
desc->irq_data.chip->irq_shutdown(&desc->irq_data);
if (desc->irq_data.chip->irq_disable)
desc->irq_data.chip->irq_disable(&desc->irq_data);
else
desc->irq_data.chip->irq_mask(&desc->irq_data);
}

void irq_enable(struct irq_desc *desc)
{
desc->irq_data.chip->irq_enable(&desc->irq_data);
}

void irq_disable(struct irq_desc *desc)
{
desc->irq_data.chip->irq_disable(&desc->irq_data);
}

/*
* default enable function
*/
static void default_enable(struct irq_data *data)
{
struct irq_desc *desc = irq_data_to_desc(data);

desc->irq_data.chip->irq_unmask(&desc->irq_data);
if (desc->irq_data.chip->irq_enable)
desc->irq_data.chip->irq_enable(&desc->irq_data);
else
desc->irq_data.chip->irq_unmask(&desc->irq_data);
desc->status &= ~IRQ_MASKED;
}

/*
* default disable function
*/
static void default_disable(struct irq_data *data)
{
}

/*
* default shutdown function
*/
static void default_shutdown(struct irq_data *data)
void irq_disable(struct irq_desc *desc)
{
struct irq_desc *desc = irq_data_to_desc(data);

desc->irq_data.chip->irq_mask(&desc->irq_data);
if (desc->irq_data.chip->irq_disable) {
desc->irq_data.chip->irq_disable(&desc->irq_data);
desc->status |= IRQ_MASKED;
}
}

#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
Expand Down Expand Up @@ -334,10 +318,6 @@ static void compat_bus_sync_unlock(struct irq_data *data)
void irq_chip_set_defaults(struct irq_chip *chip)
{
#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
/*
* Compat fixup functions need to be before we set the
* defaults for enable/disable/startup/shutdown
*/
if (chip->enable)
chip->irq_enable = compat_irq_enable;
if (chip->disable)
Expand All @@ -346,31 +326,8 @@ void irq_chip_set_defaults(struct irq_chip *chip)
chip->irq_shutdown = compat_irq_shutdown;
if (chip->startup)
chip->irq_startup = compat_irq_startup;
#endif
/*
* The real defaults
*/
if (!chip->irq_enable)
chip->irq_enable = default_enable;
if (!chip->irq_disable)
chip->irq_disable = default_disable;
/*
* We use chip->irq_disable, when the user provided its own. When
* we have default_disable set for chip->irq_disable, then we need
* to use default_shutdown, otherwise the irq line is not
* disabled on free_irq():
*/
if (!chip->irq_shutdown)
chip->irq_shutdown = chip->irq_disable != default_disable ?
chip->irq_disable : default_shutdown;

#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
if (!chip->end)
chip->end = dummy_irq_chip.end;

/*
* Now fix up the remaining compat handlers
*/
if (chip->bus_lock)
chip->irq_bus_lock = compat_bus_lock;
if (chip->bus_sync_unlock)
Expand Down
4 changes: 2 additions & 2 deletions kernel/irq/manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -440,8 +440,8 @@ void enable_irq(unsigned int irq)
if (!desc)
return;

if (WARN(!desc->irq_data.chip || !desc->irq_data.chip->irq_enable,
KERN_ERR "enable_irq before setup/request_irq: irq %u\n", irq))
if (WARN(!desc->irq_data.chip,
KERN_ERR "enable_irq before setup/request_irq: irq %u\n", irq))
return;

chip_bus_lock(desc);
Expand Down

0 comments on commit 50f7c03

Please sign in to comment.