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
Kirill Smelkov
linux
Commits
8ca3b9de
Commit
8ca3b9de
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.3.99pre3-1
parent
aa0faa45
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
1057 additions
and
948 deletions
+1057
-948
CREDITS
CREDITS
+13
-3
Documentation/isapnp.txt
Documentation/isapnp.txt
+42
-11
Documentation/video4linux/bttv/README
Documentation/video4linux/bttv/README
+7
-0
Makefile
Makefile
+2
-3
drivers/char/bttv.c
drivers/char/bttv.c
+134
-72
drivers/char/bttv.h
drivers/char/bttv.h
+7
-4
drivers/char/serial.c
drivers/char/serial.c
+3
-0
drivers/pnp/isapnp.c
drivers/pnp/isapnp.c
+47
-0
drivers/scsi/advansys.c
drivers/scsi/advansys.c
+13
-13
drivers/usb/hid-debug.h
drivers/usb/hid-debug.h
+1
-0
drivers/usb/hid.c
drivers/usb/hid.c
+47
-7
drivers/usb/hid.h
drivers/usb/hid.h
+8
-0
drivers/usb/keybdev.c
drivers/usb/keybdev.c
+15
-6
drivers/usb/mousedev.c
drivers/usb/mousedev.c
+2
-2
drivers/usb/serial/usb-serial.c
drivers/usb/serial/usb-serial.c
+452
-405
drivers/usb/serial/usb-serial.h
drivers/usb/serial/usb-serial.h
+59
-57
drivers/usb/uhci.c
drivers/usb/uhci.c
+9
-0
drivers/usb/usb-ohci.c
drivers/usb/usb-ohci.c
+11
-3
drivers/usb/usb-uhci.c
drivers/usb/usb-uhci.c
+9
-0
drivers/usb/wacom.c
drivers/usb/wacom.c
+139
-346
fs/ntfs/inode.c
fs/ntfs/inode.c
+2
-2
include/linux/input.h
include/linux/input.h
+4
-3
include/linux/isapnp.h
include/linux/isapnp.h
+25
-1
ipc/shm.c
ipc/shm.c
+1
-0
net/ipv4/netfilter/Makefile
net/ipv4/netfilter/Makefile
+5
-1
net/ipv4/netfilter/ip_conntrack_ftp.c
net/ipv4/netfilter/ip_conntrack_ftp.c
+0
-3
net/ipv4/netfilter/ip_conntrack_standalone.c
net/ipv4/netfilter/ip_conntrack_standalone.c
+0
-3
net/ipv4/netfilter/ip_nat_standalone.c
net/ipv4/netfilter/ip_nat_standalone.c
+0
-3
No files found.
CREDITS
View file @
8ca3b9de
...
...
@@ -1327,6 +1327,13 @@ N: Andreas S. Krebs
E: akrebs@altavista.net
D: CYPRESS CY82C693 chipset IDE, Digital's PC-Alpha 164SX boards
N: Greg Kroah-Hartman
E: greg@kroah.com
W: http://www.kroah.com/linux-usb/
D: USB Serial Converter driver framework, USB Handspring Visor driver
D: ConnectTech WHITEHeat USB driver, Generic USB Serial driver
D: bits and pieces of USB core code.
N: Russell Kroll
E: rkroll@exploits.org
W: http://www.exploits.org/
...
...
@@ -1360,10 +1367,13 @@ S: D-91080 Uttenreuth
S: Germany
N: Jaroslav Kysela
E: perex@
jcu
.cz
W: http://www.p
f.jcu.cz/~perex
E: perex@
suse
.cz
W: http://www.p
erex.cz
D: Original Author and Maintainer for HP 10/100 Mbit Network Adapters
S: Unix Centre of Pedagogical Faculty, University of South Bohemia
D: ISA PnP
S: Sindlovy Dvory 117
S: 370 01 Ceske Budejovice
S: Czech Republic
N: Bas Laarhoven
E: bas@vimec.nl
...
...
Documentation/isapnp.txt
View file @
8ca3b9de
...
...
@@ -64,10 +64,10 @@ extern struct pci_bus *isapnp_find_card(unsigned short vendor,
unsigned short device,
struct pci_bus *from);
Th
e above
function finds a ISA PnP card. For the vendor device should
Th
is
function finds a ISA PnP card. For the vendor device should
be used ISAPNP_VENDOR(a,b,c) where a,b,c are characters or integers.
For the device number should be used ISAPNP_DEVICE(x) macro where x is
integer value. Both vendor and device numbers can be
get
from contents
integer value. Both vendor and device numbers can be
taken
from contents
of the /proc/isapnp file.
extern struct pci_dev *isapnp_find_dev(struct pci_bus *card,
...
...
@@ -75,12 +75,37 @@ extern struct pci_dev *isapnp_find_dev(struct pci_bus *card,
unsigned short function,
struct pci_dev *from);
Th
e above
function finds the ISA PnP device. If card is NULL, then
Th
is
function finds the ISA PnP device. If card is NULL, then
the global search mode is used (all devices are used for the searching).
Otherwise only devices which belongs to the specified card are verified.
For the function number can be used ISAPNP_FUNCTION(x) macro which works
similarly as the ISAPNP_DEVICE(x) macro.
extern int isapnp_probe_cards(const struct isapnp_card_id *ids,
int (*probe)(struct pci_bus *card,
const struct isapnp_card_id *id));
This function is a helper for drivers which requires to use more than
one device from an ISA PnP card. For each cards is called the probe
callback with appropriate information.
Example for ids parameter initialization:
static struct isapnp_card_id ids[] __devinitdata = {
{
ISAPNP_CARD_ID('A','D','V', 0x550a),
devs: {
ISAPNP_DEVICE_ID('A', 'D', 'V', 0x0010),
ISAPNP_DEVICE_ID('A', 'D', 'V', 0x0011)
},
driver_data: 0x1234,
},
{
ISAPNP_CARD_END,
}
};
ISA PnP configuration
=====================
...
...
@@ -99,19 +124,25 @@ otherwise the access to the ISA PnP configuration functions will be blocked.
Second way is auto-configuration
--------------------------------
These two functions gives to the driver the real power of the ISA PnP
feature. First function dev->prepare() only initialize the resource
members in the device structure. This structure contains all resources
set to auto configuration values after the initialization. The driver for
ISA PnP device may modify (or not) some resources to skip auto configuration
for the given resource.
This feature gives to the driver the real power of the ISA PnP code.
Function dev->prepare() initializes the resource members in the device
structure. This structure contains all resources set to auto configuration
values after the initialization. The device driver may modify some resources
to skip the auto configuration for a given resource.
The function isapnp_configure does:
- resources which have the auto configuration value are configured
Once the device structure contains all requested resource values, the function
dev->activate() must be called to assign free resources to resource members
with the auto configuration value.
Function dev->activate() does:
- resources with the auto configuration value are configured
- the auto configuration is created using ISA PnP resource map
- the function writes configuration to ISA PnP configuration registers
- the function returns to the caller actual used resources
When the device driver is removing, function dev->deactivate() has to be
called to free all assigned resources.
Example (game port initialization)
==================================
...
...
Documentation/video4linux/bttv/README
View file @
8ca3b9de
...
...
@@ -84,6 +84,13 @@ trouble with some specific TV card, try to ask there instead of
mailing me directly. The chance that someone with the same card
listens there is much higher...
For problems with sound: There are alot of different systems used
for TV sound all over the world. And there are also different chips
which decode the audio signal. Reports about sound problems ("stereo
does'nt work") are pretty useless unless you include some details
about your hardware and the TV sound scheme used in your country (or
at least the country you are living in).
Finally: If you mail some patches for bttv around the world (to
linux-kernel/Alan/Linus/...), please Cc: me.
...
...
Makefile
View file @
8ca3b9de
VERSION
=
2
PATCHLEVEL
=
3
SUBLEVEL
=
99
EXTRAVERSION
=
-pre
2
EXTRAVERSION
=
-pre
3
KERNELRELEASE
=
$(VERSION)
.
$(PATCHLEVEL)
.
$(SUBLEVEL)$(EXTRAVERSION)
...
...
@@ -179,8 +179,7 @@ DRIVERS += $(DRIVERS-y)
include
arch/$(ARCH)/Makefile
export
CORE_FILES
NETWORKS
DRIVERS
LIBS
HEAD
LDFLAGS
LIBS
LINKFLAGS
\
MAKEBOOT
ASFLAGS
export
NETWORKS
DRIVERS
LIBS
HEAD
LDFLAGS
LINKFLAGS
MAKEBOOT
ASFLAGS
# use '-fno-strict-aliasing', but only if the compiler can take it
CFLAGS
+=
$(
shell
if
$(CC)
-fno-strict-aliasing
-S
-o
/dev/null
-xc
/dev/null
>
/dev/null 2>&1
;
then
echo
"-fno-strict-aliasing"
;
fi
)
...
...
drivers/char/bttv.c
View file @
8ca3b9de
This diff is collapsed.
Click to expand it.
drivers/char/bttv.h
View file @
8ca3b9de
...
...
@@ -21,7 +21,7 @@
#ifndef _BTTV_H_
#define _BTTV_H_
#define BTTV_VERSION_CODE KERNEL_VERSION(0,7,2
2
)
#define BTTV_VERSION_CODE KERNEL_VERSION(0,7,2
4
)
#include <linux/types.h>
#include <linux/wait.h>
...
...
@@ -112,7 +112,8 @@ struct bttv_gbuf {
#define GBUFFER_GRABBING 1
#define GBUFFER_DONE 2
#define GBUFFER_ERROR 3
struct
timeval
tv
;
u16
width
;
u16
height
;
u16
fmt
;
...
...
@@ -122,8 +123,7 @@ struct bttv_gbuf {
unsigned
long
re
;
};
struct
bttv
{
struct
bttv
{
struct
video_device
video_dev
;
struct
video_device
radio_dev
;
struct
video_device
vbi_dev
;
...
...
@@ -193,6 +193,9 @@ struct bttv
int
i2c_command
;
int
triton1
;
int
errors
;
int
needs_restart
;
WAIT_QUEUE
gpioq
;
int
shutdown
;
};
...
...
drivers/char/serial.c
View file @
8ca3b9de
...
...
@@ -4306,6 +4306,9 @@ static void __init probe_serial_pci(void)
#ifdef ENABLE_SERIAL_PNP
static
struct
pci_board
pnp_devices
[]
__initdata
=
{
/* Motorola VoiceSURFR 56K Modem */
{
ISAPNP_VENDOR
(
'M'
,
'O'
,
'T'
),
ISAPNP_DEVICE
(
0x15F0
),
0
,
0
,
SPCI_FL_BASE0
|
SPCI_FL_PNPDEFAULT
,
1
,
115200
},
/* Rockwell 56K ACF II Fax+Data+Voice Modem */
{
ISAPNP_VENDOR
(
'A'
,
'K'
,
'Y'
),
ISAPNP_DEVICE
(
0x1021
),
0
,
0
,
SPCI_FL_BASE0
|
SPCI_FL_PNPDEFAULT
,
1
,
115200
},
...
...
drivers/pnp/isapnp.c
View file @
8ca3b9de
...
...
@@ -1208,6 +1208,50 @@ struct pci_dev *isapnp_find_dev(struct pci_bus *card,
return
NULL
;
}
static
const
struct
isapnp_card_id
*
isapnp_match_card
(
const
struct
isapnp_card_id
*
ids
,
struct
pci_bus
*
card
)
{
int
idx
;
while
(
ids
->
vendor
||
ids
->
device
)
{
if
((
ids
->
vendor
==
ISAPNP_ANY_ID
||
ids
->
vendor
==
card
->
vendor
)
&&
(
ids
->
device
==
ISAPNP_ANY_ID
||
ids
->
device
==
card
->
device
))
{
for
(
idx
=
0
;
idx
<
ISAPNP_CARD_DEVS
;
idx
++
)
{
if
(
ids
->
devs
[
idx
].
vendor
==
0
&&
ids
->
devs
[
idx
].
function
==
0
)
return
ids
;
if
(
isapnp_find_dev
(
card
,
ids
->
devs
[
idx
].
vendor
,
ids
->
devs
[
idx
].
function
,
NULL
)
==
NULL
)
goto
__next
;
}
return
ids
;
}
__next:
ids
++
;
}
return
NULL
;
}
int
isapnp_probe_cards
(
const
struct
isapnp_card_id
*
ids
,
int
(
*
probe
)(
struct
pci_bus
*
_card
,
const
struct
isapnp_card_id
*
_id
))
{
struct
pci_bus
*
card
;
const
struct
isapnp_card_id
*
id
;
int
count
=
0
;
if
(
ids
==
NULL
||
probe
==
NULL
)
return
-
EINVAL
;
isapnp_for_each_card
(
card
)
{
id
=
isapnp_match_card
(
ids
,
card
);
if
(
id
!=
NULL
&&
probe
(
card
,
id
)
>=
0
)
count
++
;
}
return
count
;
}
static
unsigned
int
isapnp_dma_resource_flags
(
struct
isapnp_dma
*
dma
)
{
return
dma
->
flags
|
IORESOURCE_DMA
|
IORESOURCE_AUTO
;
...
...
@@ -2065,6 +2109,8 @@ static void __init isapnp_pci_init(void)
#endif
/* CONFIG_PCI */
EXPORT_SYMBOL
(
isapnp_cards
);
EXPORT_SYMBOL
(
isapnp_devices
);
EXPORT_SYMBOL
(
isapnp_present
);
EXPORT_SYMBOL
(
isapnp_cfg_begin
);
EXPORT_SYMBOL
(
isapnp_cfg_end
);
...
...
@@ -2080,6 +2126,7 @@ EXPORT_SYMBOL(isapnp_activate);
EXPORT_SYMBOL
(
isapnp_deactivate
);
EXPORT_SYMBOL
(
isapnp_find_card
);
EXPORT_SYMBOL
(
isapnp_find_dev
);
EXPORT_SYMBOL
(
isapnp_probe_cards
);
EXPORT_SYMBOL
(
isapnp_resource_change
);
int
__init
isapnp_init
(
void
)
...
...
drivers/scsi/advansys.c
View file @
8ca3b9de
...
...
@@ -4186,7 +4186,7 @@ STATIC void asc_prt_hex(char *f, uchar *, int);
#endif
/* ADVANSYS_DEBUG */
#ifdef ADVANSYS_ASSERT
STATIC
int
interrupts_enabled
(
void
);
STATIC
int
advansys_
interrupts_enabled
(
void
);
#endif
/* ADVANSYS_ASSERT */
...
...
@@ -7053,7 +7053,7 @@ asc_execute_scsi_cmnd(Scsi_Cmnd *scp)
Scsi_Device
*
device
;
int
ret
;
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_DBG2
(
1
,
"asc_execute_scsi_cmnd: scp %lx, done %lx
\n
"
,
(
ulong
)
scp
,
(
ulong
)
scp
->
scsi_done
);
...
...
@@ -7182,7 +7182,7 @@ asc_execute_scsi_cmnd(Scsi_Cmnd *scp)
}
ASC_DBG
(
1
,
"asc_execute_scsi_cmnd: end
\n
"
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
return
ret
;
}
...
...
@@ -7602,7 +7602,7 @@ asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep)
struct
Scsi_Host
*
shp
;
int
i
;
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_DBG2
(
1
,
"asc_isr_callback: asc_dvc_varp %lx, qdonep %lx
\n
"
,
(
ulong
)
asc_dvc_varp
,
(
ulong
)
qdonep
);
ASC_DBG_PRT_ASC_QDONE_INFO
(
2
,
qdonep
);
...
...
@@ -7773,7 +7773,7 @@ adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp)
struct
Scsi_Host
*
shp
;
int
i
;
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_DBG2
(
1
,
"adv_isr_callback: adv_dvc_varp %lx, scsiqp %lx
\n
"
,
(
ulong
)
adv_dvc_varp
,
(
ulong
)
scsiqp
);
ASC_DBG_PRT_ADV_SCSI_REQ_Q
(
2
,
scsiqp
);
...
...
@@ -8422,7 +8422,7 @@ asc_enqueue(asc_queue_t *ascq, REQP reqp, int flag)
ASC_DBG3
(
3
,
"asc_enqueue: ascq %lx, reqp %lx, flag %d
\n
"
,
(
ulong
)
ascq
,
(
ulong
)
reqp
,
flag
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
reqp
!=
NULL
);
ASC_ASSERT
(
flag
==
ASC_FRONT
||
flag
==
ASC_BACK
);
tid
=
REQPTID
(
reqp
);
...
...
@@ -8475,7 +8475,7 @@ asc_dequeue(asc_queue_t *ascq, int tid)
REQP
reqp
;
ASC_DBG2
(
3
,
"asc_dequeue: ascq %lx, tid %d
\n
"
,
(
ulong
)
ascq
,
tid
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
tid
>=
0
&&
tid
<=
ADV_MAX_TID
);
if
((
reqp
=
ascq
->
q_first
[
tid
])
!=
NULL
)
{
ASC_ASSERT
(
ascq
->
q_tidmask
&
ADV_TID_TO_TIDMASK
(
tid
));
...
...
@@ -8524,7 +8524,7 @@ asc_dequeue_list(asc_queue_t *ascq, REQP *lastpp, int tid)
int
i
;
ASC_DBG2
(
3
,
"asc_dequeue_list: ascq %lx, tid %d
\n
"
,
(
ulong
)
ascq
,
tid
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
((
tid
==
ASC_TID_ALL
)
||
(
tid
>=
0
&&
tid
<=
ADV_MAX_TID
));
/*
...
...
@@ -8607,7 +8607,7 @@ asc_rmqueue(asc_queue_t *ascq, REQP reqp)
ASC_DBG2
(
3
,
"asc_rmqueue: ascq %lx, reqp %lx
\n
"
,
(
ulong
)
ascq
,
(
ulong
)
reqp
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
reqp
!=
NULL
);
tid
=
REQPTID
(
reqp
);
...
...
@@ -8675,7 +8675,7 @@ asc_isqueued(asc_queue_t *ascq, REQP reqp)
ASC_DBG2
(
3
,
"asc_isqueued: ascq %lx, reqp %lx
\n
"
,
(
ulong
)
ascq
,
(
ulong
)
reqp
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
reqp
!=
NULL
);
tid
=
REQPTID
(
reqp
);
...
...
@@ -8705,7 +8705,7 @@ asc_execute_queue(asc_queue_t *ascq)
int
i
;
ASC_DBG1
(
1
,
"asc_execute_queue: ascq %lx
\n
"
,
(
ulong
)
ascq
);
ASC_ASSERT
(
interrupts_enabled
()
==
ASC_FALSE
);
ASC_ASSERT
(
advansys_
interrupts_enabled
()
==
ASC_FALSE
);
/*
* Execute queued commands for devices attached to
* the current board in round-robin fashion.
...
...
@@ -10919,12 +10919,12 @@ asc_prt_hex(char *f, uchar *s, int l)
#ifdef ADVANSYS_ASSERT
/*
* interrupts_enabled()
*
advansys_
interrupts_enabled()
*
* Return 1 if interrupts are enabled, otherwise return 0.
*/
STATIC
int
interrupts_enabled
(
void
)
advansys_
interrupts_enabled
(
void
)
{
int
flags
;
...
...
drivers/usb/hid-debug.h
View file @
8ca3b9de
...
...
@@ -105,6 +105,7 @@ static struct hid_usage_entry hid_usage_table[] = {
{
0
,
0x35
,
"Tap"
},
{
0
,
0x39
,
"TabletFunctionKey"
},
{
0
,
0x3a
,
"ProgramChangeKey"
},
{
0
,
0x3c
,
"Invert"
},
{
0
,
0x42
,
"TipSwitch"
},
{
0
,
0x43
,
"SecondaryTipSwitch"
},
{
0
,
0x44
,
"BarrelSwitch"
},
...
...
drivers/usb/hid.c
View file @
8ca3b9de
...
...
@@ -802,6 +802,11 @@ static void hid_configure_usage(struct hid_device *device, struct hid_field *fie
case
0x30
:
/* TipPressure */
if
(
!
test_bit
(
BTN_TOUCH
,
input
->
keybit
))
{
device
->
quirks
|=
HID_QUIRK_NOTOUCH
;
set_bit
(
EV_KEY
,
input
->
evbit
);
set_bit
(
BTN_TOUCH
,
input
->
keybit
);
}
usage
->
type
=
EV_ABS
;
bit
=
input
->
absbit
;
max
=
ABS_MAX
;
usage
->
code
=
ABS_PRESSURE
;
clear_bit
(
usage
->
code
,
bit
);
...
...
@@ -817,10 +822,18 @@ static void hid_configure_usage(struct hid_device *device, struct hid_field *fie
}
break
;
case
0x3c
:
/* Invert */
usage
->
type
=
EV_KEY
;
bit
=
input
->
keybit
;
max
=
KEY_MAX
;
usage
->
code
=
BTN_TOOL_RUBBER
;
clear_bit
(
usage
->
code
,
bit
);
break
;
case
0x33
:
/* Touch */
case
0x42
:
/* TipSwitch */
case
0x43
:
/* TipSwitch2 */
device
->
quirks
&=
~
HID_QUIRK_NOTOUCH
;
usage
->
type
=
EV_KEY
;
bit
=
input
->
keybit
;
max
=
KEY_MAX
;
usage
->
code
=
BTN_TOUCH
;
clear_bit
(
usage
->
code
,
bit
);
...
...
@@ -930,7 +943,7 @@ static void hid_configure_usage(struct hid_device *device, struct hid_field *fie
}
}
static
void
hid_process_event
(
struct
input_dev
*
input
,
int
flags
,
struct
hid_usage
*
usage
,
__s32
value
)
static
void
hid_process_event
(
struct
input_dev
*
input
,
int
*
quirks
,
struct
hid_field
*
field
,
struct
hid_usage
*
usage
,
__s32
value
)
{
hid_dump_input
(
usage
,
value
);
...
...
@@ -941,9 +954,30 @@ static void hid_process_event(struct input_dev *input, int flags, struct hid_usa
return
;
}
if
(
usage
->
hid
==
(
HID_UP_DIGITIZER
|
0x003c
))
{
/* Invert */
*
quirks
=
value
?
(
*
quirks
|
HID_QUIRK_INVERT
)
:
(
*
quirks
&
~
HID_QUIRK_INVERT
);
return
;
}
if
(
usage
->
hid
==
(
HID_UP_DIGITIZER
|
0x0032
))
{
/* InRange */
if
(
value
)
{
input_event
(
input
,
usage
->
type
,
(
*
quirks
&
HID_QUIRK_INVERT
)
?
BTN_TOOL_RUBBER
:
usage
->
code
,
1
);
return
;
}
input_event
(
input
,
usage
->
type
,
usage
->
code
,
0
);
input_event
(
input
,
usage
->
type
,
BTN_TOOL_RUBBER
,
0
);
return
;
}
if
(
usage
->
hid
==
(
HID_UP_DIGITIZER
|
0x0030
)
&&
(
*
quirks
&
HID_QUIRK_NOTOUCH
))
{
/* Pressure */
int
a
=
field
->
logical_minimum
;
int
b
=
field
->
logical_maximum
;
input_event
(
input
,
EV_KEY
,
BTN_TOUCH
,
value
>
a
+
((
b
-
a
)
>>
3
));
}
input_event
(
input
,
usage
->
type
,
usage
->
code
,
value
);
if
((
flags
&
HID_MAIN_ITEM_RELATIVE
)
&&
(
usage
->
type
==
EV_KEY
))
if
((
f
ield
->
f
lags
&
HID_MAIN_ITEM_RELATIVE
)
&&
(
usage
->
type
==
EV_KEY
))
input_event
(
input
,
usage
->
type
,
usage
->
code
,
0
);
}
...
...
@@ -986,19 +1020,21 @@ static void hid_input_field(struct hid_device *dev, struct hid_field *field, __u
}
else
{
if
(
value
[
n
]
==
field
->
value
[
n
])
continue
;
}
hid_process_event
(
&
dev
->
input
,
field
->
flags
,
&
field
->
usage
[
n
],
value
[
n
]);
hid_process_event
(
&
dev
->
input
,
&
dev
->
quirks
,
field
,
&
field
->
usage
[
n
],
value
[
n
]);
}
else
{
if
(
field
->
value
[
n
]
>=
min
&&
field
->
value
[
n
]
<=
max
/* non-NULL value */
&&
field
->
usage
[
field
->
value
[
n
]
-
min
].
hid
/* nonzero usage */
&&
search
(
value
,
field
->
value
[
n
],
count
))
hid_process_event
(
&
dev
->
input
,
field
->
flags
,
&
field
->
usage
[
field
->
value
[
n
]
-
min
],
0
);
hid_process_event
(
&
dev
->
input
,
&
dev
->
quirks
,
field
,
&
field
->
usage
[
field
->
value
[
n
]
-
min
],
0
);
if
(
value
[
n
]
>=
min
&&
value
[
n
]
<=
max
/* non-NULL value */
&&
field
->
usage
[
value
[
n
]
-
min
].
hid
/* nonzero usage */
&&
search
(
field
->
value
,
value
[
n
],
count
))
hid_process_event
(
&
dev
->
input
,
field
->
flags
,
&
field
->
usage
[
value
[
n
]
-
min
],
1
);
hid_process_event
(
&
dev
->
input
,
&
dev
->
quirks
,
field
,
&
field
->
usage
[
value
[
n
]
-
min
],
1
);
}
}
...
...
@@ -1261,14 +1297,18 @@ static void hid_init_input(struct hid_device *hid)
#define USB_VENDOR_ID_WACOM 0x056a
#define USB_DEVICE_ID_WACOM_GRAPHIRE 0x0010
#define USB_DEVICE_ID_WACOM_INTUOS 0x002
1
#define USB_DEVICE_ID_WACOM_INTUOS 0x002
0
struct
hid_blacklist
{
__u16
idVendor
;
__u16
idProduct
;
}
hid_blacklist
[]
=
{
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_GRAPHIRE
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
+
1
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
+
2
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
+
3
},
{
USB_VENDOR_ID_WACOM
,
USB_DEVICE_ID_WACOM_INTUOS
+
4
},
{
0
,
0
}
};
...
...
drivers/usb/hid.h
View file @
8ca3b9de
...
...
@@ -178,6 +178,13 @@ struct hid_item {
#define HID_OUTPUT_REPORT 1
#define HID_FEATURE_REPORT 2
/*
* HID device quirks.
*/
#define HID_QUIRK_INVERT 0x01
#define HID_QUIRK_NOTOUCH 0x02
/*
* This is the global enviroment of the parser. This information is
* persistent for main-items. The global enviroment can be saved and
...
...
@@ -285,6 +292,7 @@ struct hid_device { /* device report descriptor */
struct
urb
urb
;
/* USB URB structure */
struct
urb
urbout
;
/* Output URB */
struct
input_dev
input
;
/* input device structure */
int
quirks
;
/* Various nasty tricks the device can pull on us */
};
#define HID_GLOBAL_STACK_SIZE 4
...
...
drivers/usb/keybdev.c
View file @
8ca3b9de
...
...
@@ -58,7 +58,8 @@ static unsigned char keybdev_mac_codes[256] =
#endif
struct
input_handler
keybdev_handler
;
static
struct
input_handler
keybdev_handler
;
static
int
keybdev_alt
=
0
;
void
keybdev_ledfunc
(
unsigned
int
led
)
{
...
...
@@ -93,14 +94,22 @@ void keybdev_event(struct input_handle *handle, unsigned int type, unsigned int
handle_scancode
(
0x1d
,
down
);
handle_scancode
(
0x45
,
down
);
}
else
if
(
code
>=
96
)
{
handle_scancode
(
0xe0
,
1
);
handle_scancode
(
keybdev_x86_e0s
[
code
-
96
]
,
down
);
if
(
code
==
99
)
{
if
(
code
==
99
&&
keybdev_alt
)
{
handle_scancode
(
84
,
down
);
}
else
{
handle_scancode
(
0xe0
,
1
);
handle_scancode
(
0x37
,
down
);
handle_scancode
(
keybdev_x86_e0s
[
code
-
96
],
down
);
if
(
code
==
99
)
{
handle_scancode
(
0xe0
,
1
);
handle_scancode
(
0x37
,
down
);
}
}
}
else
if
(
code
==
84
)
{
handle_scancode
(
43
,
down
);
}
else
handle_scancode
(
code
,
down
);
if
(
code
==
56
||
code
==
100
)
keybdev_alt
=
down
;
#elif CONFIG_ADB_KEYBOARD
if
(
code
<
128
&&
keybdev_mac_codes
[
code
])
...
...
@@ -152,7 +161,7 @@ static void keybdev_disconnect(struct input_handle *handle)
kfree
(
handle
);
}
struct
input_handler
keybdev_handler
=
{
st
atic
st
ruct
input_handler
keybdev_handler
=
{
event:
keybdev_event
,
connect:
keybdev_connect
,
disconnect:
keybdev_disconnect
,
...
...
drivers/usb/mousedev.c
View file @
8ca3b9de
...
...
@@ -95,8 +95,8 @@ static void mousedev_event(struct input_handle *handle, unsigned int type, unsig
break
;
case
ABS_Y
:
size
=
handle
->
dev
->
absmax
[
ABS_Y
]
-
handle
->
dev
->
absmin
[
ABS_Y
];
list
->
dy
+
=
(
value
*
CONFIG_MOUSEDEV_SCREEN_Y
-
list
->
oldy
)
/
size
;
list
->
oldy
+
=
list
->
dy
*
size
;
list
->
dy
-
=
(
value
*
CONFIG_MOUSEDEV_SCREEN_Y
-
list
->
oldy
)
/
size
;
list
->
oldy
-
=
list
->
dy
*
size
;
break
;
}
break
;
...
...
drivers/usb/serial/usb-serial.c
View file @
8ca3b9de
This diff is collapsed.
Click to expand it.
drivers/usb/serial/usb-serial.h
View file @
8ca3b9de
This diff is collapsed.
Click to expand it.
drivers/usb/uhci.c
View file @
8ca3b9de
...
...
@@ -1985,6 +1985,15 @@ static int setup_uhci(struct pci_dev *dev, int irq, unsigned int io_addr, unsign
{
int
retval
;
struct
uhci
*
uhci
;
char
buf
[
8
],
*
bufp
=
buf
;
#ifndef __sparc__
sprintf
(
buf
,
"%d"
,
irq
);
#else
bufp
=
__irq_itoa
(
irq
);
#endif
printk
(
KERN_INFO
__FILE__
": USB UHCI at I/O 0x%x, IRQ %s
\n
"
,
io_addr
,
bufp
);
uhci
=
alloc_uhci
(
io_addr
,
io_size
);
if
(
!
uhci
)
...
...
drivers/usb/usb-ohci.c
View file @
8ca3b9de
...
...
@@ -1650,16 +1650,24 @@ static void hc_release_ohci (ohci_t * ohci)
static
int
hc_found_ohci
(
struct
pci_dev
*
dev
,
int
irq
,
void
*
mem_base
)
{
ohci_t
*
ohci
;
dbg
(
"USB HC found: irq= %d membase= %lx"
,
irq
,
(
unsigned
long
)
mem_base
);
char
buf
[
8
],
*
bufp
=
buf
;
#ifndef __sparc__
sprintf
(
buf
,
"%d"
,
irq
);
#else
bufp
=
__irq_itoa
(
irq
);
#endif
printk
(
KERN_INFO
__FILE__
": USB OHCI at membase 0x%lx, IRQ %s
\n
"
,
(
unsigned
long
)
mem_base
,
bufp
);
ohci
=
hc_alloc_ohci
(
mem_base
);
if
(
!
ohci
)
{
return
-
ENOMEM
;
}
INIT_LIST_HEAD
(
&
ohci
->
ohci_hcd_list
);
list_add
(
&
ohci
->
ohci_hcd_list
,
&
ohci_hcd_list
);
hc_reset
(
ohci
);
writel
(
ohci
->
hc_control
=
OHCI_USB_RESET
,
&
ohci
->
regs
->
control
);
wait_ms
(
10
);
...
...
drivers/usb/usb-uhci.c
View file @
8ca3b9de
...
...
@@ -2597,6 +2597,15 @@ _static int __init alloc_uhci (struct pci_dev *dev, int irq, unsigned int io_add
uhci_t
*
s
;
struct
usb_bus
*
bus
;
struct
pm_dev
*
pmdev
;
char
buf
[
8
],
*
bufp
=
buf
;
#ifndef __sparc__
sprintf
(
buf
,
"%d"
,
irq
);
#else
bufp
=
__irq_itoa
(
irq
);
#endif
printk
(
KERN_INFO
__FILE__
": USB UHCI at I/O 0x%x, IRQ %s
\n
"
,
io_addr
,
bufp
);
s
=
kmalloc
(
sizeof
(
uhci_t
),
GFP_KERNEL
);
if
(
!
s
)
...
...
drivers/usb/wacom.c
View file @
8ca3b9de
This diff is collapsed.
Click to expand it.
fs/ntfs/inode.c
View file @
8ca3b9de
...
...
@@ -258,7 +258,7 @@ static void ntfs_load_attributes(ntfs_inode* ino)
if
(
!
buf
)
return
;
delta
=
0
;
for
(
offset
=
0
;
datasize
;
datasize
-=
len
)
for
(
offset
=
0
;
datasize
;
datasize
-=
len
,
offset
+=
len
)
{
ntfs_io
io
;
io
.
fn_put
=
ntfs_put
;
...
...
@@ -268,7 +268,7 @@ static void ntfs_load_attributes(ntfs_inode* ino)
if
(
ntfs_read_attr
(
ino
,
vol
->
at_attribute_list
,
0
,
offset
,
&
io
)){
ntfs_error
(
"error in load_attributes
\n
"
);
}
delta
=
len
;
delta
+
=
len
;
parse_attributes
(
ino
,
buf
,
&
delta
);
if
(
delta
)
/* move remaining bytes to buffer start */
...
...
include/linux/input.h
View file @
8ca3b9de
...
...
@@ -302,9 +302,10 @@ struct input_event {
#define BTN_TOOL_AIRBRUSH 0x144
#define BTN_TOOL_FINGER 0x145
#define BTN_TOOL_MOUSE 0x146
#define BTN_TOUCH 0x147
#define BTN_STYLUS 0x148
#define BTN_STYLUS2 0x149
#define BTN_TOOL_LENS 0x147
#define BTN_TOUCH 0x14a
#define BTN_STYLUS 0x14b
#define BTN_STYLUS2 0x14c
#define KEY_MAX 0x1ff
...
...
include/linux/isapnp.h
View file @
8ca3b9de
...
...
@@ -128,6 +128,24 @@ struct isapnp_resources {
struct
isapnp_resources
*
next
;
/* next resource */
};
#define ISAPNP_ANY_ID 0xffff
#define ISAPNP_CARD_DEVS 8
#define ISAPNP_CARD_ID(_va, _vb, _vc, _device) \
vendor: ISAPNP_VENDOR(_va, _vb, _vc), device: ISAPNP_DEVICE(_device)
#define ISAPNP_CARD_END \
vendor: 0, device: 0
#define ISAPNP_DEVICE_ID(_va, _vb, _vc, _function) \
{ vendor: ISAPNP_VENDOR(_va, _vb, _vc), function: ISAPNP_FUNCTION(_function) }
struct
isapnp_card_id
{
unsigned
short
vendor
,
device
;
struct
{
unsigned
short
vendor
,
function
;
}
devs
[
ISAPNP_CARD_DEVS
];
/* logical devices */
unsigned
long
driver_data
;
/* data private to the driver */
};
#if defined(CONFIG_ISAPNP) || (defined(CONFIG_ISAPNP_MODULE) && defined(MODULE))
#define __ISAPNP__
...
...
@@ -158,6 +176,9 @@ struct pci_dev *isapnp_find_dev(struct pci_bus *card,
unsigned
short
vendor
,
unsigned
short
function
,
struct
pci_dev
*
from
);
int
isapnp_probe_cards
(
const
struct
isapnp_card_id
*
ids
,
int
(
*
probe
)(
struct
pci_bus
*
card
,
const
struct
isapnp_card_id
*
id
));
/* misc */
void
isapnp_resource_change
(
struct
resource
*
resource
,
unsigned
long
start
,
...
...
@@ -196,7 +217,10 @@ extern inline struct pci_bus *isapnp_find_card(unsigned short vendor,
extern
inline
struct
pci_dev
*
isapnp_find_dev
(
struct
pci_bus
*
card
,
unsigned
short
vendor
,
unsigned
short
function
,
struct
pci_dev
*
from
)
{
return
NULL
;
}
struct
pci_dev
*
from
)
{
return
NULL
;
}
extern
inline
int
isapnp_probe_cards
(
const
struct
isapnp_card_id
*
ids
,
int
(
*
probe
)(
struct
pci_bus
*
card
,
const
struct
isapnp_card_id
*
id
))
{
return
-
ENODEV
;
}
extern
inline
void
isapnp_resource_change
(
struct
resource
*
resource
,
unsigned
long
start
,
unsigned
long
size
)
{
;
}
...
...
ipc/shm.c
View file @
8ca3b9de
...
...
@@ -30,6 +30,7 @@
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/malloc.h>
#include <linux/shm.h>
#include <linux/swap.h>
...
...
net/ipv4/netfilter/Makefile
View file @
8ca3b9de
...
...
@@ -21,6 +21,8 @@ OX_OBJS += ip_conntrack_standalone.o
O_OBJS
+=
$(IP_NF_CONNTRACK_OBJ)
else
ifeq
($(CONFIG_IP_NF_CONNTRACK),m)
MI_OBJS
+=
$(IP_NF_CONNTRACK_OBJ)
MIX_OBJS
+=
ip_conntrack_standalone.o
M_OBJS
+=
ip_conntrack.o
endif
endif
...
...
@@ -37,7 +39,7 @@ ifeq ($(CONFIG_IP_NF_FTP),y)
OX_OBJS
+=
ip_conntrack_ftp.o
else
ifeq
($(CONFIG_IP_NF_FTP),m)
M_OBJS
+=
ip_conntrack_ftp.o
M
X
_OBJS
+=
ip_conntrack_ftp.o
endif
endif
...
...
@@ -129,6 +131,8 @@ O_OBJS += ip_nat_rule.o $(IP_NF_NAT_OBJ)
endif
else
ifeq
($(CONFIG_IP_NF_NAT),m)
MI_OBJS
+=
ip_nat_rule.o
$(IP_NF_NAT_OBJ)
MIX_OBJS
+=
ip_nat_standalone.o
M_OBJS
+=
iptable_nat.o
ifeq
($(CONFIG_IP_NF_FTP),m)
M_OBJS
+=
ip_nat_ftp.o
...
...
net/ipv4/netfilter/ip_conntrack_ftp.c
View file @
8ca3b9de
/* FTP extension for IP connection tracking. */
#ifdef MODULE
#define EXPORT_SYMTAB
#endif
#include <linux/module.h>
#include <linux/netfilter.h>
#include <linux/ip.h>
...
...
net/ipv4/netfilter/ip_conntrack_standalone.c
View file @
8ca3b9de
...
...
@@ -7,9 +7,6 @@
/* (c) 1999 Paul `Rusty' Russell. Licenced under the GNU General
Public Licence. */
#ifdef MODULE
#define EXPORT_SYMTAB
#endif
#include <linux/types.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
...
...
net/ipv4/netfilter/ip_nat_standalone.c
View file @
8ca3b9de
...
...
@@ -7,9 +7,6 @@
/* (c) 1999 Paul `Rusty' Russell. Licenced under the GNU General
Public Licence. */
#ifdef MODULE
#define EXPORT_SYMTAB
#endif
#include <linux/types.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
...
...
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