diff options
author | Weiguang.ruan <Weiguang.ruan@amlogic.com> | 2018-02-11 22:16:52 +0800 |
---|---|---|
committer | Weiguang Ruan <Weiguang.ruan@amlogic.com> | 2018-03-07 23:31:46 -0800 |
commit | 210a9a5c941a4216b1675a226742a36f9aab9b94 (patch) | |
tree | 27c317f4b5d58fd34ece9743250283cb1e5adb40 | |
parent | ea1feb32e40e4d52fb259473bf5ec5e164800f23 (diff) | |
download | dhd-driver-210a9a5c941a4216b1675a226742a36f9aab9b94.tar.gz |
wifi: add bcm43751 support [1/4]
PD#161120
1. add bcm43751 support
2. don't use enable_irq_wake/disable_irq_wake
Change-Id: I57d3a5b997d126ffa3ae6f0cd3df32c90afbc1f3
-rw-r--r-- | bcmdhd.1.579.77.41.1.cn/bcmsdh_linux.c | 6 | ||||
-rw-r--r-- | bcmdhd.1.579.77.41.1.cn/dhd_config.c | 4 | ||||
-rw-r--r-- | bcmdhd.1.579.77.41.1.cn/dhd_sdio.c | 8 | ||||
-rw-r--r-- | bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h | 1 | ||||
-rw-r--r-- | bcmdhd.1.579.77.41.1.cn/include/sbchipc.h | 1 |
5 files changed, 19 insertions, 1 deletions
diff --git a/bcmdhd.1.579.77.41.1.cn/bcmsdh_linux.c b/bcmdhd.1.579.77.41.1.cn/bcmsdh_linux.c index 53e233b..6841c08 100644 --- a/bcmdhd.1.579.77.41.1.cn/bcmsdh_linux.c +++ b/bcmdhd.1.579.77.41.1.cn/bcmsdh_linux.c @@ -391,10 +391,12 @@ int bcmsdh_oob_intr_register(bcmsdh_info_t *bcmsdh, bcmsdh_cb_fn_t oob_irq_handl SDLX_MSG(("%s: disable_irq_wake\n", __FUNCTION__)); bcmsdh_osinfo->oob_irq_wake_enabled = FALSE; #else +/* err = enable_irq_wake(bcmsdh_osinfo->oob_irq_num); if (err) SDLX_MSG(("%s: enable_irq_wake failed with %d\n", __FUNCTION__, err)); else +*/ bcmsdh_osinfo->oob_irq_wake_enabled = TRUE; #endif return 0; @@ -402,7 +404,7 @@ int bcmsdh_oob_intr_register(bcmsdh_info_t *bcmsdh, bcmsdh_cb_fn_t oob_irq_handl void bcmsdh_oob_intr_unregister(bcmsdh_info_t *bcmsdh) { - int err = 0; + /*int err = 0;*/ bcmsdh_os_info_t *bcmsdh_osinfo = bcmsdh->os_cxt; SDLX_MSG(("%s: Enter\n", __FUNCTION__)); @@ -410,11 +412,13 @@ void bcmsdh_oob_intr_unregister(bcmsdh_info_t *bcmsdh) SDLX_MSG(("%s: irq is not registered\n", __FUNCTION__)); return; } +/* if (bcmsdh_osinfo->oob_irq_wake_enabled) { err = disable_irq_wake(bcmsdh_osinfo->oob_irq_num); if (!err) bcmsdh_osinfo->oob_irq_wake_enabled = FALSE; } +*/ if (bcmsdh_osinfo->oob_irq_enabled) { disable_irq(bcmsdh_osinfo->oob_irq_num); bcmsdh_osinfo->oob_irq_enabled = FALSE; diff --git a/bcmdhd.1.579.77.41.1.cn/dhd_config.c b/bcmdhd.1.579.77.41.1.cn/dhd_config.c index e062016..5f968ba 100644 --- a/bcmdhd.1.579.77.41.1.cn/dhd_config.c +++ b/bcmdhd.1.579.77.41.1.cn/dhd_config.c @@ -92,6 +92,7 @@ uint config_msg_level = CONFIG_ERROR_LEVEL; #define FW_BCM4358A3 "fw_bcm4358a3_ag"
#define FW_BCM4359B1 "fw_bcm4359b1_ag"
#define FW_BCM4359C0 "fw_bcm4359c0_ag"
+#define FW_BCM43751 "fw_bcm43751_ag"
#define CLM_BCM43013B0 "clm_bcm43013b0"
#endif
@@ -540,6 +541,9 @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path) else if (chiprev == BCM4359C0_CHIP_REV)
strcpy(&fw_path[i], FW_BCM4359C0);
break;
+ case BCM43751_CHIP_ID:
+ strcpy(&fw_path[i], FW_BCM43751);
+ break;
#endif
#ifdef BCMPCIE
case BCM4354_CHIP_ID:
diff --git a/bcmdhd.1.579.77.41.1.cn/dhd_sdio.c b/bcmdhd.1.579.77.41.1.cn/dhd_sdio.c index fe2e874..d69bced 100644 --- a/bcmdhd.1.579.77.41.1.cn/dhd_sdio.c +++ b/bcmdhd.1.579.77.41.1.cn/dhd_sdio.c @@ -881,6 +881,7 @@ dhdsdio_sr_cap(dhd_bus_t *bus) (bus->sih->chip == BCM4371_CHIP_ID) || (BCM4349_CHIP(bus->sih->chip)) || (bus->sih->chip == BCM4350_CHIP_ID) || + (bus->sih->chip == BCM43751_CHIP_ID) || (bus->sih->chip == BCM43012_CHIP_ID)) { core_capext = TRUE; } else { @@ -977,6 +978,7 @@ dhdsdio_sr_init(dhd_bus_t *bus) if (CHIPID(bus->sih->chip) == BCM43430_CHIP_ID || CHIPID(bus->sih->chip) == BCM43018_CHIP_ID || CHIPID(bus->sih->chip) == BCM4339_CHIP_ID || + CHIPID(bus->sih->chip) == BCM43751_CHIP_ID || CHIPID(bus->sih->chip) == BCM43012_CHIP_ID) dhdsdio_devcap_set(bus, SDIOD_CCCR_BRCM_CARDCAP_CMD_NODEC); @@ -7642,6 +7644,9 @@ dhdsdio_chipmatch(uint16 chipid) if (chipid == BCM43012_CHIP_ID) return TRUE; + if (chipid == BCM43751_CHIP_ID) + return TRUE; + return FALSE; } @@ -8061,6 +8066,9 @@ dhdsdio_probe_attach(struct dhd_bus *bus, osl_t *osh, void *sdh, void *regsva, case BCM4347_CHIP_GRPID: bus->dongle_ram_base = CR4_4347_RAM_BASE; break; + case BCM43751_CHIP_ID: + bus->dongle_ram_base = CR4_43751_RAM_BASE; + break; default: bus->dongle_ram_base = 0; DHD_ERROR(("%s: WARNING: Using default ram base at 0x%x\n", diff --git a/bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h b/bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h index 70ef467..915f372 100644 --- a/bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h +++ b/bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h @@ -473,6 +473,7 @@ #define BCM43455_CHIP_ID 43455 /* 43455 chipcommon chipid */ #define BCM43457_CHIP_ID 43457 /* 43457 chipcommon chipid */ #define BCM43458_CHIP_ID 43458 /* 43458 chipcommon chipid */ +#define BCM43751_CHIP_ID 0x4362 /* 43751 chipcommon chipid */ #define BCM4345_CHIP(chipid) (CHIPID(chipid) == BCM4345_CHIP_ID || \ CHIPID(chipid) == BCM43454_CHIP_ID || \ diff --git a/bcmdhd.1.579.77.41.1.cn/include/sbchipc.h b/bcmdhd.1.579.77.41.1.cn/include/sbchipc.h index ffec624..0082765 100644 --- a/bcmdhd.1.579.77.41.1.cn/include/sbchipc.h +++ b/bcmdhd.1.579.77.41.1.cn/include/sbchipc.h @@ -3343,6 +3343,7 @@ typedef volatile struct { #define CA7_4365_RAM_BASE (0x200000) #define CR4_4347_RAM_BASE (0x170000) +#define CR4_43751_RAM_BASE (0x170000) /* 4335 chip OTP present & OTP select bits. */ #define SPROM4335_OTP_SELECT 0x00000010 |