On 7/2/07, <b class="gmail_sendername">Andy Fleming</b> &lt;<a href="mailto:afleming@gmail.com">afleming@gmail.com</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On 6/26/07, robert lazarski &lt;<a href="mailto:robertlazarski@gmail.com">robertlazarski@gmail.com</a>&gt; wrote:<br>&gt; Hi all,<br>&gt;<br>&gt; What&#39;s confusing me is there is no constant BOOKE_PAGESZ_128M. For example,
<br>&gt; the cds board has 128MB of SDRAM (my board has no SDRAM) . So the way the<br>&gt; cds code allocates the 128MB<br>&gt; for sdram is:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* TLB 6:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 64M&nbsp;&nbsp;&nbsp;&nbsp; Cacheable, non-guarded
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* 0xf000_0000&nbsp;&nbsp;64M&nbsp;&nbsp;&nbsp;&nbsp; LBC SDRAM<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS0(1, 6, 0)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS2(E500_TLB_EPN(CFG_LBC_SDRAM_BASE),
<br>&gt; 0,0,0,0,0,0,0,0)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS3(E500_TLB_RPN(CFG_LBC_SDRAM_BASE),<br>&gt; 0,0,0,0,0,1,0,1,0,1)<br>&gt;<br>&gt;<br>&gt; With LAW comments:<br>&gt;<br>&gt; * 0xf000_0000&nbsp;&nbsp;&nbsp;&nbsp; 0xf7ff_ffff&nbsp;&nbsp;&nbsp;&nbsp; SDRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128M
<br>&gt;<br><br><br>Ugh, that&#39;s awful.&nbsp;&nbsp;It&#39;s a bug, and needs to be fixed.<br><br><br>&gt; I&#39;m thinking this is because the TLB size can be allocated as 64MB for the<br>&gt; 128MB of flash, and then the LAW code needs to allocate the full 128MB for
<br>&gt; flash. So in preparation for my boards arrival, I&#39;m thinking I can do this<br>&gt; for the flash:<br><br>The TLB size is wrong.&nbsp;&nbsp;It can&#39;t be 128M, because Book E only allows<br>specifying powers of 4 for the size.&nbsp;&nbsp;So to do 128M, you need to use
<br>two TLB entries to specify 128M.<br><br>The LAWs *also* need to have full 128M, but they can do any power of two.<br><br>Andy<br></blockquote></div><br><br>
Thanks Andy, things are getting clearer. I found another example that seems to have a bad comment, from
the board/tqm85xx/init.S out of u-boot 1.2.0 . TLB 0, 1 does this which
seems to be a good example: <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * TLB 0, 1:&nbsp;&nbsp;&nbsp; 128M&nbsp;&nbsp;&nbsp; Non-cacheable, guarded<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 0xf8000000&nbsp;&nbsp; 128M&nbsp;&nbsp;&nbsp; FLASH<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Out of reset this entry is only 4K.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS0(1, 1, 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS2(E500_TLB_EPN(CFG_FLASH_BASE), 0,0,0,0,1,0,1,0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE), 0,0,0,0,0,1,0,1,0,1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS0(1, 0, 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS2(E500_TLB_EPN(CFG_FLASH_BASE+0x4000000), 0,0,0,0,1,0,1,0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE+0x4000000), 0,0,0,0,0,1,0,1,0,1)<br>
<br>
But then the LAW comments say this, is this wrong? <br>
<br>
&nbsp;* 0xfe00_0000&nbsp;&nbsp;&nbsp;&nbsp; 0xffff_ffff&nbsp;&nbsp;&nbsp;&nbsp; FLASH (boot bank)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32M<br>
<br>
The actual LAW macros looks right though, doesn&#39;t it? <br>
<br>
#define LAWBAR2 ((CFG_LBC_FLASH_BASE&gt;&gt;12) &amp; 0xfffff)<br>
#define LAWAR2&nbsp; (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE &amp; LAWAR_SIZE_128M))<br>
<br>
Robert <br>
<br>