Commit e6600d80 authored by Linus Torvalds's avatar Linus Torvalds
parents a1d4ebdb 3cb4a4f7
...@@ -431,7 +431,7 @@ int usb_sg_init ( ...@@ -431,7 +431,7 @@ int usb_sg_init (
* (2) error, where io->status is a negative errno value. The number * (2) error, where io->status is a negative errno value. The number
* of io->bytes transferred before the error is usually less * of io->bytes transferred before the error is usually less
* than requested, and can be nonzero. * than requested, and can be nonzero.
* (3) cancelation, a type of error with status -ECONNRESET that * (3) cancellation, a type of error with status -ECONNRESET that
* is initiated by usb_sg_cancel(). * is initiated by usb_sg_cancel().
* *
* When this function returns, all memory allocated through usb_sg_init() or * When this function returns, all memory allocated through usb_sg_init() or
...@@ -1282,7 +1282,7 @@ static void release_interface(struct device *dev) ...@@ -1282,7 +1282,7 @@ static void release_interface(struct device *dev)
* bus rwsem; usb device driver probe() methods cannot use this routine. * bus rwsem; usb device driver probe() methods cannot use this routine.
* *
* Returns zero on success, or else the status code returned by the * Returns zero on success, or else the status code returned by the
* underlying call that failed. On succesful completion, each interface * underlying call that failed. On successful completion, each interface
* in the original device configuration has been destroyed, and each one * in the original device configuration has been destroyed, and each one
* in the new configuration has been probed by all relevant usb device * in the new configuration has been probed by all relevant usb device
* drivers currently known to the kernel. * drivers currently known to the kernel.
......
...@@ -121,7 +121,7 @@ struct urb * usb_get_urb(struct urb *urb) ...@@ -121,7 +121,7 @@ struct urb * usb_get_urb(struct urb *urb)
* describing that request to the USB subsystem. Request completion will * describing that request to the USB subsystem. Request completion will
* be indicated later, asynchronously, by calling the completion handler. * be indicated later, asynchronously, by calling the completion handler.
* The three types of completion are success, error, and unlink * The three types of completion are success, error, and unlink
* (a software-induced fault, also called "request cancelation"). * (a software-induced fault, also called "request cancellation").
* *
* URBs may be submitted in interrupt context. * URBs may be submitted in interrupt context.
* *
...@@ -170,7 +170,7 @@ struct urb * usb_get_urb(struct urb *urb) ...@@ -170,7 +170,7 @@ struct urb * usb_get_urb(struct urb *urb)
* As of Linux 2.6, all USB endpoint transfer queues support depths greater * As of Linux 2.6, all USB endpoint transfer queues support depths greater
* than one. This was previously a HCD-specific behavior, except for ISO * than one. This was previously a HCD-specific behavior, except for ISO
* transfers. Non-isochronous endpoint queues are inactive during cleanup * transfers. Non-isochronous endpoint queues are inactive during cleanup
* after faults (transfer errors or cancelation). * after faults (transfer errors or cancellation).
* *
* Reserved Bandwidth Transfers: * Reserved Bandwidth Transfers:
* *
...@@ -395,7 +395,7 @@ int usb_submit_urb(struct urb *urb, int mem_flags) ...@@ -395,7 +395,7 @@ int usb_submit_urb(struct urb *urb, int mem_flags)
* *
* This routine cancels an in-progress request. URBs complete only * This routine cancels an in-progress request. URBs complete only
* once per submission, and may be canceled only once per submission. * once per submission, and may be canceled only once per submission.
* Successful cancelation means the requests's completion handler will * Successful cancellation means the requests's completion handler will
* be called with a status code indicating that the request has been * be called with a status code indicating that the request has been
* canceled (rather than any other code) and will quickly be removed * canceled (rather than any other code) and will quickly be removed
* from host controller data structures. * from host controller data structures.
......
...@@ -569,7 +569,7 @@ static const struct usb_cdc_ether_desc ether_desc = { ...@@ -569,7 +569,7 @@ static const struct usb_cdc_ether_desc ether_desc = {
/* include the status endpoint if we can, even where it's optional. /* include the status endpoint if we can, even where it's optional.
* use wMaxPacketSize big enough to fit CDC_NOTIFY_SPEED_CHANGE in one * use wMaxPacketSize big enough to fit CDC_NOTIFY_SPEED_CHANGE in one
* packet, to simplify cancelation; and a big transfer interval, to * packet, to simplify cancellation; and a big transfer interval, to
* waste less bandwidth. * waste less bandwidth.
* *
* some drivers (like Linux 2.4 cdc-ether!) "need" it to exist even * some drivers (like Linux 2.4 cdc-ether!) "need" it to exist even
......
...@@ -275,7 +275,7 @@ static const char *CHIP; ...@@ -275,7 +275,7 @@ static const char *CHIP;
* *
* After opening, configure non-control endpoints. Then use normal * After opening, configure non-control endpoints. Then use normal
* stream read() and write() requests; and maybe ioctl() to get more * stream read() and write() requests; and maybe ioctl() to get more
* precise FIFO status when recovering from cancelation. * precise FIFO status when recovering from cancellation.
*/ */
static void epio_complete (struct usb_ep *ep, struct usb_request *req) static void epio_complete (struct usb_ep *ep, struct usb_request *req)
......
...@@ -705,7 +705,7 @@ void nuke(struct lh7a40x_ep *ep, int status) ...@@ -705,7 +705,7 @@ void nuke(struct lh7a40x_ep *ep, int status)
done(ep, req, status); done(ep, req, status);
} }
/* Disable IRQ if EP is enabled (has decriptor) */ /* Disable IRQ if EP is enabled (has descriptor) */
if (ep->desc) if (ep->desc)
pio_irq_disable(ep_index(ep)); pio_irq_disable(ep_index(ep));
} }
......
...@@ -240,7 +240,7 @@ struct gs_dev { ...@@ -240,7 +240,7 @@ struct gs_dev {
struct usb_ep *dev_notify_ep; /* address of notify endpoint */ struct usb_ep *dev_notify_ep; /* address of notify endpoint */
struct usb_ep *dev_in_ep; /* address of in endpoint */ struct usb_ep *dev_in_ep; /* address of in endpoint */
struct usb_ep *dev_out_ep; /* address of out endpoint */ struct usb_ep *dev_out_ep; /* address of out endpoint */
struct usb_endpoint_descriptor /* desciptor of notify ep */ struct usb_endpoint_descriptor /* descriptor of notify ep */
*dev_notify_ep_desc; *dev_notify_ep_desc;
struct usb_endpoint_descriptor /* descriptor of in endpoint */ struct usb_endpoint_descriptor /* descriptor of in endpoint */
*dev_in_ep_desc; *dev_in_ep_desc;
......
...@@ -346,6 +346,22 @@ ehci_reboot (struct notifier_block *self, unsigned long code, void *null) ...@@ -346,6 +346,22 @@ ehci_reboot (struct notifier_block *self, unsigned long code, void *null)
return 0; return 0;
} }
static void ehci_port_power (struct ehci_hcd *ehci, int is_on)
{
unsigned port;
if (!HCS_PPC (ehci->hcs_params))
return;
ehci_dbg (ehci, "...power%s ports...\n", is_on ? "up" : "down");
for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; )
(void) ehci_hub_control(ehci_to_hcd(ehci),
is_on ? SetPortFeature : ClearPortFeature,
USB_PORT_FEAT_POWER,
port--, NULL, 0);
msleep(20);
}
/* called by khubd or root hub init threads */ /* called by khubd or root hub init threads */
...@@ -362,8 +378,10 @@ static int ehci_hc_reset (struct usb_hcd *hcd) ...@@ -362,8 +378,10 @@ static int ehci_hc_reset (struct usb_hcd *hcd)
dbg_hcs_params (ehci, "reset"); dbg_hcs_params (ehci, "reset");
dbg_hcc_params (ehci, "reset"); dbg_hcc_params (ehci, "reset");
/* cache this readonly data; minimize chip reads */
ehci->hcs_params = readl (&ehci->caps->hcs_params);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
/* EHCI 0.96 and later may have "extended capabilities" */
if (hcd->self.controller->bus == &pci_bus_type) { if (hcd->self.controller->bus == &pci_bus_type) {
struct pci_dev *pdev = to_pci_dev(hcd->self.controller); struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
...@@ -383,9 +401,30 @@ static int ehci_hc_reset (struct usb_hcd *hcd) ...@@ -383,9 +401,30 @@ static int ehci_hc_reset (struct usb_hcd *hcd)
break; break;
} }
/* optional debug port, normally in the first BAR */
temp = pci_find_capability (pdev, 0x0a);
if (temp) {
pci_read_config_dword(pdev, temp, &temp);
temp >>= 16;
if ((temp & (3 << 13)) == (1 << 13)) {
temp &= 0x1fff;
ehci->debug = hcd->regs + temp;
temp = readl (&ehci->debug->control);
ehci_info (ehci, "debug port %d%s\n",
HCS_DEBUG_PORT(ehci->hcs_params),
(temp & DBGP_ENABLED)
? " IN USE"
: "");
if (!(temp & DBGP_ENABLED))
ehci->debug = NULL;
}
}
temp = HCC_EXT_CAPS (readl (&ehci->caps->hcc_params)); temp = HCC_EXT_CAPS (readl (&ehci->caps->hcc_params));
} else } else
temp = 0; temp = 0;
/* EHCI 0.96 and later may have "extended capabilities" */
while (temp && count--) { while (temp && count--) {
u32 cap; u32 cap;
...@@ -414,8 +453,7 @@ static int ehci_hc_reset (struct usb_hcd *hcd) ...@@ -414,8 +453,7 @@ static int ehci_hc_reset (struct usb_hcd *hcd)
ehci_reset (ehci); ehci_reset (ehci);
#endif #endif
/* cache this readonly data; minimize PCI reads */ ehci_port_power (ehci, 0);
ehci->hcs_params = readl (&ehci->caps->hcs_params);
/* at least the Genesys GL880S needs fixup here */ /* at least the Genesys GL880S needs fixup here */
temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params); temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);
...@@ -657,16 +695,11 @@ static int ehci_start (struct usb_hcd *hcd) ...@@ -657,16 +695,11 @@ static int ehci_start (struct usb_hcd *hcd)
static void ehci_stop (struct usb_hcd *hcd) static void ehci_stop (struct usb_hcd *hcd)
{ {
struct ehci_hcd *ehci = hcd_to_ehci (hcd); struct ehci_hcd *ehci = hcd_to_ehci (hcd);
u8 rh_ports, port;
ehci_dbg (ehci, "stop\n"); ehci_dbg (ehci, "stop\n");
/* Turn off port power on all root hub ports. */ /* Turn off port power on all root hub ports. */
rh_ports = HCS_N_PORTS (ehci->hcs_params); ehci_port_power (ehci, 0);
for (port = 1; port <= rh_ports; port++)
(void) ehci_hub_control(hcd,
ClearPortFeature, USB_PORT_FEAT_POWER,
port, NULL, 0);
/* no more interrupts ... */ /* no more interrupts ... */
del_timer_sync (&ehci->watchdog); del_timer_sync (&ehci->watchdog);
...@@ -748,7 +781,6 @@ static int ehci_resume (struct usb_hcd *hcd) ...@@ -748,7 +781,6 @@ static int ehci_resume (struct usb_hcd *hcd)
unsigned port; unsigned port;
struct usb_device *root = hcd->self.root_hub; struct usb_device *root = hcd->self.root_hub;
int retval = -EINVAL; int retval = -EINVAL;
int powerup = 0;
// maybe restore (PCI) FLADJ // maybe restore (PCI) FLADJ
...@@ -766,8 +798,6 @@ static int ehci_resume (struct usb_hcd *hcd) ...@@ -766,8 +798,6 @@ static int ehci_resume (struct usb_hcd *hcd)
up (&hcd->self.root_hub->serialize); up (&hcd->self.root_hub->serialize);
break; break;
} }
if ((status & PORT_POWER) == 0)
powerup = 1;
if (!root->children [port]) if (!root->children [port])
continue; continue;
dbg_port (ehci, __FUNCTION__, port + 1, status); dbg_port (ehci, __FUNCTION__, port + 1, status);
...@@ -794,16 +824,9 @@ static int ehci_resume (struct usb_hcd *hcd) ...@@ -794,16 +824,9 @@ static int ehci_resume (struct usb_hcd *hcd)
retval = ehci_start (hcd); retval = ehci_start (hcd);
/* here we "know" root ports should always stay powered; /* here we "know" root ports should always stay powered;
* but some controllers may lost all power. * but some controllers may lose all power.
*/ */
if (powerup) { ehci_port_power (ehci, 1);
ehci_dbg (ehci, "...powerup ports...\n");
for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; )
(void) ehci_hub_control(hcd,
SetPortFeature, USB_PORT_FEAT_POWER,
port--, NULL, 0);
msleep(20);
}
} }
return retval; return retval;
......
...@@ -281,6 +281,8 @@ ehci_hub_descriptor ( ...@@ -281,6 +281,8 @@ ehci_hub_descriptor (
temp = 0x0008; /* per-port overcurrent reporting */ temp = 0x0008; /* per-port overcurrent reporting */
if (HCS_PPC (ehci->hcs_params)) if (HCS_PPC (ehci->hcs_params))
temp |= 0x0001; /* per-port power control */ temp |= 0x0001; /* per-port power control */
else
temp |= 0x0002; /* no power switching */
#if 0 #if 0
// re-enable when we support USB_PORT_FEAT_INDICATOR below. // re-enable when we support USB_PORT_FEAT_INDICATOR below.
if (HCS_INDICATOR (ehci->hcs_params)) if (HCS_INDICATOR (ehci->hcs_params))
......
...@@ -47,6 +47,12 @@ struct ehci_stats { ...@@ -47,6 +47,12 @@ struct ehci_stats {
#define EHCI_MAX_ROOT_PORTS 15 /* see HCS_N_PORTS */ #define EHCI_MAX_ROOT_PORTS 15 /* see HCS_N_PORTS */
struct ehci_hcd { /* one per controller */ struct ehci_hcd { /* one per controller */
/* glue to PCI and HCD framework */
struct ehci_caps __iomem *caps;
struct ehci_regs __iomem *regs;
struct ehci_dbg_port __iomem *debug;
__u32 hcs_params; /* cached register copy */
spinlock_t lock; spinlock_t lock;
/* async schedule support */ /* async schedule support */
...@@ -84,11 +90,6 @@ struct ehci_hcd { /* one per controller */ ...@@ -84,11 +90,6 @@ struct ehci_hcd { /* one per controller */
unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */
/* glue to PCI and HCD framework */
struct ehci_caps __iomem *caps;
struct ehci_regs __iomem *regs;
__u32 hcs_params; /* cached register copy */
/* irq statistics */ /* irq statistics */
#ifdef EHCI_STATS #ifdef EHCI_STATS
struct ehci_stats stats; struct ehci_stats stats;
...@@ -165,7 +166,7 @@ struct ehci_caps { ...@@ -165,7 +166,7 @@ struct ehci_caps {
/* these fields are specified as 8 and 16 bit registers, /* these fields are specified as 8 and 16 bit registers,
* but some hosts can't perform 8 or 16 bit PCI accesses. * but some hosts can't perform 8 or 16 bit PCI accesses.
*/ */
u32 hc_capbase; u32 hc_capbase;
#define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */ #define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */
#define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */ #define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */
u32 hcs_params; /* HCSPARAMS - offset 0x4 */ u32 hcs_params; /* HCSPARAMS - offset 0x4 */
...@@ -273,7 +274,7 @@ struct ehci_dbg_port { ...@@ -273,7 +274,7 @@ struct ehci_dbg_port {
#define DBGP_ENABLED (1<<28) #define DBGP_ENABLED (1<<28)
#define DBGP_DONE (1<<16) #define DBGP_DONE (1<<16)
#define DBGP_INUSE (1<<10) #define DBGP_INUSE (1<<10)
#define DBGP_ERRCODE(x) (((x)>>7)&0x0f) #define DBGP_ERRCODE(x) (((x)>>7)&0x07)
# define DBGP_ERR_BAD 1 # define DBGP_ERR_BAD 1
# define DBGP_ERR_SIGNAL 2 # define DBGP_ERR_SIGNAL 2
#define DBGP_ERROR (1<<6) #define DBGP_ERROR (1<<6)
...@@ -282,11 +283,11 @@ struct ehci_dbg_port { ...@@ -282,11 +283,11 @@ struct ehci_dbg_port {
#define DBGP_LEN(x) (((x)>>0)&0x0f) #define DBGP_LEN(x) (((x)>>0)&0x0f)
u32 pids; u32 pids;
#define DBGP_PID_GET(x) (((x)>>16)&0xff) #define DBGP_PID_GET(x) (((x)>>16)&0xff)
#define DBGP_PID_SET(data,tok) (((data)<<8)|(tok)); #define DBGP_PID_SET(data,tok) (((data)<<8)|(tok))
u32 data03; u32 data03;
u32 data47; u32 data47;
u32 address; u32 address;
#define DBGP_EPADDR(dev,ep) (((dev)<<8)|(ep)); #define DBGP_EPADDR(dev,ep) (((dev)<<8)|(ep))
} __attribute__ ((packed)); } __attribute__ ((packed));
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
......
...@@ -4329,7 +4329,7 @@ static int __init etrax_usb_hc_init(void) ...@@ -4329,7 +4329,7 @@ static int __init etrax_usb_hc_init(void)
bus->bus_name="ETRAX 100LX"; bus->bus_name="ETRAX 100LX";
bus->hcpriv = hc; bus->hcpriv = hc;
/* Initalize RH to the default address. /* Initialize RH to the default address.
And make sure that we have no status change indication */ And make sure that we have no status change indication */
hc->rh.numports = 2; /* The RH has two ports */ hc->rh.numports = 2; /* The RH has two ports */
hc->rh.devnum = 1; hc->rh.devnum = 1;
......
...@@ -134,7 +134,7 @@ static void port_power(struct sl811 *sl811, int is_on) ...@@ -134,7 +134,7 @@ static void port_power(struct sl811 *sl811, int is_on)
/* This is a PIO-only HCD. Queueing appends URBs to the endpoint's queue, /* This is a PIO-only HCD. Queueing appends URBs to the endpoint's queue,
* and may start I/O. Endpoint queues are scanned during completion irq * and may start I/O. Endpoint queues are scanned during completion irq
* handlers (one per packet: ACK, NAK, faults, etc) and urb cancelation. * handlers (one per packet: ACK, NAK, faults, etc) and urb cancellation.
* *
* Using an external DMA engine to copy a packet at a time could work, * Using an external DMA engine to copy a packet at a time could work,
* though setup/teardown costs may be too big to make it worthwhile. * though setup/teardown costs may be too big to make it worthwhile.
...@@ -738,7 +738,7 @@ static irqreturn_t sl811h_irq(struct usb_hcd *hcd, struct pt_regs *regs) ...@@ -738,7 +738,7 @@ static irqreturn_t sl811h_irq(struct usb_hcd *hcd, struct pt_regs *regs)
} }
#endif #endif
/* port status seems wierd until after reset, so /* port status seems weird until after reset, so
* force the reset and make khubd clean up later. * force the reset and make khubd clean up later.
*/ */
sl811->port1 |= (1 << USB_PORT_FEAT_C_CONNECTION) sl811->port1 |= (1 << USB_PORT_FEAT_C_CONNECTION)
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
* *
* *
* The driver brings the USB functions of the MDC800 to Linux. * The driver brings the USB functions of the MDC800 to Linux.
* To use the Camera you must support the USB Protocoll of the camera * To use the Camera you must support the USB Protocol of the camera
* to the Kernel Node. * to the Kernel Node.
* The Driver uses a misc device Node. Create it with : * The Driver uses a misc device Node. Create it with :
* mknod /dev/mustek c 180 32 * mknod /dev/mustek c 180 32
......
...@@ -386,7 +386,7 @@ static int aiptek_convert_from_2s_complement(unsigned char c) ...@@ -386,7 +386,7 @@ static int aiptek_convert_from_2s_complement(unsigned char c)
* convention above.) I therefore have taken over REL_MISC and ABS_MISC * convention above.) I therefore have taken over REL_MISC and ABS_MISC
* (for relative and absolute reports, respectively) for communicating * (for relative and absolute reports, respectively) for communicating
* Proximity. Why two events? I thought it interesting to know if the * Proximity. Why two events? I thought it interesting to know if the
* Proximity event occured while the tablet was in absolute or relative * Proximity event occurred while the tablet was in absolute or relative
* mode. * mode.
* *
* Other tablets use the notion of a certain minimum stylus pressure * Other tablets use the notion of a certain minimum stylus pressure
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
* Changed reset from standard USB dev reset to vendor reset * Changed reset from standard USB dev reset to vendor reset
* Changed data sent to host from compensated to raw coordinates * Changed data sent to host from compensated to raw coordinates
* Eliminated vendor/product module params * Eliminated vendor/product module params
* Performed multiple successfull tests with an EXII-5010UC * Performed multiple successful tests with an EXII-5010UC
* *
* 1.5 02/27/2005 ddstreet@ieee.org * 1.5 02/27/2005 ddstreet@ieee.org
* Added module parameter to select raw or hw-calibrated coordinate reporting * Added module parameter to select raw or hw-calibrated coordinate reporting
......
...@@ -5041,7 +5041,7 @@ ov6xx0_configure(struct usb_ov511 *ov) ...@@ -5041,7 +5041,7 @@ ov6xx0_configure(struct usb_ov511 *ov)
{ OV511_I2C_BUS, 0x2a, 0x04 }, /* Disable framerate adjust */ { OV511_I2C_BUS, 0x2a, 0x04 }, /* Disable framerate adjust */
// { OV511_I2C_BUS, 0x2b, 0xac }, /* Framerate; Set 2a[7] first */ // { OV511_I2C_BUS, 0x2b, 0xac }, /* Framerate; Set 2a[7] first */
{ OV511_I2C_BUS, 0x2d, 0x99 }, { OV511_I2C_BUS, 0x2d, 0x99 },
{ OV511_I2C_BUS, 0x33, 0xa0 }, /* Color Procesing Parameter */ { OV511_I2C_BUS, 0x33, 0xa0 }, /* Color Processing Parameter */
{ OV511_I2C_BUS, 0x34, 0xd2 }, /* Max A/D range */ { OV511_I2C_BUS, 0x34, 0xd2 }, /* Max A/D range */
{ OV511_I2C_BUS, 0x38, 0x8b }, { OV511_I2C_BUS, 0x38, 0x8b },
{ OV511_I2C_BUS, 0x39, 0x40 }, { OV511_I2C_BUS, 0x39, 0x40 },
......
...@@ -1100,7 +1100,7 @@ static inline int pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt) ...@@ -1100,7 +1100,7 @@ static inline int pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt)
unsigned char buf[4]; unsigned char buf[4];
/* set new relative angle; angles are expressed in degrees * 100, /* set new relative angle; angles are expressed in degrees * 100,
but cam as .5 degree resolution, hence devide by 200. Also but cam as .5 degree resolution, hence divide by 200. Also
the angle must be multiplied by 64 before it's send to the angle must be multiplied by 64 before it's send to
the cam (??) the cam (??)
*/ */
......
...@@ -272,7 +272,7 @@ static int pwc_allocate_buffers(struct pwc_device *pdev) ...@@ -272,7 +272,7 @@ static int pwc_allocate_buffers(struct pwc_device *pdev)
return -ENXIO; return -ENXIO;
} }
#endif #endif
/* Allocate Isochronuous pipe buffers */ /* Allocate Isochronous pipe buffers */
for (i = 0; i < MAX_ISO_BUFS; i++) { for (i = 0; i < MAX_ISO_BUFS; i++) {
if (pdev->sbuf[i].data == NULL) { if (pdev->sbuf[i].data == NULL) {
kbuf = kmalloc(ISO_BUFFER_SIZE, GFP_KERNEL); kbuf = kmalloc(ISO_BUFFER_SIZE, GFP_KERNEL);
...@@ -850,7 +850,7 @@ static int pwc_isoc_init(struct pwc_device *pdev) ...@@ -850,7 +850,7 @@ static int pwc_isoc_init(struct pwc_device *pdev)
if (pdev->vmax_packet_size < 0 || pdev->vmax_packet_size > ISO_MAX_FRAME_SIZE) { if (pdev->vmax_packet_size < 0 || pdev->vmax_packet_size > ISO_MAX_FRAME_SIZE) {
Err("Failed to find packet size for video endpoint in current alternate setting.\n"); Err("Failed to find packet size for video endpoint in current alternate setting.\n");
return -ENFILE; /* Odd error, that should be noticable */ return -ENFILE; /* Odd error, that should be noticeable */
} }
/* Set alternate interface */ /* Set alternate interface */
...@@ -2128,7 +2128,7 @@ static int __init usb_pwc_init(void) ...@@ -2128,7 +2128,7 @@ static int __init usb_pwc_init(void)
if (leds[1] >= 0) if (leds[1] >= 0)
led_off = leds[1]; led_off = leds[1];
/* Big device node whoopla. Basicly, it allows you to assign a /* Big device node whoopla. Basically, it allows you to assign a
device node (/dev/videoX) to a camera, based on its type device node (/dev/videoX) to a camera, based on its type
& serial number. The format is [type[.serialnumber]:]node. & serial number. The format is [type[.serialnumber]:]node.
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
#define PWC_FPS_SNAPSHOT 0x00400000 #define PWC_FPS_SNAPSHOT 0x00400000
/* structure for transfering x & y coordinates */ /* structure for transferring x & y coordinates */
struct pwc_coord struct pwc_coord
{ {
int x, y; /* guess what */ int x, y; /* guess what */
......
...@@ -859,7 +859,7 @@ static int tower_probe (struct usb_interface *interface, const struct usb_device ...@@ -859,7 +859,7 @@ static int tower_probe (struct usb_interface *interface, const struct usb_device
info ("udev is NULL."); info ("udev is NULL.");
} }
/* allocate memory for our device state and intialize it */ /* allocate memory for our device state and initialize it */
dev = kmalloc (sizeof(struct lego_usb_tower), GFP_KERNEL); dev = kmalloc (sizeof(struct lego_usb_tower), GFP_KERNEL);
......
...@@ -4070,6 +4070,9 @@ static const struct usb_device_id products [] = { ...@@ -4070,6 +4070,9 @@ static const struct usb_device_id products [] = {
}, { }, {
USB_DEVICE (0x8086, 0x07d3), // "blob" bootloader USB_DEVICE (0x8086, 0x07d3), // "blob" bootloader
.driver_info = (unsigned long) &blob_info, .driver_info = (unsigned long) &blob_info,
}, {
USB_DEVICE (0x22b8, 0x600c), // USBNET Motorola E680
.driver_info = (unsigned long) &linuxdev_info,
}, { }, {
// Linux Ethernet/RNDIS gadget on pxa210/25x/26x // Linux Ethernet/RNDIS gadget on pxa210/25x/26x
// e.g. Gumstix, current OpenZaurus, ... // e.g. Gumstix, current OpenZaurus, ...
......
...@@ -183,7 +183,7 @@ static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs) ...@@ -183,7 +183,7 @@ static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs)
return; return;
} }
/* Incomming data */ /* Incoming data */
static 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; struct zd1201 *zd = urb->context;
...@@ -772,7 +772,7 @@ static int zd1201_net_stop(struct net_device *dev) ...@@ -772,7 +772,7 @@ static int zd1201_net_stop(struct net_device *dev)
/* /*
RFC 1042 encapsulates Ethernet frames in 802.11 frames RFC 1042 encapsulates Ethernet frames in 802.11 frames
by prefixing them with 0xaa, 0xaa, 0x03) followed by a SNAP OID of 0 by prefixing them with 0xaa, 0xaa, 0x03) followed by a SNAP OID of 0
(0x00, 0x00, 0x00). Zd requires an additionnal padding, copy (0x00, 0x00, 0x00). Zd requires an additional padding, copy
of ethernet addresses, length of the standard RFC 1042 packet of ethernet addresses, length of the standard RFC 1042 packet
and a command byte (which is nul for tx). and a command byte (which is nul for tx).
...@@ -1098,7 +1098,7 @@ static int zd1201_get_range(struct net_device *dev, ...@@ -1098,7 +1098,7 @@ static int zd1201_get_range(struct net_device *dev,
/* Little bit of magic here: we only get the quality if we poll /* Little bit of magic here: we only get the quality if we poll
* for it, and we never get an actual request to trigger such * for it, and we never get an actual request to trigger such
* a poll. Therefore we 'asume' that the user will soon ask for * a poll. Therefore we 'assume' that the user will soon ask for
* the stats after asking the bssid. * the stats after asking the bssid.
*/ */
static int zd1201_get_wap(struct net_device *dev, static int zd1201_get_wap(struct net_device *dev,
...@@ -1108,7 +1108,7 @@ static int zd1201_get_wap(struct net_device *dev, ...@@ -1108,7 +1108,7 @@ static int zd1201_get_wap(struct net_device *dev,
unsigned char buffer[6]; unsigned char buffer[6];
if (!zd1201_getconfig(zd, ZD1201_RID_COMMSQUALITY, buffer, 6)) { if (!zd1201_getconfig(zd, ZD1201_RID_COMMSQUALITY, buffer, 6)) {
/* Unfortunatly the quality and noise reported is useless. /* Unfortunately the quality and noise reported is useless.
they seem to be accumulators that increase until you they seem to be accumulators that increase until you
read them, unless we poll on a fixed interval we can't read them, unless we poll on a fixed interval we can't
use them use them
......
...@@ -53,6 +53,15 @@ config USB_SERIAL_GENERIC ...@@ -53,6 +53,15 @@ config USB_SERIAL_GENERIC
support" be compiled as a module for this driver to be used support" be compiled as a module for this driver to be used
properly. properly.
config USB_SERIAL_AIRPRIME
tristate "USB AirPrime CDMA Wireless Driver"
depends on USB_SERIAL
help
Say Y here if you want to use a AirPrime CDMA Wireless PC card.
To compile this driver as a module, choose M here: the
module will be called airprime.
config USB_SERIAL_BELKIN config USB_SERIAL_BELKIN
tristate "USB Belkin and Peracom Single Port Serial Driver" tristate "USB Belkin and Peracom Single Port Serial Driver"
depends on USB_SERIAL depends on USB_SERIAL
......
...@@ -11,6 +11,7 @@ usbserial-obj-$(CONFIG_USB_EZUSB) += ezusb.o ...@@ -11,6 +11,7 @@ usbserial-obj-$(CONFIG_USB_EZUSB) += ezusb.o
usbserial-objs := usb-serial.o generic.o bus.o $(usbserial-obj-y) usbserial-objs := usb-serial.o generic.o bus.o $(usbserial-obj-y)
obj-$(CONFIG_USB_SERIAL_AIRPRIME) += airprime.o
obj-$(CONFIG_USB_SERIAL_BELKIN) += belkin_sa.o obj-$(CONFIG_USB_SERIAL_BELKIN) += belkin_sa.o
obj-$(CONFIG_USB_SERIAL_CP2101) += cp2101.o obj-$(CONFIG_USB_SERIAL_CP2101) += cp2101.o
obj-$(CONFIG_USB_SERIAL_CYBERJACK) += cyberjack.o obj-$(CONFIG_USB_SERIAL_CYBERJACK) += cyberjack.o
......
/*
* AirPrime CDMA Wireless Serial USB driver
*
* Copyright (C) 2005 Greg Kroah-Hartman <gregkh@suse.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version
* 2 as published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/tty.h>
#include <linux/module.h>
#include <linux/usb.h>
#include "usb-serial.h"
static struct usb_device_id id_table [] = {
{ USB_DEVICE(0xf3d, 0x0112) },
{ },
};
MODULE_DEVICE_TABLE(usb, id_table);
static struct usb_driver airprime_driver = {
.owner = THIS_MODULE,
.name = "airprime",
.probe = usb_serial_probe,
.disconnect = usb_serial_disconnect,
.id_table = id_table,
};
static struct usb_serial_device_type airprime_device = {
.owner = THIS_MODULE,
.name = "airprime",
.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 airprime_init(void)
{
int retval;
retval = usb_serial_register(&airprime_device);
if (retval)
return retval;
retval = usb_register(&airprime_driver);
if (retval)
usb_serial_deregister(&airprime_device);
return retval;
}
static void __exit airprime_exit(void)
{
usb_deregister(&airprime_driver);
usb_serial_deregister(&airprime_device);
}
module_init(airprime_init);
module_exit(airprime_exit);
MODULE_LICENSE("GPL");
This diff is collapsed.
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
* Defererence pointers after any paranoid checks, not before. * Defererence pointers after any paranoid checks, not before.
* *
* (21/Jun/2003) Erik Nygren * (21/Jun/2003) Erik Nygren
* Added support for Home Electronics Tira-1 IR tranceiver using FT232BM chip. * Added support for Home Electronics Tira-1 IR transceiver using FT232BM chip.
* See <http://www.home-electro.com/tira1.htm>. Only operates properly * See <http://www.home-electro.com/tira1.htm>. Only operates properly
* at 100000 and RTS-CTS, so set custom divisor mode on startup. * at 100000 and RTS-CTS, so set custom divisor mode on startup.
* Also force the Tira-1 and USB-UIRT to only use their custom baud rates. * Also force the Tira-1 and USB-UIRT to only use their custom baud rates.
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
* Minor whitespace and comment changes. * Minor whitespace and comment changes.
* *
* (12/Jun/2003) David Norwood * (12/Jun/2003) David Norwood
* Added support for USB-UIRT IR tranceiver using 8U232AM chip. * Added support for USB-UIRT IR transceiver using 8U232AM chip.
* See <http://home.earthlink.net/~jrhees/USBUIRT/index.htm>. Only * See <http://home.earthlink.net/~jrhees/USBUIRT/index.htm>. Only
* operates properly at 312500, so set custom divisor mode on startup. * operates properly at 312500, so set custom divisor mode on startup.
* *
...@@ -272,6 +272,7 @@ static int debug; ...@@ -272,6 +272,7 @@ static int debug;
static struct usb_device_id id_table_sio [] = { static struct usb_device_id id_table_sio [] = {
{ USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
{ USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
...@@ -296,7 +297,6 @@ static struct usb_device_id id_table_8U232AM [] = { ...@@ -296,7 +297,6 @@ static struct usb_device_id id_table_8U232AM [] = {
{ USB_DEVICE_VER(FTDI_VID, FTDI_IRTRANS_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_IRTRANS_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_ALT_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_RELAIS_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_RELAIS_PID, 0, 0x3ff) },
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
...@@ -369,11 +369,14 @@ static struct usb_device_id id_table_8U232AM [] = { ...@@ -369,11 +369,14 @@ static struct usb_device_id id_table_8U232AM [] = {
{ USB_DEVICE_VER(INTREPID_VID, INTREPID_NEOVI_PID, 0, 0x3ff) }, { USB_DEVICE_VER(INTREPID_VID, INTREPID_NEOVI_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FALCOM_VID, FALCOM_TWIST_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FALCOM_VID, FALCOM_TWIST_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_SUUNTO_SPORTS_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_SUUNTO_SPORTS_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_RM_VID, FTDI_RMCANVIEW_PID, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_RM_CANVIEW_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USOTL4_PID, 0, 0x3ff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USOTL4_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USTL4_PID, 0, 0x3ff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USTL4_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USO9ML2_PID, 0, 0x3ff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USO9ML2_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, EVER_ECO_PRO_CDS, 0, 0x3ff) }, { USB_DEVICE_VER(FTDI_VID, EVER_ECO_PRO_CDS, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID, 0, 0x3ff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID, 0, 0x3ff) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
...@@ -382,7 +385,6 @@ static struct usb_device_id id_table_FT232BM [] = { ...@@ -382,7 +385,6 @@ static struct usb_device_id id_table_FT232BM [] = {
{ USB_DEVICE_VER(FTDI_VID, FTDI_IRTRANS_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_IRTRANS_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_8U232AM_ALT_ALT_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_RELAIS_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_RELAIS_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0x400, 0xffff) },
...@@ -485,11 +487,15 @@ static struct usb_device_id id_table_FT232BM [] = { ...@@ -485,11 +487,15 @@ static struct usb_device_id id_table_FT232BM [] = {
{ USB_DEVICE_VER(INTREPID_VID, INTREPID_NEOVI_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(INTREPID_VID, INTREPID_NEOVI_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FALCOM_VID, FALCOM_TWIST_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FALCOM_VID, FALCOM_TWIST_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_SUUNTO_SPORTS_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_SUUNTO_SPORTS_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_RM_VID, FTDI_RMCANVIEW_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, FTDI_RM_CANVIEW_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USOTL4_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USOTL4_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USTL4_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USTL4_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(BANDB_VID, BANDB_USO9ML2_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(BANDB_VID, BANDB_USO9ML2_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, EVER_ECO_PRO_CDS, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, EVER_ECO_PRO_CDS, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID, 0x400, 0xffff) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
...@@ -517,7 +523,6 @@ static struct usb_device_id id_table_combined [] = { ...@@ -517,7 +523,6 @@ static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_ALT_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) },
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
...@@ -596,6 +601,22 @@ static struct usb_device_id id_table_combined [] = { ...@@ -596,6 +601,22 @@ static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(FTDI_VID, PROTEGO_R2X0) }, { USB_DEVICE(FTDI_VID, PROTEGO_R2X0) },
{ USB_DEVICE(FTDI_VID, PROTEGO_SPECIAL_3) }, { USB_DEVICE(FTDI_VID, PROTEGO_SPECIAL_3) },
{ USB_DEVICE(FTDI_VID, PROTEGO_SPECIAL_4) }, { USB_DEVICE(FTDI_VID, PROTEGO_SPECIAL_4) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E808_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E809_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80A_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80B_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80C_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80D_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80E_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E80F_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E888_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E889_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88A_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88B_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88C_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88D_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88E_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_GUDEADS_E88F_PID, 0x400, 0xffff) },
{ USB_DEVICE(FTDI_VID, FTDI_ELV_UO100_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_UO100_PID) },
{ USB_DEVICE_VER(FTDI_VID, LINX_SDMUSBQSS_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, LINX_SDMUSBQSS_PID, 0x400, 0xffff) },
{ USB_DEVICE_VER(FTDI_VID, LINX_MASTERDEVEL2_PID, 0x400, 0xffff) }, { USB_DEVICE_VER(FTDI_VID, LINX_MASTERDEVEL2_PID, 0x400, 0xffff) },
...@@ -609,11 +630,16 @@ static struct usb_device_id id_table_combined [] = { ...@@ -609,11 +630,16 @@ static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) },
{ USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) }, { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) },
{ USB_DEVICE(FTDI_RM_VID, FTDI_RMCANVIEW_PID) }, { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) },
{ USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) },
{ USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) },
{ USB_DEVICE(BANDB_VID, BANDB_USO9ML2_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USO9ML2_PID) },
{ USB_DEVICE(FTDI_VID, EVER_ECO_PRO_CDS) }, { USB_DEVICE(FTDI_VID, EVER_ECO_PRO_CDS) },
{ USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID) },
{ USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) },
{ USB_DEVICE_VER(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID, 0x400, 0xffff) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
...@@ -1457,10 +1483,10 @@ static int ftdi_FT2232C_startup (struct usb_serial *serial) ...@@ -1457,10 +1483,10 @@ static int ftdi_FT2232C_startup (struct usb_serial *serial)
inter = serial->interface->altsetting->desc.bInterfaceNumber; inter = serial->interface->altsetting->desc.bInterfaceNumber;
if (inter) { if (inter) {
priv->interface = INTERFACE_B; priv->interface = PIT_SIOB;
} }
else { else {
priv->interface = INTERFACE_A; priv->interface = PIT_SIOA;
} }
priv->baud_base = 48000000 / 2; /* Would be / 16, but FT2232C supports multiple of 0.125 divisor fractions! */ priv->baud_base = 48000000 / 2; /* Would be / 16, but FT2232C supports multiple of 0.125 divisor fractions! */
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */ #define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */ #define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */ #define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
#define FTDI_8U232AM_ALT_ALT_PID 0xf3c0 /* FTDI's second alternate PID for above */
#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */ #define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */ #define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */ #define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
...@@ -137,7 +136,7 @@ ...@@ -137,7 +136,7 @@
/* /*
* Home Electronics (www.home-electro.com) USB gadgets * Home Electronics (www.home-electro.com) USB gadgets
*/ */
#define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR tranceiver */ #define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR transceiver */
/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */ /* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */ /* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
...@@ -157,7 +156,8 @@ ...@@ -157,7 +156,8 @@
*/ */
#define OCT_VID 0x0B39 /* OCT vendor ID */ #define OCT_VID 0x0B39 /* OCT vendor ID */
/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */ /* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
/* Also rebadged as SIIG Inc. model US2308 */ /* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
#define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */ #define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */
/* an infrared receiver for user access control with IR tags */ /* an infrared receiver for user access control with IR tags */
...@@ -236,10 +236,10 @@ ...@@ -236,10 +236,10 @@
/* /*
* RM Michaelides CANview USB (http://www.rmcan.com) * RM Michaelides CANview USB (http://www.rmcan.com)
* CAN filedbus interface adapter, addad by port GmbH www.port.de) * CAN fieldbus interface adapter, added by port GmbH www.port.de)
* Ian Abbott changed the macro names for consistency.
*/ */
#define FTDI_RM_VID 0x0403 /* Vendor Id */ #define FTDI_RM_CANVIEW_PID 0xfd60 /* Product Id */
#define FTDI_RMCANVIEW_PID 0xfd60 /* Product Id */
/* /*
* EVER Eco Pro UPS (http://www.ever.com.pl/) * EVER Eco Pro UPS (http://www.ever.com.pl/)
...@@ -247,6 +247,26 @@ ...@@ -247,6 +247,26 @@
#define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */ #define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */
/*
* 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
* USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices
* and I'm not entirely sure which are used by which.
*/
#define FTDI_4N_GALAXY_DE_0_PID 0x8372
#define FTDI_4N_GALAXY_DE_1_PID 0xF3C0
#define FTDI_4N_GALAXY_DE_2_PID 0xF3C1
/*
* Mobility Electronics products.
*/
#define MOBILITY_VID 0x1342
#define MOBILITY_USB_SERIAL_PID 0x0202 /* EasiDock USB 200 serial */
/*
* Active Robots product ids.
*/
#define FTDI_ACTIVE_ROBOTS_PID 0xE548 /* USB comms board */
/* Commands */ /* Commands */
#define FTDI_SIO_RESET 0 /* Reset the port */ #define FTDI_SIO_RESET 0 /* Reset the port */
#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ #define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
...@@ -259,10 +279,6 @@ ...@@ -259,10 +279,6 @@
#define FTDI_SIO_SET_LATENCY_TIMER 9 /* Set the latency timer */ #define FTDI_SIO_SET_LATENCY_TIMER 9 /* Set the latency timer */
#define FTDI_SIO_GET_LATENCY_TIMER 10 /* Get the latency timer */ #define FTDI_SIO_GET_LATENCY_TIMER 10 /* Get the latency timer */
/* Port interface code for FT2232C */
#define INTERFACE_A 1
#define INTERFACE_B 2
/* /*
* BmRequestType: 1100 0000b * BmRequestType: 1100 0000b
......
...@@ -289,7 +289,7 @@ ...@@ -289,7 +289,7 @@
// //
// //
// Edgeport Compatiblity Descriptor // Edgeport Compatibility Descriptor
// //
// This descriptor is only returned by Edgeport-compatible devices // This descriptor is only returned by Edgeport-compatible devices
// supporting the EPiC spec. True ION devices do not return this // supporting the EPiC spec. True ION devices do not return this
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
This file is available under a BSD-style copyright This file is available under a BSD-style copyright
2. The name of InnoSys Incorprated may not be used to endorse or promote 2. The name of InnoSys Incorporated may not be used to endorse or promote
products derived from this software without specific prior written products derived from this software without specific prior written
permission. permission.
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include <linux/cdrom.h> #include <linux/cdrom.h>
#include <scsi/scsi.h> #include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h> #include <scsi/scsi_cmnd.h>
#include <scsi/scsi_dbg.h>
#include "debug.h" #include "debug.h"
#include "scsi.h" #include "scsi.h"
......
...@@ -786,7 +786,7 @@ static int usbat_flash_check_media(struct us_data *us, ...@@ -786,7 +786,7 @@ static int usbat_flash_check_media(struct us_data *us,
if (rc != USB_STOR_XFER_GOOD) if (rc != USB_STOR_XFER_GOOD)
return USB_STOR_TRANSPORT_ERROR; return USB_STOR_TRANSPORT_ERROR;
// Check for media existance // Check for media existence
rc = usbat_flash_check_media_present(uio); rc = usbat_flash_check_media_present(uio);
if (rc == USBAT_FLASH_MEDIA_NONE) { if (rc == USBAT_FLASH_MEDIA_NONE) {
info->sense_key = 0x02; info->sense_key = 0x02;
......
/* Driver for USB Mass Storage compliant devices /* Driver for USB Mass Storage compliant devices
* Ununsual Devices File * Unusual Devices File
* *
* $Id: unusual_devs.h,v 1.32 2002/02/25 02:41:24 mdharm Exp $ * $Id: unusual_devs.h,v 1.32 2002/02/25 02:41:24 mdharm Exp $
* *
...@@ -48,6 +48,14 @@ ...@@ -48,6 +48,14 @@
* USB development list <linux-usb-devel@lists.sourceforge.net>. * USB development list <linux-usb-devel@lists.sourceforge.net>.
*/ */
/* patch submitted by Vivian Bregier <Vivian.Bregier@imag.fr>
*/
UNUSUAL_DEV( 0x03eb, 0x2002, 0x0100, 0x0100,
"ATMEL",
"SND1 Storage",
US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_IGNORE_RESIDUE),
UNUSUAL_DEV( 0x03ee, 0x6901, 0x0000, 0x0100, UNUSUAL_DEV( 0x03ee, 0x6901, 0x0000, 0x0100,
"Mitsumi", "Mitsumi",
"USB FDD", "USB FDD",
...@@ -994,6 +1002,13 @@ UNUSUAL_DEV( 0x1019, 0x0c55, 0x0000, 0x9999, ...@@ -994,6 +1002,13 @@ UNUSUAL_DEV( 0x1019, 0x0c55, 0x0000, 0x9999,
US_SC_DEVICE, US_PR_DEVICE, usb_stor_ucr61s2b_init, US_SC_DEVICE, US_PR_DEVICE, usb_stor_ucr61s2b_init,
0 ), 0 ),
/* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */
UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001,
"Minolta",
"Dimage Z10",
US_SC_DEVICE, US_PR_DEVICE, NULL,
0 ),
/* Reported by Kotrla Vitezslav <kotrla@ceb.cz> */ /* Reported by Kotrla Vitezslav <kotrla@ceb.cz> */
UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110, UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110,
"SWISSBIT", "SWISSBIT",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment