summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
new file mode 100644
index 00000000..b7a22c41
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0005-ARM-OMAP1-DMTIMER-fix-broken-timer-clock-source-sele.patch
@@ -0,0 +1,58 @@
1From 69c74a3f01d30c6dd44991f6413a4f317f4591a7 Mon Sep 17 00:00:00 2001
2From: Paul Walmsley <paul@pwsan.com>
3Date: Tue, 10 Apr 2012 18:36:02 -0600
4Subject: [PATCH 005/165] ARM: OMAP1: DMTIMER: fix broken timer clock source
5 selection
6
7commit 6aaec67da1e41a0752a2b903b989e73b9f02e182 upstream.
8
9DMTIMER source selection on OMAP1 is broken. omap1_dm_timer_set_src()
10tries to use __raw_{read,write}l() to read from and write to physical
11addresses, but those functions take virtual addresses.
12
13sparse caught this:
14
15arch/arm/mach-omap1/timer.c:50:13: warning: incorrect type in argument 1 (different base types)
16arch/arm/mach-omap1/timer.c:50:13: expected void const volatile [noderef] <asn:2>*<noident>
17arch/arm/mach-omap1/timer.c:50:13: got unsigned int
18arch/arm/mach-omap1/timer.c:52:9: warning: incorrect type in argument 1 (different base types)
19arch/arm/mach-omap1/timer.c:52:9: expected void const volatile [noderef] <asn:2>*<noident>
20arch/arm/mach-omap1/timer.c:52:9: got unsigned int
21
22Fix by using omap_{read,writel}(), just like the other users of the
23MOD_CONF_CTRL_1 register in the OMAP1 codebase. Of course, in the long term,
24removing omap_{read,write}l() is the appropriate thing to do; but
25this will take some work to do this cleanly.
26
27Looks like this was caused by 97933d6 (ARM: OMAP1: dmtimer: conversion
28to platform devices) that dangerously moved code and changed it in
29the same patch.
30
31Signed-off-by: Paul Walmsley <paul@pwsan.com>
32Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>
33[tony@atomide.com: updated comments to include the breaking commit]
34Signed-off-by: Tony Lindgren <tony@atomide.com>
35Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
36---
37 arch/arm/mach-omap1/timer.c | 4 ++--
38 1 files changed, 2 insertions(+), 2 deletions(-)
39
40diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c
41index 6e90665..fb202af 100644
42--- a/arch/arm/mach-omap1/timer.c
43+++ b/arch/arm/mach-omap1/timer.c
44@@ -47,9 +47,9 @@ static int omap1_dm_timer_set_src(struct platform_device *pdev,
45 int n = (pdev->id - 1) << 1;
46 u32 l;
47
48- l = __raw_readl(MOD_CONF_CTRL_1) & ~(0x03 << n);
49+ l = omap_readl(MOD_CONF_CTRL_1) & ~(0x03 << n);
50 l |= source << n;
51- __raw_writel(l, MOD_CONF_CTRL_1);
52+ omap_writel(l, MOD_CONF_CTRL_1);
53
54 return 0;
55 }
56--
571.7.7.6
58