aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2008-01-01 14:37:50 +0000
committerGabor Juhos <juhosg@openwrt.org>2008-01-01 14:37:50 +0000
commit92be73b5cdcd505ee2a60ad9ebcddf73863128da (patch)
tree87a421c009eb93488dccebc7350ec111443f07cf
parent552743fe07e816e78db0732a9362f06ab8ee4b4e (diff)
downloadupstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.tar.gz
upstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.tar.bz2
upstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.zip
usb-driver: add preliminary support of ISOCHRONOUS transfer
SVN-Revision: 10077
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-dbg.c7
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c7
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c9
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c7
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-mem.c7
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c7
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-q.c38
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120.h7
8 files changed, 57 insertions, 32 deletions
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-dbg.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-dbg.c
index 5b51ea4ab9..1027e5c8cd 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-dbg.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-dbg.c
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-dbg.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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.
+ *
*/
/*-------------------------------------------------------------------------*/
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
index 04845d9640..02c80f3fdf 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
@@ -1,7 +1,7 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-au1xxx.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
@@ -16,7 +16,10 @@
* Modified for AMD Alchemy Au1xxx
* by Matt Porter <mporter@kernel.crashing.org>
*
- * This file is licenced under the GPL.
+ * 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/platform_device.h>
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
index 5418596614..c75b87af45 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
@@ -1,7 +1,7 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-hcd.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
@@ -12,7 +12,10 @@
* [ (C) Copyright 1999 Linus Torvalds ]
* [ (C) Copyright 1999 Gregory P. Smith]
*
- * This file is licenced under the GPL.
+ * 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/module.h>
@@ -42,7 +45,7 @@
#include "../core/hcd.h"
#include "../core/hub.h"
-#define DRIVER_VERSION "0.14.1"
+#define DRIVER_VERSION "0.16.0"
#define DRIVER_AUTHOR "Gabor Juhos <juhosg at openwrt.org>"
#define DRIVER_DESC "ADMtek USB 1.1 Host Controller Driver"
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c
index c431b8e1c6..4fd826d55d 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-hub.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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.
+ *
*/
/*-------------------------------------------------------------------------*/
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-mem.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-mem.c
index 7cfd8c13bf..3e4b2d9924 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-mem.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-mem.c
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-mem.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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.
+ *
*/
/*-------------------------------------------------------------------------*/
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
index e10a8e95d1..ac7bf6cfcc 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from fragments of the OHCI driver.
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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.
+ *
*/
#define OHCI_SCHED_ENABLES \
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
index 9995d4254b..9d33bc31b8 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci-q.c
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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/irq.h>
@@ -571,51 +574,52 @@ static void td_submit_urb(struct admhcd *ahcd, struct urb *urb)
static int td_done(struct admhcd *ahcd, struct urb *urb, struct td *td)
{
struct urb_priv *urb_priv = urb->hcpriv;
- u32 info = hc32_to_cpup(ahcd, &td->hwINFO);
+ u32 info;
+ u32 bl;
+ u32 tdDBP;
int type = usb_pipetype(urb->pipe);
int cc;
+ info = hc32_to_cpup(ahcd, &td->hwINFO);
+ tdDBP = hc32_to_cpup(ahcd, &td->hwDBP);
+ bl = TD_BL_GET(hc32_to_cpup(ahcd, &td->hwCBL));
cc = TD_CC_GET(info);
/* ISO ... drivers see per-TD length/status */
if (type == PIPE_ISOCHRONOUS) {
-#if 0
/* TODO */
int dlen = 0;
/* NOTE: assumes FC in tdINFO == 0, and that
* only the first of 0..MAXPSW psws is used.
*/
-
- cc = TD_CC_GET(td);
+#if 0
if (tdINFO & TD_CC) /* hc didn't touch? */
return;
-
- if (usb_pipeout (urb->pipe))
- dlen = urb->iso_frame_desc [td->index].length;
+#endif
+ if (usb_pipeout(urb->pipe))
+ dlen = urb->iso_frame_desc[td->index].length;
else {
/* short reads are always OK for ISO */
- if (cc == TD_DATAUNDERRUN)
+ if (cc == TD_CC_DATAUNDERRUN)
cc = TD_CC_NOERROR;
- dlen = tdPSW & 0x3ff;
+ dlen = tdDBP - td->data_dma + bl;
}
+
urb->actual_length += dlen;
- urb->iso_frame_desc [td->index].actual_length = dlen;
- urb->iso_frame_desc [td->index].status = cc_to_error [cc];
+ urb->iso_frame_desc[td->index].actual_length = dlen;
+ urb->iso_frame_desc[td->index].status = cc_to_error[cc];
if (cc != TD_CC_NOERROR)
admhc_vdbg (ahcd,
"urb %p iso td %p (%d) len %d cc %d\n",
urb, td, 1 + td->index, dlen, cc);
-#endif
+
/* BULK, INT, CONTROL ... drivers see aggregate length/status,
* except that "setup" bytes aren't counted and "short" transfers
* might not be reported as errors.
*/
} else {
- u32 bl = TD_BL_GET(hc32_to_cpup(ahcd, &td->hwCBL));
- u32 tdDBP = hc32_to_cpup(ahcd, &td->hwDBP);
-
/* update packet status if needed (short is normally ok) */
if (cc == TD_CC_DATAUNDERRUN
&& !(urb->transfer_flags & URB_SHORT_NOT_OK))
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120.h b/target/linux/adm5120/files/drivers/usb/host/adm5120.h
index 6152764c17..a3acfe53b5 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120.h
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120.h
@@ -1,13 +1,16 @@
/*
* ADM5120 HCD (Host Controller Driver) for USB
*
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
*
* This file was derived from: drivers/usb/host/ohci.h
* (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
* (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
*
- * This file is licenced under the GPL.
+ * 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.
+ *
*/
/*