Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
96b4597f
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
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看板
提交
96b4597f
编写于
10月 18, 2019
作者:
T
Tony Lindgren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'watchdog-fix' into omap-for-v5.5/ti-sysc
上级
cdc56c11
c7d8669f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
4 deletion
+14
-4
drivers/bus/ti-sysc.c
drivers/bus/ti-sysc.c
+14
-4
未找到文件。
drivers/bus/ti-sysc.c
浏览文件 @
96b4597f
...
...
@@ -74,6 +74,7 @@ static const char * const clock_names[SYSC_MAX_CLOCKS] = {
* @clk_disable_quirk: module specific clock disable quirk
* @reset_done_quirk: module specific reset done quirk
* @module_enable_quirk: module specific enable quirk
* @module_disable_quirk: module specific disable quirk
*/
struct
sysc
{
struct
device
*
dev
;
...
...
@@ -100,6 +101,7 @@ struct sysc {
void
(
*
clk_disable_quirk
)(
struct
sysc
*
sysc
);
void
(
*
reset_done_quirk
)(
struct
sysc
*
sysc
);
void
(
*
module_enable_quirk
)(
struct
sysc
*
sysc
);
void
(
*
module_disable_quirk
)(
struct
sysc
*
sysc
);
};
static
void
sysc_parse_dts_quirks
(
struct
sysc
*
ddata
,
struct
device_node
*
np
,
...
...
@@ -959,6 +961,9 @@ static int sysc_disable_module(struct device *dev)
if
(
ddata
->
offsets
[
SYSC_SYSCONFIG
]
==
-
ENODEV
)
return
0
;
if
(
ddata
->
module_disable_quirk
)
ddata
->
module_disable_quirk
(
ddata
);
regbits
=
ddata
->
cap
->
regbits
;
reg
=
sysc_read
(
ddata
,
ddata
->
offsets
[
SYSC_SYSCONFIG
]);
...
...
@@ -1248,6 +1253,9 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
SYSC_MODULE_QUIRK_SGX
),
SYSC_QUIRK
(
"wdt"
,
0
,
0
,
0x10
,
0x14
,
0x502a0500
,
0xfffff0f0
,
SYSC_MODULE_QUIRK_WDT
),
/* Watchdog on am3 and am4 */
SYSC_QUIRK
(
"wdt"
,
0x44e35000
,
0
,
0x10
,
0x14
,
0x502a0500
,
0xfffff0f0
,
SYSC_MODULE_QUIRK_WDT
|
SYSC_QUIRK_SWSUP_SIDLE
),
#ifdef DEBUG
SYSC_QUIRK
(
"adc"
,
0
,
0
,
0x10
,
-
1
,
0x47300001
,
0xffffffff
,
0
),
...
...
@@ -1440,14 +1448,14 @@ static void sysc_reset_done_quirk_wdt(struct sysc *ddata)
!
(
val
&
0x10
),
100
,
MAX_MODULE_SOFTRESET_WAIT
);
if
(
error
)
dev_warn
(
ddata
->
dev
,
"wdt disable s
pr
failed
\n
"
);
dev_warn
(
ddata
->
dev
,
"wdt disable s
tep1
failed
\n
"
);
sysc_write
(
ddata
,
wps
,
0x5555
);
sysc_write
(
ddata
,
spr
,
0x5555
);
error
=
readl_poll_timeout
(
ddata
->
module_va
+
wps
,
val
,
!
(
val
&
0x10
),
100
,
MAX_MODULE_SOFTRESET_WAIT
);
if
(
error
)
dev_warn
(
ddata
->
dev
,
"wdt disable
wps
failed
\n
"
);
dev_warn
(
ddata
->
dev
,
"wdt disable
step2
failed
\n
"
);
}
static
void
sysc_init_module_quirks
(
struct
sysc
*
ddata
)
...
...
@@ -1471,8 +1479,10 @@ static void sysc_init_module_quirks(struct sysc *ddata)
if
(
ddata
->
cfg
.
quirks
&
SYSC_MODULE_QUIRK_SGX
)
ddata
->
module_enable_quirk
=
sysc_module_enable_quirk_sgx
;
if
(
ddata
->
cfg
.
quirks
&
SYSC_MODULE_QUIRK_WDT
)
if
(
ddata
->
cfg
.
quirks
&
SYSC_MODULE_QUIRK_WDT
)
{
ddata
->
reset_done_quirk
=
sysc_reset_done_quirk_wdt
;
ddata
->
module_disable_quirk
=
sysc_reset_done_quirk_wdt
;
}
}
static
int
sysc_clockdomain_init
(
struct
sysc
*
ddata
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录