Merge pull request #4308 from whj4674672/sdio

[sdio] free memory and enhance performance
This commit is contained in:
Bernard Xiong 2021-02-05 18:23:17 +08:00 committed by GitHub
commit 25bcd72e1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 16 deletions

View File

@ -250,7 +250,10 @@ rt_int32_t sdio_io_rw_extended_block(struct rt_sdio_function *func,
rt_int32_t ret; rt_int32_t ret;
rt_uint32_t left_size; rt_uint32_t left_size;
rt_uint32_t max_blks, blks; rt_uint32_t max_blks, blks;
RT_ASSERT(func != RT_NULL);
RT_ASSERT(func->card != RT_NULL);
left_size = len; left_size = len;
/* Do the bulk of the transfer using block mode (if supported). */ /* Do the bulk of the transfer using block mode (if supported). */
@ -575,22 +578,26 @@ static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)
if (tpl_link < 4) if (tpl_link < 4)
{ {
LOG_D("bad CISTPL_MANFID length"); LOG_D("bad CISTPL_MANFID length");
break;
}
if (func->num != 0)
{
func->manufacturer = curr->data[0];
func->manufacturer |= curr->data[1] << 8;
func->product = curr->data[2];
func->product |= curr->data[3] << 8;
} }
else else
{ {
card->cis.manufacturer = curr->data[0]; if (func->num != 0)
card->cis.manufacturer |= curr->data[1] << 8; {
card->cis.product = curr->data[2]; func->manufacturer = curr->data[0];
card->cis.product |= curr->data[3] << 8; func->manufacturer |= curr->data[1] << 8;
func->product = curr->data[2];
func->product |= curr->data[3] << 8;
}
else
{
card->cis.manufacturer = curr->data[0];
card->cis.manufacturer |= curr->data[1] << 8;
card->cis.product = curr->data[2];
card->cis.product |= curr->data[3] << 8;
}
} }
rt_free(curr);
break; break;
case CISTPL_FUNCE: case CISTPL_FUNCE:
if (func->num != 0) if (func->num != 0)
@ -930,9 +937,6 @@ err3:
sdio_free_cis(host->card->sdio_function[i]); sdio_free_cis(host->card->sdio_function[i]);
rt_free(host->card->sdio_function[i]); rt_free(host->card->sdio_function[i]);
host->card->sdio_function[i] = RT_NULL; host->card->sdio_function[i] = RT_NULL;
rt_free(host->card);
host->card = RT_NULL;
break;
} }
} }
} }