Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8573b74a
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看板
提交
8573b74a
编写于
15年前
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V4L/DVB (13533): ir: use dynamic tables, instead of static ones
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
ef53a115
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
29 addition
and
55 deletion
+29
-55
drivers/media/common/ir-functions.c
drivers/media/common/ir-functions.c
+6
-26
drivers/media/common/ir-keytable.c
drivers/media/common/ir-keytable.c
+0
-2
drivers/media/dvb/dm1105/dm1105.c
drivers/media/dvb/dm1105/dm1105.c
+1
-1
drivers/media/dvb/ttpci/budget-ci.c
drivers/media/dvb/ttpci/budget-ci.c
+1
-1
drivers/media/video/bt8xx/bttv-input.c
drivers/media/video/bt8xx/bttv-input.c
+4
-4
drivers/media/video/cx231xx/cx231xx-input.c
drivers/media/video/cx231xx/cx231xx-input.c
+1
-2
drivers/media/video/cx23885/cx23885-input.c
drivers/media/video/cx23885/cx23885-input.c
+1
-2
drivers/media/video/cx88/cx88-input.c
drivers/media/video/cx88/cx88-input.c
+7
-7
drivers/media/video/em28xx/em28xx-input.c
drivers/media/video/em28xx/em28xx-input.c
+1
-2
drivers/media/video/ir-kbd-i2c.c
drivers/media/video/ir-kbd-i2c.c
+1
-1
drivers/media/video/saa7134/saa7134-input.c
drivers/media/video/saa7134/saa7134-input.c
+4
-4
include/media/ir-common.h
include/media/ir-common.h
+2
-3
未找到文件。
drivers/media/common/ir-functions.c
浏览文件 @
8573b74a
...
...
@@ -42,8 +42,8 @@ module_param_named(debug, media_ir_debug, int, 0644);
static
void
ir_input_key_event
(
struct
input_dev
*
dev
,
struct
ir_input_state
*
ir
)
{
if
(
KEY_RESERVED
==
ir
->
keycode
)
{
printk
(
KERN_INFO
"%s: unknown key: key=0x%02x
raw=0x%02x
down=%d
\n
"
,
dev
->
name
,
ir
->
ir_key
,
ir
->
ir_raw
,
ir
->
keypressed
);
printk
(
KERN_INFO
"%s: unknown key: key=0x%02x down=%d
\n
"
,
dev
->
name
,
ir
->
ir_key
,
ir
->
keypressed
);
return
;
}
IR_dprintk
(
1
,
"%s: key event code=%d down=%d
\n
"
,
...
...
@@ -57,28 +57,10 @@ static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir)
void
ir_input_init
(
struct
input_dev
*
dev
,
struct
ir_input_state
*
ir
,
int
ir_type
,
struct
ir_scancode_table
*
ir_codes
)
{
int
i
;
ir
->
ir_type
=
ir_type
;
memset
(
ir
->
ir_codes
,
0
,
sizeof
(
ir
->
ir_codes
));
/*
* FIXME: This is a temporary workaround to use the new IR tables
* with the old approach. Later patches will replace this to a
* proper method
*/
if
(
ir_codes
)
for
(
i
=
0
;
i
<
ir_codes
->
size
;
i
++
)
if
(
ir_codes
->
scan
[
i
].
scancode
<
IR_KEYTAB_SIZE
)
ir
->
ir_codes
[
ir_codes
->
scan
[
i
].
scancode
]
=
ir_codes
->
scan
[
i
].
keycode
;
ir_set_keycode_table
(
dev
,
ir_codes
);
dev
->
keycode
=
ir
->
ir_codes
;
dev
->
keycodesize
=
sizeof
(
IR_KEYTAB_TYPE
);
dev
->
keycodemax
=
IR_KEYTAB_SIZE
;
for
(
i
=
0
;
i
<
IR_KEYTAB_SIZE
;
i
++
)
set_bit
(
ir
->
ir_codes
[
i
],
dev
->
keybit
);
clear_bit
(
0
,
dev
->
keybit
);
set_bit
(
EV_KEY
,
dev
->
evbit
);
...
...
@@ -97,9 +79,9 @@ void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir)
EXPORT_SYMBOL_GPL
(
ir_input_nokey
);
void
ir_input_keydown
(
struct
input_dev
*
dev
,
struct
ir_input_state
*
ir
,
u32
ir_key
,
u32
ir_raw
)
u32
ir_key
)
{
u32
keycode
=
IR_KEYCODE
(
ir
->
ir_codes
,
ir_key
);
u32
keycode
=
ir_g_keycode_from_table
(
dev
,
ir_key
);
if
(
ir
->
keypressed
&&
ir
->
keycode
!=
keycode
)
{
ir
->
keypressed
=
0
;
...
...
@@ -107,7 +89,6 @@ void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir,
}
if
(
!
ir
->
keypressed
)
{
ir
->
ir_key
=
ir_key
;
ir
->
ir_raw
=
ir_raw
;
ir
->
keycode
=
keycode
;
ir
->
keypressed
=
1
;
ir_input_key_event
(
dev
,
ir
);
...
...
@@ -354,8 +335,7 @@ void ir_rc5_timer_end(unsigned long data)
IR_dprintk
(
1
,
"ir-common: instruction %x, toggle %x
\n
"
,
instr
,
toggle
);
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
instr
,
instr
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
instr
);
}
/* Set/reset key-up timer */
...
...
This diff is collapsed.
Click to expand it.
drivers/media/common/ir-keytable.c
浏览文件 @
8573b74a
...
...
@@ -118,7 +118,6 @@ u32 ir_g_keycode_from_table(struct input_dev *dev, u32 scancode)
return
KEY_UNKNOWN
;
}
EXPORT_SYMBOL_GPL
(
ir_g_keycode_from_table
);
/**
* ir_set_keycode_table() - sets the IR keycode table and add the handlers
...
...
@@ -153,4 +152,3 @@ int ir_set_keycode_table(struct input_dev *input_dev,
return
0
;
}
EXPORT_SYMBOL_GPL
(
ir_set_keycode_table
);
This diff is collapsed.
Click to expand it.
drivers/media/dvb/dm1105/dm1105.c
浏览文件 @
8573b74a
...
...
@@ -510,7 +510,7 @@ static void dm1105_emit_key(struct work_struct *work)
data
=
(
ircom
>>
8
)
&
0x7f
;
ir_input_keydown
(
ir
->
input_dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
input_dev
,
&
ir
->
ir
,
data
);
ir_input_nokey
(
ir
->
input_dev
,
&
ir
->
ir
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/dvb/ttpci/budget-ci.c
浏览文件 @
8573b74a
...
...
@@ -178,7 +178,7 @@ static void msp430_ir_interrupt(unsigned long data)
if
(
budget_ci
->
ir
.
last_raw
!=
raw
||
!
timer_pending
(
&
budget_ci
->
ir
.
timer_keyup
))
{
ir_input_nokey
(
dev
,
&
budget_ci
->
ir
.
state
);
ir_input_keydown
(
dev
,
&
budget_ci
->
ir
.
state
,
budget_ci
->
ir
.
ir_key
,
raw
);
budget_ci
->
ir
.
ir_key
);
budget_ci
->
ir
.
last_raw
=
raw
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/bt8xx/bttv-input.c
浏览文件 @
8573b74a
...
...
@@ -73,12 +73,12 @@ static void ir_handle_key(struct bttv *btv)
if
((
ir
->
mask_keydown
&&
(
0
!=
(
gpio
&
ir
->
mask_keydown
)))
||
(
ir
->
mask_keyup
&&
(
0
==
(
gpio
&
ir
->
mask_keyup
))))
{
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
}
else
{
/* HACK: Probably, ir->mask_keydown is missing
for this board */
if
(
btv
->
c
.
type
==
BTTV_BOARD_WINFAST2000
)
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
}
...
...
@@ -104,7 +104,7 @@ static void ir_enltv_handle_key(struct bttv *btv)
gpio
,
data
,
(
gpio
&
ir
->
mask_keyup
)
?
" up"
:
"up/down"
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
if
(
keyup
)
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
}
else
{
...
...
@@ -118,7 +118,7 @@ static void ir_enltv_handle_key(struct bttv *btv)
if
(
keyup
)
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
else
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
}
ir
->
last_gpio
=
data
|
keyup
;
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/cx231xx/cx231xx-input.c
浏览文件 @
8573b74a
...
...
@@ -126,8 +126,7 @@ static void cx231xx_ir_handle_key(struct cx231xx_IR *ir)
if
(
do_sendkey
)
{
dprintk
(
"sending keypress
\n
"
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
poll_result
.
rc_data
[
0
],
poll_result
.
rc_data
[
0
]);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
poll_result
.
rc_data
[
0
]);
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/cx23885/cx23885-input.c
浏览文件 @
8573b74a
...
...
@@ -94,8 +94,7 @@ static void cx23885_input_process_raw_rc5(struct cx23885_dev *dev)
RC5_START
(
ir_input
->
last_rc5
)
==
0
)
{
/* This keypress is differnet: not an auto repeat */
ir_input_nokey
(
ir_input
->
dev
,
&
ir_input
->
ir
);
ir_input_keydown
(
ir_input
->
dev
,
&
ir_input
->
ir
,
command
,
ir_input
->
code
);
ir_input_keydown
(
ir_input
->
dev
,
&
ir_input
->
ir
,
command
);
}
ir_input
->
last_rc5
=
rc5
;
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/cx88/cx88-input.c
浏览文件 @
8573b74a
...
...
@@ -118,13 +118,13 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
data
=
(
data
<<
4
)
|
((
gpio_key
&
0xf0
)
>>
4
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
);
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
else
if
(
ir
->
mask_keydown
)
{
/* bit set on keydown */
if
(
gpio
&
ir
->
mask_keydown
)
{
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
);
}
else
{
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
...
...
@@ -132,14 +132,14 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
}
else
if
(
ir
->
mask_keyup
)
{
/* bit cleared on keydown */
if
(
0
==
(
gpio
&
ir
->
mask_keyup
))
{
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
);
}
else
{
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
}
else
{
/* can't distinguish keydown/up :-/ */
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
data
);
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
}
...
...
@@ -487,7 +487,7 @@ void cx88_ir_irq(struct cx88_core *core)
ir_dprintk
(
"Key Code: %x
\n
"
,
(
ircode
>>
16
)
&
0x7f
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
(
ircode
>>
16
)
&
0x7f
,
(
ircode
>>
16
)
&
0xff
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
(
ircode
>>
16
)
&
0x7f
);
ir
->
release
=
jiffies
+
msecs_to_jiffies
(
120
);
break
;
case
CX88_BOARD_HAUPPAUGE
:
...
...
@@ -524,7 +524,7 @@ void cx88_ir_irq(struct cx88_core *core)
if
(
dev
!=
0x1e
&&
dev
!=
0x1f
)
/* not a hauppauge remote */
break
;
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
code
,
ircode
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
code
);
ir
->
release
=
jiffies
+
msecs_to_jiffies
(
120
);
break
;
case
CX88_BOARD_PINNACLE_PCTV_HD_800i
:
...
...
@@ -532,7 +532,7 @@ void cx88_ir_irq(struct cx88_core *core)
ir_dprintk
(
"biphase decoded: %x
\n
"
,
ircode
);
if
((
ircode
&
0xfffff000
)
!=
0x3000
)
break
;
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
ircode
&
0x3f
,
ircode
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
ircode
&
0x3f
);
ir
->
release
=
jiffies
+
msecs_to_jiffies
(
120
);
break
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/em28xx/em28xx-input.c
浏览文件 @
8573b74a
...
...
@@ -282,8 +282,7 @@ static void em28xx_ir_handle_key(struct em28xx_IR *ir)
if
(
do_sendkey
)
{
dprintk
(
"sending keypress
\n
"
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
poll_result
.
rc_data
[
0
],
poll_result
.
rc_data
[
0
]);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
poll_result
.
rc_data
[
0
]);
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/ir-kbd-i2c.c
浏览文件 @
8573b74a
...
...
@@ -275,7 +275,7 @@ static void ir_key_poll(struct IR_i2c *ir)
if
(
0
==
rc
)
{
ir_input_nokey
(
ir
->
input
,
&
ir
->
ir
);
}
else
{
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
ir_key
,
ir_raw
);
ir_input_keydown
(
ir
->
input
,
&
ir
->
ir
,
ir_key
);
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/saa7134/saa7134-input.c
浏览文件 @
8573b74a
...
...
@@ -102,14 +102,14 @@ static int build_key(struct saa7134_dev *dev)
if
(
data
==
ir
->
mask_keycode
)
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
else
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
return
0
;
}
if
(
ir
->
polling
)
{
if
((
ir
->
mask_keydown
&&
(
0
!=
(
gpio
&
ir
->
mask_keydown
)))
||
(
ir
->
mask_keyup
&&
(
0
==
(
gpio
&
ir
->
mask_keyup
))))
{
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
}
else
{
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
}
...
...
@@ -117,7 +117,7 @@ static int build_key(struct saa7134_dev *dev)
else
{
/* IRQ driven mode - handle key press and release in one go */
if
((
ir
->
mask_keydown
&&
(
0
!=
(
gpio
&
ir
->
mask_keydown
)))
||
(
ir
->
mask_keyup
&&
(
0
==
(
gpio
&
ir
->
mask_keyup
))))
{
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
,
data
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
data
);
ir_input_nokey
(
ir
->
dev
,
&
ir
->
ir
);
}
}
...
...
@@ -938,7 +938,7 @@ static void nec_task(unsigned long data)
dprintk
(
"scancode = 0x%02x (code = 0x%02x, notcode= 0x%02x)
\n
"
,
ir
->
code
,
ircode
,
not_code
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
ir
->
code
,
ir
->
code
);
ir_input_keydown
(
ir
->
dev
,
&
ir
->
ir
,
ir
->
code
);
}
else
dprintk
(
"Repeat last key
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
include/media/ir-common.h
浏览文件 @
8573b74a
...
...
@@ -62,8 +62,7 @@ struct ir_input_state {
IR_KEYTAB_TYPE
ir_codes
[
IR_KEYTAB_SIZE
];
/* key info */
u32
ir_raw
;
/* raw data */
u32
ir_key
;
/* ir key code */
u32
ir_key
;
/* ir scancode */
u32
keycode
;
/* linux key code */
int
keypressed
;
/* current state */
};
...
...
@@ -112,7 +111,7 @@ void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
int
ir_type
,
struct
ir_scancode_table
*
ir_codes
);
void
ir_input_nokey
(
struct
input_dev
*
dev
,
struct
ir_input_state
*
ir
);
void
ir_input_keydown
(
struct
input_dev
*
dev
,
struct
ir_input_state
*
ir
,
u32
ir_key
,
u32
ir_raw
);
u32
ir_key
);
u32
ir_extract_bits
(
u32
data
,
u32
mask
);
int
ir_dump_samples
(
u32
*
samples
,
int
count
);
int
ir_decode_biphase
(
u32
*
samples
,
int
count
,
int
low
,
int
high
);
...
...
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部