Beispiel #1
0
__s32 Disp_TVEC_Init(__u32 screen_id)
{
	__s32 ret = 0, value = 0;

	tve_clk_init(screen_id);
	tve_clk_on(screen_id);
	TVE_init(screen_id);
	tve_clk_off(screen_id);

	gdisp.screen[screen_id].dac_source[0] = DISP_TV_DAC_SRC_Y;
	gdisp.screen[screen_id].dac_source[1] = DISP_TV_DAC_SRC_PB;
	gdisp.screen[screen_id].dac_source[2] = DISP_TV_DAC_SRC_PR;
	gdisp.screen[screen_id].dac_source[3] = DISP_TV_DAC_SRC_COMPOSITE;

	ret = OSAL_Script_FetchParser_Data("tv_out_dac_para", "dac_used", &value, 1);
	if(ret == 0) {
		if(value != 0) {
			__s32 i = 0;
			char sub_key[20];

			for(i=0; i<4; i++) {
				sprintf(sub_key, "dac%d_src", i);

				ret = OSAL_Script_FetchParser_Data("tv_out_dac_para", sub_key, &value, 1);
				if(ret == 0) {
					gdisp.screen[screen_id].dac_source[i] = value;
				}
			}
		}
	}

	gdisp.screen[screen_id].tv_mode = DISP_TV_MOD_720P_50HZ;
	return DIS_SUCCESS;
}
Beispiel #2
0
__s32 bsp_disp_tv_close(__u32 screen_id)
{
	if(gdisp.screen[screen_id].status & TV_ON)
	{
	Image_close(screen_id);
	tcon1_close(screen_id);
	Disp_TVEC_Close(screen_id);

	tve_clk_off(screen_id);
	image_clk_off(screen_id, 1);
	lcdc_clk_off(screen_id);
	
#if (defined CONFIG_ARCH_SUN5I)
       __u32 scaler_index = 0;
        //disp_de_flicker_enable(screen_id, 2);	//must close immediately, because vbi may not come
		DE_BE_Set_Outitl_enable(screen_id, FALSE);
        for(scaler_index=0; scaler_index<2; scaler_index++)
        {
            if((gdisp.scaler[scaler_index].status & SCALER_USED) && (gdisp.scaler[scaler_index].screen_index == screen_id))
            {
                Scaler_Set_Outitl(scaler_index, FALSE);
            }
        }
#endif
#ifdef __LINUX_OSAL__
	{
		disp_gpio_set_t  gpio_info[1];
		__hdle gpio_pa_shutdown;
		__s32 ret;

		memset(gpio_info, 0, sizeof(disp_gpio_set_t));
		ret = OSAL_Script_FetchParser_Data("audio_para","audio_pa_ctrl", (int *)gpio_info, sizeof(disp_gpio_set_t)/sizeof(int));
		if(ret < 0) {
			DE_WRN("fetch script data audio_para.audio_pa_ctrl fail\n");
		}	else {
			gpio_pa_shutdown = OSAL_GPIO_Request(gpio_info, 1);
			if(!gpio_pa_shutdown) {
				DE_WRN("audio codec_wakeup request gpio fail!\n");
			}	else {
				OSAL_GPIO_DevWRITE_ONEPIN_DATA(gpio_pa_shutdown, 1, "audio_pa_ctrl");
			}
		}
	}
#endif
	gdisp.screen[screen_id].b_out_interlace = 0;
	gdisp.screen[screen_id].status &= TV_OFF;
	gdisp.screen[screen_id].lcdc_status &= LCDC_TCON1_USED_MASK;
	gdisp.screen[screen_id].output_type = DISP_OUTPUT_TYPE_NONE;
	gdisp.screen[screen_id].pll_use_status &= ((gdisp.screen[screen_id].pll_use_status == VIDEO_PLL0_USED)? VIDEO_PLL0_USED_MASK : VIDEO_PLL1_USED_MASK);

	Disp_set_out_interlace(screen_id);
	}
	return DIS_SUCCESS;
}
Beispiel #3
0
__s32 Disp_TVEC_Init(__u32 sel)
{
    __s32 ret = 0, value = 0;

    tve_clk_init(sel);
    tve_clk_on(sel);
	TVE_init(sel);
    tve_clk_off(sel);

    gdisp.screen[sel].dac_source[0] = DISP_TV_DAC_SRC_Y;
    gdisp.screen[sel].dac_source[1] = DISP_TV_DAC_SRC_PB;
    gdisp.screen[sel].dac_source[2] = DISP_TV_DAC_SRC_PR;
    gdisp.screen[sel].dac_source[3] = DISP_TV_DAC_SRC_COMPOSITE;

    ret = OSAL_Script_FetchParser_Data("tv_out_dac_para", "dac_used", &value, 1);
    if(ret < 0)
    {
        DE_INF("fetch script data tv_out_dac_para.dac_used fail\n");
    }
    else
    {
        DE_INF("tv_out_dac_para.dac_used=%d\n",value);

	    if(value != 0)
	    {
	        __s32 i = 0;
	        char sub_key[20];

	        for(i=0; i<4; i++)
	        {
	            sprintf(sub_key, "dac%d_src", i);

	            ret = OSAL_Script_FetchParser_Data("tv_out_dac_para", sub_key, &value, 1);
	            if(ret < 0)
	            {
	                DE_INF("fetch script data tv_out_dac_para.%s fail\n", sub_key);
	            }
	            else
	            {
	                gdisp.screen[sel].dac_source[i] = value;
	                DE_INF("tv_out_dac_para.%s = %d\n", sub_key, value);
	            }
	        }
	    }
    }

    gdisp.screen[sel].tv_mode = DISP_TV_MOD_720P_50HZ;
    return DIS_SUCCESS;
}
Beispiel #4
0
__s32 BSP_disp_tv_close(__u32 sel)
{
    if(gdisp.screen[sel].status & TV_ON)
    {
        Image_close(sel);
        TCON1_close(sel);
        Disp_TVEC_Close(sel);

        tve_clk_off(sel);
        image_clk_off(sel);
        lcdc_clk_off(sel);

#ifdef __LINUX_OSAL__
        {
            user_gpio_set_t  gpio_info[1];
            __hdle gpio_pa_shutdown;
            __s32 ret;

            memset(gpio_info, 0, sizeof(user_gpio_set_t));
            ret = OSAL_Script_FetchParser_Data("audio_para","audio_pa_ctrl", (int *)gpio_info, sizeof(user_gpio_set_t)/sizeof(int));
            if(ret < 0)
            {
                DE_WRN("fetch script data audio_para.audio_pa_ctrl fail\n");
            }
            else
            {
                gpio_pa_shutdown = OSAL_GPIO_Request(gpio_info, 1);
                if(!gpio_pa_shutdown)
                {
                    DE_WRN("audio codec_wakeup request gpio fail!\n");
                }
                else
                {
                    OSAL_GPIO_DevWRITE_ONEPIN_DATA(gpio_pa_shutdown, 1, "audio_pa_ctrl");
                }
            }
        }
#endif
		gdisp.screen[sel].b_out_interlace = 0;
        gdisp.screen[sel].status &= TV_OFF;
        gdisp.screen[sel].lcdc_status &= LCDC_TCON1_USED_MASK;
        gdisp.screen[sel].output_type = DISP_OUTPUT_TYPE_NONE;
		gdisp.screen[sel].pll_use_status &= ((gdisp.screen[sel].pll_use_status == VIDEO_PLL0_USED)? VIDEO_PLL0_USED_MASK : VIDEO_PLL1_USED_MASK);

		Disp_set_out_interlace(sel);
    }
    return DIS_SUCCESS;
}
Beispiel #5
0
__s32 BSP_disp_tv_get_interface(__u32 sel)
{
    __u8 dac[4];
    __s32 i = 0;
	__u32  ret = DISP_TV_NONE;

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_on();
    }

    for(i=0; i<4; i++)
    {
        dac[i] = TVE_get_dac_status(i);
    }

    if(dac[0]>1 || dac[1]>1 || dac[2]>1 || dac[3]>1)
    {
        DE_WRN("shor to ground\n");
    }
    else
    {
        for(i=0; i<4; i++)
        {
            if(gdisp.screen[sel].dac_source[i] == DISP_TV_DAC_SRC_COMPOSITE && dac[i] == 1)
            {
                ret |= DISP_TV_CVBS;
            }
            else if(gdisp.screen[sel].dac_source[i] == DISP_TV_DAC_SRC_Y && dac[i] == 1)
            {
                ret |= DISP_TV_YPBPR;
            }
            else if(gdisp.screen[sel].dac_source[i] == DISP_TV_DAC_SRC_LUMA && dac[i] == 1)
            {
                ret |= DISP_TV_SVIDEO;
            }
        }
    }

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_off();
    }

    return  ret;
}
Beispiel #6
0
__s32 BSP_disp_tv_get_dac_status(__u32 sel, __u32 index)
{
	__u32  ret;

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_on();
    }

	ret = TVE_get_dac_status(index);

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_off();
    }

    return  ret;
}
Beispiel #7
0
__s32 BSP_disp_tv_close(__u32 sel)
{
    if(gdisp.screen[sel].status & TV_ON)
    {
        TCON1_close(sel);
        Disp_TVEC_Close();

        tve_clk_off();
        image_clk_off(sel);
        lcdc_clk_off(sel);

        gdisp.screen[sel].status &= TV_OFF;
        gdisp.screen[sel].lcdc_status &= LCDC_TCON1_USED_MASK;
        gdisp.screen[sel].output_type = DISP_OUTPUT_TYPE_NONE;
		gdisp.screen[sel].pll_use_status &= ((gdisp.screen[sel].pll_use_status == VIDEO_PLL0_USED)? VIDEO_PLL0_USED_MASK : VIDEO_PLL1_USED_MASK);
    }
    return DIS_SUCCESS;
}
Beispiel #8
0
__s32 bsp_disp_vga_close(__u32 screen_id)
{
	if(gdisp.screen[screen_id].status & VGA_ON) {
		Image_close(screen_id);
		tcon1_close(screen_id);
		Disp_TVEC_Close(screen_id);

		tve_clk_off(screen_id);
		image_clk_off(screen_id, 1);
		lcdc_clk_off(screen_id);

		gdisp.screen[screen_id].b_out_interlace = 0;
		gdisp.screen[screen_id].status &= VGA_OFF;
		gdisp.screen[screen_id].lcdc_status &= LCDC_TCON1_USED_MASK;
		gdisp.screen[screen_id].output_type = DISP_OUTPUT_TYPE_NONE;
		gdisp.screen[screen_id].pll_use_status &= ((gdisp.screen[screen_id].pll_use_status == VIDEO_PLL0_USED)? VIDEO_PLL0_USED_MASK : VIDEO_PLL1_USED_MASK);
	}
	return DIS_SUCCESS;
}
Beispiel #9
0
__s32 BSP_disp_tv_set_dac_source(__u32 sel, __u32 index, __disp_tv_dac_source source)
{
	__u32  ret;

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_on();
    }

	ret = TVE_dac_set_source(index, source);

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_off();
    }

    gdisp.screen[sel].dac_source[index] = source;
    
    return  ret;
}
Beispiel #10
0
__s32 Disp_TVEC_Init(void)
{
    tve_clk_init();
    disp_clk_cfg(0,DISP_OUTPUT_TYPE_TV,DISP_TV_MOD_720P_50HZ);
    tve_clk_on();
	TVE_init();
    tve_clk_off();

    gdisp.screen[0].dac_source[0] = DISP_TV_DAC_SRC_COMPOSITE;
    gdisp.screen[0].dac_source[1] = DISP_TV_DAC_SRC_Y;
    gdisp.screen[0].dac_source[2] = DISP_TV_DAC_SRC_PB;
    gdisp.screen[0].dac_source[3] = DISP_TV_DAC_SRC_PR;
    gdisp.screen[1].dac_source[0] = DISP_TV_DAC_SRC_COMPOSITE;
    gdisp.screen[1].dac_source[1] = DISP_TV_DAC_SRC_Y;
    gdisp.screen[1].dac_source[2] = DISP_TV_DAC_SRC_PB;
    gdisp.screen[1].dac_source[3] = DISP_TV_DAC_SRC_PR;
    
    gdisp.screen[0].tv_mode = DISP_TV_MOD_720P_50HZ;
    gdisp.screen[1].tv_mode = DISP_TV_MOD_720P_50HZ;
    return DIS_SUCCESS;
}
Beispiel #11
0
__s32 BSP_disp_vga_close(__u32 sel)
{
	if (gdisp.screen[sel].status & VGA_ON) {
		Image_close(sel);
		TCON1_close(sel);
		Disp_TVEC_Close(sel);

		tve_clk_off(sel);
		image_clk_off(sel);
		lcdc_clk_off(sel);
		Disp_lcdc_pin_cfg(sel, DISP_OUTPUT_TYPE_VGA, 0);

		gdisp.screen[sel].b_out_interlace = 0;
		gdisp.screen[sel].status &= ~VGA_ON;
		gdisp.screen[sel].lcdc_status &= ~LCDC_TCON1_USED;
		gdisp.screen[sel].output_type = DISP_OUTPUT_TYPE_NONE;
		gdisp.screen[sel].pll_use_status &=
			((gdisp.screen[sel].pll_use_status == VIDEO_PLL0_USED) ?
			 ~VIDEO_PLL0_USED : ~VIDEO_PLL1_USED);
	}
	return DIS_SUCCESS;
}
__s32 BSP_disp_tv_close(__u32 sel)
{
	if (gdisp.screen[sel].status & TV_ON) {
		Image_close(sel);
		TCON1_close(sel);
		Disp_TVEC_Close(sel);

		tve_clk_off(sel);
		image_clk_off(sel);
		lcdc_clk_off(sel);

		if (sunxi_is_sun5i()) {
			int scaler_index;

			Disp_de_flicker_enable(sel, 2);
			/* must close immediately, because vbi may not come */
			DE_BE_Set_Outitl_enable(sel, FALSE);
			for (scaler_index = 0; scaler_index < 2; scaler_index++)
				if ((gdisp.scaler[scaler_index].status &
				     SCALER_USED) &&
				    (gdisp.scaler[scaler_index].screen_index ==
				     sel))
					Scaler_Set_Outitl(scaler_index, FALSE);
		}

		{
			user_gpio_set_t gpio_info[1];
			__hdle gpio_pa_shutdown;
			__s32 ret;

			memset(gpio_info, 0, sizeof(user_gpio_set_t));
			ret =
			    script_parser_fetch("audio_para", "audio_pa_ctrl",
						(int *)gpio_info,
						sizeof(user_gpio_set_t) /
						sizeof(int));
			if (ret < 0) {
				DE_WRN("fetch script data "
				       "audio_para.audio_pa_ctrl fail\n");
			} else {
				gpio_pa_shutdown =
					OSAL_GPIO_Request(gpio_info, 1);
				if (!gpio_pa_shutdown) {
					DE_WRN("audio codec_wakeup request "
					       "gpio fail!\n");
				} else {
					OSAL_GPIO_DevWRITE_ONEPIN_DATA
						(gpio_pa_shutdown, 1,
						 "audio_pa_ctrl");
				}
			}
		}

		gdisp.screen[sel].b_out_interlace = 0;
		gdisp.screen[sel].status &= ~TV_ON;
		gdisp.screen[sel].lcdc_status &= ~LCDC_TCON1_USED;
		gdisp.screen[sel].output_type = DISP_OUTPUT_TYPE_NONE;
		gdisp.screen[sel].pll_use_status &=
		    ((gdisp.screen[sel].pll_use_status == VIDEO_PLL0_USED) ?
		     ~VIDEO_PLL0_USED : ~VIDEO_PLL1_USED);

		Disp_set_out_interlace(sel);
	}
	return DIS_SUCCESS;
}