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 + -
显示快捷键?