整理USB的内容的内容已经几天了,写点东西作为总结。全部内容分三部分,第一部分主要内容是USB驱动在Linux系统中的具体实现方法;第二部分参考《Linux设备驱动程序(第三版)》中的内容总结USB驱动的结构;最后,总结一下USB协议。
一、 首先是对USB设备的得支持。
1、viarch/arm/mach-s3c64xx/mach-mini6410.c
在mach-mini6410.c中添加该函数,实现对时钟的初始化。在USB host 初始化的过程中没有对OTG时钟未进行初始化,所以在使用USB供能前先添加次设置。
#ifdefCONFIG_USB_SUPPORT
/* InitializesOTG Phy. to output 48M clock */
voids3c_otg_phy_config(int enable) {
u32 val;
if (enable) {
__raw_writel(0x0, S3C_PHYPWR); /* Power up */
val = __raw_readl(S3C_PHYCLK);
val &=~S3C_PHYCLK_CLKSEL_MASK;
__raw_writel(val, S3C_PHYCLK);
__raw_writel(0x1, S3C_RSTCON);
udelay(5);
__raw_writel(0x0, S3C_RSTCON);