[haiku-commits] r42622 - in haiku/trunk: headers/private/graphics/radeon_hd src/add-ons/accelerants/radeon_hd src/add-ons/kernel/drivers/graphics/radeon_hd

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 11 Aug 2011 07:17:35 +0200 (CEST)

Author: kallisti5
Date: 2011-08-11 07:17:34 +0200 (Thu, 11 Aug 2011)
New Revision: 42622
Changeset: https://dev.haiku-os.org/changeset/42622

Modified:
   haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
   haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.h
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
Log:
* add card instance to accelerant shared info
* when TRACE_ATOM is enabled in bios.c, we dump
  each accelerant instance of the AtomBIOS rom
  to disk in /boot/common/cache/tmp/ (next to usb
  hid descriptors in the same file name format)
* these images can be parsed with the AtomDis application


Modified: haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
===================================================================
--- haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h  2011-08-10 
23:22:55 UTC (rev 42621)
+++ haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h  2011-08-11 
05:17:34 UTC (rev 42622)
@@ -75,6 +75,7 @@
 
 
 struct radeon_shared_info {
+       uint32                  device_index;           // accelerant index
        uint32                  device_id;                      // device pciid
        area_id                 mode_list_area;         // area containing 
display mode list
        uint32                  mode_count;

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-08-10 
23:22:55 UTC (rev 42621)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-08-11 
05:17:34 UTC (rev 42622)
@@ -69,6 +69,10 @@
                return B_ERROR;
        }
 
+       #ifdef TRACE_ATOM
+       radeon_dump_bios();
+       #endif
+
        struct card_info *atom_card_info
                = (card_info*)malloc(sizeof(card_info));
 
@@ -119,3 +123,33 @@
 
        return B_OK;
 }
+
+
+status_t
+radeon_dump_bios()
+{
+       // For debugging use, dump card AtomBIOS
+       radeon_shared_info &info = *gInfo->shared_info;
+
+       TRACE("%s: Dumping AtomBIOS as ATOM_DEBUG is set...\n",
+               __func__);
+
+       FILE* fp;
+       char filename[255];
+       sprintf(filename, "/boot/common/cache/tmp/radeon_hd_bios_1002_%" 
B_PRIx32
+               "_%" B_PRIu32 ".bin", info.device_id, info.device_index);
+
+       fp = fopen(filename, "wb");
+       if (fp == NULL) {
+               TRACE("%s: Cannot create AtomBIOS blob at %s\n", __func__, 
filename);
+               return B_ERROR;
+       }
+
+       fwrite(gInfo->rom, info.rom_size, 1, fp);
+
+       fclose(fp);
+
+       TRACE("%s: AtomBIOS dumped to %s\n", __func__, filename);
+
+       return B_OK;
+}

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.h        2011-08-10 
23:22:55 UTC (rev 42621)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.h        2011-08-11 
05:17:34 UTC (rev 42622)
@@ -15,6 +15,7 @@
 
 
 status_t radeon_init_bios(uint8* bios);
+status_t radeon_dump_bios();
 
 
 #endif /* RADEON_HD_BIOS_H */

Modified: 
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp     
2011-08-10 23:22:55 UTC (rev 42621)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp     
2011-08-11 05:17:34 UTC (rev 42622)
@@ -375,6 +375,7 @@
        frambufferMapper.Detach();
 
        // Pass common information to accelerant
+       info.shared_info->device_index = info.id;
        info.shared_info->device_id = info.device_id;
        info.shared_info->device_chipset = info.device_chipset;
        info.shared_info->registers_area = info.registers_area;


Other related posts:

  • » [haiku-commits] r42622 - in haiku/trunk: headers/private/graphics/radeon_hd src/add-ons/accelerants/radeon_hd src/add-ons/kernel/drivers/graphics/radeon_hd - kallisti5