allwinner A10平台下的ar6302驱动移植


     前段时间接手公司的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详细沟通,最好是能够叫过来现场同步调试,否则沟通不畅,非常的耽误事。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值