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: 21+ 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-04-19 16:29 ` Christoph Fritz
2013-05-16 15:49 ` Tony Lindgren
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.