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