| 767 | } |
| 768 | |
| 769 | static rt_int32_t sdio_set_bus_wide(struct rt_mmcsd_card *card) |
| 770 | { |
| 771 | rt_int32_t ret; |
| 772 | rt_uint8_t busif; |
| 773 | |
| 774 | if (!(card->host->flags & MMCSD_BUSWIDTH_4)) |
| 775 | return 0; |
| 776 | |
| 777 | if (card->cccr.low_speed && !card->cccr.bus_width) |
| 778 | return 0; |
| 779 | |
| 780 | busif = sdio_io_readb(card->sdio_function[0], SDIO_REG_CCCR_BUS_IF, &ret); |
| 781 | if (ret) |
| 782 | return ret; |
| 783 | |
| 784 | busif |= SDIO_BUS_WIDTH_4BIT; |
| 785 | |
| 786 | ret = sdio_io_writeb(card->sdio_function[0], SDIO_REG_CCCR_BUS_IF, busif); |
| 787 | if (ret) |
| 788 | return ret; |
| 789 | |
| 790 | mmcsd_set_bus_width(card->host, MMCSD_BUS_WIDTH_4); |
| 791 | |
| 792 | return 0; |
| 793 | } |
| 794 | |
| 795 | static rt_int32_t sdio_register_card(struct rt_mmcsd_card *card) |
| 796 | { |
no test coverage detected