Real6410移植linux-2.6.39.1记录(2)-LCD驱动移植
// 主题:Real6410移植linux-2.6.39.1
// 作者:kevinjz2010@gmail.com
// 版权:kevinjz原创
// 平台:linux-2.39.1 real6410 (real6410开发板)
// 发布日期:2011-06-23
// 最后修改:2011-06-23
// 注意事项:欢迎转载,但不得在转载的时候擅自修改、删除文章的任何部分
//-------------------------------------------------------------------------------------------------
参考REAL论坛的移植步骤
1、首先,修改mach-real6410.c文件
添加所需头文件:
#incldeu <linux/fb.h>
#include <video/platform_lcd.h>
#include <mach/regs-fb.h>
#include <plat/fb.h>
#include <mach/regs-gpio.h>
#include <mach/regs-modem.h>
另外需要将28内核中的regs-lcd.h复制到plat/
2、加入设备初始化代码
static struct s3c_fb_pd_win real6410_fb_win[] = {
/* {
.win_mode = { 4.3" 480x272
.left_margin = 3,
.right_margin = 2,
.upper_margin = 1,
.lower_margin = 1,
.hsync_len = 40,
.vsync_len = 1,
.xres = 480,
.yres = 272,
},
.max_bpp = 32,
.default_bpp = 16,
}, */
{
.win_mode = { /* 7.0" 800x480 */
.left_margin = 8,
.right_margin = 13,
.upper_margin = 7,
.lower_margin = 5,
.hsync_len = 3,
.vsync_len = 1,
.xres = 800,
.yres = 480,
},
.max_bpp = 32,
.default_bpp = 16,
},
};//根据所用的显示屏尺寸更改
static struct s3c_fb_platdata real6410_lcd_pdata __initdata = {
.setup_gpio = s3c64xx_fb_gpio_setup_24bpp,
.win[0] = &real6410_fb_win[0],
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
};
static struct map_desc real6410_iodesc[] = {
{
/* LCD support */
.virtual = (unsigned long)S3C_VA_LCD,
.pfn = __phys_to_pfn(S3C_PA_FB),
.length = SZ_16K,
.type = MT_DEVICE,
},
};
在platform_device中加入
&s3c_device_fb,
在real6410_map_io中加入
s3c64xx_init_io(real6410_iodesc, ARRAY_SIZE(real6410_iodesc));
/* set the LCD type */
tmp = __raw_readl(S3C64XX_SPCON);
tmp &= ~S3C64XX_SPCON_LCD_SEL_MASK;
tmp |= S3C64XX_SPCON_LCD_SEL_RGB;
__raw_writel(tmp, S3C64XX_SPCON);
/* remove the LCD bypass */
tmp = __raw_readl(S3C64XX_MODEM_MIFPCON);
tmp &= ~MIFPCON_LCD_BYPASS;
__raw_writel(tmp, S3C64XX_MODEM_MIFPCON);
在real6410_machine_init加入注册代码
s3c_fb_set_platdata(&real6410_lcd_pdata);
3、修改/mach-s3c64xx/map.h,加入
#define S3C64XX_VA_HOSTIFA S3C_ADDR(0x00B00000)
#define S3C64XX_PA_HOSTIFA (0x74000000)
#define S3C64XX_SZ_HOSTIFA SZ_1M
#define S3C64XX_VA_HOSTIFB S3C_ADDR(0x00C00000)
#define S3C64XX_PA_HOSTIFB (0x74100000)
#define S3C64XX_SZ_HOSTIFB SZ_1M
4、修改plat-samsung/dev-fb.c,加入
static struct s3c_platform_fb default_fb_data __initdata = {
.hw_ver = 0x40,
.clk_name = "lcd",
.nr_wins = 5,
.default_win = CONFIG_FB_S3C,
.swap = FB_SWAP_HWORD,
};
并注意s3c_device_fb中的设备名称必须和驱动中的名称相对应,否则驱动不会被加载
修改plat/fb.h
#define FB_SWAP_WORD (1 << 24)
#define FB_SWAP_HWORD (1 << 16)
#define FB_SWAP_BYTE (1 << 8)
#define FB_SWAP_BIT (1 << 0)
struct s3c_platform_fb {
int hw_ver;
const char clk_name[16];
int nr_wins;
int nr_buffers[5];
int default_win;
int swap;
void (*cfg_gpio)(struct platform_device *dev);
int (*backlight_on)(struct platform_device *dev);
int (*reset_lcd)(struct platform_device *dev);
};
4、在plat/map-base.h加入
#define S3C_VA_LCD S3C_ADDR(0x01100000) /* LCD */
5、将28内核中/drivers/video/中samsung文件夹拷贝至相对应目录
6、修改video中的Kconfig,
加入source “drivers/video/samsung/Kconfig”,并将CONFIG_FB_S3C改成别的名字。
7、修改video中的Makefile,加入
:obj-$(CONFIG_FB_S3C) += SAMSUNG/
8、配置内核
$make menuconfig
在 device drivers->Graphics support->Support for frame buffer devices中选中
S3C Framebuffer Support
S3C Lcd Support Advanced options for S3C Framebuffer
Select BPP(Bits Per Pixel) (16 BPP) --->
Number of Framebuffers(4)
Enable Virtual Screen Enable Double Buffering
9、编译会有很多错误,大多是头文件的位置问题
10、修改samsung/Makefile,屏蔽obj-$(CONFIG_FB_S3C_VIDEO) += ch7026.o,以及s3cfb_video.c中的ch7026_init();
11、s3cfb_fimd4x.c中的错误按照REAL论坛上的修改,并将1222行屏蔽。
12、s3cfb.c中的驱动名称和之前设备名称需要对应
13、内核启动参数:
setenv bootargs noinitrd root=/dev/mtdblock0 console=ttySAC0 init=/linuxrc video=fb:AT070TN83
Real6410移植linux-2.6.39.1记录(2)-LCD驱动移植相关推荐
- 移植Linux(ucLinux)到GBA的记录
移植Linux(ucLinux)到GBA的记录 v1.0 teawater@hotmail.com 1.感谢 向所有直接和间接帮助过我的的朋友们表示衷心的感谢,因为人数太多我就不一一提到了. 2.写在 ...
- linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...
编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...
- 移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来: (1)首先打一个补丁:s3c2410_touchscreen.patch, 在内核解压的根目录下 patch -N ...
- linux-2.6.32在mini2440开发板上移植 ---W35型LCD驱动移植
转载:http://blog.csdn.net/viewsky11/article/details/11846359 编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了 ...
- [lcm] Qualcomm平台的显示屏lcd驱动移植步骤
1lk部分 1-1 target_displayc 1-2 oem_panelc 1-3 panel_innont51021b_1200p_videoh 2Kernel 2-1 dsi-panel-b ...
- STM32MP157 Linux系统移植开发篇14:Linux内核RGB LCD驱动移植
本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...
- Linux环境下使用WIFI模块:WIFI驱动移植
WIFI驱动移植 实验平台 内核版本:Linux-4.19.5 开发板:SAMSUNG JZ2440 WIFI模块:Ralink rt3070 查看WIFI设备的PID 直接将WIFI模块接到电脑的U ...
- Barebox for Tiny6410(LCD驱动移植)
一.目的 熟悉Barebox的Frame buffer框架.LCD驱动的移植和测试命令的编写. 二.主要内容 1.1 为Barebox移植基于Tiny6410的LCD驱动. 1.2 编写lcd命令测试 ...
- LCD驱动移植之开机logo
移植环境 BootLoader:u-boot-1.1.6 kernel:linux-2.6.30.4 CPU:s3c2440 开发板:TQ2440 LCD:TFT480*272 参考资料:<天嵌 ...
- 基于正点原子F103精英板和CubeIDE的Hal库LCD驱动移植(从零开始)
最近在学习王维波老师的<STM32Cube高效开发教程>,王老师移植的是普中科技的驱动,而我手动移植了一下正点原子的lcd驱动,看了网上的诸多教程,有的博客存在一些bug,于是乎手动整理了 ...
最新文章
- 激活函数之ReLU/softplus介绍及C++实现
- Spring Cloud JWT文件生成
- python下载文件到指定目录-Python获取指定文件夹下的文件名的方法
- C# linq创建嵌套组
- EOS 消息设计(2)并行处理
- 考驾照重点科目的关键考试技巧
- 详细解析RxAndroid的使用方式
- InnoDB Plugin 1.0.2 for MySQL 5.1.30 (GA) Released
- Linux c中一些常用函数总结(c语言中文网。。。)
- im即时通讯软件app源码-仿微信-开发日记
- FinePrint双面打印设置
- Java去除使用富文本编辑器时自动生成的标签
- 海尔计算机显卡驱动,海尔t621显卡驱动(最新更新)海尔t68d显卡驱动
- 聊一聊积分墙的那些事儿
- php js广告,JavaScript_用JS调用谷歌 AdSense广告的方法, 具体的google广告的js文件做 - phpStudy...
- 百度收录批量查询_如何查看网站是否被收录?
- 金三银四跳槽季,教你这几招提高面试成功率
- Host文件的使用与说明
- pytorch 模型model 的一些常用属性和函数说明
- 小游戏类项目 —— 扫雷