devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	linux ARM
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH] cpuidle: kirkwood: Move out of mach directory, add DT.
Date: Fri, 28 Dec 2012 22:26:39 +0530	[thread overview]
Message-ID: <50DDCF47.1030305@ti.com> (raw)
In-Reply-To: <50DDC54A.3020509-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

On Friday 28 December 2012 09:44 PM, Rob Herring wrote:
> On 12/28/2012 09:49 AM, Andrew Lunn wrote:
>> On Fri, Dec 28, 2012 at 08:55:31AM -0600, Rob Herring wrote:
>>> On 12/28/2012 08:35 AM, Andrew Lunn wrote:
>>>> On Fri, Dec 28, 2012 at 08:18:42AM -0600, Rob Herring wrote:
>>>>> On 12/28/2012 06:47 AM, Andrew Lunn wrote:
>>>>>> Move the Kirkwood cpuidle driver out of arch/arm/mach-kirkwood and
>>>>>> into drivers/cpuidle. Convert the driver into a platform driver and
>>>>>> add a device tree binding. Add a DT node to instantiate the driver for
>>>>>> boards converted to DT, and a platform data for old style boards.
>>>>>
>>>>> Is this an old comment? I don't see any platform data.
>>>>
>>>> There is no platform data, since all the driver needs is an address of
>>>> the DDR control register. The code to create a platform device entry
>>>> is in common.c hunk.
>>>
>>> So you should say "a platform device for old style boards".
>>
>> Hi Rob
>>
>> O.K. I will change it.
>>
>>>>>> +		cpuidle@1418 {
>>>>>> +			compatible = "marvell,kirkwood-cpuidle";
>>>>>> +			reg = <0x1418 0x4>;
>>>>>> +		};
>>>>>> +
>>>>>
>>>>> This is describing what linux wants, not the hardware. This is a common
>>>>> problem with cpuidle drivers in that they use shared registers. I don't
>>>>> have a good solution, but this doesn't belong in DTS.
>>>>
>>>> Do you have a bad solution?
>>>
>>> Ha! :) I should say I don't have a clear, obvious solution.
>>>
>>> Don't do a platform driver and just check the machine compatible
>>> property which is what I did for highbank.
>>
>> Yes, i've seen your cpuidle-calxeda.c. I can follow that model, but i
>> still somehow need the address of the SDRAM controller "Operation
>> Register".
>>
>>> Have the machine code create
>>> the platform device. Not *all* platform devices have to be created based
>>> on the DTB. Create an MFD driver for the whole block of registers.
>>
>> The block of registers is for controlling the SDRAM. Its not really a
>> MFD. The cpuidle code is putting the SDRAM controller into self
>> refresh mode and then doing a WFI.
>
> It is multi-function in the sense that multiple subsystems needing to
> access shared registers. If you have ECC, then you would need to give
> EDAC subsystem access to ECC related registers.
>
>>>
>>>> I could just hard code the address, since its the same for all
>>>> kirkwood SoCs. Also, the register is not being used by any other
>>>> code on kirkwood, so its not shared.
>>>
>>> Then describe it based on the reference manual, but you need to do so
>>> assuming you are using all the other registers. I assume there are other
>>> registers at say 0x1414 or 0x141c. You have to be careful if you create
>>> separate nodes for each register or sub-group of registers. It needs to
>>> work no matter what the OS expectation is.
>>
>> I don't understand what you are try to explain here. It makes little
>> sense for the cpuidle driver to take all the SDRAM control registers.
>
> Exactly. The same is true of the dts. It makes little sense to describe
> only 1 register of a h/w block. Perhaps the memory controller subsystem
> (drivers/memory) can be expanded to include self-refresh functions.
> Entering self-refresh can be tricky, so it might not really be possible
> to define a common api here.
>
Putting DDR/SDRAM into self refresh means, you no longer have RAM
available to execute and any code CPU needs to execute after that has
to be executed either from lock down cache with no cache evictions or
from some internal on chip memory with caches disabled to avoid accesses
to DDR. Not sure how below code works if the first writel puts DDR into
self refresh. Is cpu_do_idle() code copied to some internal memory ?

+	writel(0x7, ddr_operation_base);
+	cpu_do_idle();

May be I am missing something but i have worked on such a code for OMAP3
kind of devices and seen major issues with DDR self refresh and CPU
entering into idle state.

Regards
Santosh

  parent reply	other threads:[~2012-12-28 16:56 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-28 12:47 [PATCH] cpuidle: kirkwood: Move out of mach directory, add DT Andrew Lunn
     [not found] ` <1356698844-4220-1-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 14:18   ` Rob Herring
     [not found]     ` <50DDAA42.2020101-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-12-28 14:35       ` Andrew Lunn
     [not found]         ` <20121228143517.GA5172-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 14:55           ` Rob Herring
     [not found]             ` <50DDB2E3.103-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-12-28 15:49               ` Andrew Lunn
     [not found]                 ` <20121228154927.GC5172-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 16:14                   ` Rob Herring
     [not found]                     ` <50DDC54A.3020509-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-12-28 16:38                       ` Andrew Lunn
     [not found]                         ` <20121228163815.GD5172-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 16:59                           ` Rob Herring
2012-12-28 16:56                       ` Santosh Shilimkar [this message]
     [not found]                         ` <50DDCF47.1030305-l0cyMroinI0@public.gmane.org>
2012-12-28 17:28                           ` Andrew Lunn
     [not found]                             ` <20121228172807.GA7578-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 17:50                               ` Santosh Shilimkar
     [not found]                                 ` <50DDDBEB.3000002-l0cyMroinI0@public.gmane.org>
2012-12-28 17:56                                   ` Andrew Lunn
     [not found]                                     ` <20121228175618.GC7578-g2DYL2Zd6BY@public.gmane.org>
2012-12-28 18:02                                       ` Santosh Shilimkar
2013-02-08 21:34   ` Grant Likely
2013-02-10 18:58     ` Andrew Lunn
2013-02-11 11:41       ` Grant Likely
2012-12-28 14:32 ` Florian Fainelli
     [not found]   ` <50DDAD68.4090704-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2012-12-28 14:37     ` Andrew Lunn

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=50DDCF47.1030305@ti.com \
    --to=santosh.shilimkar-l0cymroini0@public.gmane.org \
    --cc=andrew-g2DYL2Zd6BY@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \
    --cc=len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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).