[haiku-commits] r43226 - 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: Tue, 8 Nov 2011 20:50:08 +0100 (CET)

Author: kallisti5
Date: 2011-11-08 20:50:07 +0100 (Tue, 08 Nov 2011)
New Revision: 43226
Changeset: https://dev.haiku-os.org/changeset/43226

Modified:
   haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
   haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/display.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
   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_private.h
Log:
* style cleanup of shared storage names
* return better data on card 
* display chipset flags in screen preflet


Modified: haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
===================================================================
--- haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h  2011-11-08 
17:17:43 UTC (rev 43225)
+++ haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h  2011-11-08 
19:50:07 UTC (rev 43226)
@@ -105,8 +105,8 @@
 
 
 struct radeon_shared_info {
-       uint32                  device_index;           // accelerant index
-       uint32                  device_id;                      // device pciid
+       uint32                  deviceIndex;            // accelerant index
+       uint32                  pciID;                          // device pciid
        area_id                 mode_list_area;         // area containing 
display mode list
        uint32                  mode_count;
 
@@ -156,11 +156,12 @@
        uint16                  cursor_hot_x;
        uint16                  cursor_hot_y;
 
-       uint16                  device_chipset;
+       char                    deviceName[32];
+       uint16                  chipsetID;
+       char                    chipsetName[16];
        uint32                  chipsetFlags;
        uint8                   dceMajor;
        uint8                   dceMinor;
-       char                    device_identifier[32];
 };
 
 //----------------- ioctl() interface ----------------

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp        
2011-11-08 17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp        
2011-11-08 19:50:07 UTC (rev 43226)
@@ -309,13 +309,23 @@
 status_t
 radeon_get_accelerant_device_info(accelerant_device_info *di)
 {
+       radeon_shared_info &info = *gInfo->shared_info;
+
        di->version = B_ACCELERANT_VERSION;
-       strcpy(di->name, gInfo->shared_info->device_identifier);
+       strcpy(di->name, info.deviceName);
 
        char chipset[32];
-       sprintf(chipset, "r%X", gInfo->shared_info->device_chipset);
+       sprintf(chipset, "%s", gInfo->shared_info->chipsetName);
        strcpy(di->chipset, chipset);
 
+       // add flags onto chipset name
+       if ((info.chipsetFlags & CHIP_IGP) != 0)
+               strcat(di->chipset, " IGP");
+       if ((info.chipsetFlags & CHIP_MOBILE) != 0)
+               strcat(di->chipset, " Mobile");
+       if ((info.chipsetFlags & CHIP_APU) != 0)
+               strcat(di->chipset, " APU");
+
        strcpy(di->serial_no, "None" );
 
        di->memory = gInfo->shared_info->graphics_memory_size;

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-11-08 
17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/bios.cpp      2011-11-08 
19:50:07 UTC (rev 43226)
@@ -36,7 +36,7 @@
        uint32 biosScratch2;
        uint32 biosScratch6;
 
-       if (info.device_chipset >= RADEON_R600) {
+       if (info.chipsetID >= RADEON_R600) {
                biosScratch2 = Read32(OUT, R600_BIOS_2_SCRATCH);
                biosScratch6 = Read32(OUT, R600_BIOS_6_SCRATCH);
        } else {
@@ -49,7 +49,7 @@
        biosScratch6 |= ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH;
                // bios shouldn't handle mode switching
 
-       if (info.device_chipset >= RADEON_R600) {
+       if (info.chipsetID >= RADEON_R600) {
                Write32(OUT, R600_BIOS_2_SCRATCH, biosScratch2);
                Write32(OUT, R600_BIOS_6_SCRATCH, biosScratch6);
        } else {
@@ -67,7 +67,7 @@
        radeon_shared_info &info = *gInfo->shared_info;
        uint32 reg;
 
-       if (info.device_chipset == RADEON_PALM) {
+       if (info.chipsetID == RADEON_PALM) {
                // palms
                reg = Read32(OUT, EVERGREEN_CRTC_CONTROL
                        + EVERGREEN_CRTC0_REGISTER_OFFSET)
@@ -75,7 +75,7 @@
                        + EVERGREEN_CRTC1_REGISTER_OFFSET);
                if ((reg & EVERGREEN_CRTC_MASTER_EN) != 0)
                        return true;
-       } else if (info.device_chipset >= RADEON_CEDAR) {
+       } else if (info.chipsetID >= RADEON_CEDAR) {
                // evergreen or higher
                reg = Read32(OUT, EVERGREEN_CRTC_CONTROL
                                + EVERGREEN_CRTC0_REGISTER_OFFSET)
@@ -91,7 +91,7 @@
                                + EVERGREEN_CRTC5_REGISTER_OFFSET);
                if ((reg & EVERGREEN_CRTC_MASTER_EN) != 0)
                        return true;
-       } else if (info.device_chipset >= RADEON_R420) {
+       } else if (info.chipsetID >= RADEON_R420) {
                // avivio through r700
                reg = Read32(OUT, AVIVO_D1CRTC_CONTROL) |
                        Read32(OUT, AVIVO_D2CRTC_CONTROL);
@@ -181,7 +181,7 @@
        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);
+               "_%" B_PRIu32 ".bin", info.pciID, info.deviceIndex);
 
        fp = fopen(filename, "wb");
        if (fp == NULL) {

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/display.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/display.cpp   2011-11-08 
17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/display.cpp   2011-11-08 
19:50:07 UTC (rev 43226)
@@ -40,7 +40,7 @@
 
        radeon_shared_info &info = *gInfo->shared_info;
 
-       if (info.device_chipset >= RADEON_CEDAR) {
+       if (info.chipsetID >= RADEON_CEDAR) {
                // Evergreen
                uint32 offset = 0;
 
@@ -104,7 +104,7 @@
                regs->viewportStart = EVERGREEN_VIEWPORT_START + offset;
                regs->viewportSize = EVERGREEN_VIEWPORT_SIZE + offset;
 
-       } else if (info.device_chipset >= RADEON_RV770) {
+       } else if (info.chipsetID >= RADEON_RV770) {
                // R700 series
                uint32 offset = 0;
 
@@ -151,7 +151,7 @@
                regs->viewportStart = AVIVO_D1MODE_VIEWPORT_START + offset;
                regs->viewportSize = AVIVO_D1MODE_VIEWPORT_SIZE + offset;
 
-       } else if (info.device_chipset >= RADEON_R600) {
+       } else if (info.chipsetID >= RADEON_R600) {
                // R600 series+
                uint32 offset = 0;
 
@@ -199,13 +199,13 @@
                regs->viewportSize = AVIVO_D1MODE_VIEWPORT_SIZE + offset;
        } else {
                // this really shouldn't happen unless a driver PCIID chipset 
is wrong
-               TRACE("%s, unknown Radeon chipset: r%X\n", __func__,
-                       info.device_chipset);
+               TRACE("%s, unknown Radeon chipset: %s\n", __func__,
+                       info.chipsetName);
                return B_ERROR;
        }
 
-       TRACE("%s, registers for ATI chipset r%X crt #%d loaded\n", __func__,
-               info.device_chipset, crtcID);
+       TRACE("%s, registers for ATI chipset %s crt #%d loaded\n", __func__,
+               info.chipsetName, crtcID);
 
        return B_OK;
 }
@@ -960,7 +960,7 @@
 
        TRACE("%s: Framebuffer at: 0x%" B_PRIX64 "\n", __func__, fbAddress);
 
-       if (info.device_chipset >= RADEON_RV770) {
+       if (info.chipsetID >= RADEON_RV770) {
                TRACE("%s: Set SurfaceAddress High: 0x%" B_PRIX32 "\n",
                        __func__, (fbAddress >> 32) & 0xf);
 
@@ -976,7 +976,7 @@
        Write32(OUT, regs->grphPrimarySurfaceAddr, (fbAddress & 0xFFFFFFFF));
        Write32(OUT, regs->grphSecondarySurfaceAddr, (fbAddress & 0xFFFFFFFF));
 
-       if (info.device_chipset >= RADEON_R600) {
+       if (info.chipsetID >= RADEON_R600) {
                Write32(CRT, regs->grphControl, fbFormat);
                Write32(CRT, regs->grphSwapControl, fbSwap);
        }

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp       2011-11-08 
17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp       2011-11-08 
19:50:07 UTC (rev 43226)
@@ -48,7 +48,7 @@
                ERROR("%s: Timeout waiting for MC to idle!\n", __func__);
        }
 
-       if (info.device_chipset < RADEON_CEDAR) {
+       if (info.chipsetID < RADEON_CEDAR) {
                Write32(OUT, CP_ME_CNTL, CP_ME_HALT);
                        // Disable Command Processor parsing / prefetching
 
@@ -444,9 +444,9 @@
        radeon_shared_info &info = *gInfo->shared_info;
 
        uint32 fbVMLocationReg;
-       if (info.device_chipset >= RADEON_CEDAR) {
+       if (info.chipsetID >= RADEON_CEDAR) {
                fbVMLocationReg = EVERGREEN_MC_VM_FB_LOCATION;
-       } else if (info.device_chipset >= RADEON_RV770) {
+       } else if (info.chipsetID >= RADEON_RV770) {
                fbVMLocationReg = R700_MC_VM_FB_LOCATION;
        } else {
                fbVMLocationReg = R600_MC_VM_FB_LOCATION;
@@ -486,11 +486,11 @@
        TRACE("%s: vramStart: 0x%" B_PRIX64 ", vramEnd: 0x%" B_PRIX64 "\n",
                __func__, gInfo->fb.vramStart, gInfo->fb.vramEnd);
 
-       if (info.device_chipset >= RADEON_CEDAR)
+       if (info.chipsetID >= RADEON_CEDAR)
                return radeon_gpu_mc_setup_evergreen();
-       if (info.device_chipset >= RADEON_RV770)
+       if (info.chipsetID >= RADEON_RV770)
                return radeon_gpu_mc_setup_r700();
-       else if (info.device_chipset >= RADEON_R600)
+       else if (info.chipsetID >= RADEON_R600)
                return radeon_gpu_mc_setup_r600();
 
        return B_ERROR;

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp       2011-11-08 
17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/pll.cpp       2011-11-08 
19:50:07 UTC (rev 43226)
@@ -303,7 +303,7 @@
                pll->flags |= PLL_PREFER_LOW_REF_DIV;
 
 
-       if (info.device_chipset < RADEON_RV770)
+       if (info.chipsetID < RADEON_RV770)
                pll->flags |= PLL_PREFER_MINM_OVER_MAXP;
 
 

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp        
2011-11-08 17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp        
2011-11-08 19:50:07 UTC (rev 43226)
@@ -39,12 +39,12 @@
 
 // list of supported devices
 const struct supported_device {
-       uint32          device_id;
+       uint32          pciID;
        uint8           dceMajor;       // Display block family
        uint8           dceMinor;       // Display block family
-       uint16          chipset;
+       uint16          chipsetID;
        uint32          chipsetFlags;
-       const char*     name;
+       const char*     deviceName;
 } kSupportedDevices[] = {
        // R400 Series  (Radeon) DCE 0.0 (*very* early AtomBIOS)
        // R500 Series  (Radeon Xxxx) DCE 1.0
@@ -233,7 +233,7 @@
                // check device
                for (uint32 i = 0; i < sizeof(kSupportedDevices)
                                / sizeof(kSupportedDevices[0]); i++) {
-                       if (info.device_id == kSupportedDevices[i].device_id) {
+                       if (info.device_id == kSupportedDevices[i].pciID) {
                                type = i;
                                *_cookie = index + 1;
                                return B_OK;
@@ -327,15 +327,15 @@
                gDeviceInfo[found]->id = found;
                gDeviceInfo[found]->pci = info;
                gDeviceInfo[found]->registers = (uint8 
*)info->u.h0.base_registers[0];
-               gDeviceInfo[found]->device_id = 
kSupportedDevices[type].device_id;
-               gDeviceInfo[found]->device_identifier = 
kSupportedDevices[type].name;
-               gDeviceInfo[found]->device_chipset = 
kSupportedDevices[type].chipset;
+               gDeviceInfo[found]->pciID = kSupportedDevices[type].pciID;
+               gDeviceInfo[found]->deviceName = 
kSupportedDevices[type].deviceName;
+               gDeviceInfo[found]->chipsetID = 
kSupportedDevices[type].chipsetID;
                gDeviceInfo[found]->dceMajor = kSupportedDevices[type].dceMajor;
                gDeviceInfo[found]->dceMinor = kSupportedDevices[type].dceMinor;
                gDeviceInfo[found]->chipsetFlags = 
kSupportedDevices[type].chipsetFlags;
 
                dprintf(DEVICE_NAME ": GPU(%ld) %s, revision = 0x%x\n", found,
-                       kSupportedDevices[type].name, info->revision);
+                       kSupportedDevices[type].deviceName, info->revision);
 
                found++;
        }

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-11-08 17:17:43 UTC (rev 43225)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp     
2011-11-08 19:50:07 UTC (rev 43226)
@@ -37,6 +37,46 @@
 #define ERROR(x...) dprintf("radeon_hd: " x)
 
 
+static const char radeon_chip_name[][16] = {
+       "R420",
+       "RV515",
+       "R520",
+       "RV530",
+       "RV560",
+       "RV570",
+       "R580",
+       "R600",
+       "RV610",
+       "RV630",
+       "RV670",
+       "RV620",
+       "RV635",
+       "RS780",
+       "RS880",
+       "RV770",
+       "RV730",
+       "RV710",
+       "RV740",
+       "Cedar",
+       "Redwood",
+       "Juniper",
+       "Cypress",
+       "Hemlock",
+       "Palm",
+       "Sumo",
+       "Sumo2",
+       "Caicos",
+       "Turks",
+       "Barts",
+       "Cayman",
+       "Antilles",
+       "Lombok",
+       "Thames",
+       "Tahiti",
+       "New Zealand"
+};
+
+
 //     #pragma mark -
 
 
@@ -449,8 +489,8 @@
        TRACE("card(%ld): %s: called\n", info.id, __func__);
 
        ERROR("%s: card(%ld): "
-               "Radeon r%" B_PRIX16 " 1002:%" B_PRIX32 "\n",
-               __func__, info.id, info.device_chipset, info.device_id);
+               "Radeon %s 1002:%" B_PRIX32 "\n", __func__, info.id,
+               radeon_chip_name[info.chipsetID], info.pciID);
 
        // *** Map shared info
        AreaKeeper sharedCreator;
@@ -481,7 +521,7 @@
        mmioMapper.Detach();
 
        // *** Populate frame buffer information
-       if (info.shared_info->device_chipset >= RADEON_CEDAR) {
+       if (info.shared_info->chipsetID >= RADEON_CEDAR) {
                // Evergreen+ has memory stored in MB
                info.shared_info->graphics_memory_size
                        = read32(info.registers + CONFIG_MEMSIZE) * 1024;
@@ -531,14 +571,16 @@
                = info.pci->u.h0.base_registers[PCI_BAR_FB];
 
        // 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->deviceIndex = info.id;
+       info.shared_info->pciID = info.pciID;
+       info.shared_info->chipsetID = info.chipsetID;
        info.shared_info->chipsetFlags = info.chipsetFlags;
        info.shared_info->dceMajor = info.dceMajor;
        info.shared_info->dceMinor = info.dceMinor;
        info.shared_info->registers_area = info.registers_area;
-       strcpy(info.shared_info->device_identifier, info.device_identifier);
+       strcpy(info.shared_info->deviceName, info.deviceName);
+       strcpy(info.shared_info->chipsetName,
+               radeon_chip_name[info.chipsetID]);
 
        // *** AtomBIOS mapping
        // First we try an active bios read
@@ -546,11 +588,11 @@
 
        if (biosStatus != B_OK) {
                // If the active read fails, we try a disabled read
-               if (info.device_chipset >= RADEON_BARTS)
+               if (info.chipsetID >= RADEON_BARTS)
                        biosStatus = radeon_hd_getbios_ni(info);
-               else if (info.device_chipset >= RADEON_RV770)
+               else if (info.chipsetID >= RADEON_RV770)
                        biosStatus = radeon_hd_getbios_r700(info);
-               else if (info.device_chipset >= RADEON_R600)
+               else if (info.chipsetID >= RADEON_R600)
                        biosStatus = radeon_hd_getbios_r600(info);
                // else avivo_read_disabled_bios
        }

Modified: 
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h   
    2011-11-08 17:17:43 UTC (rev 43225)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h   
    2011-11-08 19:50:07 UTC (rev 43226)
@@ -45,9 +45,10 @@
        struct radeon_shared_info* shared_info;
        area_id                 shared_area;
 
-       const char*             device_identifier;
-       uint32                  device_id;
-       uint16                  device_chipset;
+       uint32                  pciID;
+       const char*             deviceName;
+       uint16                  chipsetID;
+       const char*             chipsetName;
        uint32                  chipsetFlags;
        uint8                   dceMajor;
        uint8                   dceMinor;


Other related posts:

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