From: Christoph Fritz <chf.fritz@googlemail.com>
To: Jon Hunter <jon-hunter@ti.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 00:48:02 +0200 [thread overview]
Message-ID: <1366325282.4232.6.camel@lovely> (raw)
In-Reply-To: <5170738F.8050305@ti.com>
On Thu, 2013-04-18 at 17:28 -0500, Jon Hunter wrote:
> On 04/18/2013 03:23 PM, Christoph Fritz wrote:
> > OMAP3_EVM # md 0x6E000060 7
> > 6e000060: 00001800 00141400 00141400 0f010f01 ................
> > 6e000070: 010c1414 1f0f0a80 00000870 ........p...
>
> I don't see any other errors in the log. So I am wondering if the
> chip-select mapping is setup correctly. Can you share a dump of the gpmc
> registers from u-boot?
I already did, please see the "md 0x6E000060 7" from above. Below is my
work-sheet how I configured the values:
---
To get the values right for dt-GPMC-NAND-Config, here are the GPMC
config registers for chip-select 0, they are taken from u-boot
by doing "md 0x6E000060 7" on the u-boot shell:
GPMC_CONFIG1: 0x6e000060: 0x00001800
GPMC_CONFIG2: 0x6e000064: 0x00141400
GPMC_CONFIG3: 0x6e000068: 0x00141400
GPMC_CONFIG4: 0x6e00006c: 0x0F010F01
GPMC_CONFIG5: 0x6e000070: 0x010C1414
GPMC_CONFIG6: 0x6e000074: 0x1F0F0A80
GPMC_CONFIG7: 0x6e000078: 0x00000870
and analyzed by datasheet (TRM page 2210):
GPMC_CONFIG7 0x00000870:
|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 1| 0| 0| 0| 0| 1| 1| 1| 0| 0| 0| 0|
5:0 BASEADDR: 0x4 (reg addr: 0x30000000)
dT: not supported
CSi base address
6 CSVALID: 1
dT: not supported
CS enable
11:8 MASKADDRESS: 0x1000: Chip-select size of 128 Mbytes
dT: not supported
CS mask address
GPMC_CONFIG6 0x1F0F0A80:
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
| 0| 0| 0| 1| 1| 1| 1| 1| 0| 0| 0| 0| 1| 1| 1| 1|
|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 0| 0| 0| 0| 1| 0| 1| 0| 1| 0| 0| 0| 0| 0| 0| 0|
28:24 WRACCESSTIME: 0x1F: 31 GPMC_FCLK cycles
dT: "gpmc,wr-access-ns = <0x1F>;" (0x0 to 0x1F)
used by the attached memory for the first data capture
19:16 WRDATAONADMUXBUS: 0xF
dT: "gpmc,wr-data-mux-bus-ns = <0xF>;" (0x0 to 0xF)
Specifies on which GPMC_FCLK rising edge the first data is
driven in the add/data mux bus
11:8 CYCLE2CYCLEDELAY: 0xA GPMC_FCLK cycles
dT: "gpmc,cycle2cycle-delay-ns = <0xA>;" (0x0 to 0xF)
Chip-select high pulse delay between successive accesses
7 CYCLE2CYCLESAMECSEN: 0x1: Add CYCLE2CYCLEDELAY
dT: "gpmc,cycle2cycle-samecsen = <0x1>;" (bool)
Add CYCLE2CYCLEDELAY between successive accesses
to the same CS (any access type)
6 CYCLE2CYCLEDIFFCSEN: 0x0: No delay between the two accesses
dT: "gpmc,cycle2cycle-diffcsen = <0x0>;" (bool)
Add CYCLE2CYCLEDELAY between successive accesses
to a different CS (any access type)
3:0 BUSTURNAROUND: 0x0: 0 GPMC_FCLK cycle
dT: "gpmc,bus-turnaround-ns = <0x0>;" (0x0 to 0xF)
Bus turn around latency between successive accesses to
the same CS (read to write) or to a different CS (read to
read and read to write)
GPMC_CONFIG5 0x010C1414:
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
| 0| 0| 0| 0| 0| 0| 0| 1| 0| 0| 0| 0| 1| 1| 0| 0|
|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 0| 0| 0| 1| 0| 1| 0| 0| 0| 0| 0| 1| 0| 1| 0| 0|
27:24 PAGEBURSTACCESSTIME: 0x1: 1 GPMC_FCLK cycle
dT: "gpmc,page-burst-access-ns = <0x1>;" (0x0 to 0xF)
Delay between successive words in a multiple access
20:16 RDACCESSTIME: 0xC: 12 GPMC_FCLK cycles
dT: "gpmc,access-ns = <0xC>;" (0x0 to 0x1F)
Delay between start cycle time and first data valid
12:8 WRCYCLETIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,wr-cycle-ns = <0x14>;" (0x0 to 0x1F)
Total write cycle time
4:0 RDCYCLETIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,rd-cycle-ns = <0x14>;" (0x0 to 0x1F)
Total read cycle time
GPMC_CONFIG4 0x0F010F01:
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
| 0| 0| 0| 0| 1| 1| 1| 1| 0| 0| 0| 0| 0| 0| 0| 1|
|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 0| 0| 0| 0| 1| 1| 1| 1| 0| 0| 0| 0| 0| 0| 0| 1|
28:24 WEOFFTIME: 0xF: 16 GPMC_FCLK cycle
dT: "gpmc,we-off-ns = <0xF>;" (0x0 to 0x1F)
nWE de-assertion time from start cycle time
23 WEEXTRADELAY: 0x0: nWE Timing control signal is not delayed
dT: "gpmc,we-extra-delay = <0>;" (bool)
nWE Add Extra Half GPMC_FCLK cycle
19:16 WEONTIME: 0x1: 1 GPMC_FCLK cycle
dT: "gpmc,we-on-ns = <0x1>;" (0x0 to 0x1F)
nWE assertion time from start cycle time
12:8 OEOFFTIME: 0xF: 15 GPMC_FCLK cycles
dT: "gpmc,oe-off-ns = <0xF>;" (0x0 to 0x1F)
nOE de-assertion time from start cycle time
7 OEEXTRADELAY: 0x0: nOE Timing control signal is not delayed
dT: "gpmc,oe-extra-delay = <0>;" (bool)
nOE Add Extra Half GPMC_FCLK cycle
3:0 OEONTIME: 0x1: 1 GPMC_FCLK cycle
dT: "gpmc,oe-on-ns = <0x1>;" (0x0 to 0x1F)
nOE assertion time from start cycle time
GPMC_CONFIG3 0x00141400:
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 1| 0| 1| 0| 0|
|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 0| 0| 0| 1| 0| 1| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
20:16 ADVWROFFTIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,adv-wr-off-ns = <0x14>;" (0x0 to 0x1F)
nADV de-assertion time from start cycle time for write accesses
12:8 ADVRDOFFTIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,adv-rd-off-ns = <0x14>;" (0x0 to 0x1F)
nADV de-assertion time from start cycle time for read accesses
7 ADVEXTRADELAY: 0x0: nADV Timing control signal is not delayed
dT: "gpmc,adv-extra-delay = <0>;" (bool)
nADV Add Extra Half GPMC_FCLK cycle
3:0 ADVONTIME: 0x0: 0 GPMC_FCLK cycle
dT: "gpmc,adv-on-ns = <0>;" (0x0 to 0xF)
nADV assertion time from start cycle time
GPMC_CONFIG2 0x00141400:
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 1| 0| 1| 0| 0|
|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 0| 0| 0| 1| 0| 1| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
20:16 CSWROFFTIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,cs-wr-off-ns = <0x14>;" (0x0 to 0x1F)
CS i de-assertion time from start cycle time for write accesses
12:8 CSRDOFFTIME: 0x14: 20 GPMC_FCLK cycles
dT: "gpmc,cs-rd-off-ns = <0x14>;" (0x0 to 0x1F)
CS i de-assertion time from start cycle time for read accesses
7 CSEXTRADELAY: 0x0: CS i Timing control signal is not delayed
dT: "gpmc,cs-extra-delay = <0>;" (bool)
CS i Add Extra Half GPMC_FCLK cycle
3:0 CSONTIME: 0x0: 0 GPMC_FCLK cycle
dT: "gpmc,cs-on-ns = <0>;" (0x0 to 0xF)
CS i assertion time from start cycle time
GPMC_CONFIG1 0x00001800:
|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
| 1| 1| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
31 WRAPBURST: 0x0: Synchronous wrapping burst not supported
dT: "gpmc,burst-wrap = <0>;" (bool)
Enables the wrapping burst capability. Must be set if the
attached device is configured in wrapping burst
30 READMULTIPLE: 0x0: Single access
dT: "gpmc,burst-read = <0>;" (bool)
Selects the read single or multiple access
29 READTYPE: 0x0: Read Asynchronous
dT: "gpmc,sync-read = <0>;" (bool)
Selects the read mode operation
28 WRITEMULTIPLE: 0x0: Single access
dT: "gpmc,burst-write = <0>;" (bool)
Selects the write single or multiple access
27 WRITETYPE: 0x0: Write Asynchronous
dT: "gpmc,sync-write = <0>;" (bool)
Selects the write mode operation
26:25 CLKACTIVATIONTIME: 0x0: First rising edge of GPMC_CLK at start
access time
dT: not supported
Output GPMC_CLK activation time
24:23 ATTACHEDDEVICEPAGE LENGTH: 0x0: 4 Words
dT: "gpmc,burst-length= <4>;" (4, 8 or 16)
Specifies the attached device page (burst) length
22 WAITREADMONITORING: 0x0: Wait pin is not monitored for read accesses
dT: "gpmc,wait-on-read = <0>;" (bool)
Selects the Wait monitoring configuration for Read accesses
(Reset value is BOOTWAITEN input pin sampled at IC reset)
21 WAITWRITEMONITORING: 0x0: Wait pin is not monitored for write accesses
dT: "gpmc,wait-on-write = <0>;" (bool)
Selects the Wait monitoring configuration for Write accesses
19:18 WAITMONITORINGTIME: 0x0: Wait pin is monitored with valid data
dT: not supported
Selects input pin Wait monitoring time
17:16 WAITPINSELECT: 0x0: Wait input pin is WAIT0
dT: "gpmc,wait-pin = <0>;" (0 to 3)
Selects the input WAIT pin for this chip-select (Reset value
is BOOTWAITSELECT input pin sampled at IC reset for
CS0 and 0 for CS1-7)
13:12 DEVICESIZE: 0x1: 16 bit
dT: "gpmc,device-width = <2>;" (1 or 2)
Selects the device size attached (Reset value is
BOOTDEVICESIZE input pin sampled at IC reset for CS0
and 0x1 for CS1 to CS7)
11:10 DEVICETYPE: 0x2: NAND Flash like devices, stream mode
dT: "gpmc,device-nand = <1>;" (bool)
Selects the attached device type
9 MUXADDDATA: 0x0: Non Multiplexed attached device
dT: "gpmc,mux-add-data = <0>;" (0 or 1 or 2)
Enables the Address and data multiplexed protocol (Reset
value is CS0MUXDEVICE input pin sampled at IC reset for
CS0 and 0 for CS1-7)
4 TIMEPARAGRANULARITY: 0x0: x1 latencies
dT: "gpmc,time-para-granularity = <0>;" (bool)
Signals timing latencies scalar factor (Rd/WrCycleTime,
Rd/WrAccessTime, PageBurstAccessTime, CSOnTime,
CSRd/WrOffTime, ADVOnTime, ADVRd/WrOffTime,
OEOnTime, OEOffTime, WEOnTime, WEOffTime,
Cycle2CycleDelay, BusTurnAround, TimeOutStartValue)
1:0 GPMCFCLKDIVIDER: 0x0: GPMC_CLK frequency = GPMC_FCLK frequency
dT: not supported
Divides the GPMC_FCLK clock
next prev parent reply other threads:[~2013-04-18 22:48 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 [this message]
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
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=1366325282.4232.6.camel@lovely \
--to=chf.fritz@googlemail.com \
--cc=daniel@zonque.org \
--cc=javier.martinez@collabora.co.uk \
--cc=jon-hunter@ti.com \
--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).