From: Jon Hunter <jon-hunter@ti.com>
To: Christoph Fritz <chf.fritz@googlemail.com>
Cc: Javier Martinez Canillas <javier.martinez@collabora.co.uk>,
Daniel Mack <daniel@zonque.org>,
linux-omap@vger.kernel.org
Subject: Re: ARM: dts: omap3: NAND support - how?
Date: Fri, 19 Apr 2013 09:00:45 -0500 [thread overview]
Message-ID: <51714E0D.7020304@ti.com> (raw)
In-Reply-To: <1366372957.3928.104.camel@mars>
On 04/19/2013 07:02 AM, Christoph Fritz wrote:
> On Fri, 2013-04-19 at 11:01 +0200, Christoph Fritz wrote:
>
>> This is how u-boot GPMC config differs from final kernel configuration:
>>
>>
>> u-boot: GPMC_CONFIG1: 0x6e000060: 0x00001800
>> kernel: 0x00001800
>>
>> u-boot: GPMC_CONFIG2: 0x6e000064: 0x00141400
>> kernel: 0x00040400
>>
>> u-boot: GPMC_CONFIG3: 0x6e000068: 0x00141400
>> kernel: 0x00040400
>>
>> u-boot: GPMC_CONFIG4: 0x6e00006c: 0x0f010f01
>> kernel: 0x03000300
>>
>> u-boot: GPMC_CONFIG5: 0x6e000070: 0x010c1414
>> kernel: 0x00030404
>>
>> u-boot: GPMC_CONFIG6: 0x6e000074: 0x1f0f0a80
>> kernel: 0x07030000
>>
>> u-boot: GPMC_CONFIG7: 0x6e000078: 0x00000870
>> kernel: 0x00000f70
>
> This differs because of wrong timings in my dt, this is my current one:
>
> &gpmc {
> ranges = <0 0 0x30000000 0x1000000>;
> nand@0,0 {
> reg = <0 0 0x1000000>;
> nand-bus-width = <16>;
> ti,nand-ecc-opt = "hw"; /* <- here I'm not sure, in current u-boot it's just 'hw' */
> /* no elm on omap3 */
>
> gpmc,mux-add-data = <0>;
> gpmc,device-nand;
> gpmc,device-width = <2>;
> gpmc,wait-pin = <0>;
> gpmc,wait-monitoring-ns = <0>;
> gpmc,burst-length= <4>;
> gpmc,cs-on-ns = <0>;
> gpmc,cs-rd-off-ns = <100>;
> gpmc,cs-wr-off-ns = <100>;
> gpmc,adv-on-ns = <0>;
> gpmc,adv-rd-off-ns = <100>;
> gpmc,adv-wr-off-ns = <100>;
> gpmc,oe-on-ns = <5>;
> gpmc,oe-off-ns = <75>;
> gpmc,we-on-ns = <5>;
> gpmc,we-off-ns = <75>;
> gpmc,rd-cycle-ns = <100>;
> gpmc,wr-cycle-ns = <100>;
> gpmc,access-ns = <60>;
> gpmc,page-burst-access-ns = <5>;
> gpmc,bus-turnaround-ns = <0>;
> gpmc,cycle2cycle-samecsen;
> gpmc,cycle2cycle-delay-ns = <50>;
> gpmc,wr-data-mux-bus-ns = <75>;
> gpmc,wr-access-ns = <155>;
> };
> };
>
> and now NAND gets detected:
>
> [ 0.267913] omap-gpmc 6e000000.gpmc: GPMC revision 5.0
> [ 0.269012] GPMC CS0: cs_on : 0 ticks, 0 ns (was 0 ticks) 0 ns
> [ 0.269134] GPMC CS0: cs_rd_off : 20 ticks, 100 ns (was 20 ticks) 100 ns
>
> [ 0.269256] GPMC CS0: cs_wr_off : 20 ticks, 100 ns (was 20 ticks) 100 ns
> [ 0.269287] GPMC CS0: adv_on : 0 ticks, 0 ns (was 0 ticks) 0 ns
> [ 0.269317] GPMC CS0: adv_rd_off: 20 ticks, 100 ns (was 20 ticks) 100 ns
> [ 0.269378] GPMC CS0: adv_wr_off: 20 ticks, 100 ns (was 20 ticks) 100 ns
> [ 0.269409] GPMC CS0: oe_on : 0 ticks, 0 ns (was 1 ticks) 0 ns
> [ 0.269439] GPMC CS0: oe_off : 15 ticks, 75 ns (was 15 ticks) 75 ns
> [ 0.269439] GPMC CS0: we_on : 0 ticks, 0 ns (was 1 ticks) 0 ns
> [ 0.269470] GPMC CS0: we_off : 15 ticks, 75 ns (was 15 ticks) 75 ns
> [ 0.269500] GPMC CS0: rd_cycle : 20 ticks, 100 ns (was 20 ticks) 100 ns
> [ 0.269531] GPMC CS0: wr_cycle : 20 ticks, 100 ns (was 20 ticks) 100 ns
> [ 0.269531] GPMC CS0: access : 12 ticks, 60 ns (was 12 ticks) 60 ns
> [ 0.269561] GPMC CS0: page_burst_access: 0 ticks, 0 ns (was 1 ticks) 0 ns
> [ 0.269592] GPMC CS0: bus_turnaround: 0 ticks, 0 ns (was 0 ticks) 0 ns
> [ 0.269592] gpmc_cs_set_timings, 404, t->cycle2cycle_delay: 0x00000000
> [ 0.269622] GPMC CS0: cycle2cycle_delay: 0 ticks, 0 ns (was 10 ticks) 0 ns
> [ 0.269653] GPMC CS0: wait_monitoring: 0 ticks, 0 ns (was 0 ticks) 0 ns
> [ 0.269653] GPMC CS0: clk_activation: 0 ticks, 0 ns (was 0 ticks) 0 ns
> [ 0.269683] GPMC CS0: wr_data_mux_bus: 15 ticks, 75 ns (was 15 ticks) 75 ns
> [ 0.269714] GPMC CS0: wr_access : 31 ticks, 155 ns (was 31 ticks) 155 ns
> [ 0.270416] gpmc_read_settings_dt: page/burst-length set but not used!
> [ 0.270446] gpmc_read_settings_dt: read/write wait monitoring not enabled!
> [ 0.276519] No ATAGs?
> [ 0.276550] hw-breakpoint: debug architecture 0x4 unsupported.
> [ 0.279205] OMAP DMA hardware revision 5.0
> <SNIP>
> [ 2.021575] mtdoops: mtd device (mtddev=name/number) must be supplied
> [ 2.029907] Trying ONFI probe in 16 bits mode, aborting !
> [ 2.035644] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit), 256MiB, page size: 2048, OOB size: 64
>
>
> but kernel GPMC config still differs from u-boot gpmc config:
>
>
> u-boot: GPMC_CONFIG1: 0x6e000060: 0x00001800
> kernel: 0x00001800 OK
> u-boot: GPMC_CONFIG2: 0x6e000064: 0x00141400
> kernel: 0x00141400 OK
> u-boot: GPMC_CONFIG3: 0x6e000068: 0x00141400
> kernel: 0x00141400 OK
> u-boot: GPMC_CONFIG4: 0x6e00006c: 0x0f010f01
> kernel: 0x0f000f00 DIFF
> u-boot: GPMC_CONFIG5: 0x6e000070: 0x010c1414
> kernel: 0x000c1414 DIFF
> u-boot: GPMC_CONFIG6: 0x6e000074: 0x1f0f0a80
> kernel: 0x1f0f0000 DIFF
> u-boot: GPMC_CONFIG7: 0x6e000078: 0x00000870
> kernel: 0x00000f70 doesn't harm
>
> so I hacked the missing values to omap2_nand_gpmc_retime():
>
> From 8868823925441a824fe0d3143614482f25fb379b Mon Sep 17 00:00:00 2001
> From: Christoph Fritz <chf.fritz@googlemail.com>
> Date: Fri, 19 Apr 2013 12:41:11 +0200
> Subject: [PATCH] [RFC] ARM: OMAP2+: nand: add missing gpmc timing values
>
> This patch adds missing gpmc timing values to omap2_nand_gpmc_retime().
> ---
> arch/arm/mach-omap2/gpmc-nand.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c
> index d9c2719..d8bb241 100644
> --- a/arch/arm/mach-omap2/gpmc-nand.c
> +++ b/arch/arm/mach-omap2/gpmc-nand.c
> @@ -58,6 +58,9 @@ static int omap2_nand_gpmc_retime(
> /* Read */
> t.adv_rd_off = gpmc_t->adv_rd_off;
> t.oe_on = t.adv_on;
> + if (cpu_is_omap34xx()) {
> + t.oe_on = gpmc_t->oe_on;
> + }
How about just setting gpmc,adv-on-ns, then you don't need the above.
> t.access = gpmc_t->access;
> t.oe_off = gpmc_t->oe_off;
> t.cs_rd_off = gpmc_t->cs_rd_off;
> @@ -69,11 +72,18 @@ static int omap2_nand_gpmc_retime(
> if (cpu_is_omap34xx()) {
We should get rid of cpu_is_omap34xx() here as this is handled by
gpmc_cs_set_timings().
> t.wr_data_mux_bus = gpmc_t->wr_data_mux_bus;
> t.wr_access = gpmc_t->wr_access;
> + t.we_on = gpmc_t->we_on;
How about just setting gpmc,adv-on-ns, then you don't need the above.
> }
> t.we_off = gpmc_t->we_off;
> t.cs_wr_off = gpmc_t->cs_wr_off;
> t.wr_cycle = gpmc_t->wr_cycle;
>
> + if (cpu_is_omap34xx()) {
> + t.bool_timings = gpmc_t->bool_timings;
> + t.cycle2cycle_delay = gpmc_t->cycle2cycle_delay;
> + t.page_burst_access = gpmc_t->page_burst_access;
> + }
The above timings are applicable to all gpmc versions and so you should
not need to make this dependent on cpu_is_omap34xx(). So would be
worthwhile spending a patch to add the above timings to this function.
Cheers
Jon
next prev parent reply other threads:[~2013-04-19 14:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-18 19:03 ARM: dts: omap3: NAND support - how? Christoph Fritz
2013-04-18 19:39 ` Jon Hunter
2013-04-18 20:23 ` Christoph Fritz
2013-04-18 22:28 ` Jon Hunter
2013-04-18 22:48 ` Christoph Fritz
2013-04-18 23:24 ` Jon Hunter
2013-04-18 23:26 ` Jon Hunter
2013-04-19 9:01 ` Christoph Fritz
2013-04-19 12:02 ` Christoph Fritz
2013-04-19 14:00 ` Jon Hunter [this message]
2013-04-19 14:53 ` Christoph Fritz
2013-04-19 15:36 ` Jon Hunter
2013-04-19 15:48 ` Tony Lindgren
2013-04-19 15:56 ` Jon Hunter
2013-04-19 16:15 ` Tony Lindgren
2013-04-19 16:29 ` [PATCH] ARM: OMAP2+: nand: reorganize gpmc timing values Christoph Fritz
2013-05-16 15:49 ` Tony Lindgren
2013-04-19 12:57 ` ARM: dts: omap3: NAND support - how? Jon Hunter
2013-04-19 13:06 ` Christoph Fritz
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=51714E0D.7020304@ti.com \
--to=jon-hunter@ti.com \
--cc=chf.fritz@googlemail.com \
--cc=daniel@zonque.org \
--cc=javier.martinez@collabora.co.uk \
--cc=linux-omap@vger.kernel.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).