File Index
Files and directories
Sign in
FILE

i9xx_wm_regs.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/i915/display/i9xx_wm_regs.h C
  1/* SPDX-License-Identifier: MIT */
  2/* Copyright © 2024 Intel Corporation */
  3
  4#ifndef __I9XX_WM_REGS_H__
  5#define __I9XX_WM_REGS_H__
  6
  7#include "intel_display_reg_defs.h"
  8
  9#define DSPARB(dev_priv)			_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70030)
 10#define   DSPARB_CSTART_MASK	(0x7f << 7)
 11#define   DSPARB_CSTART_SHIFT	7
 12#define   DSPARB_BSTART_MASK	(0x7f)
 13#define   DSPARB_BSTART_SHIFT	0
 14#define   DSPARB_BEND_SHIFT	9 /* on 855 */
 15#define   DSPARB_AEND_SHIFT	0
 16#define   DSPARB_SPRITEA_SHIFT_VLV	0
 17#define   DSPARB_SPRITEA_MASK_VLV	(0xff << 0)
 18#define   DSPARB_SPRITEB_SHIFT_VLV	8
 19#define   DSPARB_SPRITEB_MASK_VLV	(0xff << 8)
 20#define   DSPARB_SPRITEC_SHIFT_VLV	16
 21#define   DSPARB_SPRITEC_MASK_VLV	(0xff << 16)
 22#define   DSPARB_SPRITED_SHIFT_VLV	24
 23#define   DSPARB_SPRITED_MASK_VLV	(0xff << 24)
 24#define DSPARB2				_MMIO(VLV_DISPLAY_BASE + 0x70060) /* vlv/chv */
 25#define   DSPARB_SPRITEA_HI_SHIFT_VLV	0
 26#define   DSPARB_SPRITEA_HI_MASK_VLV	(0x1 << 0)
 27#define   DSPARB_SPRITEB_HI_SHIFT_VLV	4
 28#define   DSPARB_SPRITEB_HI_MASK_VLV	(0x1 << 4)
 29#define   DSPARB_SPRITEC_HI_SHIFT_VLV	8
 30#define   DSPARB_SPRITEC_HI_MASK_VLV	(0x1 << 8)
 31#define   DSPARB_SPRITED_HI_SHIFT_VLV	12
 32#define   DSPARB_SPRITED_HI_MASK_VLV	(0x1 << 12)
 33#define   DSPARB_SPRITEE_HI_SHIFT_VLV	16
 34#define   DSPARB_SPRITEE_HI_MASK_VLV	(0x1 << 16)
 35#define   DSPARB_SPRITEF_HI_SHIFT_VLV	20
 36#define   DSPARB_SPRITEF_HI_MASK_VLV	(0x1 << 20)
 37#define DSPARB3				_MMIO(VLV_DISPLAY_BASE + 0x7006c) /* chv */
 38#define   DSPARB_SPRITEE_SHIFT_VLV	0
 39#define   DSPARB_SPRITEE_MASK_VLV	(0xff << 0)
 40#define   DSPARB_SPRITEF_SHIFT_VLV	8
 41#define   DSPARB_SPRITEF_MASK_VLV	(0xff << 8)
 42
 43/* pnv/gen4/g4x/vlv/chv */
 44#define DSPFW1(dev_priv)		_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70034)
 45#define   DSPFW_SR_SHIFT		23
 46#define   DSPFW_SR_MASK			(0x1ff << 23)
 47#define   DSPFW_CURSORB_SHIFT		16
 48#define   DSPFW_CURSORB_MASK		(0x3f << 16)
 49#define   DSPFW_PLANEB_SHIFT		8
 50#define   DSPFW_PLANEB_MASK		(0x7f << 8)
 51#define   DSPFW_PLANEB_MASK_VLV		(0xff << 8) /* vlv/chv */
 52#define   DSPFW_PLANEA_SHIFT		0
 53#define   DSPFW_PLANEA_MASK		(0x7f << 0)
 54#define   DSPFW_PLANEA_MASK_VLV		(0xff << 0) /* vlv/chv */
 55#define DSPFW2(dev_priv)		_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70038)
 56#define   DSPFW_FBC_SR_EN		(1 << 31)	  /* g4x */
 57#define   DSPFW_FBC_SR_SHIFT		28
 58#define   DSPFW_FBC_SR_MASK		(0x7 << 28) /* g4x */
 59#define   DSPFW_FBC_HPLL_SR_SHIFT	24
 60#define   DSPFW_FBC_HPLL_SR_MASK	(0xf << 24) /* g4x */
 61#define   DSPFW_SPRITEB_SHIFT		(16)
 62#define   DSPFW_SPRITEB_MASK		(0x7f << 16) /* g4x */
 63#define   DSPFW_SPRITEB_MASK_VLV	(0xff << 16) /* vlv/chv */
 64#define   DSPFW_CURSORA_SHIFT		8
 65#define   DSPFW_CURSORA_MASK		(0x3f << 8)
 66#define   DSPFW_PLANEC_OLD_SHIFT	0
 67#define   DSPFW_PLANEC_OLD_MASK		(0x7f << 0) /* pre-gen4 sprite C */
 68#define   DSPFW_SPRITEA_SHIFT		0
 69#define   DSPFW_SPRITEA_MASK		(0x7f << 0) /* g4x */
 70#define   DSPFW_SPRITEA_MASK_VLV	(0xff << 0) /* vlv/chv */
 71#define DSPFW3(dev_priv)		_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x7003c)
 72#define   DSPFW_HPLL_SR_EN		(1 << 31)
 73#define   PINEVIEW_SELF_REFRESH_EN	(1 << 30)
 74#define   DSPFW_CURSOR_SR_SHIFT		24
 75#define   DSPFW_CURSOR_SR_MASK		(0x3f << 24)
 76#define   DSPFW_HPLL_CURSOR_SHIFT	16
 77#define   DSPFW_HPLL_CURSOR_MASK	(0x3f << 16)
 78#define   DSPFW_HPLL_SR_SHIFT		0
 79#define   DSPFW_HPLL_SR_MASK		(0x1ff << 0)
 80
 81/* vlv/chv */
 82#define DSPFW4		_MMIO(VLV_DISPLAY_BASE + 0x70070)
 83#define   DSPFW_SPRITEB_WM1_SHIFT	16
 84#define   DSPFW_SPRITEB_WM1_MASK	(0xff << 16)
 85#define   DSPFW_CURSORA_WM1_SHIFT	8
 86#define   DSPFW_CURSORA_WM1_MASK	(0x3f << 8)
 87#define   DSPFW_SPRITEA_WM1_SHIFT	0
 88#define   DSPFW_SPRITEA_WM1_MASK	(0xff << 0)
 89#define DSPFW5		_MMIO(VLV_DISPLAY_BASE + 0x70074)
 90#define   DSPFW_PLANEB_WM1_SHIFT	24
 91#define   DSPFW_PLANEB_WM1_MASK		(0xff << 24)
 92#define   DSPFW_PLANEA_WM1_SHIFT	16
 93#define   DSPFW_PLANEA_WM1_MASK		(0xff << 16)
 94#define   DSPFW_CURSORB_WM1_SHIFT	8
 95#define   DSPFW_CURSORB_WM1_MASK	(0x3f << 8)
 96#define   DSPFW_CURSOR_SR_WM1_SHIFT	0
 97#define   DSPFW_CURSOR_SR_WM1_MASK	(0x3f << 0)
 98#define DSPFW6		_MMIO(VLV_DISPLAY_BASE + 0x70078)
 99#define   DSPFW_SR_WM1_SHIFT		0
100#define   DSPFW_SR_WM1_MASK		(0x1ff << 0)
101#define DSPFW7		_MMIO(VLV_DISPLAY_BASE + 0x7007c)
102#define DSPFW7_CHV	_MMIO(VLV_DISPLAY_BASE + 0x700b4) /* wtf #1? */
103#define   DSPFW_SPRITED_WM1_SHIFT	24
104#define   DSPFW_SPRITED_WM1_MASK	(0xff << 24)
105#define   DSPFW_SPRITED_SHIFT		16
106#define   DSPFW_SPRITED_MASK_VLV	(0xff << 16)
107#define   DSPFW_SPRITEC_WM1_SHIFT	8
108#define   DSPFW_SPRITEC_WM1_MASK	(0xff << 8)
109#define   DSPFW_SPRITEC_SHIFT		0
110#define   DSPFW_SPRITEC_MASK_VLV	(0xff << 0)
111#define DSPFW8_CHV	_MMIO(VLV_DISPLAY_BASE + 0x700b8)
112#define   DSPFW_SPRITEF_WM1_SHIFT	24
113#define   DSPFW_SPRITEF_WM1_MASK	(0xff << 24)
114#define   DSPFW_SPRITEF_SHIFT		16
115#define   DSPFW_SPRITEF_MASK_VLV	(0xff << 16)
116#define   DSPFW_SPRITEE_WM1_SHIFT	8
117#define   DSPFW_SPRITEE_WM1_MASK	(0xff << 8)
118#define   DSPFW_SPRITEE_SHIFT		0
119#define   DSPFW_SPRITEE_MASK_VLV	(0xff << 0)
120#define DSPFW9_CHV	_MMIO(VLV_DISPLAY_BASE + 0x7007c) /* wtf #2? */
121#define   DSPFW_PLANEC_WM1_SHIFT	24
122#define   DSPFW_PLANEC_WM1_MASK		(0xff << 24)
123#define   DSPFW_PLANEC_SHIFT		16
124#define   DSPFW_PLANEC_MASK_VLV		(0xff << 16)
125#define   DSPFW_CURSORC_WM1_SHIFT	8
126#define   DSPFW_CURSORC_WM1_MASK	(0x3f << 16)
127#define   DSPFW_CURSORC_SHIFT		0
128#define   DSPFW_CURSORC_MASK		(0x3f << 0)
129
130/* vlv/chv high order bits */
131#define DSPHOWM		_MMIO(VLV_DISPLAY_BASE + 0x70064)
132#define   DSPFW_SR_HI_SHIFT		24
133#define   DSPFW_SR_HI_MASK		(3 << 24) /* 2 bits for chv, 1 for vlv */
134#define   DSPFW_SPRITEF_HI_SHIFT	23
135#define   DSPFW_SPRITEF_HI_MASK		(1 << 23)
136#define   DSPFW_SPRITEE_HI_SHIFT	22
137#define   DSPFW_SPRITEE_HI_MASK		(1 << 22)
138#define   DSPFW_PLANEC_HI_SHIFT		21
139#define   DSPFW_PLANEC_HI_MASK		(1 << 21)
140#define   DSPFW_SPRITED_HI_SHIFT	20
141#define   DSPFW_SPRITED_HI_MASK		(1 << 20)
142#define   DSPFW_SPRITEC_HI_SHIFT	16
143#define   DSPFW_SPRITEC_HI_MASK		(1 << 16)
144#define   DSPFW_PLANEB_HI_SHIFT		12
145#define   DSPFW_PLANEB_HI_MASK		(1 << 12)
146#define   DSPFW_SPRITEB_HI_SHIFT	8
147#define   DSPFW_SPRITEB_HI_MASK		(1 << 8)
148#define   DSPFW_SPRITEA_HI_SHIFT	4
149#define   DSPFW_SPRITEA_HI_MASK		(1 << 4)
150#define   DSPFW_PLANEA_HI_SHIFT		0
151#define   DSPFW_PLANEA_HI_MASK		(1 << 0)
152#define DSPHOWM1	_MMIO(VLV_DISPLAY_BASE + 0x70068)
153#define   DSPFW_SR_WM1_HI_SHIFT		24
154#define   DSPFW_SR_WM1_HI_MASK		(3 << 24) /* 2 bits for chv, 1 for vlv */
155#define   DSPFW_SPRITEF_WM1_HI_SHIFT	23
156#define   DSPFW_SPRITEF_WM1_HI_MASK	(1 << 23)
157#define   DSPFW_SPRITEE_WM1_HI_SHIFT	22
158#define   DSPFW_SPRITEE_WM1_HI_MASK	(1 << 22)
159#define   DSPFW_PLANEC_WM1_HI_SHIFT	21
160#define   DSPFW_PLANEC_WM1_HI_MASK	(1 << 21)
161#define   DSPFW_SPRITED_WM1_HI_SHIFT	20
162#define   DSPFW_SPRITED_WM1_HI_MASK	(1 << 20)
163#define   DSPFW_SPRITEC_WM1_HI_SHIFT	16
164#define   DSPFW_SPRITEC_WM1_HI_MASK	(1 << 16)
165#define   DSPFW_PLANEB_WM1_HI_SHIFT	12
166#define   DSPFW_PLANEB_WM1_HI_MASK	(1 << 12)
167#define   DSPFW_SPRITEB_WM1_HI_SHIFT	8
168#define   DSPFW_SPRITEB_WM1_HI_MASK	(1 << 8)
169#define   DSPFW_SPRITEA_WM1_HI_SHIFT	4
170#define   DSPFW_SPRITEA_WM1_HI_MASK	(1 << 4)
171#define   DSPFW_PLANEA_WM1_HI_SHIFT	0
172#define   DSPFW_PLANEA_WM1_HI_MASK	(1 << 0)
173
174/* drain latency register values*/
175#define VLV_DDL(pipe)			_MMIO(VLV_DISPLAY_BASE + 0x70050 + 4 * (pipe))
176#define DDL_CURSOR_SHIFT		24
177#define DDL_SPRITE_SHIFT(sprite)	(8 + 8 * (sprite))
178#define DDL_PLANE_SHIFT			0
179#define DDL_PRECISION_HIGH		(1 << 7)
180#define DDL_PRECISION_LOW		(0 << 7)
181#define DRAIN_LATENCY_MASK		0x7f
182
183/* FIFO watermark sizes etc */
184#define G4X_FIFO_LINE_SIZE	64
185#define I915_FIFO_LINE_SIZE	64
186#define I830_FIFO_LINE_SIZE	32
187
188#define VALLEYVIEW_FIFO_SIZE	255
189#define G4X_FIFO_SIZE		127
190#define I965_FIFO_SIZE		512
191#define I945_FIFO_SIZE		127
192#define I915_FIFO_SIZE		95
193#define I855GM_FIFO_SIZE	127 /* In cachelines */
194#define I830_FIFO_SIZE		95
195
196#define VALLEYVIEW_MAX_WM	0xff
197#define G4X_MAX_WM		0x3f
198#define I915_MAX_WM		0x3f
199
200#define PINEVIEW_DISPLAY_FIFO	512 /* in 64byte unit */
201#define PINEVIEW_FIFO_LINE_SIZE	64
202#define PINEVIEW_MAX_WM		0x1ff
203#define PINEVIEW_DFT_WM		0x3f
204#define PINEVIEW_DFT_HPLLOFF_WM	0
205#define PINEVIEW_GUARD_WM		10
206#define PINEVIEW_CURSOR_FIFO		64
207#define PINEVIEW_CURSOR_MAX_WM	0x3f
208#define PINEVIEW_CURSOR_DFT_WM	0
209#define PINEVIEW_CURSOR_GUARD_WM	5
210
211#define VALLEYVIEW_CURSOR_MAX_WM 64
212#define I965_CURSOR_FIFO	64
213#define I965_CURSOR_MAX_WM	32
214#define I965_CURSOR_DFT_WM	8
215
216/* define the Watermark register on Ironlake */
217#define _WM0_PIPEA_ILK		0x45100
218#define _WM0_PIPEB_ILK		0x45104
219#define _WM0_PIPEC_IVB		0x45200
220#define WM0_PIPE_ILK(pipe)	_MMIO_BASE_PIPE3(0, (pipe), _WM0_PIPEA_ILK, \
221						 _WM0_PIPEB_ILK, _WM0_PIPEC_IVB)
222#define  WM0_PIPE_PRIMARY_MASK	REG_GENMASK(31, 16)
223#define  WM0_PIPE_SPRITE_MASK	REG_GENMASK(15, 8)
224#define  WM0_PIPE_CURSOR_MASK	REG_GENMASK(7, 0)
225#define  WM0_PIPE_PRIMARY(x)	REG_FIELD_PREP(WM0_PIPE_PRIMARY_MASK, (x))
226#define  WM0_PIPE_SPRITE(x)	REG_FIELD_PREP(WM0_PIPE_SPRITE_MASK, (x))
227#define  WM0_PIPE_CURSOR(x)	REG_FIELD_PREP(WM0_PIPE_CURSOR_MASK, (x))
228#define WM1_LP_ILK		_MMIO(0x45108)
229#define WM2_LP_ILK		_MMIO(0x4510c)
230#define WM3_LP_ILK		_MMIO(0x45110)
231#define  WM_LP_ENABLE		REG_BIT(31)
232#define  WM_LP_LATENCY_MASK	REG_GENMASK(30, 24)
233#define  WM_LP_FBC_MASK_BDW	REG_GENMASK(23, 19)
234#define  WM_LP_FBC_MASK_ILK	REG_GENMASK(23, 20)
235#define  WM_LP_PRIMARY_MASK	REG_GENMASK(18, 8)
236#define  WM_LP_CURSOR_MASK	REG_GENMASK(7, 0)
237#define  WM_LP_LATENCY(x)	REG_FIELD_PREP(WM_LP_LATENCY_MASK, (x))
238#define  WM_LP_FBC_BDW(x)	REG_FIELD_PREP(WM_LP_FBC_MASK_BDW, (x))
239#define  WM_LP_FBC_ILK(x)	REG_FIELD_PREP(WM_LP_FBC_MASK_ILK, (x))
240#define  WM_LP_PRIMARY(x)	REG_FIELD_PREP(WM_LP_PRIMARY_MASK, (x))
241#define  WM_LP_CURSOR(x)	REG_FIELD_PREP(WM_LP_CURSOR_MASK, (x))
242#define WM1S_LP_ILK		_MMIO(0x45120)
243#define WM2S_LP_IVB		_MMIO(0x45124)
244#define WM3S_LP_IVB		_MMIO(0x45128)
245#define  WM_LP_SPRITE_ENABLE	REG_BIT(31) /* ilk/snb WM1S only */
246#define  WM_LP_SPRITE_MASK	REG_GENMASK(10, 0)
247#define  WM_LP_SPRITE(x)	REG_FIELD_PREP(WM_LP_SPRITE_MASK, (x))
248
249#define WM_MISC				_MMIO(0x45260)
250#define  WM_MISC_DATA_PARTITION_5_6	(1 << 0)
251
252#define WM_DBG				_MMIO(0x45280)
253#define  WM_DBG_DISALLOW_MULTIPLE_LP	(1 << 0)
254#define  WM_DBG_DISALLOW_MAXFIFO	(1 << 1)
255#define  WM_DBG_DISALLOW_SPRITE		(1 << 2)
256
257#endif /* __I9XX_WM_REGS_H__ */
~/ Read-only file preview.