ARM: OMAP1: dmtimer: conversion to platform devices
Convert OMAP1 dmtimers into a platform devices and then registers with device model framework so that it can be bound to corresponding driver. Signed-off-by: Thara Gopinath <thara@ti.com> Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com> Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Acked-by: Cousson, Benoit <b-cousson@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:

committed by
Tony Lindgren

parent
318c3e15cd
commit
97933d6ced
@@ -3,6 +3,12 @@
|
||||
*
|
||||
* OMAP Dual-Mode Timers
|
||||
*
|
||||
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
|
||||
* Tarun Kanti DebBarma <tarun.kanti@ti.com>
|
||||
* Thara Gopinath <thara@ti.com>
|
||||
*
|
||||
* dmtimer adaptation to platform_driver.
|
||||
*
|
||||
* Copyright (C) 2005 Nokia Corporation
|
||||
* OMAP2 support by Juha Yrjola
|
||||
* API improvements and OMAP2 clock framework support by Timo Teras
|
||||
@@ -43,25 +49,6 @@
|
||||
|
||||
static int dm_timer_count;
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP1
|
||||
static struct omap_dm_timer omap1_dm_timers[] = {
|
||||
{ .phys_base = 0xfffb1400, .irq = INT_1610_GPTIMER1 },
|
||||
{ .phys_base = 0xfffb1c00, .irq = INT_1610_GPTIMER2 },
|
||||
{ .phys_base = 0xfffb2400, .irq = INT_1610_GPTIMER3 },
|
||||
{ .phys_base = 0xfffb2c00, .irq = INT_1610_GPTIMER4 },
|
||||
{ .phys_base = 0xfffb3400, .irq = INT_1610_GPTIMER5 },
|
||||
{ .phys_base = 0xfffb3c00, .irq = INT_1610_GPTIMER6 },
|
||||
{ .phys_base = 0xfffb7400, .irq = INT_1610_GPTIMER7 },
|
||||
{ .phys_base = 0xfffbd400, .irq = INT_1610_GPTIMER8 },
|
||||
};
|
||||
|
||||
static const int omap1_dm_timer_count = ARRAY_SIZE(omap1_dm_timers);
|
||||
|
||||
#else
|
||||
#define omap1_dm_timers NULL
|
||||
#define omap1_dm_timer_count 0
|
||||
#endif /* CONFIG_ARCH_OMAP1 */
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP2
|
||||
static struct omap_dm_timer omap2_dm_timers[] = {
|
||||
{ .phys_base = 0x48028000, .irq = INT_24XX_GPTIMER1 },
|
||||
@@ -410,35 +397,20 @@ void omap_dm_timer_stop(struct omap_dm_timer *timer)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_stop);
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP1
|
||||
|
||||
int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
|
||||
{
|
||||
int n = (timer - dm_timers) << 1;
|
||||
u32 l;
|
||||
|
||||
l = omap_readl(MOD_CONF_CTRL_1) & ~(0x03 << n);
|
||||
l |= source << n;
|
||||
omap_writel(l, MOD_CONF_CTRL_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_set_source);
|
||||
|
||||
#else
|
||||
|
||||
int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
|
||||
{
|
||||
if (source < 0 || source >= 3)
|
||||
return -EINVAL;
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP2PLUS
|
||||
return __omap_dm_timer_set_source(timer->fclk,
|
||||
dm_source_clocks[source]);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_set_source);
|
||||
|
||||
#endif
|
||||
|
||||
void omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
|
||||
unsigned int load)
|
||||
{
|
||||
@@ -582,16 +554,12 @@ static int __init omap_dm_timer_init(void)
|
||||
struct omap_dm_timer *timer;
|
||||
int i, map_size = SZ_8K; /* Module 4KB + L4 4KB except on omap1 */
|
||||
|
||||
if (!(cpu_is_omap16xx() || cpu_class_is_omap2()))
|
||||
if (!cpu_class_is_omap2())
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_init(&dm_timer_lock);
|
||||
|
||||
if (cpu_class_is_omap1()) {
|
||||
dm_timers = omap1_dm_timers;
|
||||
dm_timer_count = omap1_dm_timer_count;
|
||||
map_size = SZ_2K;
|
||||
} else if (cpu_is_omap24xx()) {
|
||||
if (cpu_is_omap24xx()) {
|
||||
dm_timers = omap2_dm_timers;
|
||||
dm_timer_count = omap2_dm_timer_count;
|
||||
dm_source_names = omap2_dm_source_names;
|
||||
|
Reference in New Issue
Block a user