aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_reg.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-05-24 15:42:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-05-24 15:42:54 -0400
commitf2fde3a65e88330017b816faf2ef75f141d21375 (patch)
tree57152ab5756e7ed1c58742e7e16f13a45ff11f21 /drivers/gpu/drm/i915/i915_reg.h
parent28f3d717618156c0dcd2f497d791b578a7931d87 (diff)
parent8c914028f5ddaa417b7d0f4b7fdc24caceaa8043 (diff)
Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux
Pull main drm updates from Dave Airlie: "This is the main merge window request for the drm. It's big, but jam packed will lots of features and of course 0 regressions. (okay maybe there'll be one). Highlights: - new KMS drivers for server GPU chipsets: ast, mgag200 and cirrus (qemu only). These drivers use the generic modesetting drivers. - initial prime/dma-buf support for i915, nouveau, radeon, udl and exynos - switcheroo audio support: so GPUs with HDMI can turn off the sound driver without crashing stuff. - There are some patches drifting outside drivers/gpu into x86 and EFI for better handling of multiple video adapters in Apple Macs, they've got correct acks except one trivial fixup. - Core: edid parser has better DMT and reduced blanking support, crtc properties, plane properties, - Drivers: exynos: add 2D core accel support, prime support, hdmi features intel: more Haswell support, initial Valleyview support, more hdmi infoframe fixes, update MAINTAINERS for Daniel, lots of cleanups and fixes radeon: more HDMI audio support, improved GPU lockup recovery support, remove nested mutexes, less memory copying on PCIE, fix bus master enable race (kexec), improved fence handling gma500: cleanups, 1080p support, acpi fixes nouveau: better nva3 memory reclocking, kepler accel (needs external firmware rip), async buffer moves on nv84+ hw. I've some more dma-buf patches that rely on the dma-buf merge for vmap stuff, and I've a few fixes building up, but I'd decided I'd better get rid of the main pull sooner rather than later, so the audio guys are also unblocked." Fix up trivial conflict due to some duplicated changes in drivers/gpu/drm/i915/intel_ringbuffer.c * 'drm-core-next' of git://people.freedesktop.org/~airlied/linux: (605 commits) drm/nouveau/nvd9: Fix GPIO initialisation sequence. drm/nouveau: Unregister switcheroo client on exit drm/nouveau: Check dsm on switcheroo unregister drm/nouveau: fix a minor annoyance in an output string drm/nouveau: turn a BUG into a WARN drm/nv50: decode PGRAPH DATA_ERROR = 0x24 drm/nouveau/disp: fix dithering not being enabled on some eDP macbooks drm/nvd9/copy: initialise copy engine, seems to work like nvc0 drm/nvc0/ttm: use copy engines for async buffer moves drm/nva3/ttm: use copy engine for async buffer moves drm/nv98/ttm: add in a (disabled) crypto engine buffer copy method drm/nv84/ttm: use crypto engine for async buffer copies drm/nouveau/ttm: untangle code to support accelerated buffer moves drm/nouveau/fbcon: use fence for sync, rather than notifier drm/nv98/crypt: non-stub implementation of the engine hooks drm/nouveau/fifo: turn all fifo modules into engine modules drm/nv50/graph: remove ability to do interrupt-driven context switching drm/nv50: remove manual context unload on context destruction drm/nv50: remove execution engine context saves on suspend drm/nv50/fifo: use hardware channel kickoff functionality ...
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h488
1 files changed, 464 insertions, 24 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 9d24d65f0c3e..2d49b9507ed0 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -27,6 +27,11 @@
27 27
28#define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a))) 28#define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a)))
29 29
30#define _PORT(port, a, b) ((a) + (port)*((b)-(a)))
31
32#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a))
33#define _MASKED_BIT_DISABLE(a) ((a) << 16)
34
30/* 35/*
31 * The Bridge device's PCI config space has information about the 36 * The Bridge device's PCI config space has information about the
32 * fb aperture size and the amount of pre-reserved memory. 37 * fb aperture size and the amount of pre-reserved memory.
@@ -77,6 +82,7 @@
77#define GRDOM_FULL (0<<2) 82#define GRDOM_FULL (0<<2)
78#define GRDOM_RENDER (1<<2) 83#define GRDOM_RENDER (1<<2)
79#define GRDOM_MEDIA (3<<2) 84#define GRDOM_MEDIA (3<<2)
85#define GRDOM_RESET_ENABLE (1<<0)
80 86
81#define GEN6_MBCUNIT_SNPCR 0x900c /* for LLC config */ 87#define GEN6_MBCUNIT_SNPCR 0x900c /* for LLC config */
82#define GEN6_MBC_SNPCR_SHIFT 21 88#define GEN6_MBC_SNPCR_SHIFT 21
@@ -125,6 +131,13 @@
125#define ECOCHK_PPGTT_CACHE64B (0x3<<3) 131#define ECOCHK_PPGTT_CACHE64B (0x3<<3)
126#define ECOCHK_PPGTT_CACHE4B (0x0<<3) 132#define ECOCHK_PPGTT_CACHE4B (0x0<<3)
127 133
134#define GAC_ECO_BITS 0x14090
135#define ECOBITS_PPGTT_CACHE64B (3<<8)
136#define ECOBITS_PPGTT_CACHE4B (0<<8)
137
138#define GAB_CTL 0x24000
139#define GAB_CTL_CONT_AFTER_PAGEFAULT (1<<8)
140
128/* VGA stuff */ 141/* VGA stuff */
129 142
130#define VGA_ST01_MDA 0x3ba 143#define VGA_ST01_MDA 0x3ba
@@ -222,6 +235,7 @@
222#define MI_BATCH_NON_SECURE (1) 235#define MI_BATCH_NON_SECURE (1)
223#define MI_BATCH_NON_SECURE_I965 (1<<8) 236#define MI_BATCH_NON_SECURE_I965 (1<<8)
224#define MI_BATCH_BUFFER_START MI_INSTR(0x31, 0) 237#define MI_BATCH_BUFFER_START MI_INSTR(0x31, 0)
238#define MI_BATCH_GTT (2<<6) /* aliased with (1<<7) on gen4 */
225#define MI_SEMAPHORE_MBOX MI_INSTR(0x16, 1) /* gen6+ */ 239#define MI_SEMAPHORE_MBOX MI_INSTR(0x16, 1) /* gen6+ */
226#define MI_SEMAPHORE_GLOBAL_GTT (1<<22) 240#define MI_SEMAPHORE_GLOBAL_GTT (1<<22)
227#define MI_SEMAPHORE_UPDATE (1<<21) 241#define MI_SEMAPHORE_UPDATE (1<<21)
@@ -301,6 +315,61 @@
301#define DEBUG_RESET_RENDER (1<<8) 315#define DEBUG_RESET_RENDER (1<<8)
302#define DEBUG_RESET_DISPLAY (1<<9) 316#define DEBUG_RESET_DISPLAY (1<<9)
303 317
318/*
319 * DPIO - a special bus for various display related registers to hide behind:
320 * 0x800c: m1, m2, n, p1, p2, k dividers
321 * 0x8014: REF and SFR select
322 * 0x8014: N divider, VCO select
323 * 0x801c/3c: core clock bits
324 * 0x8048/68: low pass filter coefficients
325 * 0x8100: fast clock controls
326 */
327#define DPIO_PKT 0x2100
328#define DPIO_RID (0<<24)
329#define DPIO_OP_WRITE (1<<16)
330#define DPIO_OP_READ (0<<16)
331#define DPIO_PORTID (0x12<<8)
332#define DPIO_BYTE (0xf<<4)
333#define DPIO_BUSY (1<<0) /* status only */
334#define DPIO_DATA 0x2104
335#define DPIO_REG 0x2108
336#define DPIO_CTL 0x2110
337#define DPIO_MODSEL1 (1<<3) /* if ref clk b == 27 */
338#define DPIO_MODSEL0 (1<<2) /* if ref clk a == 27 */
339#define DPIO_SFR_BYPASS (1<<1)
340#define DPIO_RESET (1<<0)
341
342#define _DPIO_DIV_A 0x800c
343#define DPIO_POST_DIV_SHIFT (28) /* 3 bits */
344#define DPIO_K_SHIFT (24) /* 4 bits */
345#define DPIO_P1_SHIFT (21) /* 3 bits */
346#define DPIO_P2_SHIFT (16) /* 5 bits */
347#define DPIO_N_SHIFT (12) /* 4 bits */
348#define DPIO_ENABLE_CALIBRATION (1<<11)
349#define DPIO_M1DIV_SHIFT (8) /* 3 bits */
350#define DPIO_M2DIV_MASK 0xff
351#define _DPIO_DIV_B 0x802c
352#define DPIO_DIV(pipe) _PIPE(pipe, _DPIO_DIV_A, _DPIO_DIV_B)
353
354#define _DPIO_REFSFR_A 0x8014
355#define DPIO_REFSEL_OVERRIDE 27
356#define DPIO_PLL_MODESEL_SHIFT 24 /* 3 bits */
357#define DPIO_BIAS_CURRENT_CTL_SHIFT 21 /* 3 bits, always 0x7 */
358#define DPIO_PLL_REFCLK_SEL_SHIFT 16 /* 2 bits */
359#define DPIO_DRIVER_CTL_SHIFT 12 /* always set to 0x8 */
360#define DPIO_CLK_BIAS_CTL_SHIFT 8 /* always set to 0x5 */
361#define _DPIO_REFSFR_B 0x8034
362#define DPIO_REFSFR(pipe) _PIPE(pipe, _DPIO_REFSFR_A, _DPIO_REFSFR_B)
363
364#define _DPIO_CORE_CLK_A 0x801c
365#define _DPIO_CORE_CLK_B 0x803c
366#define DPIO_CORE_CLK(pipe) _PIPE(pipe, _DPIO_CORE_CLK_A, _DPIO_CORE_CLK_B)
367
368#define _DPIO_LFP_COEFF_A 0x8048
369#define _DPIO_LFP_COEFF_B 0x8068
370#define DPIO_LFP_COEFF(pipe) _PIPE(pipe, _DPIO_LFP_COEFF_A, _DPIO_LFP_COEFF_B)
371
372#define DPIO_FASTCLK_DISABLE 0x8100
304 373
305/* 374/*
306 * Fence registers 375 * Fence registers
@@ -360,8 +429,6 @@
360#define ARB_MODE 0x04030 429#define ARB_MODE 0x04030
361#define ARB_MODE_SWIZZLE_SNB (1<<4) 430#define ARB_MODE_SWIZZLE_SNB (1<<4)
362#define ARB_MODE_SWIZZLE_IVB (1<<5) 431#define ARB_MODE_SWIZZLE_IVB (1<<5)
363#define ARB_MODE_ENABLE(x) GFX_MODE_ENABLE(x)
364#define ARB_MODE_DISABLE(x) GFX_MODE_DISABLE(x)
365#define RENDER_HWS_PGA_GEN7 (0x04080) 432#define RENDER_HWS_PGA_GEN7 (0x04080)
366#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id) 433#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id)
367#define DONE_REG 0x40b0 434#define DONE_REG 0x40b0
@@ -417,6 +484,7 @@
417#define INSTDONE 0x02090 484#define INSTDONE 0x02090
418#define NOPID 0x02094 485#define NOPID 0x02094
419#define HWSTAM 0x02098 486#define HWSTAM 0x02098
487#define DMA_FADD_I8XX 0x020d0
420 488
421#define ERROR_GEN6 0x040a0 489#define ERROR_GEN6 0x040a0
422 490
@@ -432,6 +500,7 @@
432 */ 500 */
433# define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14) 501# define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14)
434#define _3D_CHICKEN3 0x02090 502#define _3D_CHICKEN3 0x02090
503#define _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL (1 << 5)
435 504
436#define MI_MODE 0x0209c 505#define MI_MODE 0x0209c
437# define VS_TIMER_DISPATCH (1 << 6) 506# define VS_TIMER_DISPATCH (1 << 6)
@@ -447,14 +516,16 @@
447#define GFX_PSMI_GRANULARITY (1<<10) 516#define GFX_PSMI_GRANULARITY (1<<10)
448#define GFX_PPGTT_ENABLE (1<<9) 517#define GFX_PPGTT_ENABLE (1<<9)
449 518
450#define GFX_MODE_ENABLE(bit) (((bit) << 16) | (bit))
451#define GFX_MODE_DISABLE(bit) (((bit) << 16) | (0))
452
453#define SCPD0 0x0209c /* 915+ only */ 519#define SCPD0 0x0209c /* 915+ only */
454#define IER 0x020a0 520#define IER 0x020a0
455#define IIR 0x020a4 521#define IIR 0x020a4
456#define IMR 0x020a8 522#define IMR 0x020a8
457#define ISR 0x020ac 523#define ISR 0x020ac
524#define VLV_IIR_RW 0x182084
525#define VLV_IER 0x1820a0
526#define VLV_IIR 0x1820a4
527#define VLV_IMR 0x1820a8
528#define VLV_ISR 0x1820ac
458#define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18) 529#define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18)
459#define I915_DISPLAY_PORT_INTERRUPT (1<<17) 530#define I915_DISPLAY_PORT_INTERRUPT (1<<17)
460#define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15) 531#define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15)
@@ -500,7 +571,6 @@
500#define LM_BURST_LENGTH 0x00000700 571#define LM_BURST_LENGTH 0x00000700
501#define LM_FIFO_WATERMARK 0x0000001F 572#define LM_FIFO_WATERMARK 0x0000001F
502#define MI_ARB_STATE 0x020e4 /* 915+ only */ 573#define MI_ARB_STATE 0x020e4 /* 915+ only */
503#define MI_ARB_MASK_SHIFT 16 /* shift for enable bits */
504 574
505/* Make render/texture TLB fetches lower priorty than associated data 575/* Make render/texture TLB fetches lower priorty than associated data
506 * fetches. This is not turned on by default 576 * fetches. This is not turned on by default
@@ -565,7 +635,6 @@
565#define MI_ARB_DISPLAY_PRIORITY_B_A (1 << 0) /* display B > display A */ 635#define MI_ARB_DISPLAY_PRIORITY_B_A (1 << 0) /* display B > display A */
566 636
567#define CACHE_MODE_0 0x02120 /* 915+ only */ 637#define CACHE_MODE_0 0x02120 /* 915+ only */
568#define CM0_MASK_SHIFT 16
569#define CM0_IZ_OPT_DISABLE (1<<6) 638#define CM0_IZ_OPT_DISABLE (1<<6)
570#define CM0_ZR_OPT_DISABLE (1<<5) 639#define CM0_ZR_OPT_DISABLE (1<<5)
571#define CM0_STC_EVICT_DISABLE_LRA_SNB (1<<5) 640#define CM0_STC_EVICT_DISABLE_LRA_SNB (1<<5)
@@ -579,7 +648,12 @@
579#define ECO_GATING_CX_ONLY (1<<3) 648#define ECO_GATING_CX_ONLY (1<<3)
580#define ECO_FLIP_DONE (1<<0) 649#define ECO_FLIP_DONE (1<<0)
581 650
582/* GEN6 interrupt control */ 651#define CACHE_MODE_1 0x7004 /* IVB+ */
652#define PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6)
653
654/* GEN6 interrupt control
655 * Note that the per-ring interrupt bits do alias with the global interrupt bits
656 * in GTIMR. */
583#define GEN6_RENDER_HWSTAM 0x2098 657#define GEN6_RENDER_HWSTAM 0x2098
584#define GEN6_RENDER_IMR 0x20a8 658#define GEN6_RENDER_IMR 0x20a8
585#define GEN6_RENDER_CONTEXT_SWITCH_INTERRUPT (1 << 8) 659#define GEN6_RENDER_CONTEXT_SWITCH_INTERRUPT (1 << 8)
@@ -615,6 +689,21 @@
615 689
616#define GEN6_BSD_RNCID 0x12198 690#define GEN6_BSD_RNCID 0x12198
617 691
692#define GEN7_FF_THREAD_MODE 0x20a0
693#define GEN7_FF_SCHED_MASK 0x0077070
694#define GEN7_FF_TS_SCHED_HS1 (0x5<<16)
695#define GEN7_FF_TS_SCHED_HS0 (0x3<<16)
696#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16)
697#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */
698#define GEN7_FF_VS_SCHED_HS1 (0x5<<12)
699#define GEN7_FF_VS_SCHED_HS0 (0x3<<12)
700#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */
701#define GEN7_FF_VS_SCHED_HW (0x0<<12)
702#define GEN7_FF_DS_SCHED_HS1 (0x5<<4)
703#define GEN7_FF_DS_SCHED_HS0 (0x3<<4)
704#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */
705#define GEN7_FF_DS_SCHED_HW (0x0<<4)
706
618/* 707/*
619 * Framebuffer compression (915+ only) 708 * Framebuffer compression (915+ only)
620 */ 709 */
@@ -743,9 +832,9 @@
743#define GMBUS_PORT_PANEL 3 832#define GMBUS_PORT_PANEL 3
744#define GMBUS_PORT_DPC 4 /* HDMIC */ 833#define GMBUS_PORT_DPC 4 /* HDMIC */
745#define GMBUS_PORT_DPB 5 /* SDVO, HDMIB */ 834#define GMBUS_PORT_DPB 5 /* SDVO, HDMIB */
746 /* 6 reserved */ 835#define GMBUS_PORT_DPD 6 /* HDMID */
747#define GMBUS_PORT_DPD 7 /* HDMID */ 836#define GMBUS_PORT_RESERVED 7 /* 7 reserved */
748#define GMBUS_NUM_PORTS 8 837#define GMBUS_NUM_PORTS (GMBUS_PORT_DPD - GMBUS_PORT_SSC + 1)
749#define GMBUS1 0x5104 /* command/status */ 838#define GMBUS1 0x5104 /* command/status */
750#define GMBUS_SW_CLR_INT (1<<31) 839#define GMBUS_SW_CLR_INT (1<<31)
751#define GMBUS_SW_RDY (1<<30) 840#define GMBUS_SW_RDY (1<<30)
@@ -797,7 +886,9 @@
797#define DPLL(pipe) _PIPE(pipe, _DPLL_A, _DPLL_B) 886#define DPLL(pipe) _PIPE(pipe, _DPLL_A, _DPLL_B)
798#define DPLL_VCO_ENABLE (1 << 31) 887#define DPLL_VCO_ENABLE (1 << 31)
799#define DPLL_DVO_HIGH_SPEED (1 << 30) 888#define DPLL_DVO_HIGH_SPEED (1 << 30)
889#define DPLL_EXT_BUFFER_ENABLE_VLV (1 << 30)
800#define DPLL_SYNCLOCK_ENABLE (1 << 29) 890#define DPLL_SYNCLOCK_ENABLE (1 << 29)
891#define DPLL_REFA_CLK_ENABLE_VLV (1 << 29)
801#define DPLL_VGA_MODE_DIS (1 << 28) 892#define DPLL_VGA_MODE_DIS (1 << 28)
802#define DPLLB_MODE_DAC_SERIAL (1 << 26) /* i915 */ 893#define DPLLB_MODE_DAC_SERIAL (1 << 26) /* i915 */
803#define DPLLB_MODE_LVDS (2 << 26) /* i915 */ 894#define DPLLB_MODE_LVDS (2 << 26) /* i915 */
@@ -809,6 +900,7 @@
809#define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ 900#define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */
810#define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ 901#define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */
811#define DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW 0x00ff8000 /* Pineview */ 902#define DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW 0x00ff8000 /* Pineview */
903#define DPLL_INTEGRATED_CLOCK_VLV (1<<13)
812 904
813#define SRX_INDEX 0x3c4 905#define SRX_INDEX 0x3c4
814#define SRX_DATA 0x3c5 906#define SRX_DATA 0x3c5
@@ -904,6 +996,7 @@
904#define DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT 0 996#define DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT 0
905#define _DPLL_B_MD 0x06020 /* 965+ only */ 997#define _DPLL_B_MD 0x06020 /* 965+ only */
906#define DPLL_MD(pipe) _PIPE(pipe, _DPLL_A_MD, _DPLL_B_MD) 998#define DPLL_MD(pipe) _PIPE(pipe, _DPLL_A_MD, _DPLL_B_MD)
999
907#define _FPA0 0x06040 1000#define _FPA0 0x06040
908#define _FPA1 0x06044 1001#define _FPA1 0x06044
909#define _FPB0 0x06048 1002#define _FPB0 0x06048
@@ -1044,6 +1137,9 @@
1044#define RAMCLK_GATE_D 0x6210 /* CRL only */ 1137#define RAMCLK_GATE_D 0x6210 /* CRL only */
1045#define DEUC 0x6214 /* CRL only */ 1138#define DEUC 0x6214 /* CRL only */
1046 1139
1140#define FW_BLC_SELF_VLV 0x6500
1141#define FW_CSPWRDWNEN (1<<15)
1142
1047/* 1143/*
1048 * Palette regs 1144 * Palette regs
1049 */ 1145 */
@@ -1601,9 +1697,12 @@
1601/* Video Data Island Packet control */ 1697/* Video Data Island Packet control */
1602#define VIDEO_DIP_DATA 0x61178 1698#define VIDEO_DIP_DATA 0x61178
1603#define VIDEO_DIP_CTL 0x61170 1699#define VIDEO_DIP_CTL 0x61170
1700/* Pre HSW: */
1604#define VIDEO_DIP_ENABLE (1 << 31) 1701#define VIDEO_DIP_ENABLE (1 << 31)
1605#define VIDEO_DIP_PORT_B (1 << 29) 1702#define VIDEO_DIP_PORT_B (1 << 29)
1606#define VIDEO_DIP_PORT_C (2 << 29) 1703#define VIDEO_DIP_PORT_C (2 << 29)
1704#define VIDEO_DIP_PORT_D (3 << 29)
1705#define VIDEO_DIP_PORT_MASK (3 << 29)
1607#define VIDEO_DIP_ENABLE_AVI (1 << 21) 1706#define VIDEO_DIP_ENABLE_AVI (1 << 21)
1608#define VIDEO_DIP_ENABLE_VENDOR (2 << 21) 1707#define VIDEO_DIP_ENABLE_VENDOR (2 << 21)
1609#define VIDEO_DIP_ENABLE_SPD (8 << 21) 1708#define VIDEO_DIP_ENABLE_SPD (8 << 21)
@@ -1614,6 +1713,10 @@
1614#define VIDEO_DIP_FREQ_ONCE (0 << 16) 1713#define VIDEO_DIP_FREQ_ONCE (0 << 16)
1615#define VIDEO_DIP_FREQ_VSYNC (1 << 16) 1714#define VIDEO_DIP_FREQ_VSYNC (1 << 16)
1616#define VIDEO_DIP_FREQ_2VSYNC (2 << 16) 1715#define VIDEO_DIP_FREQ_2VSYNC (2 << 16)
1716#define VIDEO_DIP_FREQ_MASK (3 << 16)
1717/* HSW and later: */
1718#define VIDEO_DIP_ENABLE_AVI_HSW (1 << 12)
1719#define VIDEO_DIP_ENABLE_SPD_HSW (1 << 0)
1617 1720
1618/* Panel power sequencing */ 1721/* Panel power sequencing */
1619#define PP_STATUS 0x61200 1722#define PP_STATUS 0x61200
@@ -2380,7 +2483,8 @@
2380 2483
2381/* Pipe A */ 2484/* Pipe A */
2382#define _PIPEADSL 0x70000 2485#define _PIPEADSL 0x70000
2383#define DSL_LINEMASK 0x00000fff 2486#define DSL_LINEMASK_GEN2 0x00000fff
2487#define DSL_LINEMASK_GEN3 0x00001fff
2384#define _PIPEACONF 0x70008 2488#define _PIPEACONF 0x70008
2385#define PIPECONF_ENABLE (1<<31) 2489#define PIPECONF_ENABLE (1<<31)
2386#define PIPECONF_DISABLE 0 2490#define PIPECONF_DISABLE 0
@@ -2422,23 +2526,30 @@
2422#define PIPECONF_DITHER_TYPE_TEMP (3<<2) 2526#define PIPECONF_DITHER_TYPE_TEMP (3<<2)
2423#define _PIPEASTAT 0x70024 2527#define _PIPEASTAT 0x70024
2424#define PIPE_FIFO_UNDERRUN_STATUS (1UL<<31) 2528#define PIPE_FIFO_UNDERRUN_STATUS (1UL<<31)
2529#define SPRITE1_FLIPDONE_INT_EN_VLV (1UL<<30)
2425#define PIPE_CRC_ERROR_ENABLE (1UL<<29) 2530#define PIPE_CRC_ERROR_ENABLE (1UL<<29)
2426#define PIPE_CRC_DONE_ENABLE (1UL<<28) 2531#define PIPE_CRC_DONE_ENABLE (1UL<<28)
2427#define PIPE_GMBUS_EVENT_ENABLE (1UL<<27) 2532#define PIPE_GMBUS_EVENT_ENABLE (1UL<<27)
2533#define PLANE_FLIP_DONE_INT_EN_VLV (1UL<<26)
2428#define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL<<26) 2534#define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL<<26)
2429#define PIPE_VSYNC_INTERRUPT_ENABLE (1UL<<25) 2535#define PIPE_VSYNC_INTERRUPT_ENABLE (1UL<<25)
2430#define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL<<24) 2536#define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL<<24)
2431#define PIPE_DPST_EVENT_ENABLE (1UL<<23) 2537#define PIPE_DPST_EVENT_ENABLE (1UL<<23)
2538#define SPRITE0_FLIP_DONE_INT_EN_VLV (1UL<<26)
2432#define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL<<22) 2539#define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL<<22)
2433#define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL<<21) 2540#define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL<<21)
2434#define PIPE_EVEN_FIELD_INTERRUPT_ENABLE (1UL<<20) 2541#define PIPE_EVEN_FIELD_INTERRUPT_ENABLE (1UL<<20)
2435#define PIPE_HOTPLUG_TV_INTERRUPT_ENABLE (1UL<<18) /* pre-965 */ 2542#define PIPE_HOTPLUG_TV_INTERRUPT_ENABLE (1UL<<18) /* pre-965 */
2436#define PIPE_START_VBLANK_INTERRUPT_ENABLE (1UL<<18) /* 965 or later */ 2543#define PIPE_START_VBLANK_INTERRUPT_ENABLE (1UL<<18) /* 965 or later */
2437#define PIPE_VBLANK_INTERRUPT_ENABLE (1UL<<17) 2544#define PIPE_VBLANK_INTERRUPT_ENABLE (1UL<<17)
2545#define PIPEA_HBLANK_INT_EN_VLV (1UL<<16)
2438#define PIPE_OVERLAY_UPDATED_ENABLE (1UL<<16) 2546#define PIPE_OVERLAY_UPDATED_ENABLE (1UL<<16)
2547#define SPRITE1_FLIPDONE_INT_STATUS_VLV (1UL<<15)
2548#define SPRITE0_FLIPDONE_INT_STATUS_VLV (1UL<<15)
2439#define PIPE_CRC_ERROR_INTERRUPT_STATUS (1UL<<13) 2549#define PIPE_CRC_ERROR_INTERRUPT_STATUS (1UL<<13)
2440#define PIPE_CRC_DONE_INTERRUPT_STATUS (1UL<<12) 2550#define PIPE_CRC_DONE_INTERRUPT_STATUS (1UL<<12)
2441#define PIPE_GMBUS_INTERRUPT_STATUS (1UL<<11) 2551#define PIPE_GMBUS_INTERRUPT_STATUS (1UL<<11)
2552#define PLANE_FLIPDONE_INT_STATUS_VLV (1UL<<10)
2442#define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL<<10) 2553#define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL<<10)
2443#define PIPE_VSYNC_INTERRUPT_STATUS (1UL<<9) 2554#define PIPE_VSYNC_INTERRUPT_STATUS (1UL<<9)
2444#define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL<<8) 2555#define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL<<8)
@@ -2463,6 +2574,40 @@
2463#define PIPEFRAMEPIXEL(pipe) _PIPE(pipe, _PIPEAFRAMEPIXEL, _PIPEBFRAMEPIXEL) 2574#define PIPEFRAMEPIXEL(pipe) _PIPE(pipe, _PIPEAFRAMEPIXEL, _PIPEBFRAMEPIXEL)
2464#define PIPESTAT(pipe) _PIPE(pipe, _PIPEASTAT, _PIPEBSTAT) 2575#define PIPESTAT(pipe) _PIPE(pipe, _PIPEASTAT, _PIPEBSTAT)
2465 2576
2577#define VLV_DPFLIPSTAT 0x70028
2578#define PIPEB_LINE_COMPARE_STATUS (1<<29)
2579#define PIPEB_HLINE_INT_EN (1<<28)
2580#define PIPEB_VBLANK_INT_EN (1<<27)
2581#define SPRITED_FLIPDONE_INT_EN (1<<26)
2582#define SPRITEC_FLIPDONE_INT_EN (1<<25)
2583#define PLANEB_FLIPDONE_INT_EN (1<<24)
2584#define PIPEA_LINE_COMPARE_STATUS (1<<21)
2585#define PIPEA_HLINE_INT_EN (1<<20)
2586#define PIPEA_VBLANK_INT_EN (1<<19)
2587#define SPRITEB_FLIPDONE_INT_EN (1<<18)
2588#define SPRITEA_FLIPDONE_INT_EN (1<<17)
2589#define PLANEA_FLIPDONE_INT_EN (1<<16)
2590
2591#define DPINVGTT 0x7002c /* VLV only */
2592#define CURSORB_INVALID_GTT_INT_EN (1<<23)
2593#define CURSORA_INVALID_GTT_INT_EN (1<<22)
2594#define SPRITED_INVALID_GTT_INT_EN (1<<21)
2595#define SPRITEC_INVALID_GTT_INT_EN (1<<20)
2596#define PLANEB_INVALID_GTT_INT_EN (1<<19)
2597#define SPRITEB_INVALID_GTT_INT_EN (1<<18)
2598#define SPRITEA_INVALID_GTT_INT_EN (1<<17)
2599#define PLANEA_INVALID_GTT_INT_EN (1<<16)
2600#define DPINVGTT_EN_MASK 0xff0000
2601#define CURSORB_INVALID_GTT_STATUS (1<<7)
2602#define CURSORA_INVALID_GTT_STATUS (1<<6)
2603#define SPRITED_INVALID_GTT_STATUS (1<<5)
2604#define SPRITEC_INVALID_GTT_STATUS (1<<4)
2605#define PLANEB_INVALID_GTT_STATUS (1<<3)
2606#define SPRITEB_INVALID_GTT_STATUS (1<<2)
2607#define SPRITEA_INVALID_GTT_STATUS (1<<1)
2608#define PLANEA_INVALID_GTT_STATUS (1<<0)
2609#define DPINVGTT_STATUS_MASK 0xff
2610
2466#define DSPARB 0x70030 2611#define DSPARB 0x70030
2467#define DSPARB_CSTART_MASK (0x7f << 7) 2612#define DSPARB_CSTART_MASK (0x7f << 7)
2468#define DSPARB_CSTART_SHIFT 7 2613#define DSPARB_CSTART_SHIFT 7
@@ -2492,11 +2637,28 @@
2492#define DSPFW_HPLL_CURSOR_MASK (0x3f<<16) 2637#define DSPFW_HPLL_CURSOR_MASK (0x3f<<16)
2493#define DSPFW_HPLL_SR_MASK (0x1ff) 2638#define DSPFW_HPLL_SR_MASK (0x1ff)
2494 2639
2640/* drain latency register values*/
2641#define DRAIN_LATENCY_PRECISION_32 32
2642#define DRAIN_LATENCY_PRECISION_16 16
2643#define VLV_DDL1 0x70050
2644#define DDL_CURSORA_PRECISION_32 (1<<31)
2645#define DDL_CURSORA_PRECISION_16 (0<<31)
2646#define DDL_CURSORA_SHIFT 24
2647#define DDL_PLANEA_PRECISION_32 (1<<7)
2648#define DDL_PLANEA_PRECISION_16 (0<<7)
2649#define VLV_DDL2 0x70054
2650#define DDL_CURSORB_PRECISION_32 (1<<31)
2651#define DDL_CURSORB_PRECISION_16 (0<<31)
2652#define DDL_CURSORB_SHIFT 24
2653#define DDL_PLANEB_PRECISION_32 (1<<7)
2654#define DDL_PLANEB_PRECISION_16 (0<<7)
2655
2495/* FIFO watermark sizes etc */ 2656/* FIFO watermark sizes etc */
2496#define G4X_FIFO_LINE_SIZE 64 2657#define G4X_FIFO_LINE_SIZE 64
2497#define I915_FIFO_LINE_SIZE 64 2658#define I915_FIFO_LINE_SIZE 64
2498#define I830_FIFO_LINE_SIZE 32 2659#define I830_FIFO_LINE_SIZE 32
2499 2660
2661#define VALLEYVIEW_FIFO_SIZE 255
2500#define G4X_FIFO_SIZE 127 2662#define G4X_FIFO_SIZE 127
2501#define I965_FIFO_SIZE 512 2663#define I965_FIFO_SIZE 512
2502#define I945_FIFO_SIZE 127 2664#define I945_FIFO_SIZE 127
@@ -2504,6 +2666,7 @@
2504#define I855GM_FIFO_SIZE 127 /* In cachelines */ 2666#define I855GM_FIFO_SIZE 127 /* In cachelines */
2505#define I830_FIFO_SIZE 95 2667#define I830_FIFO_SIZE 95
2506 2668
2669#define VALLEYVIEW_MAX_WM 0xff
2507#define G4X_MAX_WM 0x3f 2670#define G4X_MAX_WM 0x3f
2508#define I915_MAX_WM 0x3f 2671#define I915_MAX_WM 0x3f
2509 2672
@@ -2518,6 +2681,7 @@
2518#define PINEVIEW_CURSOR_DFT_WM 0 2681#define PINEVIEW_CURSOR_DFT_WM 0
2519#define PINEVIEW_CURSOR_GUARD_WM 5 2682#define PINEVIEW_CURSOR_GUARD_WM 5
2520 2683
2684#define VALLEYVIEW_CURSOR_MAX_WM 64
2521#define I965_CURSOR_FIFO 64 2685#define I965_CURSOR_FIFO 64
2522#define I965_CURSOR_MAX_WM 32 2686#define I965_CURSOR_MAX_WM 32
2523#define I965_CURSOR_DFT_WM 8 2687#define I965_CURSOR_DFT_WM 8
@@ -2726,6 +2890,13 @@
2726#define DSPSURF(plane) _PIPE(plane, _DSPASURF, _DSPBSURF) 2890#define DSPSURF(plane) _PIPE(plane, _DSPASURF, _DSPBSURF)
2727#define DSPTILEOFF(plane) _PIPE(plane, _DSPATILEOFF, _DSPBTILEOFF) 2891#define DSPTILEOFF(plane) _PIPE(plane, _DSPATILEOFF, _DSPBTILEOFF)
2728 2892
2893/* Display/Sprite base address macros */
2894#define DISP_BASEADDR_MASK (0xfffff000)
2895#define I915_LO_DISPBASE(val) (val & ~DISP_BASEADDR_MASK)
2896#define I915_HI_DISPBASE(val) (val & DISP_BASEADDR_MASK)
2897#define I915_MODIFY_DISPBASE(reg, gfx_addr) \
2898 (I915_WRITE(reg, gfx_addr | I915_LO_DISPBASE(I915_READ(reg))))
2899
2729/* VBIOS flags */ 2900/* VBIOS flags */
2730#define SWF00 0x71410 2901#define SWF00 0x71410
2731#define SWF01 0x71414 2902#define SWF01 0x71414
@@ -3058,25 +3229,38 @@
3058#define DE_PCH_EVENT_IVB (1<<28) 3229#define DE_PCH_EVENT_IVB (1<<28)
3059#define DE_DP_A_HOTPLUG_IVB (1<<27) 3230#define DE_DP_A_HOTPLUG_IVB (1<<27)
3060#define DE_AUX_CHANNEL_A_IVB (1<<26) 3231#define DE_AUX_CHANNEL_A_IVB (1<<26)
3232#define DE_SPRITEC_FLIP_DONE_IVB (1<<14)
3233#define DE_PLANEC_FLIP_DONE_IVB (1<<13)
3234#define DE_PIPEC_VBLANK_IVB (1<<10)
3061#define DE_SPRITEB_FLIP_DONE_IVB (1<<9) 3235#define DE_SPRITEB_FLIP_DONE_IVB (1<<9)
3062#define DE_SPRITEA_FLIP_DONE_IVB (1<<4)
3063#define DE_PLANEB_FLIP_DONE_IVB (1<<8) 3236#define DE_PLANEB_FLIP_DONE_IVB (1<<8)
3064#define DE_PLANEA_FLIP_DONE_IVB (1<<3)
3065#define DE_PIPEB_VBLANK_IVB (1<<5) 3237#define DE_PIPEB_VBLANK_IVB (1<<5)
3238#define DE_SPRITEA_FLIP_DONE_IVB (1<<4)
3239#define DE_PLANEA_FLIP_DONE_IVB (1<<3)
3066#define DE_PIPEA_VBLANK_IVB (1<<0) 3240#define DE_PIPEA_VBLANK_IVB (1<<0)
3067 3241
3242#define VLV_MASTER_IER 0x4400c /* Gunit master IER */
3243#define MASTER_INTERRUPT_ENABLE (1<<31)
3244
3068#define DEISR 0x44000 3245#define DEISR 0x44000
3069#define DEIMR 0x44004 3246#define DEIMR 0x44004
3070#define DEIIR 0x44008 3247#define DEIIR 0x44008
3071#define DEIER 0x4400c 3248#define DEIER 0x4400c
3072 3249
3073/* GT interrupt */ 3250/* GT interrupt.
3074#define GT_PIPE_NOTIFY (1 << 4) 3251 * Note that for gen6+ the ring-specific interrupt bits do alias with the
3075#define GT_SYNC_STATUS (1 << 2) 3252 * corresponding bits in the per-ring interrupt control registers. */
3076#define GT_USER_INTERRUPT (1 << 0) 3253#define GT_GEN6_BLT_FLUSHDW_NOTIFY_INTERRUPT (1 << 26)
3077#define GT_BSD_USER_INTERRUPT (1 << 5) 3254#define GT_GEN6_BLT_CS_ERROR_INTERRUPT (1 << 25)
3078#define GT_GEN6_BSD_USER_INTERRUPT (1 << 12) 3255#define GT_GEN6_BLT_USER_INTERRUPT (1 << 22)
3079#define GT_BLT_USER_INTERRUPT (1 << 22) 3256#define GT_GEN6_BSD_CS_ERROR_INTERRUPT (1 << 15)
3257#define GT_GEN6_BSD_USER_INTERRUPT (1 << 12)
3258#define GT_BSD_USER_INTERRUPT (1 << 5) /* ilk only */
3259#define GT_GEN7_L3_PARITY_ERROR_INTERRUPT (1 << 5)
3260#define GT_PIPE_NOTIFY (1 << 4)
3261#define GT_RENDER_CS_ERROR_INTERRUPT (1 << 3)
3262#define GT_SYNC_STATUS (1 << 2)
3263#define GT_USER_INTERRUPT (1 << 0)
3080 3264
3081#define GTISR 0x44010 3265#define GTISR 0x44010
3082#define GTIMR 0x44014 3266#define GTIMR 0x44014
@@ -3226,15 +3410,15 @@
3226 3410
3227#define _PCH_DPLL_A 0xc6014 3411#define _PCH_DPLL_A 0xc6014
3228#define _PCH_DPLL_B 0xc6018 3412#define _PCH_DPLL_B 0xc6018
3229#define PCH_DPLL(pipe) (pipe == 0 ? _PCH_DPLL_A : _PCH_DPLL_B) 3413#define _PCH_DPLL(pll) (pll == 0 ? _PCH_DPLL_A : _PCH_DPLL_B)
3230 3414
3231#define _PCH_FPA0 0xc6040 3415#define _PCH_FPA0 0xc6040
3232#define FP_CB_TUNE (0x3<<22) 3416#define FP_CB_TUNE (0x3<<22)
3233#define _PCH_FPA1 0xc6044 3417#define _PCH_FPA1 0xc6044
3234#define _PCH_FPB0 0xc6048 3418#define _PCH_FPB0 0xc6048
3235#define _PCH_FPB1 0xc604c 3419#define _PCH_FPB1 0xc604c
3236#define PCH_FP0(pipe) (pipe == 0 ? _PCH_FPA0 : _PCH_FPB0) 3420#define _PCH_FP0(pll) (pll == 0 ? _PCH_FPA0 : _PCH_FPB0)
3237#define PCH_FP1(pipe) (pipe == 0 ? _PCH_FPA1 : _PCH_FPB1) 3421#define _PCH_FP1(pll) (pll == 0 ? _PCH_FPA1 : _PCH_FPB1)
3238 3422
3239#define PCH_DPLL_TEST 0xc606c 3423#define PCH_DPLL_TEST 0xc606c
3240 3424
@@ -3329,6 +3513,57 @@
3329#define TVIDEO_DIP_DATA(pipe) _PIPE(pipe, _VIDEO_DIP_DATA_A, _VIDEO_DIP_DATA_B) 3513#define TVIDEO_DIP_DATA(pipe) _PIPE(pipe, _VIDEO_DIP_DATA_A, _VIDEO_DIP_DATA_B)
3330#define TVIDEO_DIP_GCP(pipe) _PIPE(pipe, _VIDEO_DIP_GCP_A, _VIDEO_DIP_GCP_B) 3514#define TVIDEO_DIP_GCP(pipe) _PIPE(pipe, _VIDEO_DIP_GCP_A, _VIDEO_DIP_GCP_B)
3331 3515
3516#define VLV_VIDEO_DIP_CTL_A 0x60220
3517#define VLV_VIDEO_DIP_DATA_A 0x60208
3518#define VLV_VIDEO_DIP_GDCP_PAYLOAD_A 0x60210
3519
3520#define VLV_VIDEO_DIP_CTL_B 0x61170
3521#define VLV_VIDEO_DIP_DATA_B 0x61174
3522#define VLV_VIDEO_DIP_GDCP_PAYLOAD_B 0x61178
3523
3524#define VLV_TVIDEO_DIP_CTL(pipe) \
3525 _PIPE(pipe, VLV_VIDEO_DIP_CTL_A, VLV_VIDEO_DIP_CTL_B)
3526#define VLV_TVIDEO_DIP_DATA(pipe) \
3527 _PIPE(pipe, VLV_VIDEO_DIP_DATA_A, VLV_VIDEO_DIP_DATA_B)
3528#define VLV_TVIDEO_DIP_GCP(pipe) \
3529 _PIPE(pipe, VLV_VIDEO_DIP_GDCP_PAYLOAD_A, VLV_VIDEO_DIP_GDCP_PAYLOAD_B)
3530
3531/* Haswell DIP controls */
3532#define HSW_VIDEO_DIP_CTL_A 0x60200
3533#define HSW_VIDEO_DIP_AVI_DATA_A 0x60220
3534#define HSW_VIDEO_DIP_VS_DATA_A 0x60260
3535#define HSW_VIDEO_DIP_SPD_DATA_A 0x602A0
3536#define HSW_VIDEO_DIP_GMP_DATA_A 0x602E0
3537#define HSW_VIDEO_DIP_VSC_DATA_A 0x60320
3538#define HSW_VIDEO_DIP_AVI_ECC_A 0x60240
3539#define HSW_VIDEO_DIP_VS_ECC_A 0x60280
3540#define HSW_VIDEO_DIP_SPD_ECC_A 0x602C0
3541#define HSW_VIDEO_DIP_GMP_ECC_A 0x60300
3542#define HSW_VIDEO_DIP_VSC_ECC_A 0x60344
3543#define HSW_VIDEO_DIP_GCP_A 0x60210
3544
3545#define HSW_VIDEO_DIP_CTL_B 0x61200
3546#define HSW_VIDEO_DIP_AVI_DATA_B 0x61220
3547#define HSW_VIDEO_DIP_VS_DATA_B 0x61260
3548#define HSW_VIDEO_DIP_SPD_DATA_B 0x612A0
3549#define HSW_VIDEO_DIP_GMP_DATA_B 0x612E0
3550#define HSW_VIDEO_DIP_VSC_DATA_B 0x61320
3551#define HSW_VIDEO_DIP_BVI_ECC_B 0x61240
3552#define HSW_VIDEO_DIP_VS_ECC_B 0x61280
3553#define HSW_VIDEO_DIP_SPD_ECC_B 0x612C0
3554#define HSW_VIDEO_DIP_GMP_ECC_B 0x61300
3555#define HSW_VIDEO_DIP_VSC_ECC_B 0x61344
3556#define HSW_VIDEO_DIP_GCP_B 0x61210
3557
3558#define HSW_TVIDEO_DIP_CTL(pipe) \
3559 _PIPE(pipe, HSW_VIDEO_DIP_CTL_A, HSW_VIDEO_DIP_CTL_B)
3560#define HSW_TVIDEO_DIP_AVI_DATA(pipe) \
3561 _PIPE(pipe, HSW_VIDEO_DIP_AVI_DATA_A, HSW_VIDEO_DIP_AVI_DATA_B)
3562#define HSW_TVIDEO_DIP_SPD_DATA(pipe) \
3563 _PIPE(pipe, HSW_VIDEO_DIP_SPD_DATA_A, HSW_VIDEO_DIP_SPD_DATA_B)
3564#define HSW_TVIDEO_DIP_GCP(pipe) \
3565 _PIPE(pipe, HSW_VIDEO_DIP_GCP_A, HSW_VIDEO_DIP_GCP_B)
3566
3332#define _TRANS_HTOTAL_B 0xe1000 3567#define _TRANS_HTOTAL_B 0xe1000
3333#define _TRANS_HBLANK_B 0xe1004 3568#define _TRANS_HBLANK_B 0xe1004
3334#define _TRANS_HSYNC_B 0xe1008 3569#define _TRANS_HSYNC_B 0xe1008
@@ -3489,6 +3724,9 @@
3489#define FDI_LINK_TRAIN_PATTERN_IDLE_CPT (2<<8) 3724#define FDI_LINK_TRAIN_PATTERN_IDLE_CPT (2<<8)
3490#define FDI_LINK_TRAIN_NORMAL_CPT (3<<8) 3725#define FDI_LINK_TRAIN_NORMAL_CPT (3<<8)
3491#define FDI_LINK_TRAIN_PATTERN_MASK_CPT (3<<8) 3726#define FDI_LINK_TRAIN_PATTERN_MASK_CPT (3<<8)
3727/* LPT */
3728#define FDI_PORT_WIDTH_2X_LPT (1<<19)
3729#define FDI_PORT_WIDTH_1X_LPT (0<<19)
3492 3730
3493#define _FDI_RXA_MISC 0xf0010 3731#define _FDI_RXA_MISC 0xf0010
3494#define _FDI_RXB_MISC 0xf1010 3732#define _FDI_RXB_MISC 0xf1010
@@ -3549,6 +3787,7 @@
3549#define ADPA_CRT_HOTPLUG_FORCE_TRIGGER (1<<16) 3787#define ADPA_CRT_HOTPLUG_FORCE_TRIGGER (1<<16)
3550 3788
3551/* or SDVOB */ 3789/* or SDVOB */
3790#define VLV_HDMIB 0x61140
3552#define HDMIB 0xe1140 3791#define HDMIB 0xe1140
3553#define PORT_ENABLE (1 << 31) 3792#define PORT_ENABLE (1 << 31)
3554#define TRANSCODER(pipe) ((pipe) << 30) 3793#define TRANSCODER(pipe) ((pipe) << 30)
@@ -3714,6 +3953,8 @@
3714#define EDP_LINK_TRAIN_VOL_EMP_MASK_IVB (0x3f<<22) 3953#define EDP_LINK_TRAIN_VOL_EMP_MASK_IVB (0x3f<<22)
3715 3954
3716#define FORCEWAKE 0xA18C 3955#define FORCEWAKE 0xA18C
3956#define FORCEWAKE_VLV 0x1300b0
3957#define FORCEWAKE_ACK_VLV 0x1300b4
3717#define FORCEWAKE_ACK 0x130090 3958#define FORCEWAKE_ACK 0x130090
3718#define FORCEWAKE_MT 0xa188 /* multi-threaded */ 3959#define FORCEWAKE_MT 0xa188 /* multi-threaded */
3719#define FORCEWAKE_MT_ACK 0x130040 3960#define FORCEWAKE_MT_ACK 0x130040
@@ -3731,6 +3972,7 @@
3731 3972
3732#define GEN6_UCGCTL1 0x9400 3973#define GEN6_UCGCTL1 0x9400
3733# define GEN6_BLBUNIT_CLOCK_GATE_DISABLE (1 << 5) 3974# define GEN6_BLBUNIT_CLOCK_GATE_DISABLE (1 << 5)
3975# define GEN6_CSUNIT_CLOCK_GATE_DISABLE (1 << 7)
3734 3976
3735#define GEN6_UCGCTL2 0x9404 3977#define GEN6_UCGCTL2 0x9404
3736# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13) 3978# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13)
@@ -3811,6 +4053,11 @@
3811 GEN6_PM_RP_DOWN_THRESHOLD | \ 4053 GEN6_PM_RP_DOWN_THRESHOLD | \
3812 GEN6_PM_RP_DOWN_TIMEOUT) 4054 GEN6_PM_RP_DOWN_TIMEOUT)
3813 4055
4056#define GEN6_GT_GFX_RC6_LOCKED 0x138104
4057#define GEN6_GT_GFX_RC6 0x138108
4058#define GEN6_GT_GFX_RC6p 0x13810C
4059#define GEN6_GT_GFX_RC6pp 0x138110
4060
3814#define GEN6_PCODE_MAILBOX 0x138124 4061#define GEN6_PCODE_MAILBOX 0x138124
3815#define GEN6_PCODE_READY (1<<31) 4062#define GEN6_PCODE_READY (1<<31)
3816#define GEN6_READ_OC_PARAMS 0xc 4063#define GEN6_READ_OC_PARAMS 0xc
@@ -3870,4 +4117,197 @@
3870#define AUD_CONFIG_PIXEL_CLOCK_HDMI (0xf << 16) 4117#define AUD_CONFIG_PIXEL_CLOCK_HDMI (0xf << 16)
3871#define AUD_CONFIG_DISABLE_NCTS (1 << 3) 4118#define AUD_CONFIG_DISABLE_NCTS (1 << 3)
3872 4119
4120/* HSW Power Wells */
4121#define HSW_PWR_WELL_CTL1 0x45400 /* BIOS */
4122#define HSW_PWR_WELL_CTL2 0x45404 /* Driver */
4123#define HSW_PWR_WELL_CTL3 0x45408 /* KVMR */
4124#define HSW_PWR_WELL_CTL4 0x4540C /* Debug */
4125#define HSW_PWR_WELL_ENABLE (1<<31)
4126#define HSW_PWR_WELL_STATE (1<<30)
4127#define HSW_PWR_WELL_CTL5 0x45410
4128#define HSW_PWR_WELL_ENABLE_SINGLE_STEP (1<<31)
4129#define HSW_PWR_WELL_PWR_GATE_OVERRIDE (1<<20)
4130#define HSW_PWR_WELL_FORCE_ON (1<<19)
4131#define HSW_PWR_WELL_CTL6 0x45414
4132
4133/* Per-pipe DDI Function Control */
4134#define PIPE_DDI_FUNC_CTL_A 0x60400
4135#define PIPE_DDI_FUNC_CTL_B 0x61400
4136#define PIPE_DDI_FUNC_CTL_C 0x62400
4137#define PIPE_DDI_FUNC_CTL_EDP 0x6F400
4138#define DDI_FUNC_CTL(pipe) _PIPE(pipe, \
4139 PIPE_DDI_FUNC_CTL_A, \
4140 PIPE_DDI_FUNC_CTL_B)
4141#define PIPE_DDI_FUNC_ENABLE (1<<31)
4142/* Those bits are ignored by pipe EDP since it can only connect to DDI A */
4143#define PIPE_DDI_PORT_MASK (0xf<<28)
4144#define PIPE_DDI_SELECT_PORT(x) ((x)<<28)
4145#define PIPE_DDI_MODE_SELECT_HDMI (0<<24)
4146#define PIPE_DDI_MODE_SELECT_DVI (1<<24)
4147#define PIPE_DDI_MODE_SELECT_DP_SST (2<<24)
4148#define PIPE_DDI_MODE_SELECT_DP_MST (3<<24)
4149#define PIPE_DDI_MODE_SELECT_FDI (4<<24)
4150#define PIPE_DDI_BPC_8 (0<<20)
4151#define PIPE_DDI_BPC_10 (1<<20)
4152#define PIPE_DDI_BPC_6 (2<<20)
4153#define PIPE_DDI_BPC_12 (3<<20)
4154#define PIPE_DDI_BFI_ENABLE (1<<4)
4155#define PIPE_DDI_PORT_WIDTH_X1 (0<<1)
4156#define PIPE_DDI_PORT_WIDTH_X2 (1<<1)
4157#define PIPE_DDI_PORT_WIDTH_X4 (3<<1)
4158
4159/* DisplayPort Transport Control */
4160#define DP_TP_CTL_A 0x64040
4161#define DP_TP_CTL_B 0x64140
4162#define DP_TP_CTL(port) _PORT(port, \
4163 DP_TP_CTL_A, \
4164 DP_TP_CTL_B)
4165#define DP_TP_CTL_ENABLE (1<<31)
4166#define DP_TP_CTL_MODE_SST (0<<27)
4167#define DP_TP_CTL_MODE_MST (1<<27)
4168#define DP_TP_CTL_ENHANCED_FRAME_ENABLE (1<<18)
4169#define DP_TP_CTL_FDI_AUTOTRAIN (1<<15)
4170#define DP_TP_CTL_LINK_TRAIN_MASK (7<<8)
4171#define DP_TP_CTL_LINK_TRAIN_PAT1 (0<<8)
4172#define DP_TP_CTL_LINK_TRAIN_PAT2 (1<<8)
4173#define DP_TP_CTL_LINK_TRAIN_NORMAL (3<<8)
4174
4175/* DisplayPort Transport Status */
4176#define DP_TP_STATUS_A 0x64044
4177#define DP_TP_STATUS_B 0x64144
4178#define DP_TP_STATUS(port) _PORT(port, \
4179 DP_TP_STATUS_A, \
4180 DP_TP_STATUS_B)
4181#define DP_TP_STATUS_AUTOTRAIN_DONE (1<<12)
4182
4183/* DDI Buffer Control */
4184#define DDI_BUF_CTL_A 0x64000
4185#define DDI_BUF_CTL_B 0x64100
4186#define DDI_BUF_CTL(port) _PORT(port, \
4187 DDI_BUF_CTL_A, \
4188 DDI_BUF_CTL_B)
4189#define DDI_BUF_CTL_ENABLE (1<<31)
4190#define DDI_BUF_EMP_400MV_0DB_HSW (0<<24) /* Sel0 */
4191#define DDI_BUF_EMP_400MV_3_5DB_HSW (1<<24) /* Sel1 */
4192#define DDI_BUF_EMP_400MV_6DB_HSW (2<<24) /* Sel2 */
4193#define DDI_BUF_EMP_400MV_9_5DB_HSW (3<<24) /* Sel3 */
4194#define DDI_BUF_EMP_600MV_0DB_HSW (4<<24) /* Sel4 */
4195#define DDI_BUF_EMP_600MV_3_5DB_HSW (5<<24) /* Sel5 */
4196#define DDI_BUF_EMP_600MV_6DB_HSW (6<<24) /* Sel6 */
4197#define DDI_BUF_EMP_800MV_0DB_HSW (7<<24) /* Sel7 */
4198#define DDI_BUF_EMP_800MV_3_5DB_HSW (8<<24) /* Sel8 */
4199#define DDI_BUF_EMP_MASK (0xf<<24)
4200#define DDI_BUF_IS_IDLE (1<<7)
4201#define DDI_PORT_WIDTH_X1 (0<<1)
4202#define DDI_PORT_WIDTH_X2 (1<<1)
4203#define DDI_PORT_WIDTH_X4 (3<<1)
4204#define DDI_INIT_DISPLAY_DETECTED (1<<0)
4205
4206/* DDI Buffer Translations */
4207#define DDI_BUF_TRANS_A 0x64E00
4208#define DDI_BUF_TRANS_B 0x64E60
4209#define DDI_BUF_TRANS(port) _PORT(port, \
4210 DDI_BUF_TRANS_A, \
4211 DDI_BUF_TRANS_B)
4212
4213/* Sideband Interface (SBI) is programmed indirectly, via
4214 * SBI_ADDR, which contains the register offset; and SBI_DATA,
4215 * which contains the payload */
4216#define SBI_ADDR 0xC6000
4217#define SBI_DATA 0xC6004
4218#define SBI_CTL_STAT 0xC6008
4219#define SBI_CTL_OP_CRRD (0x6<<8)
4220#define SBI_CTL_OP_CRWR (0x7<<8)
4221#define SBI_RESPONSE_FAIL (0x1<<1)
4222#define SBI_RESPONSE_SUCCESS (0x0<<1)
4223#define SBI_BUSY (0x1<<0)
4224#define SBI_READY (0x0<<0)
4225
4226/* SBI offsets */
4227#define SBI_SSCDIVINTPHASE6 0x0600
4228#define SBI_SSCDIVINTPHASE_DIVSEL_MASK ((0x7f)<<1)
4229#define SBI_SSCDIVINTPHASE_DIVSEL(x) ((x)<<1)
4230#define SBI_SSCDIVINTPHASE_INCVAL_MASK ((0x7f)<<8)
4231#define SBI_SSCDIVINTPHASE_INCVAL(x) ((x)<<8)
4232#define SBI_SSCDIVINTPHASE_DIR(x) ((x)<<15)
4233#define SBI_SSCDIVINTPHASE_PROPAGATE (1<<0)
4234#define SBI_SSCCTL 0x020c
4235#define SBI_SSCCTL6 0x060C
4236#define SBI_SSCCTL_DISABLE (1<<0)
4237#define SBI_SSCAUXDIV6 0x0610
4238#define SBI_SSCAUXDIV_FINALDIV2SEL(x) ((x)<<4)
4239#define SBI_DBUFF0 0x2a00
4240
4241/* LPT PIXCLK_GATE */
4242#define PIXCLK_GATE 0xC6020
4243#define PIXCLK_GATE_UNGATE 1<<0
4244#define PIXCLK_GATE_GATE 0<<0
4245
4246/* SPLL */
4247#define SPLL_CTL 0x46020
4248#define SPLL_PLL_ENABLE (1<<31)
4249#define SPLL_PLL_SCC (1<<28)
4250#define SPLL_PLL_NON_SCC (2<<28)
4251#define SPLL_PLL_FREQ_810MHz (0<<26)
4252#define SPLL_PLL_FREQ_1350MHz (1<<26)
4253
4254/* WRPLL */
4255#define WRPLL_CTL1 0x46040
4256#define WRPLL_CTL2 0x46060
4257#define WRPLL_PLL_ENABLE (1<<31)
4258#define WRPLL_PLL_SELECT_SSC (0x01<<28)
4259#define WRPLL_PLL_SELECT_NON_SCC (0x02<<28)
4260#define WRPLL_PLL_SELECT_LCPLL_2700 (0x03<<28)
4261/* WRPLL divider programming */
4262#define WRPLL_DIVIDER_REFERENCE(x) ((x)<<0)
4263#define WRPLL_DIVIDER_POST(x) ((x)<<8)
4264#define WRPLL_DIVIDER_FEEDBACK(x) ((x)<<16)
4265
4266/* Port clock selection */
4267#define PORT_CLK_SEL_A 0x46100
4268#define PORT_CLK_SEL_B 0x46104
4269#define PORT_CLK_SEL(port) _PORT(port, \
4270 PORT_CLK_SEL_A, \
4271 PORT_CLK_SEL_B)
4272#define PORT_CLK_SEL_LCPLL_2700 (0<<29)
4273#define PORT_CLK_SEL_LCPLL_1350 (1<<29)
4274#define PORT_CLK_SEL_LCPLL_810 (2<<29)
4275#define PORT_CLK_SEL_SPLL (3<<29)
4276#define PORT_CLK_SEL_WRPLL1 (4<<29)
4277#define PORT_CLK_SEL_WRPLL2 (5<<29)
4278
4279/* Pipe clock selection */
4280#define PIPE_CLK_SEL_A 0x46140
4281#define PIPE_CLK_SEL_B 0x46144
4282#define PIPE_CLK_SEL(pipe) _PIPE(pipe, \
4283 PIPE_CLK_SEL_A, \
4284 PIPE_CLK_SEL_B)
4285/* For each pipe, we need to select the corresponding port clock */
4286#define PIPE_CLK_SEL_DISABLED (0x0<<29)
4287#define PIPE_CLK_SEL_PORT(x) ((x+1)<<29)
4288
4289/* LCPLL Control */
4290#define LCPLL_CTL 0x130040
4291#define LCPLL_PLL_DISABLE (1<<31)
4292#define LCPLL_PLL_LOCK (1<<30)
4293#define LCPLL_CD_CLOCK_DISABLE (1<<25)
4294#define LCPLL_CD2X_CLOCK_DISABLE (1<<23)
4295
4296/* Pipe WM_LINETIME - watermark line time */
4297#define PIPE_WM_LINETIME_A 0x45270
4298#define PIPE_WM_LINETIME_B 0x45274
4299#define PIPE_WM_LINETIME(pipe) _PIPE(pipe, \
4300 PIPE_WM_LINETIME_A, \
4301 PIPE_WM_LINETIME_A)
4302#define PIPE_WM_LINETIME_MASK (0x1ff)
4303#define PIPE_WM_LINETIME_TIME(x) ((x))
4304#define PIPE_WM_LINETIME_IPS_LINETIME_MASK (0x1ff<<16)
4305#define PIPE_WM_LINETIME_IPS_LINETIME(x) ((x)<<16)
4306
4307/* SFUSE_STRAP */
4308#define SFUSE_STRAP 0xc2014
4309#define SFUSE_STRAP_DDIB_DETECTED (1<<2)
4310#define SFUSE_STRAP_DDIC_DETECTED (1<<1)
4311#define SFUSE_STRAP_DDID_DETECTED (1<<0)
4312
3873#endif /* _I915_REG_H_ */ 4313#endif /* _I915_REG_H_ */