Merge branch 'modesetting-101' of git+ssh://git.freedesktop.org/git/mesa/drm into origin/modesetting-101

main
Jesse Barnes 2007-04-17 18:20:05 -07:00
commit c71c44bb92
4 changed files with 16 additions and 11 deletions

View File

@ -572,7 +572,7 @@ bool drm_initial_config(drm_device_t *dev, bool can_grow)
/* bind analog output to one crtc */ /* bind analog output to one crtc */
list_for_each_entry(output, &dev->mode_config.output_list, head) { list_for_each_entry(output, &dev->mode_config.output_list, head) {
struct drm_display_mode *des_mode; struct drm_display_mode *des_mode = NULL;
if (list_empty(&output->modes)) if (list_empty(&output->modes))
continue; continue;
@ -582,6 +582,10 @@ bool drm_initial_config(drm_device_t *dev, bool can_grow)
if (des_mode->flags & DRM_MODE_TYPE_PREFERRED) if (des_mode->flags & DRM_MODE_TYPE_PREFERRED)
break; break;
} }
if (!des_mode)
continue;
if (!strncmp(output->name, "VGA", 3)) { if (!strncmp(output->name, "VGA", 3)) {
DRM_DEBUG("VGA preferred mode: %s\n", des_mode->name); DRM_DEBUG("VGA preferred mode: %s\n", des_mode->name);
drm_setup_output(output, vga_crtc, des_mode); drm_setup_output(output, vga_crtc, des_mode);

View File

@ -375,9 +375,6 @@ static void drm_cleanup(drm_device_t * dev)
drm_lastclose(dev); drm_lastclose(dev);
drm_fence_manager_takedown(dev); drm_fence_manager_takedown(dev);
if (!drm_fb_loaded)
pci_disable_device(dev->pdev);
drm_ctxbitmap_cleanup(dev); drm_ctxbitmap_cleanup(dev);
if (drm_core_has_MTRR(dev) && drm_core_has_AGP(dev) && dev->agp if (drm_core_has_MTRR(dev) && drm_core_has_AGP(dev) && dev->agp
@ -389,15 +386,16 @@ static void drm_cleanup(drm_device_t * dev)
DRM_DEBUG("mtrr_del=%d\n", retval); DRM_DEBUG("mtrr_del=%d\n", retval);
} }
// drm_bo_driver_finish(dev); if (dev->driver->unload)
dev->driver->unload(dev);
if (drm_core_has_AGP(dev) && dev->agp) { if (drm_core_has_AGP(dev) && dev->agp) {
drm_free(dev->agp, sizeof(*dev->agp), DRM_MEM_AGPLISTS); drm_free(dev->agp, sizeof(*dev->agp), DRM_MEM_AGPLISTS);
dev->agp = NULL; dev->agp = NULL;
} }
if (dev->driver->unload)
dev->driver->unload(dev);
// drm_bo_driver_finish(dev);
if (dev->maplist) { if (dev->maplist) {
drm_free(dev->maplist, sizeof(*dev->maplist), DRM_MEM_MAPS); drm_free(dev->maplist, sizeof(*dev->maplist), DRM_MEM_MAPS);
dev->maplist = NULL; dev->maplist = NULL;
@ -406,6 +404,9 @@ static void drm_cleanup(drm_device_t * dev)
drm_ht_remove(&dev->object_hash); drm_ht_remove(&dev->object_hash);
} }
if (!drm_fb_loaded)
pci_disable_device(dev->pdev);
drm_put_head(&dev->primary); drm_put_head(&dev->primary);
if (drm_put_dev(dev)) if (drm_put_dev(dev))
DRM_ERROR("Cannot unload module\n"); DRM_ERROR("Cannot unload module\n");

View File

@ -70,10 +70,9 @@ static void intel_sdvo_write_sdvox(struct drm_output *output, u32 val)
int i; int i;
if (sdvo_priv->output_device == SDVOB) if (sdvo_priv->output_device == SDVOB)
bval = I915_READ(SDVOB);
else
cval = I915_READ(SDVOC); cval = I915_READ(SDVOC);
else
bval = I915_READ(SDVOB);
/* /*
* Write the registers twice for luck. Sometimes, * Write the registers twice for luck. Sometimes,
* writing them only once doesn't appear to 'stick'. * writing them only once doesn't appear to 'stick'.

View File

@ -265,6 +265,7 @@ int i915_driver_unload(drm_device_t *dev)
drm_mem_reg_iounmap(dev, &dev_priv->ring_buffer->mem, drm_mem_reg_iounmap(dev, &dev_priv->ring_buffer->mem,
dev_priv->ring.virtual_start); dev_priv->ring.virtual_start);
DRM_DEBUG("usage is %d\n", dev_priv->ring_buffer->usage);
mutex_lock(&dev->struct_mutex); mutex_lock(&dev->struct_mutex);
drm_bo_usage_deref_locked(dev_priv->ring_buffer); drm_bo_usage_deref_locked(dev_priv->ring_buffer);
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);