aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c4
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c32
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h2
3 files changed, 6 insertions, 32 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index aec1bd694bf7..e2480d196276 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -196,11 +196,11 @@ brcmf_sdio_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
196 196
197 /* 197 /*
198 * figure out how to read the register based on address range 198 * figure out how to read the register based on address range
199 * 0x00 ~ 0xFF: function 0 CCCR 199 * 0x00 ~ 0x7FF: function 0 CCCR and FBR
200 * 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers 200 * 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
201 * The rest: function 1 silicon backplane core registers 201 * The rest: function 1 silicon backplane core registers
202 */ 202 */
203 if ((addr & ~REG_F0_CCCR_MASK) == 0) { 203 if ((addr & ~REG_F0_REG_MASK) == 0) {
204 func_num = SDIO_FUNC_0; 204 func_num = SDIO_FUNC_0;
205 reg_size = 1; 205 reg_size = 1;
206 } else if ((addr & ~REG_F1_MISC_MASK) == 0) { 206 } else if ((addr & ~REG_F1_MISC_MASK) == 0) {
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
index dd07d33a927c..82f51dbd0d66 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
@@ -346,43 +346,17 @@ int brcmf_sdioh_request_buffer(struct brcmf_sdio_dev *sdiodev,
346 return status; 346 return status;
347} 347}
348 348
349/* Read client card reg */
350static int
351brcmf_sdioh_card_regread(struct brcmf_sdio_dev *sdiodev, int func, u32 regaddr,
352 int regsize, u32 *data)
353{
354
355 if ((func == 0) || (regsize == 1)) {
356 u8 temp = 0;
357
358 brcmf_sdioh_request_byte(sdiodev, SDIOH_READ, func, regaddr,
359 &temp);
360 *data = temp;
361 *data &= 0xff;
362 brcmf_dbg(DATA, "byte read data=0x%02x\n", *data);
363 } else {
364 brcmf_sdioh_request_word(sdiodev, SDIOH_READ, func, regaddr,
365 data, regsize);
366 if (regsize == 2)
367 *data &= 0xffff;
368
369 brcmf_dbg(DATA, "word read data=0x%08x\n", *data);
370 }
371
372 return SUCCESS;
373}
374
375static int brcmf_sdioh_get_cisaddr(struct brcmf_sdio_dev *sdiodev, u32 regaddr) 349static int brcmf_sdioh_get_cisaddr(struct brcmf_sdio_dev *sdiodev, u32 regaddr)
376{ 350{
377 /* read 24 bits and return valid 17 bit addr */ 351 /* read 24 bits and return valid 17 bit addr */
378 int i; 352 int i, ret;
379 u32 scratch, regdata; 353 u32 scratch, regdata;
380 __le32 scratch_le; 354 __le32 scratch_le;
381 u8 *ptr = (u8 *)&scratch_le; 355 u8 *ptr = (u8 *)&scratch_le;
382 356
383 for (i = 0; i < 3; i++) { 357 for (i = 0; i < 3; i++) {
384 if ((brcmf_sdioh_card_regread(sdiodev, 0, regaddr, 1, 358 regdata = brcmf_sdio_regrl(sdiodev, regaddr, &ret);
385 &regdata)) != SUCCESS) 359 if (ret != 0)
386 brcmf_dbg(ERROR, "Can't read!\n"); 360 brcmf_dbg(ERROR, "Can't read!\n");
387 361
388 *ptr++ = (u8) regdata; 362 *ptr++ = (u8) regdata;
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h b/drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h
index 6d2e665837b4..29bf78d264e0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h
@@ -41,7 +41,7 @@
41#define SDIOD_MAX_IOFUNCS 7 41#define SDIOD_MAX_IOFUNCS 7
42 42
43/* mask of register map */ 43/* mask of register map */
44#define REG_F0_CCCR_MASK 0xFF 44#define REG_F0_REG_MASK 0x7FF
45#define REG_F1_MISC_MASK 0x1FFFF 45#define REG_F1_MISC_MASK 0x1FFFF
46 46
47/* as of sdiod rev 0, supports 3 functions */ 47/* as of sdiod rev 0, supports 3 functions */