diff options
Diffstat (limited to 'drivers/ata/pata_arasan_cf.c')
-rw-r--r-- | drivers/ata/pata_arasan_cf.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c index bfaa5cb1629a..26201ebef3ca 100644 --- a/drivers/ata/pata_arasan_cf.c +++ b/drivers/ata/pata_arasan_cf.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
32 | #include <linux/libata.h> | 32 | #include <linux/libata.h> |
33 | #include <linux/module.h> | 33 | #include <linux/module.h> |
34 | #include <linux/of.h> | ||
34 | #include <linux/pata_arasan_cf_data.h> | 35 | #include <linux/pata_arasan_cf_data.h> |
35 | #include <linux/platform_device.h> | 36 | #include <linux/platform_device.h> |
36 | #include <linux/pm.h> | 37 | #include <linux/pm.h> |
@@ -310,7 +311,7 @@ static int cf_init(struct arasan_cf_dev *acdev) | |||
310 | unsigned long flags; | 311 | unsigned long flags; |
311 | int ret = 0; | 312 | int ret = 0; |
312 | 313 | ||
313 | ret = clk_enable(acdev->clk); | 314 | ret = clk_prepare_enable(acdev->clk); |
314 | if (ret) { | 315 | if (ret) { |
315 | dev_dbg(acdev->host->dev, "clock enable failed"); | 316 | dev_dbg(acdev->host->dev, "clock enable failed"); |
316 | return ret; | 317 | return ret; |
@@ -340,7 +341,7 @@ static void cf_exit(struct arasan_cf_dev *acdev) | |||
340 | writel(readl(acdev->vbase + OP_MODE) & ~CFHOST_ENB, | 341 | writel(readl(acdev->vbase + OP_MODE) & ~CFHOST_ENB, |
341 | acdev->vbase + OP_MODE); | 342 | acdev->vbase + OP_MODE); |
342 | spin_unlock_irqrestore(&acdev->host->lock, flags); | 343 | spin_unlock_irqrestore(&acdev->host->lock, flags); |
343 | clk_disable(acdev->clk); | 344 | clk_disable_unprepare(acdev->clk); |
344 | } | 345 | } |
345 | 346 | ||
346 | static void dma_callback(void *dev) | 347 | static void dma_callback(void *dev) |
@@ -935,6 +936,14 @@ static int arasan_cf_resume(struct device *dev) | |||
935 | 936 | ||
936 | static SIMPLE_DEV_PM_OPS(arasan_cf_pm_ops, arasan_cf_suspend, arasan_cf_resume); | 937 | static SIMPLE_DEV_PM_OPS(arasan_cf_pm_ops, arasan_cf_suspend, arasan_cf_resume); |
937 | 938 | ||
939 | #ifdef CONFIG_OF | ||
940 | static const struct of_device_id arasan_cf_id_table[] = { | ||
941 | { .compatible = "arasan,cf-spear1340" }, | ||
942 | {} | ||
943 | }; | ||
944 | MODULE_DEVICE_TABLE(of, arasan_cf_id_table); | ||
945 | #endif | ||
946 | |||
938 | static struct platform_driver arasan_cf_driver = { | 947 | static struct platform_driver arasan_cf_driver = { |
939 | .probe = arasan_cf_probe, | 948 | .probe = arasan_cf_probe, |
940 | .remove = __devexit_p(arasan_cf_remove), | 949 | .remove = __devexit_p(arasan_cf_remove), |
@@ -942,6 +951,7 @@ static struct platform_driver arasan_cf_driver = { | |||
942 | .name = DRIVER_NAME, | 951 | .name = DRIVER_NAME, |
943 | .owner = THIS_MODULE, | 952 | .owner = THIS_MODULE, |
944 | .pm = &arasan_cf_pm_ops, | 953 | .pm = &arasan_cf_pm_ops, |
954 | .of_match_table = of_match_ptr(arasan_cf_id_table), | ||
945 | }, | 955 | }, |
946 | }; | 956 | }; |
947 | 957 | ||