DPI_STATUS DPI_PowerOff() { if (s_isDpiPowerOn) { _BackupDPIRegisters(); MASKREG32(DISP_REG_CONFIG_MMSYS_CG_SET1, DPI_MMSYS_CG1, DPI_MMSYS_CG1); printf("[DISP] - DPI_PowerOff. 0x%8x\n", INREG32(DISP_REG_CONFIG_MMSYS_CG_CON1)); s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI_PowerOff() { if (s_isDpiPowerOn) { BOOL ret = TRUE; _BackupDPIRegisters(); #if 1 // FIXME MASKREG32(0x14000110, 0x40, 0x40);//dpi0 clock gate setting #endif ASSERT(ret); s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI1_PowerOff() { if (s_isDpiPowerOn) { BOOL ret = TRUE; _BackupDPIRegisters(); #if 1 // FIXME MASKREG32(0xC2080018, 0x10, 0x10); #endif ASSERT(ret); s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI_PowerOff() { if (s_isDpiPowerOn) { BOOL ret = TRUE; _BackupDPIRegisters(); #if 1 // FIXME ret = hwDisableClock(MT65XX_PDN_MM_DPI, "DPI"); #else #endif ASSERT(ret); s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI_PowerOff() { if (s_isDpiPowerOn) { int ret = TRUE; _BackupDPIRegisters(); disable_pll(LVDSPLL, "dpi0"); #if 1 ret = disable_clock(MT_CG_DISP1_DPI0, "DPI"); if(1 == ret) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DPI", "power manager API return FALSE\n"); } #endif s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI1_PowerOff() { #ifndef CONFIG_MT6589_FPGA if (s_isDpiPowerOn) { int ret = TRUE; _BackupDPIRegisters(); #if 1 // FIXME ret = disable_clock(MT_CG_DISP1_DPI1, "DPI"); if(1 == ret) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DPI", "power manager API return FALSE\n"); } #endif s_isDpiPowerOn = FALSE; } #endif return DPI_STATUS_OK; }
DPI_STATUS DPI_PowerOff() { #ifndef CONFIG_MT6589_FPGA if (s_isDpiPowerOn) { int ret = TRUE; _BackupDPIRegisters(); disable_pll(LVDSPLL, "dpi0"); #if 0 // FIXME ret = disable_clock(MT65XX_PDN_MM_DPI, "DPI"); if(1 == ret) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DPI", "power manager API return FALSE\n"); } #endif s_isDpiPowerOn = FALSE; } #endif return DPI_STATUS_OK; }
DPI_STATUS DPI_Init(BOOL isDpiPoweredOn) { //DPI_REG_CNTL cntl; if (isDpiPoweredOn) { _BackupDPIRegisters(); } else { _ResetBackupedDPIRegisterValues(); } DPI_PowerOn(); //unsigned int reg_value = 0; OUTREG32(0x1400f000,0x1); OUTREG32(0x1400f000,0x41); OUTREG32(DPI_BASE+ 0x64, 0x400);// OUTREG32(DPI_BASE+ 0x6C, 0x400);// OUTREG32(DPI_BASE+ 0x74, 0x400);// OUTREG32(DPI_BASE+ 0x8C, 0x0FFF0000);// OUTREG32(DPI_BASE+ 0x90, 0x0FFF0000);// MASKREG32(DISPSYS_BASE + 0x60, 0x1, 0x1); #if ENABLE_DPI_INTERRUPT if (request_irq(MT6589_DPI_IRQ_ID, _DPI_InterruptHandler, IRQF_TRIGGER_LOW, "mtkdpi", NULL) < 0) { DISP_LOG_PRINT(ANDROID_LOG_INFO, "DPI", "[ERROR] fail to request DPI irq\n"); return DPI_STATUS_ERROR; } { DPI_REG_INTERRUPT enInt = DPI_REG->INT_ENABLE; enInt.VSYNC = 1; OUTREG32(&DPI_REG->INT_ENABLE, AS_UINT32(&enInt)); } #endif LCD_W2M_NeedLimiteSpeed(TRUE); return DPI_STATUS_OK; }
DPI_STATUS DPI_PowerOff() { int ret = 0; if (s_isDpiPowerOn) { #if 1 _BackupDPIRegisters(); //disable_pll(LVDSPLL, "dpi0"); ///disable_mux(MT_MUX_DPI0, "DPI"); ret += disable_clock(MT_CG_DISP1_DPI_DIGITAL_LANE, "DPI"); ret += disable_clock(MT_CG_DISP1_DPI_ENGINE, "DPI"); ret += disable_clock(MT_CG_DISP0_RDMA1, "DDP"); ////disable_pll(TVDPLL, "hdmi_dpi"); if(ret >0) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DPI", "power manager API return FALSE\n"); } #endif s_isDpiPowerOn = FALSE; } return DPI_STATUS_OK; }
DPI_STATUS DPI1_Init(BOOL isDpiPoweredOn) { //DPI1_REG_CNTL cntl; //DPI1_REG_EMBSYNC_SETTING embsync; if (isDpiPoweredOn) { _BackupDPIRegisters(); } else { _ResetBackupedDPIRegisterValues(); } DPI1_PowerOn(); #if 0 OUTREG32(DPI1_BASE+ 0x64, 0x400);// OUTREG32(DPI1_BASE+ 0x6C, 0x400);// OUTREG32(DPI1_BASE+ 0x74, 0x400);// OUTREG32(DPI1_BASE+ 0x8C, 0x0FFF0000);// OUTREG32(DPI1_BASE+ 0x90, 0x0FFF0000);// MASKREG32(DISPSYS_BASE + 0x60, 0x1, 0x1); // [1]: DPI0_I2X_EN // 0: DPI0 IO is single edge mode //1: DPI0 IO is dual edge mode #endif MASKREG32(DISPSYS_BASE + 0x60, 0xb03, 0xb03); //OUTREG32(DPI1_BASE+ 0x10, 0x000001A0);//DPI_CON //OUTREG32(DPI1_BASE+ 0x14, 0x00000101);//DPI_CLKCON //OUTREG32(DPI1_BASE+ 0x18, 0x02d00500);//DPI_SIZE 720x1280 //OUTREG32(DPI1_BASE+ 0x1c, 0x00000028);//DPI_TGEN_HWIDTH 40 //OUTREG32(DPI1_BASE+ 0x20, 0x01b800dc);//DPI_TGEN_HPORCH BACK:220 FRONT:440 //OUTREG32(DPI1_BASE+ 0x24, 0x00000005);//DPI_TGEN_VWIDTH_LODD 5 //OUTREG32(DPI1_BASE+ 0x28, 0x00050014);//DPI_TGEN_VPORCH_LODD BACK:20 FRONT:5 //OUTREG32(DPI1_BASE+ 0x44, 0x00001e00);//DPI_ESAV_VTIM_L WIDTH:30 lines //DPI1_ESAVVTimingControlLeft(0, 0x1E, 0, 0); //OUTREG32(DPI1_BASE+ 0x64, 0x1ead1f53);//DPI_MATRIX_COEFF_SET0 //OUTREG32(DPI1_BASE+ 0x68, 0x01320200);//DPI_MATRIX_COEFF_SET1 //OUTREG32(DPI1_BASE+ 0x6c, 0x00750259);//DPI_MATRIX_COEFF_SET2 //OUTREG32(DPI1_BASE+ 0x70, 0x1e530200);//DPI_MATRIX_COEFF_SET3 //OUTREG32(DPI1_BASE+ 0x74, 0x00001fa0);//DPI_MATRIX_COEFF_SET4 //DPI1_MatrixCoef(0x1F53, 0x1EAD, 0x0200, 0x0132, 0x0259, 0x0075, 0x0200, 0x1E53, 0x1FA0); //OUTREG32(DPI1_BASE+ 0x78, 0x00000000);//DPI_MATRIX_PREADD_SET0 //OUTREG32(DPI1_BASE+ 0x7c, 0x00000000);//DPI_MATRIX_PREADD_SET1 //DPI1_MatrixPreOffset(0, 0, 0); //OUTREG32(DPI1_BASE+ 0x80, 0x00000800);//DPI_MATRIX_POSTADD_SET0 //OUTREG32(DPI1_BASE+ 0x84, 0x00000800);//DPI_MATRIX_POSTADD_SET1 //DPI1_MatrixPostOffset(0x0800, 0, 0x0800); //OUTREG32(DPI1_BASE+ 0x88, 0x00000000);//DPI_CLPF_SETTING //DPI1_CLPFSetting(0, FALSE); //OUTREG32(DPI1_BASE+ 0x8c, 0x0f000100);//DPI_Y_LIMIT 256 - 3840 //OUTREG32(DPI1_BASE+ 0x90, 0x0f000100);//DPI_C_LIMIT 256 - 3840 //DPI1_SetChannelLimit(0x0100, 0x0F00, 0x0100, 0x0F00); //OUTREG32(DPI1_BASE+ 0x9c, 0x00000007);//DPI_EMBSYNC_SETTING //DPI1_EmbeddedSyncSetting(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE); //OUTREG32(DPI1_BASE+ 0xa8, 0x00000600);//DPI_OUTPUT_SETTING OUT_YC_MAP //DPI1_OutputSetting(DPI_OUTPUT_BIT_NUM_8BITS, FALSE, DPI_OUTPUT_CHANNEL_SWAP_RGB, DPI_OUTPUT_YC_MAP_CY); //OUTREG32(DPI1_BASE+ 0xb4, 0x11223341);//DPI_PATTERN //DPI1_EnableColorBar(); //OUTREG32(DPI1_BASE + 0x0, 0x00000001);// //DPI1_EnableClk(); #if 0 cntl = DPI1_REG->CNTL; cntl.EMBSYNC_EN = 1; OUTREG32(&DPI1_REG->CNTL, AS_UINT32(&cntl)); embsync = DPI1_REG->EMBSYNC_SETTING; embsync.ESAV_CODE_MAN = 0; embsync.EMBVSYNC_G_Y = 1; embsync.EMBVSYNC_R_CR= 1; embsync.EMBVSYNC_B_CB= 1; OUTREG32(&DPI1_REG->EMBSYNC_SETTING, AS_UINT32(&embsync)); #endif #if ENABLE_DPI1_INTERRUPT if (request_irq(MT6589_DPI_IRQ_ID, _DPI1_InterruptHandler, IRQF_TRIGGER_LOW, "mtkdpi", NULL) < 0) { DISP_LOG_PRINT(ANDROID_LOG_INFO, "DPI1", "[ERROR] fail to request DPI irq\n"); return DPI_STATUS_ERROR; } { DPI_REG_INTERRUPT enInt = DPI1_REG->INT_ENABLE; enInt.VSYNC = 1; OUTREG32(&DPI1_REG->INT_ENABLE, AS_UINT32(&enInt)); } #endif LCD_W2M_NeedLimiteSpeed(TRUE); return DPI_STATUS_OK; }