summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/avivo_reg.h502
1 files changed, 0 insertions, 502 deletions
diff --git a/src/avivo_reg.h b/src/avivo_reg.h
deleted file mode 100644
index 0a533036..00000000
--- a/src/avivo_reg.h
+++ /dev/null
@@ -1,502 +0,0 @@
-/* AVIVO registers are specific to the AVIVO display engine, first
- * introduced on R5xx.
- *
- * CRTCs are the master unit. A CRTC controls scanout, and both the
- * DACs (be it TV or VGA) and TMDS transmitters take their input from
- * the CRTC.
- */
-
-/* Core engine. */
-#define AVIVO_ENGINE_STATUS 0x0014
-
-/* Memory mapping. */
-#define AVIVO_MC_INDEX 0x0070
-/* AVIVO_MC_MEMORY_MAP control memory mapping of the video card ram:
- * base is higher 16bits of the starting address at which card
- * sees it own memory. end is higher 16bits address at which card
- * memory should end (might be usefull if you want to use half memory
- * but don't know what does the card if you address out of bound
- * memory, likely trigger pci stuff which often end in bad things).
- */
-# define MC00 0x00
-#define R520_MC_STATUS 0x00
-#define R520_MC_STATUS_IDLE (1<<1)
-# define MC01 0x01
-# define MC02 0x02
-# define MC03 0x03
-# define AVIVO_MC_MEMORY_MAP 0x04
-# define AVIVO_MC_MEMORY_MAP_BASE_MASK (0xFFFF << 0)
-# define AVIVO_MC_MEMORY_MAP_BASE_SHIFT 0
-# define AVIVO_MC_MEMORY_MAP_END_MASK (0xFFFF << 16)
-# define AVIVO_MC_MEMORY_MAP_END_SHIFT 16
-# define MC05 0x05
-# define MC06 0x06
-# define MC07 0x07
-# define MC08 0x08
-#define RV515_MC_STATUS 0x08
-#define RV515_MC_STATUS_IDLE (1<<4)
-# define MC09 0x09
-# define MC0a 0x0a
-# define MC0b 0x0b
-# define MC0c 0x0c
-# define MC0d 0x0d
-# define MC0e 0x0e
-# define MC0f 0x0f
-# define MC10 0x10
-# define MC11 0x11
-# define MC12 0x12
-# define MC13 0x13
-# define MC14 0x14
-# define MC15 0x15
-# define MC16 0x16
-# define MC17 0x17
-# define MC18 0x18
-# define MC19 0x19
-# define MC1a 0x1a
-# define MC1b 0x1b
-# define MC1c 0x1c
-# define MC1d 0x1d
-# define MC1e 0x1e
-# define MC1f 0x1f
-#define AVIVO_MC_DATA 0x0074
-
-/*
- * You set memory base at which card see its memory (should be the
- * same as AVIVO_MC_MEMORY_MAP lower 16bits
- */
-#define AVIVO_VGA_MEMORY_BASE 0x0134
-#define AVIVO_VGA_FB_START 0x0310
-#define AVIVO_VGA1_CONTROL 0x0330
- #define AVIVO_VGA1_CONTROL_MODE_ENABLE (1<<0)
- #define AVIVO_VGA1_CONTROL_TIMING_SELECT (1<<8)
- #define AVIVO_VGA1_CONTROL_SYNC_POLARITY_SELECT (1<<9)
- #define AVIVO_VGA1_CONTROL_OVERSCAN_TIMING_SELECT (1<<10)
- #define AVIVO_VGA1_CONTROL_OVERSCAN_COLOR_EN (1<<16)
- #define AVIVO_VGA1_CONTROL_ROTATE (1<<24)
-#define AVIVO_VGA2_CONTROL 0x0338
- #define AVIVO_VGA2_CONTROL_MODE_ENABLE (1<<0)
- #define AVIVO_VGA2_CONTROL_TIMING_SELECT (1<<8)
- #define AVIVO_VGA2_CONTROL_SYNC_POLARITY_SELECT (1<<9)
- #define AVIVO_VGA2_CONTROL_OVERSCAN_TIMING_SELECT (1<<10)
- #define AVIVO_VGA2_CONTROL_OVERSCAN_COLOR_EN (1<<16)
- #define AVIVO_VGA2_CONTROL_ROTATE (1<<24)
-
-/*
- * We believe reference clock is 108Mhz, we likely can change that using
- * mystery PLL reg spoted below more dump are needed in order to find out.
- *
- * The formula we derived so far seems to work for card we have:
- * (vclk is video mode clock)
- * vclk = (1080 * AVIVO_PLL_POST_MUL) /
- * (AVIVO_PLL_DIVIDER * AVIVO_PLL_POST_DIV * 40)
- * It seems that AVIVO_PLL_DIVIDER * AVIVO_PLL_POST_DIV needs to be
- * above 40 and that AVIVO_DIVIDER should be greater than AVIVO_PLL_POST_DIV
- * Try to keep this constraint while computing PLL values.
- */
-#define AVIVO_PLL1_POST_DIV_CNTL 0x0400 // REF_DIV_SRC
-# define AVIVO_PLL_POST_DIV_EN (1 << 0)
-#define AVIVO_PLL1_POST_DIV 0x0404 // REF_DIV
-#define AVIVO_PLL1_POST_DIV_MYSTERY 0x040C
-# define AVIVO_PLL_POST_DIV_MYSTERY_VALUE 0x10000
-#define AVIVO_PLL2_POST_DIV_CNTL 0x0410
-#define AVIVO_PLL2_POST_DIV 0x0414
-#define AVIVO_PLL2_POST_DIV_MYSTERY 0x041C
-#define AVIVO_PLL1_POST_MUL 0x0430 // FB_DIV
-# define AVIVO_PLL_POST_MUL_SHIFT 16
-#define AVIVO_PLL2_POST_MUL 0x0434 // FB_DIV
-#define AVIVO_PLL1_DIVIDER_CNTL 0x0438 // POST DIV_SRC
-# define AVIVO_PLL_DIVIDER_EN (1 << 0)
-#define AVIVO_PLL1_DIVIDER 0x043C // POST DIV
-#define AVIVO_PLL2_DIVIDER_CNTL 0x0440
-#define AVIVO_PLL2_DIVIDER 0x0444 // POST_DIV
-#define AVIVO_PLL1_MYSTERY0 0x0448 // POST_DIV_SRC
-# define AVIVO_PLL_MYSTERY0_VALUE 0x20704
-#define AVIVO_PLL2_MYSTERY0 0x044C
-#define AVIVO_PLL1_MYSTERY1 0x0450
-# define AVIVO_PLL_MYSTERY1_VALUE 0x4310000
-#define AVIVO_PLL2_MYSTERY1 0x0454
-#define AVIVO_CRTC_PLL_SOURCE 0x0484
-# define AVIVO_CRTC1_PLL_SOURCE_SHIFT 0
-# define AVIVO_CRTC2_PLL_SOURCE_SHIFT 16
-
-/* CRTC controls; these appear to influence the DAC's scanout. */
-#define AVIVO_CRTC1_H_TOTAL 0x6000
-#define AVIVO_CRTC1_H_BLANK 0x6004
-#define AVIVO_CRTC1_H_SYNC_WID 0x6008
-#define AVIVO_CRTC1_H_SYNC_POL 0x600c
-#define AVIVO_CRTC1_V_TOTAL 0x6020
-#define AVIVO_CRTC1_V_BLANK 0x6024
-#define AVIVO_CRTC1_V_SYNC_WID 0x6028
-#define AVIVO_CRTC1_V_SYNC_POL 0x602c
-#define AVIVO_CRTC1_CNTL 0x6080
-# define AVIVO_CRTC_EN (1 << 0)
-#define AVIVO_CRTC1_BLANK_STATUS 0x6084
-#define AVIVO_CRTC1_STEREO_STATUS 0x60c0
-
-/* These all appear to control the scanout from the framebuffer.
- * Flicking SCAN_ENABLE low results in a black screen -- aside from
- * the cursor. Messing with PITCH gives you the obvious symptoms,
- * and messing with X_LENGTH and Y_LENGTH will give you a black
- * screen beyond those bounds if you make it shorter.
- *
- * Messing with the format gives you ... odd results. Setting it
- * to 3 exactly quadruples my display size, with the next three
- * panes displaying the next parts of FB memory. BPP?
- *
- * FB_LOCATION gives me the obvious result; FB_END is exactly
- * FB_LOCATION + (xres * yres * 2). FB_END doesn't appear to actually
- * function as an upper bound.
- */
-#define AVIVO_CRTC1_SCAN_ENABLE 0x6100
-# define AVIVO_CRTC_SCAN_EN (1 << 0)
-#define AVIVO_CRTC1_FB_FORMAT 0x6104
-# define AVIVO_CRTC_FORMAT_ARGB15 (1 << 0)
-# define AVIVO_CRTC_FORMAT_ARGB16 ((1 << 0) | (1 << 8))
-# define AVIVO_CRTC_FORMAT_ARGB32 (1 << 1)
-# define AVIVO_CRTC_TILED (1 << 20)
-# define AVIVO_CRTC_MACRO_ADDRESS_MODE (1 << 21)
-#define AVIVO_CRTC1_FB_LOCATION 0x6110
-#define AVIVO_CRTC1_FB_END 0x6118
-/* This is in pixels, not bytes. Obviously. */
-#define AVIVO_CRTC1_PITCH 0x6120
-#define AVIVO_CRTC1_X_LENGTH 0x6134
-#define AVIVO_CRTC1_Y_LENGTH 0x6138
-
-#define AVIVO_CRTC1_OFFSET_END 0x6454
-
-#define AVIVO_CRTC1_FB_HEIGHT 0x652c
-#define AVIVO_CRTC1_OFFSET_START 0x6580
-#define AVIVO_CRTC1_EXPANSION_SOURCE 0x6584
-#define AVIVO_CRTC1_EXPANSION_CNTL 0x6590
-# define AVIVO_CRTC_EXPANSION_EN (1 << 0)
-#define AVIVO_CRTC1_6594 0x6594
-# define AVIVO_CRTC1_6594_VALUE ((1 << 8) | (1 << 0))
-#define AVIVO_CRTC1_659C 0x659C
-# define AVIVO_CRTC1_659C_VALUE ((1 << 1))
-#define AVIVO_CRTC1_65A4 0x65a4
-# define AVIVO_CRTC1_65A4_VALUE ((1 << 16) | (1 << 0))
-#define AVIVO_CRTC1_65A8 0x65a8
-# define AVIVO_CRTC1_65A8_VALUE ((1 << 16) | (1 << 14))
-#define AVIVO_CRTC1_65AC 0x65ac
-# define AVIVO_CRTC1_65AC_VALUE ((1 << 15) | (1 << 14) | (1 << 13))
-#define AVIVO_CRTC1_65B0 0x65b0
-# define AVIVO_CRTC1_65B0_VALUE ((1 << 17) | (1 << 16) | (1 << 8))
-#define AVIVO_CRTC1_65B8 0x65b8
-# define AVIVO_CRTC1_65B8_VALUE ((1 << 16))
-#define AVIVO_CRTC1_65BC 0x65bc
-# define AVIVO_CRTC1_65BC_VALUE ((1 << 16))
-#define AVIVO_CRTC1_65C0 0x65c0
-# define AVIVO_CRTC1_65C0_VALUE ((1 << 17) | (1 << 16) | (1 << 8))
-#define AVIVO_CRTC1_65C8 0x65c8
-# define AVIVO_CRTC1_65C8_VALUE ((1 << 16))
-
-#define AVIVO_CRTC2_H_TOTAL 0x6800
-#define AVIVO_CRTC2_H_BLANK 0x6804
-#define AVIVO_CRTC2_H_SYNC_WID 0x6808
-#define AVIVO_CRTC2_H_SYNC_POL 0x680c
-#define AVIVO_CRTC2_V_TOTAL 0x6820
-#define AVIVO_CRTC2_V_BLANK 0x6824
-#define AVIVO_CRTC2_V_SYNC_WID 0x6828
-#define AVIVO_CRTC2_V_SYNC_POL 0x682c
-#define AVIVO_CRTC2_CNTL 0x6880
-#define AVIVO_CRTC2_BLANK_STATUS 0x6884
-
-#define AVIVO_CRTC2_SCAN_ENABLE 0x6900
-#define AVIVO_CRTC2_FB_FORMAT 0x6904
-#define AVIVO_CRTC2_FB_LOCATION 0x6910
-#define AVIVO_CRTC2_FB_END 0x6918
-#define AVIVO_CRTC2_PITCH 0x6920
-#define AVIVO_CRTC2_X_LENGTH 0x6934
-#define AVIVO_CRTC2_Y_LENGTH 0x6938
-
-#define AVIVO_CRTC2_OFFSET_END 0x6c54
-
-#define AVIVO_CRTC2_FB_HEIGHT 0x6d2c
-#define AVIVO_CRTC2_OFFSET_START 0x6d80
-#define AVIVO_CRTC2_EXPANSION_SOURCE 0x6d84
-#define AVIVO_CRTC2_EXPANSION_CNTL 0x6d90
-#define AVIVO_CRTC2_6594 0x6d94
-#define AVIVO_CRTC2_659C 0x6d9C
-#define AVIVO_CRTC2_65A4 0x6da4
-#define AVIVO_CRTC2_65A8 0x6da8
-#define AVIVO_CRTC2_65AC 0x6dac
-#define AVIVO_CRTC2_65B0 0x6db0
-#define AVIVO_CRTC2_65B8 0x6db8
-#define AVIVO_CRTC2_65BC 0x6dbc
-#define AVIVO_CRTC2_65C0 0x6dc0
-#define AVIVO_CRTC2_65C8 0x6dc8
-
-#define AVIVO_DACA_CNTL 0x7800
-#define AVIVO_DACA_CRTC_SOURCE 0x7804
-# define AVIVO_DAC_EN (1 << 0)
-#define AVIVO_DACA_FORCE_OUTPUT_CNTL 0x783c
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_FORCE_DATA_EN (1 << 0)
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT (8)
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE (1 << 0)
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN (1 << 1)
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_RED (1 << 2)
-# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY (1 << 24)
-#define AVIVO_DACA_POWERDOWN 0x7850
-# define AVIVO_DACA_POWERDOWN_POWERDOWN (1 << 0)
-# define AVIVO_DACA_POWERDOWN_BLUE (1 << 8)
-# define AVIVO_DACA_POWERDOWN_GREEN (1 << 16)
-# define AVIVO_DACA_POWERDOWN_RED (1 << 24)
-
-#define AVIVO_DACB_CNTL 0x7a00
-#define AVIVO_DACB_CRTC_SOURCE 0x7a04
-#define AVIVO_DACB_FORCE_OUTPUT_CNTL 0x7a3c
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_FORCE_DATA_EN (1 << 0)
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT (8)
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE (1 << 0)
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN (1 << 1)
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_RED (1 << 2)
-# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY (1 << 24)
-#define AVIVO_DACB_POWERDOWN 0x7a50
-# define AVIVO_DACB_POWERDOWN_POWERDOWN (1 << 0)
-# define AVIVO_DACB_POWERDOWN_BLUE (1 << 8)
-# define AVIVO_DACB_POWERDOWN_GREEN (1 << 16)
-# define AVIVO_DACB_POWERDOWN_RED (1 << 24)
-
-/* Frustratingly, at least on my R580, the DAC and TMDS orders
- * appear inversed: 7800 and 7a80 enable/disable the same physical
- * connector; ditto 7a00 and 7880. O brave new world!
- */
-/* TMDS_CNTL only lower bit of each half bytes matters.
- * UNK0 seems to have no effect on LVDS but kill the feed of DVI connector
- * UNK1 really unknow: so far no visible change from setting it or not
- * UNK2 really unknow: so far no visible change from setting it or not
- * UNK3 really unknow: so far no visible change from setting it or not
- * UNK4 seems to switch red & blue encoding
- * UNK5 is the fun bits on some card people will see their desktop
- * tiled 4 times but for most cards this will give wrong pictures
- * UNK6 seems to kill the feed LVDS & DVI
- */
-#define AVIVO_TMDSA_CNTL 0x7880
-# define AVIVO_TMDSA_CNTL_ENABLE (1 << 0)
-# define AVIVO_TMDSA_CNTL_HPD_MASK (1 << 4)
-# define AVIVO_TMDSA_CNTL_HPD_SELECT (1 << 8)
-# define AVIVO_TMDSA_CNTL_SYNC_PHASE (1 << 12)
-# define AVIVO_TMDSA_CNTL_PIXEL_ENCODING (1 << 16)
-# define AVIVO_TMDSA_CNTL_DUAL_LINK_ENABLE (1 << 24)
-# define AVIVO_TMDSA_CNTL_SWAP (1 << 28)
-#define AVIVO_TMDSA_CRTC_SOURCE 0x7884
-/* 78a8 appears to be some kind of (reasonably tolerant) clock?
- * 78d0 definitely hits the transmitter, definitely clock. */
-/* MYSTERY1 This appears to control dithering? */
-#define AVIVO_TMDSA_BIT_DEPTH_CONTROL 0x7894
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TRUNCATE_EN (1 << 0)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH (1 << 4)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN (1 << 8)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH (1 << 12)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_EN (1 << 16)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH (1 << 20)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL (1 << 24)
-# define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_RESET (1 << 26)
-#define AVIVO_TMDSA_DCBALANCER_CONTROL 0x78d0
-# define AVIVO_TMDSA_DCBALANCER_CONTROL_EN (1 << 0)
-# define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_EN (1 << 8)
-# define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_IN_SHIFT (16)
-# define AVIVO_TMDSA_DCBALANCER_CONTROL_FORCE (1 << 24)
-#define AVIVO_TMDSA_DATA_SYNCHRONIZATION 0x78d8
-# define AVIVO_TMDSA_DATA_SYNCHRONIZATION_DSYNSEL (1 << 0)
-# define AVIVO_TMDSA_DATA_SYNCHRONIZATION_PFREQCHG (1 << 8)
-#define AVIVO_TMDSA_CLOCK_ENABLE 0x7900
-#define AVIVO_TMDSA_TRANSMITTER_ENABLE 0x7904
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX0_ENABLE (1 << 0)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKC0EN (1 << 1)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD00EN (1 << 2)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD01EN (1 << 3)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD02EN (1 << 4)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX1_ENABLE (1 << 8)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD10EN (1 << 10)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD11EN (1 << 11)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD12EN (1 << 12)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX_ENABLE_HPD_MASK (1 << 16)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK (1 << 17)
-# define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK (1 << 18)
-
-/* I don't know any of the bits here, only that enabling (1 << 5)
- * without (1 << 4) makes things go utterly mental ... seems to be
- * the transmitter clock again. */
-/* 790c is a clock?
- * 7910 appears to be some kind of control field, again. (1 << 25)
- * must be enabled to get a signal on my monitor. */
-#define AVIVO_TMDSA_TRANSMITTER_CONTROL 0x7910
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_ENABLE (1 << 0)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_RESET (1 << 1)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT (2)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_IDSCKSEL (1 << 4)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_BGSLEEP (1 << 5)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN (1 << 6)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_TMCLK (1 << 8)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS (1 << 13)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK (1 << 14)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS (1 << 15)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT (16)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_BYPASS_PLL (1 << 28)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_USE_CLK_DATA (1 << 29)
-# define AVIVO_TMDSA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL (1 << 31)
-
-#define AVIVO_LVTMA_CNTL 0x7a80
-# define AVIVO_LVTMA_CNTL_ENABLE (1 << 0)
-# define AVIVO_LVTMA_CNTL_HPD_MASK (1 << 4)
-# define AVIVO_LVTMA_CNTL_HPD_SELECT (1 << 8)
-# define AVIVO_LVTMA_CNTL_SYNC_PHASE (1 << 12)
-# define AVIVO_LVTMA_CNTL_PIXEL_ENCODING (1 << 16)
-# define AVIVO_LVTMA_CNTL_DUAL_LINK_ENABLE (1 << 24)
-# define AVIVO_LVTMA_CNTL_SWAP (1 << 28)
-#define AVIVO_LVTMA_CRTC_SOURCE 0x7a84
-#define AVIVO_LVTMA_BIT_DEPTH_CONTROL 0x7a94
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN (1 << 0)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH (1 << 4)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN (1 << 8)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH (1 << 12)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_EN (1 << 16)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH (1 << 20)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL (1 << 24)
-# define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_RESET (1 << 26)
-
-#define AVIVO_LVTMA_DCBALANCER_CONTROL 0x7ad0
-# define AVIVO_LVTMA_DCBALANCER_CONTROL_EN (1 << 0)
-# define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_EN (1 << 8)
-# define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_IN_SHIFT (16)
-# define AVIVO_LVTMA_DCBALANCER_CONTROL_FORCE (1 << 24)
-
-#define AVIVO_LVTMA_DATA_SYNCHRONIZATION 0x78d8
-# define AVIVO_LVTMA_DATA_SYNCHRONIZATION_DSYNSEL (1 << 0)
-# define AVIVO_LVTMA_DATA_SYNCHRONIZATION_PFREQCHG (1 << 8)
-#define AVIVO_LVTMA_CLOCK_ENABLE 0x7b00
-
-#define AVIVO_LVTMA_TRANSMITTER_ENABLE 0x7b04
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKC0EN (1 << 1)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD00EN (1 << 2)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD01EN (1 << 3)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD02EN (1 << 4)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD03EN (1 << 5)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKC1EN (1 << 9)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD10EN (1 << 10)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD11EN (1 << 11)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD12EN (1 << 12)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK (1 << 17)
-# define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK (1 << 18)
-
-#define AVIVO_LVTMA_TRANSMITTER_CONTROL 0x7b10
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_ENABLE (1 << 0)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_RESET (1 << 1)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT (2)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_IDSCKSEL (1 << 4)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_BGSLEEP (1 << 5)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN (1 << 6)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK (1 << 8)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS (1 << 13)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK (1 << 14)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS (1 << 15)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT (16)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_BYPASS_PLL (1 << 28)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_USE_CLK_DATA (1 << 29)
-# define AVIVO_LVTMA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL (1 << 31)
-
-#define AVIVO_LVTMA_PWRSEQ_CNTL 0x7af0
-# define AVIVO_LVTMA_PWRSEQ_EN (1 << 0)
-# define AVIVO_LVTMA_PWRSEQ_PLL_ENABLE_MASK (1 << 2)
-# define AVIVO_LVTMA_PWRSEQ_PLL_RESET_MASK (1 << 3)
-# define AVIVO_LVTMA_PWRSEQ_TARGET_STATE (1 << 4)
-# define AVIVO_LVTMA_SYNCEN (1 << 8)
-# define AVIVO_LVTMA_SYNCEN_OVRD (1 << 9)
-# define AVIVO_LVTMA_SYNCEN_POL (1 << 10)
-# define AVIVO_LVTMA_DIGON (1 << 16)
-# define AVIVO_LVTMA_DIGON_OVRD (1 << 17)
-# define AVIVO_LVTMA_DIGON_POL (1 << 18)
-# define AVIVO_LVTMA_BLON (1 << 24)
-# define AVIVO_LVTMA_BLON_OVRD (1 << 25)
-# define AVIVO_LVTMA_BLON_POL (1 << 26)
-
-#define AVIVO_LVTMA_PWRSEQ_STATE 0x7af4
-# define AVIVO_LVTMA_PWRSEQ_STATE_TARGET_STATE_R (1 << 0)
-# define AVIVO_LVTMA_PWRSEQ_STATE_DIGON (1 << 1)
-# define AVIVO_LVTMA_PWRSEQ_STATE_SYNCEN (1 << 2)
-# define AVIVO_LVTMA_PWRSEQ_STATE_BLON (1 << 3)
-# define AVIVO_LVTMA_PWRSEQ_STATE_DONE (1 << 4)
-# define AVIVO_LVTMA_PWRSEQ_STATE_STATUS_SHIFT (8)
-
-#define AVIVO_LVDS_BACKLIGHT_CNTL 0x7af8
-# define AVIVO_LVDS_BACKLIGHT_CNTL_EN (1 << 0)
-# define AVIVO_LVDS_BACKLIGHT_LEVEL_MASK 0x0000ff00
-# define AVIVO_LVDS_BACKLIGHT_LEVEL_SHIFT 8
-
-/* The BIOS says so, anyway ... */
-#define AVIVO_GPIO_0 0x7e30
-#define AVIVO_GPIO_1 0x7e40
-#define AVIVO_GPIO_2 0x7e50
-#define AVIVO_GPIO_3 0x7e60
-
-#define AVIVO_TMDS_STATUS 0x7e9c
-# define AVIVO_TMDSA_CONNECTED (1 << 0)
-# define AVIVO_LVTMA_CONNECTED (1 << 8)
-
-/* Cursor registers. */
-#define AVIVO_CURSOR1_CNTL 0x6400
-# define AVIVO_CURSOR_EN (1 << 0)
-# define AVIVO_CURSOR_FORMAT_MASK (3 << 8)
-# define AVIVO_CURSOR_FORMAT_ABGR 0x1
-# define AVIVO_CURSOR_FORMAT_ARGB 0x2
-# define AVIVO_CURSOR_FORMAT_SHIFT 8
-#define AVIVO_CURSOR1_LOCATION 0x6408
-/* x is in the top 16 bits; y in the lower 16. Note that _SIZE does not
- * impact the in-memory format: it is always 64x64. */
-#define AVIVO_CURSOR1_SIZE 0x6410
-#define AVIVO_CURSOR1_POSITION 0x6414
-
-#define AVIVO_I2C_STATUS 0x7d30
-# define AVIVO_I2C_STATUS_DONE (1 << 0)
-# define AVIVO_I2C_STATUS_NACK (1 << 1)
-# define AVIVO_I2C_STATUS_HALT (1 << 2)
-# define AVIVO_I2C_STATUS_GO (1 << 3)
-# define AVIVO_I2C_STATUS_MASK 0x7
-/* If radeon_mm_i2c is to be believed, this is HALT, NACK, and maybe
- * DONE? */
-# define AVIVO_I2C_STATUS_CMD_RESET 0x7
-# define AVIVO_I2C_STATUS_CMD_WAIT (1 << 3)
-#define AVIVO_I2C_STOP 0x7d34
-#define AVIVO_I2C_START_CNTL 0x7d38
-# define AVIVO_I2C_START (1 << 8)
-# define AVIVO_I2C_CONNECTOR0 (0 << 16)
-# define AVIVO_I2C_CONNECTOR1 (1 << 16)
-#define R520_I2C_START (1<<0)
-#define R520_I2C_STOP (1<<1)
-#define R520_I2C_RX (1<<2)
-#define R520_I2C_EN (1<<8)
-#define R520_I2C_DDC1 (0<<16)
-#define R520_I2C_DDC2 (1<<16)
-#define R520_I2C_DDC3 (2<<16)
-#define R520_I2C_DDC_MASK (3<<16)
-#define AVIVO_I2C_CONTROL2 0x7d3c
-# define AVIVO_I2C_7D3C_SIZE_SHIFT 8
-# define AVIVO_I2C_7D3C_SIZE_MASK (0xf << 8)
-#define AVIVO_I2C_CONTROL3 0x7d40
-/* Reading is done 4 bytes at a time: read the bottom 8 bits from
- * 7d44, four times in a row.
- * Writing is a little more complex. First write DATA with
- * 0xnnnnnnzz, then 0xnnnnnnyy, where nnnnnn is some non-deterministic
- * magic number, zz is, I think, the slave address, and yy is the byte
- * you want to write. */
-#define AVIVO_I2C_DATA 0x7d44
-#define R520_I2C_ADDR_COUNT_MASK (0x7)
-#define R520_I2C_DATA_COUNT_SHIFT (8)
-#define R520_I2C_DATA_COUNT_MASK (0xF00)
-#define AVIVO_I2C_CNTL 0x7d50
-# define AVIVO_I2C_EN (1 << 0)
-# define AVIVO_I2C_RESET (1 << 8)
-
-
-#define R520_PCLK_HDCP_CNTL 0x494
-
-#define AVIVO_HDP_FB_LOCATION 0x134
-#define AVIVO_VGA_MEM_BASE 0x310
-#define AVIVO_VGA_SURF_ADDR 0x318
-#define AVIVO_D1VGA_CTRL 0x330
-#define AVIVO_D2VGA_CTRL 0x338
-
-#define AVIVO_DVGA_MODE_ENABLE (1<<0)
-
-