BCM43353 WIFI模块网络部分在TC83xx平台的移植

1、LK控制管脚配置和硬件说明
BCM43353模块依赖于SDIO接口传输,主要连接到SDIO2上。控制端口为WL_REG_ON使能管脚,WL2NAV_HOST_WAKE唤醒中断管脚以及NAV2BT_WL_PWR_EN蓝牙和WIFI模块总的上电管脚。控制管脚与主芯片之间连接如下:
#define NAV2BT_WL_PWR_EN   TCC_GPC(8) //output 
#define  NAV2WL_REG_ON    TCC_GPC(10) //output 
#define WL2NAV_HOST_WAKE   TCC_GPC(11) //output
电路连接如下:

模块在WIFI模式下正常工作条件是:
 NAV2BT_WL_PWR_EN管脚常为高,NAV2WL_REG_ON为高工作,为低不工作。WL2NAV_HOST_WAKE唤醒管脚为高电平触发,并且需要输入上啦。
首先配置管脚的初始化状态,修改:
android/bootable/bootloader/lk/target/tcc893x/gpio.c文件,如下:

android/bootable/bootloader/lk/target/tcc893x/gpio.c文件,如下:
struct gpio_cfg TCC8930_GPC_init_tbl[] = {
               ………………………………………………………..
………………………………………………………………………
{ TCC_GPC(8)  ,GPIO_FN0 , GPIO_OUTPUT|GPIO_HIGH ,GPIO_PULLDISABLE},
{ TCC_GPC(10) ,GPIO_FN0 , GPIO_OUTPUT|GPIO_LOW,GPIO_PULLDISABLE },
{TCC_GPC(11) ,GPIO_FN0 , GPIO_INPUT, GPIO_PULLUP}, //WL_HOST_WAKE

2、内核的移植
2.1 GPIO控制部分移植
修改GPIO内核配置文件kernel/arch/arm/mach-tcc893x/include/mach/gpio.h,如下:

#define NAV2BT_WL_PWR_EN TCC_GPC(8) //output 
#define NAV2WL_REG_ON TCC_GPC(10) //output 
#define WL2NAV_HOST_WAKE TCC_GPC(11) //output

2.2 BCM43353 WIFI模块平台驱动部分移植
    将供应商提供的平台驱动文件拷贝到android/kernel/arch/arm/mach-tcc893x/ 目录下,重新命名为board-tcc893x-wifi_bcm43353.c,修改
android/kernel/arch/arm/mach-tcc893x/board-tcc893x-wifi_bcm43353.c,主要添加模块的上电时序以及修改唤醒管脚中断触发方式,如下:
添加上电时序:

//管脚定义
#define WIFI_BT_POWER     NAV2BT_WL_PWR_EN//WL_PWR_ON //TCC_GPC(8)  
#define WIFI_GPIO_POWER  NAV2WL_REG_ON//WL_REG_ON //TCC_GPC(10)
#define WIFI_GPIO_HOSTWAKE   WL2NAV_HOST_WAKE //TCC_GPC(11)
//唤醒中断管脚定义
#define BCM43353_INT_IRQ    INT_EINT5     //GPIO_C[11] EXTINT_GPIOC_11 =135
#define BCM43353_GPIO_AS_INT(pin)       do{\
            tcc_gpio_config(pin, GPIO_FN(0));\
            gpio_direction_input(pin);\
            tcc_gpio_config_ext_intr(BCM43353_INT_IRQ, EXTINT_GPIOC_11);\
                              }while(0)    
//添加上电时序
int __init brcm_wifi_init_gpio(void)
{
    printk("brcm_wifi_init_gpio\n");
    gpio_request(WIFI_BT_POWER,"wl_pwr_on");
    if(gpio_get_value(WIFI_BT_POWER)==0){
        gpio_direction_output(WIFI_BT_POWER, 1);
        mdelay(2);
    }
    gpio_request(WIFI_GPIO_POWER,"wl_reg_on");
    gpio_direction_output(WIFI_GPIO_POWER, 0);  
    mdelay(5);
    gpio_direction_output(WIFI_GPIO_POWER, 1);  

    return 0;
}

//添加模块检测功能,这个部分在SDIO的HOST中会用到
int wifi_stat = 0;
#if defined(CONFIG_BROADCOM_WIFI)
EXPORT_SYMBOL(wifi_stat);
#endif

int bcm_wifi_set_power(int enable)
{
    int ret = 0;
    gpio_request(WIFI_GPIO_POWER,"wl_gpio_pwr_on");
    printk("%s: enable = %d\n", __func__, enable );
    if (enable) {
        ret = gpio_direction_output(WIFI_GPIO_POWER, 1);

        if (ret) {
            printk("%s: WL_REG_ON  failed to pull up (%d)\n",
                    __func__, ret);
            return ret;
        }

        /* WLAN chip to reset */
         wifi_stat = 1;  //模块插入
        mdelay(150);
        printk("%s: wifi power successed to pull up\n", __func__);
    } else {
        ret = gpio_direction_output(WIFI_GPIO_POWER, 0);
        if (ret) {
            printk("%s:  WL_REG_ON  failed to pull down (%d)\n",
                    __func__, ret);
            return ret;
        }

        /* WLAN chip down */
        mdelay(100);
         wifi_stat = 0; //模块拨出
        printk("%s: wifi power successed to pull down\n", __func__);
    }

    return ret;
}
修改中断唤醒管脚跟芯片的中断号进行关联,同时配置成输入,移除模块总的上电开关的操作:
static int __init bcm_wifi_init_gpio_mem(struct platform_device *pdev){
…………………………..
…………………………..
    if (pdev) {
        struct resource *resource = pdev->resource;                
        ret = gpio_request(WIFI_GPIO_HOSTWAKE, NULL);
        if(ret < 0)
        {
            printk("%s: can't request gpio for WL_HOSTWAKE\n", __func__);
            goto err_gpio_wakes;
        }
        else
        {
            gpio_direction_output(WIFI_GPIO_HOSTWAKE, 0);
            BCM43353_GPIO_AS_INT(WIFI_GPIO_HOSTWAKE);

        }        
        if (resource) {
            resource->start = BCM43353_INT_IRQ;//wifi_host_wake;
            resource->end   = BCM43353_INT_IRQ;//wifi_host_wake;
            printk("%s: wifi gpio irq WL_HOSTWAKE = 0x%08x\n", __func__, wifi_host_wake);

        }
    }

    if (bcm_init_wlan_mem() < 0)
        goto err_alloc_wifi_mem_array;
………………………………………
…………………………………………..

}
//模块加载的时候调用上电时序函数并且平台驱动注册时将中断注册成高电平触发,如下:
static struct resource wifi_resource[] = {
[0] = {
    .name = "bcmdhd_wlan_irq",
    .start = 0,  //assigned later
    .end   = 0,  //assigned later
    .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE,   //高 电平触发
    },
};
void __init init_bcm_wifi(void)
{
     int ret=0;
    printk("\e[33m********** %s **********\e[0m\n", __func__);
    brcm_wifi_init_gpio(); //上电时序
#ifdef CONFIG_DHD_USE_STATIC_BUF
    bcm_wifi_init_gpio_mem(&bcm_wifi_device);
#endif
    ret=platform_device_register(&bcm_wifi_device);
    if(ret){
        printk("%s: platform_device_register failed \n", __func__);
    }else{
        printk("%s: platform_device_register successed \n", __func__);
    }
}
device_initcall_sync(init_bcm_wifi); //异步加载驱动
//EXPORT_SYMBOL(init_bcm_wifi);
详细修改请参考
android/kernel/arch/arm/mach-tcc893x/board-tcc893x-wifi_bcm43353.c 平台驱动文件。
修改Makefile文件,替换之前平台使用的WIFI platform驱动文件,修改:
Android/kernel/arch/arm/mach-tcc893x/Makefle   修改如下:
ifeq ($(CONFIG_BROADCOM_WIFI),y)
#obj-$(CONFIG_ARCH_TCC893X)      += board-tcc893x-wifi.o
obj-$(CONFIG_ARCH_TCC893X)      +=board-tcc893x-wifi_bcm43353.o

endif

2.3 BCM43353 WIFI设备驱动部分的移植
将Boardcom提供最新驱动文件4339_DHD_141_90_FW_AARD01SRC41_6_37_39_38_Supp_126_update/host/bcmdhd文件拷贝到android/kernel/drivers/net/wireless/ bcmdhd_43353 
重命名成bcmdhd_43353
修改bcmdhd_43353/Makefile
DHDCFLAGS += -Wall -Wstrict-prototypes -Dlinux -DLINUX -DBCMDRIVER            \
……………………………………………………
……………………………………………………
               -DENABLE_INSMOD_NO_FW_LOAD -DCUSTOMER_HW2 -DGET_CUSTOM_MAC_ENABLE
修改成
DHDCFLAGS += -Wall -Wstrict-prototypes -Dlinux -DLINUX -DBCMDRIVER            \
……………………………………………………
……………………………………………………
     -DCUSTOMER_HW2 -DGET_CUSTOM_MAC_ENABLE
#-DENABLE_INSMOD_NO_FW_LOA

………………………………………………..
DHDCFLAGS += -DWL_IFACE_COMB_NUM_CHANNELS
DHDCFLAGS += -DWL_ENABLE_P2P_IF   #添加WL_ENABLE_P2P_IF配置
………………………………………………
#DRIVER_TYPE ?= y
DRIVER_TYPE ?= m     #编译成模块

…………………………………………………
ifneq ($(CONFIG_BCMDHD_SDIO),)
  DHDOFILES += bcmsdh.o bcmsdh_linux.o bcmsdh_sdmmc.o bcmsdh_sdmmc_linux.o
  DHDOFILES += dhd_cdc.o dhd_wlfc.o dhd_sdio.o 
#add by zhaojr
  DHDOFILES += wl_cfgvendor.o   #将wl_cfgvendor.c编译进入模块

endif

修改bcmdhd_43353/Kconfig 文件,如下:
# add by zhaojr
config BCM4339
    tristate "BCM4339 support"
    depends on BCMDHD
#end by add

config BCMDHD_FW_PATH
    depends on BCMDHD
    string "Firmware path"
    default "/system/wifi/fw_bcmdhd.bin"
    ---help---
      Path to the firmware file.

config BCMDHD_NVRAM_PATH
    depends on BCMDHD
    string "NVRAM path"
    default "/system/wifi/bcmdhd.cal"
    ---help---
      Path to the calibration file.

修改android/kernel/drivers/net/wireless/Makefile文件,修改如下:
#obj-$(CONFIG_BCMDHD)    += bcmdhd/
obj-$(CONFIG_BCMDHD)    += bcmdhd_43353/

修改android/kernel/drivers/net/wireless/Kconfig文件,修改如下:
#source "drivers/net/wireless/bcmdhd/Kconfig"
source "drivers/net/wireless/bcmdhd_43353/Kconfig"

2.4  tcc893x的WIFI数据传输接口SDIO2的数据传输方式移植
    之前的tcc893x的WIFI使用的是TCM3800模组,WIFI的数据传输中断使用的是DATA2既作为数据传输又作为一帧数据的中断触发来使用。而我们的BCM43353模组的WIFI的数据传输使用SDIO2,一帧数据触发使用的WL_GPIO_WAKE(GPIO_GCC(8))管脚来响应中断,所以需要修改SDIO HOST的数据传输模式。
修改android/kernel/drivers/mmc/host/Kconfig
choice        
  bool "SDHC Data Transmission Methods"
  depends on MMC_TCC_SDHC
  default MMC_TCC_ADMA   //这个地方非常重要,由于这个地方的问题,查了将近1周
 #default MMC_TCC_SDMA

将自定义MMC_TCC_SDMA修改成MMC_TCC_ADMA即可。
2.5 修改整体内核的配置文件
修改android/kernel/arch/arm/configs/ tcc893x_rse2665_defconfig  如下
主要针对内核网络部分和网络设备部分:
#----------------------------
#内核网络部分的配置

CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_IPCOMP=y
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE_DEMUX=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_XFRM_TUNNEL=y
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_IPV6=y
CONFIG_IPV6_PRIVACY=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
CONFIG_INET6_AH=y
CONFIG_INET6_ESP=y
CONFIG_INET6_IPCOMP=y
CONFIG_IPV6_MIP6=y
CONFIG_INET6_XFRM_TUNNEL=y
CONFIG_INET6_TUNNEL=y
CONFIG_INET6_XFRM_MODE_TRANSPORT=y
CONFIG_INET6_XFRM_MODE_TUNNEL=y
CONFIG_INET6_XFRM_MODE_BEET=y
CONFIG_IPV6_SIT=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=y
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_MROUTE=y
CONFIG_ANDROID_PARANOID_NETWORK=y
CONFIG_NET_ACTIVITY_STATS=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CT_PROTO_DCCP=y
CONFIG_NF_CT_PROTO_GRE=y
CONFIG_NF_CT_PROTO_SCTP=y
CONFIG_NF_CT_PROTO_UDPLITE=y
CONFIG_NF_CONNTRACK_AMANDA=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_H323=y
CONFIG_NF_CONNTRACK_IRC=y
CONFIG_NF_CONNTRACK_BROADCAST=y
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
CONFIG_NF_CONNTRACK_PPTP=y
CONFIG_NF_CONNTRACK_SANE=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NF_CT_NETLINK=y
CONFIG_NETFILTER_TPROXY=y
CONFIG_NETFILTER_XTABLES=y

CONFIG_NETFILTER_XT_MARK=y
CONFIG_NETFILTER_XT_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_TPROXY=y
CONFIG_NETFILTER_XT_TARGET_TRACE=y

CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
CONFIG_NETFILTER_XT_MATCH_HELPER=y
CONFIG_NETFILTER_XT_MATCH_HL=y
CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_POLICY=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
CONFIG_NETFILTER_XT_MATCH_SOCKET=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
CONFIG_NETFILTER_XT_MATCH_TIME=y
CONFIG_NETFILTER_XT_MATCH_U32=y

CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_REJECT_SKERR=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_NF_NAT_PROTO_DCCP=y
CONFIG_NF_NAT_PROTO_GRE=y
CONFIG_NF_NAT_PROTO_UDPLITE=y
CONFIG_NF_NAT_PROTO_SCTP=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_IRC=y
CONFIG_NF_NAT_TFTP=y
CONFIG_NF_NAT_AMANDA=y
CONFIG_NF_NAT_PPTP=y
CONFIG_NF_NAT_H323=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_RAW=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y

CONFIG_NF_DEFRAG_IPV6=y
CONFIG_NF_CONNTRACK_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_TARGET_LOG=y
CONFIG_IP6_NF_FILTER=y
CONFIG_IP6_NF_TARGET_REJECT=y
CONFIG_IP6_NF_TARGET_REJECT_SKERR=y
CONFIG_IP6_NF_MANGLE=y
CONFIG_IP6_NF_RAW=y
CONFIG_L2TP=y
CONFIG_L2TP_V3=y
CONFIG_L2TP_IP=y
CONFIG_L2TP_ETH=y
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_U32=y

CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32

CONFIG_NET_EMATCH_U32=y
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=y
CONFIG_NET_ACT_MIRRED=y
CONFIG_NET_SCH_FIFO=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y

CONFIG_BT=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=y
CONFIG_BT_HIDP=y
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_CFG80211=y
CONFIG_NL80211_TESTMODE=y
CONFIG_CFG80211_DEVELOPER_WARNINGS=y
CONFIG_CFG80211_WEXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_LIB80211=y
CONFIG_LIB80211_CRYPT_WEP=y
CONFIG_LIB80211_CRYPT_CCMP=y
CONFIG_LIB80211_CRYPT_TKIP=y
CONFIG_CFG80211_ALLOW_RECONNECT=y
CONFIG_MAC80211=y
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_RFKILL=y

CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_BLK_DEV_LOOP=y
CONFIG_UID_STAT=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
CONFIG_DM_CRYPT=y
CONFIG_DM_UEVENT=y
CONFIG_NETDEVICES=y
CONFIG_TUN=y
CONFIG_PPP=y
CONFIG_PPP_BSDCOMP=y
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=y
CONFIG_PPPOL2TP=y
CONFIG_PPPOLAC=y
CONFIG_PPPOPNS=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_SLHC=y

#网络设备部分的配置
#BCM43353 WIFI configure
CONFIG_WLAN=y
CONFIG_WIFI_CONTROL_FUNC=y
CONFIG_BCMDHD=m
CONFIG_BCMDHD_SDIO=y
CONFIG_BCM4339=m
CONFIG_BCMDHD_FW_PATH="/system/wifi/fw_bcmdhd.bin"
CONFIG_BCMDHD_NVRAM_PATH="/system/wifi/bcmdhd.cal"
CONFIG_DHD_USE_STATIC_BUF=y
CONFIG_HOSTAP=y
CONFIG_HOSTAP_FIRMWARE=y
具体详细配置请参考android/kernel/arch/arm/configs/ tcc893x_rse2665_defconfig文件。

修改android/kernel/nav360_config文件,主要修改了内核网络配置部分和网络设备部分,如下:
内核网络和设备网络部分的配置这里就不在详细说明,详细请看
android/kernel/nav360_config和android/kernel/ nav360_old_config_by_zhaojr_back_20160415两个文件对比进行查看。
主要修改了将SDMA修改成ADMA。如下:
CONFIG_MMC_TCC_SDMA  is not set
CONFIG_MMC_TCC_ADMA=y
CONFIG_BROADCOM_WIFI=y

 3 Android os部分的配置
针对这个部分因为telechips tcc893x平台,之前TCM3800 WIFI 模块已经成功量产了,所以针对TCM3800是OK,针对平台的特性,一般只需要移植驱动和配置相关的文件即可。目前针对Bcm43353 WIF模组同样适用。
修改: android/device/telechips/tcc893x-common/wifi/ tcm3800.mk 文件,如下:
#PRODUCT_COPY_FILES += \
#$(LOCAL_PATH)/broadcom/tcm3800/bcmdhd.ko:/system/wifi/bcmdhd.ko \
#$(LOCAL_PATH)/broadcom/tcm3800/bcmdhd_sta_ver.6.10.190.51.bin:/system/wifi/fw_bcmdhd.bin \
#$(LOCAL_PATH)/broadcom/tcm3800/bcmdhd_aps_ver.6.10.190.51.bin:/system/wifi/fw_bcmdhd_apsta.bin \
#$(LOCAL_PATH)/broadcom/tcm3800/TCM3800_V1.3.cal:/system/wifi/bcmdhd.cal \
#$(LOCAL_PATH)/broadcom/tcm3800/bcmdhd_config.txt:/system/wifi/bcmdhd_config.txt
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/broadcom/tcm3800/bcmdhd.ko:/system/wifi/bcmdhd.ko \
    $(LOCAL_PATH)/broadcom/tcm3800/fw_bcmdhd.bin:/system/wifi/fw_bcmdhd.bin \
    $(LOCAL_PATH)/broadcom/tcm3800/fw_bcmdhd_apsta.bin:/system/wifi/fw_bcmdhd_apsta.bin \
    $(LOCAL_PATH)/broadcom/tcm3800/bcmdhd.cal:/system/wifi/bcmdhd.cal \
    $(LOCAL_PATH)/broadcom/tcm3800/fw_bcmdhd_mfg.bin:/system/wifi/fw_bcmdhd_mfg.bin    \
    $(LOCAL_PATH)/broadcom/tcm3800/bcmdhd_config.txt:/system/wifi/bcmdhd_config.txt

将android/device/telechips/tcc893x-common/wifi/tcm3800/下面的所有问题备份到
android/device/telechips/tcc893x-common/wifi/tcm3800/tcm3800
将内核编译生成的bcmdhd.ko,boardcom给的NVRAM和firmware拷贝到
android/device/telechips/tcc893x-common/wifi/tcm3800/目录下,如下:
android/device/telechips/tcc893x-common/wifi/broadcom/tcm3800/bcmdhd.cal
android/device/telechips/tcc893x-common/wifi/broadcom/tcm3800/fw_bcmdhd.bin
android/device/telechips/tcc893x-common/wifi/broadcom/tcm3800/fw_bcmdhd_apsta.bin
android/device/telechips/tcc893x-common/wifi/broadcom/tcm3800/fw_bcmdhd_mfg.bin
android/device/telechips/tcc893x-common/wifi/broadcom/tcm3800/ /bcmdhd.ko
android/device/telechips/tcc893x/common/wifi/broadcom/tcm3800 /bcmdhd_config.txt

其它部分不需要修改,移植完成之后,编译并下载boot.bin和system.img两个文件,系统启动后就可以点击设置菜单单开WIFI,连接附件的路由器了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章