zt SM501显卡驱动移植(http://www.sinklow.com/blog/article.asp?id=187)

 SM501显卡驱动移植

http://www.sinklow.com/blog/article.asp?id=187

 

 

1. 修改fbmem.c代码文件
将厂商提供的voyager.c和voyager.h文件放入linux/drivers/video目录中
修改linux/drivers/video目录中的fbmem.c文件
在fb_drivers结构申明之前加入如下代码:

  extern int voyager_init(void);

在fb_drivers结构中,添加如下代码:

 #ifdef CONFIG_FB_VOYAGER
  /*
   * Silicon Motion, Inc. VOYAGER frame buffer device.
   */
  { "voyager", voyager_init, NULL },
 #endif


2. 修改"Makefile"和"Config.in"
修改linux/drivers/video目录下的"Makefile"文件,在申明驱动的区域加入如下内容:

 obj-$(CONFIG_FB_VOYAGER) += voyager.o

修改linux/drivers/video目录下的"Config.in"文件,加入如下内容:

   bool ' Silicon Motion, Inc. VOYAGER graphics console' CONFIG_FB_VOYAGER


3. 修改与开发板相关的内核及驱动代码
当前开发板使用PXA255芯片,与驱动中测试的Accelent开发板芯片相同,当前开发板使用的片选信号为CS5,SM501的SDRAM为4M。屏为12.1寸液晶,屏使用的参数为800 X 600,16BPP。

修改voyager.h:
屏的参数

#define SCREEN_X_RES  800
#define SCREEN_Y_RES  600
#define SCREEN_BPP  16
#define isACCELENT  1 /*开启Accelent板的代码*/
#define FB_PHYSICAL_ADDR 0x14000000 /*CS5的起始地址为SDRAM的地址*/
#define REG_PHYSICAL_ADDR 0x17E00000 /*CS5的最后2M为SM501寄存器地址*/

修改voyager.c的voyager_init函数:

u_long smem_size的值改为4M

将针对ACCELENT代码修改为适合当前开发板,修改如下:

#if isACCELENT
 {
 MSC2 &= 0x0000ffff;
 MSC2 |= 0x92040000; // 0x92340000
 MDREFR |= 0x01010000;  // Set free running clock and SDCLK[1] to 100MHz
 LCCR0 |= LCCR0_DIS;  // BIT:10 DISABLE lcd CONTROLLER
 GAFR2_L = (GAFR2_L & ~0x30000000) | 0x20000000;
 GAFR0_U = (GAFR0_U & ~0x30) | 0x10;
 GAFR1_U = (GAFR1_U & ~0xf) | 0xa;
 }
#endif //isACCELENT

修改arch/arm/mach-pxa/xhyper255.c,映射物理地址
在xhyper255_io_desc结构中,添加

{ 0xF0700000, 0x14000000, 0x00400000, DOMAIN_IO,0,1,0,0}, // CS5 : SM501 SDRAM
{ 0xF0C00000, 0x17E00000, 0x00200000, DOMAIN_IO,0,1,0,0}, // CS5 : SM501 REG


注:因产商驱动代码的测试平台基于PXA255芯片,和当前开发板相似,所以相应的寄存器代码改动较少。SM501与显示驱动相关的寄存器主要在System Configuration和Display Controller中,具体数值参见《SM501 MMCC Databook》。

4. 配置内核参数
打开"Character devices"中的

"Virtual Terminal"
"Support for console on virtual terminal"


打开"Console drivers"下"Frame-buffer support"中的

"Support for frame buffer devices (EXPERIMENTAL)"
"Silicon Motion, Inc. VOYAGER graphics console"
"Advanced low level driver options"
  "Monochrome support"
  "2 bpp packed pixels support"
  "4 bpp packed pixels support"
  "8 bpp packed pixels support"
  "16 bpp packed pixels support"
  "24 bpp packed pixels support"
  "32 bpp packed pixels support"
"Select compiled-in fonts"
  "VGA 8x8 font"


注:本驱动移植基于Linux2.4.18版本的内核。
附:测试Frame Buffer的一个应用程序 FBTools

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值