s3c2440液晶屏驱动 (内核自带) linux-4.1.24
自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c
另一部分在 /drivers/video/fbdev/s3c2410fb.c
先打开调试功能,这样内核在启动的时候,就可以输出这些信息,或者使用 dmesg 查看到这些信息。当然,你配置内核 make menuconfig 也可以打开,但是太麻烦了,不如这样。
#define CONFIG_FB_S3C2410_DEBUG
#define dprintk(msg...) \
do { \
if (debug) \
printk(msg); \
} while ()
使用新内核启动,出现了调试信息,检查是否有错。
lcdcon[1] = 0x00000778
lcdcon[2] = 0x0743c183
lcdcon[3] = 0x0039df13
lcdcon[4] = 0x00000003
lcdcon[5] = 0x00000b01
LCDSADDR1 = 0x19d20000
LCDSADDR2 = 0x19d3fe00
LCDSADDR3 = 0x000001e0
检查时钟设置是否正确 0x00000778>>8 输出 8 ,应该设为 4
s3c2410fb_activate_var()
clkdiv = DIV_ROUND_UP(s3c2410fb_calc_pixclk(fbi, var->pixclock), 2);
配置是按 HCLK 60M 算的 .pixclock = 166667, /* HCLK 60 MHz, divisor 10 */
s3c2410fb_calc_pixclk() 这个函数里面进行计算。
unsigned long clk = fbi->clk_rate;
unsigned long long div;
/* pixclk is in picoseconds, our clock is in Hz
*
* Hz -> picoseconds is / 10^-12
*/
div = (unsigned long long)clk * pixclk;
div >>= 12; /* div / 2^12 */
do_div(div, 625 * 625UL * 625); /* div / 5^12 */
添加打印出 clk 检查是多少 , 果然是 100M
dprintk("pixclk %ld, divisor is %ld clk %d\n", pixclk, (long)div, clk);
return div;
((100000000 * 166667)>>12) / (5**12) = 16
((100000000 * 100000)>>12) / (5**12) = 10
所以 设为 .pixclock = 100000,// HCLK 100M
mach-smdk2440.c 中的修改地方
/* LCD driver info */ static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = { .lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_HWSWP, .type = S3C2410_LCDCON1_TFT, .width = ,
.height = , .pixclock = , /* HCLK 100 MHz, divisor 10 */
.xres = ,
.yres = ,
.bpp = ,
.left_margin = ,
.right_margin = ,
.hsync_len = ,
.upper_margin = ,
.lower_margin = ,
.vsync_len = ,
}; static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays = &smdk2440_lcd_cfg,
.num_displays = ,
.default_display = , /* currently setup by downloader */
.gpccon = 0xaaaaaaaa,
.gpccon_mask = 0xffffffff, .gpdcon = 0xaaaaaaaa,
.gpdcon_mask = 0xffffffff, //.lpcsel = ((0xCE6) & ~7) | 1<<4,
};
因为在里面,不能配置 背光 和 POWER EN 。所以还需要在 s3c2410fb.c 中配置
s3c2410fb_init_registers()
modify_gpio(S3C2410_GPCUP, mach_info->gpcup, mach_info->gpcup_mask);
modify_gpio(S3C2410_GPCCON, mach_info->gpccon, mach_info->gpccon_mask);
modify_gpio(S3C2410_GPDUP, mach_info->gpdup, mach_info->gpdup_mask);
modify_gpio(S3C2410_GPDCON, mach_info->gpdcon, mach_info->gpdcon_mask); //背光控制为 GPB0 配置 为输出引脚
writel(<<, S3C2410_GPBCON);
//默认打开背光
writel(<<, S3C2410_GPBDAT);
//配置 GPG4 为 LCD POWER EN
writel(<<, S3C2410_GPGCON);
参数都是逐个带进去算出来的,这个要看你的液晶屏 datasheet 接线来确定。
最后是试机图:
s3c2440液晶屏驱动 (内核自带) linux-4.1.24的更多相关文章
- s3c2440液晶屏驱动 (非内核自带) linux-4.1.24
对于,不想逐一检查内核自带驱动,想自己编写驱动. 1,make menuconfig 去掉 编译到内核,改为 M 编译为 模块(因为要用到里面的3个.ko 驱动) Device Drivers --- ...
- 所谓的液晶屏驱动IC是单独的IC还是在屏内就集成
所谓的液晶屏驱动IC是单独的IC还是在屏内就集成 时间:2016-12-05 作者:admin 其实无论什么液晶屏,想要正常工作必须包括两个人:玻璃屏+驱动IC:但是现在有一些液晶厂商他们不 ...
- Linux驱动之内核自带的S3C2440的LCD驱动分析
先来看一下应用程序是怎么操作屏幕的:Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户 ...
- 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 单片机中不带字库LCD液晶屏显示少量汉字
单片机中不带字库LCD液晶屏如何显示少量汉字,一般显示汉字的方法有1.使用带字库的LCD屏,2.通过SD 卡或者外挂spi flash存中文字库,3.直接将需要的汉字取模存入mcu的flash中. 第 ...
- nw335 debian sid x86-64 --3 linux内核自带
nw335 debian sid x86-64 --3 linux内核自带
- 酷!微软发布新终端工具,Win 10 将自带 Linux 内核
原创:技术最前线(id:TopITNews) 北京时间 5 月 7 日,2019 年微软 Build 开发者大会在雷德蒙德召开.今年大会上亮点很多,本文汇总一些和开发者相关的内容. 1. Window ...
- 联盛德 HLK-W806 (六): I2C驱动SSD1306 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- S3C2440上LCD驱动(FrameBuffer)实例开发讲解
一.开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 ...
随机推荐
- 【手把手教你Maven】构建过程
Maven是一款进行 依赖管理.项目构建.信息管理 为一体的工具. 它不像Make具有复杂的命令.也不像Ant需要手动编写大量的重复代码就能进行项目的构建: 还能提供强大的依赖库管理,避免jar包混乱 ...
- poj2389-Bull Math(大整数乘法)
一,题意: 大整数乘法模板题二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输出) 三,步骤: 如:555 x 35 = 19425 5 5 5 5 5 ...
- finally类
finally叫做最后的执行快,什么是最后的执行快?他的意思是这样的 他是写在try catch 的后面但是只能写一个,他设计这个finally的意思就是,如果try里面出错肯定会往陷阱里 面跑.没有 ...
- Codeforces Round #384 (Div. 2) ABCD
一场比较简单的div2 电脑出了点问题 所以在比赛中理论ac了ACD 除了爆int这种事情之外.. A 一个人想从a到b 移动的花费这么定义 如果初始点和到达点类型相同 就不花钱 反之花距离差的绝对值 ...
- Windows自带压缩解压工具
压缩一个文件: 命令行:makecab fileName.txt fileName.zip 鼠标操作:选中文件-->鼠标右键-->Send to-->Compressed (zipp ...
- Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION An SMP operating syst ...
- ArcGIS Server,rest路径输入要素json 格式描述
以下内容只测试了简单线, 在ArcGIS Server 的rest路径下可以对服务进行操作,如Query等,这些操作可以输入json 格式要素描述或运行得到即输出json格式要素描述. 如博客:htt ...
- 贪吃蛇的java代码分析(一)
自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步.今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天 ...
- AJAX的封装(包括跨域问题)
注意: 1.同域下支持get和post方法 2.跨域问题必须得到后台的支持 3.跨域只支持get方法 function AJAX(obj){ //做网络请求的时候,参数以"对象"的 ...
- 读懂UI设计的心理学
好文转载,版权归原作者 作为UI设计师,对待用户就像对待婴儿,知道如何通过界面设计诱导用户非常重要,这就需要了解心理学方面的知识了.今天分享一篇日本设计师的好文,结合心理学与设计,教你读懂心理学,提高 ...