aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch')
-rw-r--r--recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch91
1 files changed, 0 insertions, 91 deletions
diff --git a/recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch b/recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch
deleted file mode 100644
index ae5a912..0000000
--- a/recipes-kernel/linux/linux-yocto-3.14/collie/pcmcia-sa1100-device-clock.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 48558621c8a8162b6005719cc88aa1af6f74b7a2 Mon Sep 17 00:00:00 2001
-From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
-Date: Tue, 12 Nov 2013 07:32:10 +0400
-Subject: [PATCH] pcmcia: sa1100: make use of device clock
-
-Use per-device clock (instead of calling cpufreq_get(0), which can
-return 0 if no cpu frequency driver is selected) to program timings.
-
-Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
----
-drivers/pcmcia/sa1100_generic.c | 1 +
- drivers/pcmcia/sa11xx_base.c | 14 ++++++++++++--
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/pcmcia/sa1100_generic.c b/drivers/pcmcia/sa1100_generic.c
-index ff8a027..d2ab060 100644
---- a/drivers/pcmcia/sa1100_generic.c
-+++ b/drivers/pcmcia/sa1100_generic.c
-@@ -93,6 +93,7 @@ static int sa11x0_drv_pcmcia_remove(struct platform_device *dev)
- for (i = 0; i < sinfo->nskt; i++)
- soc_pcmcia_remove_one(&sinfo->skt[i]);
-
-+ clk_put(sinfo->clk);
- kfree(sinfo);
- return 0;
- }
-diff --git a/drivers/pcmcia/sa11xx_base.c b/drivers/pcmcia/sa11xx_base.c
-index 6eecd7c..aef0e69 100644
---- a/drivers/pcmcia/sa11xx_base.c
-+++ b/drivers/pcmcia/sa11xx_base.c
-@@ -38,6 +38,7 @@
- #include <linux/spinlock.h>
- #include <linux/io.h>
- #include <linux/slab.h>
-+#include <linux/clk.h>
-
- #include <mach/hardware.h>
- #include <asm/irq.h>
-@@ -138,14 +139,15 @@ sa1100_pcmcia_frequency_change(struct soc_pcmcia_socket *skt,
- static int
- sa1100_pcmcia_set_timing(struct soc_pcmcia_socket *skt)
- {
-- return sa1100_pcmcia_set_mecr(skt, cpufreq_get(0));
-+ unsigned long clk = clk_get_rate(skt->clk);
-+ return sa1100_pcmcia_set_mecr(skt, clk / 1000);
- }
-
- static int
- sa1100_pcmcia_show_timing(struct soc_pcmcia_socket *skt, char *buf)
- {
- struct soc_pcmcia_timing timing;
-- unsigned int clock = cpufreq_get(0);
-+ unsigned int clock = clk_get_rate(skt->clk);
- unsigned long mecr = MECR;
- char *p = buf;
-
-@@ -221,6 +223,11 @@ int sa11xx_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops,
- struct skt_dev_info *sinfo;
- struct soc_pcmcia_socket *skt;
- int i, ret = 0;
-+ struct clk *clk;
-+
-+ clk = clk_get(dev, NULL);
-+ if (IS_ERR(clk))
-+ return -ENODEV;
-
- sa11xx_drv_pcmcia_ops(ops);
-
-@@ -229,12 +236,14 @@ int sa11xx_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops,
- return -ENOMEM;
-
- sinfo->nskt = nr;
-+ sinfo->clk = clk;
-
- /* Initialize processor specific parameters */
- for (i = 0; i < nr; i++) {
- skt = &sinfo->skt[i];
-
- skt->nr = first + i;
-+ skt->clk = clk;
- soc_pcmcia_init_one(skt, ops, dev);
-
- ret = sa11xx_drv_pcmcia_add_one(skt);
-@@ -245,6 +254,7 @@ int sa11xx_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops,
- if (ret) {
- while (--i >= 0)
- soc_pcmcia_remove_one(&sinfo->skt[i]);
-+ clk_put(clk);
- kfree(sinfo);
- } else {
- dev_set_drvdata(dev, sinfo);