Lines Matching refs:host

112 	struct sdhci_host host;  member
120 int (*emmc_set_clock)(struct sdhci_host *host, unsigned int clock);
121 void (*set_ios_post)(struct sdhci_host *host);
122 int (*set_enhanced_strobe)(struct sdhci_host *host);
203 static int rockchip_emmc_set_clock(struct sdhci_host *host, unsigned int clock) in rockchip_emmc_set_clock() argument
208 container_of(host, struct rockchip_sdhc, host); in rockchip_emmc_set_clock()
212 while (sdhci_readl(host, SDHCI_PRESENT_STATE) & in rockchip_emmc_set_clock()
223 sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL); in rockchip_emmc_set_clock()
230 input_clk = host->max_clk; in rockchip_emmc_set_clock()
232 if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) { in rockchip_emmc_set_clock()
237 if (host->clk_mul) { in rockchip_emmc_set_clock()
276 sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL); in rockchip_emmc_set_clock()
278 sdhci_enable_clk(host, clk); in rockchip_emmc_set_clock()
311 static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) in rk3399_sdhci_emmc_set_clock() argument
314 container_of(host, struct rockchip_sdhc, host); in rk3399_sdhci_emmc_set_clock()
315 int cycle_phy = host->clock != clock && in rk3399_sdhci_emmc_set_clock()
321 rockchip_emmc_set_clock(host, clock); in rk3399_sdhci_emmc_set_clock()
329 static int dwcmshc_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) in dwcmshc_sdhci_emmc_set_clock() argument
331 struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); in dwcmshc_sdhci_emmc_set_clock()
336 ret = rockchip_emmc_set_clock(host, clock); in dwcmshc_sdhci_emmc_set_clock()
339 sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL); in dwcmshc_sdhci_emmc_set_clock()
343 sdhci_writel(host, DWCMSHC_EMMC_DLL_CTRL_RESET, DWCMSHC_EMMC_DLL_CTRL); in dwcmshc_sdhci_emmc_set_clock()
345 sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); in dwcmshc_sdhci_emmc_set_clock()
350 sdhci_writel(host, extra, DWCMSHC_EMMC_ATCTRL); in dwcmshc_sdhci_emmc_set_clock()
356 sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_CTRL); in dwcmshc_sdhci_emmc_set_clock()
363 if (DLL_LOCK_WO_TMOUT((sdhci_readl(host, DWCMSHC_EMMC_DLL_STATUS0)))) in dwcmshc_sdhci_emmc_set_clock()
368 dll_lock_value = ((sdhci_readl(host, DWCMSHC_EMMC_DLL_STATUS0) & 0xFF) * 2 ) & 0xFF; in dwcmshc_sdhci_emmc_set_clock()
374 sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); in dwcmshc_sdhci_emmc_set_clock()
378 (host->mmc->timing == MMC_TIMING_MMC_HS400 || in dwcmshc_sdhci_emmc_set_clock()
379 host->mmc->timing == MMC_TIMING_MMC_HS400ES)) { in dwcmshc_sdhci_emmc_set_clock()
389 sdhci_writel(host, extra, DECMSHC_EMMC_DLL_CMDOUT); in dwcmshc_sdhci_emmc_set_clock()
398 sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK); in dwcmshc_sdhci_emmc_set_clock()
405 sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN); in dwcmshc_sdhci_emmc_set_clock()
408 sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); in dwcmshc_sdhci_emmc_set_clock()
411 extra = sdhci_readl(host, DWCMSHC_HOST_CTRL3); in dwcmshc_sdhci_emmc_set_clock()
413 sdhci_writel(host, extra, DWCMSHC_HOST_CTRL3); in dwcmshc_sdhci_emmc_set_clock()
416 sdhci_writel(host, DWCMSHC_EMMC_DLL_BYPASS | DWCMSHC_EMMC_DLL_START, DWCMSHC_EMMC_DLL_CTRL); in dwcmshc_sdhci_emmc_set_clock()
417 sdhci_writel(host, DLL_RXCLK_ORI_GATE, DWCMSHC_EMMC_DLL_RXCLK); in dwcmshc_sdhci_emmc_set_clock()
418 sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK); in dwcmshc_sdhci_emmc_set_clock()
419 sdhci_writel(host, 0, DECMSHC_EMMC_DLL_CMDOUT); in dwcmshc_sdhci_emmc_set_clock()
428 sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN); in dwcmshc_sdhci_emmc_set_clock()
433 sdhci_enable_clk(host, 0); in dwcmshc_sdhci_emmc_set_clock()
438 static int dwcmshc_sdhci_set_enhanced_strobe(struct sdhci_host *host) in dwcmshc_sdhci_set_enhanced_strobe() argument
440 struct mmc *mmc = host->mmc; in dwcmshc_sdhci_set_enhanced_strobe()
443 vendor = sdhci_readl(host, DWCMSHC_EMMC_CONTROL); in dwcmshc_sdhci_set_enhanced_strobe()
448 sdhci_writel(host, vendor, DWCMSHC_EMMC_CONTROL); in dwcmshc_sdhci_set_enhanced_strobe()
456 static void dwcmshc_sdhci_set_ios_post(struct sdhci_host *host) in dwcmshc_sdhci_set_ios_post() argument
459 u32 timing = host->mmc->timing; in dwcmshc_sdhci_set_ios_post()
462 ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); in dwcmshc_sdhci_set_ios_post()
465 sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2); in dwcmshc_sdhci_set_ios_post()
468 ctrl = sdhci_readw(host, DWCMSHC_EMMC_CONTROL); in dwcmshc_sdhci_set_ios_post()
470 sdhci_writew(host, ctrl, DWCMSHC_EMMC_CONTROL); in dwcmshc_sdhci_set_ios_post()
479 static int rockchip_sdhci_set_clock(struct sdhci_host *host, unsigned int clock) in rockchip_sdhci_set_clock() argument
482 container_of(host, struct rockchip_sdhc, host); in rockchip_sdhci_set_clock()
487 return data->emmc_set_clock(host, clock); in rockchip_sdhci_set_clock()
490 static void rockchip_sdhci_set_ios_post(struct sdhci_host *host) in rockchip_sdhci_set_ios_post() argument
493 container_of(host, struct rockchip_sdhc, host); in rockchip_sdhci_set_ios_post()
497 data->set_ios_post(host); in rockchip_sdhci_set_ios_post()
500 static int rockchip_sdhci_set_enhanced_strobe(struct sdhci_host *host) in rockchip_sdhci_set_enhanced_strobe() argument
502 struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); in rockchip_sdhci_set_enhanced_strobe()
506 return data->set_enhanced_strobe(host); in rockchip_sdhci_set_enhanced_strobe()
523 struct sdhci_host *host = &prv->host; in rockchip_sdhci_probe() local
530 host->name = dev->name; in rockchip_sdhci_probe()
531 host->ioaddr = map_sysmem(dtplat->reg[0], dtplat->reg[1]); in rockchip_sdhci_probe()
532 host->host_caps |= MMC_MODE_8BIT; in rockchip_sdhci_probe()
539 host->host_caps |= MMC_MODE_8BIT; in rockchip_sdhci_probe()
542 host->host_caps |= MMC_MODE_4BIT; in rockchip_sdhci_probe()
566 host->ops = &rockchip_sdhci_ops; in rockchip_sdhci_probe()
568 host->max_clk = max_frequency; in rockchip_sdhci_probe()
571 host->host_caps |= MMC_MODE_HS200; in rockchip_sdhci_probe()
573 host->host_caps |= MMC_MODE_HS400; in rockchip_sdhci_probe()
576 host->host_caps |= MMC_MODE_HS400ES; in rockchip_sdhci_probe()
578 ret = sdhci_setup_cfg(&plat->cfg, host, 0, EMMC_MIN_FREQ); in rockchip_sdhci_probe()
582 host->mmc = &plat->mmc; in rockchip_sdhci_probe()
585 host->mmc->priv = &prv->host; in rockchip_sdhci_probe()
586 host->mmc->dev = dev; in rockchip_sdhci_probe()
587 upriv->mmc = host->mmc; in rockchip_sdhci_probe()
595 struct sdhci_host *host = dev_get_priv(dev); in rockchip_sdhci_of_to_plat() local
597 host->name = dev->name; in rockchip_sdhci_of_to_plat()
598 host->ioaddr = dev_read_addr_ptr(dev); in rockchip_sdhci_of_to_plat()