diff options
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.patch | 91 |
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); |