s32 hdmi_clk_config(struct disp_hdmi *hdmi) { // u32 pll_freq; // u32 clk_div; struct disp_hdmi_private_data *hdmip = disp_hdmi_get_priv(hdmi); if(!hdmi || !hdmip) { DE_WRN("hdmi clk init null hdl!\n"); return DIS_FAIL; } //set hdmi clk hdmip->hdmi_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->hdmi_clk.clk); if(hdmip->hdmi_clk.enabled == 0) { OSAL_CCMU_MclkOnOff(hdmip->hdmi_clk.h_clk, CLK_ON); #if defined(__LINUX_PLAT__) { unsigned long flags; spin_lock_irqsave(&hdmi_data_lock, flags); #endif hdmip->hdmi_clk.enabled = 1; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&hdmi_data_lock, flags); } #endif } OSAL_CCMU_SetMclkFreq(hdmip->hdmi_clk.h_clk, hdmip->video_info->pixel_clk * (hdmip->video_info->avi_pr + 1)); OSAL_CCMU_CloseMclk(hdmip->hdmi_clk.h_clk); hdmip->hdmi_ddc_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->hdmi_ddc_clk.clk); if(hdmip->hdmi_ddc_clk.enabled == 0) { OSAL_CCMU_MclkOnOff(hdmip->hdmi_ddc_clk.h_clk, CLK_ON); #if defined(__LINUX_PLAT__) { unsigned long flags; spin_lock_irqsave(&hdmi_data_lock, flags); #endif hdmip->hdmi_ddc_clk.enabled = 1; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&hdmi_data_lock, flags); } #endif } OSAL_CCMU_CloseMclk(hdmip->hdmi_ddc_clk.h_clk); //set lcd clk hdmip->lcd_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->lcd_clk.clk); OSAL_CCMU_SetMclkSrc(hdmip->lcd_clk.h_clk); //OSAL_CCMU_SetSrcFreq(hdmip->lcd_clk.clk, 0); OSAL_CCMU_SetMclkFreq(hdmip->lcd_clk.h_clk, hdmip->video_info->pixel_clk * (hdmip->video_info->avi_pr + 1)); OSAL_CCMU_MclkOnOff(hdmip->lcd_clk.h_clk, CLK_ON); OSAL_CCMU_CloseMclk(hdmip->lcd_clk.h_clk); return 0; }
static s32 hdmi_clk_config(struct disp_hdmi *hdmi) { struct disp_hdmi_private_data *hdmip = disp_hdmi_get_priv(hdmi); if(!hdmi || !hdmip) { DE_WRN("hdmi clk init null hdl!\n"); return DIS_FAIL; } //set hdmi clk hdmip->hdmi_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->hdmi_clk.clk); OSAL_CCMU_SetMclkFreq(hdmip->hdmi_clk.h_clk, hdmip->video_info->pixel_clk * (hdmip->video_info->avi_pr + 1)); OSAL_CCMU_CloseMclk(hdmip->hdmi_clk.h_clk); //set lcd clk hdmip->lcd_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->lcd_clk.clk); OSAL_CCMU_SetMclkSrc(hdmip->lcd_clk.h_clk); OSAL_CCMU_SetMclkFreq(hdmip->lcd_clk.h_clk, hdmip->video_info->pixel_clk * (hdmip->video_info->avi_pr + 1)); OSAL_CCMU_MclkOnOff(hdmip->lcd_clk.h_clk, CLK_ON); OSAL_CCMU_CloseMclk(hdmip->lcd_clk.h_clk); return 0; }