staging: brcm80211: remove iovar IOV_BLOCKSIZE in brcmfmac
Iovar IOV_BLOCKSIZE code is not actually setting the sdio function's block size. Use cur_blksize provided by mmc core where necessary. 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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
297658defc
commit
c9ed29ac1a
@@ -169,14 +169,12 @@ struct sdioh_info *brcmf_sdioh_attach(void *bar0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sd->num_funcs = 2;
|
sd->num_funcs = 2;
|
||||||
sd->client_block_size[0] = 64;
|
|
||||||
|
|
||||||
gInstance->sd = sd;
|
gInstance->sd = sd;
|
||||||
|
|
||||||
/* Claim host controller */
|
/* Claim host controller */
|
||||||
sdio_claim_host(gInstance->func[1]);
|
sdio_claim_host(gInstance->func[1]);
|
||||||
|
|
||||||
sd->client_block_size[1] = 64;
|
|
||||||
err_ret = sdio_set_block_size(gInstance->func[1], 64);
|
err_ret = sdio_set_block_size(gInstance->func[1], 64);
|
||||||
if (err_ret)
|
if (err_ret)
|
||||||
BRCMF_ERROR(("%s: Failed to set F1 blocksize\n", __func__));
|
BRCMF_ERROR(("%s: Failed to set F1 blocksize\n", __func__));
|
||||||
@@ -188,7 +186,6 @@ struct sdioh_info *brcmf_sdioh_attach(void *bar0)
|
|||||||
/* Claim host controller F2 */
|
/* Claim host controller F2 */
|
||||||
sdio_claim_host(gInstance->func[2]);
|
sdio_claim_host(gInstance->func[2]);
|
||||||
|
|
||||||
sd->client_block_size[2] = sd_f2_blocksize;
|
|
||||||
err_ret =
|
err_ret =
|
||||||
sdio_set_block_size(gInstance->func[2], sd_f2_blocksize);
|
sdio_set_block_size(gInstance->func[2], sd_f2_blocksize);
|
||||||
if (err_ret)
|
if (err_ret)
|
||||||
@@ -273,7 +270,6 @@ extern int brcmf_sdioh_interrupt_deregister(struct sdioh_info *sd)
|
|||||||
/* IOVar table */
|
/* IOVar table */
|
||||||
enum {
|
enum {
|
||||||
IOV_MSGLEVEL = 1,
|
IOV_MSGLEVEL = 1,
|
||||||
IOV_BLOCKSIZE,
|
|
||||||
IOV_NUMINTS,
|
IOV_NUMINTS,
|
||||||
IOV_DEVREG,
|
IOV_DEVREG,
|
||||||
IOV_HCIREGS,
|
IOV_HCIREGS,
|
||||||
@@ -281,8 +277,6 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const struct brcmu_iovar sdioh_iovars[] = {
|
const struct brcmu_iovar sdioh_iovars[] = {
|
||||||
{"sd_blocksize", IOV_BLOCKSIZE, 0, IOVT_UINT32, 0},/* ((fn << 16) |
|
|
||||||
size) */
|
|
||||||
{"sd_numints", IOV_NUMINTS, 0, IOVT_UINT32, 0},
|
{"sd_numints", IOV_NUMINTS, 0, IOVT_UINT32, 0},
|
||||||
{"sd_devreg", IOV_DEVREG, 0, IOVT_BUFFER, sizeof(struct brcmf_sdreg)}
|
{"sd_devreg", IOV_DEVREG, 0, IOVT_BUFFER, sizeof(struct brcmf_sdreg)}
|
||||||
,
|
,
|
||||||
@@ -346,52 +340,6 @@ brcmf_sdioh_iovar_op(struct sdioh_info *si, const char *name,
|
|||||||
|
|
||||||
actionid = set ? IOV_SVAL(vi->varid) : IOV_GVAL(vi->varid);
|
actionid = set ? IOV_SVAL(vi->varid) : IOV_GVAL(vi->varid);
|
||||||
switch (actionid) {
|
switch (actionid) {
|
||||||
case IOV_GVAL(IOV_BLOCKSIZE):
|
|
||||||
if ((u32) int_val > si->num_funcs) {
|
|
||||||
bcmerror = -EINVAL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
int_val = (s32) si->client_block_size[int_val];
|
|
||||||
memcpy(arg, &int_val, val_size);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOV_SVAL(IOV_BLOCKSIZE):
|
|
||||||
{
|
|
||||||
uint func = ((u32) int_val >> 16);
|
|
||||||
uint blksize = (u16) int_val;
|
|
||||||
uint maxsize;
|
|
||||||
|
|
||||||
if (func > si->num_funcs) {
|
|
||||||
bcmerror = -EINVAL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (func) {
|
|
||||||
case 0:
|
|
||||||
maxsize = 32;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
maxsize = 64;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
maxsize = 512;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
maxsize = 0;
|
|
||||||
}
|
|
||||||
if (blksize > maxsize) {
|
|
||||||
bcmerror = -EINVAL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!blksize)
|
|
||||||
blksize = maxsize;
|
|
||||||
|
|
||||||
/* Now set it */
|
|
||||||
si->client_block_size[func] = blksize;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case IOV_GVAL(IOV_RXCHAIN):
|
case IOV_GVAL(IOV_RXCHAIN):
|
||||||
int_val = false;
|
int_val = false;
|
||||||
memcpy(arg, &int_val, val_size);
|
memcpy(arg, &int_val, val_size);
|
||||||
|
@@ -3168,24 +3168,6 @@ brcmf_sdbrcm_bus_iovar_op(struct brcmf_pub *drvr, const char *name,
|
|||||||
bcmerror = brcmf_sdcard_iovar_op(bus->sdiodev, name, params,
|
bcmerror = brcmf_sdcard_iovar_op(bus->sdiodev, name, params,
|
||||||
plen, arg, len, set);
|
plen, arg, len, set);
|
||||||
|
|
||||||
/* Similar check for blocksize change */
|
|
||||||
if (set && strcmp(name, "sd_blocksize") == 0) {
|
|
||||||
s32 fnum = 2;
|
|
||||||
if (brcmf_sdcard_iovar_op
|
|
||||||
(bus->sdiodev, "sd_blocksize", &fnum, sizeof(s32),
|
|
||||||
&bus->blocksize, sizeof(s32),
|
|
||||||
false) != 0) {
|
|
||||||
bus->blocksize = 0;
|
|
||||||
BRCMF_ERROR(("%s: fail on %s get\n", __func__,
|
|
||||||
"sd_blocksize"));
|
|
||||||
} else {
|
|
||||||
BRCMF_INFO(("%s: noted sd_blocksize update,"
|
|
||||||
" value now %d\n", __func__,
|
|
||||||
bus->blocksize));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bus->roundup = min(max_roundup, bus->blocksize);
|
|
||||||
|
|
||||||
if (bus->idletime == BRCMF_IDLE_IMMEDIATE &&
|
if (bus->idletime == BRCMF_IDLE_IMMEDIATE &&
|
||||||
!bus->dpc_sched) {
|
!bus->dpc_sched) {
|
||||||
bus->activity = false;
|
bus->activity = false;
|
||||||
@@ -5679,8 +5661,6 @@ fail:
|
|||||||
|
|
||||||
static bool brcmf_sdbrcm_probe_init(struct brcmf_bus *bus)
|
static bool brcmf_sdbrcm_probe_init(struct brcmf_bus *bus)
|
||||||
{
|
{
|
||||||
s32 fnum;
|
|
||||||
|
|
||||||
BRCMF_TRACE(("%s: Enter\n", __func__));
|
BRCMF_TRACE(("%s: Enter\n", __func__));
|
||||||
|
|
||||||
#ifdef SDTEST
|
#ifdef SDTEST
|
||||||
@@ -5705,16 +5685,7 @@ static bool brcmf_sdbrcm_probe_init(struct brcmf_bus *bus)
|
|||||||
bus->idleclock = BRCMF_IDLE_ACTIVE;
|
bus->idleclock = BRCMF_IDLE_ACTIVE;
|
||||||
|
|
||||||
/* Query the F2 block size, set roundup accordingly */
|
/* Query the F2 block size, set roundup accordingly */
|
||||||
fnum = 2;
|
bus->blocksize = bus->sdiodev->func2->cur_blksize;
|
||||||
if (brcmf_sdcard_iovar_op(bus->sdiodev, "sd_blocksize", &fnum,
|
|
||||||
sizeof(s32), &bus->blocksize,
|
|
||||||
sizeof(s32), false) != 0) {
|
|
||||||
bus->blocksize = 0;
|
|
||||||
BRCMF_ERROR(("%s: fail on %s get\n", __func__, "sd_blocksize"));
|
|
||||||
} else {
|
|
||||||
BRCMF_INFO(("%s: Initial value for %s is %d\n",
|
|
||||||
__func__, "sd_blocksize", bus->blocksize));
|
|
||||||
}
|
|
||||||
bus->roundup = min(max_roundup, bus->blocksize);
|
bus->roundup = min(max_roundup, bus->blocksize);
|
||||||
|
|
||||||
/* Query if bus module supports packet chaining,
|
/* Query if bus module supports packet chaining,
|
||||||
|
@@ -129,7 +129,6 @@ struct sdioh_info {
|
|||||||
int intrcount; /* Client interrupts */
|
int intrcount; /* Client interrupts */
|
||||||
bool sd_blockmode; /* sd_blockmode == false => 64 Byte Cmd 53s. */
|
bool sd_blockmode; /* sd_blockmode == false => 64 Byte Cmd 53s. */
|
||||||
/* Must be on for sd_multiblock to be effective */
|
/* Must be on for sd_multiblock to be effective */
|
||||||
int client_block_size[SDIOD_MAX_IOFUNCS]; /* Blocksize */
|
|
||||||
u8 num_funcs; /* Supported funcs on client */
|
u8 num_funcs; /* Supported funcs on client */
|
||||||
u32 com_cis_ptr;
|
u32 com_cis_ptr;
|
||||||
u32 func_cis_ptr[SDIOD_MAX_IOFUNCS];
|
u32 func_cis_ptr[SDIOD_MAX_IOFUNCS];
|
||||||
|
Reference in New Issue
Block a user