| /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| * |
| * Chip-specific part of the IRQ handling. |
| */ |
| |
| #ifndef __CROS_EC_IRQ_CHIP_H |
| #define __CROS_EC_IRQ_CHIP_H |
| |
| /** |
| * Enable an IRQ in the chip interrupt controller. |
| * |
| * @param irq interrupt request index. |
| * @return CPU interrupt number to enable if any, -1 else. |
| */ |
| int chip_enable_irq(int irq); |
| |
| /** |
| * Disable an IRQ in the chip interrupt controller. |
| * |
| * @param irq interrupt request index. |
| * @return CPU interrupt number to disable if any, -1 else. |
| */ |
| int chip_disable_irq(int irq); |
| |
| /** |
| * Clear a pending IRQ in the chip interrupt controller. |
| * |
| * @param irq interrupt request index. |
| * @return CPU interrupt number to clear if any, -1 else. |
| * |
| * Note that most interrupts can be removed from the pending state simply by |
| * handling whatever caused the interrupt in the first place. This only needs |
| * to be called if an interrupt handler disables itself without clearing the |
| * reason for the interrupt, and then the interrupt is re-enabled from a |
| * different context. |
| */ |
| int chip_clear_pending_irq(int irq); |
| |
| /** |
| * Software-trigger an IRQ in the chip interrupt controller. |
| * |
| * @param irq interrupt request index. |
| * @return CPU interrupt number to trigger if any, -1 else. |
| */ |
| int chip_trigger_irq(int irq); |
| |
| /** |
| * Initialize chip interrupt controller. |
| */ |
| void chip_init_irqs(void); |
| |
| /** |
| * Return interrupt number of software interrupt. |
| */ |
| int get_sw_int(void); |
| |
| #endif /* __CROS_EC_IRQ_CHIP_H */ |