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
f812d833
Commit
f812d833
authored
Nov 30, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/gregkh/linux/usb-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
ca6f8809
4965c6f6
Changes
27
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
456 additions
and
54 deletions
+456
-54
Documentation/usb/gadget_serial.txt
Documentation/usb/gadget_serial.txt
+332
-0
drivers/base/firmware_class.c
drivers/base/firmware_class.c
+1
-1
drivers/block/ub.c
drivers/block/ub.c
+6
-3
drivers/usb/Makefile
drivers/usb/Makefile
+1
-0
drivers/usb/core/message.c
drivers/usb/core/message.c
+6
-1
drivers/usb/core/urb.c
drivers/usb/core/urb.c
+5
-3
drivers/usb/core/usb.c
drivers/usb/core/usb.c
+1
-1
drivers/usb/core/usb.h
drivers/usb/core/usb.h
+15
-0
drivers/usb/gadget/ether.c
drivers/usb/gadget/ether.c
+10
-4
drivers/usb/gadget/file_storage.c
drivers/usb/gadget/file_storage.c
+2
-0
drivers/usb/gadget/gadget_chips.h
drivers/usb/gadget/gadget_chips.h
+6
-0
drivers/usb/gadget/serial.c
drivers/usb/gadget/serial.c
+3
-0
drivers/usb/gadget/zero.c
drivers/usb/gadget/zero.c
+2
-0
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-hcd.c
+8
-0
drivers/usb/host/ehci-hub.c
drivers/usb/host/ehci-hub.c
+3
-0
drivers/usb/host/ehci-q.c
drivers/usb/host/ehci-q.c
+2
-0
drivers/usb/host/ohci-q.c
drivers/usb/host/ohci-q.c
+2
-0
drivers/usb/host/uhci-hcd.c
drivers/usb/host/uhci-hcd.c
+4
-1
drivers/usb/input/ati_remote.c
drivers/usb/input/ati_remote.c
+4
-1
drivers/usb/input/hid-core.c
drivers/usb/input/hid-core.c
+2
-1
drivers/usb/input/touchkitusb.c
drivers/usb/input/touchkitusb.c
+15
-4
drivers/usb/net/usbnet.c
drivers/usb/net/usbnet.c
+1
-1
drivers/usb/serial/io_edgeport.c
drivers/usb/serial/io_edgeport.c
+5
-2
drivers/usb/serial/visor.c
drivers/usb/serial/visor.c
+1
-2
drivers/usb/storage/Kconfig
drivers/usb/storage/Kconfig
+11
-4
drivers/usb/storage/unusual_devs.h
drivers/usb/storage/unusual_devs.h
+8
-0
include/linux/usbdevice_fs.h
include/linux/usbdevice_fs.h
+0
-25
No files found.
Documentation/usb/gadget_serial.txt
0 → 100644
View file @
f812d833
This diff is collapsed.
Click to expand it.
drivers/base/firmware_class.c
View file @
f812d833
...
...
@@ -103,7 +103,7 @@ firmware_class_hotplug(struct class_device *class_dev, char **envp,
"FIRMWARE=%s"
,
fw_priv
->
fw_id
))
return
-
ENOMEM
;
envp
[
i
++
]
=
NULL
;
envp
[
i
]
=
NULL
;
return
0
;
}
...
...
drivers/block/ub.c
View file @
f812d833
...
...
@@ -36,7 +36,7 @@
#define DRV_NAME "ub"
#define DEVFS_NAME DRV_NAME
#define UB_MAJOR 1
25
/* Stolen from Experimental range for a week - XXX */
#define UB_MAJOR 1
80
/*
* Definitions which have to be scattered once we understand the layout better.
...
...
@@ -1535,8 +1535,11 @@ static int ub_bd_revalidate(struct gendisk *disk)
ub_revalidate
(
sc
);
/* This is pretty much a long term P3 */
if
(
!
atomic_read
(
&
sc
->
poison
))
{
/* Cover sc->dev */
printk
(
KERN_INFO
"%s: device %u capacity nsec %ld bsize %u
\n
"
,
sc
->
name
,
sc
->
dev
->
devnum
,
sc
->
capacity
.
nsec
,
sc
->
capacity
.
bsize
);
sc
->
name
,
sc
->
dev
->
devnum
,
sc
->
capacity
.
nsec
,
sc
->
capacity
.
bsize
);
}
/* XXX Support sector size switching like in sr.c */
blk_queue_hardsect_size
(
disk
->
queue
,
sc
->
capacity
.
bsize
);
...
...
drivers/usb/Makefile
View file @
f812d833
...
...
@@ -38,6 +38,7 @@ obj-$(CONFIG_USB_KONICAWC) += media/
obj-$(CONFIG_USB_OV511)
+=
media/
obj-$(CONFIG_USB_PWC)
+=
media/
obj-$(CONFIG_USB_SE401)
+=
media/
obj-$(CONFIG_USB_SN9C102)
+=
media/
obj-$(CONFIG_USB_STV680)
+=
media/
obj-$(CONFIG_USB_VICAM)
+=
media/
obj-$(CONFIG_USB_W9968CF)
+=
media/
...
...
drivers/usb/core/message.c
View file @
f812d833
...
...
@@ -243,14 +243,16 @@ static void sg_complete (struct urb *urb, struct pt_regs *regs)
// BUG ();
}
if
(
urb
->
status
&&
urb
->
status
!=
-
ECONNRESET
)
{
if
(
io
->
status
==
0
&&
urb
->
status
&&
urb
->
status
!=
-
ECONNRESET
)
{
int
i
,
found
,
status
;
io
->
status
=
urb
->
status
;
/* the previous urbs, and this one, completed already.
* unlink pending urbs so they won't rx/tx bad data.
* careful: unlink can sometimes be synchronous...
*/
spin_unlock
(
&
io
->
lock
);
for
(
i
=
0
,
found
=
0
;
i
<
io
->
entries
;
i
++
)
{
if
(
!
io
->
urbs
[
i
]
||
!
io
->
urbs
[
i
]
->
dev
)
continue
;
...
...
@@ -263,6 +265,7 @@ static void sg_complete (struct urb *urb, struct pt_regs *regs)
}
else
if
(
urb
==
io
->
urbs
[
i
])
found
=
1
;
}
spin_lock
(
&
io
->
lock
);
}
urb
->
dev
=
NULL
;
...
...
@@ -524,6 +527,7 @@ void usb_sg_cancel (struct usb_sg_request *io)
int
i
;
io
->
status
=
-
ECONNRESET
;
spin_unlock
(
&
io
->
lock
);
for
(
i
=
0
;
i
<
io
->
entries
;
i
++
)
{
int
retval
;
...
...
@@ -534,6 +538,7 @@ void usb_sg_cancel (struct usb_sg_request *io)
dev_warn
(
&
io
->
dev
->
dev
,
"%s, unlink --> %d
\n
"
,
__FUNCTION__
,
retval
);
}
spin_lock
(
&
io
->
lock
);
}
spin_unlock_irqrestore
(
&
io
->
lock
,
flags
);
}
...
...
drivers/usb/core/urb.c
View file @
f812d833
...
...
@@ -451,9 +451,11 @@ int usb_unlink_urb(struct urb *urb)
return
-
EINVAL
;
if
(
!
(
urb
->
transfer_flags
&
URB_ASYNC_UNLINK
))
{
#ifdef CONFIG_DEBUG_KERNEL
if
(
printk_ratelimit
())
{
printk
(
KERN_NOTICE
"usb_unlink_urb() is deprecated for "
"synchronous unlinks. Use usb_kill_urb() instead.
\n
"
);
WARN_ON
(
1
);
}
#endif
usb_kill_urb
(
urb
);
return
0
;
...
...
drivers/usb/core/usb.c
View file @
f812d833
...
...
@@ -656,7 +656,7 @@ static int usb_hotplug (struct device *dev, char **envp, int num_envp,
return
-
ENOMEM
;
}
envp
[
i
++
]
=
NULL
;
envp
[
i
]
=
NULL
;
return
0
;
}
...
...
drivers/usb/core/usb.h
View file @
f812d833
...
...
@@ -33,3 +33,18 @@ extern struct usb_driver usbfs_driver;
extern
struct
file_operations
usbfs_devices_fops
;
extern
struct
file_operations
usbfs_device_file_operations
;
extern
void
usbfs_conn_disc_event
(
void
);
struct
dev_state
{
struct
list_head
list
;
/* state list */
struct
usb_device
*
dev
;
struct
file
*
file
;
spinlock_t
lock
;
/* protects the async urb lists */
struct
list_head
async_pending
;
struct
list_head
async_completed
;
wait_queue_head_t
wait
;
/* wake up if a request completed */
unsigned
int
discsignr
;
struct
task_struct
*
disctask
;
void
__user
*
disccontext
;
unsigned
long
ifclaimed
;
};
drivers/usb/gadget/ether.c
View file @
f812d833
...
...
@@ -223,6 +223,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
#define DEV_CONFIG_CDC
#endif
#ifdef CONFIG_USB_GADGET_LH7A40X
#define DEV_CONFIG_CDC
#endif
#ifdef CONFIG_USB_GADGET_MQ11XX
#define DEV_CONFIG_CDC
#endif
...
...
@@ -235,6 +239,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
#define DEV_CONFIG_CDC
#endif
#ifdef CONFIG_USB_GADGET_PXA27X
#define DEV_CONFIG_CDC
#endif
/* For CDC-incapable hardware, choose the simple cdc subset.
* Anything that talks bulk (without notable bugs) can do this.
...
...
@@ -247,10 +255,6 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
#define DEV_CONFIG_SUBSET
#endif
#ifdef CONFIG_USB_GADGET_LH7A40X
#define DEV_CONFIG_CDC
#endif
#ifdef CONFIG_USB_GADGET_SA1100
/* use non-CDC for backwards compatibility */
#define DEV_CONFIG_SUBSET
...
...
@@ -2321,6 +2325,8 @@ eth_bind (struct usb_gadget *gadget)
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0209
);
}
else
if
(
gadget_is_n9604
(
gadget
))
{
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0210
);
}
else
if
(
gadget_is_pxa27x
(
gadget
))
{
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0211
);
}
else
{
/* can't assume CDC works. don't want to default to
* anything less functional on CDC-capable hardware,
...
...
drivers/usb/gadget/file_storage.c
View file @
f812d833
...
...
@@ -3739,6 +3739,8 @@ static int __init check_parameters(struct fsg_dev *fsg)
mod_data
.
release
=
0x0309
;
else
if
(
gadget_is_n9604
(
fsg
->
gadget
))
mod_data
.
release
=
0x0310
;
else
if
(
gadget_is_pxa27x
(
fsg
->
gadget
))
mod_data
.
release
=
0x0311
;
else
{
WARN
(
fsg
,
"controller '%s' not recognized
\n
"
,
fsg
->
gadget
->
name
);
...
...
drivers/usb/gadget/gadget_chips.h
View file @
f812d833
...
...
@@ -68,6 +68,12 @@
#define gadget_is_n9604(g) 0
#endif
#ifdef CONFIG_USB_GADGET_PXA27X
#define gadget_is_pxa27x(g) !strcmp("pxa27x_udc", (g)->name)
#else
#define gadget_is_pxa27x(g) 0
#endif
// CONFIG_USB_GADGET_AT91RM9200
// CONFIG_USB_GADGET_SX2
// CONFIG_USB_GADGET_AU1X00
...
...
drivers/usb/gadget/serial.c
View file @
f812d833
...
...
@@ -1529,6 +1529,9 @@ static int gs_bind(struct usb_gadget *gadget)
}
else
if
(
gadget_is_n9604
(
gadget
))
{
gs_device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
GS_VERSION_NUM
|
0x0009
);
}
else
if
(
gadget_is_pxa27x
(
gadget
))
{
gs_device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
GS_VERSION_NUM
|
0x0011
);
}
else
{
printk
(
KERN_WARNING
"gs_bind: controller '%s' not recognized
\n
"
,
gadget
->
name
);
...
...
drivers/usb/gadget/zero.c
View file @
f812d833
...
...
@@ -1190,6 +1190,8 @@ zero_bind (struct usb_gadget *gadget)
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0209
);
}
else
if
(
gadget_is_n9604
(
gadget
))
{
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0210
);
}
else
if
(
gadget_is_pxa27x
(
gadget
))
{
device_desc
.
bcdDevice
=
__constant_cpu_to_le16
(
0x0211
);
}
else
{
/* gadget zero is so simple (for now, no altsettings) that
* it SHOULD NOT have problems with bulk-capable hardware.
...
...
drivers/usb/host/ehci-hcd.c
View file @
f812d833
...
...
@@ -379,6 +379,14 @@ static int ehci_hc_reset (struct usb_hcd *hcd)
/* cache this readonly data; minimize PCI reads */
ehci
->
hcs_params
=
readl
(
&
ehci
->
caps
->
hcs_params
);
/* at least the Genesys GL880S needs fixup here */
temp
=
HCS_N_CC
(
ehci
->
hcs_params
)
*
HCS_N_PCC
(
ehci
->
hcs_params
);
temp
&=
0x0f
;
if
(
temp
&&
HCS_N_PORTS
(
ehci
->
hcs_params
)
>
temp
)
{
temp
|=
(
ehci
->
hcs_params
&
~
0xf
);
ehci
->
hcs_params
=
temp
;
}
/* force HC to halt state */
return
ehci_halt
(
ehci
);
}
...
...
drivers/usb/host/ehci-hub.c
View file @
f812d833
...
...
@@ -281,8 +281,11 @@ ehci_hub_descriptor (
temp
=
0x0008
;
/* per-port overcurrent reporting */
if
(
HCS_PPC
(
ehci
->
hcs_params
))
temp
|=
0x0001
;
/* per-port power control */
#if 0
// re-enable when we support USB_PORT_FEAT_INDICATOR below.
if (HCS_INDICATOR (ehci->hcs_params))
temp |= 0x0080; /* per-port indicators (LEDs) */
#endif
desc
->
wHubCharacteristics
=
cpu_to_le16
(
temp
);
}
...
...
drivers/usb/host/ehci-q.c
View file @
f812d833
...
...
@@ -175,6 +175,8 @@ static void qtd_copy_status (
static
void
ehci_urb_done
(
struct
ehci_hcd
*
ehci
,
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
__releases
(
ehci
->
lock
)
__acquires
(
ehci
->
lock
)
{
if
(
likely
(
urb
->
hcpriv
!=
0
))
{
struct
ehci_qh
*
qh
=
(
struct
ehci_qh
*
)
urb
->
hcpriv
;
...
...
drivers/usb/host/ohci-q.c
View file @
f812d833
...
...
@@ -35,6 +35,8 @@ static void urb_free_priv (struct ohci_hcd *hc, urb_priv_t *urb_priv)
*/
static
void
finish_urb
(
struct
ohci_hcd
*
ohci
,
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
__releases
(
ohci
->
lock
)
__acquires
(
ohci
->
lock
)
{
// ASSERT (urb->hcpriv != 0);
...
...
drivers/usb/host/uhci-hcd.c
View file @
f812d833
...
...
@@ -1602,7 +1602,10 @@ static void uhci_free_pending_tds(struct uhci_hcd *uhci)
}
}
static
void
uhci_finish_urb
(
struct
usb_hcd
*
hcd
,
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
static
void
uhci_finish_urb
(
struct
usb_hcd
*
hcd
,
struct
urb
*
urb
,
struct
pt_regs
*
regs
)
__releases
(
uhci
->
schedule_lock
)
__acquires
(
uhci
->
schedule_lock
)
{
struct
uhci_hcd
*
uhci
=
hcd_to_uhci
(
hcd
);
...
...
drivers/usb/input/ati_remote.c
View file @
f812d833
...
...
@@ -102,6 +102,7 @@
#define ATI_REMOTE_VENDOR_ID 0x0bc7
#define ATI_REMOTE_PRODUCT_ID 0x004
#define LOLA_REMOTE_PRODUCT_ID 0x002
#define MEDION_REMOTE_PRODUCT_ID 0x006
#define DRIVER_VERSION "2.2.1"
#define DRIVER_AUTHOR "Torrey Hoffman <thoffman@arnor.net>"
...
...
@@ -126,6 +127,7 @@ MODULE_PARM_DESC(debug, "Enable extra debug messages and information");
static
struct
usb_device_id
ati_remote_table
[]
=
{
{
USB_DEVICE
(
ATI_REMOTE_VENDOR_ID
,
ATI_REMOTE_PRODUCT_ID
)
},
{
USB_DEVICE
(
ATI_REMOTE_VENDOR_ID
,
LOLA_REMOTE_PRODUCT_ID
)
},
{
USB_DEVICE
(
ATI_REMOTE_VENDOR_ID
,
MEDION_REMOTE_PRODUCT_ID
)
},
{}
/* Terminating entry */
};
...
...
@@ -730,7 +732,8 @@ static int ati_remote_probe(struct usb_interface *interface, const struct usb_de
/* See if the offered device matches what we can accept */
if
((
udev
->
descriptor
.
idVendor
!=
ATI_REMOTE_VENDOR_ID
)
||
(
(
udev
->
descriptor
.
idProduct
!=
ATI_REMOTE_PRODUCT_ID
)
&&
(
udev
->
descriptor
.
idProduct
!=
LOLA_REMOTE_PRODUCT_ID
)
))
(
udev
->
descriptor
.
idProduct
!=
LOLA_REMOTE_PRODUCT_ID
)
&&
(
udev
->
descriptor
.
idProduct
!=
MEDION_REMOTE_PRODUCT_ID
)
))
return
-
ENODEV
;
/* Allocate and clear an ati_remote struct */
...
...
drivers/usb/input/hid-core.c
View file @
f812d833
...
...
@@ -94,7 +94,8 @@ static struct hid_field *hid_register_field(struct hid_report *report, unsigned
memset
(
field
,
0
,
sizeof
(
struct
hid_field
)
+
usages
*
sizeof
(
struct
hid_usage
)
+
values
*
sizeof
(
unsigned
));
report
->
field
[
report
->
maxfield
++
]
=
field
;
field
->
index
=
report
->
maxfield
++
;
report
->
field
[
field
->
index
]
=
field
;
field
->
usage
=
(
struct
hid_usage
*
)(
field
+
1
);
field
->
value
=
(
unsigned
*
)(
field
->
usage
+
usages
);
field
->
report
=
report
;
...
...
drivers/usb/input/touchkitusb.c
View file @
f812d833
...
...
@@ -59,6 +59,10 @@
#define DRIVER_AUTHOR "Daniel Ritz <daniel.ritz@gmx.ch>"
#define DRIVER_DESC "eGalax TouchKit USB HID Touchscreen Driver"
static
int
swap_xy
;
module_param
(
swap_xy
,
bool
,
0644
);
MODULE_PARM_DESC
(
swap_xy
,
"If set X and Y axes are swapped."
);
struct
touchkit_usb
{
unsigned
char
*
data
;
dma_addr_t
data_dma
;
...
...
@@ -80,6 +84,7 @@ static void touchkit_irq(struct urb *urb, struct pt_regs *regs)
{
struct
touchkit_usb
*
touchkit
=
urb
->
context
;
int
retval
;
int
x
,
y
;
switch
(
urb
->
status
)
{
case
0
:
...
...
@@ -103,13 +108,19 @@ static void touchkit_irq(struct urb *urb, struct pt_regs *regs)
goto
exit
;
}
if
(
swap_xy
)
{
y
=
TOUCHKIT_GET_X
(
touchkit
->
data
);
x
=
TOUCHKIT_GET_Y
(
touchkit
->
data
);
}
else
{
x
=
TOUCHKIT_GET_X
(
touchkit
->
data
);
y
=
TOUCHKIT_GET_Y
(
touchkit
->
data
);
}
input_regs
(
&
touchkit
->
input
,
regs
);
input_report_key
(
&
touchkit
->
input
,
BTN_TOUCH
,
TOUCHKIT_GET_TOUCHED
(
touchkit
->
data
));
input_report_abs
(
&
touchkit
->
input
,
ABS_X
,
TOUCHKIT_GET_X
(
touchkit
->
data
));
input_report_abs
(
&
touchkit
->
input
,
ABS_Y
,
TOUCHKIT_GET_Y
(
touchkit
->
data
));
input_report_abs
(
&
touchkit
->
input
,
ABS_X
,
x
);
input_report_abs
(
&
touchkit
->
input
,
ABS_Y
,
y
);
input_sync
(
&
touchkit
->
input
);
exit:
...
...
drivers/usb/net/usbnet.c
View file @
f812d833
...
...
@@ -527,7 +527,7 @@ static void ax8817x_interrupt_complete(struct urb *urb, struct pt_regs *regs)
devdbg
(
dev
,
"ax8817x - Link Status is: %d"
,
link
);
}
}
usb_submit_urb
(
data
->
int_urb
,
GFP_
KERNEL
);
usb_submit_urb
(
data
->
int_urb
,
GFP_
ATOMIC
);
}
}
...
...
drivers/usb/serial/io_edgeport.c
View file @
f812d833
...
...
@@ -2797,9 +2797,12 @@ static void change_port_settings (struct edgeport_port *edge_port, struct termio
static
void
unicode_to_ascii
(
char
*
string
,
__le16
*
unicode
,
int
unicode_size
)
{
int
i
;
for
(
i
=
0
;
i
<
unicode_size
;
++
i
)
{
if
(
unicode_size
<=
0
)
return
;
for
(
i
=
0
;
i
<
unicode_size
;
++
i
)
string
[
i
]
=
(
char
)(
le16_to_cpu
(
unicode
[
i
]));
}
string
[
unicode_size
]
=
0x00
;
}
...
...
drivers/usb/serial/visor.c
View file @
f812d833
...
...
@@ -494,10 +494,9 @@ static int visor_write (struct usb_serial_port *port, const unsigned char *buf,
spin_lock_irqsave
(
&
priv
->
lock
,
flags
);
if
(
priv
->
outstanding_urbs
>
URB_UPPER_LIMIT
)
{
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
d
ev_dbg
(
&
port
->
dev
,
"write limit hit
\n
"
);
d
bg
(
"%s - write limit hit
\n
"
,
__FUNCTION__
);
return
0
;
}
++
priv
->
outstanding_urbs
;
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
buffer
=
kmalloc
(
count
,
GFP_ATOMIC
);
...
...
drivers/usb/storage/Kconfig
View file @
f812d833
...
...
@@ -2,16 +2,23 @@
# USB Storage driver configuration
#
comment "NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information"
config USB_STORAGE
tristate "USB Mass Storage support"
depends on USB
select SCSI
---help---
Say Y here if you want to connect USB mass storage devices to your
computer's USB port. This is the driver you need for USB floppy drives,
USB hard disks, USB tape drives and USB CD-ROMs, along with
similar devices. This driver may also be used for some cameras and
card readers.
computer's USB port. This is the driver you need for USB
floppy drives, USB hard disks, USB tape drives, USB CD-ROMs,
USB flash devices, and memory sticks, along with
similar devices. This driver may also be used for some cameras
and card readers.
This option 'selects' (turns on, enables) 'SCSI', but you
probably also need 'SCSI device support: SCSI disk support'
(BLK_DEV_SD) for most USB storage devices.
To compile this driver as a module, choose M here: the
module will be called usb-storage.
...
...
drivers/usb/storage/unusual_devs.h
View file @
f812d833
...
...
@@ -274,6 +274,14 @@ UNUSUAL_DEV( 0x052b, 0x1801, 0x0100, 0x0100,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_IGNORE_RESIDUE
),
/* Another Yakumo camera.
* Reported by Michele Alzetta <michele.alzetta@aliceposta.it> */
UNUSUAL_DEV
(
0x052b
,
0x1804
,
0x0100
,
0x0100
,
"Tekom Technologies, Inc"
,
"300_CAMERA"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_IGNORE_RESIDUE
),
/* Reported by Iacopo Spalletti <avvisi@spalletti.it> */
UNUSUAL_DEV
(
0x052b
,
0x1807
,
0x0100
,
0x0100
,
"Tekom Technologies, Inc"
,
...
...
include/linux/usbdevice_fs.h
View file @
f812d833
...
...
@@ -144,29 +144,4 @@ struct usbdevfs_hub_portinfo {
#define USBDEVFS_DISCONNECT _IO('U', 22)
#define USBDEVFS_CONNECT _IO('U', 23)
/* --------------------------------------------------------------------- */
#ifdef __KERNEL__
#include <linux/list.h>
#include <asm/semaphore.h>
struct
dev_state
{
struct
list_head
list
;
/* state list */
struct
usb_device
*
dev
;
struct
file
*
file
;
spinlock_t
lock
;
/* protects the async urb lists */
struct
list_head
async_pending
;
struct
list_head
async_completed
;
wait_queue_head_t
wait
;
/* wake up if a request completed */
unsigned
int
discsignr
;
struct
task_struct
*
disctask
;
void
__user
*
disccontext
;
unsigned
long
ifclaimed
;
};
#endif
/* __KERNEL__ */
/* --------------------------------------------------------------------- */
#endif
/* _LINUX_USBDEVICE_FS_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