Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
1d90da95
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1d90da95
编写于
2月 28, 2011
作者:
T
Tony Lindgren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'hwmod_clockevent_2.6.39' of
git://git.pwsan.com/linux-2.6
into omap-for-linus
上级
d6b5d01b
38698bef
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
2045 addition
and
62 deletion
+2045
-62
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod.c
+100
-54
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
+635
-1
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
+634
-1
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+650
-1
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+1
-1
arch/arm/mach-omap2/serial.c
arch/arm/mach-omap2/serial.c
+1
-1
arch/arm/mach-omap2/timer-gp.c
arch/arm/mach-omap2/timer-gp.c
+6
-1
arch/arm/plat-omap/include/plat/dmtimer.h
arch/arm/plat-omap/include/plat/dmtimer.h
+11
-0
arch/arm/plat-omap/include/plat/omap_hwmod.h
arch/arm/plat-omap/include/plat/omap_hwmod.h
+7
-2
未找到文件。
arch/arm/mach-omap2/omap_hwmod.c
浏览文件 @
1d90da95
/*
* omap_hwmod implementation for OMAP2/3/4
*
* Copyright (C) 2009-201
0
Nokia Corporation
* Copyright (C) 2009-201
1
Nokia Corporation
*
* Paul Walmsley, Benoît Cousson, Kevin Hilman
*
...
...
@@ -162,9 +162,6 @@ static LIST_HEAD(omap_hwmod_list);
/* mpu_oh: used to add/remove MPU initiator from sleepdep list */
static
struct
omap_hwmod
*
mpu_oh
;
/* inited: 0 if omap_hwmod_init() has not yet been called; 1 otherwise */
static
u8
inited
;
/* Private functions */
...
...
@@ -904,18 +901,16 @@ static struct omap_hwmod *_lookup(const char *name)
* @oh: struct omap_hwmod *
* @data: not used; pass NULL
*
* Called by omap_hwmod_late_init() (after omap2_clk_init()).
* Resolves all clock names embedded in the hwmod. Returns -EINVAL if
* the omap_hwmod has not yet been registered or if the clocks have
* already been initialized, 0 on success, or a non-zero error on
* failure.
* Called by omap_hwmod_setup_*() (after omap2_clk_init()).
* Resolves all clock names embedded in the hwmod. Returns 0 on
* success, or a negative error code on failure.
*/
static
int
_init_clocks
(
struct
omap_hwmod
*
oh
,
void
*
data
)
{
int
ret
=
0
;
if
(
!
oh
||
(
oh
->
_state
!=
_HWMOD_STATE_REGISTERED
)
)
return
-
EINVAL
;
if
(
oh
->
_state
!=
_HWMOD_STATE_REGISTERED
)
return
0
;
pr_debug
(
"omap_hwmod: %s: looking up clocks
\n
"
,
oh
->
name
);
...
...
@@ -1354,14 +1349,16 @@ static int _shutdown(struct omap_hwmod *oh)
* @oh: struct omap_hwmod *
*
* Writes the CLOCKACTIVITY bits @clockact to the hwmod @oh
* OCP_SYSCONFIG register. Returns -EINVAL if the hwmod is in the
* wrong state or returns 0.
* OCP_SYSCONFIG register. Returns 0.
*/
static
int
_setup
(
struct
omap_hwmod
*
oh
,
void
*
data
)
{
int
i
,
r
;
u8
postsetup_state
;
if
(
oh
->
_state
!=
_HWMOD_STATE_CLKS_INITED
)
return
0
;
/* Set iclk autoidle mode */
if
(
oh
->
slaves_cnt
>
0
)
{
for
(
i
=
0
;
i
<
oh
->
slaves_cnt
;
i
++
)
{
...
...
@@ -1455,7 +1452,7 @@ static int _setup(struct omap_hwmod *oh, void *data)
*/
static
int
__init
_register
(
struct
omap_hwmod
*
oh
)
{
int
ret
,
ms_id
;
int
ms_id
;
if
(
!
oh
||
!
oh
->
name
||
!
oh
->
class
||
!
oh
->
class
->
name
||
(
oh
->
_state
!=
_HWMOD_STATE_UNKNOWN
))
...
...
@@ -1478,9 +1475,14 @@ static int __init _register(struct omap_hwmod *oh)
oh
->
_state
=
_HWMOD_STATE_REGISTERED
;
ret
=
0
;
/*
* XXX Rather than doing a strcmp(), this should test a flag
* set in the hwmod data, inserted by the autogenerator code.
*/
if
(
!
strcmp
(
oh
->
name
,
MPU_INITIATOR_NAME
))
mpu_oh
=
oh
;
return
ret
;
return
0
;
}
...
...
@@ -1583,38 +1585,30 @@ int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data),
return
ret
;
}
/**
* omap_hwmod_
init - init omap_hwmod code and register
hwmods
* omap_hwmod_
register - register an array of
hwmods
* @ohs: pointer to an array of omap_hwmods to register
*
* Intended to be called early in boot before the clock framework is
* initialized. If @ohs is not null, will register all omap_hwmods
* listed in @ohs that are valid for this chip. Returns -EINVAL if
* omap_hwmod_init() has already been called or 0 otherwise.
* listed in @ohs that are valid for this chip. Returns 0.
*/
int
__init
omap_hwmod_
init
(
struct
omap_hwmod
**
ohs
)
int
__init
omap_hwmod_
register
(
struct
omap_hwmod
**
ohs
)
{
struct
omap_hwmod
*
oh
;
int
r
;
if
(
inited
)
return
-
EINVAL
;
inited
=
1
;
int
r
,
i
;
if
(
!
ohs
)
return
0
;
oh
=
*
ohs
;
while
(
oh
)
{
if
(
omap_chip_is
(
oh
->
omap_chip
))
{
r
=
_register
(
oh
)
;
WARN
(
r
,
"omap_hwmod: %s: _register returned "
"%d
\n
"
,
oh
->
name
,
r
);
}
oh
=
*++
ohs
;
}
i
=
0
;
do
{
if
(
!
omap_chip_is
(
ohs
[
i
]
->
omap_chip
))
continue
;
r
=
_register
(
ohs
[
i
]
);
WARN
(
r
,
"omap_hwmod: %s: _register returned %d
\n
"
,
ohs
[
i
]
->
name
,
r
)
;
}
while
(
ohs
[
++
i
]);
return
0
;
}
...
...
@@ -1622,12 +1616,14 @@ int __init omap_hwmod_init(struct omap_hwmod **ohs)
/*
* _populate_mpu_rt_base - populate the virtual address for a hwmod
*
* Must be called only from omap_hwmod_
late_init
so ioremap works properly.
* Must be called only from omap_hwmod_
setup_*()
so ioremap works properly.
* Assumes the caller takes care of locking if needed.
*
*/
static
int
__init
_populate_mpu_rt_base
(
struct
omap_hwmod
*
oh
,
void
*
data
)
{
if
(
oh
->
_state
!=
_HWMOD_STATE_REGISTERED
)
return
0
;
if
(
oh
->
_int_flags
&
_HWMOD_NO_MPU_PORT
)
return
0
;
...
...
@@ -1640,31 +1636,81 @@ static int __init _populate_mpu_rt_base(struct omap_hwmod *oh, void *data)
}
/**
* omap_hwmod_late_init - do some post-clock framework initialization
* omap_hwmod_setup_one - set up a single hwmod
* @oh_name: const char * name of the already-registered hwmod to set up
*
* Must be called after omap2_clk_init(). Resolves the struct clk
* names to struct clk pointers for each registered omap_hwmod. Also
* calls _setup() on each hwmod. Returns -EINVAL upon error or 0 upon
* success.
*/
int
__init
omap_hwmod_setup_one
(
const
char
*
oh_name
)
{
struct
omap_hwmod
*
oh
;
int
r
;
pr_debug
(
"omap_hwmod: %s: %s
\n
"
,
oh_name
,
__func__
);
if
(
!
mpu_oh
)
{
pr_err
(
"omap_hwmod: %s: cannot setup_one: MPU initiator hwmod %s not yet registered
\n
"
,
oh_name
,
MPU_INITIATOR_NAME
);
return
-
EINVAL
;
}
oh
=
_lookup
(
oh_name
);
if
(
!
oh
)
{
WARN
(
1
,
"omap_hwmod: %s: hwmod not yet registered
\n
"
,
oh_name
);
return
-
EINVAL
;
}
if
(
mpu_oh
->
_state
==
_HWMOD_STATE_REGISTERED
&&
oh
!=
mpu_oh
)
omap_hwmod_setup_one
(
MPU_INITIATOR_NAME
);
r
=
_populate_mpu_rt_base
(
oh
,
NULL
);
if
(
IS_ERR_VALUE
(
r
))
{
WARN
(
1
,
"omap_hwmod: %s: couldn't set mpu_rt_base
\n
"
,
oh_name
);
return
-
EINVAL
;
}
r
=
_init_clocks
(
oh
,
NULL
);
if
(
IS_ERR_VALUE
(
r
))
{
WARN
(
1
,
"omap_hwmod: %s: couldn't init clocks
\n
"
,
oh_name
);
return
-
EINVAL
;
}
_setup
(
oh
,
NULL
);
return
0
;
}
/**
* omap_hwmod_setup - do some post-clock framework initialization
*
* Must be called after omap2_clk_init(). Resolves the struct clk names
* to struct clk pointers for each registered omap_hwmod. Also calls
* _setup() on each hwmod. Returns 0.
* _setup() on each hwmod. Returns 0
upon success
.
*/
static
int
__init
omap_hwmod_
late_init
(
void
)
static
int
__init
omap_hwmod_
setup_all
(
void
)
{
int
r
;
if
(
!
mpu_oh
)
{
pr_err
(
"omap_hwmod: %s: MPU initiator hwmod %s not yet registered
\n
"
,
__func__
,
MPU_INITIATOR_NAME
);
return
-
EINVAL
;
}
r
=
omap_hwmod_for_each
(
_populate_mpu_rt_base
,
NULL
);
/* XXX check return value */
r
=
omap_hwmod_for_each
(
_init_clocks
,
NULL
);
WARN
(
r
,
"omap_hwmod: omap_hwmod_late_init(): _init_clocks failed
\n
"
);
mpu_oh
=
omap_hwmod_lookup
(
MPU_INITIATOR_NAME
);
WARN
(
!
mpu_oh
,
"omap_hwmod: could not find MPU initiator hwmod %s
\n
"
,
MPU_INITIATOR_NAME
);
WARN
(
IS_ERR_VALUE
(
r
),
"omap_hwmod: %s: _init_clocks failed
\n
"
,
__func__
);
omap_hwmod_for_each
(
_setup
,
NULL
);
return
0
;
}
core_initcall
(
omap_hwmod_
late_init
);
core_initcall
(
omap_hwmod_
setup_all
);
/**
* omap_hwmod_enable - enable an omap_hwmod
...
...
@@ -2183,11 +2229,11 @@ int omap_hwmod_for_each_by_class(const char *classname,
* @oh: struct omap_hwmod *
* @state: state that _setup() should leave the hwmod in
*
* Sets the hwmod state that @oh will enter at the end of _setup()
(called by
*
omap_hwmod_late_init()). Only valid to call between calls to
*
omap_hwmod_init() and omap_hwmod_late_init(). Returns 0 upon success or
*
-EINVAL if there is a problem with the arguments or if the hwmod i
s
* in the wrong state.
* Sets the hwmod state that @oh will enter at the end of _setup()
*
(called by omap_hwmod_setup_*()). Only valid to call between
*
calling omap_hwmod_register() and omap_hwmod_setup_*(). Returns
*
0 upon success or -EINVAL if there is a problem with the argument
s
*
or if the hwmod is
in the wrong state.
*/
int
omap_hwmod_set_postsetup_state
(
struct
omap_hwmod
*
oh
,
u8
state
)
{
...
...
arch/arm/mach-omap2/omap_hwmod_2420_data.c
浏览文件 @
1d90da95
...
...
@@ -19,6 +19,7 @@
#include <plat/i2c.h>
#include <plat/gpio.h>
#include <plat/mcspi.h>
#include <plat/dmtimer.h>
#include <plat/l3_2xxx.h>
#include <plat/l4_2xxx.h>
...
...
@@ -337,6 +338,625 @@ static struct omap_hwmod omap2420_iva_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* Timer Common */
static
struct
omap_hwmod_class_sysconfig
omap2420_timer_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap2420_timer_hwmod_class
=
{
.
name
=
"timer"
,
.
sysc
=
&
omap2420_timer_sysc
,
.
rev
=
OMAP_TIMER_IP_VERSION_1
,
};
/* timer1 */
static
struct
omap_hwmod
omap2420_timer1_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer1_mpu_irqs
[]
=
{
{
.
irq
=
37
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer1_addrs
[]
=
{
{
.
pa_start
=
0x48028000
,
.
pa_end
=
0x48028000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_wkup -> timer1 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_wkup__timer1
=
{
.
master
=
&
omap2420_l4_wkup_hwmod
,
.
slave
=
&
omap2420_timer1_hwmod
,
.
clk
=
"gpt1_ick"
,
.
addr
=
omap2420_timer1_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer1_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer1 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer1_slaves
[]
=
{
&
omap2420_l4_wkup__timer1
,
};
/* timer1 hwmod */
static
struct
omap_hwmod
omap2420_timer1_hwmod
=
{
.
name
=
"timer1"
,
.
mpu_irqs
=
omap2420_timer1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer1_mpu_irqs
),
.
main_clk
=
"gpt1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT1_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT1_SHIFT
,
},
},
.
slaves
=
omap2420_timer1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer1_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer2 */
static
struct
omap_hwmod
omap2420_timer2_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer2_mpu_irqs
[]
=
{
{
.
irq
=
38
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer2_addrs
[]
=
{
{
.
pa_start
=
0x4802a000
,
.
pa_end
=
0x4802a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer2 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer2
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer2_hwmod
,
.
clk
=
"gpt2_ick"
,
.
addr
=
omap2420_timer2_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer2_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer2 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer2_slaves
[]
=
{
&
omap2420_l4_core__timer2
,
};
/* timer2 hwmod */
static
struct
omap_hwmod
omap2420_timer2_hwmod
=
{
.
name
=
"timer2"
,
.
mpu_irqs
=
omap2420_timer2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer2_mpu_irqs
),
.
main_clk
=
"gpt2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT2_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT2_SHIFT
,
},
},
.
slaves
=
omap2420_timer2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer2_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer3 */
static
struct
omap_hwmod
omap2420_timer3_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer3_mpu_irqs
[]
=
{
{
.
irq
=
39
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer3_addrs
[]
=
{
{
.
pa_start
=
0x48078000
,
.
pa_end
=
0x48078000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer3 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer3
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer3_hwmod
,
.
clk
=
"gpt3_ick"
,
.
addr
=
omap2420_timer3_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer3_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer3 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer3_slaves
[]
=
{
&
omap2420_l4_core__timer3
,
};
/* timer3 hwmod */
static
struct
omap_hwmod
omap2420_timer3_hwmod
=
{
.
name
=
"timer3"
,
.
mpu_irqs
=
omap2420_timer3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer3_mpu_irqs
),
.
main_clk
=
"gpt3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT3_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT3_SHIFT
,
},
},
.
slaves
=
omap2420_timer3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer3_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer4 */
static
struct
omap_hwmod
omap2420_timer4_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer4_mpu_irqs
[]
=
{
{
.
irq
=
40
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer4_addrs
[]
=
{
{
.
pa_start
=
0x4807a000
,
.
pa_end
=
0x4807a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer4 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer4
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer4_hwmod
,
.
clk
=
"gpt4_ick"
,
.
addr
=
omap2420_timer4_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer4_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer4 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer4_slaves
[]
=
{
&
omap2420_l4_core__timer4
,
};
/* timer4 hwmod */
static
struct
omap_hwmod
omap2420_timer4_hwmod
=
{
.
name
=
"timer4"
,
.
mpu_irqs
=
omap2420_timer4_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer4_mpu_irqs
),
.
main_clk
=
"gpt4_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT4_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT4_SHIFT
,
},
},
.
slaves
=
omap2420_timer4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer4_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer5 */
static
struct
omap_hwmod
omap2420_timer5_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer5_mpu_irqs
[]
=
{
{
.
irq
=
41
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer5_addrs
[]
=
{
{
.
pa_start
=
0x4807c000
,
.
pa_end
=
0x4807c000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer5 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer5
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer5_hwmod
,
.
clk
=
"gpt5_ick"
,
.
addr
=
omap2420_timer5_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer5_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer5 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer5_slaves
[]
=
{
&
omap2420_l4_core__timer5
,
};
/* timer5 hwmod */
static
struct
omap_hwmod
omap2420_timer5_hwmod
=
{
.
name
=
"timer5"
,
.
mpu_irqs
=
omap2420_timer5_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer5_mpu_irqs
),
.
main_clk
=
"gpt5_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT5_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT5_SHIFT
,
},
},
.
slaves
=
omap2420_timer5_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer5_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer6 */
static
struct
omap_hwmod
omap2420_timer6_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer6_mpu_irqs
[]
=
{
{
.
irq
=
42
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer6_addrs
[]
=
{
{
.
pa_start
=
0x4807e000
,
.
pa_end
=
0x4807e000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer6 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer6
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer6_hwmod
,
.
clk
=
"gpt6_ick"
,
.
addr
=
omap2420_timer6_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer6_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer6 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer6_slaves
[]
=
{
&
omap2420_l4_core__timer6
,
};
/* timer6 hwmod */
static
struct
omap_hwmod
omap2420_timer6_hwmod
=
{
.
name
=
"timer6"
,
.
mpu_irqs
=
omap2420_timer6_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer6_mpu_irqs
),
.
main_clk
=
"gpt6_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT6_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT6_SHIFT
,
},
},
.
slaves
=
omap2420_timer6_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer6_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer7 */
static
struct
omap_hwmod
omap2420_timer7_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer7_mpu_irqs
[]
=
{
{
.
irq
=
43
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer7_addrs
[]
=
{
{
.
pa_start
=
0x48080000
,
.
pa_end
=
0x48080000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer7 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer7
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer7_hwmod
,
.
clk
=
"gpt7_ick"
,
.
addr
=
omap2420_timer7_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer7_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer7 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer7_slaves
[]
=
{
&
omap2420_l4_core__timer7
,
};
/* timer7 hwmod */
static
struct
omap_hwmod
omap2420_timer7_hwmod
=
{
.
name
=
"timer7"
,
.
mpu_irqs
=
omap2420_timer7_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer7_mpu_irqs
),
.
main_clk
=
"gpt7_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT7_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT7_SHIFT
,
},
},
.
slaves
=
omap2420_timer7_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer7_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer8 */
static
struct
omap_hwmod
omap2420_timer8_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer8_mpu_irqs
[]
=
{
{
.
irq
=
44
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer8_addrs
[]
=
{
{
.
pa_start
=
0x48082000
,
.
pa_end
=
0x48082000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer8 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer8
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer8_hwmod
,
.
clk
=
"gpt8_ick"
,
.
addr
=
omap2420_timer8_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer8_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer8 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer8_slaves
[]
=
{
&
omap2420_l4_core__timer8
,
};
/* timer8 hwmod */
static
struct
omap_hwmod
omap2420_timer8_hwmod
=
{
.
name
=
"timer8"
,
.
mpu_irqs
=
omap2420_timer8_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer8_mpu_irqs
),
.
main_clk
=
"gpt8_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT8_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT8_SHIFT
,
},
},
.
slaves
=
omap2420_timer8_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer8_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer9 */
static
struct
omap_hwmod
omap2420_timer9_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer9_mpu_irqs
[]
=
{
{
.
irq
=
45
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer9_addrs
[]
=
{
{
.
pa_start
=
0x48084000
,
.
pa_end
=
0x48084000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer9 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer9
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer9_hwmod
,
.
clk
=
"gpt9_ick"
,
.
addr
=
omap2420_timer9_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer9_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer9 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer9_slaves
[]
=
{
&
omap2420_l4_core__timer9
,
};
/* timer9 hwmod */
static
struct
omap_hwmod
omap2420_timer9_hwmod
=
{
.
name
=
"timer9"
,
.
mpu_irqs
=
omap2420_timer9_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer9_mpu_irqs
),
.
main_clk
=
"gpt9_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT9_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT9_SHIFT
,
},
},
.
slaves
=
omap2420_timer9_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer9_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer10 */
static
struct
omap_hwmod
omap2420_timer10_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer10_mpu_irqs
[]
=
{
{
.
irq
=
46
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer10_addrs
[]
=
{
{
.
pa_start
=
0x48086000
,
.
pa_end
=
0x48086000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer10 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer10
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer10_hwmod
,
.
clk
=
"gpt10_ick"
,
.
addr
=
omap2420_timer10_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer10_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer10 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer10_slaves
[]
=
{
&
omap2420_l4_core__timer10
,
};
/* timer10 hwmod */
static
struct
omap_hwmod
omap2420_timer10_hwmod
=
{
.
name
=
"timer10"
,
.
mpu_irqs
=
omap2420_timer10_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer10_mpu_irqs
),
.
main_clk
=
"gpt10_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT10_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT10_SHIFT
,
},
},
.
slaves
=
omap2420_timer10_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer10_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer11 */
static
struct
omap_hwmod
omap2420_timer11_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer11_mpu_irqs
[]
=
{
{
.
irq
=
47
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer11_addrs
[]
=
{
{
.
pa_start
=
0x48088000
,
.
pa_end
=
0x48088000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer11 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer11
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer11_hwmod
,
.
clk
=
"gpt11_ick"
,
.
addr
=
omap2420_timer11_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer11_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer11 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer11_slaves
[]
=
{
&
omap2420_l4_core__timer11
,
};
/* timer11 hwmod */
static
struct
omap_hwmod
omap2420_timer11_hwmod
=
{
.
name
=
"timer11"
,
.
mpu_irqs
=
omap2420_timer11_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer11_mpu_irqs
),
.
main_clk
=
"gpt11_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT11_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT11_SHIFT
,
},
},
.
slaves
=
omap2420_timer11_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer11_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* timer12 */
static
struct
omap_hwmod
omap2420_timer12_hwmod
;
static
struct
omap_hwmod_irq_info
omap2420_timer12_mpu_irqs
[]
=
{
{
.
irq
=
48
,
},
};
static
struct
omap_hwmod_addr_space
omap2420_timer12_addrs
[]
=
{
{
.
pa_start
=
0x4808a000
,
.
pa_end
=
0x4808a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer12 */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__timer12
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_timer12_hwmod
,
.
clk
=
"gpt12_ick"
,
.
addr
=
omap2420_timer12_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_timer12_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer12 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2420_timer12_slaves
[]
=
{
&
omap2420_l4_core__timer12
,
};
/* timer12 hwmod */
static
struct
omap_hwmod
omap2420_timer12_hwmod
=
{
.
name
=
"timer12"
,
.
mpu_irqs
=
omap2420_timer12_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2420_timer12_mpu_irqs
),
.
main_clk
=
"gpt12_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT12_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT12_SHIFT
,
},
},
.
slaves
=
omap2420_timer12_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_timer12_slaves
),
.
class
=
&
omap2420_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
)
};
/* l4_wkup -> wd_timer2 */
static
struct
omap_hwmod_addr_space
omap2420_wd_timer2_addrs
[]
=
{
{
...
...
@@ -1326,6 +1946,20 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = {
&
omap2420_l4_wkup_hwmod
,
&
omap2420_mpu_hwmod
,
&
omap2420_iva_hwmod
,
&
omap2420_timer1_hwmod
,
&
omap2420_timer2_hwmod
,
&
omap2420_timer3_hwmod
,
&
omap2420_timer4_hwmod
,
&
omap2420_timer5_hwmod
,
&
omap2420_timer6_hwmod
,
&
omap2420_timer7_hwmod
,
&
omap2420_timer8_hwmod
,
&
omap2420_timer9_hwmod
,
&
omap2420_timer10_hwmod
,
&
omap2420_timer11_hwmod
,
&
omap2420_timer12_hwmod
,
&
omap2420_wd_timer2_hwmod
,
&
omap2420_uart1_hwmod
,
&
omap2420_uart2_hwmod
,
...
...
@@ -1356,5 +1990,5 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = {
int
__init
omap2420_hwmod_init
(
void
)
{
return
omap_hwmod_
init
(
omap2420_hwmods
);
return
omap_hwmod_
register
(
omap2420_hwmods
);
}
arch/arm/mach-omap2/omap_hwmod_2430_data.c
浏览文件 @
1d90da95
...
...
@@ -19,6 +19,7 @@
#include <plat/i2c.h>
#include <plat/gpio.h>
#include <plat/mcspi.h>
#include <plat/dmtimer.h>
#include <plat/l3_2xxx.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -393,6 +394,624 @@ static struct omap_hwmod omap2430_iva_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* Timer Common */
static
struct
omap_hwmod_class_sysconfig
omap2430_timer_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap2430_timer_hwmod_class
=
{
.
name
=
"timer"
,
.
sysc
=
&
omap2430_timer_sysc
,
.
rev
=
OMAP_TIMER_IP_VERSION_1
,
};
/* timer1 */
static
struct
omap_hwmod
omap2430_timer1_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer1_mpu_irqs
[]
=
{
{
.
irq
=
37
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer1_addrs
[]
=
{
{
.
pa_start
=
0x49018000
,
.
pa_end
=
0x49018000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_wkup -> timer1 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_wkup__timer1
=
{
.
master
=
&
omap2430_l4_wkup_hwmod
,
.
slave
=
&
omap2430_timer1_hwmod
,
.
clk
=
"gpt1_ick"
,
.
addr
=
omap2430_timer1_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer1_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer1 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer1_slaves
[]
=
{
&
omap2430_l4_wkup__timer1
,
};
/* timer1 hwmod */
static
struct
omap_hwmod
omap2430_timer1_hwmod
=
{
.
name
=
"timer1"
,
.
mpu_irqs
=
omap2430_timer1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer1_mpu_irqs
),
.
main_clk
=
"gpt1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT1_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT1_SHIFT
,
},
},
.
slaves
=
omap2430_timer1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer1_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer2 */
static
struct
omap_hwmod
omap2430_timer2_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer2_mpu_irqs
[]
=
{
{
.
irq
=
38
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer2_addrs
[]
=
{
{
.
pa_start
=
0x4802a000
,
.
pa_end
=
0x4802a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer2 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer2
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer2_hwmod
,
.
clk
=
"gpt2_ick"
,
.
addr
=
omap2430_timer2_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer2_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer2 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer2_slaves
[]
=
{
&
omap2430_l4_core__timer2
,
};
/* timer2 hwmod */
static
struct
omap_hwmod
omap2430_timer2_hwmod
=
{
.
name
=
"timer2"
,
.
mpu_irqs
=
omap2430_timer2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer2_mpu_irqs
),
.
main_clk
=
"gpt2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT2_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT2_SHIFT
,
},
},
.
slaves
=
omap2430_timer2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer2_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer3 */
static
struct
omap_hwmod
omap2430_timer3_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer3_mpu_irqs
[]
=
{
{
.
irq
=
39
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer3_addrs
[]
=
{
{
.
pa_start
=
0x48078000
,
.
pa_end
=
0x48078000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer3 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer3
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer3_hwmod
,
.
clk
=
"gpt3_ick"
,
.
addr
=
omap2430_timer3_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer3_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer3 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer3_slaves
[]
=
{
&
omap2430_l4_core__timer3
,
};
/* timer3 hwmod */
static
struct
omap_hwmod
omap2430_timer3_hwmod
=
{
.
name
=
"timer3"
,
.
mpu_irqs
=
omap2430_timer3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer3_mpu_irqs
),
.
main_clk
=
"gpt3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT3_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT3_SHIFT
,
},
},
.
slaves
=
omap2430_timer3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer3_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer4 */
static
struct
omap_hwmod
omap2430_timer4_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer4_mpu_irqs
[]
=
{
{
.
irq
=
40
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer4_addrs
[]
=
{
{
.
pa_start
=
0x4807a000
,
.
pa_end
=
0x4807a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer4 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer4
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer4_hwmod
,
.
clk
=
"gpt4_ick"
,
.
addr
=
omap2430_timer4_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer4_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer4 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer4_slaves
[]
=
{
&
omap2430_l4_core__timer4
,
};
/* timer4 hwmod */
static
struct
omap_hwmod
omap2430_timer4_hwmod
=
{
.
name
=
"timer4"
,
.
mpu_irqs
=
omap2430_timer4_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer4_mpu_irqs
),
.
main_clk
=
"gpt4_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT4_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT4_SHIFT
,
},
},
.
slaves
=
omap2430_timer4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer4_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer5 */
static
struct
omap_hwmod
omap2430_timer5_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer5_mpu_irqs
[]
=
{
{
.
irq
=
41
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer5_addrs
[]
=
{
{
.
pa_start
=
0x4807c000
,
.
pa_end
=
0x4807c000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer5 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer5
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer5_hwmod
,
.
clk
=
"gpt5_ick"
,
.
addr
=
omap2430_timer5_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer5_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer5 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer5_slaves
[]
=
{
&
omap2430_l4_core__timer5
,
};
/* timer5 hwmod */
static
struct
omap_hwmod
omap2430_timer5_hwmod
=
{
.
name
=
"timer5"
,
.
mpu_irqs
=
omap2430_timer5_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer5_mpu_irqs
),
.
main_clk
=
"gpt5_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT5_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT5_SHIFT
,
},
},
.
slaves
=
omap2430_timer5_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer5_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer6 */
static
struct
omap_hwmod
omap2430_timer6_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer6_mpu_irqs
[]
=
{
{
.
irq
=
42
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer6_addrs
[]
=
{
{
.
pa_start
=
0x4807e000
,
.
pa_end
=
0x4807e000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer6 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer6
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer6_hwmod
,
.
clk
=
"gpt6_ick"
,
.
addr
=
omap2430_timer6_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer6_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer6 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer6_slaves
[]
=
{
&
omap2430_l4_core__timer6
,
};
/* timer6 hwmod */
static
struct
omap_hwmod
omap2430_timer6_hwmod
=
{
.
name
=
"timer6"
,
.
mpu_irqs
=
omap2430_timer6_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer6_mpu_irqs
),
.
main_clk
=
"gpt6_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT6_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT6_SHIFT
,
},
},
.
slaves
=
omap2430_timer6_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer6_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer7 */
static
struct
omap_hwmod
omap2430_timer7_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer7_mpu_irqs
[]
=
{
{
.
irq
=
43
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer7_addrs
[]
=
{
{
.
pa_start
=
0x48080000
,
.
pa_end
=
0x48080000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer7 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer7
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer7_hwmod
,
.
clk
=
"gpt7_ick"
,
.
addr
=
omap2430_timer7_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer7_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer7 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer7_slaves
[]
=
{
&
omap2430_l4_core__timer7
,
};
/* timer7 hwmod */
static
struct
omap_hwmod
omap2430_timer7_hwmod
=
{
.
name
=
"timer7"
,
.
mpu_irqs
=
omap2430_timer7_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer7_mpu_irqs
),
.
main_clk
=
"gpt7_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT7_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT7_SHIFT
,
},
},
.
slaves
=
omap2430_timer7_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer7_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer8 */
static
struct
omap_hwmod
omap2430_timer8_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer8_mpu_irqs
[]
=
{
{
.
irq
=
44
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer8_addrs
[]
=
{
{
.
pa_start
=
0x48082000
,
.
pa_end
=
0x48082000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer8 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer8
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer8_hwmod
,
.
clk
=
"gpt8_ick"
,
.
addr
=
omap2430_timer8_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer8_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer8 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer8_slaves
[]
=
{
&
omap2430_l4_core__timer8
,
};
/* timer8 hwmod */
static
struct
omap_hwmod
omap2430_timer8_hwmod
=
{
.
name
=
"timer8"
,
.
mpu_irqs
=
omap2430_timer8_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer8_mpu_irqs
),
.
main_clk
=
"gpt8_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT8_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT8_SHIFT
,
},
},
.
slaves
=
omap2430_timer8_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer8_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer9 */
static
struct
omap_hwmod
omap2430_timer9_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer9_mpu_irqs
[]
=
{
{
.
irq
=
45
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer9_addrs
[]
=
{
{
.
pa_start
=
0x48084000
,
.
pa_end
=
0x48084000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer9 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer9
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer9_hwmod
,
.
clk
=
"gpt9_ick"
,
.
addr
=
omap2430_timer9_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer9_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer9 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer9_slaves
[]
=
{
&
omap2430_l4_core__timer9
,
};
/* timer9 hwmod */
static
struct
omap_hwmod
omap2430_timer9_hwmod
=
{
.
name
=
"timer9"
,
.
mpu_irqs
=
omap2430_timer9_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer9_mpu_irqs
),
.
main_clk
=
"gpt9_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT9_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT9_SHIFT
,
},
},
.
slaves
=
omap2430_timer9_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer9_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer10 */
static
struct
omap_hwmod
omap2430_timer10_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer10_mpu_irqs
[]
=
{
{
.
irq
=
46
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer10_addrs
[]
=
{
{
.
pa_start
=
0x48086000
,
.
pa_end
=
0x48086000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer10 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer10
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer10_hwmod
,
.
clk
=
"gpt10_ick"
,
.
addr
=
omap2430_timer10_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer10_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer10 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer10_slaves
[]
=
{
&
omap2430_l4_core__timer10
,
};
/* timer10 hwmod */
static
struct
omap_hwmod
omap2430_timer10_hwmod
=
{
.
name
=
"timer10"
,
.
mpu_irqs
=
omap2430_timer10_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer10_mpu_irqs
),
.
main_clk
=
"gpt10_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT10_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT10_SHIFT
,
},
},
.
slaves
=
omap2430_timer10_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer10_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer11 */
static
struct
omap_hwmod
omap2430_timer11_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer11_mpu_irqs
[]
=
{
{
.
irq
=
47
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer11_addrs
[]
=
{
{
.
pa_start
=
0x48088000
,
.
pa_end
=
0x48088000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer11 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer11
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer11_hwmod
,
.
clk
=
"gpt11_ick"
,
.
addr
=
omap2430_timer11_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer11_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer11 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer11_slaves
[]
=
{
&
omap2430_l4_core__timer11
,
};
/* timer11 hwmod */
static
struct
omap_hwmod
omap2430_timer11_hwmod
=
{
.
name
=
"timer11"
,
.
mpu_irqs
=
omap2430_timer11_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer11_mpu_irqs
),
.
main_clk
=
"gpt11_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT11_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT11_SHIFT
,
},
},
.
slaves
=
omap2430_timer11_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer11_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* timer12 */
static
struct
omap_hwmod
omap2430_timer12_hwmod
;
static
struct
omap_hwmod_irq_info
omap2430_timer12_mpu_irqs
[]
=
{
{
.
irq
=
48
,
},
};
static
struct
omap_hwmod_addr_space
omap2430_timer12_addrs
[]
=
{
{
.
pa_start
=
0x4808a000
,
.
pa_end
=
0x4808a000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer12 */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__timer12
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_timer12_hwmod
,
.
clk
=
"gpt12_ick"
,
.
addr
=
omap2430_timer12_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_timer12_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer12 slave port */
static
struct
omap_hwmod_ocp_if
*
omap2430_timer12_slaves
[]
=
{
&
omap2430_l4_core__timer12
,
};
/* timer12 hwmod */
static
struct
omap_hwmod
omap2430_timer12_hwmod
=
{
.
name
=
"timer12"
,
.
mpu_irqs
=
omap2430_timer12_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap2430_timer12_mpu_irqs
),
.
main_clk
=
"gpt12_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPT12_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPT12_SHIFT
,
},
},
.
slaves
=
omap2430_timer12_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_timer12_slaves
),
.
class
=
&
omap2430_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
)
};
/* l4_wkup -> wd_timer2 */
static
struct
omap_hwmod_addr_space
omap2430_wd_timer2_addrs
[]
=
{
{
...
...
@@ -1514,6 +2133,20 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = {
&
omap2430_l4_wkup_hwmod
,
&
omap2430_mpu_hwmod
,
&
omap2430_iva_hwmod
,
&
omap2430_timer1_hwmod
,
&
omap2430_timer2_hwmod
,
&
omap2430_timer3_hwmod
,
&
omap2430_timer4_hwmod
,
&
omap2430_timer5_hwmod
,
&
omap2430_timer6_hwmod
,
&
omap2430_timer7_hwmod
,
&
omap2430_timer8_hwmod
,
&
omap2430_timer9_hwmod
,
&
omap2430_timer10_hwmod
,
&
omap2430_timer11_hwmod
,
&
omap2430_timer12_hwmod
,
&
omap2430_wd_timer2_hwmod
,
&
omap2430_uart1_hwmod
,
&
omap2430_uart2_hwmod
,
...
...
@@ -1550,5 +2183,5 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = {
int
__init
omap2430_hwmod_init
(
void
)
{
return
omap_hwmod_
init
(
omap2430_hwmods
);
return
omap_hwmod_
register
(
omap2430_hwmods
);
}
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
浏览文件 @
1d90da95
...
...
@@ -24,6 +24,7 @@
#include <plat/gpio.h>
#include <plat/smartreflex.h>
#include <plat/mcspi.h>
#include <plat/dmtimer.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -515,6 +516,640 @@ static struct omap_hwmod omap3xxx_iva_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer class */
static
struct
omap_hwmod_class_sysconfig
omap3xxx_timer_1ms_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap3xxx_timer_1ms_hwmod_class
=
{
.
name
=
"timer"
,
.
sysc
=
&
omap3xxx_timer_1ms_sysc
,
.
rev
=
OMAP_TIMER_IP_VERSION_1
,
};
static
struct
omap_hwmod_class_sysconfig
omap3xxx_timer_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap3xxx_timer_hwmod_class
=
{
.
name
=
"timer"
,
.
sysc
=
&
omap3xxx_timer_sysc
,
.
rev
=
OMAP_TIMER_IP_VERSION_1
,
};
/* timer1 */
static
struct
omap_hwmod
omap3xxx_timer1_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer1_mpu_irqs
[]
=
{
{
.
irq
=
37
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer1_addrs
[]
=
{
{
.
pa_start
=
0x48318000
,
.
pa_end
=
0x48318000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_wkup -> timer1 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_wkup__timer1
=
{
.
master
=
&
omap3xxx_l4_wkup_hwmod
,
.
slave
=
&
omap3xxx_timer1_hwmod
,
.
clk
=
"gpt1_ick"
,
.
addr
=
omap3xxx_timer1_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer1_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer1 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer1_slaves
[]
=
{
&
omap3xxx_l4_wkup__timer1
,
};
/* timer1 hwmod */
static
struct
omap_hwmod
omap3xxx_timer1_hwmod
=
{
.
name
=
"timer1"
,
.
mpu_irqs
=
omap3xxx_timer1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer1_mpu_irqs
),
.
main_clk
=
"gpt1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT1_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT1_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer1_slaves
),
.
class
=
&
omap3xxx_timer_1ms_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer2 */
static
struct
omap_hwmod
omap3xxx_timer2_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer2_mpu_irqs
[]
=
{
{
.
irq
=
38
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer2_addrs
[]
=
{
{
.
pa_start
=
0x49032000
,
.
pa_end
=
0x49032000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer2 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer2
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer2_hwmod
,
.
clk
=
"gpt2_ick"
,
.
addr
=
omap3xxx_timer2_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer2_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer2 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer2_slaves
[]
=
{
&
omap3xxx_l4_per__timer2
,
};
/* timer2 hwmod */
static
struct
omap_hwmod
omap3xxx_timer2_hwmod
=
{
.
name
=
"timer2"
,
.
mpu_irqs
=
omap3xxx_timer2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer2_mpu_irqs
),
.
main_clk
=
"gpt2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT2_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT2_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer2_slaves
),
.
class
=
&
omap3xxx_timer_1ms_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer3 */
static
struct
omap_hwmod
omap3xxx_timer3_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer3_mpu_irqs
[]
=
{
{
.
irq
=
39
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer3_addrs
[]
=
{
{
.
pa_start
=
0x49034000
,
.
pa_end
=
0x49034000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer3 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer3
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer3_hwmod
,
.
clk
=
"gpt3_ick"
,
.
addr
=
omap3xxx_timer3_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer3_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer3 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer3_slaves
[]
=
{
&
omap3xxx_l4_per__timer3
,
};
/* timer3 hwmod */
static
struct
omap_hwmod
omap3xxx_timer3_hwmod
=
{
.
name
=
"timer3"
,
.
mpu_irqs
=
omap3xxx_timer3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer3_mpu_irqs
),
.
main_clk
=
"gpt3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT3_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT3_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer3_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer4 */
static
struct
omap_hwmod
omap3xxx_timer4_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer4_mpu_irqs
[]
=
{
{
.
irq
=
40
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer4_addrs
[]
=
{
{
.
pa_start
=
0x49036000
,
.
pa_end
=
0x49036000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer4 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer4
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer4_hwmod
,
.
clk
=
"gpt4_ick"
,
.
addr
=
omap3xxx_timer4_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer4_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer4 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer4_slaves
[]
=
{
&
omap3xxx_l4_per__timer4
,
};
/* timer4 hwmod */
static
struct
omap_hwmod
omap3xxx_timer4_hwmod
=
{
.
name
=
"timer4"
,
.
mpu_irqs
=
omap3xxx_timer4_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer4_mpu_irqs
),
.
main_clk
=
"gpt4_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT4_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT4_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer4_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer5 */
static
struct
omap_hwmod
omap3xxx_timer5_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer5_mpu_irqs
[]
=
{
{
.
irq
=
41
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer5_addrs
[]
=
{
{
.
pa_start
=
0x49038000
,
.
pa_end
=
0x49038000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer5 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer5
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer5_hwmod
,
.
clk
=
"gpt5_ick"
,
.
addr
=
omap3xxx_timer5_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer5_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer5 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer5_slaves
[]
=
{
&
omap3xxx_l4_per__timer5
,
};
/* timer5 hwmod */
static
struct
omap_hwmod
omap3xxx_timer5_hwmod
=
{
.
name
=
"timer5"
,
.
mpu_irqs
=
omap3xxx_timer5_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer5_mpu_irqs
),
.
main_clk
=
"gpt5_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT5_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT5_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer5_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer5_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer6 */
static
struct
omap_hwmod
omap3xxx_timer6_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer6_mpu_irqs
[]
=
{
{
.
irq
=
42
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer6_addrs
[]
=
{
{
.
pa_start
=
0x4903A000
,
.
pa_end
=
0x4903A000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer6 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer6
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer6_hwmod
,
.
clk
=
"gpt6_ick"
,
.
addr
=
omap3xxx_timer6_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer6_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer6 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer6_slaves
[]
=
{
&
omap3xxx_l4_per__timer6
,
};
/* timer6 hwmod */
static
struct
omap_hwmod
omap3xxx_timer6_hwmod
=
{
.
name
=
"timer6"
,
.
mpu_irqs
=
omap3xxx_timer6_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer6_mpu_irqs
),
.
main_clk
=
"gpt6_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT6_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT6_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer6_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer6_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer7 */
static
struct
omap_hwmod
omap3xxx_timer7_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer7_mpu_irqs
[]
=
{
{
.
irq
=
43
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer7_addrs
[]
=
{
{
.
pa_start
=
0x4903C000
,
.
pa_end
=
0x4903C000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer7 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer7
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer7_hwmod
,
.
clk
=
"gpt7_ick"
,
.
addr
=
omap3xxx_timer7_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer7_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer7 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer7_slaves
[]
=
{
&
omap3xxx_l4_per__timer7
,
};
/* timer7 hwmod */
static
struct
omap_hwmod
omap3xxx_timer7_hwmod
=
{
.
name
=
"timer7"
,
.
mpu_irqs
=
omap3xxx_timer7_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer7_mpu_irqs
),
.
main_clk
=
"gpt7_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT7_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT7_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer7_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer7_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer8 */
static
struct
omap_hwmod
omap3xxx_timer8_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer8_mpu_irqs
[]
=
{
{
.
irq
=
44
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer8_addrs
[]
=
{
{
.
pa_start
=
0x4903E000
,
.
pa_end
=
0x4903E000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer8 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer8
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer8_hwmod
,
.
clk
=
"gpt8_ick"
,
.
addr
=
omap3xxx_timer8_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer8_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer8 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer8_slaves
[]
=
{
&
omap3xxx_l4_per__timer8
,
};
/* timer8 hwmod */
static
struct
omap_hwmod
omap3xxx_timer8_hwmod
=
{
.
name
=
"timer8"
,
.
mpu_irqs
=
omap3xxx_timer8_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer8_mpu_irqs
),
.
main_clk
=
"gpt8_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT8_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT8_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer8_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer8_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer9 */
static
struct
omap_hwmod
omap3xxx_timer9_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer9_mpu_irqs
[]
=
{
{
.
irq
=
45
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer9_addrs
[]
=
{
{
.
pa_start
=
0x49040000
,
.
pa_end
=
0x49040000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> timer9 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_per__timer9
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_timer9_hwmod
,
.
clk
=
"gpt9_ick"
,
.
addr
=
omap3xxx_timer9_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer9_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer9 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer9_slaves
[]
=
{
&
omap3xxx_l4_per__timer9
,
};
/* timer9 hwmod */
static
struct
omap_hwmod
omap3xxx_timer9_hwmod
=
{
.
name
=
"timer9"
,
.
mpu_irqs
=
omap3xxx_timer9_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer9_mpu_irqs
),
.
main_clk
=
"gpt9_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT9_SHIFT
,
.
module_offs
=
OMAP3430_PER_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT9_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer9_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer9_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer10 */
static
struct
omap_hwmod
omap3xxx_timer10_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer10_mpu_irqs
[]
=
{
{
.
irq
=
46
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer10_addrs
[]
=
{
{
.
pa_start
=
0x48086000
,
.
pa_end
=
0x48086000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer10 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__timer10
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_timer10_hwmod
,
.
clk
=
"gpt10_ick"
,
.
addr
=
omap3xxx_timer10_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer10_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer10 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer10_slaves
[]
=
{
&
omap3xxx_l4_core__timer10
,
};
/* timer10 hwmod */
static
struct
omap_hwmod
omap3xxx_timer10_hwmod
=
{
.
name
=
"timer10"
,
.
mpu_irqs
=
omap3xxx_timer10_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer10_mpu_irqs
),
.
main_clk
=
"gpt10_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT10_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT10_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer10_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer10_slaves
),
.
class
=
&
omap3xxx_timer_1ms_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer11 */
static
struct
omap_hwmod
omap3xxx_timer11_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer11_mpu_irqs
[]
=
{
{
.
irq
=
47
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer11_addrs
[]
=
{
{
.
pa_start
=
0x48088000
,
.
pa_end
=
0x48088000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer11 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__timer11
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_timer11_hwmod
,
.
clk
=
"gpt11_ick"
,
.
addr
=
omap3xxx_timer11_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer11_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer11 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer11_slaves
[]
=
{
&
omap3xxx_l4_core__timer11
,
};
/* timer11 hwmod */
static
struct
omap_hwmod
omap3xxx_timer11_hwmod
=
{
.
name
=
"timer11"
,
.
mpu_irqs
=
omap3xxx_timer11_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer11_mpu_irqs
),
.
main_clk
=
"gpt11_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT11_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT11_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer11_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer11_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* timer12*/
static
struct
omap_hwmod
omap3xxx_timer12_hwmod
;
static
struct
omap_hwmod_irq_info
omap3xxx_timer12_mpu_irqs
[]
=
{
{
.
irq
=
95
,
},
};
static
struct
omap_hwmod_addr_space
omap3xxx_timer12_addrs
[]
=
{
{
.
pa_start
=
0x48304000
,
.
pa_end
=
0x48304000
+
SZ_1K
-
1
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_core -> timer12 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__timer12
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_timer12_hwmod
,
.
clk
=
"gpt12_ick"
,
.
addr
=
omap3xxx_timer12_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_timer12_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* timer12 slave port */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_timer12_slaves
[]
=
{
&
omap3xxx_l4_core__timer12
,
};
/* timer12 hwmod */
static
struct
omap_hwmod
omap3xxx_timer12_hwmod
=
{
.
name
=
"timer12"
,
.
mpu_irqs
=
omap3xxx_timer12_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap3xxx_timer12_mpu_irqs
),
.
main_clk
=
"gpt12_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_GPT12_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_GPT12_SHIFT
,
},
},
.
slaves
=
omap3xxx_timer12_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_timer12_slaves
),
.
class
=
&
omap3xxx_timer_hwmod_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
)
};
/* l4_wkup -> wd_timer2 */
static
struct
omap_hwmod_addr_space
omap3xxx_wd_timer2_addrs
[]
=
{
{
...
...
@@ -2219,6 +2854,20 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
&
omap3xxx_l4_wkup_hwmod
,
&
omap3xxx_mpu_hwmod
,
&
omap3xxx_iva_hwmod
,
&
omap3xxx_timer1_hwmod
,
&
omap3xxx_timer2_hwmod
,
&
omap3xxx_timer3_hwmod
,
&
omap3xxx_timer4_hwmod
,
&
omap3xxx_timer5_hwmod
,
&
omap3xxx_timer6_hwmod
,
&
omap3xxx_timer7_hwmod
,
&
omap3xxx_timer8_hwmod
,
&
omap3xxx_timer9_hwmod
,
&
omap3xxx_timer10_hwmod
,
&
omap3xxx_timer11_hwmod
,
&
omap3xxx_timer12_hwmod
,
&
omap3xxx_wd_timer2_hwmod
,
&
omap3xxx_uart1_hwmod
,
&
omap3xxx_uart2_hwmod
,
...
...
@@ -2270,5 +2919,5 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
int
__init
omap3xxx_hwmod_init
(
void
)
{
return
omap_hwmod_
init
(
omap3xxx_hwmods
);
return
omap_hwmod_
register
(
omap3xxx_hwmods
);
}
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
浏览文件 @
1d90da95
...
...
@@ -5125,6 +5125,6 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
int
__init
omap44xx_hwmod_init
(
void
)
{
return
omap_hwmod_
init
(
omap44xx_hwmods
);
return
omap_hwmod_
register
(
omap44xx_hwmods
);
}
arch/arm/mach-omap2/serial.c
浏览文件 @
1d90da95
...
...
@@ -680,7 +680,7 @@ static int __init omap_serial_early_init(void)
num_uarts
++
;
/*
* NOTE: omap_hwmod_
init
() has not yet been called,
* NOTE: omap_hwmod_
setup*
() has not yet been called,
* so no hwmod functions will work yet.
*/
...
...
arch/arm/mach-omap2/timer-gp.c
浏览文件 @
1d90da95
...
...
@@ -39,10 +39,11 @@
#include <asm/mach/time.h>
#include <plat/dmtimer.h>
#include <asm/localtimer.h>
#include <plat/common.h>
#include <plat/omap_hwmod.h>
#include "timer-gp.h"
#include <plat/common.h>
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
#define MAX_GPTIMER_ID 12
...
...
@@ -132,9 +133,13 @@ static void __init omap2_gp_clockevent_init(void)
{
u32
tick_rate
;
int
src
;
char
clockevent_hwmod_name
[
8
];
/* 8 = sizeof("timerXX0") */
inited
=
1
;
sprintf
(
clockevent_hwmod_name
,
"timer%d"
,
gptimer_id
);
omap_hwmod_setup_one
(
clockevent_hwmod_name
);
gptimer
=
omap_dm_timer_request_specific
(
gptimer_id
);
BUG_ON
(
gptimer
==
NULL
);
gptimer_wakeup
=
gptimer
;
...
...
arch/arm/plat-omap/include/plat/dmtimer.h
浏览文件 @
1d90da95
...
...
@@ -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>
*
* Platform device conversion and hwmod support.
*
* Copyright (C) 2005 Nokia Corporation
* Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
* PWM and clock framwork support by Timo Teras.
...
...
@@ -44,6 +50,11 @@
#define OMAP_TIMER_TRIGGER_OVERFLOW 0x01
#define OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02
/*
* IP revision identifier so that Highlander IP
* in OMAP4 can be distinguished.
*/
#define OMAP_TIMER_IP_VERSION_1 0x1
struct
omap_dm_timer
;
extern
struct
omap_dm_timer
*
gptimer_wakeup
;
extern
struct
sys_timer
omap_timer
;
...
...
arch/arm/plat-omap/include/plat/omap_hwmod.h
浏览文件 @
1d90da95
/*
* omap_hwmod macros, structures
*
* Copyright (C) 2009-201
0
Nokia Corporation
* Copyright (C) 2009-201
1
Nokia Corporation
* Paul Walmsley
*
* Created in collaboration with (alphabetical order): Benoît Cousson,
...
...
@@ -30,6 +30,7 @@
#define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD_H
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/ioport.h>
#include <linux/spinlock.h>
...
...
@@ -370,8 +371,10 @@ struct omap_hwmod_omap4_prcm {
* of standby, rather than relying on module smart-standby
* HWMOD_INIT_NO_RESET: don't reset this module at boot - important for
* SDRAM controller, etc. XXX probably belongs outside the main hwmod file
* XXX Should be HWMOD_SETUP_NO_RESET
* HWMOD_INIT_NO_IDLE: don't idle this module at boot - important for SDRAM
* controller, etc. XXX probably belongs outside the main hwmod file
* XXX Should be HWMOD_SETUP_NO_IDLE
* HWMOD_NO_AUTOIDLE: disable module autoidle (OCP_SYSCONFIG.AUTOIDLE)
* when module is enabled, rather than the default, which is to
* enable autoidle
...
...
@@ -535,11 +538,13 @@ struct omap_hwmod {
const
struct
omap_chip_id
omap_chip
;
};
int
omap_hwmod_
init
(
struct
omap_hwmod
**
ohs
);
int
omap_hwmod_
register
(
struct
omap_hwmod
**
ohs
);
struct
omap_hwmod
*
omap_hwmod_lookup
(
const
char
*
name
);
int
omap_hwmod_for_each
(
int
(
*
fn
)(
struct
omap_hwmod
*
oh
,
void
*
data
),
void
*
data
);
int
__init
omap_hwmod_setup_one
(
const
char
*
name
);
int
omap_hwmod_enable
(
struct
omap_hwmod
*
oh
);
int
_omap_hwmod_enable
(
struct
omap_hwmod
*
oh
);
int
omap_hwmod_idle
(
struct
omap_hwmod
*
oh
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录