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

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 21 Apr 2010 12:03:02 +0200 (CEST)

Author: czeidler
Date: 2010-04-21 12:03:01 +0200 (Wed, 21 Apr 2010)
New Revision: 36393
Changeset: http://dev.haiku-os.org/changeset/36393/haiku

Removed:
   haiku/trunk/src/add-ons/accelerants/radeon_hd/memory.cpp
Modified:
   haiku/trunk/src/add-ons/accelerants/radeon_hd/Jamfile
   haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp
   haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.h
   haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant_protos.h
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.h
   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:
Start to cleanup radeon_hd driver.



Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/Jamfile
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/Jamfile       2010-04-21 
09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/Jamfile       2010-04-21 
10:03:01 UTC (rev 36393)
@@ -10,7 +10,6 @@
        accelerant.cpp
        engine.cpp
        hooks.cpp
-       memory.cpp
        mode.cpp
        : be libaccelerantscommon.a
 ;

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp        
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.cpp        
2010-04-21 10:03:01 UTC (rev 36393)
@@ -186,63 +186,7 @@
        return B_OK;
 }
 
-/*
-ssize_t
-radeon_accelerant_clone_info_size(void)
-{
-       TRACE(("radeon_accelerant_clone_info_size()\n"));
-       // clone info is device name, so return its maximum size
-       return B_PATH_NAME_LENGTH;
-}
 
-
-void
-radeon_get_accelerant_clone_info(void *info)
-{
-       TRACE(("radeon_get_accelerant_clone_info()\n"));
-       ioctl(gInfo->device, RADEON_GET_DEVICE_NAME, info, B_PATH_NAME_LENGTH);
-}
-
-
-status_t
-radeon_clone_accelerant(void *info)
-{
-       TRACE(("radeon_clone_accelerant()\n"));
-
-       // create full device name
-       char path[B_PATH_NAME_LENGTH];
-       strcpy(path, "/dev/");
-#ifdef __HAIKU__
-       strlcat(path, (const char *)info, sizeof(path));
-#else
-       strcat(path, (const char *)info);
-#endif
-
-       int fd = open(path, B_READ_WRITE);
-       if (fd < 0)
-               return errno;
-
-       status_t status = init_common(fd, true);
-       if (status != B_OK)
-               goto err1;
-
-       // get read-only clone of supported display modes
-       status = gInfo->mode_list_area = clone_area(
-               "intel extreme cloned modes", (void **)&gInfo->mode_list,
-               B_ANY_ADDRESS, B_READ_AREA, gInfo->shared_info->mode_list_area);
-       if (status < B_OK)
-               goto err2;
-
-       return B_OK;
-
-err2:
-       uninit_common();
-err1:
-       close(fd);
-       return status;
-}
-*/
-
 /*! This function is called for both, the primary accelerant and all of
        its clones.
 */
@@ -261,29 +205,3 @@
        uninit_common();
 }
 
-/*
-status_t
-radeon_get_accelerant_device_info(accelerant_device_info *info)
-{
-       TRACE(("radeon_get_accelerant_device_info()\n"));
-
-       info->version = B_ACCELERANT_VERSION;
-       strcpy(info->name, 
gInfo->shared_info->device_type.InFamily(RADEON_TYPE_7xx)
-               ? "Intel Extreme Graphics 1" : "Intel Extreme Graphics 2");
-       strcpy(info->chipset, gInfo->shared_info->device_identifier);
-       strcpy(info->serial_no, "None");
-
-       info->memory = gInfo->shared_info->graphics_memory_size;
-       info->dac_speed = gInfo->shared_info->pll_info.max_frequency;
-
-       return B_OK;
-}
-
-
-sem_id
-radeon_accelerant_retrace_semaphore()
-{
-       TRACE(("radeon_accelerant_retrace_semaphore()\n"));
-       return gInfo->shared_info->vblank_sem;
-}*/
-

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.h  2010-04-21 
09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant.h  2010-04-21 
10:03:01 UTC (rev 36393)
@@ -56,10 +56,6 @@
        *(volatile uint32 *)(gInfo->regs + offset) = value;
 }
 
-// memory.cpp
-extern void radeon_free_memory(uint32 base);
-extern status_t radeon_allocate_memory(size_t size, uint32 flags, uint32 
&base);
-
 // modes.cpp 
 extern status_t create_mode_list(void);
 

Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant_protos.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant_protos.h   
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/accelerant_protos.h   
2010-04-21 10:03:01 UTC (rev 36393)
@@ -21,12 +21,7 @@
 
 // general
 status_t radeon_init_accelerant(int fd);
-ssize_t radeon_accelerant_clone_info_size(void);
-void radeon_get_accelerant_clone_info(void *data);
-status_t radeon_clone_accelerant(void *data);
 void radeon_uninit_accelerant(void);
-status_t radeon_get_accelerant_device_info(accelerant_device_info *info);
-sem_id radeon_accelerant_retrace_semaphore(void);
 
 // modes & constraints
 uint32 radeon_accelerant_mode_count(void);

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp        
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp        
2010-04-21 10:03:01 UTC (rev 36393)
@@ -113,8 +113,7 @@
                if (!thisName)
                        return B_BAD_VALUE;
        }
-       TRACE((DEVICE_NAME ": device id %i\n", id));
-       
+
        radeon_info *info = gDeviceInfo[id];
 
        mutex_lock(&gLock);
@@ -197,54 +196,6 @@
 #endif
                        return B_OK;
 
-               // graphics mem manager
-               case RADEON_ALLOCATE_GRAPHICS_MEMORY:
-               {
-                       radeon_allocate_graphics_memory allocMemory;
-#ifdef __HAIKU__
-                       if (user_memcpy(&allocMemory, buffer,
-                                       
sizeof(radeon_allocate_graphics_memory)) < B_OK)
-                               return B_BAD_ADDRESS;
-#else
-                       memcpy(&allocMemory, buffer, 
sizeof(radeon_allocate_graphics_memory));
-#endif
-
-                       if (allocMemory.magic != RADEON_PRIVATE_DATA_MAGIC)
-                               return B_BAD_VALUE;
-
-                       status_t status = radeon_allocate_memory(*info, 
allocMemory.size,
-                               allocMemory.alignment, allocMemory.flags,
-                               (addr_t *)&allocMemory.buffer_base);
-                       if (status == B_OK) {
-                               // copy result
-#ifdef __HAIKU__
-                               if (user_memcpy(buffer, &allocMemory,
-                                               
sizeof(radeon_allocate_graphics_memory)) < B_OK)
-                                       return B_BAD_ADDRESS;
-#else
-                               memcpy(buffer, &allocMemory,
-                                       
sizeof(radeon_allocate_graphics_memory));
-#endif
-                       }
-                       return status;
-               }
-
-               case RADEON_FREE_GRAPHICS_MEMORY:
-               {
-                       radeon_free_graphics_memory freeMemory;
-#ifdef __HAIKU__
-                       if (user_memcpy(&freeMemory, buffer,
-                                       sizeof(radeon_free_graphics_memory)) < 
B_OK)
-                               return B_BAD_ADDRESS;
-#else
-                       memcpy(&freeMemory, buffer, 
sizeof(radeon_free_graphics_memory));
-#endif
-
-                       if (freeMemory.magic == RADEON_PRIVATE_DATA_MAGIC)
-                               return radeon_free_memory(*info, 
freeMemory.buffer_base);
-                       break;
-               }
-
                default:
                        TRACE((DEVICE_NAME ": ioctl() unknown message %ld 
(length = %ld)\n",
                                op, bufferLength));

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        
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp        
2010-04-21 10:03:01 UTC (rev 36393)
@@ -48,7 +48,6 @@
 char* gDeviceNames[MAX_CARDS + 1];
 radeon_info* gDeviceInfo[MAX_CARDS];
 pci_module_info* gPCI;
-agp_gart_module_info* gGART;
 mutex gLock;
 
 
@@ -121,13 +120,6 @@
                return status;
        }
 
-       status = get_module(B_AGP_GART_MODULE_NAME, (module_info**)&gGART);
-       if (status != B_OK) {
-               TRACE((DEVICE_NAME ": AGP GART module unavailable\n"));
-               put_module(B_PCI_MODULE_NAME);
-               return status;
-       }
-
        mutex_init(&gLock, "intel extreme ksync");
 
        // find devices
@@ -206,7 +198,6 @@
                free(name);
        }
 
-       put_module(B_AGP_GART_MODULE_NAME);
        put_module(B_PCI_MODULE_NAME);
 }
 

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.h
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.h  
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.h  
2010-04-21 10:03:01 UTC (rev 36393)
@@ -32,7 +32,6 @@
 extern char* gDeviceNames[];
 extern radeon_info* gDeviceInfo[];
 extern pci_module_info* gPCI;
-extern agp_gart_module_info* gGART;
 extern mutex gLock;
 
 

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     
2010-04-21 09:56:00 UTC (rev 36392)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp     
2010-04-21 10:03:01 UTC (rev 36393)
@@ -31,156 +31,14 @@
 #endif
 
 
-static void
-init_overlay_registers(overlay_registers *registers)
-{
-       memset(registers, 0, B_PAGE_SIZE);
-
-       registers->contrast_correction = 0x48;
-       registers->saturation_cos_correction = 0x9a;
-               // this by-passes contrast and saturation correction
-}
-
-
-static void
-read_settings(bool &hardwareCursor)
-{
-       hardwareCursor = false;
-
-       void *settings = load_driver_settings("radeon_extreme");
-       if (settings != NULL) {
-               hardwareCursor = get_driver_boolean_parameter(settings,
-                       "hardware_cursor", true, true);
-
-               unload_driver_settings(settings);
-       }
-}
-
-
-static int32
-release_vblank_sem(radeon_info &info)
-{
-       int32 count;
-       if (get_sem_count(info.shared_info->vblank_sem, &count) == B_OK
-               && count < 0) {
-               release_sem_etc(info.shared_info->vblank_sem, -count,
-                       B_DO_NOT_RESCHEDULE);
-               return B_INVOKE_SCHEDULER;
-       }
-
-       return B_HANDLED_INTERRUPT;
-}
-
-
-static int32
-radeon_interrupt_handler(void *data)
-{
-       radeon_info &info = *(radeon_info *)data;
-
-       uint32 identity = read16(info.registers + RADEON_INTERRUPT_IDENTITY);
-       if (identity == 0)
-               return B_UNHANDLED_INTERRUPT;
-
-       int32 handled = B_HANDLED_INTERRUPT;
-
-       if ((identity & INTERRUPT_VBLANK) != 0) {
-               handled = release_vblank_sem(info);
-
-               // make sure we'll get another one of those
-               write32(info.registers + RADEON_DISPLAY_A_PIPE_STATUS,
-                       DISPLAY_PIPE_VBLANK_STATUS);
-       }
-
-       // setting the bit clears it!
-       write16(info.registers + RADEON_INTERRUPT_IDENTITY, identity);
-
-       return handled;
-}
-
-
-static void
-init_interrupt_handler(radeon_info &info)
-{
-       info.shared_info->vblank_sem = create_sem(0, "radeon hd vblank");
-       if (info.shared_info->vblank_sem < B_OK)
-               return;
-
-       status_t status = B_OK;
-
-       // We need to change the owner of the sem to the calling team (usually 
the
-       // app_server), because userland apps cannot acquire kernel semaphores
-       thread_id thread = find_thread(NULL);
-       thread_info threadInfo;
-       if (get_thread_info(thread, &threadInfo) != B_OK
-               || set_sem_owner(info.shared_info->vblank_sem, threadInfo.team) 
!= B_OK) {
-               status = B_ERROR;
-       }
-
-       if (status == B_OK && info.pci->u.h0.interrupt_pin != 0x00
-               && info.pci->u.h0.interrupt_line != 0xff) {
-               // we've gotten an interrupt line for us to use
-
-               info.fake_interrupts = false;
-
-               status = 
install_io_interrupt_handler(info.pci->u.h0.interrupt_line,
-                       &radeon_interrupt_handler, (void *)&info, 0);
-               if (status == B_OK) {
-                       // enable interrupts - we only want VBLANK interrupts
-                       write16(info.registers + RADEON_INTERRUPT_ENABLED,
-                               read16(info.registers + 
RADEON_INTERRUPT_ENABLED)
-                               | INTERRUPT_VBLANK);
-                       write16(info.registers + RADEON_INTERRUPT_MASK, 
~INTERRUPT_VBLANK);
-
-                       write32(info.registers + RADEON_DISPLAY_A_PIPE_STATUS,
-                               DISPLAY_PIPE_VBLANK_STATUS);
-                       write16(info.registers + RADEON_INTERRUPT_IDENTITY, ~0);
-               }
-       }
-       if (status < B_OK) {
-               // There is no interrupt reserved for us, or we couldn't 
install our
-               // interrupt handler, let's fake the vblank interrupt for our 
clients
-               // using a timer interrupt
-               info.fake_interrupts = true;
-
-               // TODO: fake interrupts!
-               status = B_ERROR;
-       }
-
-       if (status < B_OK) {
-               delete_sem(info.shared_info->vblank_sem);
-               info.shared_info->vblank_sem = B_ERROR;
-       }
-}
-
-
 //     #pragma mark -
 
 
-status_t
-radeon_free_memory(radeon_info &info, addr_t base)
-{
-       return gGART->free_memory(info.aperture, base);
-}
+#define RHD_FB_BAR   0
+#define RHD_MMIO_BAR 2
 
 
 status_t
-radeon_allocate_memory(radeon_info &info, size_t size, size_t alignment,
-       uint32 flags, addr_t *_base, addr_t *_physicalBase)
-{
-       return gGART->allocate_memory(info.aperture, size, alignment,
-               flags, _base, _physicalBase);
-}
-
-
-enum _rs780MCRegs {
-    RS78_MC_SYSTEM_STATUS      =       0x0,
-    RS78_MC_FB_LOCATION                =       0x10,
-    RS78_K8_FB_LOCATION                =       0x11,
-    RS78_MC_MISC_UMA_CNTL       =       0x12
-};
-
-
-status_t
 radeon_hd_init(radeon_info &info)
 {
        int fbIndex = 0;
@@ -193,13 +51,6 @@
        }
 
        // memory mapped I/O
-
-       // TODO: registers are mapped twice (by us and radeon_gart), maybe we
-       // can share it between the drivers
-
-#define RHD_FB_BAR   0
-#define RHD_MMIO_BAR 2
-
        
        AreaKeeper sharedCreator;
        info.shared_area = sharedCreator.Create("radeon hd shared info",
@@ -245,42 +96,6 @@
        info.shared_info->frame_buffer_offset = 0;
        info.shared_info->physical_graphics_memory = 
info.pci->u.h0.base_registers[RHD_FB_BAR];
 
-//??   init_interrupt_handler(info);
-
-#define R6XX_CONFIG_MEMSIZE 0x5428
-
-       uint32 fbLocation = read32(info.registers + RS78_K8_FB_LOCATION);
-       TRACE((DEVICE_NAME "radeon_hd_init() fb pci location %x, intern 
location %x \n",
-               info.shared_info->graphics_memory, fbLocation));
-       
-       uint32 ramSize = read32(info.registers + R6XX_CONFIG_MEMSIZE) >> 10;
-       TRACE((DEVICE_NAME "radeon_hd_init() ram size %i \n", ramSize));
-       
-
-
-       /*TRACE((DEVICE_NAME "radeon_hd_init() fb size %i \n",
-               info.pci->u.h0.base_register_sizes[RHD_FB_BAR]));
-
-       uint8* fbPosition = info.shared_info->graphics_memory;
-       fbPosition += 90000;
-       for (int i = 0; i < 90000; i++) {
-               *fbPosition = 255;
-               fbPosition++;
-               *fbPosition = 0;
-               fbPosition++;
-               *fbPosition = 0;
-               fbPosition++;
-       }
-       fbPosition += 90000;
-       for (int i = 0; i < 90000; i++) {
-               *fbPosition = 255;
-               fbPosition++;
-               *fbPosition = 0;
-               fbPosition++;
-               *fbPosition = 0;
-               fbPosition++;
-       }*/
-
        TRACE((DEVICE_NAME "radeon_hd_init() completed successfully!\n"));
        return B_OK;
 }

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   
    2010-04-21 09:56:00 UTC (rev 36392)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h   
    2010-04-21 10:03:01 UTC (rev 36393)
@@ -23,8 +23,6 @@
        status_t                init_status;
        int32                   id;
        pci_info*               pci;
-       addr_t                  aperture_base;
-       aperture_id             aperture;
        uint8*                  registers;
        area_id                 registers_area;
        area_id                 framebuffer_area;
@@ -32,18 +30,11 @@
        struct radeon_shared_info* shared_info;
        area_id                 shared_area;
 
-       struct overlay_registers* overlay_registers;
-
-       bool                    fake_interrupts;
-
        const char*             device_identifier;
        DeviceType              device_type;
 };
 
-extern status_t radeon_free_memory(radeon_info& info, addr_t offset);
-extern status_t radeon_allocate_memory(radeon_info& info, size_t size,
-       size_t alignment, uint32 flags, addr_t* _offset,
-       addr_t* _physicalBase = NULL);
+
 extern status_t radeon_hd_init(radeon_info& info);
 extern void radeon_hd_uninit(radeon_info& info);
 


Other related posts: