diff options
author | Andrea Adami <andrea.adami@gmail.com> | 2013-11-13 17:58:46 +0100 |
---|---|---|
committer | Andrea Adami <andrea.adami@gmail.com> | 2013-11-13 17:58:46 +0100 |
commit | 35c2400148dd155851fb5669dc078e590e2861bf (patch) | |
tree | cc9a30f5006c9f8b1047be577ffe09f7aebdf468 | |
parent | bf61c8091a1a3979b6ac96ffe2697a0f9b651f75 (diff) | |
download | meta-handheld-35c2400148dd155851fb5669dc078e590e2861bf.tar.gz |
linux-yocto: collie: add pcmcia clock fixes for sa1100
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
-rw-r--r-- | recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc | 3 | ||||
-rw-r--r-- | recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/pcmcia-sa1100-device-clock.patch | 100 |
2 files changed, 102 insertions, 1 deletions
diff --git a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc index fc8acab..e022444 100644 --- a/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc +++ b/recipes-kernel/linux/linux-yocto-3.10/collie/collie.scc @@ -12,8 +12,9 @@ patch ../patches/patches-mtd/collie-eraseinfo.patch patch ../patches/patches-mtd/collie-force-cfi.patch patch ../patches/patches-mtd/collie-mtd-resize.patch patch ../patches/patches-mtd/collie-force-unlock.patch +patch ../patches/patches-mtd/collie-fixup-strataflash.patch patch ../patches/patches-sa1100/collie-irda.patch patch ../patches/patches-sa1100/collie-add-bootblock.patch -patch ../patches/patches-mtd/collie-fixup-strataflash.patch patch ../patches/patches-sa1100/arm-sa1100-add-cpu-clock.patch patch ../patches/patches-sa1100/fbdev-sa1100fb-make-use-of-device-clock.patch +patch ../patches/patches-sa1100/pcmcia-sa1100-device-clock.patch diff --git a/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/pcmcia-sa1100-device-clock.patch b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/pcmcia-sa1100-device-clock.patch new file mode 100644 index 0000000..1d12fc8 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-3.10/patches/patches-sa1100/pcmcia-sa1100-device-clock.patch @@ -0,0 +1,100 @@ +From patchwork Tue Nov 12 03:32:10 2013 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [3/5] pcmcia: sa1100: make use of device clock +From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> +X-Patchwork-Id: 3170611 +Message-Id: <1384227132-10501-3-git-send-email-dbaryshkov@gmail.com> +To: linux-arm-kernel@lists.infradead.org +Cc: linux-fbdev@vger.kernel.org, linux-pcmcia@lists.infradead.org, + Russell King <linux@arm.linux.org.uk> +Date: Tue, 12 Nov 2013 07:32:10 +0400 + +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); |