Exemplo n.º 1
0
s32 disp_hdmi_disable(struct disp_hdmi* hdmi)
{
	struct disp_hdmi_private_data *hdmip = disp_hdmi_get_priv(hdmi);
	if((NULL == hdmi) || (NULL == hdmip)) {
	    DE_WRN("hdmi set func null  hdl!\n");
	    return DIS_FAIL;
	}

	if(hdmip->enabled == 0) {
		DE_WRN("hdmi%d is already closed\n", hdmi->channel_id);
		return DIS_FAIL;
	}

	disp_al_hdmi_disable(hdmi->channel_id);
	hdmi_clk_disable(hdmi);

	if(hdmip->hdmi_func.hdmi_close == NULL)
	    return -1;

	hdmip->hdmi_func.hdmi_close();

#if defined(__LINUX_PLAT__)
	{
	unsigned long flags;
	spin_lock_irqsave(&hdmi_data_lock, flags);
#endif
	hdmip->enabled = 0;
#if defined(__LINUX_PLAT__)
	spin_unlock_irqrestore(&hdmi_data_lock, flags);
	}
#endif

	return 0;
}
Exemplo n.º 2
0
s32 hdmi_clk_disable(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;
	}

	disp_al_hdmi_disable(hdmi->channel_id);

	hdmip->hdmi_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->hdmi_clk.clk);
	if(hdmip->hdmi_clk.enabled == 1) {
		OSAL_CCMU_MclkOnOff(hdmip->hdmi_clk.h_clk, CLK_OFF);

#if defined(__LINUX_PLAT__)
		{
			unsigned long flags;
			spin_lock_irqsave(&hdmi_data_lock, flags);
#endif
				hdmip->hdmi_clk.enabled = 0;
#if defined(__LINUX_PLAT__)
			spin_unlock_irqrestore(&hdmi_data_lock, flags);
		}
#endif
	}

	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 == 1) {
		OSAL_CCMU_MclkOnOff(hdmip->hdmi_ddc_clk.h_clk, CLK_OFF);

#if defined(__LINUX_PLAT__)
		{
			unsigned long flags;
			spin_lock_irqsave(&hdmi_data_lock, flags);
#endif
				hdmip->hdmi_ddc_clk.enabled = 0;
#if defined(__LINUX_PLAT__)
			spin_unlock_irqrestore(&hdmi_data_lock, flags);
		}
#endif
	}

	OSAL_CCMU_CloseMclk(hdmip->hdmi_ddc_clk.h_clk);
	hdmip->lcd_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->lcd_clk.clk);
	OSAL_CCMU_MclkOnOff(hdmip->lcd_clk.h_clk, CLK_OFF);

	OSAL_CCMU_CloseMclk(hdmip->lcd_clk.h_clk);

	if(hdmip->drc_clk.clk)
		disp_al_hdmi_clk_disable(hdmip->drc_clk.clk);

	return 0;
}
Exemplo n.º 3
0
static s32 hdmi_clk_disable(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;
	}

	disp_al_hdmi_disable(hdmi->channel_id);

	hdmip->lcd_clk.h_clk = OSAL_CCMU_OpenMclk(hdmip->lcd_clk.clk);
	OSAL_CCMU_MclkOnOff(hdmip->lcd_clk.h_clk, CLK_OFF);
	OSAL_CCMU_CloseMclk(hdmip->lcd_clk.h_clk);

	if(hdmip->drc_clk.clk)
		disp_al_hdmi_clk_disable(hdmip->drc_clk.clk);

	return 0;
}
Exemplo n.º 4
0
static s32 disp_hdmi_disable(struct disp_device* hdmi)
{
	struct disp_device_private_data *hdmip = disp_hdmi_get_priv(hdmi);
	unsigned long flags;
	struct disp_manager *mgr = NULL;

	if((NULL == hdmi) || (NULL == hdmip)) {
	    DE_WRN("hdmi set func null  hdl!\n");
	    return DIS_FAIL;
	}

	mgr = hdmi->manager;
	if(!mgr) {
		DE_WRN("hdmi%d's mgr is NULL\n", hdmi->disp);
		return DIS_FAIL;
	}

	if(hdmip->enabled == 0) {
		DE_WRN("hdmi%d is already closed\n", hdmi->disp);
		return DIS_FAIL;
	}

	disp_al_hdmi_disable(hdmi->disp);
	hdmi_clk_disable(hdmi);

	if(hdmip->hdmi_func.hdmi_close == NULL)
	    return -1;

	hdmip->hdmi_func.hdmi_close();

	if(mgr->disable)
		mgr->disable(mgr);

	disp_sys_irqlock((void*)&hdmi_data_lock, &flags);
	hdmip->enabled = 0;
	disp_sys_irqunlock((void*)&hdmi_data_lock, &flags);
	disp_sys_disable_irq(hdmip->irq_no);
	disp_sys_unregister_irq(hdmip->irq_no, disp_hdmi_event_proc,(void*)hdmi->disp);

	return 0;
}