* [PATCH 00/11] chip related changes
@ 2018-11-06 3:50 Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 01/11] brcmfmac: add 4354 raw pcie device id Chi-Hsien Lin
` (10 more replies)
0 siblings, 11 replies; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
This patch series includes various chip-related changes:
* 43012 support
* 4373 saverestore support
* SDIO bus settings
* 4354 raw chipid
Chi-Hsien Lin (3):
brcmfmac: add support for CYW43012 SDIO chipset
brcmfmac: allow GCI core enumuration
brcmfmac: 4373 save-restore support
Double Lo (1):
brcmfmac: disable command decode in sdio_aos for 4354
Madhan Mohan R (2):
brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373
brcmfmac: disable command decode in sdio_aos for 4373
Naveen Gupta (1):
brcmfmac: update 43012 F2 watermark setting to fix DMA Error during
UDP RX Traffic
Praveen Babu C (1):
brcmfmac: saverestore support changes for 43012
Winnie Chang (1):
brcmfmac: add 4354 raw pcie device id
Wright Feng (2):
brcmfmac: set F2 watermark to 256 for 4373
brcmfmac: disable command decode in sdio_aos for 43012/4339/4345
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
.../wireless/broadcom/brcm80211/brcmfmac/chip.c | 36 +++++--
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 +
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 110 ++++++++++++++++++---
.../wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 +
.../broadcom/brcm80211/include/brcm_hw_ids.h | 2 +
include/linux/mmc/sdio_ids.h | 1 +
7 files changed, 133 insertions(+), 21 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 01/11] brcmfmac: add 4354 raw pcie device id
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:52 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373 Chi-Hsien Lin
` (9 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Winnie Chang, Chi-Hsien Lin
From: Winnie Chang <winnie.chang@cypress.com>
Add the raw 4354 PCIe device ID.
Signed-off-by: Winnie Chang <winnie.chang@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 +
drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 5dea569d63ed..8887bbc0084f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -2018,6 +2018,7 @@ static const struct dev_pm_ops brcmf_pciedrvr_pm = {
static const struct pci_device_id brcmf_pcie_devid_table[] = {
BRCMF_PCIE_DEVICE(BRCM_PCIE_4350_DEVICE_ID),
BRCMF_PCIE_DEVICE_SUB(0x4355, BRCM_PCIE_VENDOR_ID_BROADCOM, 0x4355),
+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4354_RAW_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4356_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_43567_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_43570_DEVICE_ID),
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
index 686f7a85a045..acb87238922f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
@@ -74,6 +74,7 @@
/* PCIE Device IDs */
#define BRCM_PCIE_4350_DEVICE_ID 0x43a3
#define BRCM_PCIE_4354_DEVICE_ID 0x43df
+#define BRCM_PCIE_4354_RAW_DEVICE_ID 0x4354
#define BRCM_PCIE_4356_DEVICE_ID 0x43ec
#define BRCM_PCIE_43567_DEVICE_ID 0x43d3
#define BRCM_PCIE_43570_DEVICE_ID 0x43d9
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 01/11] brcmfmac: add 4354 raw pcie device id Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373 Chi-Hsien Lin
` (8 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
From: Wright Feng <wright.feng@cypress.com>
We got SDIO_CRC_ERROR with 4373 on SDR104 when doing bi-directional
throughput test. Enable watermark to 256 to guarantee the operation
stability.
Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 25 ++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index b2e1ab5adb64..541d54661c9e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -49,6 +49,9 @@
#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
#define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
+#define DEFAULT_F2_WATERMARK 0x8
+#define CY_4373_F2_WATERMARK 0x40
+
#ifdef DEBUG
#define BRCMF_TRAP_INFO_SIZE 80
@@ -138,6 +141,8 @@ struct rte_console {
/* 1: isolate internal sdio signals, put external pads in tri-state; requires
* sdio bus power cycle to clear (rev 9) */
#define SBSDIO_DEVCTL_PADS_ISO 0x08
+/* 1: enable F2 Watermark */
+#define SBSDIO_DEVCTL_F2WM_ENAB 0x10
/* Force SD->SB reset mapping (rev 11) */
#define SBSDIO_DEVCTL_SB_RST_CTL 0x30
/* Determined by CoreControl bit */
@@ -4046,6 +4051,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
void *nvram;
u32 nvram_len;
u8 saveclk;
+ u8 devctl;
brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
@@ -4101,8 +4107,23 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
brcmf_sdiod_writel(sdiod, core->base + SD_REG(hostintmask),
bus->hostintmask, NULL);
-
- brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK, 8, &err);
+ switch (sdiod->func1->device) {
+ case SDIO_DEVICE_ID_CYPRESS_4373:
+ brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
+ CY_4373_F2_WATERMARK);
+ brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
+ CY_4373_F2_WATERMARK, &err);
+ devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
+ &err);
+ devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
+ brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
+ &err);
+ break;
+ default:
+ brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
+ DEFAULT_F2_WATERMARK, &err);
+ break;
+ }
} else {
/* Disable F2 again */
sdio_disable_func(sdiod->func2);
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 01/11] brcmfmac: add 4354 raw pcie device id Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373 Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset Chi-Hsien Lin
` (7 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Madhan Mohan R, Madhan Mohan R, Chi-Hsien Lin
From: Madhan Mohan R <MadhanMohan.R@cypress.com>
Along with F2 watermark (existing) configuration, F1 MesBusyCtrl
should be enabled & configured to avoid overflow errors.
Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +++
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 +++
2 files changed, 6 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 541d54661c9e..34a838fcc319 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -51,6 +51,7 @@
#define DEFAULT_F2_WATERMARK 0x8
#define CY_4373_F2_WATERMARK 0x40
+#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
#ifdef DEBUG
@@ -4118,6 +4119,8 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
&err);
+ brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
+ CY_4373_F1_MESBUSYCTRL, &err);
break;
default:
brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
index 7faed831f07d..8aaabca1eb0e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
@@ -104,6 +104,9 @@
#define SBSDIO_FUNC1_RFRAMEBCHI 0x1001C
/* MesBusyCtl (rev 11) */
#define SBSDIO_FUNC1_MESBUSYCTRL 0x1001D
+/* Enable busy capability for MES access */
+#define SBSDIO_MESBUSYCTRL_ENAB 0x80
+
/* Sdio Core Rev 12 */
#define SBSDIO_FUNC1_WAKEUPCTRL 0x1001E
#define SBSDIO_FUNC1_WCTRL_ALPWAIT_MASK 0x1
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (2 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373 Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 05/11] brcmfmac: allow GCI core enumuration Chi-Hsien Lin
` (6 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
CYW43012 is a 1x1 802.11a/b/g/n Dual-Band HT20, 256-QAM/Turbo QAM. It
is an Ultra Low Power WLAN+BT combo chip.
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
.../wireless/broadcom/brcm80211/brcmfmac/chip.c | 9 ++++-
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 40 ++++++++++++++++++----
.../broadcom/brcm80211/include/brcm_hw_ids.h | 1 +
include/linux/mmc/sdio_ids.h | 1 +
5 files changed, 45 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 3e37c8cf82c6..c1d4f93f7347 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -972,6 +972,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
+ BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_43012),
{ /* end: all zeroes */ }
};
MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 927d62b3d41b..60fd3018534e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -165,6 +165,7 @@ struct sbconfig {
#define SRCI_LSS_MASK 0x00f00000
#define SRCI_LSS_SHIFT 20
#define SRCI_SRNB_MASK 0xf0
+#define SRCI_SRNB_MASK_EXT 0x100
#define SRCI_SRNB_SHIFT 4
#define SRCI_SRBSZ_MASK 0xf
#define SRCI_SRBSZ_SHIFT 0
@@ -592,7 +593,13 @@ static void brcmf_chip_socram_ramsize(struct brcmf_core_priv *sr, u32 *ramsize,
if (lss != 0)
*ramsize += (1 << ((lss - 1) + SR_BSZ_BASE));
} else {
- nb = (coreinfo & SRCI_SRNB_MASK) >> SRCI_SRNB_SHIFT;
+ /* length of SRAM Banks increased for corerev greater than 23 */
+ if (sr->pub.rev >= 23) {
+ nb = (coreinfo & (SRCI_SRNB_MASK | SRCI_SRNB_MASK_EXT))
+ >> SRCI_SRNB_SHIFT;
+ } else {
+ nb = (coreinfo & SRCI_SRNB_MASK) >> SRCI_SRNB_SHIFT;
+ }
for (i = 0; i < nb; i++) {
retent = brcmf_chip_socram_banksize(sr, i, &banksize);
*ramsize += banksize;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 34a838fcc319..299f59f58d8c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -624,6 +624,7 @@ BRCMF_FW_DEF(43455, "brcmfmac43455-sdio");
BRCMF_FW_DEF(4354, "brcmfmac4354-sdio");
BRCMF_FW_DEF(4356, "brcmfmac4356-sdio");
BRCMF_FW_DEF(4373, "brcmfmac4373-sdio");
+BRCMF_FW_DEF(43012, "brcmfmac43012-sdio");
static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
@@ -643,7 +644,8 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
- BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
+ BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373),
+ BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012)
};
static void pkt_align(struct sk_buff *p, int len, int align)
@@ -677,6 +679,15 @@ brcmf_sdio_kso_control(struct brcmf_sdio *bus, bool on)
/* 1st KSO write goes to AOS wake up core if device is asleep */
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, wr_val, &err);
+ /* In case of 43012 chip, the chip could go down immediately after
+ * KSO bit is cleared. So the further reads of KSO register could
+ * fail. Thereby just bailing out immediately after clearing KSO
+ * bit, to avoid polling of KSO bit.
+ */
+ if (!on && bus->ci->chip == CY_CC_43012_CHIP_ID) {
+ return err;
+ }
+
if (on) {
/* device WAKEUP through KSO:
* write bit 0 & read back until
@@ -2436,9 +2447,20 @@ static void brcmf_sdio_bus_stop(struct device *dev)
/* Force backplane clocks to assure F2 interrupt propagates */
saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
&err);
- if (!err)
- brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
- (saveclk | SBSDIO_FORCE_HT), &err);
+ if (!err) {
+ if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
+ brcmf_sdiod_writeb(sdiodev,
+ SBSDIO_FUNC1_CHIPCLKCSR,
+ (saveclk |
+ SBSDIO_HT_AVAIL_REQ),
+ &err);
+ } else {
+ brcmf_sdiod_writeb(sdiodev,
+ SBSDIO_FUNC1_CHIPCLKCSR,
+ (saveclk | SBSDIO_FORCE_HT),
+ &err);
+ }
+ }
if (err)
brcmf_err("Failed to force clock for F2: err %d\n",
err);
@@ -4085,8 +4107,14 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
/* Force clocks on backplane to be sure F2 interrupt propagates */
saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &err);
if (!err) {
- brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR,
- (saveclk | SBSDIO_FORCE_HT), &err);
+ if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
+ brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR,
+ (saveclk | SBSDIO_HT_AVAIL_REQ),
+ &err);
+ } else {
+ brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR,
+ (saveclk | SBSDIO_FORCE_HT), &err);
+ }
}
if (err) {
brcmf_err("Failed to force clock for F2: err %d\n", err);
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
index acb87238922f..839980da9643 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
@@ -60,6 +60,7 @@
#define BRCM_CC_43664_CHIP_ID 43664
#define BRCM_CC_4371_CHIP_ID 0x4371
#define CY_CC_4373_CHIP_ID 0x4373
+#define CY_CC_43012_CHIP_ID 43012
/* USB Device IDs */
#define BRCM_USB_43143_DEVICE_ID 0xbd1e
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index 4224902a8e22..4332199c71c2 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -42,6 +42,7 @@
#define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
#define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
+#define SDIO_DEVICE_ID_CYPRESS_43012 43012
#define SDIO_VENDOR_ID_INTEL 0x0089
#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 05/11] brcmfmac: allow GCI core enumuration
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (3 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 06/11] brcmfmac: saverestore support changes for 43012 Chi-Hsien Lin
` (5 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
GCI core is needed for ULP operation. Allow GCI core enumuration with
below changes:
- Allow GCI to be added to core list even when it doesn't have a wrapper.
- Allow 8K address space size.
- Don't overwrite the address value when an additional size descriptor
is in place.
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 60fd3018534e..7d5005d75e01 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -786,7 +786,7 @@ static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr,
u32 *regbase, u32 *wrapbase)
{
u8 desc;
- u32 val;
+ u32 val, szdesc;
u8 mpnum = 0;
u8 stype, sztype, wraptype;
@@ -832,14 +832,15 @@ static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr,
/* next size descriptor can be skipped */
if (sztype == DMP_SLAVE_SIZE_DESC) {
- val = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
+ szdesc = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
/* skip upper size descriptor if present */
- if (val & DMP_DESC_ADDRSIZE_GT32)
+ if (szdesc & DMP_DESC_ADDRSIZE_GT32)
brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
}
- /* only look for 4K register regions */
- if (sztype != DMP_SLAVE_SIZE_4K)
+ /* look for 4K or 8K register regions */
+ if (sztype != DMP_SLAVE_SIZE_4K &&
+ sztype != DMP_SLAVE_SIZE_8K)
continue;
stype = (val & DMP_SLAVE_TYPE) >> DMP_SLAVE_TYPE_S;
@@ -896,7 +897,8 @@ int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci)
/* need core with ports */
if (nmw + nsw == 0 &&
- id != BCMA_CORE_PMU)
+ id != BCMA_CORE_PMU &&
+ id != BCMA_CORE_GCI)
continue;
/* try to obtain register address info */
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 06/11] brcmfmac: saverestore support changes for 43012
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (4 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 05/11] brcmfmac: allow GCI core enumuration Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic Chi-Hsien Lin
` (4 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Praveen Babu Chandran, Chi-Hsien Lin
From: Praveen Babu C <praveen.chandran@cypress.com>
Add saverestore register settings for 43012.
Signed-off-by: Praveen Babu C <praveen.chandran@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
.../wireless/broadcom/brcm80211/brcmfmac/chip.c | 5 +++++
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 22 +++++++++++++++++-----
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 7d5005d75e01..a8d3b96b727f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -1365,6 +1365,11 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
addr = CORE_CC_REG(base, sr_control1);
reg = chip->ops->read32(chip->ctx, addr);
return reg != 0;
+ case CY_CC_43012_CHIP_ID:
+ addr = CORE_CC_REG(pmu->base, retention_ctl);
+ reg = chip->ops->read32(chip->ctx, addr);
+ return (reg & (PMU_RCTL_MACPHY_DISABLE_MASK |
+ PMU_RCTL_LOGIC_DISABLE_MASK)) == 0;
default:
addr = CORE_CC_REG(pmu->base, pmucapabilities_ext);
reg = chip->ops->read32(chip->ctx, addr);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 299f59f58d8c..a32eb5f868b5 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3354,16 +3354,29 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
{
int err = 0;
u8 val;
+ u8 wakeupctrl;
+ u8 cardcap;
+ u8 chipclkcsr;
brcmf_dbg(TRACE, "Enter\n");
+ if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
+ wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT;
+ cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
+ chipclkcsr = SBSDIO_HT_AVAIL_REQ;
+ } else {
+ wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
+ cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
+ SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
+ chipclkcsr = SBSDIO_FORCE_HT;
+ }
+
val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
if (err) {
brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");
return;
}
-
- val |= 1 << SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
+ val |= 1 << wakeupctrl;
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, val, &err);
if (err) {
brcmf_err("error writing SBSDIO_FUNC1_WAKEUPCTRL\n");
@@ -3372,8 +3385,7 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
/* Add CMD14 Support */
brcmf_sdiod_func0_wb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
- (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
- SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT),
+ cardcap,
&err);
if (err) {
brcmf_err("error writing SDIO_CCCR_BRCM_CARDCAP\n");
@@ -3381,7 +3393,7 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
}
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
- SBSDIO_FORCE_HT, &err);
+ chipclkcsr, &err);
if (err) {
brcmf_err("error writing SBSDIO_FUNC1_CHIPCLKCSR\n");
return;
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (5 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 06/11] brcmfmac: saverestore support changes for 43012 Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 08/11] brcmfmac: 4373 save-restore support Chi-Hsien Lin
` (3 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Naveen Gupta, Chi-Hsien Lin
From: Naveen Gupta <naveen.gupta@cypress.com>
The number of words that the read FIFO has to contain except
the end of frame before sends data back to the host.
Max watermark = (512B - 2* (BurstLength))/4 =
(512 - 128)/4 = 384/4 = 0x60
so if burst length (i.e. BurstLength = 64) is increased,
watermark has to be reduced. This is the optimal setting for this chip.
Signed-off-by: Naveen Gupta <naveen.gupta@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index a32eb5f868b5..e7ee144dc5dd 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -52,6 +52,7 @@
#define DEFAULT_F2_WATERMARK 0x8
#define CY_4373_F2_WATERMARK 0x40
#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
+#define CY_43012_F2_WATERMARK 0x60
#ifdef DEBUG
@@ -4162,6 +4163,17 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
CY_4373_F1_MESBUSYCTRL, &err);
break;
+ case SDIO_DEVICE_ID_CYPRESS_43012:
+ brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
+ CY_43012_F2_WATERMARK);
+ brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
+ CY_43012_F2_WATERMARK, &err);
+ devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
+ &err);
+ devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
+ brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
+ &err);
+ break;
default:
brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
DEFAULT_F2_WATERMARK, &err);
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 08/11] brcmfmac: 4373 save-restore support
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (6 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:54 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345 Chi-Hsien Lin
` (2 subsequent siblings)
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
Use sr_eng_en bit to check 4373 sr support.
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index a8d3b96b727f..dfc2af943bff 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -1332,7 +1332,7 @@ bool brcmf_chip_set_active(struct brcmf_chip *pub, u32 rstvec)
bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
{
- u32 base, addr, reg, pmu_cc3_mask = ~0;
+ u32 base, addr, reg, sr_eng_en, pmu_cc3_mask = ~0;
struct brcmf_chip_priv *chip;
struct brcmf_core *pmu = brcmf_chip_get_pmu(pub);
@@ -1365,6 +1365,12 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
addr = CORE_CC_REG(base, sr_control1);
reg = chip->ops->read32(chip->ctx, addr);
return reg != 0;
+ case CY_CC_4373_CHIP_ID:
+ /* explicitly check SR engine enable bit */
+ sr_eng_en = BIT(0);
+ addr = CORE_CC_REG(base, sr_control0);
+ reg = chip->ops->read32(chip->ctx, addr);
+ return (reg & sr_eng_en) != 0;
case CY_CC_43012_CHIP_ID:
addr = CORE_CC_REG(pmu->base, retention_ctl);
reg = chip->ops->read32(chip->ctx, addr);
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (7 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 08/11] brcmfmac: 4373 save-restore support Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:54 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354 Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373 Chi-Hsien Lin
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Chi-Hsien Lin
From: Wright Feng <wright.feng@cypress.com>
Transaction between AOS and SDIOD is not protected, and if cmd 52
received in AOS and in the middle of response state changed from AOS to
SDIOD, response is corrupted and it causes to SDIO Host controller to
hang.
Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index e7ee144dc5dd..d507d8f15e48 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3363,15 +3363,21 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT;
- cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
chipclkcsr = SBSDIO_HT_AVAIL_REQ;
} else {
wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
- cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
- SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
chipclkcsr = SBSDIO_FORCE_HT;
}
+ if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
+ bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
+ bus->ci->chip == BRCM_CC_4345_CHIP_ID) {
+ cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
+ } else {
+ cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
+ SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
+ }
+
val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
if (err) {
brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (8 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345 Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:55 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373 Chi-Hsien Lin
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo, Double Lo,
Chi-Hsien Lin
From: Double Lo <double.lo@cypress.com>
Transaction between AOS and SDIOD is not protected, and if cmd 52
received in AOS and in the middle of response state changed from AOS to
SDIOD, response is corrupted and it causes to SDIO Host controller to
hang.
Signed-off-by: Double Lo <double.lo@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index d507d8f15e48..337e72b7787c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3371,7 +3371,8 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
- bus->ci->chip == BRCM_CC_4345_CHIP_ID) {
+ bus->ci->chip == BRCM_CC_4345_CHIP_ID ||
+ bus->ci->chip == BRCM_CC_4354_CHIP_ID) {
cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
} else {
cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
` (9 preceding siblings ...)
2018-11-06 3:50 ` [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354 Chi-Hsien Lin
@ 2018-11-06 3:50 ` Chi-Hsien Lin
2018-11-08 11:55 ` Arend van Spriel
10 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-06 3:50 UTC (permalink / raw)
To: linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Arend van Spriel,
Franky Lin, Hante Meuleman, Wright Feng, Kalle Valo,
Madhan Mohan R, Chi-Hsien Lin
From: Madhan Mohan R <madhanmohan.r@cypress.com>
By disabling command decode, sdiod_aos module supports
the detection of sdio command line toggle only and
generates a wakeup request to PMU and to sdiod core.
It does not decode any sdio command and generates no
response to any command.
Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 337e72b7787c..e8a8037be82c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3370,6 +3370,7 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
}
if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
+ bus->ci->chip == CY_CC_4373_CHIP_ID ||
bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
bus->ci->chip == BRCM_CC_4345_CHIP_ID ||
bus->ci->chip == BRCM_CC_4354_CHIP_ID) {
--
2.1.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 01/11] brcmfmac: add 4354 raw pcie device id
2018-11-06 3:50 ` [PATCH 01/11] brcmfmac: add 4354 raw pcie device id Chi-Hsien Lin
@ 2018-11-08 11:52 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:52 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Winnie Chang
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Winnie Chang <winnie.chang@cypress.com>
>
> Add the raw 4354 PCIe device ID.
What is the motivation for adding this. I can do an educated guess, but
I would like to see it in the commit message. Why only for 4354?
Regards,
Arend
> Signed-off-by: Winnie Chang <winnie.chang@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 +
> drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 1 +
> 2 files changed, 2 insertions(+)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373
2018-11-06 3:50 ` [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373 Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Wright Feng <wright.feng@cypress.com>
>
> We got SDIO_CRC_ERROR with 4373 on SDR104 when doing bi-directional
> throughput test. Enable watermark to 256 to guarantee the operation
> stability.
Maybe it would be better to clarify the unit of the watermark. Here you
use bytes, but in the register it needs number of words (word being 4
bytes). So is this really only applicable to 4373? I have had question
about SDIO crc errors before for other chips. Other than that....
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Wright Feng <wright.feng@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 25 ++++++++++++++++++++--
> 1 file changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index b2e1ab5adb64..541d54661c9e 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -49,6 +49,9 @@
> #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
> #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
Mention the unit so:
+/* watermark expressed in number of words */
> +#define DEFAULT_F2_WATERMARK 0x8
> +#define CY_4373_F2_WATERMARK 0x40
or
+#define DEFAULT_F2_WATERMARK (32 >> 2)
+@define CY_4373_F2_WATERMARK (256 >> 2)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373
2018-11-06 3:50 ` [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373 Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
2018-11-09 7:34 ` Chi-Hsien Lin
0 siblings, 1 reply; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Madhan Mohan R
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Madhan Mohan R <MadhanMohan.R@cypress.com>
>
> Along with F2 watermark (existing) configuration, F1 MesBusyCtrl
> should be enabled & configured to avoid overflow errors.
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +++
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 +++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 541d54661c9e..34a838fcc319 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -51,6 +51,7 @@
>
> #define DEFAULT_F2_WATERMARK 0x8
> #define CY_4373_F2_WATERMARK 0x40
> +#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
I don't see much value for this define. It is use once below so just or
it there. That way you can "directly" see what is written to the register.
> #ifdef DEBUG
>
> @@ -4118,6 +4119,8 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
> devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
> brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
> &err);
> + brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
> + CY_4373_F1_MESBUSYCTRL, &err);
just use 'CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB' here. No
braces needed.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset
2018-11-06 3:50 ` [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> CYW43012 is a 1x1 802.11a/b/g/n Dual-Band HT20, 256-QAM/Turbo QAM. It
> is an Ultra Low Power WLAN+BT combo chip.
comments below....
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
> .../wireless/broadcom/brcm80211/brcmfmac/chip.c | 9 ++++-
> .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 40 ++++++++++++++++++----
> .../broadcom/brcm80211/include/brcm_hw_ids.h | 1 +
> include/linux/mmc/sdio_ids.h | 1 +
> 5 files changed, 45 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 34a838fcc319..299f59f58d8c 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -677,6 +679,15 @@ brcmf_sdio_kso_control(struct brcmf_sdio *bus, bool on)
> /* 1st KSO write goes to AOS wake up core if device is asleep */
> brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, wr_val, &err);
>
> + /* In case of 43012 chip, the chip could go down immediately after
> + * KSO bit is cleared. So the further reads of KSO register could
> + * fail. Thereby just bailing out immediately after clearing KSO
> + * bit, to avoid polling of KSO bit.
> + */
> + if (!on && bus->ci->chip == CY_CC_43012_CHIP_ID) {
> + return err;
> + }
kernel coding style does not require curly braces here.
> if (on) {
> /* device WAKEUP through KSO:
> * write bit 0 & read back until
> @@ -2436,9 +2447,20 @@ static void brcmf_sdio_bus_stop(struct device *dev)
> /* Force backplane clocks to assure F2 interrupt propagates */
> saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
> &err);
> - if (!err)
> - brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
> - (saveclk | SBSDIO_FORCE_HT), &err);
> + if (!err) {
> + if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
> + brcmf_sdiod_writeb(sdiodev,
> + SBSDIO_FUNC1_CHIPCLKCSR,
> + (saveclk |
> + SBSDIO_HT_AVAIL_REQ),
> + &err);
> + } else {
> + brcmf_sdiod_writeb(sdiodev,
> + SBSDIO_FUNC1_CHIPCLKCSR,
> + (saveclk | SBSDIO_FORCE_HT),
> + &err);
> + }
> + }
I prefer we avoid checks for chip id as much as possible. Maybe have
chip module provide helper function, ie.
if (!err) {
bpreq = saveclk;
bpreq |= brcmf_chip_is_ulp(bus->ci) ?
SBSDIO_HT_AVAIL_REQ : SBSDIO_FORCE_HT;
brcmf_sdio_writeb(sdiodev,
SBSDIO_FUNC1_CHIPCLKCSR,
bpreq, &err);
}
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 05/11] brcmfmac: allow GCI core enumuration
2018-11-06 3:50 ` [PATCH 05/11] brcmfmac: allow GCI core enumuration Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> GCI core is needed for ULP operation. Allow GCI core enumuration with
> below changes:
> - Allow GCI to be added to core list even when it doesn't have a wrapper.
> - Allow 8K address space size.
> - Don't overwrite the address value when an additional size descriptor
> is in place.
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 06/11] brcmfmac: saverestore support changes for 43012
2018-11-06 3:50 ` [PATCH 06/11] brcmfmac: saverestore support changes for 43012 Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Praveen Babu Chandran
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Praveen Babu C <praveen.chandran@cypress.com>
>
> Add saverestore register settings for 43012.
I would collapse this commit with PATCH 04/11.
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Praveen Babu C <praveen.chandran@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> .../wireless/broadcom/brcm80211/brcmfmac/chip.c | 5 +++++
> .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 22 +++++++++++++++++-----
> 2 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 299f59f58d8c..a32eb5f868b5 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -3354,16 +3354,29 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
> {
> int err = 0;
> u8 val;
> + u8 wakeupctrl;
> + u8 cardcap;
> + u8 chipclkcsr;
>
> brcmf_dbg(TRACE, "Enter\n");
>
> + if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
Use brcmf_chip_is_ulp() here as well (see PATCH 04/11).
hmmm..wait. This is actually disabling the command decode for 43012,
which is claimed to be done in PATCH 09/11. So maybe another helper
would be more appropriate here, eg. brcmf_sdio_aos_no_decode(bus).
> + wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT;
> + cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
> + chipclkcsr = SBSDIO_HT_AVAIL_REQ;
> + } else {
> + wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
> + cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
> + SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
> + chipclkcsr = SBSDIO_FORCE_HT;
> + }
> +
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic
2018-11-06 3:50 ` [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic Chi-Hsien Lin
@ 2018-11-08 11:53 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:53 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Naveen Gupta
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Naveen Gupta <naveen.gupta@cypress.com>
>
> The number of words that the read FIFO has to contain except
> the end of frame before sends data back to the host.
> Max watermark = (512B - 2* (BurstLength))/4 =
> (512 - 128)/4 = 384/4 = 0x60
> so if burst length (i.e. BurstLength = 64) is increased,
> watermark has to be reduced. This is the optimal setting for this chip.
Nice formula. So could the BurstLength be retrieved from firmware so the
driver can determine and update the F2 watermark in
brcmf_sdio_bus_preinit().
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Naveen Gupta <naveen.gupta@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 08/11] brcmfmac: 4373 save-restore support
2018-11-06 3:50 ` [PATCH 08/11] brcmfmac: 4373 save-restore support Chi-Hsien Lin
@ 2018-11-08 11:54 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:54 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> Use sr_eng_en bit to check 4373 sr support.
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> index a8d3b96b727f..dfc2af943bff 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> @@ -1332,7 +1332,7 @@ bool brcmf_chip_set_active(struct brcmf_chip *pub, u32 rstvec)
>
> bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
> {
> - u32 base, addr, reg, pmu_cc3_mask = ~0;
> + u32 base, addr, reg, sr_eng_en, pmu_cc3_mask = ~0;
> struct brcmf_chip_priv *chip;
> struct brcmf_core *pmu = brcmf_chip_get_pmu(pub);
>
> @@ -1365,6 +1365,12 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
> addr = CORE_CC_REG(base, sr_control1);
> reg = chip->ops->read32(chip->ctx, addr);
> return reg != 0;
> + case CY_CC_4373_CHIP_ID:
> + /* explicitly check SR engine enable bit */
> + sr_eng_en = BIT(0);
> + addr = CORE_CC_REG(base, sr_control0);
> + reg = chip->ops->read32(chip->ctx, addr);
> + return (reg & sr_eng_en) != 0;
Drop the variable and just do (reg & BIT(0)).
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345
2018-11-06 3:50 ` [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345 Chi-Hsien Lin
@ 2018-11-08 11:54 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:54 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Wright Feng <wright.feng@cypress.com>
>
> Transaction between AOS and SDIOD is not protected, and if cmd 52
> received in AOS and in the middle of response state changed from AOS to
> SDIOD, response is corrupted and it causes to SDIO Host controller to
> hang.
I think it would be good to elaborate on what AOS stands for. It is a
part of the SDIOD core that becomes active when the rest of SDIOD is
sleeping to keep SDIO bus alive responding to reduced set of commands.
I would actually suggest to collapse patch 10 and 11 in this one.
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Wright Feng <wright.feng@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index e7ee144dc5dd..d507d8f15e48 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -3363,15 +3363,21 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
>
> if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
> wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT;
> - cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
> chipclkcsr = SBSDIO_HT_AVAIL_REQ;
> } else {
> wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
> - cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
> - SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
> chipclkcsr = SBSDIO_FORCE_HT;
> }
>
> + if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
> + bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
> + bus->ci->chip == BRCM_CC_4345_CHIP_ID) {
use brcmf_sdio_aos_no_decode(bus) helper here.
> + cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
> + } else {
> + cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
> + SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
> + }
> +
> val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
> if (err) {
> brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");
>
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354
2018-11-06 3:50 ` [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354 Chi-Hsien Lin
@ 2018-11-08 11:55 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:55 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Double Lo
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Double Lo <double.lo@cypress.com>
>
> Transaction between AOS and SDIOD is not protected, and if cmd 52
> received in AOS and in the middle of response state changed from AOS to
> SDIOD, response is corrupted and it causes to SDIO Host controller to
> hang.
See comment in PATCH 09/11
> Signed-off-by: Double Lo <double.lo@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373
2018-11-06 3:50 ` [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373 Chi-Hsien Lin
@ 2018-11-08 11:55 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-08 11:55 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Madhan Mohan R
On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
> From: Madhan Mohan R <madhanmohan.r@cypress.com>
>
> By disabling command decode, sdiod_aos module supports
> the detection of sdio command line toggle only and
> generates a wakeup request to PMU and to sdiod core.
> It does not decode any sdio command and generates no
> response to any command.
See comment in PATCH 09/11
> Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
> 1 file changed, 1 insertion(+)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373
2018-11-08 11:53 ` Arend van Spriel
@ 2018-11-09 7:34 ` Chi-Hsien Lin
2018-11-09 12:20 ` Arend van Spriel
0 siblings, 1 reply; 25+ messages in thread
From: Chi-Hsien Lin @ 2018-11-09 7:34 UTC (permalink / raw)
To: Arend van Spriel, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Madhan Mohan R
On 11/08/2018 7:53, Arend van Spriel wrote:
> On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
>> From: Madhan Mohan R <MadhanMohan.R@cypress.com>
>>
>> Along with F2 watermark (existing) configuration, F1 MesBusyCtrl
>> should be enabled & configured to avoid overflow errors.
>
> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>> Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>> ---
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +++
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 +++
>> 2 files changed, 6 insertions(+)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>> index 541d54661c9e..34a838fcc319 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>> @@ -51,6 +51,7 @@
>>
>> #define DEFAULT_F2_WATERMARK 0x8
>> #define CY_4373_F2_WATERMARK 0x40
>> +#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK |
>> SBSDIO_MESBUSYCTRL_ENAB)
>
> I don't see much value for this define. It is use once below so just or
> it there. That way you can "directly" see what is written to the register.
>
>> #ifdef DEBUG
>>
>> @@ -4118,6 +4119,8 @@ static void brcmf_sdio_firmware_callback(struct
>> device *dev, int err,
>> devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
>> brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
>> &err);
>> + brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
>> + CY_4373_F1_MESBUSYCTRL, &err);
>
> just use 'CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB' here. No
> braces needed.
Thanks for the input. The biggest difference is to prevent a 4-line
function call like below so it's more readable. I'll make this change in
V2. Please let me know if below looks too messy then I'll move back to V1:
brcmf_sdiod_writeb(sdiod, CY_4373_F2_WATERMARK |
SBSDIO_MESBUSYCTRL_ENAB,
CY_4373_F2_WATERMARK |
SBSDIO_MESBUSYCTRL_ENAB, &err);
>
> .
>
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373
2018-11-09 7:34 ` Chi-Hsien Lin
@ 2018-11-09 12:20 ` Arend van Spriel
0 siblings, 0 replies; 25+ messages in thread
From: Arend van Spriel @ 2018-11-09 12:20 UTC (permalink / raw)
To: Chi-Hsien Lin, linux-wireless
Cc: brcm80211-dev-list, brcm80211-dev-list, Franky Lin,
Hante Meuleman, Wright Feng, Kalle Valo, Madhan Mohan R
On 11/9/2018 8:34 AM, Chi-Hsien Lin wrote:
>
>
> On 11/08/2018 7:53, Arend van Spriel wrote:
>> On 11/6/2018 4:50 AM, Chi-Hsien Lin wrote:
>>> From: Madhan Mohan R <MadhanMohan.R@cypress.com>
>>>
>>> Along with F2 watermark (existing) configuration, F1 MesBusyCtrl
>>> should be enabled & configured to avoid overflow errors.
>>
>> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>>> Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
>>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>>> ---
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +++
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 +++
>>> 2 files changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>>> index 541d54661c9e..34a838fcc319 100644
>>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
>>> @@ -51,6 +51,7 @@
>>>
>>> #define DEFAULT_F2_WATERMARK 0x8
>>> #define CY_4373_F2_WATERMARK 0x40
>>> +#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK |
>>> SBSDIO_MESBUSYCTRL_ENAB)
>>
>> I don't see much value for this define. It is use once below so just or
>> it there. That way you can "directly" see what is written to the register.
>>
>>> #ifdef DEBUG
>>>
>>> @@ -4118,6 +4119,8 @@ static void brcmf_sdio_firmware_callback(struct
>>> device *dev, int err,
>>> devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
>>> brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
>>> &err);
>>> + brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
>>> + CY_4373_F1_MESBUSYCTRL, &err);
>>
>> just use 'CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB' here. No
>> braces needed.
>
> Thanks for the input. The biggest difference is to prevent a 4-line
> function call like below so it's more readable. I'll make this change in
> V2. Please let me know if below looks too messy then I'll move back to V1:
>
> brcmf_sdiod_writeb(sdiod, CY_4373_F2_WATERMARK |
> SBSDIO_MESBUSYCTRL_ENAB,
> CY_4373_F2_WATERMARK |
> SBSDIO_MESBUSYCTRL_ENAB, &err);
>
The second argument should just be SBSDIO_FUNC1_MESBUSYCTRL so that will
make it a bit less messy. Look okay to me.
Regards,
Arend
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2018-11-09 12:20 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-06 3:50 [PATCH 00/11] chip related changes Chi-Hsien Lin
2018-11-06 3:50 ` [PATCH 01/11] brcmfmac: add 4354 raw pcie device id Chi-Hsien Lin
2018-11-08 11:52 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 02/11] brcmfmac: set F2 watermark to 256 for 4373 Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 03/11] brcmfmac: set SDIO F1 MesBusyCtrl for CYW4373 Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-09 7:34 ` Chi-Hsien Lin
2018-11-09 12:20 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 04/11] brcmfmac: add support for CYW43012 SDIO chipset Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 05/11] brcmfmac: allow GCI core enumuration Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 06/11] brcmfmac: saverestore support changes for 43012 Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 07/11] brcmfmac: update 43012 F2 watermark setting to fix DMA Error during UDP RX Traffic Chi-Hsien Lin
2018-11-08 11:53 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 08/11] brcmfmac: 4373 save-restore support Chi-Hsien Lin
2018-11-08 11:54 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 09/11] brcmfmac: disable command decode in sdio_aos for 43012/4339/4345 Chi-Hsien Lin
2018-11-08 11:54 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 10/11] brcmfmac: disable command decode in sdio_aos for 4354 Chi-Hsien Lin
2018-11-08 11:55 ` Arend van Spriel
2018-11-06 3:50 ` [PATCH 11/11] brcmfmac: disable command decode in sdio_aos for 4373 Chi-Hsien Lin
2018-11-08 11:55 ` Arend van Spriel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).