allwinner A10平臺下的ar6302驅動移植

yangzhao0001發表於2015-09-08


轉載網址:http://blog.csdn.net/ordoss/article/details/7776368


 前段時間接手公司的allwinner平臺的開發工作。在移植ar6302驅動的時候遇到一些小問題,在這裡記錄一下權作複習。


    全智平臺內建了ar6302的驅動,手上版本是build_3.1_RC.329 ,新增驅動很簡單。在device裡面的boardconfig中把註釋掉的相關選項開啟即可。
然後是kernel 中的修改。將驅動中讀取韌體的目錄修改成當前系統指向的目錄。並且在/arch/arm/mach-sun4i/devices.c中新增平臺裝置驅動。


並在
code:
static struct platform_device *sw_pdevs[] __initdata = {
&debug_uart,
&sw_pdev_dmac,
&sw_pdev_nand,
&sun4i_twi0_device,
&sun4i_twi1_device,
&sun4i_twi2_device,
};


中新增寫好的驅動函式名。


接下來是上電,ar6302使用sdio通訊。上電通過mmc來進行。


在/driver/mmc/mmc-pm中,仿照mmc_pm_rt18723as.c 寫了一個上電驅動。
並且在mmc_pm.c中的probe函式中新增上初始化程式碼


shwn pin 預設為高,根據規格書要求,先拉低shdn pin ,然後拉高3.3v的電,最後再拉高shwn pin,完成初始化上電。


關於電源管理的問題。




在wlan_config.h中,相關設定,觀察可得,ar6302支援3種模式:


1、cut power模式(全智預設是此模式,進入休眠狀態的時候直接把wifi ic 的電源斷掉,缺點也很明顯,就是resume 的時候要重新上電,響應速度較慢)


2、deep sleep模式 


3、wow模式(支援網路喚醒)


在wlan_config.h中選擇cut power模式以後。需要mmc 的電源管理驅動中,對進入休眠和喚醒以後重新上電的順序進行編排。這裡不能嚴格按照規格書中的上下點順序來。


正確的順序是:


1、休眠狀態下,先拉低 3.3v 的電,然後拉低shdn pin。
2、在喚醒狀態下,先拉高3.3v 的電,然後拉高shdn pin。


至此,AR6302的移植全部完成,能夠正常的工作。

本次移植的經驗是,一定要和廠家的FAE詳細溝通,最好是能夠叫過來現場同步除錯,否則溝通不暢,非常的耽誤事。




相關文章