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
99805f47
Commit
99805f47
authored
Apr 26, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git/
parents
a1342206
9719b0c2
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
534 additions
and
247 deletions
+534
-247
drivers/usb/core/usb.c
drivers/usb/core/usb.c
+2
-4
drivers/usb/image/microtek.c
drivers/usb/image/microtek.c
+1
-1
drivers/usb/input/ati_remote.c
drivers/usb/input/ati_remote.c
+1
-1
drivers/usb/input/usbkbd.c
drivers/usb/input/usbkbd.c
+2
-1
drivers/usb/media/pwc/pwc-ctrl.c
drivers/usb/media/pwc/pwc-ctrl.c
+39
-39
drivers/usb/media/pwc/pwc-if.c
drivers/usb/media/pwc/pwc-if.c
+1
-1
drivers/usb/media/pwc/pwc.h
drivers/usb/media/pwc/pwc.h
+1
-5
drivers/usb/media/sn9c102_core.c
drivers/usb/media/sn9c102_core.c
+2
-2
drivers/usb/media/sn9c102_sensor.h
drivers/usb/media/sn9c102_sensor.h
+0
-2
drivers/usb/misc/sisusbvga/sisusb.c
drivers/usb/misc/sisusbvga/sisusb.c
+1
-0
drivers/usb/net/usbnet.c
drivers/usb/net/usbnet.c
+270
-157
drivers/usb/net/zd1201.c
drivers/usb/net/zd1201.c
+11
-9
drivers/usb/serial/Kconfig
drivers/usb/serial/Kconfig
+9
-0
drivers/usb/serial/Makefile
drivers/usb/serial/Makefile
+1
-0
drivers/usb/serial/hp4x.c
drivers/usb/serial/hp4x.c
+85
-0
drivers/usb/storage/unusual_devs.h
drivers/usb/storage/unusual_devs.h
+20
-2
scripts/mod/file2alias.c
scripts/mod/file2alias.c
+88
-23
No files found.
drivers/usb/core/usb.c
View file @
99805f47
...
...
@@ -611,11 +611,10 @@ static int usb_hotplug (struct device *dev, char **envp, int num_envp,
if
(
add_hotplug_env_var
(
envp
,
num_envp
,
&
i
,
buffer
,
buffer_size
,
&
length
,
"MODALIAS=usb:v%04Xp%04Xd
l%04Xdh
%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X"
,
"MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X"
,
le16_to_cpu
(
usb_dev
->
descriptor
.
idVendor
),
le16_to_cpu
(
usb_dev
->
descriptor
.
idProduct
),
le16_to_cpu
(
usb_dev
->
descriptor
.
bcdDevice
),
le16_to_cpu
(
usb_dev
->
descriptor
.
bcdDevice
),
usb_dev
->
descriptor
.
bDeviceClass
,
usb_dev
->
descriptor
.
bDeviceSubClass
,
usb_dev
->
descriptor
.
bDeviceProtocol
,
...
...
@@ -626,11 +625,10 @@ static int usb_hotplug (struct device *dev, char **envp, int num_envp,
}
else
{
if
(
add_hotplug_env_var
(
envp
,
num_envp
,
&
i
,
buffer
,
buffer_size
,
&
length
,
"MODALIAS=usb:v%04Xp%04Xd
l%04Xdh
%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*"
,
"MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*"
,
le16_to_cpu
(
usb_dev
->
descriptor
.
idVendor
),
le16_to_cpu
(
usb_dev
->
descriptor
.
idProduct
),
le16_to_cpu
(
usb_dev
->
descriptor
.
bcdDevice
),
le16_to_cpu
(
usb_dev
->
descriptor
.
bcdDevice
),
usb_dev
->
descriptor
.
bDeviceClass
,
usb_dev
->
descriptor
.
bDeviceSubClass
,
usb_dev
->
descriptor
.
bDeviceProtocol
))
...
...
drivers/usb/image/microtek.c
View file @
99805f47
...
...
@@ -335,7 +335,7 @@ static int mts_scsi_abort (Scsi_Cmnd *srb)
mts_urb_abort
(
desc
);
return
FAIL
URE
;
return
FAIL
ED
;
}
static
int
mts_scsi_host_reset
(
Scsi_Cmnd
*
srb
)
...
...
drivers/usb/input/ati_remote.c
View file @
99805f47
...
...
@@ -619,7 +619,7 @@ static void ati_remote_delete(struct ati_remote *ati_remote)
if
(
ati_remote
->
outbuf
)
usb_buffer_free
(
ati_remote
->
udev
,
DATA_BUFSIZE
,
ati_remote
->
in
buf
,
ati_remote
->
outbuf_dma
);
ati_remote
->
out
buf
,
ati_remote
->
outbuf_dma
);
if
(
ati_remote
->
irq_urb
)
usb_free_urb
(
ati_remote
->
irq_urb
);
...
...
drivers/usb/input/usbkbd.c
View file @
99805f47
...
...
@@ -133,7 +133,8 @@ static void usb_kbd_irq(struct urb *urb, struct pt_regs *regs)
kbd
->
usbdev
->
devpath
,
i
);
}
int
usb_kbd_event
(
struct
input_dev
*
dev
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
static
int
usb_kbd_event
(
struct
input_dev
*
dev
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
{
struct
usb_kbd
*
kbd
=
dev
->
private
;
...
...
drivers/usb/media/pwc/pwc-ctrl.c
View file @
99805f47
...
...
@@ -418,6 +418,44 @@ static inline int set_video_mode_Kiara(struct pwc_device *pdev, int size, int fr
static
void
pwc_set_image_buffer_size
(
struct
pwc_device
*
pdev
)
{
int
i
,
factor
=
0
,
filler
=
0
;
/* for PALETTE_YUV420P */
switch
(
pdev
->
vpalette
)
{
case
VIDEO_PALETTE_YUV420P
:
factor
=
6
;
filler
=
128
;
break
;
case
VIDEO_PALETTE_RAW
:
factor
=
6
;
/* can be uncompressed YUV420P */
filler
=
0
;
break
;
}
/* Set sizes in bytes */
pdev
->
image
.
size
=
pdev
->
image
.
x
*
pdev
->
image
.
y
*
factor
/
4
;
pdev
->
view
.
size
=
pdev
->
view
.
x
*
pdev
->
view
.
y
*
factor
/
4
;
/* Align offset, or you'll get some very weird results in
YUV420 mode... x must be multiple of 4 (to get the Y's in
place), and y even (or you'll mixup U & V). This is less of a
problem for YUV420P.
*/
pdev
->
offset
.
x
=
((
pdev
->
view
.
x
-
pdev
->
image
.
x
)
/
2
)
&
0xFFFC
;
pdev
->
offset
.
y
=
((
pdev
->
view
.
y
-
pdev
->
image
.
y
)
/
2
)
&
0xFFFE
;
/* Fill buffers with gray or black */
for
(
i
=
0
;
i
<
MAX_IMAGES
;
i
++
)
{
if
(
pdev
->
image_ptr
[
i
]
!=
NULL
)
memset
(
pdev
->
image_ptr
[
i
],
filler
,
pdev
->
view
.
size
);
}
}
/**
@pdev: device structure
@width: viewport width
...
...
@@ -475,44 +513,6 @@ int pwc_set_video_mode(struct pwc_device *pdev, int width, int height, int frame
}
void
pwc_set_image_buffer_size
(
struct
pwc_device
*
pdev
)
{
int
i
,
factor
=
0
,
filler
=
0
;
/* for PALETTE_YUV420P */
switch
(
pdev
->
vpalette
)
{
case
VIDEO_PALETTE_YUV420P
:
factor
=
6
;
filler
=
128
;
break
;
case
VIDEO_PALETTE_RAW
:
factor
=
6
;
/* can be uncompressed YUV420P */
filler
=
0
;
break
;
}
/* Set sizes in bytes */
pdev
->
image
.
size
=
pdev
->
image
.
x
*
pdev
->
image
.
y
*
factor
/
4
;
pdev
->
view
.
size
=
pdev
->
view
.
x
*
pdev
->
view
.
y
*
factor
/
4
;
/* Align offset, or you'll get some very weird results in
YUV420 mode... x must be multiple of 4 (to get the Y's in
place), and y even (or you'll mixup U & V). This is less of a
problem for YUV420P.
*/
pdev
->
offset
.
x
=
((
pdev
->
view
.
x
-
pdev
->
image
.
x
)
/
2
)
&
0xFFFC
;
pdev
->
offset
.
y
=
((
pdev
->
view
.
y
-
pdev
->
image
.
y
)
/
2
)
&
0xFFFE
;
/* Fill buffers with gray or black */
for
(
i
=
0
;
i
<
MAX_IMAGES
;
i
++
)
{
if
(
pdev
->
image_ptr
[
i
]
!=
NULL
)
memset
(
pdev
->
image_ptr
[
i
],
filler
,
pdev
->
view
.
size
);
}
}
/* BRIGHTNESS */
int
pwc_get_brightness
(
struct
pwc_device
*
pdev
)
...
...
@@ -949,7 +949,7 @@ int pwc_set_leds(struct pwc_device *pdev, int on_value, int off_value)
return
SendControlMsg
(
SET_STATUS_CTL
,
LED_FORMATTER
,
2
);
}
int
pwc_get_leds
(
struct
pwc_device
*
pdev
,
int
*
on_value
,
int
*
off_value
)
static
int
pwc_get_leds
(
struct
pwc_device
*
pdev
,
int
*
on_value
,
int
*
off_value
)
{
unsigned
char
buf
[
2
];
int
ret
;
...
...
drivers/usb/media/pwc/pwc-if.c
View file @
99805f47
...
...
@@ -129,7 +129,7 @@ static int default_mbufs = 2; /* Default number of mmap() buffers */
int
pwc_trace
=
TRACE_MODULE
|
TRACE_FLOW
|
TRACE_PWCX
;
static
int
power_save
=
0
;
static
int
led_on
=
100
,
led_off
=
0
;
/* defaults to LED that is on while in use */
int
pwc_preferred_compression
=
2
;
/* 0..3 = uncompressed..high */
static
int
pwc_preferred_compression
=
2
;
/* 0..3 = uncompressed..high */
static
struct
{
int
type
;
char
serial_number
[
30
];
...
...
drivers/usb/media/pwc/pwc.h
View file @
99805f47
...
...
@@ -226,9 +226,8 @@ struct pwc_device
extern
"C"
{
#endif
/* Global variable
s
*/
/* Global variable */
extern
int
pwc_trace
;
extern
int
pwc_preferred_compression
;
/** functions in pwc-if.c */
int
pwc_try_video_mode
(
struct
pwc_device
*
pdev
,
int
width
,
int
height
,
int
new_fps
,
int
new_compression
,
int
new_snapshot
);
...
...
@@ -243,8 +242,6 @@ void pwc_construct(struct pwc_device *pdev);
/** Functions in pwc-ctrl.c */
/* Request a certain video mode. Returns < 0 if not possible */
extern
int
pwc_set_video_mode
(
struct
pwc_device
*
pdev
,
int
width
,
int
height
,
int
frames
,
int
compression
,
int
snapshot
);
/* Calculate the number of bytes per image (not frame) */
extern
void
pwc_set_image_buffer_size
(
struct
pwc_device
*
pdev
);
/* Various controls; should be obvious. Value 0..65535, or < 0 on error */
extern
int
pwc_get_brightness
(
struct
pwc_device
*
pdev
);
...
...
@@ -256,7 +253,6 @@ extern int pwc_set_gamma(struct pwc_device *pdev, int value);
extern
int
pwc_get_saturation
(
struct
pwc_device
*
pdev
);
extern
int
pwc_set_saturation
(
struct
pwc_device
*
pdev
,
int
value
);
extern
int
pwc_set_leds
(
struct
pwc_device
*
pdev
,
int
on_value
,
int
off_value
);
extern
int
pwc_get_leds
(
struct
pwc_device
*
pdev
,
int
*
on_value
,
int
*
off_value
);
extern
int
pwc_get_cmos_sensor
(
struct
pwc_device
*
pdev
,
int
*
sensor
);
/* Power down or up the camera; not supported by all models */
...
...
drivers/usb/media/sn9c102_core.c
View file @
99805f47
...
...
@@ -429,7 +429,7 @@ sn9c102_i2c_try_read(struct sn9c102_device* cam,
}
int
static
int
sn9c102_i2c_try_write
(
struct
sn9c102_device
*
cam
,
struct
sn9c102_sensor
*
sensor
,
u8
address
,
u8
value
)
{
...
...
@@ -785,7 +785,7 @@ static int sn9c102_stop_transfer(struct sn9c102_device* cam)
}
int
sn9c102_stream_interrupt
(
struct
sn9c102_device
*
cam
)
static
int
sn9c102_stream_interrupt
(
struct
sn9c102_device
*
cam
)
{
int
err
=
0
;
...
...
drivers/usb/media/sn9c102_sensor.h
View file @
99805f47
...
...
@@ -145,8 +145,6 @@ static const struct usb_device_id sn9c102_id_table[] = { \
*/
/* The "try" I2C I/O versions are used when probing the sensor */
extern
int
sn9c102_i2c_try_write
(
struct
sn9c102_device
*
,
struct
sn9c102_sensor
*
,
u8
address
,
u8
value
);
extern
int
sn9c102_i2c_try_read
(
struct
sn9c102_device
*
,
struct
sn9c102_sensor
*
,
u8
address
);
...
...
drivers/usb/misc/sisusbvga/sisusb.c
View file @
99805f47
...
...
@@ -3105,6 +3105,7 @@ static void sisusb_disconnect(struct usb_interface *intf)
static
struct
usb_device_id
sisusb_table
[]
=
{
{
USB_DEVICE
(
0x0711
,
0x0900
)
},
{
USB_DEVICE
(
0x182d
,
0x021c
)
},
{
USB_DEVICE
(
0x182d
,
0x0269
)
},
{
}
};
...
...
drivers/usb/net/usbnet.c
View file @
99805f47
This diff is collapsed.
Click to expand it.
drivers/usb/net/zd1201.c
View file @
99805f47
...
...
@@ -45,7 +45,7 @@ MODULE_PARM_DESC(ap, "If non-zero Access Point firmware will be loaded");
MODULE_DEVICE_TABLE
(
usb
,
zd1201_table
);
int
zd1201_fw_upload
(
struct
usb_device
*
dev
,
int
apfw
)
static
int
zd1201_fw_upload
(
struct
usb_device
*
dev
,
int
apfw
)
{
const
struct
firmware
*
fw_entry
;
char
*
data
;
...
...
@@ -111,7 +111,7 @@ int zd1201_fw_upload(struct usb_device *dev, int apfw)
return
err
;
}
void
zd1201_usbfree
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
static
void
zd1201_usbfree
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
{
struct
zd1201
*
zd
=
urb
->
context
;
...
...
@@ -142,7 +142,8 @@ void zd1201_usbfree(struct urb *urb, struct pt_regs *regs)
total: 4 + 2 + 2 + 2 + 2 + 4 = 16
*/
int
zd1201_docmd
(
struct
zd1201
*
zd
,
int
cmd
,
int
parm0
,
int
parm1
,
int
parm2
)
static
int
zd1201_docmd
(
struct
zd1201
*
zd
,
int
cmd
,
int
parm0
,
int
parm1
,
int
parm2
)
{
unsigned
char
*
command
;
int
ret
;
...
...
@@ -175,7 +176,7 @@ int zd1201_docmd(struct zd1201 *zd, int cmd, int parm0, int parm1, int parm2)
}
/* Callback after sending out a packet */
void
zd1201_usbtx
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
static
void
zd1201_usbtx
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
{
struct
zd1201
*
zd
=
urb
->
context
;
netif_wake_queue
(
zd
->
dev
);
...
...
@@ -183,7 +184,7 @@ void zd1201_usbtx(struct urb *urb, struct pt_regs *regs)
}
/* Incomming data */
void
zd1201_usbrx
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
static
void
zd1201_usbrx
(
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
{
struct
zd1201
*
zd
=
urb
->
context
;
int
free
=
0
;
...
...
@@ -613,7 +614,7 @@ static inline int zd1201_setconfig16(struct zd1201 *zd, int rid, short val)
return
(
zd1201_setconfig
(
zd
,
rid
,
&
zdval
,
sizeof
(
__le16
),
1
));
}
int
zd1201_drvr_start
(
struct
zd1201
*
zd
)
static
int
zd1201_drvr_start
(
struct
zd1201
*
zd
)
{
int
err
,
i
;
short
max
;
...
...
@@ -1739,7 +1740,8 @@ static const struct iw_handler_def zd1201_iw_handlers = {
.
private_args
=
(
struct
iw_priv_args
*
)
zd1201_private_args
,
};
int
zd1201_probe
(
struct
usb_interface
*
interface
,
const
struct
usb_device_id
*
id
)
static
int
zd1201_probe
(
struct
usb_interface
*
interface
,
const
struct
usb_device_id
*
id
)
{
struct
zd1201
*
zd
;
struct
usb_device
*
usb
;
...
...
@@ -1851,7 +1853,7 @@ int zd1201_probe(struct usb_interface *interface, const struct usb_device_id *id
return
err
;
}
void
zd1201_disconnect
(
struct
usb_interface
*
interface
)
static
void
zd1201_disconnect
(
struct
usb_interface
*
interface
)
{
struct
zd1201
*
zd
=
(
struct
zd1201
*
)
usb_get_intfdata
(
interface
);
struct
hlist_node
*
node
,
*
node2
;
...
...
@@ -1882,7 +1884,7 @@ void zd1201_disconnect(struct usb_interface *interface)
kfree
(
zd
);
}
struct
usb_driver
zd1201_usb
=
{
st
atic
st
ruct
usb_driver
zd1201_usb
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"zd1201"
,
.
probe
=
zd1201_probe
,
...
...
drivers/usb/serial/Kconfig
View file @
99805f47
...
...
@@ -395,6 +395,15 @@ config USB_SERIAL_PL2303
To compile this driver as a module, choose M here: the
module will be called pl2303.
config USB_SERIAL_HP4X
tristate "USB HP4x Calculators support"
depends on USB_SERIAL
help
Say Y here if you want to use an Hewlett-Packard 4x Calculator.
To compile this driver as a module, choose M here: the
module will be called hp4x.
config USB_SERIAL_SAFE
tristate "USB Safe Serial (Encapsulated) Driver (EXPERIMENTAL)"
depends on USB_SERIAL && EXPERIMENTAL
...
...
drivers/usb/serial/Makefile
View file @
99805f47
...
...
@@ -21,6 +21,7 @@ obj-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += io_ti.o
obj-$(CONFIG_USB_SERIAL_EMPEG)
+=
empeg.o
obj-$(CONFIG_USB_SERIAL_FTDI_SIO)
+=
ftdi_sio.o
obj-$(CONFIG_USB_SERIAL_GARMIN)
+=
garmin_gps.o
obj-$(CONFIG_USB_SERIAL_HP4X)
+=
hp4x.o
obj-$(CONFIG_USB_SERIAL_IPAQ)
+=
ipaq.o
obj-$(CONFIG_USB_SERIAL_IPW)
+=
ipw.o
obj-$(CONFIG_USB_SERIAL_IR)
+=
ir-usb.o
...
...
drivers/usb/serial/hp4x.c
0 → 100644
View file @
99805f47
/*
* HP4x Calculators Serial USB driver
*
* Copyright (C) 2005 Arthur Huillet (ahuillet@users.sf.net)
* Copyright (C) 2001-2005 Greg Kroah-Hartman (greg@kroah.com)
*
* 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.
*
* See Documentation/usb/usb-serial.txt for more information on using this driver
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/tty.h>
#include <linux/module.h>
#include <linux/usb.h>
#include "usb-serial.h"
/*
* Version Information
*/
#define DRIVER_VERSION "v1.00"
#define DRIVER_DESC "HP4x (48/49) Generic Serial driver"
#define HP_VENDOR_ID 0x03f0
#define HP49GP_PRODUCT_ID 0x0121
static
struct
usb_device_id
id_table
[]
=
{
{
USB_DEVICE
(
HP_VENDOR_ID
,
HP49GP_PRODUCT_ID
)
},
{
}
/* Terminating entry */
};
MODULE_DEVICE_TABLE
(
usb
,
id_table
);
static
struct
usb_driver
hp49gp_driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"HP4X"
,
.
probe
=
usb_serial_probe
,
.
disconnect
=
usb_serial_disconnect
,
.
id_table
=
id_table
,
};
static
struct
usb_serial_device_type
hp49gp_device
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"HP4X"
,
.
id_table
=
id_table
,
.
num_interrupt_in
=
NUM_DONT_CARE
,
.
num_bulk_in
=
NUM_DONT_CARE
,
.
num_bulk_out
=
NUM_DONT_CARE
,
.
num_ports
=
1
,
};
static
int
__init
hp49gp_init
(
void
)
{
int
retval
;
retval
=
usb_serial_register
(
&
hp49gp_device
);
if
(
retval
)
goto
failed_usb_serial_register
;
retval
=
usb_register
(
&
hp49gp_driver
);
if
(
retval
)
goto
failed_usb_register
;
info
(
DRIVER_DESC
" "
DRIVER_VERSION
);
return
0
;
failed_usb_register:
usb_serial_deregister
(
&
hp49gp_device
);
failed_usb_serial_register:
return
retval
;
}
static
void
__exit
hp49gp_exit
(
void
)
{
usb_deregister
(
&
hp49gp_driver
);
usb_serial_deregister
(
&
hp49gp_device
);
}
module_init
(
hp49gp_init
);
module_exit
(
hp49gp_exit
);
MODULE_DESCRIPTION
(
DRIVER_DESC
);
MODULE_VERSION
(
DRIVER_VERSION
);
MODULE_LICENSE
(
"GPL"
);
drivers/usb/storage/unusual_devs.h
View file @
99805f47
...
...
@@ -517,14 +517,32 @@ UNUSUAL_DEV( 0x05ab, 0x5701, 0x0100, 0x0110,
0
),
#endif
/* Submitted by Sven Anderson <sven-linux@anderson.de>
* There are at least four ProductIDs used for iPods, so I added 0x1202 and
* 0x1204. They just need the US_FL_FIX_CAPACITY. As the bcdDevice appears
* to change with firmware updates, I changed the range to maximum for all
* iPod entries.
*/
UNUSUAL_DEV
(
0x05ac
,
0x1202
,
0x0000
,
0x9999
,
"Apple"
,
"iPod"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
/* Reported by Avi Kivity <avi@argo.co.il> */
UNUSUAL_DEV
(
0x05ac
,
0x1203
,
0x0001
,
0x0001
,
UNUSUAL_DEV
(
0x05ac
,
0x1203
,
0x0000
,
0x9999
,
"Apple"
,
"iPod"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
UNUSUAL_DEV
(
0x05ac
,
0x1204
,
0x0000
,
0x9999
,
"Apple"
,
"iPod"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
UNUSUAL_DEV
(
0x05ac
,
0x1205
,
0x000
1
,
0x0001
,
UNUSUAL_DEV
(
0x05ac
,
0x1205
,
0x000
0
,
0x9999
,
"Apple"
,
"iPod"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
...
...
scripts/mod/file2alias.c
View file @
99805f47
...
...
@@ -47,32 +47,31 @@ do { \
sprintf(str + strlen(str), "*"); \
} while(0)
/* Looks like "usb:vNpNdlNdhNdcNdscNdpNicNiscNipN" */
static
int
do_usb_entry
(
const
char
*
filename
,
struct
usb_device_id
*
id
,
char
*
alias
)
/* USB is special because the bcdDevice can be matched against a numeric range */
/* Looks like "usb:vNpNdNdcNdscNdpNicNiscNipN" */
static
void
do_usb_entry
(
struct
usb_device_id
*
id
,
unsigned
int
bcdDevice_initial
,
int
bcdDevice_initial_digits
,
unsigned
char
range_lo
,
unsigned
char
range_hi
,
struct
module
*
mod
)
{
id
->
match_flags
=
TO_NATIVE
(
id
->
match_flags
);
id
->
idVendor
=
TO_NATIVE
(
id
->
idVendor
);
id
->
idProduct
=
TO_NATIVE
(
id
->
idProduct
);
id
->
bcdDevice_lo
=
TO_NATIVE
(
id
->
bcdDevice_lo
);
id
->
bcdDevice_hi
=
TO_NATIVE
(
id
->
bcdDevice_hi
);
/*
* Some modules (visor) have empty slots as placeholder for
* run-time specification that results in catch-all alias
*/
if
(
!
(
id
->
idVendor
|
id
->
bDeviceClass
|
id
->
bInterfaceClass
))
return
1
;
char
alias
[
500
];
strcpy
(
alias
,
"usb:"
);
ADD
(
alias
,
"v"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_VENDOR
,
id
->
idVendor
);
ADD
(
alias
,
"p"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_PRODUCT
,
id
->
idProduct
);
ADD
(
alias
,
"dl"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_DEV_LO
,
id
->
bcdDevice_lo
);
ADD
(
alias
,
"dh"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_DEV_HI
,
id
->
bcdDevice_hi
);
strcat
(
alias
,
"d"
);
if
(
bcdDevice_initial_digits
)
sprintf
(
alias
+
strlen
(
alias
),
"%0*X"
,
bcdDevice_initial_digits
,
bcdDevice_initial
);
if
(
range_lo
==
range_hi
)
sprintf
(
alias
+
strlen
(
alias
),
"%u"
,
range_lo
);
else
if
(
range_lo
>
0
||
range_hi
<
9
)
sprintf
(
alias
+
strlen
(
alias
),
"[%u-%u]"
,
range_lo
,
range_hi
);
if
(
bcdDevice_initial_digits
<
(
sizeof
(
id
->
bcdDevice_lo
)
*
2
-
1
))
strcat
(
alias
,
"*"
);
ADD
(
alias
,
"dc"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_DEV_CLASS
,
id
->
bDeviceClass
);
ADD
(
alias
,
"dsc"
,
...
...
@@ -90,7 +89,73 @@ static int do_usb_entry(const char *filename,
ADD
(
alias
,
"ip"
,
id
->
match_flags
&
USB_DEVICE_ID_MATCH_INT_PROTOCOL
,
id
->
bInterfaceProtocol
);
return
1
;
/* Always end in a wildcard, for future extension */
if
(
alias
[
strlen
(
alias
)
-
1
]
!=
'*'
)
strcat
(
alias
,
"*"
);
buf_printf
(
&
mod
->
dev_table_buf
,
"MODULE_ALIAS(
\"
%s
\"
);
\n
"
,
alias
);
}
static
void
do_usb_entry_multi
(
struct
usb_device_id
*
id
,
struct
module
*
mod
)
{
unsigned
int
devlo
,
devhi
;
unsigned
char
chi
,
clo
;
int
ndigits
;
id
->
match_flags
=
TO_NATIVE
(
id
->
match_flags
);
id
->
idVendor
=
TO_NATIVE
(
id
->
idVendor
);
id
->
idProduct
=
TO_NATIVE
(
id
->
idProduct
);
devlo
=
id
->
match_flags
&
USB_DEVICE_ID_MATCH_DEV_LO
?
TO_NATIVE
(
id
->
bcdDevice_lo
)
:
0x0U
;
devhi
=
id
->
match_flags
&
USB_DEVICE_ID_MATCH_DEV_HI
?
TO_NATIVE
(
id
->
bcdDevice_hi
)
:
~
0x0U
;
/*
* Some modules (visor) have empty slots as placeholder for
* run-time specification that results in catch-all alias
*/
if
(
!
(
id
->
idVendor
|
id
->
bDeviceClass
|
id
->
bInterfaceClass
))
return
;
/* Convert numeric bcdDevice range into fnmatch-able pattern(s) */
for
(
ndigits
=
sizeof
(
id
->
bcdDevice_lo
)
*
2
-
1
;
devlo
<=
devhi
;
ndigits
--
)
{
clo
=
devlo
&
0xf
;
chi
=
devhi
&
0xf
;
if
(
chi
>
9
)
/* it's bcd not hex */
chi
=
9
;
devlo
>>=
4
;
devhi
>>=
4
;
if
(
devlo
==
devhi
||
!
ndigits
)
{
do_usb_entry
(
id
,
devlo
,
ndigits
,
clo
,
chi
,
mod
);
break
;
}
if
(
clo
>
0
)
do_usb_entry
(
id
,
devlo
++
,
ndigits
,
clo
,
9
,
mod
);
if
(
chi
<
9
)
do_usb_entry
(
id
,
devhi
--
,
ndigits
,
0
,
chi
,
mod
);
}
}
static
void
do_usb_table
(
void
*
symval
,
unsigned
long
size
,
struct
module
*
mod
)
{
unsigned
int
i
;
const
unsigned
long
id_size
=
sizeof
(
struct
usb_device_id
);
if
(
size
%
id_size
||
size
<
id_size
)
{
fprintf
(
stderr
,
"*** Warning: %s ids %lu bad size "
"(each on %lu)
\n
"
,
mod
->
name
,
size
,
id_size
);
}
/* Leave last one: it's the terminator. */
size
-=
id_size
;
for
(
i
=
0
;
i
<
size
;
i
+=
id_size
)
do_usb_entry_multi
(
symval
+
i
,
mod
);
}
/* Looks like: ieee1394:venNmoNspNverN */
...
...
@@ -280,8 +345,8 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
do_table
(
symval
,
sym
->
st_size
,
sizeof
(
struct
pci_device_id
),
do_pci_entry
,
mod
);
else
if
(
sym_is
(
symname
,
"__mod_usb_device_table"
))
do_table
(
symval
,
sym
->
st_size
,
sizeof
(
struct
usb_device_id
),
do_usb_entry
,
mod
);
/* special case to handle bcdDevice ranges */
do_usb_table
(
symval
,
sym
->
st_size
,
mod
);
else
if
(
sym_is
(
symname
,
"__mod_ieee1394_device_table"
))
do_table
(
symval
,
sym
->
st_size
,
sizeof
(
struct
ieee1394_device_id
),
do_ieee1394_entry
,
mod
);
...
...
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