===== DIGIC 8 Register Map: ===== ==== UART ==== Controls physical UART connection. ^ Address ^ Description ^ | ''0xD01202F0'' | UART1_RX_SELECT_CONFIG | | ''0xD01202F4'' | UART1_TX_SELECT_CONFIG | | ''0xD01302F0'' | UART1_RX_SELECT_MASK | | ''0xD01302F4'' | UART1_TX_SELECT_MASK | ''UART'' is connected to physical ICU UART on external debug connector. Handled by ''uart_change'' command on drysh. ''0x0'' selects ICU (DryOS on ARM core), ''0x2'' for CCLIME (DryOS on Xtensa core, network). ==== Display ==== ^ Address ^ Description ^ | ''0xD030422C'' | ?? | | ''0xD0304230'' | VRAM pointer | | ''0xD0304234'' | VRAM pitch | | ''0xD0304238'' | Resolution | | ''0xD030423C'' | ?? | ==== LV peaking (Highlights / zebra) ==== ^ Address ^ Output ^ Type ^ Controls what? ^ | ''0xD0300520'' | HDMI | zebra | enable / disable | | ''0xD0300750'' | HDMI | overexpo | threshold and style | | ''0xD0300754'' | HDMI | overexpo | color | | ''0xD0300758'' | HDMI | underexpo | threshold and style | | ''0xD030075C'' | HDMI | underexpo | color | | ''0xD0304220'' | LCD/EVF | zebra | enable / disable | | ''0xD0304488'' | LCD/EVF | overexpo | threshold and style | | ''0xD030448C'' | LCD/EVF | overexpo | color | | ''0xD0304490'' | LCD/EVF | underexpo | threshold and style | | ''0xD0304494'' | LCD/EVF | underexpo | color | Registers used by ''DispVram'' State object to control overexposure highlighting feature. Different addresses and slightly different values than Digic 6/7, but capabilities are very similar. __It is possible to have independent zebras configured on LCD and HDMI while running in Clean HDMI mode!__ ===Note on directly writing the registers=== Directly writing some registers doesn't work (values are overridden). On R170.739 that happens for HDMI enable register, but this seems to differ from model to model. See [[digic6:registers|DIGIC 6 Register Map:]] for more info. TL;DR is that you need to find (via xrefs / static code analysis) where reg value is stored, and update that memory address instead. ===Enable register=== ''reg & 0x100'' controls if highlight is enabled or not. Value written should be masked ''0x100'' with one read from ''reg + 0x2000'' This register lies in **Display registers** range and most likely has more meanings. ===Threshold / style register=== **** **** **** **** **** **** **** **** *... .... .... .... .... .... .... .... visibility (on/off) ..** .... .... .... .... .... .... .... stripes move speed (0-3) .... ...* .... .... .... .... .... .... stripes angle (45 / -45 deg) .... .... ..** .... .... .... .... .... stripes style .... .... .... .*** .... .... .... .... stripes opacity .... .... .... .... **** **** .... .... threshold (underexpo) .... .... .... .... .... .... **** **** threshold (overexpo) Value written should be masked ''0xB137FFFF'' with one read from ''reg + 0x2000'' ^ Field ^ Range ^ Description ^ | visibility | 0,1 | zebra visibility (do not confuse with Enable register) | | speed | 0-3 | lines/dots are moving slower -> faster | | angle | 0-1 | 0: 45 deg, 1: -45 deg | | style | 0-2 | 0: light dots, 1: thin lines, 2: thick lines | | opacity | 0-7 | very opaque -> solid color | | underexpo_th | 0-255 | Threshold on undexexpo register, ignored on overexpo | | overexpo_th | 0-255 | Threshold on overexpo register, ignored on underexpo | **Note: On HDMI max threshold is 0xE8** Values above that are not displayed! ===Color register=== Controls color of highlight overlays. ''??YYUUVV'' format. Canon code defaults to black (''00008080'') ===More registers=== Code suggests there are more registers: ^ Output ^ Reg ^ Addresses ^ Range ^ | HDMI | Enable | ''0xD0300520 + 0x30 * n'' | n∈⟨0,7⟩ | | LCD | Enable | ''0xD0304220 + 0x30 * n'' | n∈⟨0,7⟩ | | HDMI | Threshold | ''0xD0300750 + 0x8 * m'' | m∈⟨0,5⟩ | | HDMI | Color | ''0xD0300754 + 0x8 * m'' | m∈⟨0,5⟩ | | LCD | Threshold | ''0xD0304488 + 0x8 * m'' | m∈⟨0,5⟩ | | LCD | Color | ''0xD030448C + 0x8 * m'' | m∈⟨0,5⟩ | n values above 0 and m values above 1 are not understood. There's no visible difference on screen. For ''m > 1'' Threshold registers accept both under and overexposure thresholds at the same time, but since those have no visible effects on displayed image - meaning is unknown. Guess: maybe ''m > 1'' are in use for 10 bit / HDR mode? ==== Audio ==== ^ Address ^ Description ^ | ''0xD800021D '' | Left Microphone Level and Peak | | ''0xD8000220 '' | Right Microphone Level and Peak |