From 9d1439773f9708bffe67b8bcdeae0eb96ba71a9b Mon Sep 17 00:00:00 2001 From: cjp Date: Sat, 20 Aug 2016 09:25:19 +0800 Subject: [PATCH] Kernel->net:add AP6255 kernel support --- .../rockchip_wlan/rkwifi/bcmdhd/dhd_config.c | 52 ++++++++++--------- .../rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c | 6 +++ .../rkwifi/bcmdhd/include/bcmdevs.h | 1 + .../rockchip_wlan/rkwifi/bcmdhd/siutils.c | 5 +- 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c index 39641e1e5f..7a85bfb0ab 100755 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c @@ -14,25 +14,25 @@ #include #include -/* message levels */ +/* message levels */ #define CONFIG_ERROR_LEVEL 0x0001 #define CONFIG_TRACE_LEVEL 0x0002 - + uint config_msg_level = CONFIG_ERROR_LEVEL; - + #define CONFIG_ERROR(x) \ - do { \ + do { \ if (config_msg_level & CONFIG_ERROR_LEVEL) { \ printk(KERN_ERR "CONFIG-ERROR) "); \ - printk x; \ - } \ - } while (0) + printk x; \ + } \ + } while (0) #define CONFIG_TRACE(x) \ - do { \ + do { \ if (config_msg_level & CONFIG_TRACE_LEVEL) { \ printk(KERN_ERR "CONFIG-TRACE) "); \ - printk x; \ - } \ + printk x; \ + } \ } while (0) #define MAXSZ_BUF 1000 @@ -157,11 +157,11 @@ const static char *bcm4356a2_pcie_ag_fw_name[] = { }; #endif -#define htod32(i) i -#define htod16(i) i -#define dtoh32(i) i -#define dtoh16(i) i -#define htodchanspec(i) i +#define htod32(i) i +#define htod16(i) i +#define dtoh32(i) i +#define dtoh16(i) i +#define htodchanspec(i) i #define dtohchanspec(i) i #ifdef BCMSDIO @@ -497,8 +497,10 @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path, char *nv_path) strcpy(&fw_path[i+1], bcm4339a0_ag_fw_name[fw_type]); break; case BCM4345_CHIP_ID: + case BCM43454_CHIP_ID: if (chiprev == BCM43455C0_CHIP_REV) strcpy(&fw_path[i+1], bcm43455c0_ag_fw_name[fw_type]); + strcpy(&nv_path[j+1], "nvram_AP6255.txt"); break; case BCM4339_CHIP_ID: if (chiprev == BCM4339A0_CHIP_REV) @@ -675,10 +677,10 @@ dhd_conf_fix_country(dhd_pub_t *dhd) if (!(dhd && dhd->conf)) { return bcmerror; } - + memset(valid_chan_list, 0, sizeof(valid_chan_list)); - list = (wl_uint32_list_t *)(void *) valid_chan_list; - list->count = htod32(WL_NUMCHANNELS); + list = (wl_uint32_list_t *)(void *) valid_chan_list; + list->count = htod32(WL_NUMCHANNELS); if ((bcmerror = dhd_wl_ioctl_cmd(dhd, WLC_GET_VALID_CHANNELS, valid_chan_list, sizeof(valid_chan_list), FALSE, 0)) < 0) { CONFIG_ERROR(("%s: get channels failed with %d\n", __FUNCTION__, bcmerror)); } @@ -1282,8 +1284,8 @@ dhd_conf_read_log_level(dhd_pub_t *dhd, char *bufp, uint len) dhd_console_ms = (int)simple_strtol(pick, NULL, 0); printf("%s: dhd_console_ms = 0x%X\n", __FUNCTION__, dhd_console_ms); } -} - +} + void dhd_conf_read_wme_ac_params(dhd_pub_t *dhd, char *bufp, uint len) { @@ -1649,7 +1651,7 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) /* Process log_level */ dhd_conf_read_log_level(dhd, bufp, len); dhd_conf_read_roam_params(dhd, bufp, len); - dhd_conf_read_wme_ac_params(dhd, bufp, len); + dhd_conf_read_wme_ac_params(dhd, bufp, len); dhd_conf_read_fw_by_mac(dhd, bufp, len); dhd_conf_read_nv_by_mac(dhd, bufp, len); dhd_conf_read_nv_by_chip(dhd, bufp, len); @@ -1826,7 +1828,7 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) len_val = process_config_vars(bufp, len, pick, "bus:txglom="); if (len_val) { conf->bus_txglom = (int)simple_strtol(pick, NULL, 10); - printf("%s: bus:txglom = %d\n", __FUNCTION__, conf->bus_txglom); + printf("%s: bus:txglom = %d\n", __FUNCTION__, conf->bus_txglom); } /* Process ampdu_ba_wsize parameters */ @@ -2041,9 +2043,9 @@ dhd_conf_preinit(dhd_pub_t *dhd) conf->roam_delta[0] = 15; #endif conf->roam_delta[1] = WLC_BAND_ALL; -#ifdef FULL_ROAMING_SCAN_PERIOD_60_SEC +#ifdef FULL_ROAMING_SCAN_PERIOD_60_SEC conf->fullroamperiod = 60; -#else /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ +#else /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ conf->fullroamperiod = 120; #endif /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ #ifdef CUSTOM_KEEP_ALIVE_SETTING @@ -2083,7 +2085,7 @@ dhd_conf_preinit(dhd_pub_t *dhd) if (conf->chip == BCM43430_CHIP_ID) { conf->bus_rxglom = FALSE; conf->use_rxchain = 0; - } + } if (conf->chip == BCM4339_CHIP_ID) { conf->txbf = 1; } diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c index 43eb231bf0..f74f27e382 100755 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c @@ -715,6 +715,7 @@ dhdsdio_sr_cap(dhd_bus_t *bus) (bus->sih->chip == BCM4339_CHIP_ID) || (bus->sih->chip == BCM43349_CHIP_ID) || (bus->sih->chip == BCM4345_CHIP_ID) || + (bus->sih->chip == BCM43454_CHIP_ID) || (bus->sih->chip == BCM4354_CHIP_ID) || (bus->sih->chip == BCM4356_CHIP_ID) || (bus->sih->chip == BCM4358_CHIP_ID) || @@ -736,6 +737,7 @@ dhdsdio_sr_cap(dhd_bus_t *bus) (bus->sih->chip == BCM4339_CHIP_ID) || (bus->sih->chip == BCM43349_CHIP_ID) || (bus->sih->chip == BCM4345_CHIP_ID) || + (bus->sih->chip == BCM43454_CHIP_ID) || (bus->sih->chip == BCM4354_CHIP_ID) || (bus->sih->chip == BCM4356_CHIP_ID) || (bus->sih->chip == BCM4358_CHIP_ID) || @@ -749,6 +751,7 @@ dhdsdio_sr_cap(dhd_bus_t *bus) if ((bus->sih->chip == BCM4350_CHIP_ID) || (bus->sih->chip == BCM4345_CHIP_ID) || + (bus->sih->chip == BCM43454_CHIP_ID) || (bus->sih->chip == BCM4354_CHIP_ID) || (bus->sih->chip == BCM4356_CHIP_ID) || (bus->sih->chip == BCM4358_CHIP_ID) || @@ -6756,6 +6759,8 @@ dhdsdio_chipmatch(uint16 chipid) return TRUE; if (chipid == BCM4345_CHIP_ID) return TRUE; + if (chipid == BCM43454_CHIP_ID) + return TRUE; if (chipid == BCM4350_CHIP_ID) return TRUE; if (chipid == BCM4354_CHIP_ID) @@ -7420,6 +7425,7 @@ dhdsdio_probe_attach(struct dhd_bus *bus, osl_t *osh, void *sdh, void *regsva, bus->dongle_ram_base = CR4_4360_RAM_BASE; break; case BCM4345_CHIP_ID: + case BCM43454_CHIP_ID: bus->dongle_ram_base = (bus->sih->chiprev < 6) /* from 4345C0 */ ? CR4_4345_LT_C0_RAM_BASE : CR4_4345_GE_C0_RAM_BASE; break; diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmdevs.h b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmdevs.h index 1c17045eb5..3474601ebf 100755 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmdevs.h +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmdevs.h @@ -365,6 +365,7 @@ (CHIPID(chipid) == BCM43570_CHIP_ID) || \ (CHIPID(chipid) == BCM4358_CHIP_ID)) /* 4350 variations */ #define BCM4345_CHIP_ID 0x4345 /* 4345 chipcommon chipid */ +#define BCM43454_CHIP_ID 43454 /* 43454 chipcommon chipid */ #define BCM43430_CHIP_ID 43430 /* 43430 chipcommon chipid */ #define BCM4349_CHIP_ID 0x4349 /* 4349 chipcommon chipid */ #define BCM4355_CHIP_ID 0x4355 /* 4355 chipcommon chipid */ diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/siutils.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/siutils.c index 55173ae5db..0692a11595 100755 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/siutils.c +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/siutils.c @@ -292,7 +292,8 @@ si_buscore_setup(si_info_t *sii, chipcregs_t *cc, uint bustype, uint32 savewin, /* for SDIO but downloaded on PCIE dev */ if (cid == PCIE2_CORE_ID) { if ((CHIPID(sii->pub.chip) == BCM43602_CHIP_ID) || - ((CHIPID(sii->pub.chip) == BCM4345_CHIP_ID) && + ((CHIPID(sii->pub.chip) == BCM4345_CHIP_ID || + CHIPID(sii->pub.chip) == BCM43454_CHIP_ID) && CST4345_CHIPMODE_PCIE(sii->pub.chipst))) { pcieidx = i; pcierev = crev; @@ -1413,6 +1414,7 @@ si_chip_hostif(si_t *sih) break; case BCM4345_CHIP_ID: + case BCM43454_CHIP_ID: if (CST4345_CHIPMODE_USB20D(sih->chipst) || CST4345_CHIPMODE_HSIC(sih->chipst)) hosti = CHIP_HOSTIF_USBMODE; else if (CST4345_CHIPMODE_SDIOD(sih->chipst)) @@ -2817,6 +2819,7 @@ si_is_sprom_available(si_t *sih) !(sih->chipst & CST4324_SFLASH_MASK)); case BCM4335_CHIP_ID: case BCM4345_CHIP_ID: + case BCM43454_CHIP_ID: return ((sih->chipst & CST4335_SPROM_MASK) && !(sih->chipst & CST4335_SFLASH_MASK)); case BCM4349_CHIP_GRPID: