On 06/01/2010 11:14 PM, Aleš Nesrsta wrote: > On both HCs was not working device which has max. packet length for > control endpoint lower than 64. As I remember that this patch was > relative simple, I shortly looked into usb.c and usbtrans.c and there is > mistake: > > --- usbtrans.c > +++ usbtrans_corrected.c > @@ -76,7 +76,7 @@ > setupdata_addr = grub_dma_get_phys (setupdata_chunk); > > /* Determine the maximum packet size. */ > - if (dev->initialized && dev->descdev.maxsize0) > + if (dev->descdev.maxsize0) > max = dev->descdev.maxsize0; > else > max = 64; > > Thanks, applied. > Why: > dev->initialized is set to TRUE too late (after address setting > transaction) so we have to ignore it in control transfers - we must use > value from dev->descdev.maxsize0 immediately after successful reading of > first 8 bytes of device descriptor (where is this value included) - as > is (probably not clearly, sorry) described by me in this part of usb.c > code: > > Actualy I was confused because I had a similar change in the same place to avoid division by zero. > There is probably some new problem in OHCI because some devices are now > very slow on this controller. Unfortunately I currently have no time to > discover why - I am expecting some mistake probably in "toggling" and > related code in ohci.c. > I've managed to recreate it with one of my USB sticks. Investigating. > On UHCI does not work my mobile phone. But I am not 100% sure if it > worked before on UHCI and I have no time to try it now. I am 100% sure > it worked on OHCI - so maybe it is similar problem as with my card > reader. > > And some old (but probably not critical) problem remains in UHCI - there > is still not properly working sequence: > rmmod usbms, rmmod uhci, <removing of old device and connecting of new > device>, insmod uhci, insmod usbms > I haven't retried UHCI on my laptop but I think it will fail because BIOS has a bug in EHCI handover. > - it works on OHCI but on UHCI it does not work - for first look it is > working (for example commands "ls" and "ls (usb0,1)" are working if > these commands are used as first commands after device change) but for > second look does not (for example command "ls (usb0,1)/<some directory>" > reports USB mass storage stalled). > > Best regards > Ales > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > >
-- Regards Vladimir 'φ-coder/phcoder' Serbinenko
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel