|
Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
|
BCM283x interrupt-controller driver API. More...
#include <stdint.h>Go to the source code of this file.
Macros | |
| #define | BCM283X_ARMC_IRQ_BASE 32U |
| First Zephyr IRQ number routed to the BCM2835 ARMC peripheral aggregator. | |
| #define | BCM283X_ARMC_IRQ_LIMIT (BCM283X_ARMC_IRQ_BASE + 96U) |
| One past the last ARMC IRQ in the Zephyr IRQ space. | |
| #define | BCM283X_IRQ_IS_L1(irq) |
True when irq falls in the BCM2836 ARM-local intc range (0..9). | |
| #define | BCM283X_IRQ_IS_ARMC(irq) |
True when irq falls in the BCM2835 ARMC peripheral range (32..127). | |
| #define | BCM2836_L1_IRQ_GPU_BIT 8U |
| L1 IRQ_SOURCE bit position for the GPU cascade. | |
| #define | BCM2836_L1_IRQ_PMU_BIT 9U |
| L1 IRQ_SOURCE bit position for the per-core PMU IRQ. | |
Functions | |
| void | bcm2836_l1_intc_init (void) |
| Initialise the BCM2836 ARM-local interrupt controller. | |
| void | bcm2836_l1_intc_irq_enable (unsigned int irq) |
| Enable an L1 IRQ source. | |
| void | bcm2836_l1_intc_irq_disable (unsigned int irq) |
| Disable an L1 IRQ source. | |
| int | bcm2836_l1_intc_irq_is_enabled (unsigned int irq) |
| Query whether an L1 IRQ source is currently enabled. | |
| unsigned int | bcm2836_l1_intc_irq_get_active (void) |
| Decode the firing L1 IRQ. | |
| void | bcm2835_armctrl_ic_init (void) |
| Initialise the BCM2835 ARMC peripheral interrupt controller. | |
| void | bcm2835_armctrl_ic_irq_enable (unsigned int irq) |
| Enable an ARMC peripheral IRQ source. | |
| void | bcm2835_armctrl_ic_irq_disable (unsigned int irq) |
| Disable an ARMC peripheral IRQ source. | |
| int | bcm2835_armctrl_ic_irq_is_enabled (unsigned int irq) |
| Query whether an ARMC peripheral IRQ source is enabled. | |
| unsigned int | bcm2835_armctrl_ic_irq_get_active (void) |
| Decode the firing ARMC peripheral IRQ. | |
BCM283x interrupt-controller driver API.
Two physical controllers back a single flat Zephyr IRQ space on BCM2710 (Pi 2 / Pi 3 / Pi Zero 2 W):
The SoC layer (soc/brcm/bcm2710/soc_irq.c) installs the z_soc_irq_* arch hooks under CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER and dispatches to the two driver function families below based on which IRQ range the caller is asking about. The drivers own their own MMIO via device_map().