On Mo, 2017-09-11 at 20:32 -0700, Tony Lindgren wrote:
Well, sadly, I couldn't test it yet (as I couldn't boot a single PCB without battery, see other mailing list post), but I took the time to browse through the documents to find some clues about why that should be working...
Here are some things I found. I'm not sure how much you all know about that already (and I'm definitely not that knowledgable), but maybe there's something in there that gives you a clue what it could be :)
So, DLL is the internal clock of the memory and it MUST be enabled on normal operation (that's what the JEDEC document says).
What's different between DLL on and DLL off?
1. The maximum clock frequency for DLL-off Mode is specified by the parameter tCKDLL_OFF. There is no minimum frequency limit besides the need to satisfy the refresh interval, tREFI. (JESD79-3F, chapter 4.5)
--> What frequency is tCKDLL_OFF in our setup? And what is it when it's switched on?
2. Due to latency counter and timing restrictions, only one value of CAS Latency (CL) in MR0 and CAS Write Latency (CWL) in MR2 are supported. The DLL-off mode is only required to support setting of both CL=6 and CWL=6. (JESD79-3F, chapter 4.5)
--> So CL and CWL are the same and different to the setup in DLL on?
3. DLL-off mode will affect the Read data Clock to Data Strobe relationship (tDQSCK), but not the Data Strobe to Data relationship (tDQSQ, tQH). Special attention is needed to line up Read data to controller time domain. Comparing with DLL-on mode, where tDQSCK starts from the rising clock edge (AL+CL) cycles after the Read command, the DLL-off mode tDQSCK starts (AL+CL - 1) cycles after the read command. Another difference is that tDQSCK may not be small compared to tCK (it might even be larger than tCK) and the difference between tDQSCKmin and tDQSCKmax is significantly larger than in DLL-on mode. tDQSCK(DLL_off) values are vendor specific.
--> So tDQSCK is different when DLL if off.
4. With DLL off, the internal frequency is disabled. What is the frequency we run the memory with when DLL is off?
5. DLL off also disables ODT. Could it be we have issues with ODT? Improper setup? It's also possible to disable ODT - does that make the memory work when DLL is on?
6. One thing that still puzzles me: According to the information I found, the timings need to be setup SPECIFICALLY for the memory chips you use. Even the JEDEC standard mentions sometimes that the specific timings need to be taken from the datasheet of the manufacturer.
So if we HAVEN'T specifically set the timings according to our datasheet but used different ones, it might or might now work. The datasheet of the memory chip has tons of information about timing setup, and I even sent a document out on this mailing list about a week ago which automatically spits out the EMIF Hex Values once all values have been correctly entered. Are we really using the timings specified in our memory chip datasheet or are we using some random ones?
Because: "The functionality described and the timing specifications included in this data sheet are for the DLL Enabled mode of operation."
So the timings apparently are different with DLL is disabled - maybe that's the reason it works for us?
One interesting thing I noticed: It seems DLL can be switched on and off anytime. What happens if we switch DLL on again after the system has fully booted up?
And about the hardware leveling: I still find it a bit weird that it shouldn't work until you let the system cool down. Especially if cooling down always takes around 10 seconds, regardless whether the system has run for 5 seconds or 5 minutes (that's the case right now, if I understood you correctly?)
Are we sure there's NOTHING that simply powers a part of the Pyra for 10 seconds after it has been switched off? According to the OMAP5 document, hardware levelling must be triggered by the software, so what happens if we never trigger hardware levelling?
- Michael Mrozek EvilDragon@openpandora.org [170910 11:58]:
On Do, 2017-09-07 at 18:41 +0200, H. Nikolaus Schaller wrote:
Hi,
I'm now on vacation until Thursday and took various 4GB Boards and Mainboards with me.
If you want to me to do any tests and dump some output of the results, please send me some binary files for that.
I can easily mix all PCBs and make a table with various results.
OK here's some vacation fun for you:
Regards,
Tony