Aki,
Great job! This fixes the problem on the Lucent USS-312.
The TI 7 port hub now enumerates fine. I have not yet
tried the USS-302 or tried large data transfers but this
is a big step in the right direction.
Bob
Aki M Laukkanen wrote:
>
> On Wed, 22 Mar 2000, Gregory P. Smith wrote:
> > Would it make sense to hypothesize [without looking at the code] that
> > Roman's driver may be forgetting a virt_to_bus call somewhere when filling
> > in an address for an ED or TD? Some controllers may magically not barf
>
> [DISCLAIMER] I'd call myself beginner with regards to USB and
> OHCI. Ok, I glanced through the OHCI documents just now. :)
>
> I tried to search for all the accesses to (td|ed)->hw[a-zA-Z]+ and
> couldn't find a missing virt_to_bus or bus_to_virt for that matter.
>
> However even if this is a non-issue I'd like to get an explanation to
> this. sohci_submit_urb calls td_submit_urb:
>
> td_submit_urb (urb);
>
> which if I understood signals that HC is free to do its stuff by writing
> appropriate bits in the cmdStatus register. Then however there is this
> code
>
> if (ed->state != ED_OPER)
> ep_link (ohci, ed);
>
> seems to mess with the eds and tds which I thought was a big no-no when HC
> is working?
>
> I am at work so can't test this but how about if we switch these two
> statements:
>
> --- usb-ohci.c.bak Thu Mar 23 11:33:15 2000
> +++ usb-ohci.c Thu Mar 23 11:33:31 2000
> @@ -329,11 +329,11 @@
> urb->start_frame = ((ed->state == ED_OPER)? (ed->last_iso + 1):
> (le16_to_cpu
>(ohci->hcca.frame_no) + 10)) & 0xffff;
> }
> -
> - td_submit_urb (urb); /* fill the TDs and link it to the ed */
>
> if (ed->state != ED_OPER) /* link the ed into a chain if is not already */
> ep_link (ohci, ed);
> +
> + td_submit_urb (urb); /* fill the TDs and link it to the ed */
> spin_unlock_irqrestore (&usb_ed_lock, flags);
>
> urb->status = USB_ST_URB_PENDING;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]