From: Eric Nelson <eric.nelson@boundarydevices.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] Add Boundary Devices Nitrogen6X boards
Date: Wed, 20 Feb 2013 07:08:04 -0700 [thread overview]
Message-ID: <5124D8C4.6080505@boundarydevices.com> (raw)
In-Reply-To: <1828498879.12659.1361366921613.JavaMail.root@advansee.com>
Hi Beno?t,
On 02/20/2013 06:28 AM, Beno?t Th?baudeau wrote:
> Hi Eric,
>
> On Wednesday, February 20, 2013 1:05:04 PM, Beno?t Th?baudeau wrote:
>> Hi Eric,
>>
>> On Wednesday, February 20, 2013 12:01:15 AM, Eric Nelson wrote:
>>> Hi Beno?t,
>>>
>>> On 02/19/2013 03:31 PM, Beno?t Th?baudeau wrote:
>>>> On Tuesday, February 19, 2013 10:53:48 PM, Eric Nelson wrote:
>>>>> On 02/19/2013 01:52 PM, Beno?t Th?baudeau wrote:
>>>>>> Hi Eric,
>>>>>>
>>>>>> On Tuesday, February 19, 2013 9:20:48 PM, Eric Nelson wrote:
>>>>>> [--snip--]
>>>>>>> diff --git a/board/boundary/nitrogen6x/1066mhz_4x128mx16.cfg
>>>>>>> b/board/boundary/nitrogen6x/1066mhz_4x128mx16.cfg
>>>>>>> new file mode 100644
>>>>>>> index 0000000..45b8879
>>>>>>> --- /dev/null
>>>>>>> +++ b/board/boundary/nitrogen6x/1066mhz_4x128mx16.cfg
>>>>>> [--snip--]
>>>>>>> +DATA 4, MX6_MMDC_P0_MDPDC, 0x00020036
>>>>>>> +DATA 4, MX6_MMDC_P0_MDCFG0, 0x555B7974
>>>>>> ^A?
>>>>>>> +DATA 4, MX6_MMDC_P0_MDCFG1, 0xDB538F64
>>>>>>> +DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB
>>>>>>> +DATA 4, MX6_MMDC_P0_MDRWD, 0x000026D2
>>>>>>> +DATA 4, MX6_MMDC_P0_MDOR, 0x005B1023
>>>>>> ^A?
>>>>>>> +DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040
>>>>>>> +DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576
>>>>>> [--snip--]
>>>>>>
>>>>>> tXS = tXPR = 170 ns -> 91 nCK -> 91 - 1 -> 0x5A.
>>>>>>
>>>>>
>>>>> Thanks Beno?t,
>>>>>
>>>>> I was going to bring this up in a separate thread.
>>>>>
>>>>> While working through the details of our 800MHz
>>>>> variants (Solo, Dual-Lite), and x256mx16 variants,
>>>>> I re-worked these numbers and it seems that we
>>>>> have an off-by-one issue with those fields.
>>>>
>>>> Probably because it has been missed that the bit-field
>>> > value is the number of clock cycles minus 1.
>>>>
>>> Right. All of these fields are plus 1.
>>>
>>> MDCFG0.tRFC
>>> MDCFG0.tXS
>>> MDOR.tXPR
>>>
>>> Since they're all in the same units, the requirements
>>> are:
>>> MDCFG0.tXS >= MDCFG0.tRFC + 10nS
>>> and
>>> MDOR.tXPR >= MDCFG0.tRFC + 10nS
>>>
>>> Since we operate at ~528MHz, each clock is less than
>>> 2 nS, and we need 6 more clocks for each.
>>>
>>>>> According to the JEDEC spec and data sheets,
>>>>> both tXS and tXPR should be 10nS greater than tRFC.
>>>>
>>>> Indeed, or more precisely, max(5 nCK, tRFC + 10 ns).
>>>>
>>>
>>> Yep. I shortened because nothing approaches 5nCK.
>>>
>>> And note that this is the minimum spec, not the
>>> target.
>>>
>>>>> Since the nominal clock for i.MX6 is 528MHz (1.89nS),
>>>>
>>>> I used 532 MHz because this is a more standard value, and I found several
>>>> close
>>>> different values in the documentation, so in the doubt, I chose the worst
>>>> case.
>>>> With 528 MHz, the bit-field value would be 0x59.
>>>>
>>>
>>> Either way, we need 6 clocks to get > 10nS.
>>>
>>>>> this should be a delta of 6 clocks, not 5.
>>>>
>>>> Delta with what?
>>>>
>>>
>>> Sorry. I meant the Delta between MDCFG0.tRFC and the
>>> other two fields.
>>
>> OK, now I see what you mean and how you got these values. But I disagree.
>>
>> tXS(min) and tXPR(min) are defined by the JEDEC DDR3 specification as
>> max(5 nCK, tRFC(min) + 10 ns). tRFC(min) is used here, not tRFC.
>>
>> Moreover, tXS and tXPR are timings depending on internal features of the RAM,
>> not on external operations from the host processor. It's not as if they were
>> the
>> result of the combination of two external operations. E.g., see tXS on
>> figures
>> 14, 15 and 62 in JESD79-3F.
>
> I don't know if that's clear enough, but here I mean that tXS and tXPR are
> intrinsic RAM timings, and that there is no way tRFC(MMDC) can interfere with
> either tXS/XPR(DDR3) or tXS/XPR(MMDC), so there is no reason to take tRFC(MMDC)
> into account to determine tXS or tXPR. Only tRFC(min) should be used here.
>
You're right of course. And this description was very clear. We don't
communicate __our__ tRFC to the device, so there's no reason our tRFC
couldn't be higher than tXS/XPR.
>> Hence, tXS and tXPR should not be considered as tRFC(MMDC) + 10 ns, but
>> really
>> as tRFC(min) + 10 ns, i.e. a single 170 ns timing (for 2-Gib density) to be
>> converted into a number of clock cycles.
>>
>> I don't feel like it's possible to interpret the specification in a different
>> way. But perhaps I'm wrong.
I also have no evidence of failures because of these settings and will
drop the +1 in a V2 patch set.
Thanks again for your detailed review.
Regards,
Eric
next prev parent reply other threads:[~2013-02-20 14:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-19 20:20 [U-Boot] [PATCH] Add Boundary Devices Nitrogen6X boards Eric Nelson
2013-02-19 20:52 ` Benoît Thébaudeau
2013-02-19 21:53 ` Eric Nelson
2013-02-19 22:31 ` Benoît Thébaudeau
2013-02-19 23:01 ` Eric Nelson
2013-02-20 12:05 ` Benoît Thébaudeau
2013-02-20 13:28 ` Benoît Thébaudeau
2013-02-20 14:08 ` Eric Nelson [this message]
2013-02-20 14:20 ` Wolfgang Denk
2013-02-20 16:05 ` Eric Nelson
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=5124D8C4.6080505@boundarydevices.com \
--to=eric.nelson@boundarydevices.com \
--cc=u-boot@lists.denx.de \
/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