xref: /openbmc/linux/drivers/gpu/drm/i915/display/intel_display_limits.h (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1*acc855d3SJani Nikula /* SPDX-License-Identifier: MIT */
2*acc855d3SJani Nikula /*
3*acc855d3SJani Nikula  * Copyright © 2022 Intel Corporation
4*acc855d3SJani Nikula  */
5*acc855d3SJani Nikula 
6*acc855d3SJani Nikula #ifndef __INTEL_DISPLAY_LIMITS_H__
7*acc855d3SJani Nikula #define __INTEL_DISPLAY_LIMITS_H__
8*acc855d3SJani Nikula 
9*acc855d3SJani Nikula /*
10*acc855d3SJani Nikula  * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the
11*acc855d3SJani Nikula  * rest have consecutive values and match the enum values of transcoders
12*acc855d3SJani Nikula  * with a 1:1 transcoder -> pipe mapping.
13*acc855d3SJani Nikula  */
14*acc855d3SJani Nikula enum pipe {
15*acc855d3SJani Nikula 	INVALID_PIPE = -1,
16*acc855d3SJani Nikula 
17*acc855d3SJani Nikula 	PIPE_A = 0,
18*acc855d3SJani Nikula 	PIPE_B,
19*acc855d3SJani Nikula 	PIPE_C,
20*acc855d3SJani Nikula 	PIPE_D,
21*acc855d3SJani Nikula 	_PIPE_EDP,
22*acc855d3SJani Nikula 
23*acc855d3SJani Nikula 	I915_MAX_PIPES = _PIPE_EDP
24*acc855d3SJani Nikula };
25*acc855d3SJani Nikula 
26*acc855d3SJani Nikula enum transcoder {
27*acc855d3SJani Nikula 	INVALID_TRANSCODER = -1,
28*acc855d3SJani Nikula 	/*
29*acc855d3SJani Nikula 	 * The following transcoders have a 1:1 transcoder -> pipe mapping,
30*acc855d3SJani Nikula 	 * keep their values fixed: the code assumes that TRANSCODER_A=0, the
31*acc855d3SJani Nikula 	 * rest have consecutive values and match the enum values of the pipes
32*acc855d3SJani Nikula 	 * they map to.
33*acc855d3SJani Nikula 	 */
34*acc855d3SJani Nikula 	TRANSCODER_A = PIPE_A,
35*acc855d3SJani Nikula 	TRANSCODER_B = PIPE_B,
36*acc855d3SJani Nikula 	TRANSCODER_C = PIPE_C,
37*acc855d3SJani Nikula 	TRANSCODER_D = PIPE_D,
38*acc855d3SJani Nikula 
39*acc855d3SJani Nikula 	/*
40*acc855d3SJani Nikula 	 * The following transcoders can map to any pipe, their enum value
41*acc855d3SJani Nikula 	 * doesn't need to stay fixed.
42*acc855d3SJani Nikula 	 */
43*acc855d3SJani Nikula 	TRANSCODER_EDP,
44*acc855d3SJani Nikula 	TRANSCODER_DSI_0,
45*acc855d3SJani Nikula 	TRANSCODER_DSI_1,
46*acc855d3SJani Nikula 	TRANSCODER_DSI_A = TRANSCODER_DSI_0,	/* legacy DSI */
47*acc855d3SJani Nikula 	TRANSCODER_DSI_C = TRANSCODER_DSI_1,	/* legacy DSI */
48*acc855d3SJani Nikula 
49*acc855d3SJani Nikula 	I915_MAX_TRANSCODERS
50*acc855d3SJani Nikula };
51*acc855d3SJani Nikula 
52*acc855d3SJani Nikula /*
53*acc855d3SJani Nikula  * Per-pipe plane identifier.
54*acc855d3SJani Nikula  * I915_MAX_PLANES in the enum below is the maximum (across all platforms)
55*acc855d3SJani Nikula  * number of planes per CRTC.  Not all platforms really have this many planes,
56*acc855d3SJani Nikula  * which means some arrays of size I915_MAX_PLANES may have unused entries
57*acc855d3SJani Nikula  * between the topmost sprite plane and the cursor plane.
58*acc855d3SJani Nikula  *
59*acc855d3SJani Nikula  * This is expected to be passed to various register macros
60*acc855d3SJani Nikula  * (eg. PLANE_CTL(), PS_PLANE_SEL(), etc.) so adjust with care.
61*acc855d3SJani Nikula  */
62*acc855d3SJani Nikula enum plane_id {
63*acc855d3SJani Nikula 	PLANE_PRIMARY,
64*acc855d3SJani Nikula 	PLANE_SPRITE0,
65*acc855d3SJani Nikula 	PLANE_SPRITE1,
66*acc855d3SJani Nikula 	PLANE_SPRITE2,
67*acc855d3SJani Nikula 	PLANE_SPRITE3,
68*acc855d3SJani Nikula 	PLANE_SPRITE4,
69*acc855d3SJani Nikula 	PLANE_SPRITE5,
70*acc855d3SJani Nikula 	PLANE_CURSOR,
71*acc855d3SJani Nikula 
72*acc855d3SJani Nikula 	I915_MAX_PLANES,
73*acc855d3SJani Nikula };
74*acc855d3SJani Nikula 
75*acc855d3SJani Nikula enum port {
76*acc855d3SJani Nikula 	PORT_NONE = -1,
77*acc855d3SJani Nikula 
78*acc855d3SJani Nikula 	PORT_A = 0,
79*acc855d3SJani Nikula 	PORT_B,
80*acc855d3SJani Nikula 	PORT_C,
81*acc855d3SJani Nikula 	PORT_D,
82*acc855d3SJani Nikula 	PORT_E,
83*acc855d3SJani Nikula 	PORT_F,
84*acc855d3SJani Nikula 	PORT_G,
85*acc855d3SJani Nikula 	PORT_H,
86*acc855d3SJani Nikula 	PORT_I,
87*acc855d3SJani Nikula 
88*acc855d3SJani Nikula 	/* tgl+ */
89*acc855d3SJani Nikula 	PORT_TC1 = PORT_D,
90*acc855d3SJani Nikula 	PORT_TC2,
91*acc855d3SJani Nikula 	PORT_TC3,
92*acc855d3SJani Nikula 	PORT_TC4,
93*acc855d3SJani Nikula 	PORT_TC5,
94*acc855d3SJani Nikula 	PORT_TC6,
95*acc855d3SJani Nikula 
96*acc855d3SJani Nikula 	/* XE_LPD repositions D/E offsets and bitfields */
97*acc855d3SJani Nikula 	PORT_D_XELPD = PORT_TC5,
98*acc855d3SJani Nikula 	PORT_E_XELPD,
99*acc855d3SJani Nikula 
100*acc855d3SJani Nikula 	I915_MAX_PORTS
101*acc855d3SJani Nikula };
102*acc855d3SJani Nikula 
103*acc855d3SJani Nikula enum hpd_pin {
104*acc855d3SJani Nikula 	HPD_NONE = 0,
105*acc855d3SJani Nikula 	HPD_TV = HPD_NONE,     /* TV is known to be unreliable */
106*acc855d3SJani Nikula 	HPD_CRT,
107*acc855d3SJani Nikula 	HPD_SDVO_B,
108*acc855d3SJani Nikula 	HPD_SDVO_C,
109*acc855d3SJani Nikula 	HPD_PORT_A,
110*acc855d3SJani Nikula 	HPD_PORT_B,
111*acc855d3SJani Nikula 	HPD_PORT_C,
112*acc855d3SJani Nikula 	HPD_PORT_D,
113*acc855d3SJani Nikula 	HPD_PORT_E,
114*acc855d3SJani Nikula 	HPD_PORT_TC1,
115*acc855d3SJani Nikula 	HPD_PORT_TC2,
116*acc855d3SJani Nikula 	HPD_PORT_TC3,
117*acc855d3SJani Nikula 	HPD_PORT_TC4,
118*acc855d3SJani Nikula 	HPD_PORT_TC5,
119*acc855d3SJani Nikula 	HPD_PORT_TC6,
120*acc855d3SJani Nikula 
121*acc855d3SJani Nikula 	HPD_NUM_PINS
122*acc855d3SJani Nikula };
123*acc855d3SJani Nikula 
124*acc855d3SJani Nikula #endif /* __INTEL_DISPLAY_LIMITS_H__ */
125