硬件環境: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>
然後在任意一個地方添加
這段代碼是參靠飛凌的,而這段代碼實現的就是一個輸出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裡面看看。