Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
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 @@ resubmit:
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 @@ exit:
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 @@ err_zd:
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