Lines Matching defs:host
2 /* linux/drivers/mmc/host/sdhci-s3c.c
27 #include <linux/mmc/host.h>
105 * @host: The SDHCI host created
117 struct sdhci_host *host;
133 * @sdhci_quirks: sdhci host specific quirks.
145 static inline struct sdhci_s3c *to_s3c(struct sdhci_host *host)
147 return sdhci_priv(host);
152 * @host: The SDHCI host instance.
156 static unsigned int sdhci_s3c_get_max_clk(struct sdhci_host *host)
158 struct sdhci_s3c *ourhost = to_s3c(host);
219 * @host: The SDHCI host being changed
225 static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock)
227 struct sdhci_s3c *ourhost = to_s3c(host);
234 host->mmc->actual_clock = 0;
238 sdhci_set_clock(host, clock);
264 host->max_clk = ourhost->clk_rates[best_src];
268 writew(0, host->ioaddr + SDHCI_CLOCK_CONTROL);
270 ctrl = readl(host->ioaddr + S3C_SDHCI_CONTROL2);
273 writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL2);
277 host->ioaddr + S3C64XX_SDHCI_CONTROL4);
279 ctrl = readl(host->ioaddr + S3C_SDHCI_CONTROL2);
285 writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL2);
291 writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL3);
293 sdhci_set_clock(host, clock);
298 * @host: The SDHCI host being queried
300 * To init mmc host properly a minimal clock value is needed. For high system
305 static unsigned int sdhci_s3c_get_min_clock(struct sdhci_host *host)
307 struct sdhci_s3c *ourhost = to_s3c(host);
323 static unsigned int sdhci_cmu_get_max_clock(struct sdhci_host *host)
325 struct sdhci_s3c *ourhost = to_s3c(host);
345 static unsigned int sdhci_cmu_get_min_clock(struct sdhci_host *host)
347 struct sdhci_s3c *ourhost = to_s3c(host);
367 static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
369 struct sdhci_s3c *ourhost = to_s3c(host);
375 host->mmc->actual_clock = 0;
379 sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL);
383 sdhci_s3c_set_clock(host, clock);
386 clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
388 sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
393 mmc_hostname(host->mmc), clock);
398 sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
402 while (!((clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL))
406 mmc_hostname(host->mmc));
414 sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
428 struct sdhci_host *host, struct s3c_sdhci_platdata *pdata)
458 struct sdhci_host *host, struct s3c_sdhci_platdata *pdata)
480 struct sdhci_host *host;
493 host = sdhci_alloc_host(dev, sizeof(struct sdhci_s3c));
494 if (IS_ERR(host)) {
496 return PTR_ERR(host);
498 sc = sdhci_priv(host);
507 ret = sdhci_s3c_parse_dt(&pdev->dev, host, pdata);
516 sc->host = host;
521 platform_set_drvdata(pdev, host);
554 host->ioaddr = devm_platform_ioremap_resource(pdev, 0);
555 if (IS_ERR(host->ioaddr)) {
556 ret = PTR_ERR(host->ioaddr);
564 host->hw_name = "samsung-hsmmc";
565 host->ops = &sdhci_s3c_ops;
566 host->quirks = 0;
567 host->quirks2 = 0;
568 host->irq = irq;
571 host->quirks |= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC;
572 host->quirks |= SDHCI_QUIRK_NO_HISPD_BIT;
574 host->quirks |= drv_data->sdhci_quirks;
582 host->quirks |= SDHCI_QUIRK_BROKEN_DMA;
589 host->quirks |= SDHCI_QUIRK_NO_BUSY_IRQ;
591 /* This host supports the Auto CMD12 */
592 host->quirks |= SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12;
595 host->quirks |= SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC;
599 host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION;
602 host->mmc->caps = MMC_CAP_NONREMOVABLE;
606 host->mmc->caps |= MMC_CAP_8_BIT_DATA;
609 host->mmc->caps |= MMC_CAP_4_BIT_DATA;
614 host->mmc->pm_caps |= pdata->pm_caps;
616 host->quirks |= (SDHCI_QUIRK_32BIT_DMA_ADDR |
620 host->quirks |= SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK;
632 /* It supports additional host capabilities if needed */
634 host->mmc->caps |= pdata->host_caps;
637 host->mmc->caps2 |= pdata->host_caps2;
644 ret = mmc_of_parse(host->mmc);
648 ret = sdhci_add_host(host);
665 sdhci_free_host(host);
672 struct sdhci_host *host = platform_get_drvdata(pdev);
673 struct sdhci_s3c *sc = sdhci_priv(host);
682 sdhci_remove_host(host, 1);
689 sdhci_free_host(host);
695 struct sdhci_host *host = dev_get_drvdata(dev);
697 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
698 mmc_retune_needed(host->mmc);
700 return sdhci_suspend_host(host);
705 struct sdhci_host *host = dev_get_drvdata(dev);
707 return sdhci_resume_host(host);
714 struct sdhci_host *host = dev_get_drvdata(dev);
715 struct sdhci_s3c *ourhost = to_s3c(host);
719 ret = sdhci_runtime_suspend_host(host);
721 if (host->tuning_mode != SDHCI_TUNING_MODE_3)
722 mmc_retune_needed(host->mmc);
732 struct sdhci_host *host = dev_get_drvdata(dev);
733 struct sdhci_s3c *ourhost = to_s3c(host);
740 ret = sdhci_runtime_resume_host(host, 0);