Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
e4df1ebd
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看板
提交
e4df1ebd
编写于
2月 05, 2017
作者:
L
Linus Walleij
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ib-gpiod-flags' into devel
上级
e8e1a5b5
537b94da
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
58 addition
and
40 deletion
+58
-40
drivers/gpio/devres.c
drivers/gpio/devres.c
+11
-8
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.c
+5
-4
drivers/input/keyboard/gpio_keys.c
drivers/input/keyboard/gpio_keys.c
+4
-2
drivers/input/keyboard/gpio_keys_polled.c
drivers/input/keyboard/gpio_keys_polled.c
+4
-4
drivers/leds/leds-gpio.c
drivers/leds/leds-gpio.c
+3
-2
drivers/video/fbdev/amba-clcd-nomadik.c
drivers/video/fbdev/amba-clcd-nomadik.c
+8
-8
include/linux/gpio/consumer.h
include/linux/gpio/consumer.h
+23
-12
未找到文件。
drivers/gpio/devres.c
浏览文件 @
e4df1ebd
...
...
@@ -125,9 +125,11 @@ struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev,
EXPORT_SYMBOL
(
devm_gpiod_get_index
);
/**
* devm_get_gpiod_from_child - get a GPIO descriptor from a device's child node
* devm_fwnode_get_index_gpiod_from_child - get a GPIO descriptor from a
* device's child node
* @dev: GPIO consumer
* @con_id: function within the GPIO consumer
* @index: index of the GPIO to obtain in the consumer
* @child: firmware node (child of @dev)
* @flags: GPIO initialization flags
*
...
...
@@ -137,11 +139,11 @@ EXPORT_SYMBOL(devm_gpiod_get_index);
* On successfull request the GPIO pin is configured in accordance with
* provided @flags.
*/
struct
gpio_desc
*
devm_
get
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
)
struct
gpio_desc
*
devm_
fwnode_get_index
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
int
index
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
)
{
char
prop_name
[
32
];
/* 32 is max size of property name */
struct
gpio_desc
**
dr
;
...
...
@@ -161,7 +163,8 @@ struct gpio_desc *devm_get_gpiod_from_child(struct device *dev,
snprintf
(
prop_name
,
sizeof
(
prop_name
),
"%s"
,
gpio_suffixes
[
i
]);
desc
=
fwnode_get_named_gpiod
(
child
,
prop_name
,
flags
,
label
);
desc
=
fwnode_get_named_gpiod
(
child
,
prop_name
,
index
,
flags
,
label
);
if
(
!
IS_ERR
(
desc
)
||
(
PTR_ERR
(
desc
)
!=
-
ENOENT
))
break
;
}
...
...
@@ -175,7 +178,7 @@ struct gpio_desc *devm_get_gpiod_from_child(struct device *dev,
return
desc
;
}
EXPORT_SYMBOL
(
devm_
get
_gpiod_from_child
);
EXPORT_SYMBOL
(
devm_
fwnode_get_index
_gpiod_from_child
);
/**
* devm_gpiod_get_index_optional - Resource-managed gpiod_get_index_optional()
...
...
drivers/gpio/gpiolib.c
浏览文件 @
e4df1ebd
...
...
@@ -3316,6 +3316,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_index);
* fwnode_get_named_gpiod - obtain a GPIO from firmware node
* @fwnode: handle of the firmware node
* @propname: name of the firmware property representing the GPIO
* @index: index of the GPIO to obtain in the consumer
* @dflags: GPIO initialization flags
*
* This function can be used for drivers that get their configuration
...
...
@@ -3331,7 +3332,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_index);
* In case of error an ERR_PTR() is returned.
*/
struct
gpio_desc
*
fwnode_get_named_gpiod
(
struct
fwnode_handle
*
fwnode
,
const
char
*
propname
,
const
char
*
propname
,
int
index
,
enum
gpiod_flags
dflags
,
const
char
*
label
)
{
...
...
@@ -3347,8 +3348,8 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
if
(
is_of_node
(
fwnode
))
{
enum
of_gpio_flags
flags
;
desc
=
of_get_named_gpiod_flags
(
to_of_node
(
fwnode
),
propname
,
0
,
&
flags
);
desc
=
of_get_named_gpiod_flags
(
to_of_node
(
fwnode
),
propname
,
index
,
&
flags
);
if
(
!
IS_ERR
(
desc
))
{
active_low
=
flags
&
OF_GPIO_ACTIVE_LOW
;
single_ended
=
flags
&
OF_GPIO_SINGLE_ENDED
;
...
...
@@ -3356,7 +3357,7 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
}
else
if
(
is_acpi_node
(
fwnode
))
{
struct
acpi_gpio_info
info
;
desc
=
acpi_node_get_gpiod
(
fwnode
,
propname
,
0
,
&
info
);
desc
=
acpi_node_get_gpiod
(
fwnode
,
propname
,
index
,
&
info
);
if
(
!
IS_ERR
(
desc
))
active_low
=
info
.
polarity
==
GPIO_ACTIVE_LOW
;
}
...
...
drivers/input/keyboard/gpio_keys.c
浏览文件 @
e4df1ebd
...
...
@@ -481,8 +481,10 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
spin_lock_init
(
&
bdata
->
lock
);
if
(
child
)
{
bdata
->
gpiod
=
devm_get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_IN
,
desc
);
bdata
->
gpiod
=
devm_fwnode_get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_IN
,
desc
);
if
(
IS_ERR
(
bdata
->
gpiod
))
{
error
=
PTR_ERR
(
bdata
->
gpiod
);
if
(
error
==
-
ENOENT
)
{
...
...
drivers/input/keyboard/gpio_keys_polled.c
浏览文件 @
e4df1ebd
...
...
@@ -303,10 +303,10 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
return
-
EINVAL
;
}
bdata
->
gpiod
=
devm_
get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_IN
,
button
->
desc
);
bdata
->
gpiod
=
devm_
fwnode_get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_IN
,
button
->
desc
);
if
(
IS_ERR
(
bdata
->
gpiod
))
{
error
=
PTR_ERR
(
bdata
->
gpiod
);
if
(
error
!=
-
EPROBE_DEFER
)
...
...
drivers/leds/leds-gpio.c
浏览文件 @
e4df1ebd
...
...
@@ -182,8 +182,9 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
return
ERR_PTR
(
-
EINVAL
);
}
led
.
gpiod
=
devm_get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_ASIS
,
led
.
name
);
led
.
gpiod
=
devm_fwnode_get_gpiod_from_child
(
dev
,
NULL
,
child
,
GPIOD_ASIS
,
led
.
name
);
if
(
IS_ERR
(
led
.
gpiod
))
{
fwnode_handle_put
(
child
);
return
ERR_CAST
(
led
.
gpiod
);
...
...
drivers/video/fbdev/amba-clcd-nomadik.c
浏览文件 @
e4df1ebd
...
...
@@ -185,26 +185,26 @@ static void tpg110_init(struct device *dev, struct device_node *np,
dev_info
(
dev
,
"TPG110 display init
\n
"
);
/* This asserts the GRESTB signal, putting the display into reset */
grestb
=
devm_get_gpiod_from_child
(
dev
,
"grestb"
,
&
np
->
fwnode
,
GPIOD_OUT_HIGH
,
"grestb"
);
grestb
=
devm_
fwnode_
get_gpiod_from_child
(
dev
,
"grestb"
,
&
np
->
fwnode
,
GPIOD_OUT_HIGH
,
"grestb"
);
if
(
IS_ERR
(
grestb
))
{
dev_err
(
dev
,
"no GRESTB GPIO
\n
"
);
return
;
}
scen
=
devm_get_gpiod_from_child
(
dev
,
"scen"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"scen"
);
scen
=
devm_
fwnode_
get_gpiod_from_child
(
dev
,
"scen"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"scen"
);
if
(
IS_ERR
(
scen
))
{
dev_err
(
dev
,
"no SCEN GPIO
\n
"
);
return
;
}
scl
=
devm_
get_gpiod_from_child
(
dev
,
"scl"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"scl"
);
scl
=
devm_
fwnode_get_gpiod_from_child
(
dev
,
"scl"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"scl"
);
if
(
IS_ERR
(
scl
))
{
dev_err
(
dev
,
"no SCL GPIO
\n
"
);
return
;
}
sda
=
devm_
get_gpiod_from_child
(
dev
,
"sda"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"sda"
);
sda
=
devm_
fwnode_get_gpiod_from_child
(
dev
,
"sda"
,
&
np
->
fwnode
,
GPIOD_OUT_LOW
,
"sda"
);
if
(
IS_ERR
(
sda
))
{
dev_err
(
dev
,
"no SDA GPIO
\n
"
);
return
;
...
...
include/linux/gpio/consumer.h
浏览文件 @
e4df1ebd
...
...
@@ -135,14 +135,14 @@ int desc_to_gpio(const struct gpio_desc *desc);
struct
fwnode_handle
;
struct
gpio_desc
*
fwnode_get_named_gpiod
(
struct
fwnode_handle
*
fwnode
,
const
char
*
propname
,
const
char
*
propname
,
int
index
,
enum
gpiod_flags
dflags
,
const
char
*
label
);
struct
gpio_desc
*
devm_
get
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
);
struct
gpio_desc
*
devm_
fwnode_get_index
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
int
index
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
);
#else
/* CONFIG_GPIOLIB */
static
inline
int
gpiod_count
(
struct
device
*
dev
,
const
char
*
con_id
)
...
...
@@ -417,7 +417,7 @@ struct fwnode_handle;
static
inline
struct
gpio_desc
*
fwnode_get_named_gpiod
(
struct
fwnode_handle
*
fwnode
,
const
char
*
propname
,
const
char
*
propname
,
int
index
,
enum
gpiod_flags
dflags
,
const
char
*
label
)
{
...
...
@@ -425,17 +425,28 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
}
static
inline
struct
gpio_desc
*
devm_
get
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
)
struct
gpio_desc
*
devm_
fwnode_get_index
_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
int
index
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
)
{
return
ERR_PTR
(
-
ENOSYS
);
}
#endif
/* CONFIG_GPIOLIB */
static
inline
struct
gpio_desc
*
devm_fwnode_get_gpiod_from_child
(
struct
device
*
dev
,
const
char
*
con_id
,
struct
fwnode_handle
*
child
,
enum
gpiod_flags
flags
,
const
char
*
label
)
{
return
devm_fwnode_get_index_gpiod_from_child
(
dev
,
con_id
,
0
,
child
,
flags
,
label
);
}
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
int
gpiod_export
(
struct
gpio_desc
*
desc
,
bool
direction_may_change
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录