Lines Matching full:mmc

2 /* Realtek PCI-Express SD/MMC Card Interface driver
17 #include <linux/mmc/host.h>
18 #include <linux/mmc/mmc.h>
19 #include <linux/mmc/sd.h>
20 #include <linux/mmc/sdio.h>
21 #include <linux/mmc/card.h>
29 struct mmc_host *mmc; member
49 static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios);
180 static void sdmmc_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdmmc_pre_req() argument
182 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_pre_req()
196 static void sdmmc_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdmmc_post_req() argument
199 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_post_req()
222 dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", in sd_send_cmd_get_rsp()
333 dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", in sd_read_data()
386 dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", in sd_write_data()
430 struct mmc_host *mmc = host->mmc; in sd_read_long_data() local
431 struct mmc_card *card = mmc->card; in sd_read_long_data()
440 dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", in sd_read_long_data()
488 struct mmc_host *mmc = host->mmc; in sd_write_long_data() local
489 struct mmc_card *card = mmc->card; in sd_write_long_data()
501 dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", in sd_write_long_data()
801 struct mmc_host *mmc = host->mmc; in sd_request() local
842 sdmmc_post_req(host->mmc, host->mrq, 0); in sd_request()
869 mmc_request_done(mmc, mrq); in sd_request()
872 static void sdmmc_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdmmc_request() argument
874 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_request()
907 struct mmc_host *mmc = host->mmc; in sd_power_on() local
956 sdmmc_init_sd_express(mmc, NULL); in sd_power_on()
960 mmc->caps2 |= MMC_CAP2_SD_EXP | MMC_CAP2_SD_EXP_1_2V; in sd_power_on()
969 mmc->caps2 &= ~(MMC_CAP2_SD_EXP | MMC_CAP2_SD_EXP_1_2V); in sd_power_on()
1086 static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdmmc_set_ios() argument
1088 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_set_ios()
1134 static int sdmmc_get_ro(struct mmc_host *mmc) in sdmmc_get_ro() argument
1136 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_get_ro()
1159 static int sdmmc_get_cd(struct mmc_host *mmc) in sdmmc_get_cd() argument
1161 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_get_cd()
1257 static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) in sdmmc_switch_voltage() argument
1259 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_switch_voltage()
1309 static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdmmc_execute_tuning() argument
1311 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_execute_tuning()
1327 switch (mmc->ios.timing) { in sdmmc_execute_tuning()
1348 if ((mmc->ios.timing == MMC_TIMING_UHS_SDR104) || in sdmmc_execute_tuning()
1349 (mmc->ios.timing == MMC_TIMING_UHS_SDR50)) in sdmmc_execute_tuning()
1351 else if (mmc->ios.timing == MMC_TIMING_UHS_DDR50) in sdmmc_execute_tuning()
1360 static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios) in sdmmc_init_sd_express() argument
1363 struct realtek_pci_sdmmc *host = mmc_priv(mmc); in sdmmc_init_sd_express()
1427 struct mmc_host *mmc = host->mmc; in init_extra_caps() local
1433 mmc->caps |= MMC_CAP_UHS_SDR50; in init_extra_caps()
1435 mmc->caps |= MMC_CAP_UHS_SDR104; in init_extra_caps()
1437 mmc->caps |= MMC_CAP_UHS_DDR50; in init_extra_caps()
1439 mmc->caps |= MMC_CAP_1_8V_DDR; in init_extra_caps()
1441 mmc->caps |= MMC_CAP_8_BIT_DATA; in init_extra_caps()
1443 mmc->caps2 |= MMC_CAP2_NO_MMC; in init_extra_caps()
1445 mmc->caps2 |= MMC_CAP2_SD_EXP | MMC_CAP2_SD_EXP_1_2V; in init_extra_caps()
1450 struct mmc_host *mmc = host->mmc; in realtek_init_host() local
1453 mmc->f_min = 250000; in realtek_init_host()
1454 mmc->f_max = 208000000; in realtek_init_host()
1455 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195; in realtek_init_host()
1456 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED | in realtek_init_host()
1460 mmc->caps = mmc->caps | MMC_CAP_AGGRESSIVE_PM; in realtek_init_host()
1461 mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE | in realtek_init_host()
1463 mmc->max_current_330 = 400; in realtek_init_host()
1464 mmc->max_current_180 = 800; in realtek_init_host()
1465 mmc->ops = &realtek_pci_sdmmc_ops; in realtek_init_host()
1469 mmc->max_segs = 256; in realtek_init_host()
1470 mmc->max_seg_size = 65536; in realtek_init_host()
1471 mmc->max_blk_size = 512; in realtek_init_host()
1472 mmc->max_blk_count = 65535; in realtek_init_host()
1473 mmc->max_req_size = 524288; in realtek_init_host()
1481 mmc_detect_change(host->mmc, 0); in rtsx_pci_sdmmc_card_event()
1486 struct mmc_host *mmc; in rtsx_pci_sdmmc_drv_probe() local
1501 mmc = devm_mmc_alloc_host(&pdev->dev, sizeof(*host)); in rtsx_pci_sdmmc_drv_probe()
1502 if (!mmc) in rtsx_pci_sdmmc_drv_probe()
1505 host = mmc_priv(mmc); in rtsx_pci_sdmmc_drv_probe()
1507 mmc->ios.power_delay_ms = 5; in rtsx_pci_sdmmc_drv_probe()
1508 host->mmc = mmc; in rtsx_pci_sdmmc_drv_probe()
1528 ret = mmc_add_host(mmc); in rtsx_pci_sdmmc_drv_probe()
1542 struct mmc_host *mmc; in rtsx_pci_sdmmc_drv_remove() local
1547 mmc = host->mmc; in rtsx_pci_sdmmc_drv_remove()
1555 mmc_hostname(mmc)); in rtsx_pci_sdmmc_drv_remove()
1562 mmc_request_done(mmc, host->mrq); in rtsx_pci_sdmmc_drv_remove()
1566 mmc_remove_host(mmc); in rtsx_pci_sdmmc_drv_remove()
1600 MODULE_DESCRIPTION("Realtek PCI-E SD/MMC Card Host Driver");