s3c6410_ldi.c

来自「6410BSP3」· C语言 代码 · 共 1,274 行 · 第 1/3 页

C
1,274
字号
    //Set PWM GPIO to control Back-light  Regulator  Shotdown Pin
    g_pGPIOReg->GPFCON = (g_pGPIOReg->GPFCON & ~(0x3<<30)) | (0x1<<30); //GPFCON[31:30] -> Output
    g_pGPIOReg->GPFDAT &= ~(0x1<<15); //GPFDAT[15] -> Low
    g_pGPIOReg->GPFPUD &= ~(0x3<<30);   // GPFPUD[31:30] -> PullUp Down Disable

    // set GPIO Initial Value for SPI
    g_pGPIOReg->GPCDAT |= ((1<<1)|(1<<2)|(1<<3));        // Clk, MOSI, CS -> High

    // Set GPIO direction to output
    g_pGPIOReg->GPCCON = (g_pGPIOReg->GPCCON & ~(0xfff<<4)) | (0x111<<4) ;    // Clk, MOSI, CS

    // Pull Up/Down Disable
    g_pGPIOReg->GPCPUD &= ~((0x3<<2)|(0x3<<4)|(0x3<<6));    // Clk, MOSI, CS
    
    DelayLoop_1ms(5);                    // 5 ms
//    g_pDispConReg->SIFCCON0 = 0x01;    // RS:LO nCS:HI nOE:HI nWE:HI, Manual


    LDI_MSG((_T("[LDI]--%s()\n\r"), _T(__FUNCTION__)));

}

LDI_ERROR LDI_LTM030DK_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;
    int i=0;

    LDI_MSG((_T("[LDI]++%s()\n\r"), _T(__FUNCTION__)));

    LDI_LTM030DK_spi_port_enable();
   
    while(1)
    {
        LDI_LTM030DK_write(LTM030DK_RGB_initialize[i][0], LTM030DK_RGB_initialize[i][1]);
        if (LTM030DK_RGB_initialize[i][2]) DelayLoop_1ms(LTM030DK_RGB_initialize[i][2]);

        i++;

        if (LTM030DK_RGB_initialize[i][0] == 0 && LTM030DK_RGB_initialize[i][1] == 0) break;
    }

    g_pGPIOReg->SPCON |= 0x1;        // RGB I/F   

    LDI_MSG((_T("[LDI]--%s() : %d\n\r"), _T(__FUNCTION__), error));

    return error;
}

static void LDI_LTS222QV_port_initialize(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTS222QV_port_initialize()\n\r")));

    // nReset    : GPN[5]

    // set GPIO Initial Value to High
    g_pGPIOReg->GPNDAT |= (1<<5);            // nReset

    // Pull Up/Down Disable
    g_pGPIOReg->GPNPUD &= ~(0x3<<10);                // nReset

    // Set GPIO direction to output
    g_pGPIOReg->GPNCON = (g_pGPIOReg->GPNCON & ~(0x3<<10)) | (1<<10);        // nReset

    LDI_MSG((_T("[LDI]--LDI_LTS222QV_port_initialize()\n\r")));
}

static void LDI_LTS222QV_spi_port_enable(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTS222QV_spi_port_enable()\n\r")));

    // Clk        : GPC[5]
    // MOSI        : GPC[6]

    g_pGPIOReg->SPCON &= ~(0x3<<0);    // Host I/F
    g_pGPIOReg->GPICON = 0xaaaaaaaa;
    g_pGPIOReg->GPJCON = 0xaaaaaaaa;

    // set GPIO Initial Value
    g_pGPIOReg->GPCDAT |= ((1<<5)|(1<<6));        // Clk, MOSI -> High

    // Pull Up/Down Disable
    g_pGPIOReg->GPCPUD &= ~((0x3<<10)|(0x3<<12));    // Clk, MOSI

    // Set GPIO direction to output
    g_pGPIOReg->GPCCON = (g_pGPIOReg->GPCCON & ~(0xff<<20)) | (0x11<<20);    // Clk, MOSI

    g_pDispConReg->SIFCCON0 = 0x01;    // RS:LO nCS:HI nOE:HI nWE:HI, Manual

    LDI_MSG((_T("[LDI]--LDI_LTS222QV_spi_port_enable()\n\r")));

}

static void LDI_LTS222QV_spi_port_disable(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTS222QV_spi_port_disable()\n\r")));

    g_pGPIOReg->SPCON |= 0x1;        // RGB I/F
    g_pGPIOReg->GPCDAT |= ((1<<5)|(1<<6));        // Clk, MOSI -> High

    g_pGPIOReg->GPICON = 0x0;
    g_pGPIOReg->GPJCON = 0xaaaaaaa0;

    LDI_MSG((_T("[LDI]--LDI_LTS222QV_spi_port_disable()\n\r")));
}

static void LDI_LTS222QV_reset(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTS222QV_reset()\n\r")));

    // nReset    : GPN[5]
    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High
    DelayLoop_1ms(10);                    // 10 ms

    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);   // nReset Low
    DelayLoop_1ms(10);                    // 10 ms

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High
    DelayLoop_1ms(10);                    // 10 ms

    LDI_MSG((_T("[LDI]--LDI_LTS222QV_reset()\n\r")));
}

static LDI_ERROR LDI_LTS222QV_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;
    int i=0;

    LDI_MSG((_T("[LDI]++LDI_LTS222QV_RGB_initialize()\n\r")));

    LDI_LTS222QV_spi_port_enable();

    while(1)
    {
        LDI_LTS222QV_write(LTS222QV_RGB_initialize[i][0], LTS222QV_RGB_initialize[i][1]);
        if (LTS222QV_RGB_initialize[i][2]) DelayLoop_1ms(LTS222QV_RGB_initialize[i][2]);

        i++;

        if (LTS222QV_RGB_initialize[i][0] == 0 && LTS222QV_RGB_initialize[i][1] == 0) break;
    }

    LDI_LTS222QV_spi_port_disable();

    LDI_MSG((_T("[LDI]--LDI_LTS222QV_RGB_initialize() : %d\n\r"), error));

    return error;
}



static void LDI_LTV350QV_port_initialize(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTV350QV_port_initialize()\n\r")));

    // nReset    : GPN[5]
    // Clk       : GPC[5]
    // MOSI      : GPC[6]
    // nSS       : GPC[7]

    // set GPIO Initial Value to High

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High    
    g_pGPIOReg->GPCDAT |= ((1<<5)|(1<<6)|(1<<7));    // Clk, MOSI, nSS

    // Pull Up/Down Disable
    g_pGPIOReg->GPNPUD &= ~(0x3<<10);    // nReset
    g_pGPIOReg->GPCPUD &= ~((0x3<<10)|(0x3<<12)|(0x3<<14));    // Clk, MOSI, nSS

    // Set GPIO direction to output
    g_pGPIOReg->GPNCON = (g_pGPIOReg->GPNCON & ~(0x3<<10)) | (1<<10);    // nReset
    g_pGPIOReg->GPCCON = (g_pGPIOReg->GPCCON & ~(0xfff<<20)) | (0x111<<20);    // Clk, MOSI, nSS

    LDI_MSG((_T("[LDI]--LDI_LTV350QV_port_initialize()\n\r")));
}

static void LDI_LTV350QV_reset(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTV350QV_reset()\n\r")));

    // nReset    : GPN[5]

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High    
    DelayLoop_1ms(10);                    // 10 ms

    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);         // nReset Low
    DelayLoop_1ms(5);                    // 5 ms

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High    
    DelayLoop_1ms(5);                    // 5 ms

    LDI_MSG((_T("[LDI]--LDI_LTV350QV_reset()\n\r")));
}

static LDI_ERROR LDI_LTV350QV_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;
    int i=0;

    LDI_MSG((_T("[LDI]++LDI_LTV350QV_RGB_initialize()\n\r")));

    while(1)
    {
        LDI_LTV350QV_write(LTV350QV_RGB_initialize[i][0], LTV350QV_RGB_initialize[i][1]);
        if (LTV350QV_RGB_initialize[i][2]) DelayLoop_1ms(LTV350QV_RGB_initialize[i][2]);

        i++;

        if (LTV350QV_RGB_initialize[i][0] == 0 && LTV350QV_RGB_initialize[i][1] == 0) break;
    }

    LDI_MSG((_T("[LDI]--LDI_LTV350QV_RGB_initialize() : %d\n\r"), error));

    return error;
}



static void LDI_LTE480WV_RGB_port_initialize(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTE480WV_RGB_port_initialize()\n\r")));

    // PCI                 : GPN[5]
    // LCD_PANNEL_ON    : N/A in SMDK6410

    // set GPIO Initial Value to Low
    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High        

    // Pull Up/Down Disable
    g_pGPIOReg->GPNPUD &= ~(0x3<<10);        // PCI

    // Set GPIO direction to output
    g_pGPIOReg->GPNCON = (g_pGPIOReg->GPNCON & ~(0x3<<10)) | (1<<10);    // PCI

    LDI_MSG((_T("[LDI]--LDI_LTE480WV_RGB_port_initialize()\n\r")));
}

static LDI_ERROR LDI_LTE480WV_RGB_power_on(void)
{
    LDI_ERROR error = LDI_SUCCESS;

    LDI_MSG((_T("[LDI]++LDI_LTE480WV_RGB_power_on()\n\r")));

    // PCI                 : GPN[5]
    // LCD_PANNEL_ON    : N/A in SMDK6410

    // Envid Disable
    g_pDispConReg->VIDCON0 &= ~0x3;         //~(ENVID_ENABLE | ENVID_F_ENABLE);    // Direct Off

    // LCD Pannel Power On
    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);       // PCI set to Low
    // TODO: LCD Power On Here
    DelayLoop_1ms(10);                    // tp-sig > 10 ms

    // Envid Enable (Start output through RGB I/F)
    g_pDispConReg->VIDCON0 |= 0x3;        //(ENVID_ENABLE | ENVID_F_ENABLE);
    DelayLoop_1ms(20);                    // tvsync-don > 1 frame (16.7 ms)

    // Set PCI to High
    SET_TFT_LCD_nRESET(g_pGPIOReg);         // PCI set to High

    LDI_MSG((_T("[LDI]--LDI_LTE480WV_RGB_power_on() : %d\n\r"), error));

    return error;
}

static LDI_ERROR LDI_LTE480WV_RGB_power_off(void)
{
    LDI_ERROR error = LDI_SUCCESS;

    LDI_MSG((_T("[LDI]++LDI_LTE480WV_RGB_power_off()\n\r")));

    // PCI                 : GPN[5]
    // LCD_PANNEL_ON    : N/A in SMDK6410

    // Set PCI to Low
    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);   // PCI set to Low
    DelayLoop_1ms(40);                  // twht1 > 2 frame (33.3 ms)
    DelayLoop_1ms(20);                  // tpoff > 1 frame (16.7 ms)

    // Envid Disable
    g_pDispConReg->VIDCON0 &= ~(0x1);    //~(ENVID_F_ENABLE);    // Per Frame Off
    DelayLoop_1ms(20);                    // Wait for frame finished (16.7 ms)
    DelayLoop_1ms(10);                    // tsig0ff-vdd > 10 ms

    // LCD Pannel Power Off
    // TODO: LCD Power Off Here

    LDI_MSG((_T("[LDI]--LDI_LTE480WV_RGB_power_off() : %d\n\r"), error));

    return error;
}

static LDI_ERROR LDI_LTE480WV_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;

    LDI_MSG((_T("[LDI]++LDI_LTE480WV_RGB_initialize()\n\r")));

    // There is No Power Sequence for LTP480WV

    LDI_MSG((_T("[LDI]--LDI_LTE480WV_RGB_initialize() : %d\n\r"), error));

    return error;
}



static void LDI_LTP700WV_port_initialize(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTP700WV_port_initialize()\n\r")));

    // nReset    : GPN[5]

    // set GPIO Initial Value to High
    g_pGPIOReg->GPNDAT |= (1<<5);    // nReset

    // Pull Up/Down Disable
    g_pGPIOReg->GPNPUD &= ~(0x3<<10);    // nReset

    // Set GPIO direction to output
    g_pGPIOReg->GPNCON = (g_pGPIOReg->GPNCON & ~(0x3<<10)) | (1<<10);    // nReset

    LDI_MSG((_T("[LDI]--LDI_LTP700WV_port_initialize()\n\r")));
}

static void LDI_LTP700WV_reset(void)
{
    LDI_MSG((_T("[LDI]++LDI_LTP700WV_reset()\n\r")));

    // nReset    : GPN[5]

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High    
    DelayLoop_1ms(10);                    // 10 ms

    CLEAR_TFT_LCD_nRESET(g_pGPIOReg);       // nReset High   
    DelayLoop_1ms(10);                    // 10 ms

    g_pDispConReg->VIDCON0 |= 0x3;        // VCLK Output enable
    DelayLoop_1ms(100);                    // More than 4 frames..

    SET_TFT_LCD_nRESET(g_pGPIOReg);         // nReset High    
    DelayLoop_1ms(10);                    // 10 ms

    g_pDispConReg->VIDCON0 &= ~0x3;    // VCLK Output disable

    LDI_MSG((_T("[LDI]--LDI_LTP700WV_reset()\n\r")));
}

static LDI_ERROR LDI_LTP700WV_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;

    LDI_MSG((_T("[LDI]++LDI_LTP700WV_RGB_initialize()\n\r")));

    // There is No Power Sequence for LTP700WV

    LDI_MSG((_T("[LDI]--LDI_LTP700WV_RGB_initialize() : %d\n\r"), error));

    return error;
}



static void LDI_TD043MTEA1_port_initialize(void)
{
    LDI_MSG((_T("[LDI]++LDI_TD043MTEA1_port_initialize()\n\r")));

    // nReset(GREST, STBY)    : GPF[14]
    // LCD_PANNEL_ON        : GPF[13]

    // set GPIO Initial Value to Low
    g_pGPIOReg->GPFDAT &= ~(0x3<<13);    // nReset, LCD_PANNEL_ON

    // Pull Up/Down Disable
    g_pGPIOReg->GPFPUD &= ~(0xf<<26);    // nReset, LCD_PANNEL_ON

    // Set GPIO direction to output
    g_pGPIOReg->GPFCON = (g_pGPIOReg->GPFCON & ~(0xf<<26)) | (5<<26);    // nReset, LCD_PANNEL_ON

    LDI_MSG((_T("[LDI]--LDI_TD043MTEA1_port_initialize()\n\r")));
}

static void LDI_TD043MTEA1_power_on(void)
{
    LDI_MSG((_T("[LDI]++LDI_TD043MTEA1_power_on()\n\r")));

    // nReset(GREST, STBY)    : GPF[14]
    // LCD_PANNEL_ON        : GPF[13]

    // LCD Pannel Power On and nReset
    g_pGPIOReg->GPFDAT &= ~(1<<14);    // nReset Low
    g_pGPIOReg->GPFDAT |= (1<<13);        // LCD_PANNEL_ON High
    DelayLoop_1ms(10);                    // 10 ms

    // Release nReset
    g_pGPIOReg->GPFDAT |= (1<<14);        // nReset High
    DelayLoop_1ms(5);                    // 5 ms

    LDI_MSG((_T("[LDI]--LDI_TD043MTEA1_power_on()\n\r")));
}

static void LDI_TD043MTEA1_power_off(void)
{
    LDI_MSG((_T("[LDI]++LDI_TD043MTEA1_power_off()\n\r")));

    // nReset(GREST, STBY)    : GPF[14]
    // LCD_PANNEL_ON        : GPF[13]

    // LCD Pannel Power Off
    g_pGPIOReg->GPFDAT &= ~(1<<13);    // LCD_PANNEL_ON Low
    g_pGPIOReg->GPFDAT &= ~(1<<14);    // nReset Low
    DelayLoop_1ms(5);                    // 5 ms

    LDI_MSG((_T("[LDI]--LDI_TD043MTEA1_power_off()\n\r")));
}

static LDI_ERROR LDI_TD043MTEA1_RGB_initialize(void)
{
    LDI_ERROR error = LDI_SUCCESS;

    LDI_MSG((_T("[LDI]++LDI_TD043MTEA1_RGB_initialize()\n\r")));

    // TODO: Initialize Pannel with Serial Interface

    LDI_MSG((_T("[LDI]--LDI_TD043MTEA1_RGB_initialize() : %d\n\r"), error));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?