diff options
author | Marcus Glocker <mglocker@cvs.openbsd.org> | 2008-09-15 11:31:07 +0000 |
---|---|---|
committer | Marcus Glocker <mglocker@cvs.openbsd.org> | 2008-09-15 11:31:07 +0000 |
commit | b408a521a8f71969df6f21cd94007056934ae5f5 (patch) | |
tree | e2220e476cb87e55ad7084b45943ef134070d2fc /sys/dev | |
parent | 566a2ad839af900367f18a7d98a58f0d407c4384 (diff) |
Sync ehci-isoc part a bit up with NetBSD:
- Sign over Jeremy Morse's copyright (who contributed ehci-isoc support)
to NetBSD copyright but still mention him as contributor. OK'd by
Jeremy Morse.
- Update TODO list.
- Clarify the error message in case when a low/full speed isoc device
has been attached to ehci.
- Add a missing break so that the isoc setup code doesn't access
uninitialized microframe content which has been request by the driver
but not been used.
OK kevlo@
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/usb/ehci.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/sys/dev/usb/ehci.c b/sys/dev/usb/ehci.c index 3f39cf1b7c2..11de26f0e8f 100644 --- a/sys/dev/usb/ehci.c +++ b/sys/dev/usb/ehci.c @@ -1,13 +1,13 @@ -/* $OpenBSD: ehci.c,v 1.90 2008/09/10 14:01:23 blambert Exp $ */ +/* $OpenBSD: ehci.c,v 1.91 2008/09/15 11:31:06 mglocker Exp $ */ /* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */ /* * Copyright (c) 2004,2005 The NetBSD Foundation, Inc. - * Copyright (c) 2008 Jeremy Morse <jeremy.morse@gmail.com> * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation - * by Lennart Augustsson (lennart@augustsson.net) and by Charles M. Hannum. + * by Lennart Augustsson (lennart@augustsson.net), Charles M. Hannum and + * Jeremy Morse (jeremy.morse@gmail.com). * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -42,16 +42,12 @@ /* * TODO: - * 1) The meaty part to implement is isochronous transactions. They are - * needed for USB 1 devices below USB 2.0 hubs. They are quite complicated - * since they need to be able to do "transaction translation", ie, - * converting to/from USB 2 and USB 1. - * So the hub driver needs to handle and schedule these things, to - * assign place in frame where different devices get to go. See chapter + * 1) The hub driver needs to handle and schedule the transaction translator, + * to assign place in frame where different devices get to go. See chapter * on hubs in USB 2.0 for details. * * 2) Command failures are not recovered correctly. -*/ + */ #include <sys/param.h> #include <sys/systm.h> @@ -1533,8 +1529,10 @@ ehci_open(usbd_pipe_handle pipe) panic("ehci_open: bad device speed %d", dev->speed); } if (speed != EHCI_QH_SPEED_HIGH && xfertype == UE_ISOCHRONOUS) { - printf("%s: *** Error: opening low/full speed isoc device on" - "ehci, this does not work yet. Feel free to implement\n", + printf("%s: Error opening low/full speed isoc endpoint.\n" + "A low/full speed device is attached to a USB2 hub, and " + "transaction translations are not yet supported.\n" + "Reattach the device to the root hub instead.\n", sc->sc_bus.bdev.dv_xname); DPRINTFN(1,("ehci_open: hshubaddr=%d hshubport=%d\n", hshubaddr, hshubport)); @@ -3796,6 +3794,7 @@ ehci_device_isoc_start(usbd_xfer_handle xfer) if (trans_count >= xfer->nframes) { /*Set IOC*/ itd->itd.itd_ctl[j] |= htole32(EHCI_ITD_IOC); + break; } } |