ARM11 Interrupts: Difference between revisions
Updating with some of nocash findings →Hardware Interrupts |
|||
Line 106: | Line 106: | ||
| P3D | | P3D | ||
|- | |- | ||
| 0x30 | | 0x30-0x38 | ||
| Kernel | | Kernel | ||
| | | Old CDMA Event 0..8 (9 separate IRQ lines) | ||
|- | |- | ||
| 0x39 | | 0x39 | ||
| Kernel | | Kernel | ||
| | | Old CDMA Faulting (eg. CCR=0, or event>15) | ||
|- | |- | ||
| 0x3A | | 0x3A | ||
| Kernel | | Kernel | ||
| | | New CDMA Event 0..31 (shared IRQ line) | ||
|- | |- | ||
| 0x3B | | 0x3B | ||
| Kernel | | Kernel | ||
| | | New CDMA Faulting (eg. CCR=0) | ||
|- | |- | ||
| 0x40 | | 0x40 | ||
Line 128: | Line 128: | ||
| 0x41 | | 0x41 | ||
| nwm | | nwm | ||
| | | WIFI SDIO Controller IRQ pin @ 0x10122000 | ||
|- | |- | ||
| 0x42 | | 0x42 | ||
| nwm_dev? | | nwm_dev? | ||
| WIFI SDIO Controller @ 0x10100000 | | Debug WIFI SDIO Controller @ 0x10100000 ? | ||
|- | |||
| 0x43 | |||
| nwm_dev? | |||
| Debug WIFI SDIO Controller @ 0x10100000 ? | |||
|- | |||
| 0x44 | |||
| ? | |||
| NTRCARD (maybe?) | |||
|- | |- | ||
| 0x45 | | 0x45 | ||
| mvd (New3DS) | | mvd (New3DS) | ||
| | | L2B_0 (First RGB-to-RGBA Converter) | ||
|- | |- | ||
| 0x46 | | 0x46 | ||
| mvd (New3DS) | | mvd (New3DS) | ||
| | | L2B_1 (Second RGB-to-RGBA Converter) | ||
|- | |- | ||
| 0x48 | | 0x48 | ||
| camera | | camera | ||
| | | Camera Bus 0 (DSi cameras) | ||
|- | |- | ||
| 0x49 | | 0x49 | ||
| camera | | camera | ||
| | | Camera Bus 1 (left-eye) | ||
|- | |- | ||
| 0x4A | | 0x4A | ||
Line 160: | Line 168: | ||
| 0x4C | | 0x4C | ||
| TwlBg | | TwlBg | ||
| | | LGYFB_0 Legacy GBA/NDS Video | ||
|- | |- | ||
| 0x4D | | 0x4D | ||
| TwlBg | | TwlBg | ||
| | | LGYFB_1 Legacy GBA/NDS Video | ||
|- | |- | ||
| 0x4E | | 0x4E | ||
Line 172: | Line 180: | ||
| 0x4F | | 0x4F | ||
| mvd (New3DS) | | mvd (New3DS) | ||
| | | MVD general interrupt? | ||
|- | |- | ||
| 0x50 | | 0x50 | ||
| pxi, TwlBg | | pxi, TwlBg | ||
| Sync | | Sync (bit 29 from Arm9's PXI_SYNC) | ||
|- | |- | ||
| 0x51 | | 0x51 | ||
| pxi, TwlBg | | pxi, TwlBg | ||
| | | Sync 2 (bit 30 from Arm9's PXI_SYNC) | ||
|- | |- | ||
| 0x52 | | 0x52 | ||
Line 208: | Line 216: | ||
| 0x58 | | 0x58 | ||
| Kernel | | Kernel | ||
| PDN | | PDN Wake Event | ||
|- | |- | ||
| 0x59 | | 0x59 | ||
| TwlBg | | TwlBg | ||
| ? | | PDN "switch to legacy mode" done (?) | ||
|- | |- | ||
| 0x5A | | 0x5A | ||
| mic | | mic | ||
| ? | | General microphone interrupt (?) | ||
|- | |- | ||
| 0x5C | | 0x5C | ||
| i2c, TwlBg | | i2c, TwlBg | ||
| I2C Bus2 work done | | I2C Bus2 work done | ||
|- | |||
| 0x5F | |||
| mp | |||
| DS WiFi registers | |||
|- | |- | ||
| 0x60 | | 0x60 | ||
Line 232: | Line 244: | ||
| 0x63 | | 0x63 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| Touchscreen | | Touchscreen Pen Down | ||
|- | |- | ||
| 0x64 | | 0x64 | ||
Line 240: | Line 252: | ||
| 0x66 | | 0x66 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA1.bit1 (sfio = ?) | ||
|- | |- | ||
| 0x68 | | 0x68 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| | | C-stick Interrupt | ||
|- | |- | ||
| 0x69 | | 0x69 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| | | IrDA Interrupt | ||
|- | |- | ||
| 0x6A | | 0x6A | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| | | Gyro Interrupt | ||
|- | |- | ||
| 0x6B | | 0x6B | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit3 (sfio = ?) | ||
|- | |- | ||
| 0x6C | | 0x6C | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit4 (sfio = ?) | ||
|- | |- | ||
| 0x6D | | 0x6D | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit5 (sfio = ?) | ||
|- | |- | ||
| 0x6E | | 0x6E | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit6 (sfio = ?) | ||
|- | |- | ||
| 0x6F | | 0x6F | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit7 (sfio = ?) | ||
|- | |- | ||
| 0x70 | | 0x70 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| ? | | GPIO_DATA3.bit8 (sfio = ?) | ||
|- | |- | ||
| 0x71 | | 0x71 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| MCU (HOME/POWER pressed/released or WiFi switch pressed) | | MCU (HOME/POWER pressed/released or WiFi switch pressed, etc.) | ||
|- | |- | ||
| 0x72 | | 0x72 | ||
| gpio, TwlBg | | gpio, TwlBg | ||
| | | NFC | ||
|- | |- | ||
| 0x73 | | 0x73 | ||
| TwlBg | | TwlBg | ||
| ? | | GPIO_DATA3.bit11 (sfio = ?) | ||
|- | |- | ||
| 0x74 | | 0x74 | ||
Line 297: | Line 309: | ||
| ? | | ? | ||
| Gamecard inserted | | Gamecard inserted | ||
|- | |||
| 0x76 | |||
| - | |||
| L2C | |||
|- | |- | ||
| 0x78 to 0x7B | | 0x78 to 0x7B | ||
Line 305: | Line 321: | ||
0x7C to 0x84 (bit2 clear) | 0x7C to 0x84 (bit2 clear) | ||
| Kernel | | Kernel | ||
| | | Other PMU interrupts (line may not exist at all) | ||
|} | |} | ||
(interrupts from 0x80 and up can't be mapped in available builds of the kernel) | (interrupts from 0x80 and up can't be mapped in available builds of the kernel) | ||
There are 2 tables in the ARM11 kernel: the first has 32 * 2(or 32 * 4) 8-byte entries. | There are 2 tables in the ARM11 kernel: the first has 32 * 2(or 32 * 4) 8-byte entries. This table is for the private interrupts that belong to each core. The data for each interrupt can be found by doing table_base + (core_num * 0x100) + (intr_num * 8). The second table is for public hardware interrupts and the data for each interrupt can be retrieved by doing table_base + (intr_num * 8). | ||
= InterruptData = | = InterruptData = |