Kernel
移植
1. make menuconfig
A.
串口改成串口
3
输出打印信息。
(一) (root=/dev/nfs
init=/init
nfsroot=192.168.1.10:/nfs
ip=192.168.1.100
console=ttySAC2,115200
console=ttySAC2,串口 2
输出,必须与下面同时修改
(二) System Type --->S3C UART to use for low-level messages--->2
值设成
2,即串口 2
输出,必须与上面同时修改。
B. Onenand
驱动支持
(一) Device Drivers
--->Memory Technology Device (MTD) support
--->
--->OneNAND Device Support
[*]
<*>
Verify OneNAND page writes
OneNAND Flash device via platform device driver
(二) onenand
的支持
从 贺 超 提 供 的
linux2.6.27
包
drivers\mtd\onenand
目 ½ 复 制
s3c6410.h
,
s3c_onenand.c,s3c_onenand.h
提供对三星
onenand
的支持
(三) Makefile
修改
drivers\mtd\onenand\Makefile
文件最后添加一行:onenand-objs
= s3c_onenand.o,编
译
s3c_onenand.o,连接进内核。
(四)
在
arch\arm\mach-s3c6410\mach-smdk6410.c
中
\\192.168.16.248\
all\home\work\s3c
static struct platform_device pmem_gpu1_device = {
.name = "android_pmem",
.id = 1,
.dev = { .platform_data = &pmem_gpu1_pdata },
};
#endif
的后面添加代码:
/*add by liuyihui 2009-08-21*/
/*
*添加 onenand
驱动支持
*/
/* OneNAND Controller */
/* OneNAND flash controller */
#define S3C64XX_PA_ONENAND
(0x70100000)
#define S3C64XX_SZ_ONENAND
SZ_1M
static struct resource s3c_onenand_resource[] = {
[0] = {
.start = S3C64XX_PA_ONENAND,
.end
= S3C64XX_PA_ONENAND + S3C64XX_SZ_ONENAND - 1,
.flags = IORESOURCE_MEM,
}
};
或者替换新的代码:
arch\arm\plat-s3c64xx\devs.c,
linux/arch/arm/mach-s3c6400/include/mach/map.h
struct platform_device s3c_device_onenand = {
.name
= "onenand",
.id
= -1,
.num_resources
= ARRAY_SIZE(s3c_onenand_resource),
.resource = s3c_onenand_resource,
.dev.platform_data = &s3c_nand_mtd_part_info
};
/*add end*/
在数组
static struct platform_device *smdk6410_devices[] __initdata = {的最后添加:
&s3c_device_onenand /*add by liuyihui 2009-08-21*/
(五)
分区表修改:½
userdata
从
0x0a000000
开始
文件
linux/arch/arm/plat-s3c/include/plat/partition.h
中:
\\192.168.16.248\
all\home\work\s3c
{
.name
= "cache",
.offset
= MTDPART_OFS_APPEND,
.size
=
(67*SZ_1M)+0x1000000,//orig:(67*SZ_1M)/*modified by cefanty 2009-08-21*/
},
(六)
修改
drivers\mtd\onenand\generic.c
复制
drivers\mtd\onenand\generic.c
替换掉。
\\192.168.16.248\
all\home\work\s3c
C. Device Drivers
--->Input device support
--->
[]
Keyboards
--->
(一)
暂时去掉键盘支持,因为键盘占用了
GPK14
口,GPK14 口在
M8
是
USB
供
电开关的
GPIO,拉高才½用 USB
D. Device Drivers
Support
(一)
(二)
(三)
(四)
---> [*] USB support
--->
<*>
USB Gadget
--->
<*> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet supp
Ethernet Gadget (with CDC Ethernet support)
[]
RNDIS support
d.1)选择 Ethernet Gadget (with CDC Ethernet supp,用于把 M8
模拟成½卡,实
现
nfs
挂½½系统。
同时去掉
RNDIS support
支持,
因为
ubuntu
下没有驱动支持。
(五) drivers\usb\gadget\s3c-udc-otg-hs.c
修改为
USB
½用外部晶振
\\192.168.16.248\
all\home\work\s3c
//writel(0x20, S3C_USBOTG_PHYCLK);
2009-08-24*/
/*commented
by
liuyihui
writel(0x00, S3C_USBOTG_PHYCLK);
modified by liuyihui 2009-08-24*/
/*00:USB
½ 用 外 部 晶 振 。
2.
驱动移植和修改
A. LCD
驱动移植
i.
drivers\video\Kconfig,搜索 config FB_S3C_LTS222QV,在后面添加如
下选项
config FB_S3C_LMS340KC01
bool "LMS340KC01"
---help---
TBA
ii.
添加驱动:drivers\video\samsung\s3cfb_lms340kc01.c
\\192.168.16.248\
all\home\work\s3c
a)
b)
复制刘奕辉开发的
s3cfb_lms340kc01.c
驱动到目½
drivers\video\samsung\
在
drivers\video\samsung\Makefile
文件最后添加内容:
obj-$(CONFIG_FB_S3C_LMS340KC01) += s3cfb_lms340kc01.o
修改
drivers\video\samsung\s3cfb_fimd4x.c,在½数 s3cfb_set_gpio
最
后注释代码,添加:
iii.
\\192.168.16.248\
all\home\work\s3c
#if 0/*commented by liuyihui 2009-08-24*/
/* module reset */
if (gpio_is_valid(S3C64XX_GPN(5))) {
err = gpio_request(S3C64XX_GPN(5), "GPN");
if (err) {
printk(KERN_ERR "failed to request GPN for "
"lcd reset control\n");
return err;
}
gpio_direction_output(S3C64XX_GPN(5), 1);
}
mdelay(100);
gpio_set_value(S3C64XX_GPN(5), 0);
mdelay(10);
gpio_set_value(S3C64XX_GPN(5), 1);
mdelay(10);
gpio_free(S3C64XX_GPF(15));
gpio_free(S3C64XX_GPN(5));
#endif
/*add by liuyihui 2009-08-24*/
/*
*打开 M8 LCD
需要用到的
GPIO
口
*/
#if 1 //M8 GPIO set hight
/* module reset *///LCD_nRESET_SHIFT/*4*/
if (gpio_is_valid(S3C64XX_GPQ(4))) {
err = gpio_request(S3C64XX_GPQ(4), "GPQ");
if (err) {
printk(KERN_ERR "failed to request GPQ for "
"lcd reset control\n");
return err;
}
gpio_direction_output(S3C64XX_GPQ(4), 1);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(4));
/* module reset *///LCD_nSS_SHIFT/*5*/
if (gpio_is_valid(S3C64XX_GPQ(5))) {
err = gpio_request(S3C64XX_GPQ(5), "GPQ");
if (err) {
printk(KERN_ERR "failed to request GPQ for "
评论