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

📄 uboot-s3c2410_fb.patch

📁 Uboot常用的移植patches, 方便定制移植到s3c2440
💻 PATCH
字号:
Index: u-boot/drivers/video/Makefile===================================================================--- u-boot.orig/drivers/video/Makefile+++ u-boot/drivers/video/Makefile@@ -29,6 +29,7 @@ COBJS-y += cfb_console.o COBJS-y += ct69000.o COBJS-y += mb862xx.o+COBJS-y += s3c2410_fb.o COBJS-y += sed13806.o COBJS-y += sed156x.o COBJS-y += sm501.oIndex: u-boot/drivers/video/s3c2410_fb.c===================================================================--- /dev/null+++ u-boot/drivers/video/s3c2410_fb.c@@ -0,0 +1,166 @@+/*+ * (C) Copyright 2006 by OpenMoko, Inc.+ * Author: Harald Welte <laforge@openmoko.org>+ *+ * This program is free software; you can redistribute it and/or+ * modify it under the terms of the GNU General Public License as+ * published by the Free Software Foundation; either version 2 of+ * the License, or (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ * MA 02111-1307 USA+ */++#include <common.h>++#if defined(CONFIG_VIDEO_S3C2410)++#include <video_fb.h>+#include "videomodes.h"+#include <s3c2410.h>+/*+ * Export Graphic Device+ */+GraphicDevice smi;++#define VIDEO_MEM_SIZE	0x200000	/* 480x640x16bit = 614400 bytes */++extern void board_video_init(GraphicDevice *pGD);++/*******************************************************************************+ *+ * Init video chip with common Linux graphic modes (lilo)+ */+void *video_hw_init (void)+{+	S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();+	GraphicDevice *pGD = (GraphicDevice *)&smi;+	int videomode;+	unsigned long t1, hsynch, vsynch;+	char *penv;+	int tmp, i, bits_per_pixel;+	struct ctfb_res_modes *res_mode;+	struct ctfb_res_modes var_mode;+	unsigned char videoout;++	/* Search for video chip */+	printf("Video: ");++	tmp = 0;++	videomode = CFG_DEFAULT_VIDEO_MODE;+	/* get video mode via environment */+	if ((penv = getenv ("videomode")) != NULL) {+		/* deceide if it is a string */+		if (penv[0] <= '9') {+			videomode = (int) simple_strtoul (penv, NULL, 16);+			tmp = 1;+		}+	} else {+		tmp = 1;+	}+	if (tmp) {+		/* parameter are vesa modes */+		/* search params */+		for (i = 0; i < VESA_MODES_COUNT; i++) {+			if (vesa_modes[i].vesanr == videomode)+				break;+		}+		if (i == VESA_MODES_COUNT) {+			printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);+			i = 0;+		}+		res_mode =+			(struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].+								 resindex];+		bits_per_pixel = vesa_modes[i].bits_per_pixel;+	} else {++		res_mode = (struct ctfb_res_modes *) &var_mode;+		bits_per_pixel = video_get_params (res_mode, penv);+	}++	/* calculate hsynch and vsynch freq (info only) */+	t1 = (res_mode->left_margin + res_mode->xres ++	      res_mode->right_margin + res_mode->hsync_len) / 8;+	t1 *= 8;+	t1 *= res_mode->pixclock;+	t1 /= 1000;+	hsynch = 1000000000L / t1;+	t1 *=+		(res_mode->upper_margin + res_mode->yres ++		 res_mode->lower_margin + res_mode->vsync_len);+	t1 /= 1000;+	vsynch = 1000000000L / t1;++	/* fill in Graphic device struct */+	sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,+		 res_mode->yres, bits_per_pixel, (hsynch / 1000),+		 (vsynch / 1000));+	printf ("%s\n", pGD->modeIdent);+	pGD->winSizeX = res_mode->xres;+	pGD->winSizeY = res_mode->yres;+	pGD->plnSizeX = res_mode->xres;+	pGD->plnSizeY = res_mode->yres;+	switch (bits_per_pixel) {+	case 8:+		pGD->gdfBytesPP = 1;+		pGD->gdfIndex = GDF__8BIT_INDEX;+		break;+	case 15:+		pGD->gdfBytesPP = 2;+		pGD->gdfIndex = GDF_15BIT_555RGB;+		break;+	case 16:+		pGD->gdfBytesPP = 2;+		pGD->gdfIndex = GDF_16BIT_565RGB;+		break;+	case 24:+		pGD->gdfBytesPP = 3;+		pGD->gdfIndex = GDF_24BIT_888RGB;+		break;+	}++	/* statically configure settings */+	pGD->winSizeX = pGD->plnSizeX = 480;+	pGD->winSizeY = pGD->plnSizeY = 640;+	pGD->gdfBytesPP = 2;+	pGD->gdfIndex = GDF_16BIT_565RGB;++	pGD->frameAdrs = LCD_VIDEO_ADDR;+	pGD->memSize = VIDEO_MEM_SIZE;++	board_video_init(pGD);++	lcd->LCDSADDR1 = pGD->frameAdrs >> 1;++	/* This marks the end of the frame buffer. */+	lcd->LCDSADDR2 = (lcd->LCDSADDR1&0x1fffff) + (pGD->winSizeX+0) * pGD->winSizeY;+	lcd->LCDSADDR3 = pGD->winSizeX;++	/* Clear video memory */+	memset(pGD->frameAdrs, 0, pGD->memSize);++	/* Enable  Display  */+	lcd->LCDCON1 |= 0x01;	/* ENVID = 1 */++	return ((void*)&smi);+}++void+video_set_lut (unsigned int index,	/* color number */+	       unsigned char r,	/* red */+	       unsigned char g,	/* green */+	       unsigned char b	/* blue */+    )+{+}++#endif /* CONFIG_VIDEO_S3C2410 */

⌨️ 快捷键说明

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