⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3c6410_ldi.c

📁 SAMSUNG S3C6410 CPU BSP for winmobile6
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <windows.h>
#include <bsp_cfg.h>
#include <s3c6410.h>
#include "s3c6410_ldi.h"
#include "s3c6410_display_con.h"
#include "s3c6410_display_con_macro.h"
#include "LTS222QV_RGB_dataset.h"
#include "LTV350QV_RGB_dataset.h"
#include "LTE480WV_RGB_dataset.h"
#include "LTP700WV_RGB_dataset.h"

#ifdef	REMOVE_BEFORE_RELEASE
#define LDI_MSG(x)
#define LDI_INF(x)
#define LDI_ERR(x)	RETAILMSG(TRUE, x)
#else
//#define LDI_MSG(x)	RETAILMSG(TRUE, x)
#define LDI_MSG(x)
#define LDI_INF(x)	RETAILMSG(TRUE, x)
//#define LDI_INF(x)
#define LDI_ERR(x)	RETAILMSG(TRUE, x)
//#define LDI_ERR(x)
#endif

#define LCD_CLK			(1<<5)  // GPC[5]
#define LCD_MOSI		(1<<6)  // GPC[6]
#define LCD_nSS			(1<<7)  // GPC[7]

#define LCD_CLK_Lo		(g_pGPIOReg->GPCDAT &= ~LCD_CLK)
#define LCD_CLK_Hi		(g_pGPIOReg->GPCDAT |= LCD_CLK)
#define LCD_MOSI_Lo		(g_pGPIOReg->GPCDAT &= ~LCD_MOSI)
#define LCD_MOSI_Hi		(g_pGPIOReg->GPCDAT |= LCD_MOSI)
#define LCD_nSS_Lo		(g_pGPIOReg->GPCDAT &= ~LCD_nSS)
#define LCD_nSS_Hi		(g_pGPIOReg->GPCDAT |= LCD_nSS)

// SYS I/F CSn Main
#define LCD_nCSMain_Lo	(g_pGPIOReg->GPJDAT &= ~(1<<8))
#define LCD_nCSMain_Hi	(g_pGPIOReg->GPJDAT |= (1<<8))
#define LCD_RD_Lo		(g_pGPIOReg->GPJDAT &= ~(1<<7))
#define LCD_RD_Hi		(g_pGPIOReg->GPJDAT |= (1<<7))
#define LCD_RS_Lo		(g_pGPIOReg->GPJDAT &= ~(1<<10))
#define LCD_RS_Hi		(g_pGPIOReg->GPJDAT |= (1<<10))
#define LCD_nWR_Lo		(g_pGPIOReg->GPJDAT &= ~(1<<11))
#define LCD_nWR_Hi		(g_pGPIOReg->GPJDAT |= (1<<11))

#define LCD_DELAY_1MS	18000//30000	// for 667MHz	//18000	//on the basis of 540MHz
#define SPI_DELAY		50//100		// for 667MHz	// 50


static volatile S3C6410_SPI_REG *g_pSPIReg = NULL;
static volatile S3C6410_GPIO_REG *g_pGPIOReg = NULL;
static volatile S3C6410_DISPLAY_REG *g_pDispConReg = NULL;
static LDI_LCD_MODULE_TYPE g_ModuleType;

LDI_ERROR LDI_initialize_register_address(void *pSPIReg, void *pDispConReg, void *pGPIOReg)
{
	LDI_ERROR error = LDI_SUCCESS;

	LDI_MSG((_T("[LDI]++LDI_initialize_register_address(0x%08x, 0x%08x, 0x%08x)\n\r"), pSPIReg, pDispConReg, pGPIOReg));

	if (pSPIReg == NULL || pDispConReg == NULL || pGPIOReg == NULL)
	{
		LDI_ERR((_T("[LDI:ERR] LDI_initialize_register_address() : NULL pointer parameter\n\r")));
		error = LDI_ERROR_NULL_PARAMETER;
	}
	else
	{
		g_pSPIReg = (S3C6410_SPI_REG *)pSPIReg;
		g_pDispConReg = (S3C6410_DISPLAY_REG *)pDispConReg;
		g_pGPIOReg = (S3C6410_GPIO_REG *)pGPIOReg;
		LDI_INF((_T("[LDI:INF] g_pSPIReg = 0x%08x\n\r"), g_pSPIReg));
		LDI_INF((_T("[LDI:INF] g_pDispConReg = 0x%08x\n\r"), g_pDispConReg));
		LDI_INF((_T("[LDI:INF] g_pGPIOReg    = 0x%08x\n\r"), g_pGPIOReg));
	}

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

	return error;
}

LDI_ERROR LDI_set_LCD_module_type(LDI_LCD_MODULE_TYPE ModuleType)
{
	LDI_ERROR error = LDI_SUCCESS;

	LDI_MSG((_T("[LDI]++LDI_set_LCD_module_type(%d)\n\r"), ModuleType));

	g_ModuleType = ModuleType;

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

	return error;
}

LDI_ERROR LDI_initialize_LCD_module(void)
{
	LDI_ERROR error = LDI_SUCCESS;

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

	switch(g_ModuleType)
	{
	case LDI_LTS222QV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_LTS222QV_RGB\n\r"), g_ModuleType));
		LDI_LTS222QV_port_initialize();
		LDI_LTS222QV_reset();
		LDI_LTS222QV_RGB_initialize();
		break;
	case LDI_LTV350QV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_LTV350QV_RGB\n\r"), g_ModuleType));
		LDI_LTV350QV_port_initialize();
		LDI_LTV350QV_reset();
		LDI_LTV350QV_RGB_initialize();
		break;
	case LDI_LTE480WV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_LTE480WV_RGB\n\r"), g_ModuleType));
		LDI_LTE480WV_RGB_port_initialize();
		LDI_LTE480WV_RGB_power_on();
		LDI_LTE480WV_RGB_initialize();
		break;
	case LDI_LTP700WV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_LTP700WV_RGB\n\r"), g_ModuleType));
		LDI_LTP700WV_port_initialize();
		LDI_LTP700WV_reset();
		LDI_LTP700WV_RGB_initialize();
		break;
	case LDI_SMRP_TD043MTEA1_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_SMRP_TD043MTEA1_RGB\n\r"), g_ModuleType));
		LDI_TD043MTEA1_port_initialize();
		LDI_TD043MTEA1_power_on();
		LDI_TD043MTEA1_RGB_initialize();
		break;
	case LDI_SMRP_LTE480WV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_initialize_LCD_module() : Type [%d] LDI_SMRP_LTE480WV_RGB\n\r"), g_ModuleType));
		LDI_SMRP_LTE480WV_RGB_port_initialize();
		LDI_SMRP_LTE480WV_RGB_power_on();
		LDI_SMRP_LTE480WV_RGB_initialize();
		break;
	default:
		LDI_ERR((_T("[LDI:ERR] LDI_initialize_LCD_module() : Unknown LCD Module Type [%d]\n\r"), g_ModuleType));
		error = LDI_ERROR_ILLEGAL_PARAMETER;
		break;
	}

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

	return error;
}

LDI_ERROR LDI_deinitialize_LCD_module(void)
{
	LDI_ERROR error = LDI_SUCCESS;

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

	switch(g_ModuleType)
	{
	case LDI_LTS222QV_RGB:
	case LDI_LTV350QV_RGB:
	case LDI_LTP700WV_RGB:
		// TODO: Nothing to do with Current Hardware
		break;
	case LDI_LTE480WV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_deinitialize_LCD_module() : Type [%d] LDI_LTE480WV_RGB\n\r"), g_ModuleType));
		LDI_LTE480WV_RGB_power_off();
		break;
	case LDI_SMRP_TD043MTEA1_RGB:
		LDI_INF((_T("[LDI:INF] LDI_deinitialize_LCD_module() : Type [%d] LDI_SMRP_TD043MTEA1_RGB\n\r"), g_ModuleType));
		LDI_TD043MTEA1_power_off();
		break;
	case LDI_SMRP_LTE480WV_RGB:
		LDI_INF((_T("[LDI:INF] LDI_deinitialize_LCD_module() : Type [%d] LDI_SMRP_LTE480WV_RGB\n\r"), g_ModuleType));
		LDI_SMRP_LTE480WV_RGB_power_off();
		break;
	default:
		LDI_ERR((_T("[LDI:ERR] LDI_initialize_LCD_module() : Unknown LCD Module Type [%d]\n\r"), g_ModuleType));
		error = LDI_ERROR_ILLEGAL_PARAMETER;
		break;
	}

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

	return error;
}

LDI_ERROR LDI_fill_output_device_information(void *pDevInfo)
{
	LDI_ERROR error = LDI_SUCCESS;
	tDevInfo *pDeviceInfo;

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

	if (pDevInfo == NULL)
	{
		LDI_ERR((_T("[LDI:ERR] LDI_fill_output_device_information() : Null Parameter\n\r")));
		error = DISP_ERROR_NULL_PARAMETER;
		goto CleanUp;
	}

	pDeviceInfo = (tDevInfo *)pDevInfo;

	switch(g_ModuleType)
	{
	case LDI_LTS222QV_RGB:
		LDI_INF((_T("[LDI:INF] Output Devce Type [%d] = LDI_LTS222QV_RGB\n\r"), g_ModuleType));
		pDeviceInfo->RGBOutMode = DISP_18BIT_RGB666_S;
		pDeviceInfo->uiWidth = 240;
		pDeviceInfo->uiHeight = 320;
		pDeviceInfo->VBPD_Value = 7;
		pDeviceInfo->VFPD_Value = 10;
		pDeviceInfo->VSPW_Value = 3;
		pDeviceInfo->HBPD_Value = 2;
		pDeviceInfo->HFPD_Value = 2;
		pDeviceInfo->HSPW_Value = 1;
		pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
		pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
		pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
		pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
		pDeviceInfo->PNR_Mode = PNRMODE_RGB_S;
		pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
		pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
		pDeviceInfo->Frame_Rate = 60;
		break;

	case LDI_LTV350QV_RGB:
		LDI_INF((_T("[LDI:INF] Output Devce Type [%d] = LDI_LTV350QV_RGB\n\r"), g_ModuleType));
		pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
		pDeviceInfo->uiWidth = 320;
		pDeviceInfo->uiHeight = 240;
		pDeviceInfo->VBPD_Value = 5;
		pDeviceInfo->VFPD_Value = 3;
		pDeviceInfo->VSPW_Value = 4;
		pDeviceInfo->HBPD_Value = 5;
		pDeviceInfo->HFPD_Value = 3;
		pDeviceInfo->HSPW_Value = 10;
		pDeviceInfo->VCLK_Polarity = IVCLK_RISE_EDGE;
		pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
		pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
		pDeviceInfo->VDEN_Polarity = IVDEN_LOW_ACTIVE;
		pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
		pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
		pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
		pDeviceInfo->Frame_Rate = 60;	// VCLK (Max 10 MHz)
		break;

	case LDI_LTE480WV_RGB:
	case LDI_SMRP_LTE480WV_RGB:
		LDI_INF((_T("[LDI:INF] Output Devce Type [%d] = LDI_(SMRP)LTE480WV_RGB\n\r"), g_ModuleType));
		pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
		pDeviceInfo->uiWidth = 800;
		pDeviceInfo->uiHeight = 480;
		pDeviceInfo->VBPD_Value = 3;
		pDeviceInfo->VFPD_Value = 5;
		pDeviceInfo->VSPW_Value = 5;
		pDeviceInfo->HBPD_Value = 13;
		pDeviceInfo->HFPD_Value = 8;
		pDeviceInfo->HSPW_Value = 3;
		pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
		pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
		pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
		pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
		pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
		pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
		pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
		pDeviceInfo->Frame_Rate = 60;	// VCLK > 24.5 MHz (Max 35.7 MHz)
		break;

	case LDI_LTP700WV_RGB:
		LDI_INF((_T("[LDI:INF] Output Devce Type [%d] = LDI_LTP700WV_RGB\n\r"), g_ModuleType));
		pDeviceInfo->RGBOutMode = DISP_24BIT_RGB888_P;
		pDeviceInfo->uiWidth = 800;
		pDeviceInfo->uiHeight = 480;
		pDeviceInfo->VBPD_Value = 7;
		pDeviceInfo->VFPD_Value = 5;
		pDeviceInfo->VSPW_Value = 1;
		pDeviceInfo->HBPD_Value = 13;
		pDeviceInfo->HFPD_Value = 8;
		pDeviceInfo->HSPW_Value = 3;
		pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
		pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
		pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
		pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
		pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
		pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
		pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
		pDeviceInfo->Frame_Rate = 60;
		break;

	case LDI_SMRP_TD043MTEA1_RGB:
		LDI_INF((_T("[LDI:INF] Output Devce Type [%d] = LDI_SMRP_TD043MTEA1_RGB\n\r"), g_ModuleType));
		pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
		pDeviceInfo->uiWidth = 800;
		pDeviceInfo->uiHeight = 480;
		pDeviceInfo->VBPD_Value = 30;
		pDeviceInfo->VFPD_Value = 10;
		pDeviceInfo->VSPW_Value = 5;
		pDeviceInfo->HBPD_Value = 200;
		pDeviceInfo->HFPD_Value = 40;
		pDeviceInfo->HSPW_Value = 16;
		pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
		pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
		pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
		pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
		pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
		pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
		pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
		pDeviceInfo->Frame_Rate = 60;
		break;

	default:
		LDI_INF((_T("[LDI:ERR] LDI_fill_output_device_information() : Unknown device type [%d]\n\r"), g_ModuleType));
		error = DISP_ERROR_ILLEGAL_PARAMETER;
		break;
	}

CleanUp:

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

	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]

	g_pGPIOReg->GPNDAT |= (1<<5);		// nReset High
	DelayLoop_1ms(10);					// 10 ms

	g_pGPIOReg->GPNDAT &= ~(1<<5);	// nReset Low
	DelayLoop_1ms(10);					// 10 ms

	g_pGPIOReg->GPNDAT |= (1<<5);		// 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
	g_pGPIOReg->GPNDAT |= (1<<5);	// nReset
	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]

	g_pGPIOReg->GPNDAT |= (1<<5);		// nReset High
	DelayLoop_1ms(10);					// 10 ms

	g_pGPIOReg->GPNDAT &= ~(1<<5);	// nReset Low
	DelayLoop_1ms(5);					// 5 ms

	g_pGPIOReg->GPNDAT |= (1<<5);		// 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
	g_pGPIOReg->GPNDAT &= ~(1<<5);		// PCI

	// 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")));
}

⌨️ 快捷键说明

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