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