6410的eboot阶段av输出

修改在main.c中显示的函数。

1、要注意打开tv的电源。6410中tv输出的电源是独立的。

2、在init.c函数中有可能有设置tv的电源(一般是在oeminit函数中),如果有设置可以要做相应修改。由于在eboot阶段已经对电源有设置,可以去掉避免重复初始化。

3、这样修改需要添加一些lib依赖,可以在source中添加。

static void InitializeDisplay(void)
{
    tDevInfo RGBDevInfo;
    DWORD type;

    volatile S3C6410_GPIO_REG *pGPIOReg = (S3C6410_GPIO_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_GPIO, FALSE);
    volatile S3C6410_DISPLAY_REG *pDispReg = (S3C6410_DISPLAY_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_DISPLAY, FALSE);
    volatile S3C6410_SPI_REG *pSPIReg = (S3C6410_SPI_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_SPI0, FALSE);
    volatile S3C6410_MSMIF_REG *pMSMIFReg = (S3C6410_MSMIF_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_MSMIF_SFR, FALSE);
    volatile S3C6410_SYSCON_REG *pSysConReg = (S3C6410_SYSCON_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_SYSCON, FALSE);

 //tv
 volatile S3C6410_POST_REG *pPostReg = (S3C6410_POST_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_POST, FALSE);
 volatile S3C6410_ROTATOR_REG *pRotatorReg = (S3C6410_ROTATOR_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_ROTATOR, FALSE);
 volatile S3C6410_TVSC_REG *pTVSCReg = (S3C6410_TVSC_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_TVSC, FALSE);
 volatile S3C6410_TVENC_REG *pTVEncReg = (S3C6410_TVENC_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_TVENC, FALSE);
 

 

    EdbgOutputDebugString("[Eboot] ++InitializeDisplay()\r\n");

    // Initialize Display Power Gating
//     if(!(pSysConReg->BLK_PWR_STAT & (1<<4))) {
//         pSysConReg->NORMAL_CFG |= (1<<14);
//         while(!(pSysConReg->BLK_PWR_STAT & (1<<4)));
//         }
 // Initialize tv Power Gating打开tv输出电源
 if(!(pSysConReg->BLK_PWR_STAT & (1<<3))) {
  pSysConReg->NORMAL_CFG |= (1<<13);
  while(!(pSysConReg->BLK_PWR_STAT & (1<<3)));
 }

    // Initialize Virtual Address
    LDI_initialize_register_address((void *)pSPIReg, (void *)pDispReg, (void *)pGPIOReg);
    Disp_initialize_register_address((void *)pDispReg, (void *)pMSMIFReg, (void *)pGPIOReg);
 //tv
 Post_initialize_register_address((void *)pPostReg);
 Rotator_initialize_register_address((void *)pRotatorReg);
 TVSC_initialize_register_address((void *)pTVSCReg);
 TVEnc_initialize_register_address((void *)pTVEncReg, (void *)pGPIOReg);

    //add by kreal
   
   //end kreal   
   
   
    // Get RGB Interface Information from LDI Library
    LDI_fill_output_device_information(&RGBDevInfo);

    // Setup Output Device Information
    Disp_set_output_device_information(&RGBDevInfo);

    // Initialize Display Controller
    //Disp_initialize_output_interface(DISP_VIDOUT_RGBIF);

 Disp_set_output_TV_information(720, 480);//初始化diaplay control要用到的一些变量(参数是将tv输出设置成720*480)
 Disp_initialize_output_interface(1);//display control的初始化
 TVSC_initialize(1, 1, 7, 720, 480, 720, 480, 0, 0, 7, 1440, 480, 1440, 480, 0, 0);//tv scaler的寄存器(参数是见tv输出设置成720*480的)
 TVEnc_initialize(0, 0, 720, 480);//初始化tv encode的一些寄存器
 TVEnc_output_onoff(1);
 TVSC_enable_interrupt();
 TVSC_processing_start();
 Disp_set_window_mode(3, 5, 720, 480, 0, 0);//设置display的一些信息
 //Disp_set_framebuffer(1, 0x56800000);
 //Disp_window_onfoff(1, 1);
 //Disp_set_frame_interrupt(3);
 //Disp_enable_frame_interrupt();
 
 lcd_high = 480;
 lcd_width = 720;

#if      (LCD_BPP == 16)
    Disp_set_window_mode(DISP_WIN1_DMA, DISP_16BPP_565, lcd_width, lcd_high, 0, 0);
#elif    (LCD_BPP == 32)    // XRGB format (RGB888)
    Disp_set_window_mode(DISP_WIN1_DMA, DISP_24BPP_888, lcd_width, lcd_high, 0, 0);
#else
    EdbgOutputDebugString("[Eboot:ERR] InitializeDisplay() : Unknown Color Depth %d bpp\r\n", LCD_BPP);
#endif

    Disp_set_framebuffer(DISP_WIN1, EBOOT_FRAMEBUFFER_PA_START);
    Disp_window_onfoff(DISP_WIN1, DISP_WINDOW_ON);
 


    // Initialize LCD Module
    //LDI_initialize_LCD_module();

    // LCD Clock Source as MPLL_Dout
    pSysConReg->CLK_SRC = (pSysConReg->CLK_SRC & ~(0xFFFFFFF0))
                            |(0<<31)    // TV27_SEL    -> 27MHz
                            |(0<<30)    // DAC27        -> 27MHz
                            |(0<<28)    // SCALER_SEL    -> MOUT_EPLL
                            |(1<<26)    // LCD_SEL    -> Dout_MPLL
                            |(0<<24)    // IRDA_SEL    -> MOUT_EPLL
                            |(0<<22)    // MMC2_SEL    -> MOUT_EPLL
                            |(0<<20)    // MMC1_SEL    -> MOUT_EPLL
                            |(0<<18)    // MMC0_SEL    -> MOUT_EPLL
                            |(0<<16)    // SPI1_SEL    -> MOUT_EPLL
                            |(0<<14)    // SPI0_SEL    -> MOUT_EPLL
                            |(0<<13)    // UART_SEL    -> MOUT_EPLL
                            |(0<<10)    // AUDIO1_SEL    -> MOUT_EPLL
                            |(0<<7)        // AUDIO0_SEL    -> MOUT_EPLL
                            |(0<<5)        // UHOST_SEL    -> 48MHz
                            |(0<<4);        // MFCCLK_SEL    -> HCLKx2 (0:HCLKx2, 1:MoutEPLL)

    // Video Output Enable
    Disp_envid_onoff(DISP_ENVID_ON);

    // Fill Framebuffer

#if (LCD_BPP == 16)
    {
//   //去掉图片显示
//         unsigned int i;
//         unsigned short *pFB,*plogo;
//         pFB = (unsigned short *)EBOOT_FRAMEBUFFER_UA_START;
//         plogo = (unsigned short *)Logo;
//         for (i=0; i<lcd_width*lcd_high; i++)
//             *pFB++ =  0x0000;      //0x001F;        // Blue


  //int i;
  //unsigned int *pFB;
//   pFB = (unsigned int *)EBOOT_FRAMEBUFFER_UA_START;
//
//   for (i=0; i<lcd_width*lcd_high; i++)
//    *pFB++ = 0x00000055;        // Blue
 }
#elif    (LCD_BPP == 32)
    {
        int i;
        unsigned int *pFB;
        pFB = (unsigned int *)EBOOT_FRAMEBUFFER_UA_START;

        for (i=0; i<lcd_width*lcd_high; i++)
            *pFB++ = 0x000000FF;        // Blue
    }
#endif
 
    EdbgOutputDebugString("[Eboot] --InitializeDisplay()\r\n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值