Lines Matching refs:esdhc
27 #include "sdhci-esdhc.h"
71 { .compatible = "fsl,ls1021a-esdhc", .data = &ls1021a_esdhc_clk},
72 { .compatible = "fsl,ls1043a-esdhc", .data = &ls1043a_esdhc_clk},
73 { .compatible = "fsl,ls1046a-esdhc", .data = &ls1046a_esdhc_clk},
74 { .compatible = "fsl,ls1012a-esdhc", .data = &ls1012a_esdhc_clk},
75 { .compatible = "fsl,p1010-esdhc", .data = &p1010_esdhc_clk},
76 { .compatible = "fsl,mpc8379-esdhc" },
77 { .compatible = "fsl,mpc8536-esdhc" },
78 { .compatible = "fsl,esdhc" },
119 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
131 if (esdhc->vendor_ver > VENDOR_V_22) {
156 if (esdhc->quirk_ignore_data_inhibit)
180 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
195 (esdhc->quirk_incorrect_hostver))
426 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
441 esdhc->in_sw_tuning) {
452 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
467 esdhc->in_sw_tuning) {
507 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
514 (esdhc->vendor_ver == VENDOR_V_23);
536 if (of_device_is_compatible(dev->of_node, "fsl,ls1043a-esdhc") ||
537 of_device_is_compatible(dev->of_node, "fsl,ls1046a-esdhc")) {
557 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
559 if (esdhc->peripheral_clock)
560 return esdhc->peripheral_clock;
568 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
571 if (esdhc->peripheral_clock)
572 clock = esdhc->peripheral_clock;
581 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
591 if (esdhc->vendor_ver <= VENDOR_V_22)
609 while (esdhc->vendor_ver > VENDOR_V_22) {
652 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
665 if (esdhc->vendor_ver < VENDOR_V_23)
670 esdhc->clk_fixup && host->mmc->ios.timing == MMC_TIMING_LEGACY)
671 clock_fixup = esdhc->clk_fixup->sd_dflt_max_clk;
672 else if (esdhc->clk_fixup)
673 clock_fixup = esdhc->clk_fixup->max_clk[host->mmc->ios.timing];
685 esdhc->div_ratio = pre_div * div;
688 if (esdhc->quirk_limited_clk_division &&
692 if (esdhc->div_ratio <= 4) {
695 } else if (esdhc->div_ratio <= 8) {
698 } else if (esdhc->div_ratio <= 12) {
705 esdhc->div_ratio = pre_div * div;
708 host->mmc->actual_clock = host->max_clk / esdhc->div_ratio;
730 while (esdhc->vendor_ver > VENDOR_V_22) {
806 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
813 if (esdhc->quirk_delay_before_data_reset &&
823 (esdhc->vendor_ver <= VENDOR_V_22)) {
835 (esdhc->vendor_ver <= VENDOR_V_22)) {
850 (esdhc->spec_ver >= SDHCI_SPEC_300)) {
859 if (esdhc->quirk_unreliable_pulse_detection) {
1004 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
1007 if (esdhc->quirk_tuning_erratum_type1) {
1008 *window_start = 5 * esdhc->div_ratio;
1009 *window_end = 3 * esdhc->div_ratio;
1026 if (abs(start_ptr - end_ptr) > (4 * esdhc->div_ratio + 2)) {
1027 *window_start = 8 * esdhc->div_ratio;
1028 *window_end = 4 * esdhc->div_ratio;
1030 *window_start = 5 * esdhc->div_ratio;
1031 *window_end = 3 * esdhc->div_ratio;
1040 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
1056 esdhc->in_sw_tuning = true;
1058 esdhc->in_sw_tuning = false;
1066 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
1076 clk = esdhc->peripheral_clock / 3;
1096 if (esdhc->quirk_limited_clk_division &&
1114 if (esdhc->quirk_tuning_erratum_type2 &&
1119 (4 * esdhc->div_ratio + 2))
1128 (esdhc->quirk_tuning_erratum_type1 ||
1129 esdhc->quirk_tuning_erratum_type2)) {
1151 clk = host->max_clk / (esdhc->div_ratio + 1);
1220 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
1223 if (esdhc->quirk_trans_complete_erratum) {
1346 struct sdhci_esdhc *esdhc;
1353 esdhc = sdhci_pltfm_priv(pltfm_host);
1356 esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >>
1358 esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK;
1360 esdhc->quirk_incorrect_hostver = true;
1362 esdhc->quirk_incorrect_hostver = false;
1365 esdhc->quirk_limited_clk_division = true;
1367 esdhc->quirk_limited_clk_division = false;
1370 esdhc->quirk_unreliable_pulse_detection = true;
1372 esdhc->quirk_unreliable_pulse_detection = false;
1376 esdhc->clk_fixup = match->data;
1379 if (of_device_is_compatible(np, "fsl,p2020-esdhc")) {
1380 esdhc->quirk_delay_before_data_reset = true;
1381 esdhc->quirk_trans_complete_erratum = true;
1387 * esdhc->peripheral_clock would be assigned with a value
1393 if (of_device_is_compatible(np, "fsl,ls1046a-esdhc") ||
1394 of_device_is_compatible(np, "fsl,ls1028a-esdhc") ||
1395 of_device_is_compatible(np, "fsl,ls1088a-esdhc"))
1396 esdhc->peripheral_clock = clk_get_rate(clk) / 2;
1398 esdhc->peripheral_clock = clk_get_rate(clk);
1410 if (esdhc->peripheral_clock)
1429 struct sdhci_esdhc *esdhc;
1455 esdhc = sdhci_pltfm_priv(pltfm_host);
1457 esdhc->quirk_tuning_erratum_type1 = true;
1459 esdhc->quirk_tuning_erratum_type1 = false;
1462 esdhc->quirk_tuning_erratum_type2 = true;
1464 esdhc->quirk_tuning_erratum_type2 = false;
1466 if (esdhc->vendor_ver == VENDOR_V_22)
1469 if (esdhc->vendor_ver > VENDOR_V_22)
1472 tp = of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc");
1479 if (of_device_is_compatible(np, "fsl,p5040-esdhc") ||
1480 of_device_is_compatible(np, "fsl,p5020-esdhc") ||
1481 of_device_is_compatible(np, "fsl,p4080-esdhc") ||
1482 of_device_is_compatible(np, "fsl,p1020-esdhc") ||
1483 of_device_is_compatible(np, "fsl,t1040-esdhc"))
1486 if (of_device_is_compatible(np, "fsl,ls1021a-esdhc"))
1489 esdhc->quirk_ignore_data_inhibit = false;
1490 if (of_device_is_compatible(np, "fsl,p2020-esdhc")) {
1496 esdhc->quirk_ignore_data_inhibit = true;
1518 .name = "sdhci-esdhc",