Ejemplo n.º 1
0
static s32 disp_hdmi_init(struct disp_hdmi*  hdmi)
{
	s32 ret;
	u32 value = 0;
	struct disp_hdmi_private_data *hdmip = disp_hdmi_get_priv(hdmi);
	if(!hdmi || !hdmip) {
	    DE_WRN("hdmi init null hdl!\n");
	    return DIS_FAIL;
	}

	if(!disp_al_query_hdmi_mod(hdmi->channel_id)) {
		DE_WRN("hdmi %d is not register\n", hdmi->channel_id);
		return DIS_FAIL;
	}

	ret = OSAL_Script_FetchParser_Data("hdmi_para", "hdmi_4k", &value, 1);

	if(ret == 0)
		hdmip->support_4k = value;

	if((NULL != hdmi->p_sw_init_flag) && (0 != *(hdmi->p_sw_init_flag))) {
		disp_al_hdmi_init_sw(hdmi->channel_id, hdmip->support_4k);
	} else {
		hdmi_clk_init(hdmi);
		disp_al_hdmi_init(hdmi->channel_id, hdmip->support_4k);
	}

	return 0;
}
Ejemplo n.º 2
0
s32 disp_hdmi_exit(struct disp_hdmi* hdmi)
{
	struct disp_hdmi_private_data *hdmip = disp_hdmi_get_priv(hdmi);
	if(!hdmi || !hdmip) {
	    DE_WRN("hdmi init null hdl!\n");
	    return DIS_FAIL;
	}

	if(!disp_al_query_hdmi_mod(hdmi->channel_id)) {
		DE_WRN("hdmi %d is not register\n", hdmi->channel_id);
		return DIS_FAIL;
	}

	disp_al_hdmi_exit(hdmi->channel_id);
	hdmi_clk_exit(hdmi);

    return 0;
}
Ejemplo n.º 3
0
struct disp_hdmi_private_data *disp_hdmi_get_priv(struct disp_hdmi *hdmi)
{
	if(NULL == hdmi) {
		DE_WRN("NULL hdl!\n");
		return NULL;
	}

	if(!disp_al_query_hdmi_mod(hdmi->channel_id)) {
		DE_WRN("hdmi %d is not registered\n", hdmi->channel_id);
		return NULL;
	}

	if(!(bsp_disp_feat_get_supported_output_types(hdmi->channel_id) & DISP_OUTPUT_TYPE_HDMI)) {
	    DE_WRN("screen %d do not support HDMI TYPE!\n", hdmi->channel_id);
	    return NULL;
	}

	return &hdmi_private[hdmi->channel_id];
}
Ejemplo n.º 4
0
struct disp_hdmi* disp_get_hdmi(u32 screen_id)
{
	u32 num_screens;

	num_screens = bsp_disp_feat_get_num_screens();
	if(screen_id >= num_screens) {
		DE_WRN("screen_id %d out of range\n", screen_id);
		return NULL;
	    }

	if(!(bsp_disp_feat_get_supported_output_types(screen_id) & DISP_OUTPUT_TYPE_HDMI)) {
	    DE_WRN("screen_id %d do not support HDMI TYPE!\n", screen_id);
	    return NULL;
	    }

	if(!disp_al_query_hdmi_mod(screen_id)) {
		DE_WRN("hdmi %d is not registered\n", screen_id);
		return NULL;
	}

	return &hdmis[screen_id];
}
Ejemplo n.º 5
0
s32 disp_init_hdmi(__disp_bsp_init_para * para)
{
	s32 ret;
	s32 value;
	//get sysconfig hdmi_used
	ret = OSAL_Script_FetchParser_Data("hdmi_para", "hdmi_used", &value, 1);
	if(ret == 0)
		hdmi_used = value;

	if(hdmi_used) {
		u32 num_screens;
		u32 screen_id;
		struct disp_hdmi* hdmi;
		struct disp_hdmi_private_data* hdmip;

		DE_INF("disp_init_hdmi\n");
#if defined(__LINUX_PLAT__)
		spin_lock_init(&hdmi_data_lock);
#endif

		num_screens = bsp_disp_feat_get_num_screens();
		hdmis = (struct disp_hdmi *)OSAL_malloc(sizeof(struct disp_hdmi) * num_screens);
		if(NULL == hdmis) {
			DE_WRN("malloc memory fail!\n");
			return DIS_FAIL;
		}

		hdmi_private = (struct disp_hdmi_private_data *)OSAL_malloc(sizeof(struct disp_hdmi_private_data) * num_screens);
		if(NULL == hdmi_private) {
			DE_WRN("malloc memory fail!\n");
			return DIS_FAIL;
		}

		for(screen_id=0; screen_id<num_screens; screen_id++) {
			hdmi = &hdmis[screen_id];
			hdmip = &hdmi_private[screen_id];

			if(!disp_al_query_hdmi_mod(screen_id)) {
				DE_WRN("hdmi mod %d is not registered\n", screen_id);
				continue;
			}

			if(!(bsp_disp_feat_get_supported_output_types(screen_id) & DISP_OUTPUT_TYPE_HDMI)) {
			    DE_WRN("screen %d do not support HDMI TYPE!\n", screen_id);
			    continue;
			}

			switch(screen_id) {
			case 0:
				hdmi->channel_id = 0;
				hdmi->name = "hdmi0";
				hdmi->type = DISP_OUTPUT_TYPE_HDMI;
				hdmip->hdmi_clk.clk = MOD_CLK_HDMI;

				hdmip->hdmi_ddc_clk.clk = MOD_CLK_HDMI_DDC;
				hdmip->lcd_clk.clk = MOD_CLK_LCD0CH1;
				hdmip->drc_clk.clk = MOD_CLK_IEPDRC0;
				hdmip->drc_clk.clk_div = 3;
				break;

			case 1:
				hdmi->channel_id = 1;
				hdmi->name = "hdmi1";
				hdmi->type = DISP_OUTPUT_TYPE_HDMI;
				hdmip->hdmi_clk.clk = MOD_CLK_HDMI;
				hdmip->hdmi_ddc_clk.clk = MOD_CLK_HDMI_DDC;
				hdmip->lcd_clk.clk = MOD_CLK_LCD1CH1;
				hdmip->drc_clk.clk = MOD_CLK_IEPDRC1;
				hdmip->drc_clk.clk_div = 3;
				break;

			case 2:
				break;

			default :
				break;
				}
				hdmip->mode = DISP_TV_MOD_720P_50HZ;

				hdmi->init = disp_hdmi_init;
				hdmi->exit = disp_hdmi_exit;

				hdmi->set_func = disp_hdmi_set_func;
				hdmi->enable = disp_hdmi_enable;
				hdmi->disable = disp_hdmi_disable;
				hdmi->is_enabled = disp_hdmi_is_enabled;
				hdmi->set_mode = disp_hdmi_set_mode;
				hdmi->get_mode = disp_hdmi_get_mode;
				hdmi->check_support_mode = disp_hdmi_check_support_mode;
				hdmi->get_input_csc = disp_hdmi_get_input_csc;
				hdmi->hdmi_get_HPD_status = disp_hdmi_get_HPD_status;

				hdmi->init(hdmi);
		}
	}
	return 0;
}