Lines Matching defs:omap_host

122 static void sdhci_omap_start_clock(struct sdhci_omap_host *omap_host);
123 static void sdhci_omap_stop_clock(struct sdhci_omap_host *omap_host);
137 static int sdhci_omap_set_pbias(struct sdhci_omap_host *omap_host,
141 struct device *dev = omap_host->dev;
143 if (IS_ERR(omap_host->pbias))
147 ret = regulator_set_voltage(omap_host->pbias, iov, iov);
153 if (omap_host->pbias_enabled)
156 ret = regulator_enable(omap_host->pbias);
162 omap_host->pbias_enabled = true;
164 if (!omap_host->pbias_enabled)
167 ret = regulator_disable(omap_host->pbias);
172 omap_host->pbias_enabled = false;
178 static int sdhci_omap_enable_iov(struct sdhci_omap_host *omap_host,
182 struct sdhci_host *host = omap_host->host;
185 ret = sdhci_omap_set_pbias(omap_host, false, 0);
197 ret = sdhci_omap_set_pbias(omap_host, true, iov);
204 static void sdhci_omap_conf_bus_power(struct sdhci_omap_host *omap_host,
210 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_HCTL);
218 sdhci_omap_writel(omap_host, SDHCI_OMAP_HCTL, reg);
221 sdhci_omap_writel(omap_host, SDHCI_OMAP_HCTL, reg);
228 if (sdhci_omap_readl(omap_host, SDHCI_OMAP_HCTL) & HCTL_SDBP)
240 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
243 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
248 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
253 static inline void sdhci_omap_set_dll(struct sdhci_omap_host *omap_host,
259 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_DLL);
263 sdhci_omap_writel(omap_host, SDHCI_OMAP_DLL, reg);
266 sdhci_omap_writel(omap_host, SDHCI_OMAP_DLL, reg);
268 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_DLL);
273 sdhci_omap_writel(omap_host, SDHCI_OMAP_DLL, reg);
276 static void sdhci_omap_disable_tuning(struct sdhci_omap_host *omap_host)
280 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_AC12);
282 sdhci_omap_writel(omap_host, SDHCI_OMAP_AC12, reg);
284 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_DLL);
286 sdhci_omap_writel(omap_host, SDHCI_OMAP_DLL, reg);
293 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
295 struct device *dev = omap_host->dev;
312 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA2);
326 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_DLL);
328 sdhci_omap_writel(omap_host, SDHCI_OMAP_DLL, reg);
341 omap_host->is_tuning = true;
349 sdhci_omap_set_dll(omap_host, phase_delay);
409 sdhci_omap_set_dll(omap_host, phase_delay + i);
426 sdhci_omap_set_dll(omap_host, phase_delay + i);
445 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_AC12);
451 sdhci_omap_set_dll(omap_host, phase_delay);
453 omap_host->is_tuning = false;
458 omap_host->is_tuning = false;
460 sdhci_omap_disable_tuning(omap_host);
478 struct sdhci_omap_host *omap_host;
482 omap_host = sdhci_pltfm_priv(pltfm_host);
484 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
485 ac12 = sdhci_omap_readl(omap_host, SDHCI_OMAP_AC12);
490 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
502 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_PSTATE);
506 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
508 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
525 struct sdhci_omap_host *omap_host;
529 omap_host = sdhci_pltfm_priv(pltfm_host);
530 dev = omap_host->dev;
533 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA);
537 sdhci_omap_conf_bus_power(omap_host, ios->signal_voltage);
539 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_AC12);
541 sdhci_omap_writel(omap_host, SDHCI_OMAP_AC12, reg);
545 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA);
549 sdhci_omap_conf_bus_power(omap_host, ios->signal_voltage);
551 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_AC12);
553 sdhci_omap_writel(omap_host, SDHCI_OMAP_AC12, reg);
560 ret = sdhci_omap_enable_iov(omap_host, iov);
570 static void sdhci_omap_set_timing(struct sdhci_omap_host *omap_host, u8 timing)
574 struct device *dev = omap_host->dev;
576 if (!(omap_host->flags & SDHCI_OMAP_REQUIRE_IODELAY))
579 if (omap_host->timing == timing)
582 sdhci_omap_stop_clock(omap_host);
584 pinctrl_state = omap_host->pinctrl_state[timing];
585 ret = pinctrl_select_state(omap_host->pinctrl, pinctrl_state);
591 sdhci_omap_start_clock(omap_host);
592 omap_host->timing = timing;
595 static void sdhci_omap_set_power_mode(struct sdhci_omap_host *omap_host,
598 if (omap_host->bus_mode == MMC_POWER_OFF)
599 sdhci_omap_disable_tuning(omap_host);
600 omap_host->power_mode = power_mode;
603 static void sdhci_omap_set_bus_mode(struct sdhci_omap_host *omap_host,
608 if (omap_host->bus_mode == mode)
611 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
616 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
618 omap_host->bus_mode = mode;
625 struct sdhci_omap_host *omap_host;
628 omap_host = sdhci_pltfm_priv(pltfm_host);
630 sdhci_omap_set_bus_mode(omap_host, ios->bus_mode);
631 sdhci_omap_set_timing(omap_host, ios->timing);
633 sdhci_omap_set_power_mode(omap_host, ios->power_mode);
648 static void sdhci_omap_start_clock(struct sdhci_omap_host *omap_host)
652 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_SYSCTL);
654 sdhci_omap_writel(omap_host, SDHCI_OMAP_SYSCTL, reg);
657 static void sdhci_omap_stop_clock(struct sdhci_omap_host *omap_host)
661 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_SYSCTL);
663 sdhci_omap_writel(omap_host, SDHCI_OMAP_SYSCTL, reg);
669 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
672 sdhci_omap_stop_clock(omap_host);
681 sdhci_omap_start_clock(omap_host);
697 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
699 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
705 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
720 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
723 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
728 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
738 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
740 if (omap_host->power_mode == power_mode)
748 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
750 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
751 sdhci_omap_writel(omap_host, SDHCI_OMAP_CMD, 0x0);
758 if (sdhci_omap_readl(omap_host, SDHCI_OMAP_STAT) & INT_CC_EN)
765 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
767 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
768 sdhci_omap_writel(omap_host, SDHCI_OMAP_STAT, INT_CC_EN);
778 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
780 sdhci_omap_stop_clock(omap_host);
782 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
787 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, reg);
790 sdhci_omap_start_clock(omap_host);
797 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
802 if (omap_host->is_tuning)
805 if (omap_host->flags & SDHCI_OMAP_SPECIAL_RESET) {
832 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
834 if (omap_host->is_tuning && host->cmd && !host->data_early &&
885 static int sdhci_omap_set_capabilities(struct sdhci_omap_host *omap_host)
889 struct device *dev = omap_host->dev;
899 reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA);
907 sdhci_omap_writel(omap_host, SDHCI_OMAP_CAPA, reg);
957 *sdhci_omap_iodelay_pinctrl_state(struct sdhci_omap_host *omap_host, char *mode,
960 struct device *dev = omap_host->dev;
961 char *version = omap_host->version;
970 pinctrl_state = pinctrl_lookup_state(omap_host->pinctrl, str);
974 pinctrl_state = pinctrl_lookup_state(omap_host->pinctrl, mode);
986 *omap_host)
988 struct device *dev = omap_host->dev;
989 struct sdhci_host *host = omap_host->host;
996 if (!(omap_host->flags & SDHCI_OMAP_REQUIRE_IODELAY))
1006 omap_host->pinctrl = devm_pinctrl_get(omap_host->dev);
1007 if (IS_ERR(omap_host->pinctrl)) {
1009 return PTR_ERR(omap_host->pinctrl);
1012 state = pinctrl_lookup_state(omap_host->pinctrl, "default");
1019 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "sdr104", caps,
1024 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "ddr50", caps,
1029 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "sdr50", caps,
1034 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "sdr25", caps,
1039 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "sdr12", caps,
1044 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "ddr_1_8v", caps,
1049 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "ddr_3_3v",
1056 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "hs", caps,
1061 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "hs", caps,
1066 state = sdhci_omap_iodelay_pinctrl_state(omap_host, "hs200_1_8v", caps2,
1071 omap_host->pinctrl_state = pinctrl_state;
1093 struct sdhci_omap_host *omap_host;
1116 sizeof(*omap_host));
1123 omap_host = sdhci_pltfm_priv(pltfm_host);
1124 omap_host->host = host;
1125 omap_host->base = host->ioaddr;
1126 omap_host->dev = dev;
1127 omap_host->power_mode = MMC_POWER_UNDEFINED;
1128 omap_host->timing = MMC_TIMING_LEGACY;
1129 omap_host->flags = data->flags;
1141 omap_host->version = "rev11";
1165 omap_host->pbias = devm_regulator_get_optional(dev, "pbias");
1166 if (IS_ERR(omap_host->pbias)) {
1167 ret = PTR_ERR(omap_host->pbias);
1172 omap_host->pbias_enabled = false;
1188 ret = sdhci_omap_set_capabilities(omap_host);
1212 ret = sdhci_omap_config_iodelay_pinctrl_state(omap_host);
1249 static void sdhci_omap_context_save(struct sdhci_omap_host *omap_host)
1251 omap_host->con = sdhci_omap_readl(omap_host, SDHCI_OMAP_CON);
1252 omap_host->hctl = sdhci_omap_readl(omap_host, SDHCI_OMAP_HCTL);
1253 omap_host->sysctl = sdhci_omap_readl(omap_host, SDHCI_OMAP_SYSCTL);
1254 omap_host->capa = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA);
1255 omap_host->ie = sdhci_omap_readl(omap_host, SDHCI_OMAP_IE);
1256 omap_host->ise = sdhci_omap_readl(omap_host, SDHCI_OMAP_ISE);
1260 static void sdhci_omap_context_restore(struct sdhci_omap_host *omap_host)
1262 sdhci_omap_writel(omap_host, SDHCI_OMAP_HCTL, omap_host->hctl);
1263 sdhci_omap_writel(omap_host, SDHCI_OMAP_CAPA, omap_host->capa);
1264 sdhci_omap_writel(omap_host, SDHCI_OMAP_HCTL, omap_host->hctl);
1266 sdhci_omap_writel(omap_host, SDHCI_OMAP_SYSCTL, omap_host->sysctl);
1267 sdhci_omap_writel(omap_host, SDHCI_OMAP_CON, omap_host->con);
1268 sdhci_omap_writel(omap_host, SDHCI_OMAP_IE, omap_host->ie);
1269 sdhci_omap_writel(omap_host, SDHCI_OMAP_ISE, omap_host->ise);
1276 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
1280 sdhci_omap_context_save(omap_host);
1293 struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
1299 sdhci_omap_context_restore(omap_host);