Author Topic: Interrupt IDs  (Read 1342 times)

a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 12241
  • Maintenance mode
Interrupt IDs
« on: January 23, 2018, 07:16:12 PM »
After writing these notes (in particular, the section about interrupts), I've noticed we didn't document what all these interrupts are used for. This info is interesting for emulation and understanding how Canon code works; they are not used directly in ML code.

So, here's my first attempt to list all the interrupts we know about. Sources of info:

- startup-logs or emulation logs with register_interrupt calls enabled (some have names in Canon code):
Code: [Select]
grep --text -nro " register_interrupt(.*)" startup-logs/ tests/*/gdb.log | grep -o register_interrupt.*

- interrupts declared in QEMU, model_list.c
Code: [Select]
cat qemu-2.5.0/hw/eos/model_list.c | grep -o "\..*interrupt.*=.*,"

- interrupts scattered in QEMU source: eos_trigger_int (either hardcoded IDs or arrays)
Code: [Select]
FILES=$(cat qemu-2.5.0/hw/eos/Makefile.objs | grep -E "eos/\w+.o" | grep -oE "\w+.o" | cut -d . -f 1 | sed -e 's/$/.c/' | sed -e 's!^!qemu-2.5.0/hw/eos/!')
cat $FILES | grep "eos_trigger_int\|^\w.*(" | grep -B 1 eos_trigger_int
cat $FILES | grep -zoE " [a-zA-Z_]*interrupt[a-zA-Z]*\[[^[]*] = {[^{]*}" | tr "\\n" " " | tr "\\0" "\\n"

- Omar interrupts

Results (machine output, take with a grain of salt):

Code: [Select]
0x01:
0x02:
0x03: WdtInt
0x06:
0x09: dryos_timer
0x0A: dryos_timer
0x0D: Omar
0x0E: UTimerDriver
0x0F:
0x10: OC4_14, hptimer
0x16:
0x18: hptimer
0x19: OCH_SPx
0x1A: OCH_SPx, hptimer
0x1B: OCHxEPx, dryos_timer
0x1C: OCH_SPx, Omar, hptimer
0x1D: OCHxEPx
0x1E: OCH_SPx, UTimerDriver, hptimer
0x1F: OCHxEPx
0x20: ICAPCHx
0x21: ICAPCHx
0x22: ICAPCHx
0x23: ICAPCHx
0x24: ICAPCHx
0x25: ICAPCHx
0x26: ICAPCHx
0x27: ICAPCHx
0x28: OC4_14, hptimer
0x29: OCHxEPx, sd_dma
0x2A: MREQ_ISR, mpu_mreq
0x2C: DmaAD
0x2D: DmaDA, Omar
0x2E: UTimerDriver, uart_rx
0x2F: BLTDMA, BLTDMAC0, BltDmac, dma
0x30: CFDMADriver, cf_dma
0x32: SDDMADriver, SdDmaInt, sd_dma
0x33:
0x34:
0x35: SlowMossy
0x36: SIO3_ISR, mpu_sio3
0x37: INTC_SIO4
0x38: uart_rx
0x39: OCH_SPx, uart_rx
0x3A: uart_tx
0x3C: Omar
0x3E: UTimerDriver
0x40:
0x41: WRDMAC1
0x42: ASIFAdc
0x43: ASIFDac
0x44: HDMIDET, MICDET, USBDET
0x45: VIDEODET
0x47: MICDET, VARISW3
0x49: OCHxEPx
0x4A: CFDriver, MREQ2_ICU, cf_driver, sd_driver
0x4B: SDDriver, SdConInt, sd_driver
0x4D: Omar
0x4E: UTimerDriver
0x50: EMEGENCY, EMERGENCY_ISR, MREQ_ISR, mpu_mreq
0x51: CAPREADY, CARDDOOR_ISR
0x52: IMGPOWDET, MREQ_ISR, mpu_mreq
0x53: CAPREADY, HDMIDET
0x54: DOS_ISR, EMEGENCY, HDMIDET, MICDET, USBDET, VIDEODET
0x55: ASCHK_ISR, FUNCSW, USBDET, VIDEODET
0x56: HDMIDET, IMGPOWDET, MICDET, TOEDET, USBDET, VARISW3, VIDEODET
0x57: DOSCHK_ISR, TOEDET, USBDET, VARISW3
0x58: EDmacWR0, WEDmac0, edmac
0x59: EDmacWR1, OCH_SPx, WEDmac1, edmac
0x5A: EDmacWR2, LENSIF_SEL, WEDmac2, edmac
0x5B: EDmacWR3, WEDmac3, edmac
0x5C: EDmacWR4, Omar, WEDmac4, edmac
0x5D: EDmacRD0, REDmac0
0x5E: EDmacRD1, REDmac1, UTimerDriver, edmac
0x5F: EDmacRD2, REDmac2, edmac
0x60: CompleteReadOperation
0x61: AfComplete
0x62: AfOverRun
0x63: Obinteg
0x64: JP51_INT_R, JpCore, jpcore
0x65: ADKIZ, ADMERG, IntDefectCorrect, prepro_execute
0x66: Integral, WB Integ, WbInteg
0x67: Block, WbBlock
0x68: EngInt PBVD, Engine PB VD, PB_VD, display
0x69: EngInt PBERROR, EngInt PBVD, OCHxEPx, PB_ERR, Pb error
0x6A: HEAD1, Head1, head
0x6B: HEAD2, Head2, head
0x6C: HEADERROR, HeadError
0x6D: EDmacWR5, Omar, WEDmac5, edmac
0x6E: EDmacRD3, REDmac3, UTimerDriver, edmac
0x70: HarbInt
0x74: BLTDMA, BLTDMAC1, BltDmac, dma
0x75: BltDmac, dma
0x76: BltDmac, dma
0x77: HDMIDET, USBDET
0x79: OCH_SPx
0x7A: XINT_7
0x7C: Omar
0x7E: UTimerDriver
0x80:
0x81:
0x82: CFDriver, cf_driver
0x83: WEDmac8, edmac
0x84:
0x86:
0x88:
0x89: OCHxEPx
0x8A: INT_LM, WEDmac9, edmac
0x8B: REDmac6
0x8C:
0x8D:
0x90: WEDmac6
0x91: REDmac4
0x92: REDmac5, REDmac7, edmac
0x93: CompleteOperation
0x94:
0x95: edmac
0x96: REDmac10, edmac
0x97: REDmac11, edmac
0x98: CAMIF_0
0x99: OCH_SPx
0x9A: CompleteOperation
0x9B:
0x9C: Omar, SEQ
0x9E: REDmac13, edmac
0x9F: edmac
0xA0: BltDmac, EekoBltDmac, dma
0xA1: BltDmac, EekoBltDmac, dma
0xA3: Jp57, JpCore2
0xA5: RDDMAC15, edmac
0xA8: BltDmac, CAMIF_1, dma
0xA9: BltDmac, OCHxEPx, dma
0xAA: CompleteOperation
0xB0: SSIO_SIOINT
0xB1: SDDriver, sd_driver
0xB2: OCH_SPx
0xB3: OCH_SPx
0xB8: CFDMADriver, SDDMADriver, sd_dma
0xB9: OCH_SPx
0xBA: OCH_SPx
0xBB: OCH_SPx
0xBC: Omar
0xBE: SdDmaInt0, sd_dma
0xC0: WEDmac6, edmac
0xC1: REDmac4, edmac
0xC5: SAFARI_INT
0xC6: SAFARI_INT_ERROR
0xC8: REDmac5, edmac
0xC9: Fencing_A, OCHxEPx
0xCA: INT_LM, WEDmac10, edmac
0xCB: WEDmac11, edmac
0xCD: Omar
0xCE: SerialFlash
0xD0: Fencing_B
0xD1: Fencing_C
0xD2: WEDmac12, edmac
0xD3: WEDmac13, edmac
0xD9: HEAD3, Head3, ICAPCHx, head
0xDA: WEDmac14
0xDB: WRDMAC15, edmac
0xDC: Omar
0xDD:
0xDE: SerialFlash
0xE0: HEAD4, head
0xE1: SsgStopIrq
0xE2: REDmac8, edmac
0xE3: CFDMADriver, cf_dma
0xE4: GaUSB20Hal
0xE6:
0xE8:
0xE9: ICAPCHx
0xEE: SdConInt0, sd_driver
0xF9: ICAPCHx, WEDmac7
0xFC: OCH_SPx, Omar
0xFD:
0xFE: SerialFlash, dryos_timer, serial_flash
0xFF:
0x102: RDDMAC13
0x109: ICAPCHx
0x10C: BltDmac
0x10D:
0x10E: SerialFlash
0x111: Eeko WakeUp
0x115:
0x117:
0x119: ICAPCHx
0x125:
0x127:
0x129: ICAPCHx
0x12A: mpu_mreq
0x12D:
0x137:
0x139: ICAPCHx
0x13A: CAPREADY
0x13E: xdmac
0x140: ICOCCHx
0x141: ICAPCHx
0x142: ICAPCHx
0x145:
0x147: SIO3_ISR, mpu_sio3
0x148: ICAPCHx
0x149: ICAPCHx
0x14A: ICAPCHx
0x14E: xdmac
0x150: ICAPCHx
0x151: ICAPCHx
0x152: ICAPCHx
0x157:
0x158: OCH_SPx
0x159: ICAPCHx, OCH_SPx
0x15A: OCH_SPx
0x15D: uart_rx
0x15E: xdmac
0x162: SerialFlash
0x167:
0x169: ICAPCHx
0x16D: uart_tx
0x16E: xdmac
0x171: SDDMADriver, sd_dma
0x172: SDDriver, sd_driver
0x174:
0x177:
0x178: DOS_ISR, MICDET
0x179: ICAPCHx
0x17B: SerialFlash, serial_flash
0x187:
0x189: ICAPCHx
0x18B: WdtInt

TODO:

- group by camera generation, DIGIC version etc
- other sources of info (such as strings present in the interrupt handling function, or other notes about them)
- brute-force interrupts (trigger manually) and see what the firmware is trying to do
- auto-build the above list on Jenkins (so it will be always up to date, at least with QEMU sources)

Ant123

  • Contributor
  • Member
  • *****
  • Posts: 118
Re: Interrupt IDs
« Reply #1 on: January 23, 2018, 08:27:41 PM »
0x145: MZRM

a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 12241
  • Maintenance mode
Re: Interrupt IDs
« Reply #2 on: March 12, 2018, 06:00:09 PM »
TODO:

- group by camera generation, DIGIC version etc

Code: [Select]
       DIGIC 3                   DIGIC 4                   DIGIC 5                   DIGIC 6                   Eeko D5
0x01:                            ?                         ?
0x02:                            ?                         ?
0x03:                            WdtInt
0x06:                                                                                ?
0x09:                            dryos_timer
0x0A:                            dryos_timer               dryos_timer
0x0D:                                                                                Omar
0x0E:                                                                                UTimerDriver
0x0F:                            ?
0x10:  HPTimer, OC4_14           HPTimer, OC4_14           HPTimer, OC4_14
0x16:                                                                                ?
0x18:  HPTimer, dryos_timer
0x19:                                                                                OCH_SPx
0x1A:  HPTimer, OCH_SPx          OCH_SPx                   OCH_SPx                   ?
0x1B:  OCHxEPx                   OCHxEPx                   OCHxEPx                   dryos_timer
0x1C:  HPTimer, OCH_SPx          OCH_SPx                   OCH_SPx                   Omar
0x1D:  OCHxEPx                   OCHxEPx                   OCHxEPx
0x1E:  HPTimer, OCH_SPx          OCH_SPx                   OCH_SPx                   UTimerDriver
0x1F:  OCHxEPx                   OCHxEPx                   OCHxEPx
0x20:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x21:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x22:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x23:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x24:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x25:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x26:  ICAPCHx                   ICAPCHx                   ICAPCHx                   ?
0x27:  ICAPCHx                   ICAPCHx                   ICAPCHx
0x28:                                                                                HPTimer, OC4_14
0x29:  sd_dma                                                                        OCHxEPx
0x2A:                                                                                MREQ
0x2C:                            DmaAD                     DmaAD
0x2D:                            DmaDA                     DmaDA                     Omar
0x2E:  uart_rx                   uart_rx                   uart_rx                   UTimerDriver
0x2F:  BLTDMAC0                  BltDmac, dma              BLTDMA, dma
0x30:  cf_dma
0x32:  sd_dma                    sd_dma
0x33:  SIO0                      SIO0                      SIO0
0x34:  SIO1                      SIO1                      SIO1
0x35:  SIO2                      SIO2                      SIO2                      SlowMossy
0x36:  SIO3                      SIO3                      SIO3
0x37:                            SIO_Int                   INTC_SIO4
0x38:                            uart_rx
0x39:                                                                                OCH_SPx                   uart_rx
0x3A:  uart_tx                   uart_tx                   uart_tx
0x3C:                                                                                Omar
0x3E:                                                                                UTimerDriver
0x40:                            ?                         ?
0x41:                            ?                                                   WRDMAC1
0x42:                            ASIFAdc                   ASIFAdc
0x43:                            ASIFDac                   ASIFDac
0x44:                            USBDET                    HDMIDET, MICDET
0x45:                            VIDEODET
0x47:                            MICDET                    VARISW3
0x49:                                                                                OCHxEPx
0x4A:  cf_driver, sd_driver                                                          MREQ2_ICU
0x4B:  sd_driver                 sd_driver
0x4D:                                                                                Omar
0x4E:                                                                                UTimerDriver
0x50:  EMEGENCY, EMERGENCY       MREQ                      MREQ
0x51:  CARDDOOR                  CAPREADY                  CAPREADY
0x52:  MREQ                      IMGPOWDET                 IMGPOWDET
0x53:  CAPREADY                  HDMIDET                   HDMIDET
0x54:  VIDEODET                  EMEGENCY, HDMIDET, USBD   DOS, HDMIDET, MICDET
0x55:  ASCHK, USBDET, VIDEODET   FUNCSW, USBDET            VIDEODET
0x56:  IMGPOWDET, TOEDET         HDMIDET, VIDEODET         MICDET, USBDET, VARISW3
0x57:  DOSCHK, USBDET            DOSCHK, TOEDET, VARISW3   USBDET
0x58:  EDmacWR0, WEDmac0         EDMAC#0, WEDmac0          EDMAC#0, WEDmac0
0x59:  EDmacWR1, WEDmac1         EDMAC#1, WEDmac1          EDMAC#1, WEDmac1          OCH_SPx
0x5A:  EDmacWR2, WEDmac2         EDMAC#2, WEDmac2          EDMAC#2, WEDmac2          LENSIF_SEL
0x5B:  EDmacWR3, WEDmac3         EDMAC#3, WEDmac3          EDMAC#3, WEDmac3
0x5C:  EDmacWR4, WEDmac4         EDMAC#4, WEDmac4          EDMAC#4, WEDmac4          Omar
0x5D:  EDmacRD0, REDmac0         EDMAC#8, REDmac0          EDMAC#8, REDmac0
0x5E:  EDmacRD1, REDmac1         EDMAC#9, REDmac1          EDMAC#9, REDmac1          UTimerDriver
0x5F:  EDmacRD2, REDmac2         EDMAC#10, REDmac2         EDMAC#10, REDmac2
0x60:  CompleteReadOperation     CompleteReadOperation     CompleteReadOperation
0x61:  AfComplete                AfComplete                AfComplete
0x62:  AfOverRun                 AfOverRun                 AfOverRun
0x63:  Obinteg                   Obinteg                   Obinteg
0x64:  JP51_INT_R, JpCore        JpCore                    JpCore
0x65:  ADKIZ, IntDefectCorrect   ADKIZ, ADMERG                                       ?
0x66:  Integral, WbInteg         WbInteg                   WB Integ
0x67:  Block, WbBlock            WbBlock                   WbBlock
0x68:  EngInt PBVD, Engine PB    EngInt PBVD, PB_VD        EngInt PBVD
0x69:                            EngInt PBVD, PB_ERR, Pb   EngInt PBERROR, Pb erro   OCHxEPx
0x6A:                            HEAD1                     HEAD1
0x6B:                            Head2                     HEAD2
0x6C:                            HEADERROR                 HEADERROR
0x6D:  EDmacWR5, WEDmac5         EDMAC#5, WEDmac5          EDMAC#5, WEDmac5          Omar
0x6E:  EDmacRD3, REDmac3         EDMAC#11, REDmac3         EDMAC#11, REDmac3         UTimerDriver
0x70:  HarbInt
0x74:  BLTDMAC1                  BltDmac, dma              BLTDMA, dma
0x75:                            BltDmac, dma                                        ?
0x76:                            BltDmac, dma
0x77:                                                      HDMIDET, USBDET
0x79:                                                                                OCH_SPx
0x7A:                                                                                XINT_7
0x7C:                                                                                Omar
0x7E:                                                                                UTimerDriver
0x80:                            ?
0x81:                            ?
0x82:                            cf_driver                 cf_driver
0x83:                            EDMAC#17, WEDmac8         EDMAC#17, WEDmac8
0x84:                            ?                         ?
0x86:                                                                                ?
0x88:                            ?
0x89:                            ?                                                   OCHxEPx
0x8A:                            EDMAC#18, WEDmac9         EDMAC#18, WEDmac9         INT_LM
0x8B:                            EDMAC#24, REDmac6         EDMAC#24, REDmac6
0x8C:                            ?                         ?
0x8D:                                                                                ?
0x90:  WEDmac6
0x91:  REDmac4
0x92:  REDmac5                   EDMAC#25, REDmac7         EDMAC#25, REDmac7
0x93:                            CompleteOperation
0x94:                            ?                         ?
0x96:                                                      EDMAC#28, REDmac10
0x97:                                                      EDMAC#29, REDmac11
0x98:                                                                                CAMIF_0
0x99:                                                                                OCH_SPx
0x9A:                            CompleteOperation
0x9B:                            ?
0x9C:                            SEQ                       SEQ                       Omar
0x9D:                                                      EDMAC#40, REDmac12
0x9E:                                                      EDMAC#41, REDmac13
0xA0:                            BltDmac, dma              EekoBltDmac, dma
0xA1:                            BltDmac, dma                                                                  EekoBltDmac
0xA3:                            JpCore2                   Jp57
0xA5:                                                      EDMAC#43, RDDMAC15
0xA8:                            BltDmac, dma                                        CAMIF_1
0xA9:                            BltDmac, dma                                        OCHxEPx
0xAA:                            CompleteOperation
0xB0:                                                      SSIO_SIOINT
0xB1:                            sd_driver
0xB2:                                                                                                          OCH_SPx
0xB3:                                                                                                          OCH_SPx
0xB8:                            cf_dma, sd_dma
0xB9:                                                                                OCH_SPx
0xBA:                                                                                                          OCH_SPx
0xBB:                                                                                                          OCH_SPx
0xBC:                                                                                Omar
0xBE:                                                                                SdDmaInt0, sd_dma
0xC0:                            EDMAC#6, WEDmac6          EDMAC#6, WEDmac6
0xC1:                            EDMAC#12, REDmac4         EDMAC#12, REDmac4
0xC5:                                                      SAFARI_INT
0xC6:                                                      SAFARI_INT_ERROR
0xC8:                            EDMAC#13, REDmac5
0xC9:                            Fencing_A                 Fencing_A                 OCHxEPx
0xCA:                                                      EDMAC#19, WEDmac10        INT_LM
0xCB:                                                      EDMAC#20, WEDmac11
0xCD:                                                                                Omar
0xCE:                                                                                SerialFlash
0xD0:                            Fencing_B                 Fencing_B
0xD1:                            Fencing_C                 Fencing_C
0xD2:                                                      EDMAC#21, WEDmac12
0xD3:                                                      EDMAC#22, WEDmac13
0xD9:                            HEAD3                     HEAD3                     ICAPCHx
0xDA:                                                      EDMAC#32, WEDmac14
0xDB:                                                      EDMAC#33, WRDMAC15
0xDC:                                                                                Omar
0xDD:                                                                                ?
0xDE:                                                                                SerialFlash
0xE0:                            HEAD4                     HEAD4
0xE1:                            SsgStopIrq
0xE2:                                                      EDMAC#26, REDmac8
0xE3:                            cf_dma                    cf_dma
0xE4:                                                      GaUSB20Hal
0xE6:                                                                                ?
0xE8:                                                                                ?
0xE9:                                                                                ICAPCHx
0xEA:                            ?
0xEE:                                                                                SdConInt0, sd_driver
0xF9:                            EDMAC#16, WEDmac7         EDMAC#16, WEDmac7         ICAPCHx
0xFC:                                                                                Omar                      OCH_SPx
0xFD:                                                                                ?
0xFE:                                                                                SerialFlash               dryos_timer
0xFF:                                                                                ?
0x102:                                                     Eeko                      RDDMAC13
0x109:                                                                               ICAPCHx
0x10A:                                                     Eeko
0x10C:                                                                               BltDmac
0x10D:                                                                               ?
0x10E:                                                                               SerialFlash
0x110:                                                     Eeko
0x111:                                                     Eeko WakeUp
0x115:                                                                               ?
0x117:                                                                               ?
0x118:                                                     Eeko
0x119:                                                     Eeko                      ICAPCHx
0x124:                                                     Eeko
0x125:                                                                               ?
0x127:                                                                               ?
0x129:                                                                               ICAPCHx
0x12A:                                                                               mreq
0x12D:                                                                               ?
0x137:                                                                               ?
0x139:                                                                               ICAPCHx
0x13A:                                                                               CAPREADY
0x13E:                                                                               xdmac
0x140:                                                                                                         ICOCCHx
0x141:                                                                                                         ICAPCHx
0x142:                                                                                                         ICAPCHx
0x145:                                                                               MZRM
0x147:                                                                               SIO3
0x148:                                                                                                         ICAPCHx
0x149:                                                                               ICAPCHx                   ICAPCHx
0x14A:                                                                                                         ICAPCHx
0x14E:                                                                               xdmac
0x150:                                                                                                         ICAPCHx
0x151:                                                                                                         ICAPCHx
0x152:                                                                                                         ICAPCHx
0x157:                                                                               ?
0x158:                                                                                                         OCH_SPx
0x159:                                                                               ICAPCHx                   OCH_SPx
0x15A:                                                                                                         OCH_SPx
0x15D:                                                                               uart_rx
0x15E:                                                                               xdmac
0x162:                                                     SerialFlash
0x167:                                                                               ?
0x169:                                                                               ICAPCHx
0x16D:                                                                               uart_tx
0x171:                                                     sd_dma
0x172:                                                     sd_driver
0x174:                                                                               ?
0x177:                                                                               ?
0x178:                                                     DOS, MICDET
0x179:                                                                               ICAPCHx
0x17B:                                                     SerialFlash
0x187:                                                                               ?
0x189:                                                                               ICAPCHx
0x18B:                                                                               WdtInt