Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/rp2040/hardware_regs/RP2040.svd
Original file line number Diff line number Diff line change
Expand Up @@ -51021,5 +51021,38 @@ SPDX-License-Identifier: BSD-3-Clause
</register>
</registers>
</peripheral>
<peripheral>
<name>SPARE_IRQ</name>
<baseAddress>0x00000000</baseAddress>
<addressBlock>
<offset>0</offset>
<size>4</size>
<usage>reserved</usage>
</addressBlock>
<interrupt>
<name>SPARE_IRQ_0</name>
<value>26</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_1</name>
<value>27</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_2</name>
<value>28</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_3</name>
<value>29</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_4</name>
<value>30</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_5</name>
<value>31</value>
</interrupt>
</peripheral>
</peripherals>
</device>
18 changes: 18 additions & 0 deletions src/rp2040/hardware_regs/include/hardware/regs/intctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@
#define I2C0_IRQ 23
#define I2C1_IRQ 24
#define RTC_IRQ 25
#define SPARE_IRQ_0 26
#define SPARE_IRQ_1 27
#define SPARE_IRQ_2 28
#define SPARE_IRQ_3 29
#define SPARE_IRQ_4 30
#define SPARE_IRQ_5 31
#else
/**
* \brief Interrupt numbers on RP2040 (used as typedef \ref irq_num_t)
Expand Down Expand Up @@ -71,6 +77,12 @@ typedef enum irq_num_rp2040 {
I2C0_IRQ = 23, ///< Select I2C0's IRQ output
I2C1_IRQ = 24, ///< Select I2C1's IRQ output
RTC_IRQ = 25, ///< Select RTC's IRQ output
SPARE_IRQ_0 = 26, ///< Select SPARE IRQ 0
SPARE_IRQ_1 = 27, ///< Select SPARE IRQ 1
SPARE_IRQ_2 = 28, ///< Select SPARE IRQ 2
SPARE_IRQ_3 = 29, ///< Select SPARE IRQ 3
SPARE_IRQ_4 = 30, ///< Select SPARE IRQ 4
SPARE_IRQ_5 = 31, ///< Select SPARE IRQ 5
IRQ_COUNT
} irq_num_t;
#endif
Expand Down Expand Up @@ -101,6 +113,12 @@ typedef enum irq_num_rp2040 {
#define isr_i2c0 isr_irq23
#define isr_i2c1 isr_irq24
#define isr_rtc isr_irq25
#define isr_spare_0 isr_irq26
#define isr_spare_1 isr_irq27
#define isr_spare_2 isr_irq28
#define isr_spare_3 isr_irq29
#define isr_spare_4 isr_irq30
#define isr_spare_5 isr_irq31

#endif // _INTCTRL_H

35 changes: 35 additions & 0 deletions src/rp2350/hardware_regs/RP2350.svd
Original file line number Diff line number Diff line change
Expand Up @@ -105845,5 +105845,40 @@ SPDX-License-Identifier: BSD-3-Clause
</register>
</registers>
</peripheral>

<peripheral>
<name>SPARE_IRQ</name>
<baseAddress>0x00000000</baseAddress>
<addressBlock>
<offset>0</offset>
<size>4</size>
<usage>reserved</usage>
</addressBlock>
<interrupt>
<name>SPARE_IRQ_0</name>
<value>46</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_1</name>
<value>47</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_2</name>
<value>48</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_3</name>
<value>49</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_4</name>
<value>50</value>
</interrupt>
<interrupt>
<name>SPARE_IRQ_5</name>
<value>51</value>
</interrupt>
</peripheral>

</peripherals>
</device>
12 changes: 6 additions & 6 deletions src/rp2350/hardware_regs/include/hardware/regs/intctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@
#define PLL_USB_IRQ 43
#define POWMAN_IRQ_POW 44
#define POWMAN_IRQ_TIMER 45
#define SPAREIRQ_IRQ_0 46
#define SPAREIRQ_IRQ_1 47
#define SPAREIRQ_IRQ_2 48
#define SPAREIRQ_IRQ_3 49
#define SPAREIRQ_IRQ_4 50
#define SPAREIRQ_IRQ_5 51
#define SPARE_IRQ_0 46
#define SPARE_IRQ_1 47
#define SPARE_IRQ_2 48
#define SPARE_IRQ_3 49
#define SPARE_IRQ_4 50
#define SPARE_IRQ_5 51
#else
/**
* \brief Interrupt numbers on RP2350 (used as typedef \ref irq_num_t)
Expand Down
6 changes: 6 additions & 0 deletions src/rp2_common/hardware_irq/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
PICO_RUNTIME_INIT_FUNC_PER_CORE(runtime_init_per_core_irq_priorities, PICO_RUNTIME_INIT_PER_CORE_IRQ_PRIORITIES);
#endif

static_assert(IRQ_COUNT == NUM_IRQS, "");
// "USER IRQs" use the spare irq numbers
#if NUM_USER_IRQS
static_assert(IRQ_COUNT - NUM_USER_IRQS == SPARE_IRQ_0, "");
#endif

#if PICO_VTABLE_PER_CORE
static uint8_t user_irq_claimed[NUM_CORES];
static inline uint8_t *user_irq_claimed_ptr(void) {
Expand Down
Loading