On Sun, 31 Oct 2010, Gavin Guo wrote: > >> After reading section 4.8 of EHCI spec again. I have another question: > >> Does HC will increase the asynclistaddr to next QH which follow the QH > >> of which H bit set to 1?? > > > > You mean, does it do this when it stops following the schedule? No, it > > doesn't. > > If doesn't go processing next qh, the asynclistaddr will point to the > same QH of which H bit =1, doesn't it?? Yes. > >> I read the code in qh_link_async() adding > >> the new queue after the ehci->async. So I think it is not possible to > >> restart the asynchronous when the sleep timer expires without > >> advancing to next QH. If doesn't, HC will read the same QH of H = 1 > >> and sleep again. > > > > It won't sleep again right away, because when the schedule restarts > > the Reclamation bit is set to 1. See 4.8.3. > > But if hc won't go ahead to next qh of which H!=1, it will still go to > sleep again. Because hc still process the original qh(H=1) ??. This is all expained in 4.10.1. Read it again. Briefly, the HC will read the first qh and see H=1. But since Reclamation=1, it won't go to sleep; instead it will set Reclamation to 0 and go on to the next qh. After going through the entire schedule the HC will return to the first qh and see H=1 again. If there was no activity during the traversal then Reclamation will still be 0, so the HC will sleep. Otherwise it will set Reclamation to 0 and continue on with the next qh. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html