diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2008-01-01 14:37:50 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2008-01-01 14:37:50 +0000 |
commit | 92be73b5cdcd505ee2a60ad9ebcddf73863128da (patch) | |
tree | 87a421c009eb93488dccebc7350ec111443f07cf | |
parent | 552743fe07e816e78db0732a9362f06ab8ee4b4e (diff) | |
download | upstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.tar.gz upstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.tar.bz2 upstream-92be73b5cdcd505ee2a60ad9ebcddf73863128da.zip |
usb-driver: add preliminary support of ISOCHRONOUS transfer
SVN-Revision: 10077
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. + * */ /* |