linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: mperttunen@nvidia.com (Mikko Perttunen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/8] of: Add Tegra124 EMC bindings
Date: Mon, 14 Jul 2014 10:55:51 +0300	[thread overview]
Message-ID: <53C38D07.4030402@nvidia.com> (raw)
In-Reply-To: <53C00A57.5070102@kapsi.fi>

On 11/07/14 19:01, Mikko Perttunen wrote:
> On 07/11/2014 05:51 PM, Thierry Reding wrote:
>> On Fri, Jul 11, 2014 at 05:18:30PM +0300, Mikko Perttunen wrote:
>>> ...
>> ...
>
> In this case, all the registers that will be written are such that the
> MC driver will never need to write them. They are shadowed registers,
> meaning that all writes are stored and are only effective starting from
> the next time the EMC rate change state machine is activated, so writing
> them from anywhere except than the EMC driver would be pointless.
>
> I can find two users of these registers in downstream:
> 1) mc.c saves and loads them on suspend/restore (I don't know why, that
> shouldn't do anything. They will be overridden anyway during the next
> EMC rate change).
> 2) tegra12x_la.c reads MC_EMEM_ARB_MISC0 during a core_initcall to
> calculate a value which it then writes to a register that is also
> shadowed and that is part of downstream burst registers so that doesn't
> do anything either.
>
> The reason I implemented two ways to specify the MC register area was
> that this could be merged before an MC driver and retain
> backwards-compatibility after the MC driver arrives.
>
> If this is not acceptable, we can certainly wait for the MC driver to be
> merged first. (Although with the general rate of things, I hope I won't
> be back at school at that point..) I assume that this is blocked on the
> IOMMU bindings discussion? In that case, there are several options: the
> MC driver could have its own tables for each EMC rate or we could just
> make the EMC tables global (i.e. not under the EMC node). In any case,
> the MC driver would need to implement a function that would just write
> these values but be guaranteed to not do anything else, since that could
> cause nasty things during the EMC rate change sequence.

Having taken another look at the code, I don't think the MC driver could 
do anything that bad. There are also two other places where the EMC 
driver needs to read MC registers: Inside the sequence, it reads a 
register but discards its contents. According to comments, this acts as 
a memory barrier, probably for the preceding step that writes into MC 
memory. If the register writes are moved to the MC driver, it could also 
handle that. In another place it reads the number of RAM modules from a 
MC register. The MC driver could export this as another function.

That said, I still suspect it might not be worth it to divide this 
between two drivers.

- Mikko

  reply	other threads:[~2014-07-14  7:55 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-11 14:18 [PATCH 0/8] Tegra124 EMC (external memory controller) support Mikko Perttunen
2014-07-11 14:18 ` [PATCH 1/8] clk: tegra124: Remove old emc_mux and emc clocks Mikko Perttunen
2014-07-11 14:18 ` [PATCH 2/8] ARM: tegra: Remove TEGRA124_CLK_EMC from tegra124-car.h Mikko Perttunen
2014-07-21 22:37   ` Stephen Warren
2014-07-29  8:28     ` Mikko Perttunen
2014-07-11 14:18 ` [PATCH 3/8] ARM: tegra: Add PLL_M_UD and PLL_C_UD to tegra124-car binding header Mikko Perttunen
2014-08-25 17:41   ` Stephen Warren
2014-09-17 13:41     ` Peter De Schrijver
2014-07-11 14:18 ` [PATCH 4/8] clk: tegra124: Add PLL_M_UD and PLL_C_UD clocks Mikko Perttunen
2014-07-11 14:18 ` [PATCH 5/8] of: Add Tegra124 EMC bindings Mikko Perttunen
2014-07-11 14:51   ` Thierry Reding
2014-07-11 16:01     ` Mikko Perttunen
2014-07-14  7:55       ` Mikko Perttunen [this message]
2014-07-14  8:15         ` Thierry Reding
2014-07-14  9:06           ` Mikko Perttunen
2014-07-14  9:31             ` Thierry Reding
2014-07-14  9:57               ` Mikko Perttunen
2014-07-14 10:29                 ` Thierry Reding
2014-07-14 10:54                   ` Mikko Perttunen
2014-07-14 11:10                     ` Thierry Reding
2014-07-14 12:28                       ` Mikko Perttunen
2014-07-11 16:43   ` Andrew Bresticker
2014-07-11 16:48     ` Mikko Perttunen
2014-07-21 21:28     ` Stephen Warren
2014-07-21 22:52       ` Andrew Bresticker
2014-07-22 16:45         ` Stephen Warren
2014-07-22 17:22           ` Andrew Bresticker
2014-07-22 17:34             ` Stephen Warren
2014-07-29  8:30               ` Mikko Perttunen
2014-07-29 15:49                 ` Stephen Warren
2014-07-31 10:48                   ` Mikko Perttunen
2014-07-31 11:05                     ` Mikko Perttunen
2014-07-31 15:32                       ` Stephen Warren
2014-07-21 22:36   ` Stephen Warren
2014-07-11 14:18 ` [PATCH 6/8] ARM: tegra: Add EMC to Tegra124 device tree Mikko Perttunen
2014-07-11 14:18 ` [PATCH 7/8] ARM: tegra: Add EMC timings to Jetson TK1 " Mikko Perttunen
2014-07-11 14:18 ` [PATCH 8/8] clk: tegra: Add EMC clock driver Mikko Perttunen
2014-07-22 16:57   ` Stephen Warren
2014-07-29  8:47     ` Mikko Perttunen
2014-07-29 20:19       ` Mike Turquette
2014-07-29 22:14         ` Stephen Warren
2014-07-30  9:34           ` Thierry Reding
2014-07-31 19:06             ` Mike Turquette
2014-07-31 19:53               ` Stephen Warren
2014-07-31 23:08                 ` Mike Turquette
2014-08-01  6:31                   ` Mikko Perttunen
2014-08-01  8:40               ` Thierry Reding
2014-08-25 17:40 ` [PATCH 0/8] Tegra124 EMC (external memory controller) support Stephen Warren
2014-08-26  7:42   ` Mikko Perttunen
2014-08-26  7:47     ` Thierry Reding
2014-08-26  8:02       ` Mikko Perttunen
2014-09-05 10:22     ` Tomeu Vizoso
2014-09-05 10:55       ` Mikko Perttunen

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=53C38D07.4030402@nvidia.com \
    --to=mperttunen@nvidia.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).