Esempio n. 1
0
__s32 BSP_disp_set_hue(__u32 sel, __u32 hue)
{
    gdisp.screen[sel].hue = hue;
   DE_BE_Set_Enhance_ex(sel, gdisp.screen[sel].out_csc, gdisp.screen[sel].out_color_range, gdisp.screen[sel].enhance_en,
            gdisp.screen[sel].bright, gdisp.screen[sel].contrast, gdisp.screen[sel].saturation, gdisp.screen[sel].hue);

    return DIS_SUCCESS;
}
Esempio n. 2
0
static __s32 BSP_disp_set_output_csc_sun4i(__u32 sel,
					   __disp_output_type_t type)
{
	__disp_color_range_t out_color_range = DISP_COLOR_RANGE_0_255;
	__csc_t out_csc = DE_RGB;
	__u32 enhance_en, bright, contrast, saturation, hue;

	enhance_en = gdisp.screen[sel].enhance_en;
	bright = gdisp.screen[sel].bright;
	contrast = gdisp.screen[sel].contrast;
	saturation = gdisp.screen[sel].saturation;
	hue = gdisp.screen[sel].hue;

	if (type == DISP_OUTPUT_TYPE_HDMI) {
		__s32 ret = 0;
		__s32 value = 0;

		out_color_range = DISP_COLOR_RANGE_16_255;
#ifdef YUV_COLORSPACE /* Fix me */
		out_csc = DE_YUV_HDMI;
#endif

		ret =
		    script_parser_fetch("disp_init", "screen0_out_color_range",
					&value, 1);
		if (ret < 0) {
			DE_INF("fetch script data "
			       "disp_init.screen0_out_color_range fail\n");
		} else {
			out_color_range = value;
			DE_INF("screen0_out_color_range = %d\n", value);
		}
	} else if (type == DISP_OUTPUT_TYPE_TV) {
		out_csc = DE_YUV_TV;
	}

	else if (type == DISP_OUTPUT_TYPE_LCD) {
		if (enhance_en == 0) {
			enhance_en = 1;

			bright = 50;
			contrast = 50;
			saturation = 57;
			hue = 50;
		}
	}

	gdisp.screen[sel].out_color_range = out_color_range;
	gdisp.screen[sel].out_csc = out_csc;

	DE_BE_Set_Enhance_ex(sel, gdisp.screen[sel].out_csc,
			     gdisp.screen[sel].out_color_range, enhance_en,
			     bright, contrast, saturation, hue);

	return DIS_SUCCESS;
}
Esempio n. 3
0
__s32 BSP_disp_set_output_csc(__u32 sel, __disp_output_type_t type)
{
    __disp_color_range_t out_color_range = DISP_COLOR_RANGE_0_255;
    __u32 out_csc = 0;
    __u32 enhance_en, bright, contrast, saturation, hue;

    enhance_en = gdisp.screen[sel].enhance_en;
    bright = gdisp.screen[sel].bright;
    contrast = gdisp.screen[sel].contrast;
    saturation = gdisp.screen[sel].saturation;
    hue = gdisp.screen[sel].hue;

    if(type == DISP_OUTPUT_TYPE_HDMI)
    {
        __s32 ret = 0;
        __s32 value = 0;
        
        out_color_range = DISP_COLOR_RANGE_16_255;

        ret = OSAL_Script_FetchParser_Data("disp_init", "screen0_out_color_range", &value, 1);
        if(ret < 0)
        {
            DE_INF("fetch script data disp_init.screen0_out_color_range fail\n");
        }
        else
        {
            out_color_range = value;
            DE_INF("screen0_out_color_range = %d\n", value);
        }
        out_csc = 2;
    }
    else if(type == DISP_OUTPUT_TYPE_TV)
    {
        out_csc = 1;
    }
    else if(type == DISP_OUTPUT_TYPE_LCD)
    {
        if(enhance_en == 0)
        {
            enhance_en = 1;
            
            bright = gdisp.screen[sel].lcd_cfg.lcd_bright;
            contrast = gdisp.screen[sel].lcd_cfg.lcd_contrast;
            saturation = gdisp.screen[sel].lcd_cfg.lcd_saturation;
            hue = gdisp.screen[sel].lcd_cfg.lcd_hue;
        }
    }

   gdisp.screen[sel].out_color_range = out_color_range;
   gdisp.screen[sel].out_csc = out_csc;

   DE_BE_Set_Enhance_ex(sel, gdisp.screen[sel].out_csc, gdisp.screen[sel].out_color_range, enhance_en, bright, contrast, saturation, hue);

    return DIS_SUCCESS;
}
Esempio n. 4
0
__s32 disp_drc_start_video_mode(__u32 screen_id)
{
    gdisp.screen[screen_id].drc.mode = IEP_DRC_MODE_VIDEO;
    if(bsp_disp_drc_get_enable(screen_id) == 1)	{
        bsp_disp_cfg_start(screen_id);
        DE_BE_Set_Enhance_ex(screen_id, 3, DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
        IEP_Drc_Set_Mode(screen_id,gdisp.screen[screen_id].drc.mode);
        bsp_disp_cfg_finish(screen_id);
    }
    return DIS_SUCCESS;
}
Esempio n. 5
0
//todo : csc->set_mode   or set_mode->csc?
__s32 bsp_disp_drc_enable(__u32 screen_id, __u32 en)
{
    if((DISP_OUTPUT_TYPE_LCD == bsp_disp_get_output_type(screen_id)) && disp_drc_get_support(screen_id))	{
        __iep_drc_t *drc;

        drc = &gdisp.screen[screen_id].drc;

        if((1 == en) && (0 == drc->enable))	{
            IEP_Drc_Set_Imgsize(screen_id, bsp_disp_get_screen_width(screen_id), bsp_disp_get_screen_height(screen_id));
            IEP_Drc_Set_Winodw(screen_id, drc->rect);
            IEP_Drc_Set_Mode(screen_id,drc->mode);
            bsp_disp_cfg_start(screen_id);
            /* video mode */
            if(drc->mode == IEP_DRC_MODE_VIDEO) {
                //todo?  yuv output
                DE_BE_Set_Enhance_ex(screen_id, 3, DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            /* UI mode */
            else {
                DE_BE_Set_Enhance_ex(screen_id, 0,DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            IEP_Drc_Enable(screen_id,TRUE);
            bsp_disp_cfg_finish(screen_id);
            gdisp.screen[screen_id].drc.enable = 1;
        } else if((0 == en) && (1 == drc->enable)) {
            bsp_disp_cfg_start(screen_id);
            IEP_Drc_Enable(screen_id,en);
            /* video mode */
            if(drc->mode == IEP_DRC_MODE_VIDEO) {
                //todo? change to RGB output
                DE_BE_Set_Enhance_ex(screen_id, 0,DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            bsp_disp_cfg_finish(screen_id);
            gdisp.screen[screen_id].drc.enable = 0;
        }

        return DIS_SUCCESS;
    }

    return DIS_NOT_SUPPORT;
}
Esempio n. 6
0
__s32 BSP_disp_enhance_enable(__u32 sel, __bool enable)
{
#ifndef CONFIG_ARCH_SUN5I
	gdisp.screen[sel].enhance_en = enable;

	DE_BE_Set_Enhance_ex(sel, gdisp.screen[sel].out_csc,
			     gdisp.screen[sel].out_color_range,
			     gdisp.screen[sel].enhance_en,
			     gdisp.screen[sel].bright,
			     gdisp.screen[sel].contrast,
			     gdisp.screen[sel].saturation,
			     gdisp.screen[sel].hue);
#endif

	return DIS_SUCCESS;
}
Esempio n. 7
0
__s32 BSP_disp_set_contrast(__u32 sel, __u32 contrast)
{
	gdisp.screen[sel].contrast = contrast;

#ifndef CONFIG_ARCH_SUN5I
	DE_BE_Set_Enhance_ex(sel, gdisp.screen[sel].out_csc,
			     gdisp.screen[sel].out_color_range,
			     gdisp.screen[sel].enhance_en,
			     gdisp.screen[sel].bright,
			     gdisp.screen[sel].contrast,
			     gdisp.screen[sel].saturation,
			     gdisp.screen[sel].hue);
#else
	BSP_disp_set_output_csc(sel, gdisp.screen[sel].output_type,
				gdisp.screen[sel].iep_status & DRC_USED);
#endif

	return DIS_SUCCESS;
}
Esempio n. 8
0
__s32 bsp_disp_set_output_csc(__u32 screen_id, __disp_out_csc_type_t out_type, __u32 drc_csc)
{
	__disp_color_range_t out_color_range = DISP_COLOR_RANGE_0_255;
	__u32 out_csc = 0;
	__u32 enhance_en, bright, contrast, saturation, hue;

	enhance_en = gdisp.screen[screen_id].enhance_en;
	bright = gdisp.screen[screen_id].bright;
	contrast = gdisp.screen[screen_id].contrast;
	saturation = gdisp.screen[screen_id].saturation;
	hue = gdisp.screen[screen_id].hue;

	if(out_type == DISP_OUT_CSC_TYPE_HDMI_YUV) {
		__s32 ret = 0;
		__s32 value = 0;

		out_color_range = DISP_COLOR_RANGE_16_255;

		ret = OSAL_Script_FetchParser_Data("disp_init", "screen0_out_color_range", &value, 1);
		if(ret < 0) {
			DE_INF("fetch script data disp_init.screen0_out_color_range fail\n");
		}	else {
			out_color_range = value;
			DE_INF("screen0_out_color_range = %d\n", value);
		}
		out_csc = 2;
	} else if(out_type == DISP_OUT_CSC_TYPE_HDMI_RGB) {
		__s32 ret = 0;
		__s32 value = 0;

		out_color_range = DISP_COLOR_RANGE_16_255;

		ret = OSAL_Script_FetchParser_Data("disp_init", "screen0_out_color_range", &value, 1);
		if(ret < 0)	{
			DE_INF("fetch script data disp_init.screen0_out_color_range fail\n");
		}	else {
			out_color_range = value;
			DE_INF("screen0_out_color_range = %d\n", value);
		}
		out_csc = 0;
	}	else if(out_type == DISP_OUT_CSC_TYPE_TV) {
		out_csc = 1;
	}	else if(out_type == DISP_OUT_CSC_TYPE_LCD) {
		if(enhance_en == 0)
		{
		enhance_en = 1;
		bright = 50;//gdisp.screen[screen_id].lcd_cfg.lcd_bright;
		contrast = 50;//gdisp.screen[screen_id].lcd_cfg.lcd_contrast;
		saturation = 57;//gdisp.screen[screen_id].lcd_cfg.lcd_saturation;
		hue = 50;//gdisp.screen[screen_id].lcd_cfg.lcd_hue;
		}
		out_csc = 0;
	}

	/* if drc csc eq 1, indicate yuv for drc */
	if(drc_csc) {
		out_csc = 3;
	}

	gdisp.screen[screen_id].out_color_range = out_color_range;
	gdisp.screen[screen_id].out_csc = out_csc;

	DE_BE_Set_Enhance_ex(screen_id, gdisp.screen[screen_id].out_csc, gdisp.screen[screen_id].out_color_range, enhance_en, bright, contrast, saturation, hue);

	return DIS_SUCCESS;
}