On 23 June 2013 00:38, Alan Stern
<stern@rowland.harvard.edu> wrote:
On Sun, 23 Jun 2013, Manjunath Goudar wrote:
> > As a general rule, you should never change code that you don't
> > understand. Do you _know_ that it will be safe to call ohci_setup() or
> > ohci_restart() at this point?
> >
> >
> From David Brownell comment I am understanding,instead of calling
> ohci_setup()
> or ohci_restart(),we can use directly below code.
>
> ohci->hc_control &= OHCI_CTRL_RWC;
> ohci_writel (ohci, ohci->hc_control, &ohci->regs->control);
> ohci->rh_state = OHCI_RH_HALTED;
Of course you can use that code; that's exactly what ohci_usb_reset()
does now.
OK then I will use above three line code for ohci_usb_reset() alternative.
> the 3rd line code is written by you,I want to know what exactly it is doing.
> Is it required here?
Yes, it is required. ohci->rh_state stores the current state of the
root hub. When the controller is reset, the root hub goes into the
HALTED state; this line records that fact.
Thank you for spending your valuable time, answering my doubt.
> > It might be a good idea to get in touch with the person who wrote that
> > routine originally and ask why they used ohci_usb_reset().
> >
> > yes I will.
>
> Hi David,
>
> As I understood ohci_usb_reset() is calling for to notice
> disconnect,reconnect,
> or wakeup without the 48 MHz clock active.
> After fix power management hanging(869aa98c) issue by Patrice Vilchez,I
> think
> ohci_usb_reset() is not required to call. what is your opinion about this.
Sadly, David Brownell died in 2011. I can tell you, though, that
commit 869aa98c does not eliminate the need to call ohci_usb_reset().
So sad :( :(
Alan Stern