diff options
author | John Crispin <blogic@openwrt.org> | 2013-06-23 15:50:49 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2013-06-23 15:50:49 +0000 |
commit | 5f6caa26e516e578be547df489d2ae8900da58a5 (patch) | |
tree | 48ec89a784c8c7ebb382cb8486ed0021a07b6109 /target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch | |
parent | 21ee9d504d834133a99fecfd36f1a65f8df8c096 (diff) | |
download | upstream-5f6caa26e516e578be547df489d2ae8900da58a5.tar.gz upstream-5f6caa26e516e578be547df489d2ae8900da58a5.tar.bz2 upstream-5f6caa26e516e578be547df489d2ae8900da58a5.zip |
ralink: update patches
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37016 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch')
-rw-r--r-- | target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch b/target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch new file mode 100644 index 0000000000..6cfa91a049 --- /dev/null +++ b/target/linux/ramips/patches-3.9/0141-clocksource-make-clocksource_of_init-pass-a-device_n.patch @@ -0,0 +1,131 @@ +From ec2ed8cdbe8b3d24261f0d88eb039e9d71e5d588 Mon Sep 17 00:00:00 2001 +From: John Crispin <blogic@openwrt.org> +Date: Thu, 23 May 2013 16:58:12 +0200 +Subject: [PATCH 141/164] clocksource: make clocksource_of_init() pass a + device_node pointer + +If we look at the clocksources that are OF enabled we will notice, that they +all do a of_find_matching_node() when being called. This patch changes +clocksource_of_init() to always pass the struct device_node pointer to the +init function. + +Signed-off-by: John Crispin <blogic@openwrt.org> +--- + drivers/clocksource/bcm2835_timer.c | 12 +----------- + drivers/clocksource/clksrc-of.c | 4 ++-- + drivers/clocksource/tegra20_timer.c | 14 +------------- + drivers/clocksource/vt8500_timer.c | 14 +------------- + 4 files changed, 5 insertions(+), 39 deletions(-) + +diff --git a/drivers/clocksource/bcm2835_timer.c b/drivers/clocksource/bcm2835_timer.c +index 50c68fe..766611d 100644 +--- a/drivers/clocksource/bcm2835_timer.c ++++ b/drivers/clocksource/bcm2835_timer.c +@@ -95,23 +95,13 @@ static irqreturn_t bcm2835_time_interrupt(int irq, void *dev_id) + } + } + +-static struct of_device_id bcm2835_time_match[] __initconst = { +- { .compatible = "brcm,bcm2835-system-timer" }, +- {} +-}; +- +-static void __init bcm2835_timer_init(void) ++static void __init bcm2835_timer_init(struct device_node *node) + { +- struct device_node *node; + void __iomem *base; + u32 freq; + int irq; + struct bcm2835_timer *timer; + +- node = of_find_matching_node(NULL, bcm2835_time_match); +- if (!node) +- panic("No bcm2835 timer node"); +- + base = of_iomap(node, 0); + if (!base) + panic("Can't remap registers"); +diff --git a/drivers/clocksource/clksrc-of.c b/drivers/clocksource/clksrc-of.c +index bdabdaa..3ef11fb 100644 +--- a/drivers/clocksource/clksrc-of.c ++++ b/drivers/clocksource/clksrc-of.c +@@ -26,10 +26,10 @@ void __init clocksource_of_init(void) + { + struct device_node *np; + const struct of_device_id *match; +- void (*init_func)(void); ++ void (*init_func)(struct device_node *); + + for_each_matching_node_and_match(np, __clksrc_of_table, &match) { + init_func = match->data; +- init_func(); ++ init_func(np); + } + } +diff --git a/drivers/clocksource/tegra20_timer.c b/drivers/clocksource/tegra20_timer.c +index 0bde03f..e698d8e 100644 +--- a/drivers/clocksource/tegra20_timer.c ++++ b/drivers/clocksource/tegra20_timer.c +@@ -154,29 +154,17 @@ static struct irqaction tegra_timer_irq = { + .dev_id = &tegra_clockevent, + }; + +-static const struct of_device_id timer_match[] __initconst = { +- { .compatible = "nvidia,tegra20-timer" }, +- {} +-}; +- + static const struct of_device_id rtc_match[] __initconst = { + { .compatible = "nvidia,tegra20-rtc" }, + {} + }; + +-static void __init tegra20_init_timer(void) ++static void __init tegra20_init_timer(struct device_node *np) + { +- struct device_node *np; + struct clk *clk; + unsigned long rate; + int ret; + +- np = of_find_matching_node(NULL, timer_match); +- if (!np) { +- pr_err("Failed to find timer DT node\n"); +- BUG(); +- } +- + timer_reg_base = of_iomap(np, 0); + if (!timer_reg_base) { + pr_err("Can't map timer registers\n"); +diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c +index 8efc86b..2422552 100644 +--- a/drivers/clocksource/vt8500_timer.c ++++ b/drivers/clocksource/vt8500_timer.c +@@ -129,22 +129,10 @@ static struct irqaction irq = { + .dev_id = &clockevent, + }; + +-static struct of_device_id vt8500_timer_ids[] = { +- { .compatible = "via,vt8500-timer" }, +- { } +-}; +- +-static void __init vt8500_timer_init(void) ++static void __init vt8500_timer_init(struct device_node *np) + { +- struct device_node *np; + int timer_irq; + +- np = of_find_matching_node(NULL, vt8500_timer_ids); +- if (!np) { +- pr_err("%s: Timer description missing from Device Tree\n", +- __func__); +- return; +- } + regbase = of_iomap(np, 0); + if (!regbase) { + pr_err("%s: Missing iobase description in Device Tree\n", +-- +1.7.10.4 + |