Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
386b3849
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看板
提交
386b3849
编写于
9月 09, 2009
作者:
D
Dmitry Torokhov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Input: i8042 - use boolean type where it makes sense
Signed-off-by:
N
Dmitry Torokhov
<
dtor@mail.ru
>
上级
5ddbc77c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
71 addition
and
70 deletion
+71
-70
drivers/input/serio/i8042-x86ia64io.h
drivers/input/serio/i8042-x86ia64io.h
+19
-19
drivers/input/serio/i8042.c
drivers/input/serio/i8042.c
+52
-51
未找到文件。
drivers/input/serio/i8042-x86ia64io.h
浏览文件 @
386b3849
...
...
@@ -550,9 +550,9 @@ static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = {
#ifdef CONFIG_PNP
#include <linux/pnp.h>
static
int
i8042_pnp_kbd_registered
;
static
bool
i8042_pnp_kbd_registered
;
static
unsigned
int
i8042_pnp_kbd_devices
;
static
int
i8042_pnp_aux_registered
;
static
bool
i8042_pnp_aux_registered
;
static
unsigned
int
i8042_pnp_aux_devices
;
static
int
i8042_pnp_command_reg
;
...
...
@@ -640,12 +640,12 @@ static struct pnp_driver i8042_pnp_aux_driver = {
static
void
i8042_pnp_exit
(
void
)
{
if
(
i8042_pnp_kbd_registered
)
{
i8042_pnp_kbd_registered
=
0
;
i8042_pnp_kbd_registered
=
false
;
pnp_unregister_driver
(
&
i8042_pnp_kbd_driver
);
}
if
(
i8042_pnp_aux_registered
)
{
i8042_pnp_aux_registered
=
0
;
i8042_pnp_aux_registered
=
false
;
pnp_unregister_driver
(
&
i8042_pnp_aux_driver
);
}
}
...
...
@@ -653,12 +653,12 @@ static void i8042_pnp_exit(void)
static
int
__init
i8042_pnp_init
(
void
)
{
char
kbd_irq_str
[
4
]
=
{
0
},
aux_irq_str
[
4
]
=
{
0
};
int
pnp_data_busted
=
0
;
int
pnp_data_busted
=
false
;
int
err
;
#ifdef CONFIG_X86
if
(
dmi_check_system
(
i8042_dmi_nopnp_table
))
i8042_nopnp
=
1
;
i8042_nopnp
=
true
;
#endif
if
(
i8042_nopnp
)
{
...
...
@@ -668,11 +668,11 @@ static int __init i8042_pnp_init(void)
err
=
pnp_register_driver
(
&
i8042_pnp_kbd_driver
);
if
(
!
err
)
i8042_pnp_kbd_registered
=
1
;
i8042_pnp_kbd_registered
=
true
;
err
=
pnp_register_driver
(
&
i8042_pnp_aux_driver
);
if
(
!
err
)
i8042_pnp_aux_registered
=
1
;
i8042_pnp_aux_registered
=
true
;
if
(
!
i8042_pnp_kbd_devices
&&
!
i8042_pnp_aux_devices
)
{
i8042_pnp_exit
();
...
...
@@ -700,9 +700,9 @@ static int __init i8042_pnp_init(void)
#if defined(__ia64__)
if
(
!
i8042_pnp_kbd_devices
)
i8042_nokbd
=
1
;
i8042_nokbd
=
true
;
if
(
!
i8042_pnp_aux_devices
)
i8042_noaux
=
1
;
i8042_noaux
=
true
;
#endif
if
(((
i8042_pnp_data_reg
&
~
0xf
)
==
(
i8042_data_reg
&
~
0xf
)
&&
...
...
@@ -713,7 +713,7 @@ static int __init i8042_pnp_init(void)
"using default %#x
\n
"
,
i8042_pnp_data_reg
,
i8042_data_reg
);
i8042_pnp_data_reg
=
i8042_data_reg
;
pnp_data_busted
=
1
;
pnp_data_busted
=
true
;
}
if
(((
i8042_pnp_command_reg
&
~
0xf
)
==
(
i8042_command_reg
&
~
0xf
)
&&
...
...
@@ -724,7 +724,7 @@ static int __init i8042_pnp_init(void)
"using default %#x
\n
"
,
i8042_pnp_command_reg
,
i8042_command_reg
);
i8042_pnp_command_reg
=
i8042_command_reg
;
pnp_data_busted
=
1
;
pnp_data_busted
=
true
;
}
if
(
!
i8042_nokbd
&&
!
i8042_pnp_kbd_irq
)
{
...
...
@@ -732,7 +732,7 @@ static int __init i8042_pnp_init(void)
"PNP: PS/2 controller doesn't have KBD irq; "
"using default %d
\n
"
,
i8042_kbd_irq
);
i8042_pnp_kbd_irq
=
i8042_kbd_irq
;
pnp_data_busted
=
1
;
pnp_data_busted
=
true
;
}
if
(
!
i8042_noaux
&&
!
i8042_pnp_aux_irq
)
{
...
...
@@ -741,7 +741,7 @@ static int __init i8042_pnp_init(void)
"PNP: PS/2 appears to have AUX port disabled, "
"if this is incorrect please boot with "
"i8042.nopnp
\n
"
);
i8042_noaux
=
1
;
i8042_noaux
=
true
;
}
else
{
printk
(
KERN_WARNING
"PNP: PS/2 controller doesn't have AUX irq; "
...
...
@@ -788,21 +788,21 @@ static int __init i8042_platform_init(void)
return
retval
;
#if defined(__ia64__)
i8042_reset
=
1
;
i8042_reset
=
true
;
#endif
#ifdef CONFIG_X86
if
(
dmi_check_system
(
i8042_dmi_reset_table
))
i8042_reset
=
1
;
i8042_reset
=
true
;
if
(
dmi_check_system
(
i8042_dmi_noloop_table
))
i8042_noloop
=
1
;
i8042_noloop
=
true
;
if
(
dmi_check_system
(
i8042_dmi_nomux_table
))
i8042_nomux
=
1
;
i8042_nomux
=
true
;
if
(
dmi_check_system
(
i8042_dmi_dritek_table
))
i8042_dritek
=
1
;
i8042_dritek
=
true
;
#endif
/* CONFIG_X86 */
return
retval
;
...
...
drivers/input/serio/i8042.c
浏览文件 @
386b3849
...
...
@@ -28,35 +28,35 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
MODULE_DESCRIPTION
(
"i8042 keyboard and mouse controller driver"
);
MODULE_LICENSE
(
"GPL"
);
static
unsigned
int
i8042_nokbd
;
static
bool
i8042_nokbd
;
module_param_named
(
nokbd
,
i8042_nokbd
,
bool
,
0
);
MODULE_PARM_DESC
(
nokbd
,
"Do not probe or use KBD port."
);
static
unsigned
int
i8042_noaux
;
static
bool
i8042_noaux
;
module_param_named
(
noaux
,
i8042_noaux
,
bool
,
0
);
MODULE_PARM_DESC
(
noaux
,
"Do not probe or use AUX (mouse) port."
);
static
unsigned
int
i8042_nomux
;
static
bool
i8042_nomux
;
module_param_named
(
nomux
,
i8042_nomux
,
bool
,
0
);
MODULE_PARM_DESC
(
nomux
,
"Do not check whether an active multiplexing conrtoller is present."
);
static
unsigned
int
i8042_unlock
;
static
bool
i8042_unlock
;
module_param_named
(
unlock
,
i8042_unlock
,
bool
,
0
);
MODULE_PARM_DESC
(
unlock
,
"Ignore keyboard lock."
);
static
unsigned
int
i8042_reset
;
static
bool
i8042_reset
;
module_param_named
(
reset
,
i8042_reset
,
bool
,
0
);
MODULE_PARM_DESC
(
reset
,
"Reset controller during init and cleanup."
);
static
unsigned
int
i8042_direct
;
static
bool
i8042_direct
;
module_param_named
(
direct
,
i8042_direct
,
bool
,
0
);
MODULE_PARM_DESC
(
direct
,
"Put keyboard port into non-translated mode."
);
static
unsigned
int
i8042_dumbkbd
;
static
bool
i8042_dumbkbd
;
module_param_named
(
dumbkbd
,
i8042_dumbkbd
,
bool
,
0
);
MODULE_PARM_DESC
(
dumbkbd
,
"Pretend that controller can only read data from keyboard"
);
static
unsigned
int
i8042_noloop
;
static
bool
i8042_noloop
;
module_param_named
(
noloop
,
i8042_noloop
,
bool
,
0
);
MODULE_PARM_DESC
(
noloop
,
"Disable the AUX Loopback command while probing for the AUX port"
);
...
...
@@ -65,20 +65,20 @@ module_param_named(panicblink, i8042_blink_frequency, uint, 0600);
MODULE_PARM_DESC
(
panicblink
,
"Frequency with which keyboard LEDs should blink when kernel panics"
);
#ifdef CONFIG_X86
static
unsigned
int
i8042_dritek
;
static
bool
i8042_dritek
;
module_param_named
(
dritek
,
i8042_dritek
,
bool
,
0
);
MODULE_PARM_DESC
(
dritek
,
"Force enable the Dritek keyboard extension"
);
#endif
#ifdef CONFIG_PNP
static
int
i8042_nopnp
;
static
bool
i8042_nopnp
;
module_param_named
(
nopnp
,
i8042_nopnp
,
bool
,
0
);
MODULE_PARM_DESC
(
nopnp
,
"Do not use PNP to detect controller settings"
);
#endif
#define DEBUG
#ifdef DEBUG
static
int
i8042_debug
;
static
bool
i8042_debug
;
module_param_named
(
debug
,
i8042_debug
,
bool
,
0600
);
MODULE_PARM_DESC
(
debug
,
"Turn i8042 debugging mode on and off"
);
#endif
...
...
@@ -92,7 +92,7 @@ static DEFINE_SPINLOCK(i8042_lock);
struct
i8042_port
{
struct
serio
*
serio
;
int
irq
;
unsigned
char
exists
;
bool
exists
;
signed
char
mux
;
};
...
...
@@ -105,9 +105,9 @@ static struct i8042_port i8042_ports[I8042_NUM_PORTS];
static
unsigned
char
i8042_initial_ctr
;
static
unsigned
char
i8042_ctr
;
static
unsigned
char
i8042_mux_present
;
static
unsigned
char
i8042_kbd_irq_registered
;
static
unsigned
char
i8042_aux_irq_registered
;
static
bool
i8042_mux_present
;
static
bool
i8042_kbd_irq_registered
;
static
bool
i8042_aux_irq_registered
;
static
unsigned
char
i8042_suppress_kbd_ack
;
static
struct
platform_device
*
i8042_platform_device
;
...
...
@@ -316,7 +316,7 @@ static int i8042_start(struct serio *serio)
{
struct
i8042_port
*
port
=
serio
->
port_data
;
port
->
exists
=
1
;
port
->
exists
=
true
;
mb
();
return
0
;
}
...
...
@@ -330,7 +330,7 @@ static void i8042_stop(struct serio *serio)
{
struct
i8042_port
*
port
=
serio
->
port_data
;
port
->
exists
=
0
;
port
->
exists
=
false
;
/*
* We synchronize with both AUX and KBD IRQs because there is
...
...
@@ -492,14 +492,15 @@ static int i8042_enable_mux_ports(void)
}
/*
* i8042_set_mux_mode checks whether the controller has an active
* multiplexor and puts the chip into Multiplexed (1) or Legacy (0) mode.
* i8042_set_mux_mode checks whether the controller has an
* active multiplexor and puts the chip into Multiplexed (true)
* or Legacy (false) mode.
*/
static
int
i8042_set_mux_mode
(
unsigned
int
mode
,
unsigned
char
*
mux_version
)
static
int
i8042_set_mux_mode
(
bool
multiplex
,
unsigned
char
*
mux_version
)
{
unsigned
char
param
;
unsigned
char
param
,
val
;
/*
* Get rid of bytes in the queue.
*/
...
...
@@ -511,14 +512,21 @@ static int i8042_set_mux_mode(unsigned int mode, unsigned char *mux_version)
* mouse interface, the last should be version.
*/
param
=
0xf0
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
!=
0xf0
)
param
=
val
=
0xf0
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
!=
val
)
return
-
1
;
param
=
val
=
multiplex
?
0x56
:
0xf6
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
!=
val
)
return
-
1
;
param
=
mode
?
0x56
:
0xf6
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
!=
(
mode
?
0x56
:
0xf6
)
)
param
=
val
=
multiplex
?
0xa4
:
0xa5
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
==
val
)
return
-
1
;
param
=
mode
?
0xa4
:
0xa5
;
if
(
i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
)
||
param
==
(
mode
?
0xa4
:
0xa5
))
/*
* Workaround for interference with USB Legacy emulation
* that causes a v10.12 MUX to be found.
*/
if
(
param
==
0xac
)
return
-
1
;
if
(
mux_version
)
...
...
@@ -537,14 +545,7 @@ static int __devinit i8042_check_mux(void)
{
unsigned
char
mux_version
;
if
(
i8042_set_mux_mode
(
1
,
&
mux_version
))
return
-
1
;
/*
* Workaround for interference with USB Legacy emulation
* that causes a v10.12 MUX to be found.
*/
if
(
mux_version
==
0xAC
)
if
(
i8042_set_mux_mode
(
true
,
&
mux_version
))
return
-
1
;
printk
(
KERN_INFO
"i8042.c: Detected active multiplexing controller, rev %d.%d.
\n
"
,
...
...
@@ -561,7 +562,7 @@ static int __devinit i8042_check_mux(void)
return
-
EIO
;
}
i8042_mux_present
=
1
;
i8042_mux_present
=
true
;
return
0
;
}
...
...
@@ -570,7 +571,7 @@ static int __devinit i8042_check_mux(void)
* The following is used to test AUX IRQ delivery.
*/
static
struct
completion
i8042_aux_irq_delivered
__devinitdata
;
static
int
i8042_irq_being_tested
__devinitdata
;
static
bool
i8042_irq_being_tested
__devinitdata
;
static
irqreturn_t
__devinit
i8042_aux_test_irq
(
int
irq
,
void
*
dev_id
)
{
...
...
@@ -597,7 +598,7 @@ static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id)
* verifies success by readinng CTR. Used when testing for presence of AUX
* port.
*/
static
int
__devinit
i8042_toggle_aux
(
int
on
)
static
int
__devinit
i8042_toggle_aux
(
bool
on
)
{
unsigned
char
param
;
int
i
;
...
...
@@ -628,8 +629,8 @@ static int __devinit i8042_toggle_aux(int on)
static
int
__devinit
i8042_check_aux
(
void
)
{
int
retval
=
-
1
;
int
irq_registered
=
0
;
int
aux_loop_broken
=
0
;
bool
irq_registered
=
false
;
bool
aux_loop_broken
=
false
;
unsigned
long
flags
;
unsigned
char
param
;
...
...
@@ -666,19 +667,19 @@ static int __devinit i8042_check_aux(void)
* mark it as broken
*/
if
(
!
retval
)
aux_loop_broken
=
1
;
aux_loop_broken
=
true
;
}
/*
* Bit assignment test - filters out PS/2 i8042's in AT mode
*/
if
(
i8042_toggle_aux
(
0
))
{
if
(
i8042_toggle_aux
(
false
))
{
printk
(
KERN_WARNING
"Failed to disable AUX port, but continuing anyway... Is this a SiS?
\n
"
);
printk
(
KERN_WARNING
"If AUX port is really absent please use the 'i8042.noaux' option.
\n
"
);
}
if
(
i8042_toggle_aux
(
1
))
if
(
i8042_toggle_aux
(
true
))
return
-
1
;
/*
...
...
@@ -699,7 +700,7 @@ static int __devinit i8042_check_aux(void)
"i8042"
,
i8042_platform_device
))
goto
out
;
irq_registered
=
1
;
irq_registered
=
true
;
if
(
i8042_enable_aux_port
())
goto
out
;
...
...
@@ -707,7 +708,7 @@ static int __devinit i8042_check_aux(void)
spin_lock_irqsave
(
&
i8042_lock
,
flags
);
init_completion
(
&
i8042_aux_irq_delivered
);
i8042_irq_being_tested
=
1
;
i8042_irq_being_tested
=
true
;
param
=
0xa5
;
retval
=
__i8042_command
(
&
param
,
I8042_CMD_AUX_LOOP
&
0xf0ff
);
...
...
@@ -844,7 +845,7 @@ static int i8042_controller_init(void)
*/
if
(
~
i8042_ctr
&
I8042_CTR_XLATE
)
i8042_direct
=
1
;
i8042_direct
=
true
;
/*
* Set nontranslated mode for the kbd interface if requested by an option.
...
...
@@ -892,7 +893,7 @@ static void i8042_controller_reset(void)
*/
if
(
i8042_mux_present
)
i8042_set_mux_mode
(
0
,
NULL
);
i8042_set_mux_mode
(
false
,
NULL
);
/*
* Reset the controller if requested.
...
...
@@ -1025,7 +1026,7 @@ static int i8042_pm_restore(struct device *dev)
#endif
if
(
i8042_mux_present
)
{
if
(
i8042_set_mux_mode
(
1
,
NULL
)
||
i8042_enable_mux_ports
())
if
(
i8042_set_mux_mode
(
true
,
NULL
)
||
i8042_enable_mux_ports
())
printk
(
KERN_WARNING
"i8042: failed to resume active multiplexor, "
"mouse won't work.
\n
"
);
...
...
@@ -1167,7 +1168,7 @@ static void i8042_free_irqs(void)
if
(
i8042_kbd_irq_registered
)
free_irq
(
I8042_KBD_IRQ
,
i8042_platform_device
);
i8042_aux_irq_registered
=
i8042_kbd_irq_registered
=
0
;
i8042_aux_irq_registered
=
i8042_kbd_irq_registered
=
false
;
}
static
int
__devinit
i8042_setup_aux
(
void
)
...
...
@@ -1201,7 +1202,7 @@ static int __devinit i8042_setup_aux(void)
if
(
aux_enable
())
goto
err_free_irq
;
i8042_aux_irq_registered
=
1
;
i8042_aux_irq_registered
=
true
;
return
0
;
err_free_irq:
...
...
@@ -1228,7 +1229,7 @@ static int __devinit i8042_setup_kbd(void)
if
(
error
)
goto
err_free_irq
;
i8042_kbd_irq_registered
=
1
;
i8042_kbd_irq_registered
=
true
;
return
0
;
err_free_irq:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录