Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 /*
0003  * Copyright © 2022 Intel Corporation
0004  */
0005 
0006 #ifndef __ICL_DSI_REGS_H__
0007 #define __ICL_DSI_REGS_H__
0008 
0009 #include "i915_reg_defs.h"
0010 
0011 /* Gen11 DSI */
0012 #define _MMIO_DSI(tc, dsi0, dsi1)   _MMIO_TRANS((tc) - TRANSCODER_DSI_0, \
0013                             dsi0, dsi1)
0014 #define _ICL_DSI_ESC_CLK_DIV0       0x6b090
0015 #define _ICL_DSI_ESC_CLK_DIV1       0x6b890
0016 #define ICL_DSI_ESC_CLK_DIV(port)   _MMIO_PORT((port),  \
0017                             _ICL_DSI_ESC_CLK_DIV0, \
0018                             _ICL_DSI_ESC_CLK_DIV1)
0019 #define _ICL_DPHY_ESC_CLK_DIV0      0x162190
0020 #define _ICL_DPHY_ESC_CLK_DIV1      0x6C190
0021 #define ICL_DPHY_ESC_CLK_DIV(port)  _MMIO_PORT((port),  \
0022                         _ICL_DPHY_ESC_CLK_DIV0, \
0023                         _ICL_DPHY_ESC_CLK_DIV1)
0024 #define  ICL_BYTE_CLK_PER_ESC_CLK_MASK      (0x1f << 16)
0025 #define  ICL_BYTE_CLK_PER_ESC_CLK_SHIFT 16
0026 #define  ICL_ESC_CLK_DIV_MASK           0x1ff
0027 #define  ICL_ESC_CLK_DIV_SHIFT          0
0028 #define DSI_MAX_ESC_CLK         20000       /* in KHz */
0029 
0030 #define _ADL_MIPIO_REG          0x180
0031 #define ADL_MIPIO_DW(port, dw)      _MMIO(_ICL_COMBOPHY(port) + _ADL_MIPIO_REG + 4 * (dw))
0032 #define   TX_ESC_CLK_DIV_PHY_SEL    REGBIT(16)
0033 #define   TX_ESC_CLK_DIV_PHY_MASK   REG_GENMASK(23, 16)
0034 #define   TX_ESC_CLK_DIV_PHY        REG_FIELD_PREP(TX_ESC_CLK_DIV_PHY_MASK, 0x7f)
0035 
0036 #define _DSI_CMD_FRMCTL_0       0x6b034
0037 #define _DSI_CMD_FRMCTL_1       0x6b834
0038 #define DSI_CMD_FRMCTL(port)        _MMIO_PORT(port,    \
0039                            _DSI_CMD_FRMCTL_0,\
0040                            _DSI_CMD_FRMCTL_1)
0041 #define   DSI_FRAME_UPDATE_REQUEST      (1 << 31)
0042 #define   DSI_PERIODIC_FRAME_UPDATE_ENABLE  (1 << 29)
0043 #define   DSI_NULL_PACKET_ENABLE        (1 << 28)
0044 #define   DSI_FRAME_IN_PROGRESS         (1 << 0)
0045 
0046 #define _DSI_INTR_MASK_REG_0        0x6b070
0047 #define _DSI_INTR_MASK_REG_1        0x6b870
0048 #define DSI_INTR_MASK_REG(port)     _MMIO_PORT(port,    \
0049                            _DSI_INTR_MASK_REG_0,\
0050                            _DSI_INTR_MASK_REG_1)
0051 
0052 #define _DSI_INTR_IDENT_REG_0       0x6b074
0053 #define _DSI_INTR_IDENT_REG_1       0x6b874
0054 #define DSI_INTR_IDENT_REG(port)    _MMIO_PORT(port,    \
0055                            _DSI_INTR_IDENT_REG_0,\
0056                            _DSI_INTR_IDENT_REG_1)
0057 #define   DSI_TE_EVENT              (1 << 31)
0058 #define   DSI_RX_DATA_OR_BTA_TERMINATED     (1 << 30)
0059 #define   DSI_TX_DATA               (1 << 29)
0060 #define   DSI_ULPS_ENTRY_DONE           (1 << 28)
0061 #define   DSI_NON_TE_TRIGGER_RECEIVED       (1 << 27)
0062 #define   DSI_HOST_CHKSUM_ERROR         (1 << 26)
0063 #define   DSI_HOST_MULTI_ECC_ERROR      (1 << 25)
0064 #define   DSI_HOST_SINGL_ECC_ERROR      (1 << 24)
0065 #define   DSI_HOST_CONTENTION_DETECTED      (1 << 23)
0066 #define   DSI_HOST_FALSE_CONTROL_ERROR      (1 << 22)
0067 #define   DSI_HOST_TIMEOUT_ERROR        (1 << 21)
0068 #define   DSI_HOST_LOW_POWER_TX_SYNC_ERROR  (1 << 20)
0069 #define   DSI_HOST_ESCAPE_MODE_ENTRY_ERROR  (1 << 19)
0070 #define   DSI_FRAME_UPDATE_DONE         (1 << 16)
0071 #define   DSI_PROTOCOL_VIOLATION_REPORTED   (1 << 15)
0072 #define   DSI_INVALID_TX_LENGTH         (1 << 13)
0073 #define   DSI_INVALID_VC            (1 << 12)
0074 #define   DSI_INVALID_DATA_TYPE         (1 << 11)
0075 #define   DSI_PERIPHERAL_CHKSUM_ERROR       (1 << 10)
0076 #define   DSI_PERIPHERAL_MULTI_ECC_ERROR    (1 << 9)
0077 #define   DSI_PERIPHERAL_SINGLE_ECC_ERROR   (1 << 8)
0078 #define   DSI_PERIPHERAL_CONTENTION_DETECTED    (1 << 7)
0079 #define   DSI_PERIPHERAL_FALSE_CTRL_ERROR   (1 << 6)
0080 #define   DSI_PERIPHERAL_TIMEOUT_ERROR      (1 << 5)
0081 #define   DSI_PERIPHERAL_LP_TX_SYNC_ERROR   (1 << 4)
0082 #define   DSI_PERIPHERAL_ESC_MODE_ENTRY_CMD_ERR (1 << 3)
0083 #define   DSI_EOT_SYNC_ERROR            (1 << 2)
0084 #define   DSI_SOT_SYNC_ERROR            (1 << 1)
0085 #define   DSI_SOT_ERROR             (1 << 0)
0086 
0087 /* ICL DSI MODE control */
0088 #define _ICL_DSI_IO_MODECTL_0               0x6B094
0089 #define _ICL_DSI_IO_MODECTL_1               0x6B894
0090 #define ICL_DSI_IO_MODECTL(port)    _MMIO_PORT(port,    \
0091                             _ICL_DSI_IO_MODECTL_0, \
0092                             _ICL_DSI_IO_MODECTL_1)
0093 #define  COMBO_PHY_MODE_DSI             (1 << 0)
0094 
0095 /* TGL DSI Chicken register */
0096 #define _TGL_DSI_CHKN_REG_0         0x6B0C0
0097 #define _TGL_DSI_CHKN_REG_1         0x6B8C0
0098 #define TGL_DSI_CHKN_REG(port)      _MMIO_PORT(port,    \
0099                             _TGL_DSI_CHKN_REG_0, \
0100                             _TGL_DSI_CHKN_REG_1)
0101 #define TGL_DSI_CHKN_LSHS_GB_MASK       REG_GENMASK(15, 12)
0102 #define TGL_DSI_CHKN_LSHS_GB(byte_clocks)   REG_FIELD_PREP(TGL_DSI_CHKN_LSHS_GB_MASK, \
0103                                    (byte_clocks))
0104 #define _ICL_DSI_T_INIT_MASTER_0    0x6b088
0105 #define _ICL_DSI_T_INIT_MASTER_1    0x6b888
0106 #define ICL_DSI_T_INIT_MASTER(port) _MMIO_PORT(port,    \
0107                            _ICL_DSI_T_INIT_MASTER_0,\
0108                            _ICL_DSI_T_INIT_MASTER_1)
0109 #define   DSI_T_INIT_MASTER_MASK    REG_GENMASK(15, 0)
0110 
0111 #define _DPHY_CLK_TIMING_PARAM_0    0x162180
0112 #define _DPHY_CLK_TIMING_PARAM_1    0x6c180
0113 #define DPHY_CLK_TIMING_PARAM(port) _MMIO_PORT(port,    \
0114                            _DPHY_CLK_TIMING_PARAM_0,\
0115                            _DPHY_CLK_TIMING_PARAM_1)
0116 #define _DSI_CLK_TIMING_PARAM_0     0x6b080
0117 #define _DSI_CLK_TIMING_PARAM_1     0x6b880
0118 #define DSI_CLK_TIMING_PARAM(port)  _MMIO_PORT(port,    \
0119                            _DSI_CLK_TIMING_PARAM_0,\
0120                            _DSI_CLK_TIMING_PARAM_1)
0121 #define  CLK_PREPARE_OVERRIDE       (1 << 31)
0122 #define  CLK_PREPARE(x)     ((x) << 28)
0123 #define  CLK_PREPARE_MASK       (0x7 << 28)
0124 #define  CLK_PREPARE_SHIFT      28
0125 #define  CLK_ZERO_OVERRIDE      (1 << 27)
0126 #define  CLK_ZERO(x)            ((x) << 20)
0127 #define  CLK_ZERO_MASK          (0xf << 20)
0128 #define  CLK_ZERO_SHIFT     20
0129 #define  CLK_PRE_OVERRIDE       (1 << 19)
0130 #define  CLK_PRE(x)         ((x) << 16)
0131 #define  CLK_PRE_MASK           (0x3 << 16)
0132 #define  CLK_PRE_SHIFT          16
0133 #define  CLK_POST_OVERRIDE      (1 << 15)
0134 #define  CLK_POST(x)            ((x) << 8)
0135 #define  CLK_POST_MASK          (0x7 << 8)
0136 #define  CLK_POST_SHIFT     8
0137 #define  CLK_TRAIL_OVERRIDE     (1 << 7)
0138 #define  CLK_TRAIL(x)           ((x) << 0)
0139 #define  CLK_TRAIL_MASK     (0xf << 0)
0140 #define  CLK_TRAIL_SHIFT        0
0141 
0142 #define _DPHY_DATA_TIMING_PARAM_0   0x162184
0143 #define _DPHY_DATA_TIMING_PARAM_1   0x6c184
0144 #define DPHY_DATA_TIMING_PARAM(port)    _MMIO_PORT(port,    \
0145                            _DPHY_DATA_TIMING_PARAM_0,\
0146                            _DPHY_DATA_TIMING_PARAM_1)
0147 #define _DSI_DATA_TIMING_PARAM_0    0x6B084
0148 #define _DSI_DATA_TIMING_PARAM_1    0x6B884
0149 #define DSI_DATA_TIMING_PARAM(port) _MMIO_PORT(port,    \
0150                            _DSI_DATA_TIMING_PARAM_0,\
0151                            _DSI_DATA_TIMING_PARAM_1)
0152 #define  HS_PREPARE_OVERRIDE        (1 << 31)
0153 #define  HS_PREPARE(x)          ((x) << 24)
0154 #define  HS_PREPARE_MASK        (0x7 << 24)
0155 #define  HS_PREPARE_SHIFT       24
0156 #define  HS_ZERO_OVERRIDE       (1 << 23)
0157 #define  HS_ZERO(x)         ((x) << 16)
0158 #define  HS_ZERO_MASK           (0xf << 16)
0159 #define  HS_ZERO_SHIFT          16
0160 #define  HS_TRAIL_OVERRIDE      (1 << 15)
0161 #define  HS_TRAIL(x)            ((x) << 8)
0162 #define  HS_TRAIL_MASK          (0x7 << 8)
0163 #define  HS_TRAIL_SHIFT     8
0164 #define  HS_EXIT_OVERRIDE       (1 << 7)
0165 #define  HS_EXIT(x)         ((x) << 0)
0166 #define  HS_EXIT_MASK           (0x7 << 0)
0167 #define  HS_EXIT_SHIFT          0
0168 
0169 #define _DPHY_TA_TIMING_PARAM_0     0x162188
0170 #define _DPHY_TA_TIMING_PARAM_1     0x6c188
0171 #define DPHY_TA_TIMING_PARAM(port)  _MMIO_PORT(port,    \
0172                            _DPHY_TA_TIMING_PARAM_0,\
0173                            _DPHY_TA_TIMING_PARAM_1)
0174 #define _DSI_TA_TIMING_PARAM_0      0x6b098
0175 #define _DSI_TA_TIMING_PARAM_1      0x6b898
0176 #define DSI_TA_TIMING_PARAM(port)   _MMIO_PORT(port,    \
0177                            _DSI_TA_TIMING_PARAM_0,\
0178                            _DSI_TA_TIMING_PARAM_1)
0179 #define  TA_SURE_OVERRIDE       (1 << 31)
0180 #define  TA_SURE(x)         ((x) << 16)
0181 #define  TA_SURE_MASK           (0x1f << 16)
0182 #define  TA_SURE_SHIFT          16
0183 #define  TA_GO_OVERRIDE     (1 << 15)
0184 #define  TA_GO(x)           ((x) << 8)
0185 #define  TA_GO_MASK         (0xf << 8)
0186 #define  TA_GO_SHIFT            8
0187 #define  TA_GET_OVERRIDE        (1 << 7)
0188 #define  TA_GET(x)          ((x) << 0)
0189 #define  TA_GET_MASK            (0xf << 0)
0190 #define  TA_GET_SHIFT           0
0191 
0192 /* DSI transcoder configuration */
0193 #define _DSI_TRANS_FUNC_CONF_0      0x6b030
0194 #define _DSI_TRANS_FUNC_CONF_1      0x6b830
0195 #define DSI_TRANS_FUNC_CONF(tc)     _MMIO_DSI(tc,   \
0196                           _DSI_TRANS_FUNC_CONF_0,\
0197                           _DSI_TRANS_FUNC_CONF_1)
0198 #define  OP_MODE_MASK           (0x3 << 28)
0199 #define  OP_MODE_SHIFT          28
0200 #define  CMD_MODE_NO_GATE       (0x0 << 28)
0201 #define  CMD_MODE_TE_GATE       (0x1 << 28)
0202 #define  VIDEO_MODE_SYNC_EVENT      (0x2 << 28)
0203 #define  VIDEO_MODE_SYNC_PULSE      (0x3 << 28)
0204 #define  TE_SOURCE_GPIO         (1 << 27)
0205 #define  LINK_READY         (1 << 20)
0206 #define  PIX_FMT_MASK           (0x3 << 16)
0207 #define  PIX_FMT_SHIFT          16
0208 #define  PIX_FMT_RGB565         (0x0 << 16)
0209 #define  PIX_FMT_RGB666_PACKED      (0x1 << 16)
0210 #define  PIX_FMT_RGB666_LOOSE       (0x2 << 16)
0211 #define  PIX_FMT_RGB888         (0x3 << 16)
0212 #define  PIX_FMT_RGB101010      (0x4 << 16)
0213 #define  PIX_FMT_RGB121212      (0x5 << 16)
0214 #define  PIX_FMT_COMPRESSED     (0x6 << 16)
0215 #define  BGR_TRANSMISSION       (1 << 15)
0216 #define  PIX_VIRT_CHAN(x)       ((x) << 12)
0217 #define  PIX_VIRT_CHAN_MASK     (0x3 << 12)
0218 #define  PIX_VIRT_CHAN_SHIFT        12
0219 #define  PIX_BUF_THRESHOLD_MASK     (0x3 << 10)
0220 #define  PIX_BUF_THRESHOLD_SHIFT    10
0221 #define  PIX_BUF_THRESHOLD_1_4      (0x0 << 10)
0222 #define  PIX_BUF_THRESHOLD_1_2      (0x1 << 10)
0223 #define  PIX_BUF_THRESHOLD_3_4      (0x2 << 10)
0224 #define  PIX_BUF_THRESHOLD_FULL     (0x3 << 10)
0225 #define  CONTINUOUS_CLK_MASK        (0x3 << 8)
0226 #define  CONTINUOUS_CLK_SHIFT       8
0227 #define  CLK_ENTER_LP_AFTER_DATA    (0x0 << 8)
0228 #define  CLK_HS_OR_LP           (0x2 << 8)
0229 #define  CLK_HS_CONTINUOUS      (0x3 << 8)
0230 #define  LINK_CALIBRATION_MASK      (0x3 << 4)
0231 #define  LINK_CALIBRATION_SHIFT     4
0232 #define  CALIBRATION_DISABLED       (0x0 << 4)
0233 #define  CALIBRATION_ENABLED_INITIAL_ONLY   (0x2 << 4)
0234 #define  CALIBRATION_ENABLED_INITIAL_PERIODIC   (0x3 << 4)
0235 #define  BLANKING_PACKET_ENABLE     (1 << 2)
0236 #define  S3D_ORIENTATION_LANDSCAPE  (1 << 1)
0237 #define  EOTP_DISABLED          (1 << 0)
0238 
0239 #define _DSI_CMD_RXCTL_0        0x6b0d4
0240 #define _DSI_CMD_RXCTL_1        0x6b8d4
0241 #define DSI_CMD_RXCTL(tc)       _MMIO_DSI(tc,   \
0242                           _DSI_CMD_RXCTL_0,\
0243                           _DSI_CMD_RXCTL_1)
0244 #define  READ_UNLOADS_DW        (1 << 16)
0245 #define  RECEIVED_UNASSIGNED_TRIGGER    (1 << 15)
0246 #define  RECEIVED_ACKNOWLEDGE_TRIGGER   (1 << 14)
0247 #define  RECEIVED_TEAR_EFFECT_TRIGGER   (1 << 13)
0248 #define  RECEIVED_RESET_TRIGGER     (1 << 12)
0249 #define  RECEIVED_PAYLOAD_WAS_LOST  (1 << 11)
0250 #define  RECEIVED_CRC_WAS_LOST      (1 << 10)
0251 #define  NUMBER_RX_PLOAD_DW_MASK    (0xff << 0)
0252 #define  NUMBER_RX_PLOAD_DW_SHIFT   0
0253 
0254 #define _DSI_CMD_TXCTL_0        0x6b0d0
0255 #define _DSI_CMD_TXCTL_1        0x6b8d0
0256 #define DSI_CMD_TXCTL(tc)       _MMIO_DSI(tc,   \
0257                           _DSI_CMD_TXCTL_0,\
0258                           _DSI_CMD_TXCTL_1)
0259 #define  KEEP_LINK_IN_HS        (1 << 24)
0260 #define  FREE_HEADER_CREDIT_MASK    (0x1f << 8)
0261 #define  FREE_HEADER_CREDIT_SHIFT   0x8
0262 #define  FREE_PLOAD_CREDIT_MASK     (0xff << 0)
0263 #define  FREE_PLOAD_CREDIT_SHIFT    0
0264 #define  MAX_HEADER_CREDIT      0x10
0265 #define  MAX_PLOAD_CREDIT       0x40
0266 
0267 #define _DSI_CMD_TXHDR_0        0x6b100
0268 #define _DSI_CMD_TXHDR_1        0x6b900
0269 #define DSI_CMD_TXHDR(tc)       _MMIO_DSI(tc,   \
0270                           _DSI_CMD_TXHDR_0,\
0271                           _DSI_CMD_TXHDR_1)
0272 #define  PAYLOAD_PRESENT        (1 << 31)
0273 #define  LP_DATA_TRANSFER       (1 << 30)
0274 #define  VBLANK_FENCE           (1 << 29)
0275 #define  PARAM_WC_MASK          (0xffff << 8)
0276 #define  PARAM_WC_LOWER_SHIFT       8
0277 #define  PARAM_WC_UPPER_SHIFT       16
0278 #define  VC_MASK            (0x3 << 6)
0279 #define  VC_SHIFT           6
0280 #define  DT_MASK            (0x3f << 0)
0281 #define  DT_SHIFT           0
0282 
0283 #define _DSI_CMD_TXPYLD_0       0x6b104
0284 #define _DSI_CMD_TXPYLD_1       0x6b904
0285 #define DSI_CMD_TXPYLD(tc)      _MMIO_DSI(tc,   \
0286                           _DSI_CMD_TXPYLD_0,\
0287                           _DSI_CMD_TXPYLD_1)
0288 
0289 #define _DSI_LP_MSG_0           0x6b0d8
0290 #define _DSI_LP_MSG_1           0x6b8d8
0291 #define DSI_LP_MSG(tc)          _MMIO_DSI(tc,   \
0292                           _DSI_LP_MSG_0,\
0293                           _DSI_LP_MSG_1)
0294 #define  LPTX_IN_PROGRESS       (1 << 17)
0295 #define  LINK_IN_ULPS           (1 << 16)
0296 #define  LINK_ULPS_TYPE_LP11        (1 << 8)
0297 #define  LINK_ENTER_ULPS        (1 << 0)
0298 
0299 /* DSI timeout registers */
0300 #define _DSI_HSTX_TO_0          0x6b044
0301 #define _DSI_HSTX_TO_1          0x6b844
0302 #define DSI_HSTX_TO(tc)         _MMIO_DSI(tc,   \
0303                           _DSI_HSTX_TO_0,\
0304                           _DSI_HSTX_TO_1)
0305 #define  HSTX_TIMEOUT_VALUE_MASK    (0xffff << 16)
0306 #define  HSTX_TIMEOUT_VALUE_SHIFT   16
0307 #define  HSTX_TIMEOUT_VALUE(x)      ((x) << 16)
0308 #define  HSTX_TIMED_OUT         (1 << 0)
0309 
0310 #define _DSI_LPRX_HOST_TO_0     0x6b048
0311 #define _DSI_LPRX_HOST_TO_1     0x6b848
0312 #define DSI_LPRX_HOST_TO(tc)        _MMIO_DSI(tc,   \
0313                           _DSI_LPRX_HOST_TO_0,\
0314                           _DSI_LPRX_HOST_TO_1)
0315 #define  LPRX_TIMED_OUT         (1 << 16)
0316 #define  LPRX_TIMEOUT_VALUE_MASK    (0xffff << 0)
0317 #define  LPRX_TIMEOUT_VALUE_SHIFT   0
0318 #define  LPRX_TIMEOUT_VALUE(x)      ((x) << 0)
0319 
0320 #define _DSI_PWAIT_TO_0         0x6b040
0321 #define _DSI_PWAIT_TO_1         0x6b840
0322 #define DSI_PWAIT_TO(tc)        _MMIO_DSI(tc,   \
0323                           _DSI_PWAIT_TO_0,\
0324                           _DSI_PWAIT_TO_1)
0325 #define  PRESET_TIMEOUT_VALUE_MASK  (0xffff << 16)
0326 #define  PRESET_TIMEOUT_VALUE_SHIFT 16
0327 #define  PRESET_TIMEOUT_VALUE(x)    ((x) << 16)
0328 #define  PRESPONSE_TIMEOUT_VALUE_MASK   (0xffff << 0)
0329 #define  PRESPONSE_TIMEOUT_VALUE_SHIFT  0
0330 #define  PRESPONSE_TIMEOUT_VALUE(x) ((x) << 0)
0331 
0332 #define _DSI_TA_TO_0            0x6b04c
0333 #define _DSI_TA_TO_1            0x6b84c
0334 #define DSI_TA_TO(tc)           _MMIO_DSI(tc,   \
0335                           _DSI_TA_TO_0,\
0336                           _DSI_TA_TO_1)
0337 #define  TA_TIMED_OUT           (1 << 16)
0338 #define  TA_TIMEOUT_VALUE_MASK      (0xffff << 0)
0339 #define  TA_TIMEOUT_VALUE_SHIFT     0
0340 #define  TA_TIMEOUT_VALUE(x)        ((x) << 0)
0341 
0342 #endif /* __ICL_DSI_REGS_H__ */