Update sdio.c
This commit is contained in:
parent
0a798b33a5
commit
465fdfc2ff
|
@ -29,8 +29,8 @@
|
|||
#ifndef RT_SDIO_STACK_SIZE
|
||||
#define RT_SDIO_STACK_SIZE 512
|
||||
#endif
|
||||
#ifndef RT_SDIO_THREAD_PREORITY
|
||||
#define RT_SDIO_THREAD_PREORITY 0x40
|
||||
#ifndef RT_SDIO_THREAD_PRIORITY
|
||||
#define RT_SDIO_THREAD_PRIORITY 0x40
|
||||
#endif
|
||||
|
||||
static rt_list_t sdio_cards;
|
||||
|
@ -1059,7 +1059,7 @@ static rt_int32_t sdio_irq_thread_create(struct rt_mmcsd_card *card)
|
|||
RT_ASSERT(host->sdio_irq_sem != RT_NULL);
|
||||
|
||||
host->sdio_irq_thread = rt_thread_create("sdio_irq", sdio_irq_thread, host,
|
||||
RT_SDIO_STACK_SIZE, RT_SDIO_THREAD_PREORITY, 20);
|
||||
RT_SDIO_STACK_SIZE, RT_SDIO_THREAD_PRIORITY, 20);
|
||||
if (host->sdio_irq_thread != RT_NULL)
|
||||
{
|
||||
rt_thread_startup(host->sdio_irq_thread);
|
||||
|
@ -1079,7 +1079,7 @@ static rt_int32_t sdio_irq_thread_delete(struct rt_mmcsd_card *card)
|
|||
if (!host->sdio_irq_num)
|
||||
{
|
||||
if (host->flags & MMCSD_SUP_SDIO_IRQ)
|
||||
host->ops->enable_sdio_irq(host, 0);
|
||||
host->ops->enable_sdio_irq(host, 0);
|
||||
rt_sem_delete(host->sdio_irq_sem);
|
||||
host->sdio_irq_sem = RT_NULL;
|
||||
rt_thread_delete(host->sdio_irq_thread);
|
||||
|
@ -1253,6 +1253,16 @@ err:
|
|||
return -RT_EIO;
|
||||
}
|
||||
|
||||
void sdio_set_drvdata(struct rt_sdio_function *func, void *data)
|
||||
{
|
||||
func->priv = data;
|
||||
}
|
||||
|
||||
void* sdio_get_drvdata(struct rt_sdio_function *func)
|
||||
{
|
||||
return func->priv;
|
||||
}
|
||||
|
||||
rt_int32_t sdio_set_block_size(struct rt_sdio_function *func,
|
||||
rt_uint32_t blksize)
|
||||
{
|
||||
|
@ -1284,16 +1294,24 @@ rt_int32_t sdio_set_block_size(struct rt_sdio_function *func,
|
|||
rt_inline rt_int32_t sdio_match_card(struct rt_mmcsd_card *card,
|
||||
const struct rt_sdio_device_id *id)
|
||||
{
|
||||
rt_uint8_t num = 1;
|
||||
|
||||
if ((id->manufacturer != SDIO_ANY_MAN_ID) &&
|
||||
(id->manufacturer != card->cis.manufacturer))
|
||||
return 0;
|
||||
if ((id->product != SDIO_ANY_PROD_ID) &&
|
||||
(id->product != (card->cis.product | 1)))
|
||||
return 0;
|
||||
|
||||
while (num <= card->sdio_function_num)
|
||||
{
|
||||
if ((id->product != SDIO_ANY_PROD_ID) &&
|
||||
(id->product == card->sdio_function[num]->product))
|
||||
return 1;
|
||||
num++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static struct rt_mmcsd_card *sdio_match_driver(struct rt_sdio_device_id *id)
|
||||
{
|
||||
rt_list_t *l;
|
||||
|
|
Loading…
Reference in New Issue