diff options
| -rw-r--r-- | arch/arm/mach-omap1/timer.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap1/timer32k.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2420_data.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2430_data.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/pm-debug.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/timer.c | 36 | ||||
| -rw-r--r-- | arch/arm/plat-omap/dmtimer.c | 54 | ||||
| -rw-r--r-- | arch/arm/plat-omap/include/plat/dmtimer.h | 80 | ||||
| -rw-r--r-- | drivers/staging/tidspbridge/core/ue_deh.c | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/dmtimer-omap.h | 31 |
10 files changed, 105 insertions, 102 deletions
diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c index cdeb9d3ef640..bde7a35e5000 100644 --- a/arch/arm/mach-omap1/timer.c +++ b/arch/arm/mach-omap1/timer.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/err.h> | 25 | #include <linux/err.h> |
| 26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
| 27 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
| 28 | #include <linux/platform_data/dmtimer-omap.h> | ||
| 28 | 29 | ||
| 29 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
| 30 | 31 | ||
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 89368195bf08..41152fadd4c0 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
| @@ -51,7 +51,6 @@ | |||
| 51 | #include <asm/mach/time.h> | 51 | #include <asm/mach/time.h> |
| 52 | 52 | ||
| 53 | #include <plat/counter-32k.h> | 53 | #include <plat/counter-32k.h> |
| 54 | #include <plat/dmtimer.h> | ||
| 55 | 54 | ||
| 56 | #include <mach/hardware.h> | 55 | #include <mach/hardware.h> |
| 57 | 56 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index a8b3368dca3d..e8efe3d1da6c 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
| @@ -17,7 +17,6 @@ | |||
| 17 | #include <linux/platform_data/spi-omap2-mcspi.h> | 17 | #include <linux/platform_data/spi-omap2-mcspi.h> |
| 18 | 18 | ||
| 19 | #include <plat-omap/dma-omap.h> | 19 | #include <plat-omap/dma-omap.h> |
| 20 | #include <plat/dmtimer.h> | ||
| 21 | 20 | ||
| 22 | #include "omap_hwmod.h" | 21 | #include "omap_hwmod.h" |
| 23 | #include "l3_2xxx.h" | 22 | #include "l3_2xxx.h" |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index dc768c50e523..32d17e3fd727 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
| @@ -18,7 +18,6 @@ | |||
| 18 | #include <linux/platform_data/spi-omap2-mcspi.h> | 18 | #include <linux/platform_data/spi-omap2-mcspi.h> |
| 19 | 19 | ||
| 20 | #include <plat-omap/dma-omap.h> | 20 | #include <plat-omap/dma-omap.h> |
| 21 | #include <plat/dmtimer.h> | ||
| 22 | 21 | ||
| 23 | #include "omap_hwmod.h" | 22 | #include "omap_hwmod.h" |
| 24 | #include "mmc.h" | 23 | #include "mmc.h" |
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 3cf4fdfd7ab0..e2c291f52f92 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c | |||
| @@ -30,7 +30,6 @@ | |||
| 30 | #include "clock.h" | 30 | #include "clock.h" |
| 31 | #include "powerdomain.h" | 31 | #include "powerdomain.h" |
| 32 | #include "clockdomain.h" | 32 | #include "clockdomain.h" |
| 33 | #include <plat/dmtimer.h> | ||
| 34 | #include "omap-pm.h" | 33 | #include "omap-pm.h" |
| 35 | 34 | ||
| 36 | #include "soc.h" | 35 | #include "soc.h" |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 099e4060afe9..b7f43a28e41f 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -39,6 +39,8 @@ | |||
| 39 | #include <linux/of.h> | 39 | #include <linux/of.h> |
| 40 | #include <linux/of_address.h> | 40 | #include <linux/of_address.h> |
| 41 | #include <linux/of_irq.h> | 41 | #include <linux/of_irq.h> |
| 42 | #include <linux/platform_device.h> | ||
| 43 | #include <linux/platform_data/dmtimer-omap.h> | ||
| 42 | 44 | ||
| 43 | #include <asm/mach/time.h> | 45 | #include <asm/mach/time.h> |
| 44 | #include <asm/smp_twd.h> | 46 | #include <asm/smp_twd.h> |
| @@ -160,11 +162,6 @@ static struct of_device_id omap_timer_match[] __initdata = { | |||
| 160 | { } | 162 | { } |
| 161 | }; | 163 | }; |
| 162 | 164 | ||
| 163 | static struct of_device_id omap_counter_match[] __initdata = { | ||
| 164 | { .compatible = "ti,omap-counter32k", }, | ||
| 165 | { } | ||
| 166 | }; | ||
| 167 | |||
| 168 | /** | 165 | /** |
| 169 | * omap_get_timer_dt - get a timer using device-tree | 166 | * omap_get_timer_dt - get a timer using device-tree |
| 170 | * @match - device-tree match structure for matching a device type | 167 | * @match - device-tree match structure for matching a device type |
| @@ -245,10 +242,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
| 245 | const char *oh_name; | 242 | const char *oh_name; |
| 246 | struct device_node *np; | 243 | struct device_node *np; |
| 247 | struct omap_hwmod *oh; | 244 | struct omap_hwmod *oh; |
| 248 | struct resource irq_rsrc, mem_rsrc; | 245 | struct resource irq, mem; |
| 249 | size_t size; | 246 | int r = 0; |
| 250 | int res = 0; | ||
| 251 | int r; | ||
| 252 | 247 | ||
| 253 | if (of_have_populated_dt()) { | 248 | if (of_have_populated_dt()) { |
| 254 | np = omap_get_timer_dt(omap_timer_match, NULL); | 249 | np = omap_get_timer_dt(omap_timer_match, NULL); |
| @@ -280,20 +275,18 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
| 280 | 275 | ||
| 281 | if (!of_have_populated_dt()) { | 276 | if (!of_have_populated_dt()) { |
| 282 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, | 277 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, |
| 283 | &irq_rsrc); | 278 | &irq); |
| 284 | if (r) | 279 | if (r) |
| 285 | return -ENXIO; | 280 | return -ENXIO; |
| 286 | timer->irq = irq_rsrc.start; | 281 | timer->irq = irq.start; |
| 287 | 282 | ||
| 288 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, | 283 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, |
| 289 | &mem_rsrc); | 284 | &mem); |
| 290 | if (r) | 285 | if (r) |
| 291 | return -ENXIO; | 286 | return -ENXIO; |
| 292 | timer->phys_base = mem_rsrc.start; | ||
| 293 | size = mem_rsrc.end - mem_rsrc.start; | ||
| 294 | 287 | ||
| 295 | /* Static mapping, never released */ | 288 | /* Static mapping, never released */ |
| 296 | timer->io_base = ioremap(timer->phys_base, size); | 289 | timer->io_base = ioremap(mem.start, mem.end - mem.start); |
| 297 | } | 290 | } |
| 298 | 291 | ||
| 299 | if (!timer->io_base) | 292 | if (!timer->io_base) |
| @@ -310,10 +303,10 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
| 310 | 303 | ||
| 311 | src = clk_get(NULL, fck_source); | 304 | src = clk_get(NULL, fck_source); |
| 312 | if (IS_ERR(src)) { | 305 | if (IS_ERR(src)) { |
| 313 | res = -EINVAL; | 306 | r = -EINVAL; |
| 314 | } else { | 307 | } else { |
| 315 | res = clk_set_parent(timer->fclk, src); | 308 | r = clk_set_parent(timer->fclk, src); |
| 316 | if (IS_ERR_VALUE(res)) | 309 | if (IS_ERR_VALUE(r)) |
| 317 | pr_warn("%s: %s cannot set source\n", | 310 | pr_warn("%s: %s cannot set source\n", |
| 318 | __func__, oh->name); | 311 | __func__, oh->name); |
| 319 | clk_put(src); | 312 | clk_put(src); |
| @@ -334,7 +327,7 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
| 334 | timer->rate = clk_get_rate(timer->fclk); | 327 | timer->rate = clk_get_rate(timer->fclk); |
| 335 | timer->reserved = 1; | 328 | timer->reserved = 1; |
| 336 | 329 | ||
| 337 | return res; | 330 | return r; |
| 338 | } | 331 | } |
| 339 | 332 | ||
| 340 | static void __init omap2_gp_clockevent_init(int gptimer_id, | 333 | static void __init omap2_gp_clockevent_init(int gptimer_id, |
| @@ -408,6 +401,11 @@ static u32 notrace dmtimer_read_sched_clock(void) | |||
| 408 | } | 401 | } |
| 409 | 402 | ||
| 410 | #ifdef CONFIG_OMAP_32K_TIMER | 403 | #ifdef CONFIG_OMAP_32K_TIMER |
| 404 | static struct of_device_id omap_counter_match[] __initdata = { | ||
| 405 | { .compatible = "ti,omap-counter32k", }, | ||
| 406 | { } | ||
| 407 | }; | ||
| 408 | |||
| 411 | /* Setup free-running counter for clocksource */ | 409 | /* Setup free-running counter for clocksource */ |
| 412 | static int __init omap2_sync32k_clocksource_init(void) | 410 | static int __init omap2_sync32k_clocksource_init(void) |
| 413 | { | 411 | { |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index 9deeb3064d33..89585c293554 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
| @@ -43,6 +43,8 @@ | |||
| 43 | #include <linux/pm_runtime.h> | 43 | #include <linux/pm_runtime.h> |
| 44 | #include <linux/of.h> | 44 | #include <linux/of.h> |
| 45 | #include <linux/of_device.h> | 45 | #include <linux/of_device.h> |
| 46 | #include <linux/platform_device.h> | ||
| 47 | #include <linux/platform_data/dmtimer-omap.h> | ||
| 46 | 48 | ||
| 47 | #include <plat/dmtimer.h> | 49 | #include <plat/dmtimer.h> |
| 48 | 50 | ||
| @@ -99,32 +101,39 @@ static void omap_timer_restore_context(struct omap_dm_timer *timer) | |||
| 99 | timer->context.tclr); | 101 | timer->context.tclr); |
| 100 | } | 102 | } |
| 101 | 103 | ||
| 102 | static void omap_dm_timer_wait_for_reset(struct omap_dm_timer *timer) | 104 | static int omap_dm_timer_reset(struct omap_dm_timer *timer) |
| 103 | { | 105 | { |
| 104 | int c; | 106 | u32 l, timeout = 100000; |
| 105 | 107 | ||
| 106 | if (!timer->sys_stat) | 108 | if (timer->revision != 1) |
| 107 | return; | 109 | return -EINVAL; |
| 108 | 110 | ||
| 109 | c = 0; | 111 | omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG, 0x06); |
| 110 | while (!(__raw_readl(timer->sys_stat) & 1)) { | 112 | |
| 111 | c++; | 113 | do { |
| 112 | if (c > 100000) { | 114 | l = __omap_dm_timer_read(timer, |
| 113 | printk(KERN_ERR "Timer failed to reset\n"); | 115 | OMAP_TIMER_V1_SYS_STAT_OFFSET, 0); |
| 114 | return; | 116 | } while (!l && timeout--); |
| 115 | } | 117 | |
| 118 | if (!timeout) { | ||
| 119 | dev_err(&timer->pdev->dev, "Timer failed to reset\n"); | ||
| 120 | return -ETIMEDOUT; | ||
| 116 | } | 121 | } |
| 117 | } | ||
| 118 | 122 | ||
| 119 | static void omap_dm_timer_reset(struct omap_dm_timer *timer) | 123 | /* Configure timer for smart-idle mode */ |
| 120 | { | 124 | l = __omap_dm_timer_read(timer, OMAP_TIMER_OCP_CFG_OFFSET, 0); |
| 121 | omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG, 0x06); | 125 | l |= 0x2 << 0x3; |
| 122 | omap_dm_timer_wait_for_reset(timer); | 126 | __omap_dm_timer_write(timer, OMAP_TIMER_OCP_CFG_OFFSET, l, 0); |
| 123 | __omap_dm_timer_reset(timer, 0, 0); | 127 | |
| 128 | timer->posted = 0; | ||
| 129 | |||
| 130 | return 0; | ||
| 124 | } | 131 | } |
| 125 | 132 | ||
| 126 | int omap_dm_timer_prepare(struct omap_dm_timer *timer) | 133 | static int omap_dm_timer_prepare(struct omap_dm_timer *timer) |
| 127 | { | 134 | { |
| 135 | int rc; | ||
| 136 | |||
| 128 | /* | 137 | /* |
| 129 | * FIXME: OMAP1 devices do not use the clock framework for dmtimers so | 138 | * FIXME: OMAP1 devices do not use the clock framework for dmtimers so |
| 130 | * do not call clk_get() for these devices. | 139 | * do not call clk_get() for these devices. |
| @@ -140,8 +149,13 @@ int omap_dm_timer_prepare(struct omap_dm_timer *timer) | |||
| 140 | 149 | ||
| 141 | omap_dm_timer_enable(timer); | 150 | omap_dm_timer_enable(timer); |
| 142 | 151 | ||
| 143 | if (timer->capability & OMAP_TIMER_NEEDS_RESET) | 152 | if (timer->capability & OMAP_TIMER_NEEDS_RESET) { |
| 144 | omap_dm_timer_reset(timer); | 153 | rc = omap_dm_timer_reset(timer); |
| 154 | if (rc) { | ||
| 155 | omap_dm_timer_disable(timer); | ||
| 156 | return rc; | ||
| 157 | } | ||
| 158 | } | ||
| 145 | 159 | ||
| 146 | __omap_dm_timer_enable_posted(timer); | 160 | __omap_dm_timer_enable_posted(timer); |
| 147 | omap_dm_timer_disable(timer); | 161 | omap_dm_timer_disable(timer); |
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h index 05a36e16f3f4..a3fbc48c332e 100644 --- a/arch/arm/plat-omap/include/plat/dmtimer.h +++ b/arch/arm/plat-omap/include/plat/dmtimer.h | |||
| @@ -79,8 +79,6 @@ struct omap_timer_capability_dev_attr { | |||
| 79 | u32 timer_capability; | 79 | u32 timer_capability; |
| 80 | }; | 80 | }; |
| 81 | 81 | ||
| 82 | struct omap_dm_timer; | ||
| 83 | |||
| 84 | struct timer_regs { | 82 | struct timer_regs { |
| 85 | u32 tidr; | 83 | u32 tidr; |
| 86 | u32 tier; | 84 | u32 tier; |
| @@ -101,12 +99,29 @@ struct timer_regs { | |||
| 101 | u32 towr; | 99 | u32 towr; |
| 102 | }; | 100 | }; |
| 103 | 101 | ||
| 104 | struct dmtimer_platform_data { | 102 | struct omap_dm_timer { |
| 105 | /* set_timer_src - Only used for OMAP1 devices */ | 103 | int id; |
| 106 | int (*set_timer_src)(struct platform_device *pdev, int source); | 104 | int irq; |
| 107 | u32 timer_errata; | 105 | struct clk *fclk; |
| 108 | u32 timer_capability; | 106 | |
| 107 | void __iomem *io_base; | ||
| 108 | void __iomem *irq_stat; /* TISR/IRQSTATUS interrupt status */ | ||
| 109 | void __iomem *irq_ena; /* irq enable */ | ||
| 110 | void __iomem *irq_dis; /* irq disable, only on v2 ip */ | ||
| 111 | void __iomem *pend; /* write pending */ | ||
| 112 | void __iomem *func_base; /* function register base */ | ||
| 113 | |||
| 114 | unsigned long rate; | ||
| 115 | unsigned reserved:1; | ||
| 116 | unsigned posted:1; | ||
| 117 | struct timer_regs context; | ||
| 109 | int (*get_context_loss_count)(struct device *); | 118 | int (*get_context_loss_count)(struct device *); |
| 119 | int ctx_loss_count; | ||
| 120 | int revision; | ||
| 121 | u32 capability; | ||
| 122 | u32 errata; | ||
| 123 | struct platform_device *pdev; | ||
| 124 | struct list_head node; | ||
| 110 | }; | 125 | }; |
| 111 | 126 | ||
| 112 | int omap_dm_timer_reserve_systimer(int id); | 127 | int omap_dm_timer_reserve_systimer(int id); |
| @@ -260,35 +275,6 @@ int omap_dm_timers_active(void); | |||
| 260 | #define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \ | 275 | #define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \ |
| 261 | (_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT)) | 276 | (_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT)) |
| 262 | 277 | ||
| 263 | struct omap_dm_timer { | ||
| 264 | unsigned long phys_base; | ||
| 265 | int id; | ||
| 266 | int irq; | ||
| 267 | struct clk *fclk; | ||
| 268 | |||
| 269 | void __iomem *io_base; | ||
| 270 | void __iomem *sys_stat; /* TISTAT timer status */ | ||
| 271 | void __iomem *irq_stat; /* TISR/IRQSTATUS interrupt status */ | ||
| 272 | void __iomem *irq_ena; /* irq enable */ | ||
| 273 | void __iomem *irq_dis; /* irq disable, only on v2 ip */ | ||
| 274 | void __iomem *pend; /* write pending */ | ||
| 275 | void __iomem *func_base; /* function register base */ | ||
| 276 | |||
| 277 | unsigned long rate; | ||
| 278 | unsigned reserved:1; | ||
| 279 | unsigned posted:1; | ||
| 280 | struct timer_regs context; | ||
| 281 | int (*get_context_loss_count)(struct device *); | ||
| 282 | int ctx_loss_count; | ||
| 283 | int revision; | ||
| 284 | u32 capability; | ||
| 285 | u32 errata; | ||
| 286 | struct platform_device *pdev; | ||
| 287 | struct list_head node; | ||
| 288 | }; | ||
| 289 | |||
| 290 | int omap_dm_timer_prepare(struct omap_dm_timer *timer); | ||
| 291 | |||
| 292 | static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, | 278 | static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, |
| 293 | int posted) | 279 | int posted) |
| 294 | { | 280 | { |
| @@ -317,8 +303,6 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) | |||
| 317 | tidr = __raw_readl(timer->io_base); | 303 | tidr = __raw_readl(timer->io_base); |
| 318 | if (!(tidr >> 16)) { | 304 | if (!(tidr >> 16)) { |
| 319 | timer->revision = 1; | 305 | timer->revision = 1; |
| 320 | timer->sys_stat = timer->io_base + | ||
| 321 | OMAP_TIMER_V1_SYS_STAT_OFFSET; | ||
| 322 | timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET; | 306 | timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET; |
| 323 | timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; | 307 | timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; |
| 324 | timer->irq_dis = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; | 308 | timer->irq_dis = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; |
| @@ -326,7 +310,6 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) | |||
| 326 | timer->func_base = timer->io_base; | 310 | timer->func_base = timer->io_base; |
| 327 | } else { | 311 | } else { |
| 328 | timer->revision = 2; | 312 | timer->revision = 2; |
| 329 | timer->sys_stat = NULL; | ||
| 330 | timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS; | 313 | timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS; |
| 331 | timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET; | 314 | timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET; |
| 332 | timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR; | 315 | timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR; |
| @@ -337,25 +320,6 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) | |||
| 337 | } | 320 | } |
| 338 | } | 321 | } |
| 339 | 322 | ||
| 340 | /* Assumes the source clock has been set by caller */ | ||
| 341 | static inline void __omap_dm_timer_reset(struct omap_dm_timer *timer, | ||
| 342 | int autoidle, int wakeup) | ||
| 343 | { | ||
| 344 | u32 l; | ||
| 345 | |||
| 346 | l = __raw_readl(timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); | ||
| 347 | l |= 0x02 << 3; /* Set to smart-idle mode */ | ||
| 348 | l |= 0x2 << 8; /* Set clock activity to perserve f-clock on idle */ | ||
| 349 | |||
| 350 | if (autoidle) | ||
| 351 | l |= 0x1 << 0; | ||
| 352 | |||
| 353 | if (wakeup) | ||
| 354 | l |= 1 << 2; | ||
| 355 | |||
| 356 | __raw_writel(l, timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); | ||
| 357 | } | ||
| 358 | |||
| 359 | /* | 323 | /* |
| 360 | * __omap_dm_timer_enable_posted - enables write posted mode | 324 | * __omap_dm_timer_enable_posted - enables write posted mode |
| 361 | * @timer: pointer to timer instance handle | 325 | * @timer: pointer to timer instance handle |
diff --git a/drivers/staging/tidspbridge/core/ue_deh.c b/drivers/staging/tidspbridge/core/ue_deh.c index 3d28b2345fbd..6aea6f1b4982 100644 --- a/drivers/staging/tidspbridge/core/ue_deh.c +++ b/drivers/staging/tidspbridge/core/ue_deh.c | |||
| @@ -19,7 +19,6 @@ | |||
| 19 | 19 | ||
| 20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
| 21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
| 22 | #include <plat/dmtimer.h> | ||
| 23 | 22 | ||
| 24 | #include <dspbridge/dbdefs.h> | 23 | #include <dspbridge/dbdefs.h> |
| 25 | #include <dspbridge/dspdeh.h> | 24 | #include <dspbridge/dspdeh.h> |
diff --git a/include/linux/platform_data/dmtimer-omap.h b/include/linux/platform_data/dmtimer-omap.h new file mode 100644 index 000000000000..a19b78d826e9 --- /dev/null +++ b/include/linux/platform_data/dmtimer-omap.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | /* | ||
| 2 | * DMTIMER platform data for TI OMAP platforms | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Texas Instruments | ||
| 5 | * Author: Jon Hunter <jon-hunter@ti.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License version 2 as published by | ||
| 9 | * the Free Software Foundation. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 14 | * more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License along with | ||
| 17 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef __PLATFORM_DATA_DMTIMER_OMAP_H__ | ||
| 21 | #define __PLATFORM_DATA_DMTIMER_OMAP_H__ | ||
| 22 | |||
| 23 | struct dmtimer_platform_data { | ||
| 24 | /* set_timer_src - Only used for OMAP1 devices */ | ||
| 25 | int (*set_timer_src)(struct platform_device *pdev, int source); | ||
| 26 | u32 timer_capability; | ||
| 27 | u32 timer_errata; | ||
| 28 | int (*get_context_loss_count)(struct device *); | ||
| 29 | }; | ||
| 30 | |||
| 31 | #endif /* __PLATFORM_DATA_DMTIMER_OMAP_H__ */ | ||
