linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq@ti.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-omap@vger.kernel.org
Subject: Re: Help wanted with USB and OMAP3 off_mode
Date: Wed, 16 Jan 2013 12:57:08 +0200	[thread overview]
Message-ID: <50F68784.8050708@ti.com> (raw)
In-Reply-To: <20130116212715.2567d5ed@notabene.brown>

On 01/16/2013 12:27 PM, NeilBrown wrote:
> On Wed, 16 Jan 2013 12:00:48 +0200 Roger Quadros <rogerq@ti.com> wrote:
> 
>> On 01/09/2013 12:29 AM, NeilBrown wrote:
>>>
>>> Hi,
>>>  I'm trying to get off_mode working reliably on my gta04 mobile phone.
>>>
>>> My current stumbling block is USB.  The "Option" GSM module is attached via
>>> USB (there is a separate transceiver chip attached to port 1 which is placed
>>> in OMAP_EHCI_PORT_MODE_PHY).
>>>
>>> After a suspend/resume cycle with off_mode enabled the GSM module disappears.
>>> i.e. 'lsusb' doesn't see it any more and the various ttyHSxx devices don't
>>> exist.
>>> Without off mode, the modem always appears after resume.
>>>
>>> I discovered that the registers set by:
>>>
>>>    drivers/mfd/omap-usb-host.c
>>>
>>> are not maintained across as suspend/resume so I added the following patch
>>> (which I can make a formal submission of if it looks right to others), but
>>> that didn't help (or didn't help enough).
>>>
>>> If I
>>>
>>>   echo 1 > /sys/kernel/debug/pm_debug/usbhost_pwrdm/suspend
>>>
>>> thus keeping just the USBHOST power domain out of off_mode, the GSM module
>>> doesn't disappear.  So it seems that some context in the usbhost domain is
>>> not being save and restored.
>>>
>>> This is as far as I can get.  Can someone suggest where I should look to find
>>> out what is not being saved/restored properly, and how to go about saving and
>>> restoring?
>>
>> You need to ensure that USBHOST/TLL context is saved as per the Save and
>> Restore sequence see section "USBHOST/USBTLL Save-and-Restore
>> Management" in the OMAP Technical Reference Manual.
>>
>> The basic idea there is that software does the context saving into SAR
>> RAM before entering OFF mode and hardware automatically restores the
>> context after coming out of OFF mode.
> 
> Is it?  The way I read the doco, the hardware both saves to SAR RAM, and
> restores from  SAR RAM.
>   Section 22.2.4.1.6  Save and Restore
> of my copy of the TRM says:
> 
>> The save-and-restore (SAR) mechanism can extract the hardware context of the high-speed USB host
>> controller (after all USB activity has been suspended) before switching off (=save), save it to an external
>> always-on memory, and reinject it later after the module has been switched on again and reset (=restore)
>> seamlessly for the USB. Part of that context is composed of the register fields described in the current
>> chapter. The rest of the context is composed of the "buried" flip-flops and memories (not accessible by
>> software) like finite state-machine (FSM) states, buffer contents, and miscellaneous random logic bits.
> 
> which strongly suggests that it is all handled by hardware.  Of course there
> are other registers that aren't covered  by the SAR - we need to identify
> those and make sure they are saved and restored.  I've found a few registers
> that aren't being restored, but restoring them hasn't made a visible
> difference yet.

Yes, you are right. I mixed it up with OMAP4 behaviour, sorry.
But still, software needs to ensure that the USBHOST and CORE power
domain's SAVEANDRESTORE bit are set to ensure that SAR works.

see section "3.5.4.6 USBHOST/USBTLL Save-and-Restore Management"

This seems to be done by the powerdomain code based on the
PWRDM_HAS_HDWR_SAR flag. However, this flag is disabled for USBHOST
powerdomain with the following comment.

> Both USBHOST and USBTLL support a save-and-restore mechanism. When the device enters into off
> mode (that is, all power domains, except the WKUP power domain, are off), the user may want to save
> the USBHOST context and restore it when exiting off mode. The save-and-restore mechanism for the HS
> USB Host is enabled by setting the PRCM.PM_PWSTCTRL_USBHOST[4] SAVEANDRESTORE bit; for
> the USBTLL, it is configured by the PRCM.PM_PWSTCTRL_CORE[4] SAVEANDRESTORE bit. The save
> mechanism is initiated as the power domain transitions from active to off state (or to OSWR state for the
> USBTLL), whereas the restore mechanism is initiated as the power domain transitions from off to active
> power state.

Can you try with the flag enabled?

> 
> Am I missing something?
> 
>>
>> But that alone is not enough for USB host to work. We need to make sure
>> we have covered all the erratas. There are a number of them which are
>> not covered yet in mainline.
> 
> Is there a list somewhere?
> 

They should be mentioned in the Silicon Errata.

http://www.ti.com/product/omap3530

regards,
-roger

  reply	other threads:[~2013-01-16 10:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-08 22:29 Help wanted with USB and OMAP3 off_mode NeilBrown
2013-01-09 10:00 ` Igor Grinberg
2013-01-09 10:19   ` NeilBrown
2013-01-09 10:24     ` Michael Trimarchi
2013-01-09 11:34       ` NeilBrown
2013-01-09 11:42         ` Michael Trimarchi
2013-01-16  7:28           ` NeilBrown
2013-01-09 12:08         ` Michael Trimarchi
2013-01-09 12:54           ` Igor Grinberg
2013-01-16  7:26             ` NeilBrown
2013-01-16  9:28               ` Igor Grinberg
2013-01-16 10:19                 ` NeilBrown
2013-01-16 11:11                   ` Igor Grinberg
2013-01-17  0:22                     ` NeilBrown
2013-01-17  9:24                       ` NeilBrown
2013-01-16 10:00 ` Roger Quadros
2013-01-16 10:27   ` NeilBrown
2013-01-16 10:57     ` Roger Quadros [this message]
2013-01-17 11:01       ` NeilBrown
2013-01-17 11:29         ` Roger Quadros
2013-01-17 21:08           ` NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50F68784.8050708@ti.com \
    --to=rogerq@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=neilb@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).