All of lore.kernel.org
 help / color / mirror / Atom feed
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






  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.