rpms/kernel/F-11 drm-modesetting-radeon.patch, 1.80, 1.81 drm-next.patch, 1.15, 1.16 drm-nouveau.patch, 1.46, 1.47 kernel.spec, 1.1589, 1.1590 drm-radeon-kms-fixes.patch, 1.3, NONE

Dave Airlie airlied at fedoraproject.org
Tue May 5 10:28:14 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20413

Modified Files:
	drm-modesetting-radeon.patch drm-next.patch drm-nouveau.patch 
	kernel.spec 
Removed Files:
	drm-radeon-kms-fixes.patch 
Log Message:
* Tue May 05 2009 Dave Airlie <airlied at redhat.com> 2.6.29.2-128
- radeon kms: backport some fixes - put back old internal interface


drm-modesetting-radeon.patch:

Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-modesetting-radeon.patch,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -p -r1.80 -r1.81
--- drm-modesetting-radeon.patch	21 Apr 2009 05:20:50 -0000	1.80
+++ drm-modesetting-radeon.patch	5 May 2009 10:28:10 -0000	1.81
@@ -1,3 +1,78 @@
+commit cedd30c80687e2dee226ae3f38cb3411361e7572
+Merge: ef416ea 2b12cba
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Tue May 5 19:10:23 2009 +1000
+
+    Merge remote branch 'origin/drm-rawhide' into drm-f11
+
+commit 2b12cba747575005e75fe6154a552935484e9a4d
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Tue May 5 18:17:44 2009 +1000
+
+    radeon: don't convert colors for 16-bit modes
+
+commit ed70a54c74f78f426497654676dda7ac53055d13
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Fri May 1 11:58:10 2009 +1000
+
+    radeon: init usec timeout earlier
+    
+    we can call idle function before we set this up
+
+commit b1d531a7b26449e17031c22a1b12d6c5994f1b9a
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Fri Apr 24 15:18:09 2009 +1000
+
+    drm: revert change and remove unneeded setmode code
+
+commit 3d533587bcd2753b47887ed6a927b05f5821f1b7
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Fri Apr 24 14:32:36 2009 +1000
+
+    Revert "radeon: set i2c timeout to 2 jiffies"
+    
+    This reverts commit ab1e9cd474798a5c7d15d21c6422c3c9f90e90e0.
+    
+    fixed in i2c core
+
+commit 592b92d0a532c7367164546b513d345b1aae1d46
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Fri May 1 02:14:07 2009 +1000
+
+    r300: add other clip regs
+
+commit 37136c81b28e45f30c8d45d212315c0b4ce6c6b0
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Apr 30 23:09:58 2009 +1000
+
+    drm: make ttm populate on cache changes
+    
+    this is backported from upstream
+
+commit e2b4a0ba030cf96be943a2d277accc43e0560672
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Apr 30 23:09:39 2009 +1000
+
+    radeon: removed unused legacy cs codepath
+
+commit abe22355e73be13968fead1a42b9af43790f38e9
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Wed Apr 22 17:24:46 2009 +1000
+
+    radeon: duplicate desired modes so this stuff works properly
+
+commit ab1e9cd474798a5c7d15d21c6422c3c9f90e90e0
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Wed Apr 22 16:58:58 2009 +1000
+
+    radeon: set i2c timeout to 2 jiffies
+
+commit c4afb1b5b1cf342f9ab6bd561522c58dbe5733ad
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Wed Apr 22 16:57:38 2009 +1000
+
+    radeon: hook up the sub pixel order
+
 commit ef416eafca3c5ed83b089e90fb50c15062accecd
 Merge: fa4687f f891418
 Author: Dave Airlie <airlied at redhat.com>
@@ -5607,37 +5682,50 @@ index 94a7688..c580c55 100644
  
  out:
 diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
-index a04639d..2bedb7a 100644
+index a04639d..f6182a5 100644
 --- a/drivers/gpu/drm/drm_crtc_helper.c
 +++ b/drivers/gpu/drm/drm_crtc_helper.c
-@@ -552,7 +552,7 @@ drm_crtc_prepare_encoders(struct drm_device *dev)
- bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
- 			      struct drm_display_mode *mode,
- 			      int x, int y,
--			      struct drm_framebuffer *old_fb)
-+			      struct drm_framebuffer *old_fb, int conn_changed)
- {
- 	struct drm_device *dev = crtc->dev;
- 	struct drm_display_mode *adjusted_mode, saved_mode;
-@@ -590,7 +590,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+@@ -561,7 +561,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ 	int saved_x, saved_y;
+ 	struct drm_encoder *encoder;
+ 	bool ret = true;
+-	bool depth_changed, bpp_changed;
+ 
+ 	adjusted_mode = drm_mode_duplicate(dev, mode);
+ 
+@@ -570,15 +569,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ 	if (!crtc->enabled)
+ 		return true;
+ 
+-	if (old_fb && crtc->fb) {
+-		depth_changed = (old_fb->depth != crtc->fb->depth);
+-		bpp_changed = (old_fb->bits_per_pixel !=
+-			       crtc->fb->bits_per_pixel);
+-	} else {
+-		depth_changed = true;
+-		bpp_changed = true;
+-	}
+-
+ 	saved_mode = crtc->mode;
+ 	saved_x = crtc->x;
+ 	saved_y = crtc->y;
+@@ -590,15 +580,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
  	crtc->x = x;
  	crtc->y = y;
  
 -	if (drm_mode_equal(&saved_mode, &crtc->mode)) {
-+	if (drm_mode_equal(&saved_mode, &crtc->mode) && !conn_changed) {
- 		if (saved_x != crtc->x || saved_y != crtc->y ||
- 		    depth_changed || bpp_changed) {
- 			ret = !crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
-@@ -848,7 +848,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
- 			drm_mode_debug_printmodeline(set->mode);
- 			if (!drm_crtc_helper_set_mode(set->crtc, set->mode,
- 						      set->x, set->y,
--						      old_fb)) {
-+						      old_fb, 1)) {
- 				DRM_ERROR("failed to set mode on crtc %p\n",
- 					  set->crtc);
- 				ret = -EINVAL;
-@@ -868,6 +868,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
+-		if (saved_x != crtc->x || saved_y != crtc->y ||
+-		    depth_changed || bpp_changed) {
+-			ret = !crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
+-							 old_fb);
+-			goto done;
+-		}
+-	}
+-
+ 	/* Pass our mode to the connectors and the CRTC to give them a chance to
+ 	 * adjust it according to limitations or connector properties, and also
+ 	 * a chance to reject the mode entirely.
+@@ -868,6 +849,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
  						set->x, set->y, old_fb);
  		if (ret != 0)
  		    goto fail_set_mode;
@@ -5646,16 +5734,7 @@ index a04639d..2bedb7a 100644
  	}
  
  	kfree(save_encoders);
-@@ -999,7 +1001,7 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
- 			continue;
- 
- 		ret = drm_crtc_helper_set_mode(crtc, &crtc->mode,
--					       crtc->x, crtc->y, crtc->fb);
-+					       crtc->x, crtc->y, crtc->fb, 1);
- 
- 		if (ret == false)
- 			DRM_ERROR("failed to set mode on crtc %p\n", crtc);
-@@ -1007,3 +1009,30 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
+@@ -1007,3 +990,30 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
  	return 0;
  }
  EXPORT_SYMBOL(drm_helper_resume_force_mode);
@@ -6781,10 +6860,10 @@ index d009661..5f7e431 100644
   * Called via drm_exit() at module unload time or when pci device is
 diff --git a/drivers/gpu/drm/drm_ttm.c b/drivers/gpu/drm/drm_ttm.c
 new file mode 100644
-index 0000000..dbc0cb3
+index 0000000..ae64a83
 --- /dev/null
 +++ b/drivers/gpu/drm/drm_ttm.c
-@@ -0,0 +1,469 @@
+@@ -0,0 +1,476 @@
 +/**************************************************************************
 + *
 + * Copyright (c) 2006-2007 Tungsten Graphics, Inc., Cedar Park, TX., USA
@@ -6876,14 +6955,21 @@ index 0000000..dbc0cb3
 + * Change caching policy for the linear kernel map
 + * for range of pages in a ttm.
 + */
-+static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached)
++static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached, int alloc_cached)
 +{
 +	int i;
 +	struct page **cur_page;
++	int ret;
 +
 +	if ((ttm->page_flags & DRM_TTM_PAGE_UNCACHED) == noncached)
 +		return 0;
 +
++	{
++		ret = drm_ttm_populate(ttm, alloc_cached);
++		if (ret != 0)
++			return ret;
++	}
++
 +	if (noncached)
 +		drm_clflush_pages(ttm->pages, ttm->num_pages);
 +
@@ -6976,7 +7062,7 @@ index 0000000..dbc0cb3
 +	if (ttm->pages) {
 +		if (ttm->page_flags & DRM_TTM_PAGE_USER) {
 +			if (ttm->page_flags & DRM_TTM_PAGE_UNCACHED)
-+				drm_ttm_set_caching(ttm, 0);
++				drm_ttm_set_caching(ttm, 0, 0);
 +
 +			drm_ttm_free_user_pages(ttm);
 +		} else
@@ -7184,7 +7270,7 @@ index 0000000..dbc0cb3
 +		struct drm_ttm_backend *be = ttm->be;
 +		if (be->func->needs_ub_cache_adjust(be))
 +			if (ttm->page_flags & DRM_TTM_PAGE_ALLOC_CACHED)
-+				drm_ttm_set_caching(ttm, 0);
++				drm_ttm_set_caching(ttm, 0, 1);
 +		ttm->state = ttm_unbound;
 +	}
 +}
@@ -7232,7 +7318,7 @@ index 0000000..dbc0cb3
 +	be = ttm->be;
 +
 +	if ((ttm->state == ttm_unbound || ttm->state == ttm_unpopulated) && !cached)
-+		drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED);
++		drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED, cached);
 +	else if ((bo_mem->flags & DRM_BO_FLAG_CACHED_MAPPED) &&
 +		   bo_driver->ttm_cache_flush)
 +		bo_driver->ttm_cache_flush(ttm);
@@ -7537,7 +7623,7 @@ index ee7ce7b..95422bb 100644
  int i915_irq_emit(struct drm_device *dev, void *data,
  			 struct drm_file *file_priv)
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 64773ce..a2783c0 100644
+index 64773ce..178386d 100644
 --- a/drivers/gpu/drm/i915/intel_display.c
 +++ b/drivers/gpu/drm/i915/intel_display.c
 @@ -763,12 +763,18 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
@@ -7580,15 +7666,6 @@ index 64773ce..a2783c0 100644
  		break;
  	default:
  		DRM_ERROR("Can't update pipe %d in SAREA\n", pipe);
-@@ -1573,7 +1579,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output,
- 	if (!crtc->enabled) {
- 		if (!mode)
- 			mode = &load_detect_mode;
--		drm_crtc_helper_set_mode(crtc, mode, 0, 0, crtc->fb);
-+		drm_crtc_helper_set_mode(crtc, mode, 0, 0, crtc->fb, 0);
- 	} else {
- 		if (intel_crtc->dpms_mode != DRM_MODE_DPMS_ON) {
- 			crtc_funcs = crtc->helper_private;
 diff --git a/drivers/gpu/drm/radeon/Makefile b/drivers/gpu/drm/radeon/Makefile
 index 52ce439..0eea827 100644
 --- a/drivers/gpu/drm/radeon/Makefile
@@ -15308,7 +15385,7 @@ index 0000000..ac268dd
 +	RADEON_WRITE(AVIVO_DC_LB_MEMORY_SPLIT, dc_lb_memory_split);
 +}
 diff --git a/drivers/gpu/drm/radeon/r300_cmdbuf.c b/drivers/gpu/drm/radeon/r300_cmdbuf.c
-index cb2e470..f4ccfbb 100644
+index cb2e470..66aafd8 100644
 --- a/drivers/gpu/drm/radeon/r300_cmdbuf.c
 +++ b/drivers/gpu/drm/radeon/r300_cmdbuf.c
 @@ -35,6 +35,7 @@
@@ -15406,7 +15483,7 @@ index cb2e470..f4ccfbb 100644
  	} else {
  		ADD_RANGE(R300_PFS_CNTL_0, 3);
  		ADD_RANGE(R300_PFS_NODE_0, 4);
-@@ -274,11 +289,124 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -274,11 +289,127 @@ void r300_init_reg_flags(struct drm_device *dev)
  		ADD_RANGE(R300_PFS_INSTR3_0, 64);
  		ADD_RANGE(R300_RS_INTERP_0, 8);
  		ADD_RANGE(R300_RS_ROUTE_0, 8);
@@ -15436,6 +15513,9 @@ index cb2e470..f4ccfbb 100644
 +	ADD_RANGE_MARK(R300_SC_SCISSOR0, 2, MARK_CHECK_SCISSOR);
  
 +	ADD_RANGE(R300_SC_CLIP_0_A, 2);
++	ADD_RANGE(R300_SC_CLIP_1_A, 2);
++	ADD_RANGE(R300_SC_CLIP_2_A, 2);
++	ADD_RANGE(R300_SC_CLIP_3_A, 2);
 +	ADD_RANGE(R300_SC_CLIP_RULE, 1);
 +	ADD_RANGE(R300_SC_SCREENDOOR, 1);
 +
@@ -15532,7 +15612,7 @@ index cb2e470..f4ccfbb 100644
  {
  	int i;
  	if (reg & ~0xffff)
-@@ -289,6 +417,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
+@@ -289,6 +420,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
  	return 0;
  }
  
@@ -19189,10 +19269,10 @@ index 0000000..5f5a4cb
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
 new file mode 100644
-index 0000000..2696f22
+index 0000000..0fb98cb
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -0,0 +1,600 @@
+@@ -0,0 +1,610 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -19584,6 +19664,7 @@ index 0000000..2696f22
 +	struct drm_connector *connector;
 +	struct radeon_connector *radeon_connector;
 +	struct radeon_connector_atom_dig *radeon_dig_connector;
++	uint32_t subpixel_order = SubPixelNone;
 +
 +	/* fixme - tv/cv/din */
 +	if ((connector_type == DRM_MODE_CONNECTOR_Unknown) ||
@@ -19643,6 +19724,7 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	case DRM_MODE_CONNECTOR_HDMIA:
 +	case DRM_MODE_CONNECTOR_HDMIB:
@@ -19659,6 +19741,7 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	case DRM_MODE_CONNECTOR_DisplayPort:
 +		radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
@@ -19674,6 +19757,7 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	case DRM_MODE_CONNECTOR_SVIDEO:
 +	case DRM_MODE_CONNECTOR_Composite:
@@ -19693,9 +19777,11 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	}
 +
++	connector->display_info.subpixel_order = subpixel_order;
 +	drm_sysfs_connector_add(connector);
 +	return;
 +
@@ -19715,6 +19801,7 @@ index 0000000..2696f22
 +{
 +	struct drm_connector *connector;
 +	struct radeon_connector *radeon_connector;
++	uint32_t subpixel_order = SubPixelNone;
 +
 +	/* fixme - tv/cv/din */
 +	if ((connector_type == DRM_MODE_CONNECTOR_Unknown) ||
@@ -19768,6 +19855,7 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	case DRM_MODE_CONNECTOR_SVIDEO:
 +	case DRM_MODE_CONNECTOR_Composite:
@@ -19781,9 +19869,11 @@ index 0000000..2696f22
 +			if (!radeon_connector->ddc_bus)
 +				goto failed;
 +		}
++		subpixel_order = SubPixelHorizontalRGB;
 +		break;
 +	}
 +
++	connector->display_info.subpixel_order = subpixel_order;
 +	drm_sysfs_connector_add(connector);
 +	return;
 +
@@ -19794,7 +19884,7 @@ index 0000000..2696f22
 +	kfree(connector);
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index 77a7a4d..948cc37 100644
+index 77a7a4d..e074b59 100644
 --- a/drivers/gpu/drm/radeon/radeon_cp.c
 +++ b/drivers/gpu/drm/radeon/radeon_cp.c
 @@ -46,8 +46,12 @@ static void radeon_do_cp_start(drm_radeon_private_t * dev_priv);
@@ -20798,7 +20888,7 @@ index 77a7a4d..948cc37 100644
  	LOCK_TEST_WITH_RETURN(dev, file_priv);
  
  	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R600)
-@@ -2040,6 +2269,822 @@ int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_
+@@ -2040,6 +2269,824 @@ int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_
  	return ret;
  }
  
@@ -21291,7 +21381,6 @@ index 77a7a4d..948cc37 100644
 +	if (dev_priv->chip_family > CHIP_R600)
 +		return 0;
 +
-+	dev_priv->usec_timeout = RADEON_DEFAULT_CP_TIMEOUT;
 +	dev_priv->ring.size = RADEON_DEFAULT_RING_SIZE;
 +	dev_priv->cp_mode = RADEON_CSQ_PRIBM_INDBM;
 +
@@ -21574,6 +21663,9 @@ index 77a7a4d..948cc37 100644
 +
 +	radeon_get_clock_info(dev);
 +
++	/* configure initial usec timeout here */
++	dev_priv->usec_timeout = RADEON_DEFAULT_CP_TIMEOUT;
++
 +	return 0;
 +}
 +
@@ -21621,7 +21713,7 @@ index 77a7a4d..948cc37 100644
  int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  {
  	drm_radeon_private_t *dev_priv;
-@@ -2053,6 +3098,8 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -2053,6 +3100,8 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  	dev->dev_private = (void *)dev_priv;
  	dev_priv->flags = flags;
  
@@ -21630,7 +21722,7 @@ index 77a7a4d..948cc37 100644
  	switch (flags & RADEON_FAMILY_MASK) {
  	case CHIP_R100:
  	case CHIP_RV200:
-@@ -2073,6 +3120,21 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -2073,6 +3122,21 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  		break;
  	}
  
@@ -21652,7 +21744,7 @@ index 77a7a4d..948cc37 100644
  	if (drm_device_is_agp(dev))
  		dev_priv->flags |= RADEON_IS_AGP;
  	else if (drm_device_is_pcie(dev))
-@@ -2080,9 +3142,34 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -2080,9 +3144,34 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  	else
  		dev_priv->flags |= RADEON_IS_PCI;
  
@@ -21688,7 +21780,7 @@ index 77a7a4d..948cc37 100644
  	if (ret != 0)
  		return ret;
  
-@@ -2092,8 +3179,63 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -2092,8 +3181,63 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  		return ret;
  	}
  
@@ -21754,7 +21846,7 @@ index 77a7a4d..948cc37 100644
  	return ret;
  }
  
-@@ -2147,18 +3289,12 @@ void radeon_master_destroy(struct drm_device *dev, struct drm_master *master)
+@@ -2147,18 +3291,12 @@ void radeon_master_destroy(struct drm_device *dev, struct drm_master *master)
   */
  int radeon_driver_firstopen(struct drm_device *dev)
  {
@@ -21776,7 +21868,7 @@ index 77a7a4d..948cc37 100644
  
  	return 0;
  }
-@@ -2167,6 +3303,14 @@ int radeon_driver_unload(struct drm_device *dev)
+@@ -2167,6 +3305,14 @@ int radeon_driver_unload(struct drm_device *dev)
  {
  	drm_radeon_private_t *dev_priv = dev->dev_private;
  
@@ -21791,7 +21883,7 @@ index 77a7a4d..948cc37 100644
  	DRM_DEBUG("\n");
  
  	drm_rmmap(dev, dev_priv->mmio);
-@@ -2214,3 +3358,41 @@ void radeon_commit_ring(drm_radeon_private_t *dev_priv)
+@@ -2214,3 +3360,41 @@ void radeon_commit_ring(drm_radeon_private_t *dev_priv)
  		RADEON_READ(RADEON_CP_RB_RPTR);
  	}
  }
@@ -22795,10 +22887,10 @@ index 0000000..7ddc8fd
 +
 diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
 new file mode 100644
-index 0000000..78f23da
+index 0000000..bb047ec
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_display.c
-@@ -0,0 +1,680 @@
+@@ -0,0 +1,670 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -22933,23 +23025,11 @@ index 0000000..78f23da
 +	if (!crtc->fb)
 +		return;
 +
-+	if (crtc->fb->depth == 16) {
-+		for (i = 0; i < 64; i++) {
-+			if (i <= 31) {
-+				for (j = 0; j < 8; j++) {
-+					radeon_crtc->lut_r[i * 8 + j] = red[i] >> 6;
-+					radeon_crtc->lut_b[i * 8 + j] = blue[i] >> 6;
-+				}
-+			}
-+			for (j = 0; j < 4; j++)
-+				radeon_crtc->lut_g[i * 4 + j] = green[i] >> 6;
-+		}
-+	} else {
-+		for (i = 0; i < 256; i++) {
-+			radeon_crtc->lut_r[i] = red[i] >> 6;
-+			radeon_crtc->lut_g[i] = green[i] >> 6;
-+			radeon_crtc->lut_b[i] = blue[i] >> 6;
-+		}
++	/* copy in the colors from userspace */
++	for (i = 0; i < 256; i++) {
++		radeon_crtc->lut_r[i] = red[i] >> 6;
++		radeon_crtc->lut_g[i] = green[i] >> 6;
++		radeon_crtc->lut_b[i] = blue[i] >> 6;
 +	}
 +
 +	radeon_crtc_load_lut(crtc);
@@ -22959,6 +23039,8 @@ index 0000000..78f23da
 +{
 +	struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
 +
++	if (radeon_crtc->mode_set.mode)
++		drm_mode_destroy(crtc->dev, radeon_crtc->mode_set.mode);
 +	drm_crtc_cleanup(crtc);
 +	kfree(radeon_crtc);
 +}
@@ -26178,10 +26260,10 @@ index 0000000..433ebc9
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
 new file mode 100644
-index 0000000..148ee30
+index 0000000..33edbe8
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_fb.c
-@@ -0,0 +1,928 @@
+@@ -0,0 +1,934 @@
 +/*
 + * Copyright © 2007 David Airlie
 + *
@@ -26896,8 +26978,11 @@ index 0000000..148ee30
 +	par->crtc_ids[0] = crtc->base.id;
 +
 +	modeset->num_connectors = conn_count;
-+	if (modeset->mode != modeset->crtc->desired_mode)
-+		modeset->mode = modeset->crtc->desired_mode;
++	if (modeset->crtc->desired_mode) {
++		if (modeset->mode)
++			drm_mode_destroy(dev, modeset->mode);
++		modeset->mode = drm_mode_duplicate(dev, modeset->crtc->desired_mode);
++	}
 +
 +	par->crtc_count = 1;
 +
@@ -27024,8 +27109,11 @@ index 0000000..148ee30
 +		par->crtc_ids[crtc_count++] = crtc->base.id;
 +
 +		modeset->num_connectors = conn_count;
-+		if (modeset->mode != modeset->crtc->desired_mode)
-+			modeset->mode = modeset->crtc->desired_mode;
++		if (modeset->crtc->desired_mode) {
++			if (modeset->mode)
++				drm_mode_destroy(dev, modeset->mode);
++			modeset->mode = drm_mode_duplicate(dev, modeset->crtc->desired_mode);
++		}
 +	}
 +	par->crtc_count = crtc_count;
 +
@@ -27276,10 +27364,10 @@ index 0000000..504290b
 +#endif
 diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
 new file mode 100644
-index 0000000..a0b0f5b
+index 0000000..cb96470
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -0,0 +1,1604 @@
+@@ -0,0 +1,1578 @@
 +/*
 + * Copyright 2008 Red Hat Inc.
 + *
@@ -28728,38 +28816,12 @@ index 0000000..a0b0f5b
 +static int radeon_gem_relocate(struct drm_radeon_cs_parser *parser,
 +			       uint32_t *reloc, uint32_t *offset)
 +{
-+	struct drm_device *dev = parser->dev;
 +	/* relocate the handle */
-+	uint32_t read_domains, write_domain;
-+	struct drm_gem_object *obj;
-+	int ret = 0;
-+	struct drm_radeon_gem_object *obj_priv;
-+
-+	if (parser->reloc_index == -1) {
-+		obj = drm_gem_object_lookup(dev, parser->file_priv, reloc[1]);
-+		if (!obj)
-+			return -EINVAL;
-+		obj_priv = obj->driver_private;
-+		if (obj_priv->bo->mem.flags & DRM_BO_FLAG_CLEAN)
-+			DRM_ERROR("clean on relocate for %d\n", reloc[1]);
-+		read_domains = reloc[2];
-+		write_domain = reloc[3];
-+
-+		ret = radeon_gem_do_relocate(obj, read_domains, write_domain, offset);
-+
-+		mutex_lock(&dev->struct_mutex);
-+		drm_gem_object_unreference(obj);
-+		mutex_unlock(&dev->struct_mutex);
-+
-+	} else {
-+		uint32_t handle;
-+		/* have to lookup handle in other chunk */
-+		ret = radeon_gem_find_reloc(parser, reloc[1], &handle, offset);
-+	}
-+	return ret;
++	uint32_t handle;
++	/* have to lookup handle in other chunk */
++	return radeon_gem_find_reloc(parser, reloc[1], &handle, offset);
 +}
 +
-+
 +int radeon_gem_prelocate(struct drm_radeon_cs_parser *parser)
 +{
 +	struct drm_device *dev = parser->dev;
@@ -32316,10 +32378,10 @@ index 4af5286..40134c8 100644
  
 diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
 new file mode 100644
-index 0000000..a1aff31
+index 0000000..71eaaeb
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_mode.h
-@@ -0,0 +1,399 @@
+@@ -0,0 +1,398 @@
 +/*
 + * Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
 + *                VA Linux Systems Inc., Fremont, California.
@@ -32602,7 +32664,6 @@ index 0000000..a1aff31
 +extern void radeon_i2c_destroy(struct radeon_i2c_chan *i2c);
 +extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector);
 +extern int radeon_ddc_get_modes(struct radeon_connector *radeon_connector);
-+extern struct drm_connector *radeon_connector_add(struct drm_device *dev, int bios_index);
 +
 +extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector);
 +
@@ -32990,10 +33051,10 @@ index 0000000..5a57056
 +
 diff --git a/drivers/gpu/drm/radeon/radeon_reg.h b/drivers/gpu/drm/radeon/radeon_reg.h
 new file mode 100644
-index 0000000..1a5e157
+index 0000000..102bdba
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_reg.h
-@@ -0,0 +1,5361 @@
+@@ -0,0 +1,5364 @@
 +/*
 + * Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
 + *                VA Linux Systems Inc., Fremont, California.
@@ -37837,6 +37898,9 @@ index 0000000..1a5e157
 +#define R300_SC_CLIP_0_B				0x43b4
 +#       define R300_CLIP_X_SHIFT                        0
 +#       define R300_CLIP_Y_SHIFT                        13
++#define R300_SC_CLIP_1_A				0x43b8
++#define R300_SC_CLIP_2_A				0x43c0
++#define R300_SC_CLIP_3_A				0x43c8
 +#define R300_SC_CLIP_RULE				0x43d0
 +#define R300_SC_SCREENDOOR				0x43e8
 +
@@ -38761,18 +38825,9 @@ index c8c4221..04fbd1e 100644
  
  #endif				/* __KERNEL__ */
 diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
-index ec073d8..86a8a87 100644
+index ec073d8..32ac55d 100644
 --- a/include/drm/drm_crtc_helper.h
 +++ b/include/drm/drm_crtc_helper.h
-@@ -96,7 +96,7 @@ extern int drm_crtc_helper_set_config(struct drm_mode_set *set);
- extern bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
- 				     struct drm_display_mode *mode,
- 				     int x, int y,
--				     struct drm_framebuffer *old_fb);
-+				     struct drm_framebuffer *old_fb, int conn_changed);
- extern bool drm_helper_crtc_in_use(struct drm_crtc *crtc);
- 
- extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
 @@ -121,4 +121,6 @@ static inline void drm_connector_helper_add(struct drm_connector *connector,
  }
  

drm-next.patch:

Index: drm-next.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-next.patch,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -p -r1.15 -r1.16
--- drm-next.patch	1 May 2009 18:41:25 -0000	1.15
+++ drm-next.patch	5 May 2009 10:28:11 -0000	1.16
@@ -7112,15 +7112,6 @@ index b05cb67..0ab2d3a 100644
  }
  
  static void
-@@ -1600,7 +1612,7 @@ intel_tv_set_property(struct drm_connector *connector, struct drm_property *prop
- 
- 	if (changed && crtc)
- 		drm_crtc_helper_set_mode(crtc, &crtc->mode, crtc->x,
--				crtc->y, crtc->fb);
-+				crtc->y, crtc->fb, 0);
- out:
- 	return ret;
- }
 diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
 index b49c5ff..7a6bf9f 100644
 --- a/drivers/gpu/drm/mga/mga_dma.c

drm-nouveau.patch:

Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-nouveau.patch,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -p -r1.46 -r1.47
--- drm-nouveau.patch	4 May 2009 22:47:47 -0000	1.46
+++ drm-nouveau.patch	5 May 2009 10:28:11 -0000	1.47
@@ -24059,7 +24059,7 @@ index 0000000..771c7ab
 +			rval = drm_crtc_helper_set_mode(&crtc->base,
 +							&crtc->base.mode,
 +							crtc->base.x,
-+							crtc->base.y, NULL, 0);
++							crtc->base.y, NULL);
 +			if (rval)
 +				return rval;
 +		} else {


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1589
retrieving revision 1.1590
diff -u -p -r1.1589 -r1.1590
--- kernel.spec	4 May 2009 22:44:11 -0000	1.1589
+++ kernel.spec	5 May 2009 10:28:13 -0000	1.1590
@@ -692,7 +692,6 @@ Patch1823: drm-intel-tiled-front.patch
 Patch1824: drm-intel-hdmi-edid-fix.patch
 Patch1825: drm-intel-tiling-transition.patch
 Patch1826: linux-2.6-drm-r128-ioremap.patch
-Patch1827: drm-radeon-kms-fixes.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1344,7 +1343,6 @@ ApplyPatch drm-intel-tiled-front.patch
 ApplyPatch drm-intel-hdmi-edid-fix.patch
 ApplyPatch drm-intel-tiling-transition.patch
 ApplyPatch linux-2.6-drm-r128-ioremap.patch
-ApplyPatch drm-radeon-kms-fixes.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1967,6 +1965,9 @@ fi
 # and build.
 
 %changelog
+* Tue May 05 2009 Dave Airlie <airlied at redhat.com> 2.6.29.2-128
+- radeon kms: backport some fixes - put back old internal interface
+
 * Tue May 05 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.29.2-127
 - drm-nouveau.patch: bump dac load detection delay to match ddx
 


--- drm-radeon-kms-fixes.patch DELETED ---




More information about the scm-commits mailing list