Changes

963 bytes added ,  22: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 =