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