[haiku-commits] r42591 - in haiku/trunk/src/add-ons/accelerants/radeon_hd: . atombios

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 7 Aug 2011 07:19:43 +0200 (CEST)

Author: kallisti5
Date: 2011-08-07 07:19:42 +0200 (Sun, 07 Aug 2011)
New Revision: 42591
Changeset: https://dev.haiku-os.org/changeset/42591

Modified:
   haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.h
   haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
Log:
* add allocation of atombios fb scratch
* add free of allocated fb scratch


Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.cpp     
2011-08-07 03:48:58 UTC (rev 42590)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.cpp     
2011-08-07 05:19:42 UTC (rev 42591)
@@ -1272,6 +1272,7 @@
 {
        if (ctx != NULL) {
                free(ctx->iio);
+               free(ctx->scratch);
                delete_sem(ctx->exec_sem);
        }
 
@@ -1319,3 +1320,32 @@
        return B_OK;
 }
 
+
+status_t
+atom_allocate_fb_scratch(atom_context *ctx)
+{
+       int index = GetIndexIntoMasterTable(DATA, VRAM_UsageByFirmware);
+       uint16 data_offset;
+       int usage_bytes = 0;
+       _ATOM_VRAM_USAGE_BY_FIRMWARE *firmware;
+
+       if (atom_parse_data_header(ctx, index, NULL, NULL, NULL, &data_offset)) 
{
+               firmware = (_ATOM_VRAM_USAGE_BY_FIRMWARE *)
+                               ((uint16*)ctx->bios + data_offset);
+
+               TRACE("Atom firmware requested 0x%" B_PRIX32 " %" B_PRIu16 
"kb\n",
+                       
firmware->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware,
+                       
firmware->asFirmwareVramReserveInfo[0].usFirmwareUseInKb);
+
+               usage_bytes
+                       = 
firmware->asFirmwareVramReserveInfo[0].usFirmwareUseInKb * 1024;
+       }
+       if (usage_bytes == 0)
+               usage_bytes = 20 * 1024;
+       /* allocate some scratch memory */
+       ctx->scratch = (uint32*)malloc(usage_bytes);
+       if (!ctx->scratch)
+               return B_NO_MEMORY;
+
+       return B_OK;
+}

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.h       
2011-08-07 03:48:58 UTC (rev 42590)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/atombios/atom.h       
2011-08-07 05:19:42 UTC (rev 42591)
@@ -154,5 +154,7 @@
        uint8 * crev);
 status_t atom_asic_init(atom_context *);
 void atom_destroy(atom_context *);
+status_t atom_allocate_fb_scratch(atom_context *ctx);
 
+
 #endif

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-08-07 
03:48:58 UTC (rev 42590)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-08-07 
05:19:42 UTC (rev 42591)
@@ -111,6 +111,7 @@
                // Post card
 
        radeon_bios_init_scratch();
+       atom_allocate_fb_scratch(gAtomContext);
 
        return B_OK;
 }


Other related posts:

  • » [haiku-commits] r42591 - in haiku/trunk/src/add-ons/accelerants/radeon_hd: . atombios - kallisti5