coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
dsi_common.h File Reference
#include <commonlib/helpers.h>
#include <edid.h>
#include <mipi/dsi.h>
#include <types.h>
#include <soc/addressmap.h>
Include dependency graph for dsi_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dsi_regs
 
struct  mtk_phy_timing
 

Enumerations

enum  mipi_dsi_pixel_format {
  MIPI_DSI_FMT_RGB888 , MIPI_DSI_FMT_RGB666 , MIPI_DSI_FMT_RGB666_PACKED , MIPI_DSI_FMT_RGB565 ,
  MIPI_DSI_FMT_RGB888 , MIPI_DSI_FMT_RGB666 , MIPI_DSI_FMT_RGB666_PACKED , MIPI_DSI_FMT_RGB565 ,
  MIPI_DSI_FMT_RGB888 , MIPI_DSI_FMT_RGB666 , MIPI_DSI_FMT_RGB666_PACKED , MIPI_DSI_FMT_RGB565
}
 
enum  {
  MIPI_DSI_MODE_VIDEO = BIT(0) , MIPI_DSI_MODE_VIDEO_BURST = BIT(1) , MIPI_DSI_MODE_VIDEO_SYNC_PULSE = BIT(2) , MIPI_DSI_MODE_VIDEO_AUTO_VERT = BIT(3) ,
  MIPI_DSI_MODE_VIDEO_HSE = BIT(4) , MIPI_DSI_MODE_VIDEO_HFP = BIT(5) , MIPI_DSI_MODE_VIDEO_HBP = BIT(6) , MIPI_DSI_MODE_VIDEO_HSA = BIT(7) ,
  MIPI_DSI_MODE_VSYNC_FLUSH = BIT(8) , MIPI_DSI_MODE_EOT_PACKET = BIT(9) , MIPI_DSI_CLOCK_NON_CONTINUOUS = BIT(10) , MIPI_DSI_MODE_LPM = BIT(11) ,
  MIPI_DSI_MODE_LINE_END = BIT(12)
}
 
enum  {
  LPRX_RD_RDY_INT_FLAG = BIT(0) , CMD_DONE_INT_FLAG = BIT(1) , TE_RDY_INT_FLAG = BIT(2) , VM_DONE_INT_FLAG = BIT(3) ,
  EXT_TE_RDY_INT_FLAG = BIT(4) , DSI_BUSY = BIT(31)
}
 
enum  { DSI_RESET = BIT(0) , DSI_EN = BIT(1) , DPHY_RESET = BIT(2) , DSI_DUAL = BIT(4) }
 
enum  {
  MODE = 3 , CMD_MODE = 0 , SYNC_PULSE_MODE = 1 , SYNC_EVENT_MODE = 2 ,
  BURST_MODE = 3 , FRM_MODE = BIT(16) , MIX_MODE = BIT(17)
}
 
enum  { EOTP_DISABLE = BIT(6) , NON_CONTINUOUS_CLK = BIT(16) }
 
enum  {
  DSI_PS_WC = 0x3fff , DSI_PS_SEL = (3 << 16) , PACKED_PS_16BIT_RGB565 = (0 << 16) , LOOSELY_PS_18BIT_RGB666 = (1 << 16) ,
  PACKED_PS_18BIT_RGB666 = (2 << 16) , PACKED_PS_24BIT_RGB888 = (3 << 16) , DSI_PSCON_CUSTOM_HEADER_SHIFT = 26
}
 
enum  { DSI_SIZE_CON_HEIGHT_SHIFT = 16 , DSI_SIZE_CON_WIDTH_SHIFT = 0 }
 
enum  { CMDQ_SIZE = 0x3f }
 
enum  { LC_HS_TX_EN = BIT(0) , LC_ULPM_EN = BIT(1) , LC_WAKEUP_EN = BIT(2) }
 
enum  { LD0_RM_TRIG_EN = BIT(0) , LD0_ULPM_EN = BIT(1) , LD0_WAKEUP_EN = BIT(2) }
 
enum  { LPX = (0xff << 0) , HS_PRPR = (0xff << 8) , HS_ZERO = (0xff << 16) , HS_TRAIL = (0xff << 24) }
 
enum  { TA_GO = (0xff << 0) , TA_SURE = (0xff << 8) , TA_GET = (0xff << 16) , DA_HS_EXIT = (0xff << 24) }
 
enum  { CONT_DET = (0xff << 0) , CLK_ZERO = (0xf << 16) , CLK_TRAIL = (0xff << 24) }
 
enum  { CLK_HS_PRPR = (0xff << 0) , CLK_HS_POST = (0xff << 8) , CLK_HS_EXIT = (0xf << 16) }
 
enum  { VM_CMD_EN = BIT(0) , TS_VFP_EN = BIT(5) }
 
enum  {
  CONFIG = (0xff << 0) , SHORT_PACKET = 0 , LONG_PACKET = 2 , BTA = BIT(2) ,
  DATA_ID = (0xff << 8) , DATA_0 = (0xff << 16) , DATA_1 = (0xff << 24)
}
 
enum  { DSI_FORCE_COMMIT_USE_MMSYS = BIT(0) , DSI_FORCE_COMMIT_ALWAYS = BIT(1) }
 

Functions

 check_member (dsi_regs, dsi_phy_lccon, 0x104)
 
 check_member (dsi_regs, dsi_phy_timecon3, 0x11c)
 
 check_member (dsi_regs, dsi_vm_cmd_con, 0x130)
 
 check_member (dsi_regs, dsi_force_commit, 0x190)
 
 check_member (dsi_regs, dsi_cmdq, 0x200)
 
void mtk_dsi_reset (void)
 
void mtk_dsi_configure_mipi_tx (u32 data_rate, u32 lanes)
 
void mtk_dsi_override_phy_timing (struct mtk_phy_timing *timing)
 
int mtk_dsi_bpp_from_format (u32 format)
 
int mtk_dsi_init (u32 mode_flags, u32 format, u32 lanes, const struct edid *edid, const u8 *init_commands)
 

Variables

static struct dsi_regs *const dsi0 = (void *)DSI0_BASE
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MIPI_DSI_MODE_VIDEO 
MIPI_DSI_MODE_VIDEO_BURST 
MIPI_DSI_MODE_VIDEO_SYNC_PULSE 
MIPI_DSI_MODE_VIDEO_AUTO_VERT 
MIPI_DSI_MODE_VIDEO_HSE 
MIPI_DSI_MODE_VIDEO_HFP 
MIPI_DSI_MODE_VIDEO_HBP 
MIPI_DSI_MODE_VIDEO_HSA 
MIPI_DSI_MODE_VSYNC_FLUSH 
MIPI_DSI_MODE_EOT_PACKET 
MIPI_DSI_CLOCK_NON_CONTINUOUS 
MIPI_DSI_MODE_LPM 
MIPI_DSI_MODE_LINE_END 

Definition at line 20 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
LPRX_RD_RDY_INT_FLAG 
CMD_DONE_INT_FLAG 
TE_RDY_INT_FLAG 
VM_DONE_INT_FLAG 
EXT_TE_RDY_INT_FLAG 
DSI_BUSY 

Definition at line 96 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
DSI_RESET 
DSI_EN 
DPHY_RESET 
DSI_DUAL 

Definition at line 106 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
MODE 
CMD_MODE 
SYNC_PULSE_MODE 
SYNC_EVENT_MODE 
BURST_MODE 
FRM_MODE 
MIX_MODE 

Definition at line 114 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
EOTP_DISABLE 
NON_CONTINUOUS_CLK 

Definition at line 125 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
DSI_PS_WC 
DSI_PS_SEL 
PACKED_PS_16BIT_RGB565 
LOOSELY_PS_18BIT_RGB666 
PACKED_PS_18BIT_RGB666 
PACKED_PS_24BIT_RGB888 
DSI_PSCON_CUSTOM_HEADER_SHIFT 

Definition at line 131 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
DSI_SIZE_CON_HEIGHT_SHIFT 
DSI_SIZE_CON_WIDTH_SHIFT 

Definition at line 143 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
CMDQ_SIZE 

Definition at line 149 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
LC_HS_TX_EN 
LC_ULPM_EN 
LC_WAKEUP_EN 

Definition at line 154 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
LD0_RM_TRIG_EN 
LD0_ULPM_EN 
LD0_WAKEUP_EN 

Definition at line 161 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
LPX 
HS_PRPR 
HS_ZERO 
HS_TRAIL 

Definition at line 167 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
TA_GO 
TA_SURE 
TA_GET 
DA_HS_EXIT 

Definition at line 174 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
CONT_DET 
CLK_ZERO 
CLK_TRAIL 

Definition at line 181 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
CLK_HS_PRPR 
CLK_HS_POST 
CLK_HS_EXIT 

Definition at line 187 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
VM_CMD_EN 
TS_VFP_EN 

Definition at line 194 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
CONFIG 
SHORT_PACKET 
LONG_PACKET 
BTA 
DATA_ID 
DATA_0 
DATA_1 

Definition at line 200 of file dsi_common.h.

◆ anonymous enum

anonymous enum
Enumerator
DSI_FORCE_COMMIT_USE_MMSYS 
DSI_FORCE_COMMIT_ALWAYS 

Definition at line 211 of file dsi_common.h.

◆ mipi_dsi_pixel_format

Enumerator
MIPI_DSI_FMT_RGB888 
MIPI_DSI_FMT_RGB666 
MIPI_DSI_FMT_RGB666_PACKED 
MIPI_DSI_FMT_RGB565 
MIPI_DSI_FMT_RGB888 
MIPI_DSI_FMT_RGB666 
MIPI_DSI_FMT_RGB666_PACKED 
MIPI_DSI_FMT_RGB565 
MIPI_DSI_FMT_RGB888 
MIPI_DSI_FMT_RGB666 
MIPI_DSI_FMT_RGB666_PACKED 
MIPI_DSI_FMT_RGB565 

Definition at line 12 of file dsi_common.h.

Function Documentation

◆ check_member() [1/5]

check_member ( dsi_regs  ,
dsi_cmdq  ,
0x200   
)

◆ check_member() [2/5]

check_member ( dsi_regs  ,
dsi_force_commit  ,
0x190   
)

◆ check_member() [3/5]

check_member ( dsi_regs  ,
dsi_phy_lccon  ,
0x104   
)

◆ check_member() [4/5]

check_member ( dsi_regs  ,
dsi_phy_timecon3  ,
0x11c   
)

◆ check_member() [5/5]

check_member ( dsi_regs  ,
dsi_vm_cmd_con  ,
0x130   
)

◆ mtk_dsi_bpp_from_format()

int mtk_dsi_bpp_from_format ( u32  format)

◆ mtk_dsi_configure_mipi_tx()

void mtk_dsi_configure_mipi_tx ( u32  data_rate,
u32  lanes 
)

PLL PCW config PCW bit 24~30 = integer part of pcw PCW bit 0~23 = fractional part of pcw pcw = data_Rate*4*txdiv/(Ref_clk*2); Post DIV =4, so need data_Rate*4 Ref_clk is 26MHz

Definition at line 10 of file mtk_mipi_dphy.c.

References AD_DSI_PLL_SDM_ISO_EN, AD_DSI_PLL_SDM_PWR_ON, assert, BIT, mipi_tx_regs::ck_ckmode_en, mipi_tx_regs::ck_sw_ctl_en, CLK26M_HZ, clrbits32, clrsetbits32, mipi_tx_regs::d0_sw_ctl_en, mipi_tx_regs::d1_sw_ctl_en, mipi_tx_regs::d2_sw_ctl_en, mipi_tx_regs::d3_sw_ctl_en, mipi_tx_regs::dsi_bg_con, DSI_CK_CKMODE_EN, mipi_tx_regs::dsi_clock_lane, mipi_tx_regs::dsi_con, mipi_tx_regs::dsi_data_lane, mipi_tx_regs::dsi_pll_con0, mipi_tx_regs::dsi_pll_con1, mipi_tx_regs::dsi_pll_con2, mipi_tx_regs::dsi_pll_pwr, DSI_SW_CTL_EN, mipi_tx_regs::dsi_top_con, mipi_tx_regs::lane_con, LDOOUT_EN, MHz, mipi_tx, mipi_tx0, MTK_DSI_DATA_RATE_MIN_MHZ, mipi_tx_regs::pll_con0, mipi_tx_regs::pll_con1, mipi_tx_regs::pll_con4, mipi_tx_regs::pll_pwr, read32(), RG_DSI0_CKG_LDOOUT_EN, RG_DSI0_LDOCORE_EN, RG_DSI0_MPPLL_PLL_EN, RG_DSI0_MPPLL_PREDIV, RG_DSI0_MPPLL_SDM_FRA_EN, RG_DSI0_MPPLL_SDM_SSC_EN, RG_DSI0_MPPLL_TXDIV0, RG_DSI0_MPPLL_TXDIV1, RG_DSI_BG_CKEN, RG_DSI_BG_CORE_EN, RG_DSI_LNT_HS_BIAS_EN, RG_DSI_LNT_IMP_CAL_CODE, RG_DSI_MPPLL_SDM_ISO_EN, RG_DSI_MPPLL_SDM_PWR_ON, RG_DSI_PAD_TIE_LOW_EN, RG_DSI_PLL_EN, RG_DSI_PLL_POSDIV, RG_DSI_V02_SEL, RG_DSI_V032_SEL, RG_DSI_V04_SEL, RG_DSI_V072_SEL, RG_DSI_V10_SEL, RG_DSI_V12_SEL, setbits32, udelay(), and write32().

Referenced by mtk_dsi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtk_dsi_init()

int mtk_dsi_init ( u32  mode_flags,
u32  format,
u32  lanes,
const struct edid edid,
const u8 init_commands 
)

◆ mtk_dsi_override_phy_timing()

◆ mtk_dsi_reset()

void mtk_dsi_reset ( void  )

Definition at line 65 of file mtk_mipi_dphy.c.

References clrbits32, dsi0, dsi_regs::dsi_con_ctrl, dsi_regs::dsi_force_commit, DSI_FORCE_COMMIT_ALWAYS, DSI_FORCE_COMMIT_USE_MMSYS, setbits32, and write32().

Referenced by mtk_dsi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ dsi0