`
xitong
  • 浏览: 6177292 次
文章分类
社区版块
存档分类
最新评论

OK6410、2.6.36.2 USB_host 支持

 
阅读更多

CSDN_Acanoe 的博客:http://blog.csdn.net/ACanoe

可能不算什么移植了,参考了 CSDN 博友的博客。

硬件环境:OK6410 A板。 主机环境:XP, VMware Ubuntu10.10。 移植内核版本:Linux2.6.36.2。 驱动参考:飞凌提供的内核。

对于USB-HOST功能:

其实2410的OHCI驱动已经相当完善,但是由于OK6410来说,还需要一个48M 的时钟信号产生,才能使能USB-HOST功能

第一步,在mach-ok6410.c里面添加头文件

#include <plat/regs-usb-hsotg-phy.h>
#include <plat/clock.h>

然后在任意一个地方添加

#ifdef CONFIG_USB_SUPPORT
void s3c_hsotg_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); /* Finish the reset */
  udelay(5);
 } else {
  __raw_writel(0x19, S3C_PHYPWR); /* Power down */
 }
}
EXPORT_SYMBOL(s3c_hsotg_phy_config);
#endif

这段代码是参靠飞凌的,而这段代码实现的就是一个输出48M时钟信号的开关,当enable=1时,执行enable部分的代码,使能48M时钟信号输出,当enable=0时,执行else部分的代码,就禁止48M时钟信号,最后还需要在ok6410_machine_init(void)单板初始化函数里面添加48M时钟使能信号:

s3c_hsotg_phy_config(1);

以及在硬件初始化函数*ok6410_devices[] __initdata里面添加&s3c_device_usb_hsotg,默认下*ok6410_devices[] __initdata里面已经添加了&s3c_device_ohci,所以我们不需要再添加了。

而对于这个函数的实现是在/drivers/usb/目录下的相应的驱动函数里定义的,不需要去自己写。

最后就是在MAKE MENUCONFIG时,选中USB选项里面的相关项目就行了:

DEVICE DRIVERS--------->

<*> Support for Host-side USB

[*] USB verbose debug messages
[*] USB announce new devices
*** Miscellaneous USB options ***
[*] USB device filesystem (DEPRECATED)
[*] USB device class-devices (DEPRECATED)

<*> OHCI HCD support

好了,到这里,就完成了 OK6410的LINUX2.6.39.2的USB-OTG功能了,编译,运行,试试,呵呵,如果你们想看相关驱动代码的话,就直接到/linux2.6.39.2/drivers/usb/core以及/linux2.6.39.2/drivers/usb/host里面看看

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics