Lines Matching full:esdhc
2 * Freescale eSDHC controller driver.
28 #include "sdhci-esdhc.h"
66 { .compatible = "fsl,ls1021a-esdhc", .data = &ls1021a_esdhc_clk},
67 { .compatible = "fsl,ls1046a-esdhc", .data = &ls1046a_esdhc_clk},
68 { .compatible = "fsl,ls1012a-esdhc", .data = &ls1012a_esdhc_clk},
69 { .compatible = "fsl,p1010-esdhc", .data = &p1010_esdhc_clk},
70 { .compatible = "fsl,mpc8379-esdhc" },
71 { .compatible = "fsl,mpc8536-esdhc" },
72 { .compatible = "fsl,esdhc" },
86 * esdhc_read*_fixup - Fixup the value read from incompatible eSDHC register
91 * @value: 32bit eSDHC register value on spec_reg address
93 * In SD spec, there are 8/16/32/64 bits registers, while all of eSDHC
95 * address, register function, bit position and function between eSDHC spec
104 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_readl_fixup() local
108 * The bit of ADMA flag in eSDHC is not compatible with standard in esdhc_readl_fixup()
110 * supported by eSDHC. in esdhc_readl_fixup()
111 * And for many FSL eSDHC controller, the reset value of field in esdhc_readl_fixup()
116 if (esdhc->vendor_ver > VENDOR_V_22) { in esdhc_readl_fixup()
154 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_readw_fixup() local
162 /* Workaround for T4240-R1.0-R2.0 eSDHC which has incorrect in esdhc_readw_fixup()
166 (esdhc->quirk_incorrect_hostver)) in esdhc_readw_fixup()
196 * written into eSDHC register.
201 * @old_value: 32bit eSDHC register value on spec_reg address
203 * In SD spec, there are 8/16/32/64 bits registers, while all of eSDHC
205 * address, register function, bit position and function between eSDHC spec
271 * eSDHC doesn't have a standard power control register, so we do in esdhc_writeb_fixup()
450 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_of_adma_workaround() local
457 (esdhc->vendor_ver == VENDOR_V_23); in esdhc_of_adma_workaround()
478 if (of_device_is_compatible(dev->of_node, "fsl,ls1043a-esdhc") || in esdhc_of_enable_dma()
479 of_device_is_compatible(dev->of_node, "fsl,ls1046a-esdhc")) in esdhc_of_enable_dma()
496 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_of_get_max_clock() local
498 if (esdhc->peripheral_clock) in esdhc_of_get_max_clock()
499 return esdhc->peripheral_clock; in esdhc_of_get_max_clock()
507 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_of_get_min_clock() local
510 if (esdhc->peripheral_clock) in esdhc_of_get_min_clock()
511 clock = esdhc->peripheral_clock; in esdhc_of_get_min_clock()
551 struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_of_set_clock() local
566 if (esdhc->vendor_ver < VENDOR_V_23) in esdhc_of_set_clock()
570 esdhc->clk_fixup && host->mmc->ios.timing == MMC_TIMING_LEGACY) in esdhc_of_set_clock()
571 fixup = esdhc->clk_fixup->sd_dflt_max_clk; in esdhc_of_set_clock()
572 else if (esdhc->clk_fixup) in esdhc_of_set_clock()
573 fixup = esdhc->clk_fixup->max_clk[host->mmc->ios.timing]; in esdhc_of_set_clock()
840 struct sdhci_esdhc *esdhc; in esdhc_init() local
847 esdhc = sdhci_pltfm_priv(pltfm_host); in esdhc_init()
850 esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >> in esdhc_init()
852 esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK; in esdhc_init()
854 esdhc->quirk_incorrect_hostver = true; in esdhc_init()
856 esdhc->quirk_incorrect_hostver = false; in esdhc_init()
860 esdhc->clk_fixup = match->data; in esdhc_init()
865 * esdhc->peripheral_clock would be assigned with a value in esdhc_init()
866 * which is eSDHC base clock when use periperal clock. in esdhc_init()
868 * peripheral clock while the eSDHC base clock is 1/2 in esdhc_init()
871 if (of_device_is_compatible(np, "fsl,ls1046a-esdhc")) in esdhc_init()
872 esdhc->peripheral_clock = clk_get_rate(clk) / 2; in esdhc_init()
874 esdhc->peripheral_clock = clk_get_rate(clk); in esdhc_init()
879 if (esdhc->peripheral_clock) { in esdhc_init()
893 struct sdhci_esdhc *esdhc; in sdhci_esdhc_probe() local
918 esdhc = sdhci_pltfm_priv(pltfm_host); in sdhci_esdhc_probe()
919 if (esdhc->vendor_ver == VENDOR_V_22) in sdhci_esdhc_probe()
922 if (esdhc->vendor_ver > VENDOR_V_22) in sdhci_esdhc_probe()
925 if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc")) { in sdhci_esdhc_probe()
930 if (of_device_is_compatible(np, "fsl,p5040-esdhc") || in sdhci_esdhc_probe()
931 of_device_is_compatible(np, "fsl,p5020-esdhc") || in sdhci_esdhc_probe()
932 of_device_is_compatible(np, "fsl,p4080-esdhc") || in sdhci_esdhc_probe()
933 of_device_is_compatible(np, "fsl,p1020-esdhc") || in sdhci_esdhc_probe()
934 of_device_is_compatible(np, "fsl,t1040-esdhc")) in sdhci_esdhc_probe()
937 if (of_device_is_compatible(np, "fsl,ls1021a-esdhc")) in sdhci_esdhc_probe()
940 if (of_device_is_compatible(np, "fsl,p2020-esdhc")) { in sdhci_esdhc_probe()
967 .name = "sdhci-esdhc",
977 MODULE_DESCRIPTION("SDHCI OF driver for Freescale MPC eSDHC");