<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi all,</p>
    <p>I'm struggling to solve a problem which in theory should be quite
      straight forward. This email is a bit of a brain dump so apologies
      for being all over the place.<br>
    </p>
    <p>I'm working on an embedded device where u-boot displays a logo
      which I want the kernel to preserve. However I find the display
      gets blanked as soon as the kernel starts executing.</p>
    <p>As I understand it, the first step is to get the kernel to
      reserve the frame-buffer memory (and hand it to the FB driver
      later on). So I added the following device tree entry:</p>
    <p><tt>        reserved-memory {</tt><tt><br>
      </tt><tt>                #address-cells = &lt;1&gt;;</tt><tt><br>
      </tt><tt>                #size-cells = &lt;1&gt;;</tt><tt><br>
      </tt><tt>                ranges;</tt><tt><br>
      </tt><tt><br>
      </tt><tt>                display_reserved: fb@0 {</tt><tt><br>
      </tt><tt>                        no-map;</tt><tt><br>
      </tt><tt>                        reg = &lt;0x3ffa5000
        0x0005b000&gt;;</tt><tt><br>
      </tt><tt>                };</tt><tt><br>
      </tt><tt>        };</tt><tt><br>
      </tt><br>
    </p>
    <p>The memory area reflects the FB memory allocated by u-boot.</p>
    <p>This is an atmel SAMA5D2 based board with 512M RAM in the
      0x20000000-0x40000000 range.<br>
    </p>
    However, I find the display is blanked even before the FB driver
    starts.
    <p>I have confirmed that the device tree entry is processed by
      placing printks in drivers/of/of_reserved_mem.c
(<a class="moz-txt-link-freetext" href="http://elixir.free-electrons.com/linux/latest/source/drivers/of/of_reserved_mem.c#L85">http://elixir.free-electrons.com/linux/latest/source/drivers/of/of_reserved_mem.c#L85</a>).</p>
    <p>I also added the following line at the same spot to see if that
      area is at least accessible:</p>
    <p>*(unsigned int*)<tt>0x3ffa5000 </tt> = 0xffffffff</p>
    <p>And I observed the following result:</p>
    <ol>
      <li>The kernel hangs</li>
      <li>The display is not yet blanked at this point</li>
    </ol>
    <p>Writing to the same location from within the u-boot shell places
      a white pixel on the display.</p>
    <p>Could anyone suggest what areas I need to look at to solve this
      problem? Any tips and suggestions will be greatly appreciated.</p>
    <p>Thank you</p>
    <p>Dushara<br>
    </p>
  </body>
</html>