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 接口就可以使用了。