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

📄 gta02-splash.patch

📁 Uboot常用的移植patches, 方便定制移植到s3c2440
💻 PATCH
📖 第 1 页 / 共 2 页
字号:
+	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,+	0x8023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; -#if 0-static struct glamo_script gl3362_init_script[] = {-	/* clock */-	{ GLAMO_REG_CLOCK_MEMORY, 	0x300a },+static u16 u16a_gen_init_0x0000[] = {+	0x2020, 0x3650, 0x0002, 0x01FF, 0x0000, 0x0000, 0x0000, 0x0000,+	0x000D, 0x000B, 0x00EE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,+	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,+	0x1839, 0x0000, 0x2000, 0x0101, 0x0100, 0x0000, 0x0000, 0x0000,+	0x05DB, 0x5231, 0x09C3, 0x8261, 0x0003, 0x0000, 0x0000, 0x0000,+	0x000F, 0x101E, 0xC0C3, 0x101E, 0x000F, 0x0001, 0x030F, 0x020F,+	0x080F, 0x0F0F };-#endif -static void glamo_run_script(struct glamo_script *script, int num)+static u16 u16a_gen_init_0x0200[] = {+	0x0EF0, 0x07FF, 0x0000, 0x0080, 0x0344, 0x0600, 0x0000, 0x0000,+	0x0000, 0x0000, 0x4000, 0xF00E, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,+	0x0873, 0xAFAF, 0x0108, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000,+	0x0000, 0x1002, 0x6006, 0x00FF, 0x0001, 0x0020, 0x0000, 0x0000,+	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,+	0x3210, 0x5432, 0xE100, 0x01D6+};++#define glamofb_cmdq_empty() (glamo_reg_read(GLAMO_REGOFS_LCD + \+					GLAMO_REG_LCD_STATUS1) & (1 << 15))++void glamofb_cmd_mode(int on) {-	int i;-	for (i = 0; i < ARRAY_SIZE(gl3362_init_script); i++) {-		struct glamo_script *reg = script + i;-		printf("reg=0x%04x, val=0x%04x\n", reg->reg, reg->val);--		if (reg->reg == 0xfffe)-			udelay(reg->val*1000);-		else-			glamo_reg_write(reg->reg, reg->val);+	if (on) {+		while (!glamofb_cmdq_empty())+			;+		/* display the entire frame then switch to command */+		glamo_reg_write(GLAMO_REGOFS_LCD + GLAMO_REG_LCD_COMMAND1,+			  GLAMO_LCD_CMD_TYPE_DISP |+			  GLAMO_LCD_CMD_DATA_FIRE_VSYNC);++		while (!(glamo_reg_read(GLAMO_REGOFS_LCD ++			 GLAMO_REG_LCD_STATUS2) & (1 << 12)))+			;+		udelay(5000); /* you really need this ;-) */+	} else {+		/* RGB interface needs vsync/hsync */+		if (glamo_reg_read(GLAMO_REGOFS_LCD + GLAMO_REG_LCD_MODE3) &+		    GLAMO_LCD_MODE3_RGB)+			glamo_reg_write(GLAMO_REGOFS_LCD ++				  GLAMO_REG_LCD_COMMAND1,+				  GLAMO_LCD_CMD_TYPE_DISP |+				  GLAMO_LCD_CMD_DATA_DISP_SYNC);++		glamo_reg_write(GLAMO_REGOFS_LCD + GLAMO_REG_LCD_COMMAND1,+			  GLAMO_LCD_CMD_TYPE_DISP |+			  GLAMO_LCD_CMD_DATA_DISP_FIRE); 	}+} +void glamofb_cmd_write(u_int16_t val)+{+	while (!glamofb_cmdq_empty())+		;+	glamo_reg_write(GLAMO_REGOFS_LCD + GLAMO_REG_LCD_COMMAND1, val); }  static void glamo_core_init(void) {-	printf("Glamo core device ID: 0x%04x, Revision 0x%04x\n",-		glamo_reg_read(GLAMO_REG_DEVICE_ID),-		glamo_reg_read(GLAMO_REG_REVISION_ID));+	int bp; -	glamo_run_script(gl3362_init_script, ARRAY_SIZE(gl3362_init_script));+	/* power up PLL1 and PLL2 */+	glamo_reg_write(GLAMO_REG_PLL_GEN7, 0x0000);+	glamo_reg_write(GLAMO_REG_PLL_GEN3, 0x0400);++	/* enable memory clock and get it out of deep pwrdown */+	glamo_reg_write(GLAMO_REG_CLOCK_MEMORY,+		glamo_reg_read(GLAMO_REG_CLOCK_MEMORY) |+		GLAMO_CLOCK_MEM_EN_MOCACLK);+	glamo_reg_write(GLAMO_REG_MEM_DRAM2,+			glamo_reg_read(GLAMO_REG_MEM_DRAM2) &+			(~GLAMO_MEM_DRAM2_DEEP_PWRDOWN));+	glamo_reg_write(GLAMO_REG_MEM_DRAM1,+			glamo_reg_read(GLAMO_REG_MEM_DRAM1) &+			(~GLAMO_MEM_DRAM1_SELF_REFRESH));+	/*+	 * we just fill up the general hostbus and LCD register sets+	 * with magic values taken from the Linux framebuffer init action+	 */+	for (bp = 0; bp < ARRAY_SIZE(u16a_gen_init_0x0000); bp++)+		glamo_reg_write(GLAMO_REGOFS_GENERIC | (bp << 1),+				u16a_gen_init_0x0000[bp]);++	for (bp = 0; bp < ARRAY_SIZE(u16a_gen_init_0x0200); bp++)+		glamo_reg_write(GLAMO_REGOFS_HOSTBUS | (bp << 1),+				u16a_gen_init_0x0200[bp]);+	+	/* spin until PLL1 lock */+	while (!(glamo_reg_read(GLAMO_REG_PLL_GEN5) & 1))+		;++	glamofb_cmd_mode(1);+	/* LCD registers */+	for (bp = 0; bp < ARRAY_SIZE(u16a_lcd_init); bp++)+		glamo_reg_write(GLAMO_REGOFS_LCD + (bp << 1),+			u16a_lcd_init[bp]);+	glamofb_cmd_mode(0); } -void *video_hw_init(void)+void * video_hw_init(void) {-	u_int16_t reg; 	GraphicDevice *pGD = (GraphicDevice *)&smi; -	glamo_core_init();--	printf("Video: ");+	printf("Glamo core device ID: 0x%04x, Revision 0x%04x\n",+		glamo_reg_read(GLAMO_REG_DEVICE_ID),+		glamo_reg_read(GLAMO_REG_REVISION_ID)); -	/* FIXME: returning since vram access still locks up system */-	return NULL;+	glamo_core_init(); -	/* FIXME: this is static */ 	pGD->winSizeX = pGD->plnSizeX = 480; 	pGD->winSizeY = pGD->plnSizeY = 640; 	pGD->gdfBytesPP = 2;@@ -170,16 +223,21 @@ void *video_hw_init(void) 	pGD->frameAdrs = CONFIG_GLAMO_BASE + 0x00800000; 	pGD->memSize = 0x200000; /* 480x640x16bit = 614400 bytes */ -	//printf("memset ");-	//memset(pGD->frameAdrs, 0, pGD->memSize);--	printf("END\n");+#ifdef CONFIG_GTA02_REVISION+	/* bring up the LCM */+	smedia3362_lcm_reset(1);+	if (getenv("splashimage"))+		run_command(getenv("splashimage"), 0);+	jbt6k74_enter_state(JBT_STATE_NORMAL);+	jbt6k74_display_onoff(1);+	/* switch on the backlight */+	neo1973_backlight(1);+#endif  	return &smi; } -void-video_set_lut(unsigned int index, unsigned char r,+void video_set_lut(unsigned int index, unsigned char r, 	      unsigned char g, unsigned char b) { 	/* FIXME: we don't support any palletized formats */Index: u-boot/drivers/video/smedia3362.h===================================================================--- u-boot.orig/drivers/video/smedia3362.h+++ u-boot/drivers/video/smedia3362.h@@ -101,6 +101,42 @@ enum glamo_register_generic { 	GLAMO_REG_PLL_GEN7	= 0x01f0, }; +enum glamo_reg_mem_dram1 {+	GLAMO_MEM_DRAM1_EN_SDRAM_CLK	= (1 << 11),+	GLAMO_MEM_DRAM1_SELF_REFRESH	= (1 << 12),+};++enum glamo_reg_mem_dram2 {+	GLAMO_MEM_DRAM2_DEEP_PWRDOWN	= (1 << 12),+};++enum glamo_reg_clock51 {+	GLAMO_CLOCK_GEN51_EN_DIV_MCLK	= 0x0001,+	GLAMO_CLOCK_GEN51_EN_DIV_SCLK	= 0x0002,+	GLAMO_CLOCK_GEN51_EN_DIV_JCLK	= 0x0004,+	GLAMO_CLOCK_GEN51_EN_DIV_DCLK	= 0x0008,+	GLAMO_CLOCK_GEN51_EN_DIV_DMCLK	= 0x0010,+	GLAMO_CLOCK_GEN51_EN_DIV_DHCLK	= 0x0020,+	GLAMO_CLOCK_GEN51_EN_DIV_GCLK	= 0x0040,+	GLAMO_CLOCK_GEN51_EN_DIV_TCLK	= 0x0080,+	/* FIXME: higher bits */+};++enum glamo_reg_hostbus2 {+	GLAMO_HOSTBUS2_MMIO_EN_ISP	= 0x0001,+	GLAMO_HOSTBUS2_MMIO_EN_JPEG	= 0x0002,+	GLAMO_HOSTBUS2_MMIO_EN_MPEG	= 0x0004,+	GLAMO_HOSTBUS2_MMIO_EN_LCD	= 0x0008,+	GLAMO_HOSTBUS2_MMIO_EN_MMC	= 0x0010,+	GLAMO_HOSTBUS2_MMIO_EN_MICROP0	= 0x0020,+	GLAMO_HOSTBUS2_MMIO_EN_MICROP1	= 0x0040,+	GLAMO_HOSTBUS2_MMIO_EN_CQ	= 0x0080,+	GLAMO_HOSTBUS2_MMIO_EN_RISC	= 0x0100,+	GLAMO_HOSTBUS2_MMIO_EN_2D	= 0x0200,+	GLAMO_HOSTBUS2_MMIO_EN_3D	= 0x0400,+};++ #define GLAMO_REG_HOSTBUS(x)	(GLAMO_REGOFS_HOSTBUS-2+(x*2))  #define REG_MEM(x)		(GLAMO_REGOFS_MEMORY+(x))@@ -330,6 +366,7 @@ enum glamo_reg_lcd { 	GLAMO_REG_LCD_SRAM_DRIVING3	= REG_LCD(0x164), }; + enum glamo_reg_lcd_mode1 { 	GLAMO_LCD_MODE1_PWRSAVE		= 0x0001, 	GLAMO_LCD_MODE1_PARTIAL_PRT	= 0x0002,@@ -382,4 +419,41 @@ enum glamo_reg_lcd_mode3 { 	GLAMO_LCD_MODE3_18BITS		= 0x0040, }; +enum glamo_lcd_cmd_type {+	GLAMO_LCD_CMD_TYPE_DISP		= 0x0000,+	GLAMO_LCD_CMD_TYPE_PARALLEL	= 0x4000,+	GLAMO_LCD_CMD_TYPE_SERIAL	= 0x8000,+	GLAMO_LCD_CMD_TYPE_SERIAL_DIRECT= 0xc000,+};+#define GLAMO_LCD_CMD_TYPE_MASK		0xc000++enum glamo_lcd_cmds {+	GLAMO_LCD_CMD_DATA_DISP_FIRE	= 0x00,+	GLAMO_LCD_CMD_DATA_DISP_SYNC	= 0x01,		/* RGB only */+	/* switch to command mode, no display */+	GLAMO_LCD_CMD_DATA_FIRE_NO_DISP	= 0x02,+	/* display until VSYNC, switch to command */+	GLAMO_LCD_CMD_DATA_FIRE_VSYNC	= 0x11,+	/* display until HSYNC, switch to command */+	GLAMO_LCD_CMD_DATA_FIRE_HSYNC	= 0x12,+	/* display until VSYNC, 1 black frame, VSYNC, switch to command */+	GLAMO_LCD_CMD_DATA_FIRE_VSYNC_B	= 0x13,+	/* don't care about display and switch to command */+	GLAMO_LCD_CMD_DATA_FIRE_FREE	= 0x14,		/* RGB only */+	/* don't care about display, keep data display but disable data,+	 * and switch to command */+	GLAMO_LCD_CMD_DATA_FIRE_FREE_D	= 0x15,		/* RGB only */+};++enum glamo_reg_clock_2d {+	GLAMO_CLOCK_2D_DG_GCLK		= 0x0001,+	GLAMO_CLOCK_2D_EN_GCLK		= 0x0002,+	GLAMO_CLOCK_2D_DG_M7CLK		= 0x0004,+	GLAMO_CLOCK_2D_EN_M7CLK		= 0x0008,+	GLAMO_CLOCK_2D_DG_M6CLK		= 0x0010,+	GLAMO_CLOCK_2D_EN_M6CLK		= 0x0020,+	GLAMO_CLOCK_2D_RESET		= 0x1000,+	GLAMO_CLOCK_2D_CQ_RESET		= 0x2000,+};+ #endif /* _GLAMO_REGS_H */Index: u-boot/include/configs/neo1973_gta02.h===================================================================--- u-boot.orig/include/configs/neo1973_gta02.h+++ u-boot/include/configs/neo1973_gta02.h@@ -251,12 +251,12 @@ /* we have a board_late_init() function */ #define BOARD_LATE_INIT			1 -#if 0+#if 1 #define CONFIG_VIDEO #define CONFIG_VIDEO_GLAMO3362 #define CONFIG_CFB_CONSOLE-#define CONFIG_VIDEO_LOGO-#define CONFIG_SPLASH_SCREEN+//#define CONFIG_VIDEO_LOGO+//#define CONFIG_SPLASH_SCREEN #define CFG_VIDEO_LOGO_MAX_SIZE	(640*480+1024+100) /* 100 = slack */ #define CONFIG_VIDEO_BMP_GZIP #define CONFIG_VGA_AS_SINGLE_DEVICE

⌨️ 快捷键说明

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