Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
44b2d32a
Commit
44b2d32a
authored
Sep 12, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-input.bkbits.net/linux-input
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
9d8fc1ab
09261189
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
58 additions
and
76 deletions
+58
-76
Documentation/input/ff.txt
Documentation/input/ff.txt
+5
-3
drivers/char/Makefile
drivers/char/Makefile
+1
-1
drivers/char/keyboard.c
drivers/char/keyboard.c
+1
-0
drivers/char/tty_io.c
drivers/char/tty_io.c
+2
-0
drivers/input/input.c
drivers/input/input.c
+1
-1
drivers/input/misc/pcspkr.c
drivers/input/misc/pcspkr.c
+2
-2
drivers/input/serio/i8042-io.h
drivers/input/serio/i8042-io.h
+2
-2
drivers/input/serio/q40kbd.c
drivers/input/serio/q40kbd.c
+21
-10
drivers/input/serio/serport.c
drivers/input/serio/serport.c
+23
-54
drivers/usb/input/hid-lgff.c
drivers/usb/input/hid-lgff.c
+0
-3
No files found.
Documentation/input/ff.txt
View file @
44b2d32a
Force feedback for Linux.
By Johann Deneux <deneux@ifrance.com> on 2001/04/22.
You
can redistribute this file, provided you
include shape.fig and
interactive.fig.
You
may redistribute this file. Please remember to
include shape.fig and
interactive.fig
as well
.
----------------------------------------------------------------------------
0. Introduction
...
...
@@ -90,12 +90,14 @@ following bits:
- FF_Y has an Y axis (usually joysticks)
- FF_WHEEL has a wheel (usually sterring wheels)
- FF_CONSTANT can render constant force effects
- FF_PERIODIC can render periodic effects (sine, ramp, square...)
- FF_PERIODIC can render periodic effects (sine, triangle, square...)
- FF_RAMP can render ramp effects
- FF_SPRING can simulate the presence of a spring
- FF_FRICTION can simulate friction
- FF_DAMPER can simulate damper effects
- FF_RUMBLE rumble effects (normally the only effect supported by rumble
pads)
- FF_INERTIA can simulate inertia
int ioctl(int fd, EVIOCGEFFECTS, int *n);
...
...
drivers/char/Makefile
View file @
44b2d32a
...
...
@@ -13,7 +13,7 @@ obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o pty.o misc.o random.o
# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
export-objs
:=
busmouse.o console.o generic_serial.o ip2main.o
\
ite_gpio.o misc.o nvram.o random.o rtc.o
\
ite_gpio.o
keyboard.o
misc.o nvram.o random.o rtc.o
\
selection.o sonypi.o sysrq.o tty_io.o tty_ioctl.o
obj-$(CONFIG_VT)
+=
vt.o vc_screen.o consolemap.o consolemap_deftbl.o selection.o keyboard.o
...
...
drivers/char/keyboard.c
View file @
44b2d32a
...
...
@@ -66,6 +66,7 @@ extern void ctrl_alt_del(void);
#endif
struct
pt_regs
*
kbd_pt_regs
;
EXPORT_SYMBOL
(
kbd_pt_regs
);
void
compute_shiftstate
(
void
);
/*
...
...
drivers/char/tty_io.c
View file @
44b2d32a
...
...
@@ -204,6 +204,8 @@ char *tty_name(struct tty_struct *tty, char *buf)
return
_tty_make_name
(
tty
,
(
tty
)
?
tty
->
driver
.
name
:
NULL
,
buf
);
}
EXPORT_SYMBOL
(
tty_name
);
inline
int
tty_paranoia_check
(
struct
tty_struct
*
tty
,
kdev_t
device
,
const
char
*
routine
)
{
...
...
drivers/input/input.c
View file @
44b2d32a
...
...
@@ -605,7 +605,7 @@ static int input_devices_read(char *buf, char **start, off_t pos, int count, int
len
+=
sprintf
(
buf
+
len
,
"N: Name=
\"
%s
\"\n
"
,
dev
->
name
?
dev
->
name
:
""
);
len
+=
sprintf
(
buf
+
len
,
"P: Phys=%s
\n
"
,
dev
->
phys
?
dev
->
phys
:
""
);
len
+=
sprintf
(
buf
+
len
,
"
D: Driv
ers="
);
len
+=
sprintf
(
buf
+
len
,
"
H: Handl
ers="
);
list_for_each
(
hnode
,
&
dev
->
h_list
)
{
struct
input_handle
*
handle
=
to_handle
(
hnode
);
...
...
drivers/input/misc/pcspkr.c
View file @
44b2d32a
...
...
@@ -22,8 +22,8 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
MODULE_DESCRIPTION
(
"PC Speaker beeper driver"
);
MODULE_LICENSE
(
"GPL"
);
static
char
*
pcspkr_name
=
"PC Speaker"
;
static
char
*
pcspkr_phys
=
"isa0061/input0"
;
static
char
pcspkr_name
[]
=
"PC Speaker"
;
static
char
pcspkr_phys
[]
=
"isa0061/input0"
;
static
struct
input_dev
pcspkr_dev
;
spinlock_t
i8253_beep_lock
=
SPIN_LOCK_UNLOCKED
;
...
...
drivers/input/serio/i8042-io.h
View file @
44b2d32a
...
...
@@ -62,7 +62,7 @@ static inline int i8042_platform_init(void)
* On ix86 platforms touching the i8042 data register region can do really
* bad things. Because of this the region is always reserved on ix86 boxes.
*/
#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__)
#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__)
&& !defined(__x86_64__)
if
(
!
request_region
(
I8042_DATA_REG
,
16
,
"i8042"
))
return
0
;
#endif
...
...
@@ -71,7 +71,7 @@ static inline int i8042_platform_init(void)
static
inline
void
i8042_platform_exit
(
void
)
{
#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__)
#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__)
&& !defined(__x86_64__)
release_region
(
I8042_DATA_REG
,
16
);
#endif
}
...
...
drivers/input/serio/q40kbd.c
View file @
44b2d32a
...
...
@@ -47,12 +47,24 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
MODULE_DESCRIPTION
(
"Q40 PS/2 keyboard controller driver"
);
MODULE_LICENSE
(
"GPL"
);
static
int
q40kbd_open
(
struct
serio
*
port
)
{
return
0
;
}
static
void
q40kbd_close
(
struct
serio
*
port
)
{
return
0
;
}
static
struct
serio
q40kbd_port
=
{
.
type
=
SERIO_8042
,
.
name
=
"Q40 kbd port"
,
.
phys
=
"Q40"
,
.
write
=
NULL
,
.
name
=
"Q40 PS/2 kbd port"
,
.
phys
=
"isa0060/serio0"
,
.
open
=
q40kbd_open
,
.
close
=
q40kbd_close
,
};
static
void
q40kbd_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
...
...
@@ -70,13 +82,10 @@ void __init q40kbd_init(void)
{
int
maxread
=
100
;
/* Get the keyboard controller registers (incomplete decode) */
request_region
(
0x60
,
16
,
"q40kbd"
);
/* allocate the IRQ */
request_irq
(
Q40_IRQ_KEYBOARD
,
q40kbd_interrupt
,
0
,
"q40kbd"
,
NULL
);
/* flush any pending input
.
*/
/* flush any pending input */
while
(
maxread
--
&&
(
IRQ_KEYB_MASK
&
master_inb
(
INTERRUPT_REG
)))
master_inb
(
KEYCODE_REG
);
...
...
@@ -84,15 +93,17 @@ void __init q40kbd_init(void)
master_outb
(
-
1
,
KEYBOARD_UNLOCK_REG
);
master_outb
(
1
,
KEY_IRQ_ENABLE_REG
);
register_serio
_port
(
&
q40kbd_port
);
printk
(
KERN_INFO
"serio: Q40
PS/2 kbd port irq %d
\n
"
,
Q40_IRQ_KEYBOARD
);
serio_register
_port
(
&
q40kbd_port
);
printk
(
KERN_INFO
"serio: Q40
kbd registered
\n
"
);
}
void
__exit
q40kbd_exit
(
void
)
{
unregister_serio_port
(
&
q40kbd_port
);
master_outb
(
0
,
KEY_IRQ_ENABLE_REG
);
master_outb
(
-
1
,
KEYBOARD_UNLOCK_REG
);
serio_unregister_port
(
&
q40kbd_port
);
free_irq
(
Q40_IRQ_KEYBOARD
,
NULL
);
release_region
(
0x60
,
16
);
}
module_init
(
q40kbd_init
);
...
...
drivers/input/serio/serport.c
View file @
44b2d32a
/*
* $Id: serport_old.c,v 1.10 2002/01/24 19:52:57 vojtech Exp $
* Input device TTY line discipline
*
* Copyright (c) 1999-2002 Vojtech Pavlik
*
* Copyright (c) 1999-2001 Vojtech Pavlik
*/
/*
* This is a module that converts a tty line into a much simpler
* 'serial io port' abstraction that the input device drivers use.
*/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Should you need to contact me, the author, you can do so either by
* e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
* Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation.
*/
#include <asm/uaccess.h>
...
...
@@ -41,10 +25,13 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
MODULE_DESCRIPTION
(
"Input device TTY line discipline"
);
MODULE_LICENSE
(
"GPL"
);
#define SERPORT_BUSY 1
struct
serport
{
struct
tty_struct
*
tty
;
wait_queue_head_t
wait
;
struct
serio
serio
;
unsigned
long
flags
;
char
phys
[
32
];
};
...
...
@@ -68,20 +55,20 @@ static int serport_serio_open(struct serio *serio)
static
void
serport_serio_close
(
struct
serio
*
serio
)
{
struct
serport
*
serport
=
serio
->
driver
;
serport
->
serio
.
type
=
0
;
wake_up_interruptible
(
&
serport
->
wait
);
}
/*
* serport_ldisc_open() is the routine that is called upon setting our line
* discipline on a tty. It looks for the Mag, and if found, registers
* it as a joystick device.
* discipline on a tty. It prepares the serio struct.
*/
static
int
serport_ldisc_open
(
struct
tty_struct
*
tty
)
{
struct
serport
*
serport
;
char
ttyname
[
64
];
int
i
;
char
name
[
64
];
MOD_INC_USE_COUNT
;
...
...
@@ -96,11 +83,7 @@ static int serport_ldisc_open(struct tty_struct *tty)
serport
->
tty
=
tty
;
tty
->
disc_data
=
serport
;
strcpy
(
ttyname
,
tty
->
driver
.
name
);
for
(
i
=
0
;
ttyname
[
i
]
!=
0
&&
ttyname
[
i
]
!=
'/'
;
i
++
);
ttyname
[
i
]
=
0
;
sprintf
(
serport
->
phys
,
"%s%d/serio0"
,
ttyname
,
minor
(
tty
->
device
)
-
tty
->
driver
.
minor_start
);
snprintf
(
serport
->
phys
,
sizeof
(
serport
->
phys
),
"%s/serio0"
,
tty_name
(
tty
,
name
));
serport
->
serio
.
name
=
serport_name
;
serport
->
serio
.
phys
=
serport
->
phys
;
...
...
@@ -161,29 +144,18 @@ static int serport_ldisc_room(struct tty_struct *tty)
static
ssize_t
serport_ldisc_read
(
struct
tty_struct
*
tty
,
struct
file
*
file
,
unsigned
char
*
buf
,
size_t
nr
)
{
struct
serport
*
serport
=
(
struct
serport
*
)
tty
->
disc_data
;
DECLARE_WAITQUEUE
(
wait
,
current
);
char
name
[
32
];
char
name
[
64
];
#ifdef CONFIG_DEVFS_FS
sprintf
(
name
,
tty
->
driver
.
name
,
minor
(
tty
->
device
)
-
tty
->
driver
.
minor_start
);
#else
sprintf
(
name
,
"%s%d"
,
tty
->
driver
.
name
,
minor
(
tty
->
device
)
-
tty
->
driver
.
minor_start
);
#endif
if
(
test_and_set_bit
(
SERPORT_BUSY
,
&
serport
->
flags
))
return
-
EBUSY
;
serio_register_port
(
&
serport
->
serio
);
printk
(
KERN_INFO
"serio: Serial port %s
\n
"
,
name
);
add_wait_queue
(
&
serport
->
wait
,
&
wait
);
set_current_state
(
TASK_INTERRUPTIBLE
);
while
(
serport
->
serio
.
type
&&
!
signal_pending
(
current
))
schedule
();
set_current_state
(
TASK_RUNNING
);
remove_wait_queue
(
&
serport
->
wait
,
&
wait
);
printk
(
KERN_INFO
"serio: Serial port %s
\n
"
,
tty_name
(
tty
,
name
));
wait_event_interruptible
(
serport
->
wait
,
!
serport
->
serio
.
type
);
serio_unregister_port
(
&
serport
->
serio
);
clear_bit
(
SERPORT_BUSY
,
&
serport
->
flags
);
return
0
;
}
...
...
@@ -195,10 +167,8 @@ static int serport_ldisc_ioctl(struct tty_struct * tty, struct file * file, unsi
{
struct
serport
*
serport
=
(
struct
serport
*
)
tty
->
disc_data
;
switch
(
cmd
)
{
case
SPIOCSTYPE
:
return
get_user
(
serport
->
serio
.
type
,
(
unsigned
long
*
)
arg
);
}
if
(
cmd
==
SPIOCSTYPE
)
return
get_user
(
serport
->
serio
.
type
,
(
unsigned
long
*
)
arg
);
return
-
EINVAL
;
}
...
...
@@ -208,7 +178,6 @@ static void serport_ldisc_write_wakeup(struct tty_struct * tty)
struct
serport
*
sp
=
(
struct
serport
*
)
tty
->
disc_data
;
serio_dev_write_wakeup
(
&
sp
->
serio
);
}
/*
...
...
drivers/usb/input/hid-lgff.c
View file @
44b2d32a
...
...
@@ -45,9 +45,6 @@
#define RUN_AT(t) (jiffies + (t))
/* Transmition state */
#define XMIT_RUNNING 0
/* Effect status */
#define EFFECT_STARTED 0
/* Effect is going to play after some time
(ff_replay.delay) */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment