Changes

963 bytes added ,  21:41, 10 May 2020
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
| DMA
+
| Old CDMA Faulting (eg. CCR=0, or event>15)
 
|-
 
|-
 
| 0x3A
 
| 0x3A
 
| Kernel
 
| Kernel
| DMA
+
| New CDMA Event 0..31 (shared IRQ line)
 
|-
 
|-
 
| 0x3B
 
| 0x3B
 
| Kernel
 
| Kernel
| DMA
+
| 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)
| Related to mvd services
+
| 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
| IR
+
| 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. 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).
+
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 =