--- rnndb/nv_evo.xml | 311 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 311 insertions(+), 0 deletions(-) create mode 100644 rnndb/nv_evo.xml
diff --git a/rnndb/nv_evo.xml b/rnndb/nv_evo.xml new file mode 100644 index 0000000..d776dbd --- /dev/null +++ b/rnndb/nv_evo.xml @@ -0,0 +1,311 @@ +<?xml version="1.0" encoding="UTF-8"?> +<database xmlns="http://nouveau.freedesktop.org/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> +<import file="copyright.xml"/> +<import file="nvchipsets.xml"/> +<import file="nv_defs.xml"/> + +<!-- main EVO channel --> +<domain name="NV_EVO_MASTER" bare="yes" prefix="chipset"> + + <!-- write 0 here executes all evo commands pending in PDISPLAY fifo --> + <reg32 offset="0x80" name="FLUSH_COMMANDS"/> + + <reg32 offset="0x84" name="FLUSH2"> + <bitfield pos="2" name="FLUSH_CLUT_CRTC0"/> + <bitfield pos="3" name="FLUSH_CLUT_CRTC1"/> + <bitfield pos="30" name="NOTIFY_ENABLED"/> <!--???--> + <bitfield pos="31" name="FLUSH_MAIN"/> + </reg32> + + <!-- dma object that PDISPLAY needs when it uses display sync channels + maybe that stores its state to + when PDISPLAY executes non-main channel?...--> + <reg32 offset="0x88" name="DMA_NOTIFY"/> + + <array name="DAC" offset="0x400" stride="0x80" length="2"> + + <reg32 offset="0x0" name="MODE_CTL"> + <bitfield pos="0" name="CRTC0"/> + <bitfield pos="1" name="CRTC1"/> + <bitfield pos="6" name="ENABLED"/> + + <bitfield low="8" high="13" name="PROTOCOL"> + <value name="VGA" value="0x0"/> + <value name="NTSC-M" value="0x1"/> + <value name="NTSC-J" value="0x2"/> + <value name="PAL" value="0x3"/> + <value name="PAL-M" value="0x4"/> + <value name="PAL-N" value="0x5"/> + <value name="PAL-NC" value="0x6"/> + + <!-- HD480I/HD576I doesn't work with blob, + maybe hw doesn't support it? --> + <value name="HD480P" value="0xd"/> + <value name="HD576p" value="0xe"/> + + <value name="HD720p" value="0x10"/> + <value name="HD1080i" value="0x12"/> + <value name="HD1080p" value="0x3F"/> + </bitfield> + + <bitfield pos="14" name="SUB_CARR_FREQ"> + <value name="3_57MHZ" value="0"/> + + <!-- PAL and PAL-NC use this --> + <value name="4_42MHZ" value="1"/> + </bitfield> + </reg32> + + <reg32 offset="0x04" name="MODE_CTL2"> + <bitfield pos="0" name="NEG_HSYNC" type="boolean"/> + <bitfield pos="1" name="NEG_VSYNC" type="boolean"/> + </reg32> + + <!-- TODO: always set to 0x10000 on TV-out --> + <reg32 offset="0x20" name="UNK20"/> + </array> + + <array name="SOR" offset="0x600" stride="0x40" length="2"> + + <reg32 offset="0x0" name="MODE_CTL"> + <bitfield pos="0" name="CRTC0"/> + <bitfield pos="1" name="CRTC1"/> + + <bitfield pos="6" name="ENABLED"/> + + <bitfield low="8" high="11" name="PROTOCOL"> + <value name="LVDS" value="0"/> + <value name="TMDS_SINGLE_A" value="1"/> + <value name="TMDS_SINGLE_B" value="2"/> + <value name="TMDS_DUAL" value="5"/> + <value name="DP_A" value="8"/> + <value name="DP_B" value="9"/> + </bitfield> + + <bitfield pos="12" name="NEG_HSYNC" type="boolean"/> + <bitfield pos="13" name="NEG_VSYNC" type="boolean"/> + </reg32> + </array> + + + <array name="CRTC" offset="0x800" stride="0x400" length="2"> + + <reg32 offset="0x004" name="CLOCK"> + <bitfield low="0" high="22" name="CLK_KHZ" type="uint"/> + <bitfield pos="23" name="ENABLED"/> + </reg32> + + <reg32 offset="0x008" name="INTERLACE"> + <bitfield pos="1" name="ENABLED"/> + </reg32> + + <reg32 offset="0x010" name="BACKGROUND_COLOR"> + <bitfield low="0" high="9" name="RED" type="uint"/> + <bitfield low="10" high="19" name="GREEN" type="uint"/> + <bitfield low="20" high="29" name="BLUE" type="uint"/> + </reg32> + + <!-- start of sync pulse is the reference, so: --> + + <!-- totat scanlines of display --> + <reg32 offset="0x014" name="DISPLAY_TOTAL" type="wh16"/> + + <!-- from start of sync to end of sync --> + <reg32 offset="0x018" name="SYNC_DURATION" type="wh16"/> + + <!-- from start of sync to start of visible portion (end of back porch) --> + <reg32 offset="0x01c" name="SYNC_START_TO_DISP_START" type="wh16"/> + + <!-- from start of sync to end of visible portion (start of front porch) --> + <reg32 offset="0x020" name="SYNC_START_TO_DISP_END" type="wh16"/> + + + <reg32 offset="0x024" name="INTERLACE_TIMINGS"> + <!-- from start of sync to end of visible portion of next field (start of front porch) --> + <bitfield low="0" high="15" name="VSYNC_TO_END_DISP_NEXTFIELD" type="uint" /> + <!-- from start of sync to start of visible portion of the next field (end of back porch) --> + <bitfield low="16" high="31" name="VSYNC_TO_START_DISP_NEXTFIELD" type="uint" /> + </reg32> + + <!-- TODO: (!) very related to scale/mode. Large values cause flicker on LVDS/DVI/VGA, clock?--> + <reg32 offset="0x028" name="UNK828"> + <bitfield low="0" high="11" name="UNK" type="uint" /> + </reg32> + + <reg32 offset="0x02C" name="UNK82C"/> <!-- set always to 0 --> + + + <reg32 offset="0x040" name="CLUT"> + <bitfield pos="31" name="ENABLED"> + <value value="1" name="YES"/> + <value value="0" name="NO"/> + </bitfield> + + <!-- in reduced mode, first and last 64 entries of LUT + are ignored, and middle 128 entries are interpolated + into 256 entries. Used by blob for 8-bit framebuffers --> + <bitfield pos="30" name="MODE"> + <value value="0" name="REDUCED"/> + <value value="1" name="NORMAL"/> + </bitfield> + </reg32> + + <reg32 offset="0x044" name="CLUT_ADDRESS"/> + <reg32 offset="0x05c" name="CLUT_DMA_HANDLE" variants="NV84-"/> + + <group name="nv50_evo_fb_settings"> + <reg32 offset="0x00" name="FB_OFFSET"/> + + <reg32 offset="0x08" name="FB_SIZE"/> + + <reg32 offset="0x0c" name="FB_CONFIG"> + <bitfield pos="20" name="MODE"> + <value value="0" name="TILE"/> + <value value="1" name="PITCH"/> + </bitfield> + + <bitfield high="19" low="4" shr="4" name="PITCH"/> + <bitfield high="3" low="0" name="TILE_FLAGS"/> + </reg32> + <reg32 offset="0x010" name="FB_DEPTH" > + <bitfield high="15" low="8" name="DEPTH"> + <value value="0x1e" name="8BPP"/> + <value value="0xe9" name="15BPP"/> + <value value="0xe8" name="16BPP"/> + <value value="0xcf" name="24BPP"/> + <value value="0xd1" name="30BPP"/> + </bitfield> + </reg32> + </group> + + <stripe offset="0x060"> + <use-group name="nv50_evo_fb_settings" /> + </stripe> + + <reg32 offset="0x074" name="FB_DMA_HANDLE"/> + + + <reg32 offset="0x080" name="CURSOR_CTL"> + <bitfield pos="31" name="SHOW" type="boolean"/> + </reg32> + <reg32 offset="0x084" name="CURSOR_ADDRESS"/> + <reg32 offset="0x09c" name="CURSOR_DMA_HANDLE" variants="NV84-"/> + + <reg32 offset="0x0a0" name="DITHER_CTRL"> + <bitfield low="0" high="2" name="DEPTH"> + <value value="0" name="DISABLED"/> + <value value="1" name="6BPP"/> + <value value="3" name="8BPP"/> + </bitfield> + + <bitfield low="3" high="5" name="MODE"> + <value value="0" name="OFF"/> + <value value="3" name="STATIC_2X2"/> + <value value="2" name="DYNAMIC_2X2"/> + </bitfield> + </reg32> + + <reg32 offset="0x0a4" name="BLUR_CTRL"> + <!-- BLUR_ENABLE + UNK1 = black screen + hung card, + no way to fix by setting back the old value --> + <bitfield low="0" high="1" name="UNK1"/> + <bitfield pos="2" name="ENABLE"/> + <bitfield pos="3" name="UNK3"/> + + <!-- set to same values as BLUR1, but seems to do nothing --> + <bitfield low="16" high="23" name="BLUR2" type="int"/> + + <!-- Blur value, (negative == sharpness) --> + <bitfield low="24" high="31" name="BLUR1" type="int"/> + </reg32> + + <reg32 offset="0x0a8" name="COLOR_CTL"> + <!-- TV_COLORS used on most TV modes, + applies proper black/white levels --> + <bitfield pos="0" name="TV_COLORS"/> + <!-- ALT_TV_COLORS used in PAL-N and 720P/1080P/1080I modes, + slightly different colors that with TV_COLORS --> + <bitfield pos="1" name="ALT_TV_COLORS"/> + + <!-- draws on left and right of the screen two + thin/thick violet lines --> + <bitfield pos="3" name="LEFTRIGHT_THIN_BORDER"/> + <bitfield pos="4" name="LEFTRIGHT_THICK_BORDER"/> + + <bitfield low="8" high="19" name="SATURATION" type="int"/> + <bitfield low="20" high="31" name="TINT" type="int"/> + </reg32> + + <!-- offset of CRTC window in framebuffer texture --> + <reg32 offset="0x0c0" name="FB_POS" type="xy16"/> + + <!-- size of CRTC window in framebuffer texture --> + <reg32 offset="0x0c8" name="FB_REAL_RES" type="wh16"/> + + <!-- offset to move CRTC window before output to physical screen --> + <reg32 offset="0x0d4" name="FB_SCREEN_POS" type="xy16"/> + + <!-- size to scale CRTC window (which size is given in FB_REAL_RES) + before output to physical screen --> + <reg32 offset="0x0d8" name="FB_SCALE_RES1" type="wh16" /> + <!-- this value doesn't do anything, but must be same/lower that first + its sort of bottom limit/optimization. 0 seems to work --> + <reg32 offset="0x0dc" name="FB_SCALE_RES2" type="wh16" /> + + <!-- darktama: required to make display sync channels not hate life. + UNK900 set to 0, UNK904 to 0x100 by blob --> + <reg32 offset="0x100" name="UNK900"/> + <reg32 offset="0x104" name="UNK904"/> + + <!-- blob seeems to set that to 0x10000 --> + <reg32 offset="0x3a8" name="UNK3A8"/> + + </array> +</domain> + +<!-- display sync EVO channels, one per CRTC --> +<domain name="NV_EVO_SYNC" bare="yes" prefix="chipset"> + + <!-- same as on main EVO channel --> + <reg32 offset="0x80" name="FLUSH_COMMANDS"/> + + <!-- TODO: different values depends on whenever sync semaphore is used --> + <reg32 offset="0x84" name="SYNC_CTRL"> + <bitfield pos="4" name="NOT_USE_SEM"/> + <bitfield pos="8" name="USE_SEM"/> + </reg32> + + <!-- Semaphore support to sync against PGRAPH --> + <reg32 offset="0x88" name="SEM_OFFSET"/> + <reg32 offset="0x8c" name="SEM_WAIT_VALUE"/> + <reg32 offset="0x90" name="SEM_WRITE_VALUE"/> + <reg32 offset="0x94" name="SEM_DMAOBJ"/> + + <!-- 0 written on pageflip--> + <reg32 offset="0xa0" name="UNKA0"/> + <reg32 offset="0xa5" name="UNKA4"/> + + + <reg32 offset="0xc0" name="FB_DMAOBJ"/> + + <!-- darktama: allows gamma somehow, PDISP will bitch at you if + * you don't wait for vblank before changing this.. + nouveau write 0x40000000 here--> + <reg32 offset="0xe0" name="UNKe0"/> + + <!-- set to 0xfffe0000 on page flip --> + <reg32 offset="0x100" name="UNK100"/> + + <!-- 0 written on pageflip --> + <reg32 offset="0x110" name="UNK110"/> + <reg32 offset="0x114" name="UNK114"/> + + <!-- new framebuffer settings to apply. Same as in main evo channel--> + <stripe offset="0x800"> + <use-group name="nv50_evo_fb_settings" /> + </stripe> +</domain> + +</database> -- 1.7.4.1 _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
