summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWeiguang.ruan <Weiguang.ruan@amlogic.com>2018-02-11 22:16:52 +0800
committerWeiguang Ruan <Weiguang.ruan@amlogic.com>2018-03-07 23:31:46 -0800
commit210a9a5c941a4216b1675a226742a36f9aab9b94 (patch)
tree27c317f4b5d58fd34ece9743250283cb1e5adb40
parentea1feb32e40e4d52fb259473bf5ec5e164800f23 (diff)
downloaddhd-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.c6
-rw-r--r--bcmdhd.1.579.77.41.1.cn/dhd_config.c4
-rw-r--r--bcmdhd.1.579.77.41.1.cn/dhd_sdio.c8
-rw-r--r--bcmdhd.1.579.77.41.1.cn/include/bcmdevs.h1
-rw-r--r--bcmdhd.1.579.77.41.1.cn/include/sbchipc.h1
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