| 576 | } |
| 577 | |
| 578 | int rthw_sdctrl_init(void) |
| 579 | { |
| 580 | |
| 581 | FtsdCtrl_t *ft_sdctrl_p; |
| 582 | #ifdef BSP_SDC_USE_IRQ |
| 583 | FSdCtrl_Config_t *config_p; |
| 584 | FSdCtrl_NormalIrqSelect_t normalIrqFlgs = 0; |
| 585 | #endif |
| 586 | |
| 587 | rt_kprintf("rthw_sdctrl_init \r\n"); |
| 588 | RT_ASSERT(rthw_sdctrl_create(&sdctrl_class) == RT_EOK); |
| 589 | ft_sdctrl_p = &sdctrl_class.ft_sdctrl; |
| 590 | |
| 591 | FSdCtrl_Reset(ft_sdctrl_p, (pFtsdCtrl_delayTimer_t)rthw_sdctrl_delay); |
| 592 | FsdCtrl_Init(ft_sdctrl_p); |
| 593 | |
| 594 | #ifdef BSP_SDC_USE_IRQ |
| 595 | config_p = &ft_sdctrl_p->config; |
| 596 | #ifdef BSP_SDC_IRQ_CARD_REMOVE |
| 597 | normalIrqFlgs |= NORMAL_IRQ_CR; |
| 598 | |
| 599 | #endif |
| 600 | normalIrqFlgs |= NORMAL_IRQ_CC; |
| 601 | /* register handler irq enable bit and wait callback */ |
| 602 | FSdCtrl_SetHandler(ft_sdctrl_p, FTSDCTRL_CMDIRQID, rthw_sdctrl_nomarl_callback, ft_sdctrl_p); |
| 603 | FSdCtrl_NormalIrqSet(ft_sdctrl_p, normalIrqFlgs); |
| 604 | FSdCtrl_CmdWaitRegister(ft_sdctrl_p, rthw_sdctrl_cmd_wait); |
| 605 | |
| 606 | FSdCtrl_SetHandler(ft_sdctrl_p, FTSDCTRL_DMADATAIRQID, rthw_sdctrl_dma_callback, ft_sdctrl_p); |
| 607 | FSdCtrl_BdIrqSet(ft_sdctrl_p, BD_IRQ_TRS | BD_IRQ_RESPE); |
| 608 | FSdCtrl_WriteWaitRegister(ft_sdctrl_p, rthw_sdctrl_write_wait); |
| 609 | FSdCtrl_ReadWaitRegister(ft_sdctrl_p, rthw_sdctrl_read_wait); |
| 610 | |
| 611 | config_p->workMode = FTSDCTRL_CMD_IRQ_MASK | FTSDCTRL_DATA_WRITE_IRQ_MASK | FTSDCTRL_DATA_READ_IRQ_MASK; |
| 612 | |
| 613 | #else |
| 614 | |
| 615 | #endif |
| 616 | |
| 617 | /* install normal irq */ |
| 618 | |
| 619 | rt_hw_interrupt_install(ft_sdctrl_p->config.normalIrqNum, rthw_sdctrl_normal_irq, |
| 620 | &sdctrl_class.ft_sdctrl, "normalIrq"); |
| 621 | rt_hw_interrupt_umask(ft_sdctrl_p->config.normalIrqNum); |
| 622 | |
| 623 | rt_hw_interrupt_install(ft_sdctrl_p->config.dmaIrqNum, rthw_sdctrl_dma_irq, |
| 624 | &sdctrl_class.ft_sdctrl, "dmaIrq"); |
| 625 | rt_hw_interrupt_umask(ft_sdctrl_p->config.dmaIrqNum); |
| 626 | |
| 627 | return 0; |
| 628 | } |
| 629 | |
| 630 | INIT_DEVICE_EXPORT(rthw_sdctrl_init); |
| 631 |
nothing calls this directly
no test coverage detected