Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
3f1f368e
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3f1f368e
编写于
8年前
作者:
T
Thierry Reding
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-4.7/pwm-args' into for-4.7/pwm-atomic
上级
f55532a0
fbd45a12
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
55 addition
and
8 deletion
+55
-8
drivers/pwm/core.c
drivers/pwm/core.c
+20
-6
drivers/pwm/pwm-clps711x.c
drivers/pwm/pwm-clps711x.c
+1
-1
drivers/pwm/pwm-pxa.c
drivers/pwm/pwm-pxa.c
+1
-1
include/linux/pwm.h
include/linux/pwm.h
+33
-0
未找到文件。
drivers/pwm/core.c
浏览文件 @
3f1f368e
...
...
@@ -146,12 +146,12 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
if
(
IS_ERR
(
pwm
))
return
pwm
;
pwm
_set_period
(
pwm
,
args
->
args
[
1
])
;
pwm
->
args
.
period
=
args
->
args
[
1
]
;
if
(
args
->
args
[
2
]
&
PWM_POLARITY_INVERTED
)
pwm
_set_polarity
(
pwm
,
PWM_POLARITY_INVERSED
)
;
pwm
->
args
.
polarity
=
PWM_POLARITY_INVERSED
;
else
pwm
_set_polarity
(
pwm
,
PWM_POLARITY_NORMAL
)
;
pwm
->
args
.
polarity
=
PWM_POLARITY_NORMAL
;
return
pwm
;
}
...
...
@@ -172,7 +172,7 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
if
(
IS_ERR
(
pwm
))
return
pwm
;
pwm
_set_period
(
pwm
,
args
->
args
[
1
])
;
pwm
->
args
.
period
=
args
->
args
[
1
]
;
return
pwm
;
}
...
...
@@ -620,6 +620,13 @@ struct pwm_device *of_pwm_get(struct device_node *np, const char *con_id)
pwm
->
label
=
con_id
;
/*
* FIXME: This should be removed once all PWM users properly make use
* of struct pwm_args to initialize the PWM device. As long as this is
* here, the PWM state and hardware state can get out of sync.
*/
pwm_apply_args
(
pwm
);
put:
of_node_put
(
args
.
np
);
...
...
@@ -751,8 +758,15 @@ struct pwm_device *pwm_get(struct device *dev, const char *con_id)
if
(
IS_ERR
(
pwm
))
goto
out
;
pwm_set_period
(
pwm
,
chosen
->
period
);
pwm_set_polarity
(
pwm
,
chosen
->
polarity
);
pwm
->
args
.
period
=
chosen
->
period
;
pwm
->
args
.
polarity
=
chosen
->
polarity
;
/*
* FIXME: This should be removed once all PWM users properly make use
* of struct pwm_args to initialize the PWM device. As long as this is
* here, the PWM state and hardware state can get out of sync.
*/
pwm_apply_args
(
pwm
);
out:
mutex_unlock
(
&
pwm_lookup_lock
);
...
...
This diff is collapsed.
Click to expand it.
drivers/pwm/pwm-clps711x.c
浏览文件 @
3f1f368e
...
...
@@ -60,7 +60,7 @@ static int clps711x_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
return
-
EINVAL
;
/* Store constant period value */
pwm
_set_period
(
pwm
,
DIV_ROUND_CLOSEST
(
NSEC_PER_SEC
,
freq
)
);
pwm
->
args
.
period
=
DIV_ROUND_CLOSEST
(
NSEC_PER_SEC
,
freq
);
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/pwm/pwm-pxa.c
浏览文件 @
3f1f368e
...
...
@@ -160,7 +160,7 @@ pxa_pwm_of_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
if
(
IS_ERR
(
pwm
))
return
pwm
;
pwm
_set_period
(
pwm
,
args
->
args
[
0
])
;
pwm
->
args
.
period
=
args
->
args
[
0
]
;
return
pwm
;
}
...
...
This diff is collapsed.
Click to expand it.
include/linux/pwm.h
浏览文件 @
3f1f368e
...
...
@@ -74,6 +74,24 @@ enum pwm_polarity {
PWM_POLARITY_INVERSED
,
};
/**
* struct pwm_args - board-dependent PWM arguments
* @period: reference period
* @polarity: reference polarity
*
* This structure describes board-dependent arguments attached to a PWM
* device. These arguments are usually retrieved from the PWM lookup table or
* device tree.
*
* Do not confuse this with the PWM state: PWM arguments represent the initial
* configuration that users want to use on this PWM device rather than the
* current PWM hardware state.
*/
struct
pwm_args
{
unsigned
int
period
;
enum
pwm_polarity
polarity
;
};
enum
{
PWMF_REQUESTED
=
1
<<
0
,
PWMF_ENABLED
=
1
<<
1
,
...
...
@@ -92,6 +110,7 @@ enum {
* @period: period of the PWM signal (in nanoseconds)
* @duty_cycle: duty cycle of the PWM signal (in nanoseconds)
* @polarity: polarity of the PWM signal
* @args: PWM arguments
*/
struct
pwm_device
{
const
char
*
label
;
...
...
@@ -105,6 +124,8 @@ struct pwm_device {
unsigned
int
period
;
unsigned
int
duty_cycle
;
enum
pwm_polarity
polarity
;
struct
pwm_args
args
;
};
static
inline
bool
pwm_is_enabled
(
const
struct
pwm_device
*
pwm
)
...
...
@@ -144,6 +165,18 @@ static inline enum pwm_polarity pwm_get_polarity(const struct pwm_device *pwm)
return
pwm
?
pwm
->
polarity
:
PWM_POLARITY_NORMAL
;
}
static
inline
void
pwm_get_args
(
const
struct
pwm_device
*
pwm
,
struct
pwm_args
*
args
)
{
*
args
=
pwm
->
args
;
}
static
inline
void
pwm_apply_args
(
struct
pwm_device
*
pwm
)
{
pwm_set_period
(
pwm
,
pwm
->
args
.
period
);
pwm_set_polarity
(
pwm
,
pwm
->
args
.
polarity
);
}
/**
* struct pwm_ops - PWM controller operations
* @request: optional hook for requesting a PWM
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部