Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
02108949
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
02108949
编写于
3月 20, 2010
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V4L/DVB: saa7134: add code to allow changing IR protocol
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
d152b8b6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
63 addition
and
4 deletion
+63
-4
drivers/media/video/saa7134/saa7134-input.c
drivers/media/video/saa7134/saa7134-input.c
+60
-4
include/media/ir-common.h
include/media/ir-common.h
+3
-0
未找到文件。
drivers/media/video/saa7134/saa7134-input.c
浏览文件 @
02108949
...
@@ -421,6 +421,10 @@ static void saa7134_input_timer(unsigned long data)
...
@@ -421,6 +421,10 @@ static void saa7134_input_timer(unsigned long data)
void
saa7134_ir_start
(
struct
saa7134_dev
*
dev
,
struct
card_ir
*
ir
)
void
saa7134_ir_start
(
struct
saa7134_dev
*
dev
,
struct
card_ir
*
ir
)
{
{
if
(
ir
->
running
)
return
;
ir
->
running
=
1
;
if
(
ir
->
polling
)
{
if
(
ir
->
polling
)
{
setup_timer
(
&
ir
->
timer
,
saa7134_input_timer
,
setup_timer
(
&
ir
->
timer
,
saa7134_input_timer
,
(
unsigned
long
)
dev
);
(
unsigned
long
)
dev
);
...
@@ -448,8 +452,50 @@ void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir)
...
@@ -448,8 +452,50 @@ void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir)
void
saa7134_ir_stop
(
struct
saa7134_dev
*
dev
)
void
saa7134_ir_stop
(
struct
saa7134_dev
*
dev
)
{
{
struct
card_ir
*
ir
=
dev
->
remote
;
if
(
!
ir
->
running
)
return
;
if
(
dev
->
remote
->
polling
)
if
(
dev
->
remote
->
polling
)
del_timer_sync
(
&
dev
->
remote
->
timer
);
del_timer_sync
(
&
dev
->
remote
->
timer
);
else
if
(
ir
->
rc5_gpio
)
del_timer_sync
(
&
ir
->
timer_end
);
else
if
(
ir
->
nec_gpio
)
tasklet_kill
(
&
ir
->
tlet
);
ir
->
running
=
0
;
}
int
saa7134_ir_change_protocol
(
void
*
priv
,
u64
ir_type
)
{
struct
saa7134_dev
*
dev
=
priv
;
struct
card_ir
*
ir
=
dev
->
remote
;
u32
nec_gpio
,
rc5_gpio
;
if
(
ir_type
==
IR_TYPE_RC5
)
{
dprintk
(
"Changing protocol to RC5
\n
"
);
nec_gpio
=
0
;
rc5_gpio
=
1
;
}
else
if
(
ir_type
==
IR_TYPE_NEC
)
{
dprintk
(
"Changing protocol to NEC
\n
"
);
nec_gpio
=
1
;
rc5_gpio
=
0
;
}
else
{
dprintk
(
"IR protocol type %ud is not supported
\n
"
,
(
unsigned
)
ir_type
);
return
-
EINVAL
;
}
if
(
ir
->
running
)
{
saa7134_ir_stop
(
dev
);
ir
->
nec_gpio
=
nec_gpio
;
ir
->
rc5_gpio
=
rc5_gpio
;
saa7134_ir_start
(
dev
,
ir
);
}
else
{
ir
->
nec_gpio
=
nec_gpio
;
ir
->
rc5_gpio
=
rc5_gpio
;
}
return
0
;
}
}
int
saa7134_input_init1
(
struct
saa7134_dev
*
dev
)
int
saa7134_input_init1
(
struct
saa7134_dev
*
dev
)
...
@@ -698,6 +744,9 @@ int saa7134_input_init1(struct saa7134_dev *dev)
...
@@ -698,6 +744,9 @@ int saa7134_input_init1(struct saa7134_dev *dev)
}
}
ir
->
dev
=
input_dev
;
ir
->
dev
=
input_dev
;
dev
->
remote
=
ir
;
ir
->
running
=
0
;
/* init hardware-specific stuff */
/* init hardware-specific stuff */
ir
->
mask_keycode
=
mask_keycode
;
ir
->
mask_keycode
=
mask_keycode
;
...
@@ -713,6 +762,14 @@ int saa7134_input_init1(struct saa7134_dev *dev)
...
@@ -713,6 +762,14 @@ int saa7134_input_init1(struct saa7134_dev *dev)
snprintf
(
ir
->
phys
,
sizeof
(
ir
->
phys
),
"pci-%s/ir0"
,
snprintf
(
ir
->
phys
,
sizeof
(
ir
->
phys
),
"pci-%s/ir0"
,
pci_name
(
dev
->
pci
));
pci_name
(
dev
->
pci
));
if
(
ir_codes
->
ir_type
!=
IR_TYPE_OTHER
)
{
ir
->
props
.
allowed_protos
=
IR_TYPE_RC5
|
IR_TYPE_NEC
;
ir
->
props
.
priv
=
dev
;
ir
->
props
.
change_protocol
=
saa7134_ir_change_protocol
;
/* Set IR protocol */
saa7134_ir_change_protocol
(
ir
->
props
.
priv
,
ir_codes
->
ir_type
);
}
err
=
ir_input_init
(
input_dev
,
&
ir
->
ir
,
ir_type
);
err
=
ir_input_init
(
input_dev
,
&
ir
->
ir
,
ir_type
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
err_out_free
;
goto
err_out_free
;
...
@@ -730,13 +787,12 @@ int saa7134_input_init1(struct saa7134_dev *dev)
...
@@ -730,13 +787,12 @@ int saa7134_input_init1(struct saa7134_dev *dev)
}
}
input_dev
->
dev
.
parent
=
&
dev
->
pci
->
dev
;
input_dev
->
dev
.
parent
=
&
dev
->
pci
->
dev
;
dev
->
remote
=
ir
;
err
=
ir_input_register
(
ir
->
dev
,
ir_codes
,
&
ir
->
props
,
MODULE_NAME
);
saa7134_ir_start
(
dev
,
ir
);
err
=
ir_input_register
(
ir
->
dev
,
ir_codes
,
NULL
,
MODULE_NAME
);
if
(
err
)
if
(
err
)
goto
err_out_stop
;
goto
err_out_stop
;
saa7134_ir_start
(
dev
,
ir
);
/* the remote isn't as bouncy as a keyboard */
/* the remote isn't as bouncy as a keyboard */
ir
->
dev
->
rep
[
REP_DELAY
]
=
repeat_delay
;
ir
->
dev
->
rep
[
REP_DELAY
]
=
repeat_delay
;
ir
->
dev
->
rep
[
REP_PERIOD
]
=
repeat_period
;
ir
->
dev
->
rep
[
REP_PERIOD
]
=
repeat_period
;
...
...
include/media/ir-common.h
浏览文件 @
02108949
...
@@ -51,6 +51,9 @@ struct card_ir {
...
@@ -51,6 +51,9 @@ struct card_ir {
char
name
[
32
];
char
name
[
32
];
char
phys
[
32
];
char
phys
[
32
];
u32
running
:
1
;
struct
ir_dev_props
props
;
/* Usual gpio signalling */
/* Usual gpio signalling */
u32
mask_keycode
;
u32
mask_keycode
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录