Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
af3e1629
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
af3e1629
编写于
6月 29, 2016
作者:
P
Philipp Zabel
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'reset/explicit-api' into reset/next
上级
cc7c2bb1
0bcc0eab
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
167 addition
and
44 deletion
+167
-44
include/linux/reset.h
include/linux/reset.h
+167
-44
未找到文件。
include/linux/reset.h
浏览文件 @
af3e1629
...
@@ -84,8 +84,8 @@ static inline struct reset_control *__devm_reset_control_get(
...
@@ -84,8 +84,8 @@ static inline struct reset_control *__devm_reset_control_get(
#endif
/* CONFIG_RESET_CONTROLLER */
#endif
/* CONFIG_RESET_CONTROLLER */
/**
/**
* reset_control_get
- Lookup and obtain an exclusive reference to a
* reset_control_get
_exclusive - Lookup and obtain an exclusive reference
* reset controller.
*
to a
reset controller.
* @dev: device to be reset by the controller
* @dev: device to be reset by the controller
* @id: reset line name
* @id: reset line name
*
*
...
@@ -98,8 +98,8 @@ static inline struct reset_control *__devm_reset_control_get(
...
@@ -98,8 +98,8 @@ static inline struct reset_control *__devm_reset_control_get(
*
*
* Use of id names is optional.
* Use of id names is optional.
*/
*/
static
inline
struct
reset_control
*
__must_check
reset_control_get
(
static
inline
struct
reset_control
*
struct
device
*
dev
,
const
char
*
id
)
__must_check
reset_control_get_exclusive
(
struct
device
*
dev
,
const
char
*
id
)
{
{
#ifndef CONFIG_RESET_CONTROLLER
#ifndef CONFIG_RESET_CONTROLLER
WARN_ON
(
1
);
WARN_ON
(
1
);
...
@@ -107,12 +107,6 @@ static inline struct reset_control *__must_check reset_control_get(
...
@@ -107,12 +107,6 @@ static inline struct reset_control *__must_check reset_control_get(
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
0
);
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
0
);
}
}
static
inline
struct
reset_control
*
reset_control_get_optional
(
struct
device
*
dev
,
const
char
*
id
)
{
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
0
);
}
/**
/**
* reset_control_get_shared - Lookup and obtain a shared reference to a
* reset_control_get_shared - Lookup and obtain a shared reference to a
* reset controller.
* reset controller.
...
@@ -141,9 +135,21 @@ static inline struct reset_control *reset_control_get_shared(
...
@@ -141,9 +135,21 @@ static inline struct reset_control *reset_control_get_shared(
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
1
);
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
1
);
}
}
static
inline
struct
reset_control
*
reset_control_get_optional_exclusive
(
struct
device
*
dev
,
const
char
*
id
)
{
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
0
);
}
static
inline
struct
reset_control
*
reset_control_get_optional_shared
(
struct
device
*
dev
,
const
char
*
id
)
{
return
__of_reset_control_get
(
dev
?
dev
->
of_node
:
NULL
,
id
,
0
,
1
);
}
/**
/**
* of_reset_control_get
- Lookup and obtain an exclusive reference to a
* of_reset_control_get
_exclusive - Lookup and obtain an exclusive reference
* reset controller.
*
to a
reset controller.
* @node: device to be reset by the controller
* @node: device to be reset by the controller
* @id: reset line name
* @id: reset line name
*
*
...
@@ -151,15 +157,41 @@ static inline struct reset_control *reset_control_get_shared(
...
@@ -151,15 +157,41 @@ static inline struct reset_control *reset_control_get_shared(
*
*
* Use of id names is optional.
* Use of id names is optional.
*/
*/
static
inline
struct
reset_control
*
of_reset_control_get
(
static
inline
struct
reset_control
*
of_reset_control_get
_exclusive
(
struct
device_node
*
node
,
const
char
*
id
)
struct
device_node
*
node
,
const
char
*
id
)
{
{
return
__of_reset_control_get
(
node
,
id
,
0
,
0
);
return
__of_reset_control_get
(
node
,
id
,
0
,
0
);
}
}
/**
/**
* of_reset_control_get_by_index - Lookup and obtain an exclusive reference to
* of_reset_control_get_shared - Lookup and obtain an shared reference
* a reset controller by index.
* to a reset controller.
* @node: device to be reset by the controller
* @id: reset line name
*
* When a reset-control is shared, the behavior of reset_control_assert /
* deassert is changed, the reset-core will keep track of a deassert_count
* and only (re-)assert the reset after reset_control_assert has been called
* as many times as reset_control_deassert was called. Also see the remark
* about shared reset-controls in the reset_control_assert docs.
*
* Calling reset_control_assert without first calling reset_control_deassert
* is not allowed on a shared reset control. Calling reset_control_reset is
* also not allowed on a shared reset control.
* Returns a struct reset_control or IS_ERR() condition containing errno.
*
* Use of id names is optional.
*/
static
inline
struct
reset_control
*
of_reset_control_get_shared
(
struct
device_node
*
node
,
const
char
*
id
)
{
return
__of_reset_control_get
(
node
,
id
,
0
,
1
);
}
/**
* of_reset_control_get_exclusive_by_index - Lookup and obtain an exclusive
* reference to a reset controller
* by index.
* @node: device to be reset by the controller
* @node: device to be reset by the controller
* @index: index of the reset controller
* @index: index of the reset controller
*
*
...
@@ -167,49 +199,60 @@ static inline struct reset_control *of_reset_control_get(
...
@@ -167,49 +199,60 @@ static inline struct reset_control *of_reset_control_get(
* in whatever order. Returns a struct reset_control or IS_ERR() condition
* in whatever order. Returns a struct reset_control or IS_ERR() condition
* containing errno.
* containing errno.
*/
*/
static
inline
struct
reset_control
*
of_reset_control_get_by_index
(
static
inline
struct
reset_control
*
of_reset_control_get_
exclusive_
by_index
(
struct
device_node
*
node
,
int
index
)
struct
device_node
*
node
,
int
index
)
{
{
return
__of_reset_control_get
(
node
,
NULL
,
index
,
0
);
return
__of_reset_control_get
(
node
,
NULL
,
index
,
0
);
}
}
/**
/**
* devm_reset_control_get - resource managed reset_control_get()
* of_reset_control_get_shared_by_index - Lookup and obtain an shared
* @dev: device to be reset by the controller
* reference to a reset controller
* @id: reset line name
* by index.
* @node: device to be reset by the controller
* @index: index of the reset controller
*
* When a reset-control is shared, the behavior of reset_control_assert /
* deassert is changed, the reset-core will keep track of a deassert_count
* and only (re-)assert the reset after reset_control_assert has been called
* as many times as reset_control_deassert was called. Also see the remark
* about shared reset-controls in the reset_control_assert docs.
*
* Calling reset_control_assert without first calling reset_control_deassert
* is not allowed on a shared reset control. Calling reset_control_reset is
* also not allowed on a shared reset control.
* Returns a struct reset_control or IS_ERR() condition containing errno.
*
*
*
Managed reset_control_get(). For reset controllers returned from this
*
This is to be used to perform a list of resets for a device or power domain
*
function, reset_control_put() is called automatically on driver detach.
*
in whatever order. Returns a struct reset_control or IS_ERR() condition
*
See reset_control_get() for more information
.
*
containing errno
.
*/
*/
static
inline
struct
reset_control
*
__must_check
devm_reset_control_get
(
static
inline
struct
reset_control
*
of_reset_control_get_shared_by_index
(
struct
device
*
dev
,
const
char
*
id
)
struct
device_node
*
node
,
int
index
)
{
#ifndef CONFIG_RESET_CONTROLLER
WARN_ON
(
1
);
#endif
return
__devm_reset_control_get
(
dev
,
id
,
0
,
0
);
}
static
inline
struct
reset_control
*
devm_reset_control_get_optional
(
struct
device
*
dev
,
const
char
*
id
)
{
{
return
__
devm_reset_control_get
(
dev
,
id
,
0
,
0
);
return
__
of_reset_control_get
(
node
,
NULL
,
index
,
1
);
}
}
/**
/**
* devm_reset_control_get_by_index - resource managed reset_control_get
* devm_reset_control_get_exclusive - resource managed
* reset_control_get_exclusive()
* @dev: device to be reset by the controller
* @dev: device to be reset by the controller
* @i
ndex: index of the reset controller
* @i
d: reset line name
*
*
* Managed reset_control_get(). For reset controllers returned from this
* Managed reset_control_get_exclusive(). For reset controllers returned
* function, reset_control_put() is called automatically on driver detach.
* from this function, reset_control_put() is called automatically on driver
* See reset_control_get() for more information.
* detach.
*
* See reset_control_get_exclusive() for more information.
*/
*/
static
inline
struct
reset_control
*
devm_reset_control_get_by_index
(
static
inline
struct
reset_control
*
struct
device
*
dev
,
int
index
)
__must_check
devm_reset_control_get_exclusive
(
struct
device
*
dev
,
const
char
*
id
)
{
{
return
__devm_reset_control_get
(
dev
,
NULL
,
index
,
0
);
#ifndef CONFIG_RESET_CONTROLLER
WARN_ON
(
1
);
#endif
return
__devm_reset_control_get
(
dev
,
id
,
0
,
0
);
}
}
/**
/**
...
@@ -227,6 +270,36 @@ static inline struct reset_control *devm_reset_control_get_shared(
...
@@ -227,6 +270,36 @@ static inline struct reset_control *devm_reset_control_get_shared(
return
__devm_reset_control_get
(
dev
,
id
,
0
,
1
);
return
__devm_reset_control_get
(
dev
,
id
,
0
,
1
);
}
}
static
inline
struct
reset_control
*
devm_reset_control_get_optional_exclusive
(
struct
device
*
dev
,
const
char
*
id
)
{
return
__devm_reset_control_get
(
dev
,
id
,
0
,
0
);
}
static
inline
struct
reset_control
*
devm_reset_control_get_optional_shared
(
struct
device
*
dev
,
const
char
*
id
)
{
return
__devm_reset_control_get
(
dev
,
id
,
0
,
1
);
}
/**
* devm_reset_control_get_exclusive_by_index - resource managed
* reset_control_get_exclusive()
* @dev: device to be reset by the controller
* @index: index of the reset controller
*
* Managed reset_control_get_exclusive(). For reset controllers returned from
* this function, reset_control_put() is called automatically on driver
* detach.
*
* See reset_control_get_exclusive() for more information.
*/
static
inline
struct
reset_control
*
devm_reset_control_get_exclusive_by_index
(
struct
device
*
dev
,
int
index
)
{
return
__devm_reset_control_get
(
dev
,
NULL
,
index
,
0
);
}
/**
/**
* devm_reset_control_get_shared_by_index - resource managed
* devm_reset_control_get_shared_by_index - resource managed
* reset_control_get_shared
* reset_control_get_shared
...
@@ -237,10 +310,60 @@ static inline struct reset_control *devm_reset_control_get_shared(
...
@@ -237,10 +310,60 @@ static inline struct reset_control *devm_reset_control_get_shared(
* this function, reset_control_put() is called automatically on driver detach.
* this function, reset_control_put() is called automatically on driver detach.
* See reset_control_get_shared() for more information.
* See reset_control_get_shared() for more information.
*/
*/
static
inline
struct
reset_control
*
devm_reset_control_get_shared_by_index
(
static
inline
struct
reset_control
*
struct
device
*
dev
,
int
index
)
devm_reset_control_get_shared_by_index
(
struct
device
*
dev
,
int
index
)
{
{
return
__devm_reset_control_get
(
dev
,
NULL
,
index
,
1
);
return
__devm_reset_control_get
(
dev
,
NULL
,
index
,
1
);
}
}
/*
* TEMPORARY calls to use during transition:
*
* of_reset_control_get() => of_reset_control_get_exclusive()
*
* These inline function calls will be removed once all consumers
* have been moved over to the new explicit API.
*/
static
inline
struct
reset_control
*
reset_control_get
(
struct
device
*
dev
,
const
char
*
id
)
{
return
reset_control_get_exclusive
(
dev
,
id
);
}
static
inline
struct
reset_control
*
reset_control_get_optional
(
struct
device
*
dev
,
const
char
*
id
)
{
return
reset_control_get_optional_exclusive
(
dev
,
id
);
}
static
inline
struct
reset_control
*
of_reset_control_get
(
struct
device_node
*
node
,
const
char
*
id
)
{
return
of_reset_control_get_exclusive
(
node
,
id
);
}
static
inline
struct
reset_control
*
of_reset_control_get_by_index
(
struct
device_node
*
node
,
int
index
)
{
return
of_reset_control_get_exclusive_by_index
(
node
,
index
);
}
static
inline
struct
reset_control
*
devm_reset_control_get
(
struct
device
*
dev
,
const
char
*
id
)
{
return
devm_reset_control_get_exclusive
(
dev
,
id
);
}
static
inline
struct
reset_control
*
devm_reset_control_get_optional
(
struct
device
*
dev
,
const
char
*
id
)
{
return
devm_reset_control_get_optional_exclusive
(
dev
,
id
);
}
static
inline
struct
reset_control
*
devm_reset_control_get_by_index
(
struct
device
*
dev
,
int
index
)
{
return
devm_reset_control_get_exclusive_by_index
(
dev
,
index
);
}
#endif
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录