<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only]<br>
</p>
<br>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Most of the register programming in evergreen_gpu_init is required.  That code handles things like harvesting (e.g., disabling bad hardware resources) and setting sane asic specific settings in some registers.  If you don't do it, work may get scheduled to
 bad or incorrectly configured hardware blocks which will lead to hangs or corrupted results.  You can probably skip some of them, but I don't remember what is minimally required off hand.  It's generally a good idea to re-initialize those registers anyway
 in case someone has previously messed with them (e.g., manual register munging or GPU passed through to a VM etc.).<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Posting the bios is enough to get you a working memory controller and enough asic setup to light up displays (basically what you need for pre-OS console).  As Christian mentioned, loading the ucodes will get the associated engines working so that you can start
 feeding commands to the GPU, but without proper configuration of the various hardware blocks on the GPU, you may not have success in feeding data to the GPU.<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Alex</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Amol <suratiamol@gmail.com><br>
<b>Sent:</b> Saturday, February 5, 2022 4:47 AM<br>
<b>To:</b> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Subject:</b> Minimal GPU setup</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Hello,<br>
<br>
I am learning to program Radeon HD 7350 by reading the radeon<br>
driver source in Linux, and the guides/manuals from AMD.<br>
<br>
I understand the general flow of initialization the driver performs. I<br>
have also been able to understand and re-implement the ATOM<br>
BIOS virtual machine.<br>
<br>
I am trying to program the device up from scratch (i.e. bare-metal).<br>
Do I need to perform all those steps that the driver does? Reading<br>
the evergreen_gpu_init function is demotivating; it initializes many<br>
fields and registers which I suspect may not be required for a minimal<br>
setup.<br>
<br>
Is posting the BIOS and loading the microcode enough to get me started<br>
with running basic tasks (DMA transfers, simple packet processing, etc.)?<br>
<br>
Thanks,<br>
Amol<br>
</div>
</span></font></div>
</div>
</body>
</html>