在
linux2.6.14
里面已经包含了
s3c2410
的
usb
驱动,我们只要对
usb
进行必要的初始化就可以使用了,打开
/linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c,
在这个文件里增加包含文件:
#include 3c2410/regs-clock.h>
增加
usb
的初始化,如下:
static struct s3c2410_hcd_info usb_hfrk_info = {
.port[0] = {
.flags = S3C_HCDFLG_USED
},
.port[1] = {
.flags = S3C_HCDFLG_USED
},
};
int usb_hfrk_init(void)
{
unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(0x03);
printk("USB Control, (c) 2006 hfrk\n");
s3c_device_usb.dev.platform_data = &usb_hfrk_info;
__raw_writel(upllvalue,S3C2410_UPLLCON);
return 0;
}
在
smdk2410_map_io
调用
usb
的初始化,如下所示:
static void __init smdk2410_map_io(void)
{
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
s3c24xx_init_clocks(0);
s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
s3c24xx_set_board(&smdk2410_board);
usb_hfrk_init();
}
这样我们对
usb
的初始化就完成了,重新编译,
usb
接口就可以使用了。