/********************************************************************************
* I.MX6 AW-NB177NF WIFI 驱动移植问题
* 说明:
* 之前驱动移植,但看不到有wlan设备产生,于是感觉是wifi驱动出了问题,于是开始
* 分析厂家提供的wifi驱动,发现id对应的信息不对,经过与FAE确认之后并验证,确实是
* 这个问题导致的。
*
* 2016-6-20 深圳 南山平山村 曾剑锋
*******************************************************************************/ 一、参考文档:
. AW-NB177NF-DS-BC-Rev0.3_single Ant.pdf
. 基于linux-2.6..8内核的SDIO/wifi驱动分析(转)
http://www.cnblogs.com/hoys/archive/2013/01/09/2853715.html 二、wifi 驱动注册设备驱动的id相关代码:
......
static const struct sdio_device_id sdio_ids[] =
{
#ifdef CONFIG_RTL8723B
{ SDIO_DEVICE(0x024c, 0xB723),.driver_data = RTL8723B},
#endif
#ifdef CONFIG_RTL8188E
{ SDIO_DEVICE(0x024c, 0x8179),.driver_data = RTL8188E},
#endif //CONFIG_RTL8188E #ifdef CONFIG_RTL8821A
{ SDIO_DEVICE(0x024c, 0x8821),.driver_data = RTL8821},
#endif //CONFIG_RTL8821A #ifdef CONFIG_RTL8192E
{ SDIO_DEVICE(0x024c, 0x818B),.driver_data = RTL8192E},
#endif //CONFIG_RTL8192E #if defined(RTW_ENABLE_WIFI_CONTROL_FUNC) /* temporarily add this to accept all sdio wlan id */
{ SDIO_DEVICE_CLASS(SDIO_CLASS_WLAN) },
#endif
{ /* end: all zeroes */ },
};
......
#define SDIO_DEVICE(vend,dev) \
.class = SDIO_ANY_ID, \
.vendor = (vend), .device = (dev)
......
#define SDIO_ANY_ID (~0)
...... 三、获取SDIO设备信息代码位置如下:
static int sdio_init_func(struct mmc_card *card, unsigned int fn)
{
int ret;
struct sdio_func *func; BUG_ON(fn > SDIO_MAX_FUNCS); func = sdio_alloc_func(card);
if (IS_ERR(func))
return PTR_ERR(func); func->num = fn; if (!(card->quirks & MMC_QUIRK_NONSTD_SDIO)) {
ret = sdio_read_fbr(func);
if (ret)
goto fail; ret = sdio_read_func_cis(func);
if (ret)
goto fail;
} else {
func->vendor = func->card->cis.vendor;
func->device = func->card->cis.device;
func->max_blksize = func->card->cis.blksize;
} card->sdio_func[fn - ] = func; printk("check sdio, func->vendor: 0x%x, func->device: 0x%x, func->max_blksize: 0x%x.\n", func->vendor, func->device, func- >max_blksize);
return ; fail:
/*
* It is okay to remove the function here even though we hold
* the host lock as we haven't registered the device yet.
*/
sdio_remove_func(func);
return ret;
} 四、SDIO驱动获取到的信息:
func->vendor: 0x24c, func->device: 0x626, func->max_blksize: 0x200. 五、解决办法:
{ SDIO_DEVICE(0x024c, 0x626),.driver_data = RTL8723B}, 六、查看结果:
root@android:/ # busybox ifconfig -a
can0 Link encap:UNSPEC HWaddr ---------------
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B)
Interrupt: can1 Link encap:UNSPEC HWaddr ---------------
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B)
Interrupt: ip6tnl0 Link encap:UNSPEC HWaddr ---------------
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (686.9 KiB) TX bytes: (686.9 KiB) sit0 Link encap:IPv6-in-IPv4
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) tunl0 Link encap:UNSPEC HWaddr ---------------
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) wlan0 Link encap:Ethernet HWaddr :A5:::6E:
BROADCAST MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (0.0 B) root@android:/ # 七、Linux kernel log:
RTL871X: module init start
RTL871X: rtl8723bs v4..16_13854.20150410_BTCOEX20150119-
RTL871X: build time: Jun ::
RTL871X: rtl8723bs BT-Coex version = BTCOEX20150119-
RTL871X: module init ret=
......
check sdio, func->vendor: 0x24c, func->device: 0x626, func->max_blksize: 0x200.
mmc2: new high speed SDIO card at address
......
RTL871X: register rtw_netdev_ops to netdev_ops
RTL871X: rtw_hal_config_rftype RF_Type is TotalTxPath is
RTL871X: Chip Version Info: CHIP_8723B_Normal_Chip_TSMC_B_CUT_1T1R_RomVer()
RTL871X: EEPROM type is E-FUSE
RTL871X: SetHwReg8723B: bMacPwrCtrlOn=
RTL871X: PowerOnCheck: val_mix:0x0000063f, res:0x0000063f
RTL871X: PowerOnCheck: 0x100 the result of cmd52 and cmd53 is the same.
RTL871X: PowerOnCheck: 0x1B8 test Pass.
RTL871X: _ReadAdapterInfo8723BS, 0x4e=0xe2
RTL871X: hal_EfuseSwitchToBank: Efuse switch bank to
RTL871X: hal_ReadEFuse_WiFi: data end at address=0xad
RTL871X: Efuse Realmap:
0D
2F 2F 2F 2E 2E E0 FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D E0 FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF 2C FF FF
FF FF FF FF FF FF FF FF
3E FF 4C
0C FF 0C 2A
FF FF EB 6E FF A5 6E
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
RTL871X: Hal_EfuseParseBTCoexistInfo_8723B: Enable BT-coex, ant_num=
RTL871X: Hal_EfuseParsePackageType_8723B phy efuse read 0x1FB =fc
RTL871X: PackageType = 0x4
RTL871X: Hal_EfuseParseVoltage_8723B hwinfo[EEPROM_Voltage_ADDR_8723B] =
EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: (null)
RTL871X: Hal_EfuseParseVoltage_8723B pHalData->adjuseVoltageVal =
RTL871X: AutoloadFail =,
RTL871X: pHalData->EEPROMRFGainVal=f0
RTL871X: EEPRORFGainOffset = 0x29
RTL871X: SetHwReg8723B: bMacPwrCtrlOn=
RTL871X: <==== _ReadAdapterInfo8723BS in ms
RTL871X: Hal_ChannelPlanToRegulation ChannelPlan:0x20,Regulation(2_4G/5G):0x03,0x03
RTL871X: init_channel_set ChannelPlan ID Chan num:
EXT4-fs (mmcblk0p4): warning: checktime reached, running e2fsck is recommended
RTL871X: rtw_alloc_macid(eth%d) if1, hwaddr:ff:ff:ff:ff:ff:ff macid:
RTL871X: rtw_register_early_suspend
RTL871X: Init_ODM_ComInfo_8723b(): fab_ver= cut_ver=
RTL871X: rtw_macaddr_cfg mac addr::a5:::6e:
RTL871X: bDriverStopped:, bSurpriseRemoved:, bup:, hw_init_completed:
RTL871X: rtw_ndev_init(wlan0)
RTL871X: _rtw_drv_register_netdev, MAC Address (if1) = :a5:::6e:
......
八、Linux 命令行打开wifi:
root@android:/ # netcfg
lo UP 127.0.0.1/ 0x00000049 :::::
can0 DOWN 0.0.0.0/ 0x00000080 :::::
can1 DOWN 0.0.0.0/ 0x00000080 :::::
tunl0 DOWN 0.0.0.0/ 0x00000080 :::::
sit0 DOWN 0.0.0.0/ 0x00000080 :::::
ip6tnl0 DOWN 0.0.0.0/ 0x00000080 :::::
wlan0 DOWN 0.0.0.0/ 0x00001002 :a5:::6e:
root@android:/ # busybox ifconfig wlan0 up
RTL871X: +871x_drv - drv_open, bup=
RTL871X: FW does not exist before power on!!
RTL871X: SetHwReg8723B: bMacPwrCtrlOn=
RTL871X: PowerOnCheck: val_mix:0x0000063f, res:0x0000063f
RTL871X: PowerOnCheck: 0x100 the result of cmd52 and cmd53 is the same.
RTL871X: PowerOnCheck: 0x1B8 test Pass.
RTL871X: Power on ok!
RTL871X: rtl8723b_FirmwareDownload fw: FW_NIC, size:
RTL871X: rtl8723b_FirmwareDownload: fw_ver= fw_subver= sig=0x5301, Month=, Date=, Hour=, Minute=
RTL871X: rtl8723b_FirmwareDownload(): Shift for fw header!
RTL871X: polling_fwdl_chksum: Checksum report OK! (, 0ms), REG_MCUFWDL:0x00070305
RTL871X: _8051Reset8723: Finish
RTL871X: _FWFreeToGo: Polling FW ready OK! (, 30ms), REG_MCUFWDL:0x000702c6
RTL871X: FWDL success. write_fw:, 300ms
RTL871X: <=== rtl8723b_FirmwareDownload()
RTL871X: HalDetectPwrDownMode(): PDN=
RTL871X: Set RF Chip ID to RF_6052 and RF type to .
RTL871X: _init_available_page_threshold(): Enable Tx FIFO Page Threshold H:0x7a7a,N:0x7575,L:0x7575
RTL871X: ===>phy_SwChnl8723B: Channel =
RTL871X: pDM_Odm TxPowerTrackControl =
RTL871X: ===>phy_SwChnl8723B: Channel =
RTL871X: #### hw_var_set_opmode() - iface_type() mode = ####
RTL871X: Using the default RF gain.
RTL871X: MAC Address = :a5:::6e:
RTL871X: start rtl8723bs_xmit_thread(wlan0)
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: -871x_drv - drv_open, bup=
ADDRCONF(NETDEV_UP): wlan0: link is not ready
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
root@android:/ # RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: rtl8723b_c2h_packet_handler: C2H, ID= seq= len=
RTL871X: IsBtDisabled=, IsBtControlLps=
RTL871X: ==>rtw_ps_processor .fw_state()
RTL871X: ==>ips_enter cnts:
RTL871X: nolinked power save enter
RTL871X: ===> rtw_ips_pwr_down...................
RTL871X: ====> rtw_ips_dev_unload...
RTL871X: rtl8723bs_hal_deinit: issue H2C to FW when entering IPS
RTL871X: rtl8723b_set_FwPwrModeInIPS_cmd()
RTL871X: rtl8723bs_hal_deinit polling REG_HMETFR=0x4, cnt=
RTL871X: rtl8723bs_hal_deinit polling REG_HMETFR=0x0, cnt=
RTL871X: rtl8723bs_hal_deinit: write rpwm=
RTL871X: rtl8723bs_hal_deinit polling 0x100=0xea, cnt=
RTL871X: polling done when entering IPS, check result : 0x100=0xea, cnt=, MAC_1cc=0xea
RTL871X: <=== rtw_ips_pwr_down..................... in 70ms root@android:/ # netcfg
lo UP 127.0.0.1/ 0x00000049 :::::
can0 DOWN 0.0.0.0/ 0x00000080 :::::
can1 DOWN 0.0.0.0/ 0x00000080 :::::
tunl0 DOWN 0.0.0.0/ 0x00000080 :::::
sit0 DOWN 0.0.0.0/ 0x00000080 :::::
ip6tnl0 DOWN 0.0.0.0/ 0x00000080 :::::
wlan0 UP 0.0.0.0/ 0x00001043 :a5:::6e:

I.MX6 AW-NB177NF WIFI 驱动移植问题的更多相关文章

  1. EP-N8530S USB WIFI 驱动移植

    /*********************************************************************** * EP-N8530S USB WIFI 驱动移植 * ...

  2. wifi 驱动移植范例

    .改Makefile:  里面没有dm6441平台的,我看到有dm6446的,所以就在这里改了 ifeq ($(PLATFORM),DM6446) LINUX_SRC = /root/work/lin ...

  3. android wifi驱动移植详细过程

    转自:http://bbs.imp3.net/thread-10558924-1-1.html 对于刚入手android没多久的人来说,android wifi 驱动的移植确实还是有难度的,不过参考了 ...

  4. Android平台开发-WIFI 驱动移植 -- 详细

    一.WIFI的基本架构(代码路径)     1.WIFI Settings应用程序:       packages/apps/Settings/src/com/android/settings/wif ...

  5. wifi驱动移植

    目标板:Hi3518 内核版本:linux3.0.8   1.修改makefile #PLATFORM = PC //注释掉 PLATFORM = HI3518 //支持平台 ifeq ($(PLAT ...

  6. I.MX6 WIFI wireless_tools 移植

    /******************************************************************************** * I.MX6 WIFI wirel ...

  7. WIFI驱动的移植 realtek 8188

    一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为例到官网下载相应的驱动, 解压后可以 ...

  8. I.MX6 SHT20 Linux 驱动移植

    /*********************************************************************** * I.MX6 SHT20 Linux 驱动移植 * ...

  9. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

随机推荐

  1. 精通python网络爬虫之自动爬取网页的爬虫 代码记录

    items的编写 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentati ...

  2. Jquery表单序列化和json操作

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Shannon-Fano-Elias编码的C语言实现

    Shannon-Fano-Elias编码 一.理论分析 Shannon-Fano-Elias编码是利用累积分布函数来分配码字. 不失一般性,假定取X={1,2,-m}.如果对于全部的x,有p(x)&g ...

  4. BUPT复试专题—旋转图像(2014)

    题目描述 将一幅只含有01像素点的图片进行顺时针旋转,旋转的角度仅包含0°,90°,180°,270° 输入 第一行一个整数T(<50)表示输入的组数 每组测试数据第一行是两个整数N和M(< ...

  5. 使用UltraISO刻录自己的音乐CD步骤

    1.文件->新建->音乐光盘映像. 2.在左下方,“本地目录”中,找到音乐所在目录,右下方会出现mp3等音乐文件. 3.在右下方,点击音乐文件,右键选“添加”.音乐文件会出现在右上方窗口里 ...

  6. palindrome-partitioning I&II——回文切割、深度遍历

    I: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

  7. 如何在List集合中去重

    众所周知List集合中的元素是有序的,但是List中的元素同样是可以重复的,那么我们应该怎么在List集合中去重呢? 方法一: 对于方法一而言,这也许是一个小窍门.利用的是Set集合中不允许出现重复的 ...

  8. html5 式程序员表白

    html5 式程序员表白 王海庆 于 星期三, 04/06/2014 - 00:44 提交 今天是个好日子,2014年5月20日,表白的最佳时机,虽说孩子已经四岁.结婚已经五年.可是也不能够偷懒.于是 ...

  9. 手机号码归属地查询免费api接口代码

    依据手机号码查询用户的卡类型.运营商.归属地.区域等信息. 手机归属地实体类 package org.wx.xhelper.model; /** * 手机归属地 * @author wangxw * ...

  10. 删除moduleCache下文件解决预编译头文件相关的编译错误

    之前有在代码全部正确的情况下,遇到过下面的编译错误: fatal error: file '.....h' has been modified since the precompiled header ...