| 581 | } |
| 582 | |
| 583 | static int mmc_select_timing(struct rt_mmcsd_card *card) |
| 584 | { |
| 585 | int ret = 0; |
| 586 | |
| 587 | if (card->flags & CARD_FLAG_HS400) |
| 588 | { |
| 589 | LOG_I("emmc: switch to HS400 mode\n"); |
| 590 | ret = mmc_select_hs400(card); |
| 591 | } |
| 592 | else if (card->flags & CARD_FLAG_HS200) |
| 593 | { |
| 594 | LOG_I("emmc: switch to HS200 mode\n"); |
| 595 | ret = mmc_select_hs200(card); |
| 596 | } |
| 597 | else if (card->flags & CARD_FLAG_HIGHSPEED_DDR) |
| 598 | { |
| 599 | LOG_I("emmc: switch to HIGH Speed DDR mode\n"); |
| 600 | mmcsd_set_timing(card->host, MMCSD_TIMING_MMC_DDR52); |
| 601 | mmcsd_set_clock(card->host, card->hs_max_data_rate); |
| 602 | } |
| 603 | else |
| 604 | { |
| 605 | LOG_I("emmc: switch to HIGH Speed mode\n"); |
| 606 | mmcsd_set_timing(card->host, MMCSD_TIMING_MMC_HS); |
| 607 | mmcsd_set_clock(card->host, card->hs_max_data_rate); |
| 608 | } |
| 609 | |
| 610 | return ret; |
| 611 | } |
| 612 | |
| 613 | static rt_int32_t mmcsd_mmc_init_card(struct rt_mmcsd_host *host, |
| 614 | rt_uint32_t ocr) |
no test coverage detected