[haiku-commits] r42566 - haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 4 Aug 2011 06:57:43 +0200 (CEST)

Author: kallisti5
Date: 2011-08-04 06:57:42 +0200 (Thu, 04 Aug 2011)
New Revision: 42566
Changeset: https://dev.haiku-os.org/changeset/42566

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
Log:
* clean up style
* remove some un-needed log messages
* memset area from create_area just incase
* add enabled bios read in addition to disabled one


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-04 03:56:54 UTC (rev 42565)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp     
2011-08-04 04:57:42 UTC (rev 42566)
@@ -64,13 +64,7 @@
 
        uint32 flags = get_pci_config(info.pci, PCI_rom_base, 4);
        if (flags & PCI_rom_enable)
-               dprintf(DEVICE_NAME ": PCI ROM decode enabled\n");
-       if (flags & PCI_rom_shadow)
-               dprintf(DEVICE_NAME ": PCI ROM shadowed\n");
-       if (flags & PCI_rom_copy)
-               dprintf(DEVICE_NAME ": PCI ROM allocated copy\n");
-       if (flags & PCI_rom_bios)
-               dprintf(DEVICE_NAME ": PCI ROM BIOS copy\n");
+               TRACE("%s: PCI ROM decode enabled successfully\n", __func__);
 
        uint32 rom_base = info.shared_info->rom_phys;
        uint32 rom_size = info.shared_info->rom_size;
@@ -94,16 +88,17 @@
                } else {
                        if (bios[0] != 0x55 || bios[1] != 0xAA) {
                                uint16 id = bios[0] + (bios[1] << 8);
-                               dprintf(DEVICE_NAME ": not a PCI rom (%X)!\n", 
id);
+                               TRACE("%s: this isn't a PCI rom (%X)\n", 
__func__, id);
                                result = B_ERROR;
                        } else {
-                               TRACE("%s: found a valid VGA bios!\n", 
__func__);
                                memcpy(info.atom_buffer, (void *)bios, 
rom_size);
                                if (isAtomBIOS(info.atom_buffer)) {
-                                       dprintf(DEVICE_NAME ": AtomBIOS found 
and mapped!\n");
+                                       dprintf(DEVICE_NAME ": %s: AtomBIOS 
found and mapped!\n",
+                                               __func__);
                                        result = B_OK;
                                } else {
-                                       dprintf(DEVICE_NAME ": AtomBIOS not 
mapped!\n");
+                                       dprintf(DEVICE_NAME ": %s: AtomBIOS not 
mapped!\n",
+                                               __func__);
                                        result = B_ERROR;
                                }
                        }
@@ -209,13 +204,14 @@
                (void **)&info.shared_info, B_ANY_KERNEL_ADDRESS,
                ROUND_TO_PAGE_SIZE(sizeof(radeon_shared_info)), B_FULL_LOCK, 0);
        if (info.shared_area < B_OK) {
+               dprintf(DEVICE_NAME ": card (%ld): couldn't map shared area!\n",
+                       info.id);
                return info.shared_area;
        }
 
        memset((void *)info.shared_info, 0, sizeof(radeon_shared_info));
 
        // *** Map Memory mapped IO
-       // R6xx_R7xx_3D.pdf, 5.3.3.1 SET_CONFIG_REG
        AreaKeeper mmioMapper;
        info.registers_area = mmioMapper.Map("radeon hd mmio",
                (void *)info.pci->u.h0.base_registers[RHD_MMIO_BAR],
@@ -223,7 +219,7 @@
                B_ANY_KERNEL_ADDRESS, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA,
                (void **)&info.registers);
        if (mmioMapper.InitCheck() < B_OK) {
-               dprintf(DEVICE_NAME ": card (%ld): could not map memory I/O!\n",
+               dprintf(DEVICE_NAME ": card (%ld): couldn't map memory I/O!\n",
                        info.id);
                return info.registers_area;
        }
@@ -236,12 +232,12 @@
                B_ANY_KERNEL_ADDRESS, B_READ_AREA | B_WRITE_AREA,
                (void **)&info.shared_info->frame_buffer);
        if (frambufferMapper.InitCheck() < B_OK) {
-               dprintf(DEVICE_NAME ": card(%ld): could not map framebuffer!\n",
+               dprintf(DEVICE_NAME ": card(%ld): couldn't map framebuffer!\n",
                        info.id);
                return info.framebuffer_area;
        }
 
-       // Turn on write combining for the area
+       // Turn on write combining for the frame buffer area
        vm_set_area_memory_type(info.framebuffer_area,
                info.pci->u.h0.base_registers[RHD_FB_BAR], B_MTR_WC);
 
@@ -249,6 +245,18 @@
        mmioMapper.Detach();
        frambufferMapper.Detach();
 
+       // Pass common information to accelerant
+       info.shared_info->device_id = info.device_id;
+       info.shared_info->device_chipset = info.device_chipset;
+       info.shared_info->registers_area = info.registers_area;
+       strcpy(info.shared_info->device_identifier, info.device_identifier);
+
+       info.shared_info->frame_buffer_area = info.framebuffer_area;
+       info.shared_info->frame_buffer_phys
+               = info.pci->u.h0.base_registers[RHD_FB_BAR];
+       info.shared_info->frame_buffer_int
+               = read32(info.registers + R6XX_CONFIG_FB_BASE);
+
        // *** AtomBIOS mapping
        uint32 rom_base = info.pci->u.h0.rom_base;
        uint32 rom_size = info.pci->u.h0.rom_size;
@@ -272,44 +280,38 @@
        status_t biosStatus = B_ERROR;
        if (info.rom_area < 0) {
                dprintf("%s: failed to create kernel AtomBIOS area!\n", 
__func__);
+               dprintf(DEVICE_NAME ": card(%ld): couldn't map kernel AtomBIOS 
area!\n",
+                       info.id);
                biosStatus = B_ERROR;
        } else {
-               //memset(&info.atom_buffer, 0, info.shared_info->rom_size);
-               biosStatus = radeon_hd_getbios_r600(info);
+               memset((void*)info.atom_buffer, 0, info.shared_info->rom_size);
+               // First we try an active bios read
+               biosStatus = radeon_hd_getbios(info);
+               if (biosStatus != B_OK) {
+                       // If the active read fails, we do a disabled read
+                       if (info.device_chipset > RADEON_R600)
+                               biosStatus = radeon_hd_getbios_r600(info);
+               }
        }
-
-       // Pass common information to accelerant
-       info.shared_info->device_id = info.device_id;
-       info.shared_info->device_chipset = info.device_chipset;
-       info.shared_info->registers_area = info.registers_area;
-       info.shared_info->frame_buffer_area = info.framebuffer_area;
-       info.shared_info->frame_buffer_phys
-               = info.pci->u.h0.base_registers[RHD_FB_BAR];
-       info.shared_info->frame_buffer_int
-               = read32(info.registers + R6XX_CONFIG_FB_BASE);
-
-       // populate VGA rom info into shared_info
        info.shared_info->has_rom = (biosStatus == B_OK) ? true : false;
        info.shared_info->rom_area = info.rom_area;
 
-       // Copy device name into shared_info
-       strcpy(info.shared_info->device_identifier, info.device_identifier);
+       // *** Pull active monitor VESA EDID from boot loader
+       edid1_info* edidInfo
+               = (edid1_info*)get_boot_item(EDID_BOOT_INFO, NULL);
 
-       // Pull active monitor VESA EDID from boot loader
-       edid1_info* edidInfo = (edid1_info*)get_boot_item(EDID_BOOT_INFO,
-               NULL);
        if (edidInfo != NULL) {
-               TRACE("card(%ld): %s found BIOS EDID information.\n", info.id,
+               TRACE("card(%ld): %s found VESA EDID information.\n", info.id,
                        __func__);
                info.shared_info->has_edid = true;
                memcpy(&info.shared_info->edid_info, edidInfo, 
sizeof(edid1_info));
        } else {
-               TRACE("card(%ld): %s didn't find BIOS EDID modes.\n", info.id,
+               TRACE("card(%ld): %s didn't find VESA EDID modes.\n", info.id,
                        __func__);
                info.shared_info->has_edid = false;
        }
 
-       // Populate graphics_memory/aperture_size with KB
+       // *** Populate graphics_memory/aperture_size with KB
        if (info.shared_info->device_chipset >= RADEON_R800) {
                // R800+ has memory stored in MB
                info.shared_info->graphics_memory_size


Other related posts: