Lines Matching +full:clock +full:- +full:div
20 #include "sdhci-pltfm.h"
27 static void sdhci_cns3xxx_set_clock(struct sdhci_host *host, unsigned int clock) in sdhci_cns3xxx_set_clock() argument
29 struct device *dev = mmc_dev(host->mmc); in sdhci_cns3xxx_set_clock()
30 int div = 1; in sdhci_cns3xxx_set_clock() local
34 if (clock == host->clock) in sdhci_cns3xxx_set_clock()
39 if (clock == 0) in sdhci_cns3xxx_set_clock()
42 while (host->max_clk / div > clock) { in sdhci_cns3xxx_set_clock()
47 if (div < 4) in sdhci_cns3xxx_set_clock()
48 div += 1; in sdhci_cns3xxx_set_clock()
49 else if (div < 256) in sdhci_cns3xxx_set_clock()
50 div *= 2; in sdhci_cns3xxx_set_clock()
55 dev_dbg(dev, "desired SD clock: %d, actual: %d\n", in sdhci_cns3xxx_set_clock()
56 clock, host->max_clk / div); in sdhci_cns3xxx_set_clock()
59 if (div != 3) in sdhci_cns3xxx_set_clock()
60 div >>= 1; in sdhci_cns3xxx_set_clock()
62 clk = div << SDHCI_DIVIDER_SHIFT; in sdhci_cns3xxx_set_clock()
70 dev_warn(dev, "clock is unstable"); in sdhci_cns3xxx_set_clock()
73 timeout--; in sdhci_cns3xxx_set_clock()
80 host->clock = clock; in sdhci_cns3xxx_set_clock()
110 .name = "sdhci-cns3xxx",