aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/sdhci-bcm2835.c
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2013-01-28 13:27:12 -0500
committerChris Ball <cjb@laptop.org>2013-02-24 14:37:09 -0500
commitd005d94359a8df84ea6e5ac137393707f9e87e81 (patch)
tree1cf5e1c0c6fc304e387705d00d72a82c50f82b10 /drivers/mmc/host/sdhci-bcm2835.c
parent20b92a30b5610a5222060417961bc4ccb42ea5a5 (diff)
mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock
Quite a few drivers have a implementation of the get_timeout_clock callback which simply returns the result of clk_get_rate on the device's clock. This patch adds a common implementation of this to the sdhci-pltfm module and replaces all custom implementations with the common one. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Tested-by: Stephen Warren <swarren@wwwdotorg.org> Acked-by: Shawn Guo <shawn.guo@linaro.org> Tested-by: Kevin Liu <kliu5@marvell.com> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/host/sdhci-bcm2835.c')
-rw-r--r--drivers/mmc/host/sdhci-bcm2835.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/drivers/mmc/host/sdhci-bcm2835.c b/drivers/mmc/host/sdhci-bcm2835.c
index 453825fcc5cf..1e97b89dac66 100644
--- a/drivers/mmc/host/sdhci-bcm2835.c
+++ b/drivers/mmc/host/sdhci-bcm2835.c
@@ -51,7 +51,6 @@
51#define BCM2835_SDHCI_WRITE_DELAY (((2 * 1000000) / MIN_FREQ) + 1) 51#define BCM2835_SDHCI_WRITE_DELAY (((2 * 1000000) / MIN_FREQ) + 1)
52 52
53struct bcm2835_sdhci { 53struct bcm2835_sdhci {
54 struct clk *clk;
55 u32 shadow; 54 u32 shadow;
56}; 55};
57 56
@@ -120,27 +119,11 @@ static u8 bcm2835_sdhci_readb(struct sdhci_host *host, int reg)
120 return byte; 119 return byte;
121} 120}
122 121
123static unsigned int bcm2835_sdhci_get_max_clock(struct sdhci_host *host)
124{
125 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
126 struct bcm2835_sdhci *bcm2835_host = pltfm_host->priv;
127
128 return clk_get_rate(bcm2835_host->clk);
129}
130
131unsigned int bcm2835_sdhci_get_min_clock(struct sdhci_host *host) 122unsigned int bcm2835_sdhci_get_min_clock(struct sdhci_host *host)
132{ 123{
133 return MIN_FREQ; 124 return MIN_FREQ;
134} 125}
135 126
136unsigned int bcm2835_sdhci_get_timeout_clock(struct sdhci_host *host)
137{
138 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
139 struct bcm2835_sdhci *bcm2835_host = pltfm_host->priv;
140
141 return clk_get_rate(bcm2835_host->clk);
142}
143
144static struct sdhci_ops bcm2835_sdhci_ops = { 127static struct sdhci_ops bcm2835_sdhci_ops = {
145 .write_l = bcm2835_sdhci_writel, 128 .write_l = bcm2835_sdhci_writel,
146 .write_w = bcm2835_sdhci_writew, 129 .write_w = bcm2835_sdhci_writew,
@@ -148,9 +131,9 @@ static struct sdhci_ops bcm2835_sdhci_ops = {
148 .read_l = bcm2835_sdhci_readl, 131 .read_l = bcm2835_sdhci_readl,
149 .read_w = bcm2835_sdhci_readw, 132 .read_w = bcm2835_sdhci_readw,
150 .read_b = bcm2835_sdhci_readb, 133 .read_b = bcm2835_sdhci_readb,
151 .get_max_clock = bcm2835_sdhci_get_max_clock, 134 .get_max_clock = sdhci_pltfm_clk_get_max_clock,
152 .get_min_clock = bcm2835_sdhci_get_min_clock, 135 .get_min_clock = bcm2835_sdhci_get_min_clock,
153 .get_timeout_clock = bcm2835_sdhci_get_timeout_clock, 136 .get_timeout_clock = sdhci_pltfm_clk_get_max_clock,
154}; 137};
155 138
156static struct sdhci_pltfm_data bcm2835_sdhci_pdata = { 139static struct sdhci_pltfm_data bcm2835_sdhci_pdata = {
@@ -180,9 +163,9 @@ static int bcm2835_sdhci_probe(struct platform_device *pdev)
180 pltfm_host = sdhci_priv(host); 163 pltfm_host = sdhci_priv(host);
181 pltfm_host->priv = bcm2835_host; 164 pltfm_host->priv = bcm2835_host;
182 165
183 bcm2835_host->clk = devm_clk_get(&pdev->dev, NULL); 166 pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
184 if (IS_ERR(bcm2835_host->clk)) { 167 if (IS_ERR(pltfm_host->clk)) {
185 ret = PTR_ERR(bcm2835_host->clk); 168 ret = PTR_ERR(pltfm_host->clk);
186 goto err; 169 goto err;
187 } 170 }
188 171