linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 02/11] ARM: OMAP4+: AESS: enable internal auto-gating during initial setup
Date: Thu, 7 Jun 2012 04:08:44 -0700	[thread overview]
Message-ID: <20120607110843.GD12766@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1206070225430.6684@utopia.booyaka.com>

* Paul Walmsley <paul@pwsan.com> [120607 03:49]:
> On Thu, 7 Jun 2012, Tony Lindgren wrote:
> 
> > OK so that's not too bad then. But there's also the 
> > omap2_wd_timer_disable pre_shutdown too. And there's also the sysconfig 
> > autoidle bit for each driver that we're tweaking in the bus level code?
> 
> I think I lost your point here.  The ioremap() issue is separate from the 
> reset functions, etc., in my view.  Moving the reset functions out to 
> drivers/ seems potentially more reasonable than dropping the ioremap().
> 
> > If we can remove the ioremapping and accessing driver registers in the 
> > bus level code things get much simpler for the bus level code.
> 
> That's like saying if PCI Configuration Header handling were to be moved 
> into the driver code, then the PCI bus-level code would be much simpler 
> :-)
> 
> The hwmod code ioremaps the device registers to handle the 
> integration-level registers at the beginning of the device's address 
> space.  These registers can be thought of as part of the PRCM, not part of 
> the IP block.  It would have been better if TI had put these integration 
> registers in a separate address space like PCI does.  But we are stuck 
> with the existing hardware design.  The integration registers also differ 
> from chip to chip even with the same underlying IP block, see for example 
> the 32k sync timer.

Yes having these registers in the device address space sucks.
 
> The main reasons why these integration registers are handled now in common 
> code are:
> 
> 1. to avoid duplicating integration code between lots of different drivers 
>    that is unrelated to the driver itself, such as bus-level reset
> 
> 2. to ensure consistency of the OCP registers with the rest of the PM
>    state
> 
> 3. to avoid callbacks into drivers that might otherwise be needed for 
>    bitfields like CLOCKACTIVITY 
> 
> 4. to make it easier to debug integration problems with drivers

Sure that all makes sense.
 
> If we don't handle those registers in common code, the number of SoC 
> integration workarounds that need to be placed into the drivers will 
> increase.  For example, when OMAP4 added the smart-idle-with-wakeup and 
> smart-standby-with-wakeup OCP idle modes, only a couple of files needed to 
> be changed.  If those integration-level details were still in the drivers, 
> a large number of files would need to be changed.  And $DEITY help us if 
> the code sequence for dealing with those bits were to ever change in the 
> future - we'd need to change a bunch of drivers, rather than just one or 
> two files.  Also some people are going to need to audit the driver code 
> from an integration level pretty carefully for PM to work consistently.
> 
> I suppose one option, if we were to have a real omap_device, would be to 
> define callbacks for each driver to implement that would read and write 
> the OCP header registers.  Then the omap_bus code could call those 
> callbacks to handle the OCP register accesses, when called from the 
> driver's PM runtime calls.  Adds another layer of indirection, but would 
> localize IP block register accesses to the IP block's driver.

Yes there may be some way to deal with this cleanly while keeping the
driver registers in the drivers. Maybe inline functions in the driver
headers that hwmod code could include would be enough here.
 
> ...
> 
> As far as the reset and preconfiguration aspects of the hwmod code go, 
> they just happen to be possible since we're doing the ioremap anyway.  It 
> can be ensured that no matter what drivers are present, or what the 
> bootloader or previous OS did or didn't do, a minimal kernel should behave 
> predictably.
> 
> It seems like it might be reasonable to move these to some built-in driver 
> shim layer as you suggest in your other E-mail.  But that is assuming that 
> it can be made to work without needless layers of indirection.  I don't 
> know of any driver that does this now.  Maybe you know of one?

Yes good point, see the suggestion on the driver header inline functions
in the other email I just sent.

Regards,

Tony

  reply	other threads:[~2012-06-07 11:08 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-07  6:13 [PATCH 00/11] ARM: OMAP: core/hwmod: first set of fixes for 3.5-rc Paul Walmsley
2012-06-07  6:13 ` [PATCH 01/11] ARM: OMAP2+: hwmod: add setup_preprogram hook Paul Walmsley
2012-06-07  6:13 ` [PATCH 02/11] ARM: OMAP4+: AESS: enable internal auto-gating during initial setup Paul Walmsley
2012-06-07  7:19   ` Tony Lindgren
2012-06-07  7:31     ` Paul Walmsley
2012-06-07  7:48       ` Tony Lindgren
2012-06-07 10:45         ` Paul Walmsley
2012-06-07 11:08           ` Tony Lindgren [this message]
2012-06-07  6:13 ` [PATCH 03/11] ARM: OMAP4: hwmod data: add SL2IF hardreset line Paul Walmsley
2012-06-07  6:13 ` [PATCH 04/11] ARM: OMAP2+: usb_host_fs: add custom reset for usb_host_fs (fsusb) Paul Walmsley
2012-06-07  7:31   ` Tony Lindgren
2012-06-07  7:33     ` Felipe Balbi
2012-06-07  8:00       ` Tony Lindgren
2012-06-07  7:40     ` Paul Walmsley
2012-06-07  7:51       ` Tony Lindgren
2012-06-07  7:55         ` Felipe Balbi
2012-06-07  8:02           ` Cousson, Benoit
2012-06-07  8:10             ` Tony Lindgren
2012-06-07  8:14             ` Felipe Balbi
2012-06-07 10:52             ` Paul Walmsley
2012-06-07 12:30               ` Cousson, Benoit
2012-06-08  1:11                 ` Paul Walmsley
2012-06-08 13:13                   ` Cousson, Benoit
2012-06-08 13:28                     ` Paul Walmsley
2012-06-08 19:32                       ` Hiremath, Vaibhav
2012-06-08 23:10                         ` AM335x CPSW reset (was "RE: [PATCH 04/11] ARM: OMAP2+: usb_host_fs: add custom reset for usb_host_fs (fsusb)") Paul Walmsley
2012-06-09  8:39                           ` Hiremath, Vaibhav
2012-06-09 16:05                             ` Paul Walmsley
2012-06-11  6:15                       ` [PATCH 04/11] ARM: OMAP2+: usb_host_fs: add custom reset for usb_host_fs (fsusb) Tony Lindgren
2012-06-11  8:04                         ` Paul Walmsley
2012-06-11  9:24                           ` Cousson, Benoit
2012-06-11 16:20                             ` Paul Walmsley
2012-06-07 10:20         ` Paul Walmsley
2012-06-07 10:52           ` Tony Lindgren
2012-06-07 22:05             ` Paul Walmsley
2012-06-08  6:38               ` Tony Lindgren
2012-06-09  1:31                 ` Paul Walmsley
2012-06-11  6:21                   ` Tony Lindgren
2012-06-07  6:13 ` [PATCH 05/11] ARM: OMAP2+: hwmod code/data: fix 32K sync timer Paul Walmsley
2012-06-07  6:59   ` Hiremath, Vaibhav
2012-06-07  7:08     ` Paul Walmsley
2012-06-07 18:09       ` Hiremath, Vaibhav
2012-06-07 20:03         ` Paul Walmsley
2012-06-08 19:10           ` Hiremath, Vaibhav
2012-06-11  9:12             ` Cousson, Benoit
2012-06-08 13:22   ` Tero Kristo
2012-06-08 23:18     ` Paul Walmsley
2012-06-07  6:13 ` [PATCH 06/11] ARM: OMAP4+: hwmod: fix issue causing IPs not going back to Smart-Standby Paul Walmsley
2012-06-07  6:13 ` [PATCH 07/11] ARM: OMAP: PM: Lock clocks list while generating summary Paul Walmsley
2012-06-07  6:13 ` [PATCH 08/11] ARM: OMAP2+: CM: increase the module disable timeout Paul Walmsley
2012-06-07  6:13 ` [PATCH 10/11] ARM: OMAP2+: hwmod: add flag to prevent hwmod code from touching IP block during init Paul Walmsley
2012-06-07  6:13 ` [PATCH 09/11] ARM: OMAP4: clock data: add clockdomains for clocks used as main clocks Paul Walmsley
2012-06-07  6:39   ` Rajendra Nayak
2012-06-18 17:41     ` Paul Walmsley
2012-06-19  5:15       ` Rajendra Nayak
2012-06-07  6:13 ` [PATCH 11/11] ARM: OMAP4: hwmod data: do not enable or reset the McPDM during kernel init Paul Walmsley
2012-06-08 13:30 ` [PATCH 00/11] ARM: OMAP: core/hwmod: first set of fixes for 3.5-rc Tero Kristo
2012-06-09  1:15   ` Paul Walmsley
2012-06-13 23:55   ` Paul Walmsley
2012-06-14  7:36     ` Tero Kristo

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=20120607110843.GD12766@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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).