public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <mike@compulab.co.il>
To: Vimal Singh <vimal.newwork@gmail.com>
Cc: tony@atomide.com, s-ghorai@ti.com, linux-omap@vger.kernel.org,
	Mike Rapoport <mike@compulab.co.il>
Subject: Re: [PATCH 2/2] omap: gpmc-nand: add ability to keep timings defined by the bootloader
Date: Thu, 29 Apr 2010 09:53:06 +0300	[thread overview]
Message-ID: <4BD92CD2.7010907@compulab.co.il> (raw)
In-Reply-To: <z2hce9ab5791004282127u817d6604oa65b8bf3b9957bda@mail.gmail.com>

Vimal Singh wrote:
> On Wed, Apr 28, 2010 at 9:36 PM, Mike Rapoport <mike@compulab.co.il> wrote:
>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>> ---
>>  arch/arm/mach-omap2/gpmc-nand.c        |   19 ++++++++++++++++++-
>>  arch/arm/plat-omap/include/plat/nand.h |    1 +
>>  2 files changed, 19 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c
>> index e57fb29..7c6c027 100644
>> --- a/arch/arm/mach-omap2/gpmc-nand.c
>> +++ b/arch/arm/mach-omap2/gpmc-nand.c
>> @@ -22,6 +22,7 @@
>>  #define WR_RD_PIN_MONITORING   0x00600000
>>
>>  static struct omap_nand_platform_data *gpmc_nand_data;
>> +static struct gpmc_timings gpmc_default_timings;
>>
>>  static struct resource gpmc_nand_resource = {
>>        .flags          = IORESOURCE_MEM,
>> @@ -34,13 +35,24 @@ static struct platform_device gpmc_nand_device = {
>>        .resource       = &gpmc_nand_resource,
>>  };
>>
>> +static void gpmc_nand_detect_timings(void)
>> +{
>> +       struct gpmc_timings t;
>> +
>> +       memset(&t, 0, sizeof(t));
>> +       gpmc_cs_get_timings(gpmc_nand_data->cs, &gpmc_default_timings);
>> +}
>> +
>>  static int omap2_nand_gpmc_retime(void)
>>  {
>> +       struct device *dev = &gpmc_nand_device.dev;
>>        struct gpmc_timings t;
>>        int err;
>>
>> -       if (!gpmc_nand_data->gpmc_t)
>> +       if (!gpmc_nand_data->gpmc_t) {
>> +               dev_warn(dev, "No timings provided, skipping retime\n");
>>                return 0;
>> +       }
>>
>>        memset(&t, 0, sizeof(t));
>>        t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->sync_clk);
>> @@ -112,6 +124,11 @@ int __init gpmc_nand_init(struct omap_nand_platform_data *_nand_data)
>>                return err;
>>        }
>>
>> +       if (gpmc_nand_data->keep_timings) {
>> +               gpmc_nand_detect_timings();
>> +               gpmc_nand_data->gpmc_t = &gpmc_default_timings;
>> +       }
>> +
> 
> I guess moving this part to omap2_nand_gpmc_retime will be a good idea.
> As there, once we get old/default timings we can simply skip the
> rounding part and directly jump to setting the timings.

This way it would be the same as to pass 'gpmc_nand_data->gpmc_t =
NULL'. If I correctly understood the previous comments ([1]), the
problem with skipping retime is that when L3 clock changes, the gpmc
timings became wrong. So, if we convert old/default timings to
nanoseconds early during startup every time retime is called it will use
the timing settings in nanoseconds thus yielding proper gpmc registers
configuration.
And, if I'm not terribly mistaken retime should be called each time L3
frequency changes, though with current kernel it's not yet the case...

--
[1] http://thread.gmane.org/gmane.linux.ports.arm.omap/34164/focus=34558

> Rest looks fine to me.
> 


-- 
Sincerely yours,
Mike.


  reply	other threads:[~2010-04-30 21:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-28 16:06 [PATCH 0/2] omap: gpmc-nand: add ability to keep timings defined by the bootloader Mike Rapoport
2010-04-28 16:06 ` [PATCH 1/2] omap: gpmc: add gpmc_cs_get_timings Mike Rapoport
2010-04-28 16:06 ` [PATCH 2/2] omap: gpmc-nand: add ability to keep timings defined by the bootloader Mike Rapoport
2010-04-29  4:27   ` Vimal Singh
2010-04-29  6:53     ` Mike Rapoport [this message]
2010-04-29  7:11       ` Vimal Singh
2010-04-29  7:27         ` Mike Rapoport

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=4BD92CD2.7010907@compulab.co.il \
    --to=mike@compulab.co.il \
    --cc=linux-omap@vger.kernel.org \
    --cc=s-ghorai@ti.com \
    --cc=tony@atomide.com \
    --cc=vimal.newwork@gmail.com \
    /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