Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
6bff5474
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
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看板
提交
6bff5474
编写于
3月 23, 2017
作者:
T
Tony Lindgren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'hwmod-cleanup' into omap-for-v4.12/soc
上级
342bef7c
3cdf2f80
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
15 addition
and
210 deletion
+15
-210
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod.c
+13
-186
arch/arm/mach-omap2/omap_hwmod.h
arch/arm/mach-omap2/omap_hwmod.h
+2
-14
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+0
-1
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+0
-4
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+0
-2
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+0
-2
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+0
-1
未找到文件。
arch/arm/mach-omap2/omap_hwmod.c
浏览文件 @
6bff5474
...
...
@@ -138,7 +138,6 @@
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/bootmem.h>
#include <linux/cpu.h>
#include <linux/of.h>
#include <linux/of_address.h>
...
...
@@ -216,48 +215,11 @@ static LIST_HEAD(omap_hwmod_list);
/* mpu_oh: used to add/remove MPU initiator from sleepdep list */
static
struct
omap_hwmod
*
mpu_oh
;
/*
* linkspace: ptr to a buffer that struct omap_hwmod_link records are
* allocated from - used to reduce the number of small memory
* allocations, which has a significant impact on performance
*/
static
struct
omap_hwmod_link
*
linkspace
;
/*
* free_ls, max_ls: array indexes into linkspace; representing the
* next free struct omap_hwmod_link index, and the maximum number of
* struct omap_hwmod_link records allocated (respectively)
*/
static
unsigned
short
free_ls
,
max_ls
,
ls_supp
;
/* inited: set to true once the hwmod code is initialized */
static
bool
inited
;
/* Private functions */
/**
* _fetch_next_ocp_if - return the next OCP interface in a list
* @p: ptr to a ptr to the list_head inside the ocp_if to return
* @i: pointer to the index of the element pointed to by @p in the list
*
* Return a pointer to the struct omap_hwmod_ocp_if record
* containing the struct list_head pointed to by @p, and increment
* @p such that a future call to this routine will return the next
* record.
*/
static
struct
omap_hwmod_ocp_if
*
_fetch_next_ocp_if
(
struct
list_head
**
p
,
int
*
i
)
{
struct
omap_hwmod_ocp_if
*
oi
;
oi
=
list_entry
(
*
p
,
struct
omap_hwmod_link
,
node
)
->
ocp_if
;
*
p
=
(
*
p
)
->
next
;
*
i
=
*
i
+
1
;
return
oi
;
}
/**
* _update_sysc_cache - return the module OCP_SYSCONFIG register, keep copy
* @oh: struct omap_hwmod *
...
...
@@ -794,15 +756,10 @@ static int _init_main_clk(struct omap_hwmod *oh)
static
int
_init_interface_clks
(
struct
omap_hwmod
*
oh
)
{
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
;
struct
clk
*
c
;
int
i
=
0
;
int
ret
=
0
;
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
!
os
->
clk
)
continue
;
...
...
@@ -905,19 +862,13 @@ static void _disable_optional_clocks(struct omap_hwmod *oh)
static
int
_enable_clocks
(
struct
omap_hwmod
*
oh
)
{
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
;
int
i
=
0
;
pr_debug
(
"omap_hwmod: %s: enabling clocks
\n
"
,
oh
->
name
);
if
(
oh
->
_clk
)
clk_enable
(
oh
->
_clk
);
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
os
->
_clk
&&
(
os
->
flags
&
OCPIF_SWSUP_IDLE
))
clk_enable
(
os
->
_clk
);
}
...
...
@@ -939,19 +890,13 @@ static int _enable_clocks(struct omap_hwmod *oh)
static
int
_disable_clocks
(
struct
omap_hwmod
*
oh
)
{
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
;
int
i
=
0
;
pr_debug
(
"omap_hwmod: %s: disabling clocks
\n
"
,
oh
->
name
);
if
(
oh
->
_clk
)
clk_disable
(
oh
->
_clk
);
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
os
->
_clk
&&
(
os
->
flags
&
OCPIF_SWSUP_IDLE
))
clk_disable
(
os
->
_clk
);
}
...
...
@@ -1190,16 +1135,11 @@ static int _get_sdma_req_by_name(struct omap_hwmod *oh, const char *name,
static
int
_get_addr_space_by_name
(
struct
omap_hwmod
*
oh
,
const
char
*
name
,
u32
*
pa_start
,
u32
*
pa_end
)
{
int
i
,
j
;
int
j
;
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
=
NULL
;
bool
found
=
false
;
p
=
oh
->
slave_ports
.
next
;
i
=
0
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
!
os
->
addr
)
return
-
ENOENT
;
...
...
@@ -1239,18 +1179,13 @@ static int _get_addr_space_by_name(struct omap_hwmod *oh, const char *name,
static
void
__init
_save_mpu_port_index
(
struct
omap_hwmod
*
oh
)
{
struct
omap_hwmod_ocp_if
*
os
=
NULL
;
struct
list_head
*
p
;
int
i
=
0
;
if
(
!
oh
)
return
;
oh
->
_int_flags
|=
_HWMOD_NO_MPU_PORT
;
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
os
->
user
&
OCP_USER_MPU
)
{
oh
->
_mpu_port
=
os
;
oh
->
_int_flags
&=
~
_HWMOD_NO_MPU_PORT
;
...
...
@@ -1393,7 +1328,7 @@ static void _enable_sysc(struct omap_hwmod *oh)
*/
if
((
oh
->
flags
&
HWMOD_SET_DEFAULT_CLOCKACT
)
&&
(
sf
&
SYSC_HAS_CLOCKACTIVITY
))
_set_clockactivity
(
oh
,
oh
->
class
->
sysc
->
clockact
,
&
v
);
_set_clockactivity
(
oh
,
CLOCKACT_TEST_ICLK
,
&
v
);
_write_sysconfig
(
v
,
oh
);
...
...
@@ -2451,15 +2386,11 @@ static int __init _init(struct omap_hwmod *oh, void *data)
static
void
__init
_setup_iclk_autoidle
(
struct
omap_hwmod
*
oh
)
{
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
;
int
i
=
0
;
if
(
oh
->
_state
!=
_HWMOD_STATE_INITIALIZED
)
return
;
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
if
(
!
os
->
_clk
)
continue
;
...
...
@@ -2657,7 +2588,6 @@ static int __init _register(struct omap_hwmod *oh)
list_add_tail
(
&
oh
->
node
,
&
omap_hwmod_list
);
INIT_LIST_HEAD
(
&
oh
->
master_ports
);
INIT_LIST_HEAD
(
&
oh
->
slave_ports
);
spin_lock_init
(
&
oh
->
_lock
);
lockdep_set_class
(
&
oh
->
_lock
,
&
oh
->
hwmod_key
);
...
...
@@ -2674,50 +2604,11 @@ static int __init _register(struct omap_hwmod *oh)
return
0
;
}
/**
* _alloc_links - return allocated memory for hwmod links
* @ml: pointer to a struct omap_hwmod_link * for the master link
* @sl: pointer to a struct omap_hwmod_link * for the slave link
*
* Return pointers to two struct omap_hwmod_link records, via the
* addresses pointed to by @ml and @sl. Will first attempt to return
* memory allocated as part of a large initial block, but if that has
* been exhausted, will allocate memory itself. Since ideally this
* second allocation path will never occur, the number of these
* 'supplemental' allocations will be logged when debugging is
* enabled. Returns 0.
*/
static
int
__init
_alloc_links
(
struct
omap_hwmod_link
**
ml
,
struct
omap_hwmod_link
**
sl
)
{
unsigned
int
sz
;
if
((
free_ls
+
LINKS_PER_OCP_IF
)
<=
max_ls
)
{
*
ml
=
&
linkspace
[
free_ls
++
];
*
sl
=
&
linkspace
[
free_ls
++
];
return
0
;
}
sz
=
sizeof
(
struct
omap_hwmod_link
)
*
LINKS_PER_OCP_IF
;
*
sl
=
NULL
;
*
ml
=
memblock_virt_alloc
(
sz
,
0
);
*
sl
=
(
void
*
)(
*
ml
)
+
sizeof
(
struct
omap_hwmod_link
);
ls_supp
++
;
pr_debug
(
"omap_hwmod: supplemental link allocations needed: %d
\n
"
,
ls_supp
*
LINKS_PER_OCP_IF
);
return
0
;
};
/**
* _add_link - add an interconnect between two IP blocks
* @oi: pointer to a struct omap_hwmod_ocp_if record
*
* Add struct omap_hwmod_link records connecting the master IP block
* specified in @oi->master to @oi, and connecting the slave IP block
* Add struct omap_hwmod_link records connecting the slave IP block
* specified in @oi->slave to @oi. This code is assumed to run before
* preemption or SMP has been enabled, thus avoiding the need for
* locking in this code. Changes to this assumption will require
...
...
@@ -2725,19 +2616,10 @@ static int __init _alloc_links(struct omap_hwmod_link **ml,
*/
static
int
__init
_add_link
(
struct
omap_hwmod_ocp_if
*
oi
)
{
struct
omap_hwmod_link
*
ml
,
*
sl
;
pr_debug
(
"omap_hwmod: %s -> %s: adding link
\n
"
,
oi
->
master
->
name
,
oi
->
slave
->
name
);
_alloc_links
(
&
ml
,
&
sl
);
ml
->
ocp_if
=
oi
;
list_add
(
&
ml
->
node
,
&
oi
->
master
->
master_ports
);
oi
->
master
->
masters_cnt
++
;
sl
->
ocp_if
=
oi
;
list_add
(
&
sl
->
node
,
&
oi
->
slave
->
slave_ports
);
list_add
(
&
oi
->
node
,
&
oi
->
slave
->
slave_ports
);
oi
->
slave
->
slaves_cnt
++
;
return
0
;
...
...
@@ -2784,45 +2666,6 @@ static int __init _register_link(struct omap_hwmod_ocp_if *oi)
return
0
;
}
/**
* _alloc_linkspace - allocate large block of hwmod links
* @ois: pointer to an array of struct omap_hwmod_ocp_if records to count
*
* Allocate a large block of struct omap_hwmod_link records. This
* improves boot time significantly by avoiding the need to allocate
* individual records one by one. If the number of records to
* allocate in the block hasn't been manually specified, this function
* will count the number of struct omap_hwmod_ocp_if records in @ois
* and use that to determine the allocation size. For SoC families
* that require multiple list registrations, such as OMAP3xxx, this
* estimation process isn't optimal, so manual estimation is advised
* in those cases. Returns -EEXIST if the allocation has already occurred
* or 0 upon success.
*/
static
int
__init
_alloc_linkspace
(
struct
omap_hwmod_ocp_if
**
ois
)
{
unsigned
int
i
=
0
;
unsigned
int
sz
;
if
(
linkspace
)
{
WARN
(
1
,
"linkspace already allocated
\n
"
);
return
-
EEXIST
;
}
if
(
max_ls
==
0
)
while
(
ois
[
i
++
])
max_ls
+=
LINKS_PER_OCP_IF
;
sz
=
sizeof
(
struct
omap_hwmod_link
)
*
max_ls
;
pr_debug
(
"omap_hwmod: %s: allocating %d byte linkspace (%d links)
\n
"
,
__func__
,
sz
,
max_ls
);
linkspace
=
memblock_virt_alloc
(
sz
,
0
);
return
0
;
}
/* Static functions intended only for use in soc_ops field function pointers */
/**
...
...
@@ -3180,13 +3023,6 @@ int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois)
if
(
ois
[
0
]
==
NULL
)
/* Empty list */
return
0
;
if
(
!
linkspace
)
{
if
(
_alloc_linkspace
(
ois
))
{
pr_err
(
"omap_hwmod: could not allocate link space
\n
"
);
return
-
ENOMEM
;
}
}
i
=
0
;
do
{
r
=
_register_link
(
ois
[
i
]);
...
...
@@ -3398,14 +3234,10 @@ int omap_hwmod_count_resources(struct omap_hwmod *oh, unsigned long flags)
ret
+=
_count_sdma_reqs
(
oh
);
if
(
flags
&
IORESOURCE_MEM
)
{
int
i
=
0
;
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
=
oh
->
slave_ports
.
next
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
ret
+=
_count_ocp_if_addr_spaces
(
os
);
}
}
return
ret
;
...
...
@@ -3424,7 +3256,6 @@ int omap_hwmod_count_resources(struct omap_hwmod *oh, unsigned long flags)
int
omap_hwmod_fill_resources
(
struct
omap_hwmod
*
oh
,
struct
resource
*
res
)
{
struct
omap_hwmod_ocp_if
*
os
;
struct
list_head
*
p
;
int
i
,
j
,
mpu_irqs_cnt
,
sdma_reqs_cnt
,
addr_cnt
;
int
r
=
0
;
...
...
@@ -3454,11 +3285,7 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
r
++
;
}
p
=
oh
->
slave_ports
.
next
;
i
=
0
;
while
(
i
<
oh
->
slaves_cnt
)
{
os
=
_fetch_next_ocp_if
(
&
p
,
&
i
);
list_for_each_entry
(
os
,
&
oh
->
slave_ports
,
node
)
{
addr_cnt
=
_count_ocp_if_addr_spaces
(
os
);
for
(
j
=
0
;
j
<
addr_cnt
;
j
++
)
{
...
...
arch/arm/mach-omap2/omap_hwmod.h
浏览文件 @
6bff5474
...
...
@@ -313,6 +313,7 @@ struct omap_hwmod_ocp_if {
struct
omap_hwmod_addr_space
*
addr
;
const
char
*
clk
;
struct
clk
*
_clk
;
struct
list_head
node
;
union
{
struct
omap_hwmod_omap2_firewall
omap2
;
}
fw
;
...
...
@@ -410,7 +411,6 @@ struct omap_hwmod_class_sysconfig {
struct
omap_hwmod_sysc_fields
*
sysc_fields
;
u8
srst_udelay
;
u8
idlemodes
;
u8
clockact
;
};
/**
...
...
@@ -616,16 +616,6 @@ struct omap_hwmod_class {
void
(
*
unlock
)(
struct
omap_hwmod
*
oh
);
};
/**
* struct omap_hwmod_link - internal structure linking hwmods with ocp_ifs
* @ocp_if: OCP interface structure record pointer
* @node: list_head pointing to next struct omap_hwmod_link in a list
*/
struct
omap_hwmod_link
{
struct
omap_hwmod_ocp_if
*
ocp_if
;
struct
list_head
node
;
};
/**
* struct omap_hwmod - integration data for OMAP hardware "modules" (IP blocks)
* @name: name of the hwmod
...
...
@@ -686,9 +676,8 @@ struct omap_hwmod {
const
char
*
main_clk
;
struct
clk
*
_clk
;
struct
omap_hwmod_opt_clk
*
opt_clks
;
c
har
*
clkdm_name
;
c
onst
char
*
clkdm_name
;
struct
clockdomain
*
clkdm
;
struct
list_head
master_ports
;
/* connect to *_IA */
struct
list_head
slave_ports
;
/* connect to *_TA */
void
*
dev_attr
;
u32
_sysc_cache
;
...
...
@@ -703,7 +692,6 @@ struct omap_hwmod {
u8
response_lat
;
u8
rst_lines_cnt
;
u8
opt_clks_cnt
;
u8
masters_cnt
;
u8
slaves_cnt
;
u8
hwmods_cnt
;
u8
_int_flags
;
...
...
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
浏览文件 @
6bff5474
...
...
@@ -55,7 +55,6 @@ static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
浏览文件 @
6bff5474
...
...
@@ -149,7 +149,6 @@ static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
SYSC_HAS_EMUFREE
|
SYSC_HAS_AUTOIDLE
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
@@ -424,7 +423,6 @@ static struct omap_hwmod_class_sysconfig i2c_sysc = {
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
@@ -1045,7 +1043,6 @@ static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sysc = {
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
.
clockact
=
0x2
,
};
static
struct
omap_hwmod_class
omap3xxx_mcbsp_hwmod_class
=
{
...
...
@@ -1210,7 +1207,6 @@ static struct omap_hwmod_sysc_fields omap34xx_sr_sysc_fields = {
static
struct
omap_hwmod_class_sysconfig
omap34xx_sr_sysc
=
{
.
sysc_offs
=
0x24
,
.
sysc_flags
=
(
SYSC_HAS_CLOCKACTIVITY
|
SYSC_NO_CACHE
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap34xx_sr_sysc_fields
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
浏览文件 @
6bff5474
...
...
@@ -1320,7 +1320,6 @@ static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
SIDLE_SMART_WKUP
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
@@ -2548,7 +2547,6 @@ static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
浏览文件 @
6bff5474
...
...
@@ -839,7 +839,6 @@ static struct omap_hwmod_class_sysconfig omap54xx_i2c_sysc = {
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
SIDLE_SMART_WKUP
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
@@ -1530,7 +1529,6 @@ static struct omap_hwmod_class_sysconfig omap54xx_timer_1ms_sysc = {
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
SIDLE_SMART_WKUP
),
.
sysc_fields
=
&
omap_hwmod_sysc_type2
,
.
clockact
=
CLOCKACT_TEST_ICLK
,
};
static
struct
omap_hwmod_class
omap54xx_timer_1ms_hwmod_class
=
{
...
...
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
浏览文件 @
6bff5474
...
...
@@ -1098,7 +1098,6 @@ static struct omap_hwmod_class_sysconfig dra7xx_i2c_sysc = {
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
SIDLE_SMART_WKUP
),
.
clockact
=
CLOCKACT_TEST_ICLK
,
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录