summaryrefslogtreecommitdiff
path: root/drivers/staging/brcm80211
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2011-08-12 15:34:53 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-23 13:06:39 -0700
commit632ea5ee37b21a01dc3b74e77fef54b69d0c88b1 (patch)
treeb1118e2f2ad72c402dde8bf8a94184e046588af8 /drivers/staging/brcm80211
parenta9ac9703aa66262d3ec6d5180734ccac00f2b02d (diff)
staging: brcm80211: absorb brcmf_sdioh_iovar_op into brcmf_sdcard_iovar_op
fullmac wrapper function cleanup. Reviewed-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/brcm80211')
-rw-r--r--drivers/staging/brcm80211/brcmfmac/bcmsdh.c112
-rw-r--r--drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c116
-rw-r--r--drivers/staging/brcm80211/brcmfmac/sdio_host.h5
3 files changed, 110 insertions, 123 deletions
diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh.c
index aaf13f48b12..13b6dbe7a18 100644
--- a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/staging/brcm80211/brcmfmac/bcmsdh.c
@@ -46,12 +46,120 @@
module_param(sd_f2_blocksize, int, 0);
+/* IOVar table */
+enum {
+ IOV_MSGLEVEL = 1,
+ IOV_DEVREG,
+ IOV_HCIREGS,
+ IOV_RXCHAIN
+};
+
+const struct brcmu_iovar sdioh_iovars[] = {
+ {"sd_devreg", IOV_DEVREG, 0, IOVT_BUFFER, sizeof(struct brcmf_sdreg)}
+ ,
+ {"sd_rxchain", IOV_RXCHAIN, 0, IOVT_BOOL, 0}
+ ,
+ {NULL, 0, 0, 0, 0}
+};
+
int
brcmf_sdcard_iovar_op(struct brcmf_sdio_dev *sdiodev, const char *name,
void *params, int plen, void *arg, int len, bool set)
{
- return brcmf_sdioh_iovar_op(sdiodev, name, params, plen, arg,
- len, set);
+ const struct brcmu_iovar *vi = NULL;
+ int bcmerror = 0;
+ int val_size;
+ s32 int_val = 0;
+ bool bool_val;
+ u32 actionid;
+
+ if (name == NULL || len < 0)
+ return -EINVAL;
+
+ /* Set does not take qualifiers */
+ if (set && (params || plen))
+ return -EINVAL;
+
+ /* Get must have return space;*/
+ if (!set && !(arg && len))
+ return -EINVAL;
+
+ BRCMF_TRACE(("%s: Enter (%s %s)\n", __func__, (set ? "set" : "get"),
+ name));
+
+ vi = brcmu_iovar_lookup(sdioh_iovars, name);
+ if (vi == NULL) {
+ bcmerror = -ENOTSUPP;
+ goto exit;
+ }
+
+ bcmerror = brcmu_iovar_lencheck(vi, arg, len, set);
+ if (bcmerror != 0)
+ goto exit;
+
+ /* Set up params so get and set can share the convenience variables */
+ if (params == NULL) {
+ params = arg;
+ plen = len;
+ }
+
+ if (vi->type == IOVT_VOID)
+ val_size = 0;
+ else if (vi->type == IOVT_BUFFER)
+ val_size = len;
+ else
+ val_size = sizeof(int);
+
+ if (plen >= (int)sizeof(int_val))
+ memcpy(&int_val, params, sizeof(int_val));
+
+ bool_val = (int_val != 0) ? true : false;
+
+ actionid = set ? IOV_SVAL(vi->varid) : IOV_GVAL(vi->varid);
+ switch (actionid) {
+ case IOV_GVAL(IOV_RXCHAIN):
+ int_val = false;
+ memcpy(arg, &int_val, val_size);
+ break;
+
+ case IOV_GVAL(IOV_DEVREG):
+ {
+ struct brcmf_sdreg *sd_ptr =
+ (struct brcmf_sdreg *) params;
+ u8 data = 0;
+
+ if (brcmf_sdioh_cfg_read
+ (sdiodev, sd_ptr->func, sd_ptr->offset, &data)) {
+ bcmerror = -EIO;
+ break;
+ }
+
+ int_val = (int)data;
+ memcpy(arg, &int_val, sizeof(int_val));
+ break;
+ }
+
+ case IOV_SVAL(IOV_DEVREG):
+ {
+ struct brcmf_sdreg *sd_ptr =
+ (struct brcmf_sdreg *) params;
+ u8 data = (u8) sd_ptr->value;
+
+ if (brcmf_sdioh_cfg_write
+ (sdiodev, sd_ptr->func, sd_ptr->offset, &data)) {
+ bcmerror = -EIO;
+ break;
+ }
+ break;
+ }
+
+ default:
+ bcmerror = -ENOTSUPP;
+ break;
+ }
+exit:
+
+ return bcmerror;
}
int brcmf_sdcard_intr_reg(struct brcmf_sdio_dev *sdiodev)
diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
index 76b33942c74..1bfeec62865 100644
--- a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
@@ -236,122 +236,6 @@ int brcmf_sdioh_interrupt_deregister(struct brcmf_sdio_dev *sdiodev)
return 0;
}
-/* IOVar table */
-enum {
- IOV_MSGLEVEL = 1,
- IOV_DEVREG,
- IOV_HCIREGS,
- IOV_RXCHAIN
-};
-
-const struct brcmu_iovar sdioh_iovars[] = {
- {"sd_devreg", IOV_DEVREG, 0, IOVT_BUFFER, sizeof(struct brcmf_sdreg)}
- ,
- {"sd_rxchain", IOV_RXCHAIN, 0, IOVT_BOOL, 0}
- ,
- {NULL, 0, 0, 0, 0}
-};
-
-int
-brcmf_sdioh_iovar_op(struct brcmf_sdio_dev *sdiodev, const char *name,
- void *params, int plen, void *arg, int len, bool set)
-{
- const struct brcmu_iovar *vi = NULL;
- int bcmerror = 0;
- int val_size;
- s32 int_val = 0;
- bool bool_val;
- u32 actionid;
-
- if (name == NULL || len < 0)
- return -EINVAL;
-
- /* Set does not take qualifiers */
- if (set && (params || plen))
- return -EINVAL;
-
- /* Get must have return space;*/
- if (!set && !(arg && len))
- return -EINVAL;
-
- BRCMF_TRACE(("%s: Enter (%s %s)\n", __func__, (set ? "set" : "get"),
- name));
-
- vi = brcmu_iovar_lookup(sdioh_iovars, name);
- if (vi == NULL) {
- bcmerror = -ENOTSUPP;
- goto exit;
- }
-
- bcmerror = brcmu_iovar_lencheck(vi, arg, len, set);
- if (bcmerror != 0)
- goto exit;
-
- /* Set up params so get and set can share the convenience variables */
- if (params == NULL) {
- params = arg;
- plen = len;
- }
-
- if (vi->type == IOVT_VOID)
- val_size = 0;
- else if (vi->type == IOVT_BUFFER)
- val_size = len;
- else
- val_size = sizeof(int);
-
- if (plen >= (int)sizeof(int_val))
- memcpy(&int_val, params, sizeof(int_val));
-
- bool_val = (int_val != 0) ? true : false;
-
- actionid = set ? IOV_SVAL(vi->varid) : IOV_GVAL(vi->varid);
- switch (actionid) {
- case IOV_GVAL(IOV_RXCHAIN):
- int_val = false;
- memcpy(arg, &int_val, val_size);
- break;
-
- case IOV_GVAL(IOV_DEVREG):
- {
- struct brcmf_sdreg *sd_ptr =
- (struct brcmf_sdreg *) params;
- u8 data = 0;
-
- if (brcmf_sdioh_cfg_read
- (sdiodev, sd_ptr->func, sd_ptr->offset, &data)) {
- bcmerror = -EIO;
- break;
- }
-
- int_val = (int)data;
- memcpy(arg, &int_val, sizeof(int_val));
- break;
- }
-
- case IOV_SVAL(IOV_DEVREG):
- {
- struct brcmf_sdreg *sd_ptr =
- (struct brcmf_sdreg *) params;
- u8 data = (u8) sd_ptr->value;
-
- if (brcmf_sdioh_cfg_write
- (sdiodev, sd_ptr->func, sd_ptr->offset, &data)) {
- bcmerror = -EIO;
- break;
- }
- break;
- }
-
- default:
- bcmerror = -ENOTSUPP;
- break;
- }
-exit:
-
- return bcmerror;
-}
-
extern int
brcmf_sdioh_cfg_read(struct brcmf_sdio_dev *sdiodev, uint fnc_num, u32 addr,
u8 *data)
diff --git a/drivers/staging/brcm80211/brcmfmac/sdio_host.h b/drivers/staging/brcm80211/brcmfmac/sdio_host.h
index 4296c937505..4a814e54f99 100644
--- a/drivers/staging/brcm80211/brcmfmac/sdio_host.h
+++ b/drivers/staging/brcm80211/brcmfmac/sdio_host.h
@@ -276,11 +276,6 @@ extern int brcmf_sdioh_cfg_read(struct brcmf_sdio_dev *sdiodev, uint fuc,
extern int brcmf_sdioh_cfg_write(struct brcmf_sdio_dev *sdiodev, uint fuc,
u32 addr, u8 *data);
-/* handle iovars */
-extern int brcmf_sdioh_iovar_op(struct brcmf_sdio_dev *sdiodev,
- const char *name, void *params, int plen,
- void *arg, int len, bool set);
-
/* Issue abort to the specified function and clear controller as needed */
extern int brcmf_sdioh_abort(struct brcmf_sdio_dev *sdiodev, uint fnc);