diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-09-23 17:51:14 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-10-04 15:19:56 +0200 |
commit | 3591842f8aa31e9022e3ef97552d590f9aad59c7 (patch) | |
tree | 1b957c517f6a4b072aadbe16fa47c9d22382bb89 /drivers/mci/imx.c | |
parent | c7cea55e0ad07fe43973675cfc42b27b20e87a92 (diff) | |
download | barebox-3591842f8aa31e9022e3ef97552d590f9aad59c7.tar.gz barebox-3591842f8aa31e9022e3ef97552d590f9aad59c7.tar.xz |
mci i.MX: Switch to clock support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci/imx.c')
-rw-r--r-- | drivers/mci/imx.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/mci/imx.c b/drivers/mci/imx.c index 0e4fa66739..035a3aa279 100644 --- a/drivers/mci/imx.c +++ b/drivers/mci/imx.c @@ -25,6 +25,8 @@ #include <clock.h> #include <init.h> #include <driver.h> +#include <linux/clk.h> +#include <linux/err.h> #include <mach/clock.h> #include <io.h> @@ -103,6 +105,7 @@ struct mxcmci_regs { struct mxcmci_host { struct mci_host mci; struct mxcmci_regs *base; + struct clk *clk; int irq; int detect_irq; int dma; @@ -415,7 +418,7 @@ static void mxcmci_set_clk_rate(struct mxcmci_host *host, unsigned int clk_ios) { unsigned int divider; int prescaler = 0; - unsigned long clk_in = imx_get_mmcclk(); + unsigned long clk_in = clk_get_rate(host->clk); while (prescaler <= 0x800) { for (divider = 1; divider <= 0xF; divider++) { @@ -490,9 +493,14 @@ static int mxcmci_init(struct mci_host *mci, struct device_d *dev) static int mxcmci_probe(struct device_d *dev) { struct mxcmci_host *host; + unsigned long rate; host = xzalloc(sizeof(*host)); + host->clk = clk_get(dev, NULL); + if (IS_ERR(host->clk)) + return PTR_ERR(host->clk); + host->mci.send_cmd = mxcmci_request; host->mci.set_ios = mxcmci_set_ios; host->mci.init = mxcmci_init; @@ -503,8 +511,9 @@ static int mxcmci_probe(struct device_d *dev) host->mci.voltages = MMC_VDD_32_33 | MMC_VDD_33_34; - host->mci.f_min = imx_get_mmcclk() >> 7; - host->mci.f_max = imx_get_mmcclk() >> 1; + rate = clk_get_rate(host->clk); + host->mci.f_min = rate >> 7; + host->mci.f_max = rate >> 1; mci_register(&host->mci); |