rpms/kernel/devel drm-modesetting-radeon.patch, 1.36, 1.37 kernel.spec, 1.1052, 1.1053

Dave Airlie airlied at fedoraproject.org
Thu Oct 16 06:35:11 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv12797

Modified Files:
	drm-modesetting-radeon.patch kernel.spec 
Log Message:
- radeon-modesetting - fix rs48x


drm-modesetting-radeon.patch:

Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- drm-modesetting-radeon.patch	15 Oct 2008 05:14:24 -0000	1.36
+++ drm-modesetting-radeon.patch	16 Oct 2008 06:35:09 -0000	1.37
@@ -1,10 +1,28 @@
-commit 5bbb48ef3cf9d2886dec4cf8506560bf1c0eeae3
+commit a8d1121ef350f48a88dc4b5830d3fedcc86aaaab
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Oct 16 16:29:08 2008 +1000
+
+    radeon: fix small typo in agp code
+
+commit 068d1a6e3523584476cd01e7447de63538ff51e3
+Author: Dave Airlie <airlied at panoply-rh.(none)>
+Date:   Thu Oct 16 16:17:01 2008 +1000
+
+    radeon: workaround failure to parse some rs48x edid
+
+commit fdced11a334aa933a284cb3bb4062bb2bfb9b976
+Author: Dave Airlie <airlied at panoply-rh.(none)>
+Date:   Thu Oct 16 16:15:08 2008 +1000
+
+    radeon: don't enable dynclks on rs48x
+
+commit b4c0125eef83accaa5940724dd039bfdb97d4631
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Oct 15 15:12:20 2008 +1000
 
     radeon: allow r100/r200 modesetting to be forced on by users
 
-commit b7d5b8a9bf2b5ad059e03f228e7656c1bac6a417
+commit c48d4d72ebb5d9c29cdb46bead02bb3943194c6e
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Oct 15 15:06:58 2008 +1000
 
@@ -12,7 +30,7 @@
     
     This reverts commit 616950d57d97b4ee4cf8e54be7ae64d1837bbf48.
 
-commit 339b030664112ac72fa9375753acb0f663b1ce54
+commit 1060fcfe553cfe252b0c7d690b95b9253a0ade7e
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Oct 15 15:06:46 2008 +1000
 
@@ -20,6 +38,18 @@
     
     This reverts commit 7d4742a79c29febe41d9ddd94831de0f1e1ecbbd.
 
+commit 0d707528d36e39bf56e0790afdd0bd4b5756bc18
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Oct 16 22:06:00 2008 +1000
+
+    radeon: fix unused agp functionality
+
+commit 235069a7d43dafa58c3c7b988c5cb3293d6cecea
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Oct 16 22:05:02 2008 +1000
+
+    radeon: add some more r100 support to test AGP
+
 commit d4df0f3b862429ab80afc93255164a5d087ce6a3
 Author: airlied <airlied at redhat.com>
 Date:   Wed Oct 15 23:58:03 2008 +1000
@@ -19535,7 +19565,7 @@
 +	drm_crtc_helper_add(&radeon_crtc->base, &atombios_helper_funcs);
 +}
 diff --git a/drivers/gpu/drm/radeon/r300_cmdbuf.c b/drivers/gpu/drm/radeon/r300_cmdbuf.c
-index 4b27d9a..0269767 100644
+index 4b27d9a..1e78d84 100644
 --- a/drivers/gpu/drm/radeon/r300_cmdbuf.c
 +++ b/drivers/gpu/drm/radeon/r300_cmdbuf.c
 @@ -35,6 +35,7 @@
@@ -19613,7 +19643,7 @@
  	} else {
  		ADD_RANGE(R300_PFS_CNTL_0, 3);
  		ADD_RANGE(R300_PFS_NODE_0, 4);
-@@ -269,9 +276,109 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -269,9 +276,112 @@ void r300_init_reg_flags(struct drm_device *dev)
  		ADD_RANGE(R300_RS_ROUTE_0, 8);
  
  	}
@@ -19699,6 +19729,9 @@
 +
 +		} else {
 +
++			ADD_RANGE(RADEON_SE_COORD_FMT, 1);
++			ADD_RANGE(RADEON_SE_CNTL_STATUS, 1);
++
 +			ADD_RANGE(RADEON_PP_TXFILTER_0, 1);
 +			ADD_RANGE(RADEON_PP_TXFORMAT_0, 1);
 +			ADD_RANGE(RADEON_PP_TEX_SIZE_0, 1);
@@ -19724,7 +19757,7 @@
  {
  	int i;
  	if (reg & ~0xffff)
-@@ -282,6 +389,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
+@@ -282,6 +392,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
  	return 0;
  }
  
@@ -19738,7 +19771,7 @@
  static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t *
  							  dev_priv,
  							  drm_radeon_kcmd_buffer_t
-@@ -860,12 +974,12 @@ static __inline__ void r300_pacify(drm_radeon_private_t *dev_priv)
+@@ -860,12 +977,12 @@ static __inline__ void r300_pacify(drm_radeon_private_t *dev_priv)
   * The actual age emit is done by r300_do_cp_cmdbuf, which is why you must
   * be careful about how this function is called.
   */
@@ -19754,7 +19787,7 @@
  	buf->pending = 1;
  	buf->used = 0;
  }
-@@ -1027,6 +1141,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1027,6 +1144,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
  		      drm_radeon_kcmd_buffer_t *cmdbuf)
  {
  	drm_radeon_private_t *dev_priv = dev->dev_private;
@@ -19762,7 +19795,7 @@
  	struct drm_device_dma *dma = dev->dma;
  	struct drm_buf *buf = NULL;
  	int emit_dispatch_age = 0;
-@@ -1134,7 +1249,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1134,7 +1252,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
  			}
  
  			emit_dispatch_age = 1;
@@ -19771,7 +19804,7 @@
  			break;
  
  		case R300_CMD_WAIT:
-@@ -1189,7 +1304,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1189,7 +1307,7 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
  
  		/* Emit the vertex buffer age */
  		BEGIN_RING(2);
@@ -22662,10 +22695,10 @@
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
 new file mode 100644
-index 0000000..f217fe7
+index 0000000..8de2199
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -0,0 +1,367 @@
+@@ -0,0 +1,371 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -22755,19 +22788,23 @@
 +
 +	if (radeon_connector->ddc_bus) {
 +		radeon_i2c_do_lock(radeon_connector, 1);
-+		edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
++		edid = drm_get_edid(connector, &radeon_connector->ddc_bus->adapter);
 +		radeon_i2c_do_lock(radeon_connector, 0);
 +		if (edid) {
 +			drm_mode_connector_update_edid_property(&radeon_connector->base, edid);
 +			ret = drm_add_edid_modes(&radeon_connector->base, edid);
 +			kfree(edid);
++			if (ret == 0)
++				goto native;
 +			return ret;
 +		}
 +	}
 +
++native:
 +	encoder = radeon_best_single_encoder(connector);
 +	if (!encoder)
-+		return connector_status_disconnected;
++		return 0;
++
 +	/* we have no EDID modes */
 +	mode = radeon_fp_native_mode(encoder);
 +	if (mode) {
@@ -23034,7 +23071,7 @@
 +	return NULL;
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index 6157cd4..d81eb0c 100644
+index 6157cd4..c42cb7f 100644
 --- a/drivers/gpu/drm/radeon/radeon_cp.c
 +++ b/drivers/gpu/drm/radeon/radeon_cp.c
 @@ -31,6 +31,7 @@
@@ -23095,7 +23132,7 @@
 +		*agp_lo = RADEON_READ(R600_MC_VM_AGP_BOT);
 +		*agp_hi = RADEON_READ(R600_MC_VM_AGP_TOP);
 +	} else if (dev_priv->chip_family == CHIP_RV515) {
-+		*agp_lo = radeon_read_mc_reg(dev_priv, RV515_MC_FB_LOCATION);
++		*agp_lo = radeon_read_mc_reg(dev_priv, RV515_MC_AGP_LOCATION);
 +		*agp_hi = 0;
 +	} else if (dev_priv->chip_family == CHIP_RS600) {
 +		*agp_lo = 0;
@@ -23108,7 +23145,7 @@
 +		*agp_lo = radeon_read_mc_reg(dev_priv, R520_MC_AGP_LOCATION);
 +		*agp_hi = 0;
 +	} else {
-+		*agp_lo = RADEON_READ(RADEON_MC_FB_LOCATION);
++		*agp_lo = RADEON_READ(RADEON_MC_AGP_LOCATION);
 +		*agp_hi = 0;
 +	}
 +}
@@ -23810,7 +23847,7 @@
  	LOCK_TEST_WITH_RETURN(dev, file_priv);
  
  	return radeon_do_engine_reset(dev);
-@@ -1689,6 +1882,697 @@ int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_
+@@ -1689,6 +1882,701 @@ int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_
  	return ret;
  }
  
@@ -24370,7 +24407,7 @@
 +	}
 +
 +	/* workaround some hw issues */
-+	if (dev_priv->chip_family <= CHIP_R200) {
++	if (dev_priv->chip_family < CHIP_R200) {
 +		RADEON_WRITE(RADEON_AGP_CNTL, RADEON_READ(RADEON_AGP_CNTL) | 0x000e0000);
 +	}
 +	return 0;
@@ -24493,6 +24530,10 @@
 +{
 +	drm_radeon_private_t *dev_priv = dev->dev_private;
 +
++	if (dev_priv->chip_family == CHIP_RS400 ||
++	    dev_priv->chip_family == CHIP_RS480)
++		radeon_dynclks = 0;
++
 +	if ((dev_priv->flags & RADEON_IS_MOBILITY) && !radeon_is_avivo(dev_priv)) {
 +		radeon_set_dynamic_clock(dev, radeon_dynclks);
 +	} else if (radeon_is_avivo(dev_priv)) {
@@ -24508,7 +24549,7 @@
  int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  {
  	drm_radeon_private_t *dev_priv;
-@@ -1702,6 +2586,8 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -1702,6 +2590,8 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  	dev->dev_private = (void *)dev_priv;
  	dev_priv->flags = flags;
  
@@ -24517,7 +24558,7 @@
  	switch (flags & RADEON_FAMILY_MASK) {
  	case CHIP_R100:
  	case CHIP_RV200:
-@@ -1721,18 +2607,132 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -1721,6 +2611,14 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
  		break;
  	}
  
@@ -24532,11 +24573,8 @@
  	if (drm_device_is_agp(dev))
  		dev_priv->flags |= RADEON_IS_AGP;
  	else if (drm_device_is_pcie(dev))
- 		dev_priv->flags |= RADEON_IS_PCIE;
- 	else
- 		dev_priv->flags |= RADEON_IS_PCI;
--
-+	    
+@@ -1730,9 +2628,115 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+ 
  	DRM_DEBUG("%s card detected\n",
  		  ((dev_priv->flags & RADEON_IS_AGP) ? "AGP" : (((dev_priv->flags & RADEON_IS_PCIE) ? "PCIE" : "PCI"))));
 +
@@ -24651,7 +24689,7 @@
  /* Create mappings for registers and framebuffer so userland doesn't necessarily
   * have to find them.
   */
-@@ -1744,19 +2744,6 @@ int radeon_driver_firstopen(struct drm_device *dev)
+@@ -1744,19 +2748,6 @@ int radeon_driver_firstopen(struct drm_device *dev)
  
  	dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
  
@@ -24671,7 +24709,7 @@
  	return 0;
  }
  
-@@ -1764,9 +2751,40 @@ int radeon_driver_unload(struct drm_device *dev)
+@@ -1764,9 +2755,40 @@ int radeon_driver_unload(struct drm_device *dev)
  {
  	drm_radeon_private_t *dev_priv = dev->dev_private;
  
@@ -24714,10 +24752,10 @@
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
 new file mode 100644
-index 0000000..6b2e09a
+index 0000000..5c7b2a5
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_cs.c
-@@ -0,0 +1,422 @@
+@@ -0,0 +1,399 @@
 +/*
 + * Copyright 2008 Jerome Glisse.
 + * All Rights Reserved.
@@ -24844,7 +24882,7 @@
 +	/* this is too strict we may want to expand the length in the future and have
 +	 old kernels ignore it. */ 
 +	if (packet3_hdr != (RADEON_CP_PACKET3 | RADEON_CP_NOP | (RELOC_SIZE << 16))) {
-+		DRM_ERROR("Packet 3 was %x should have been %x\n", packet3_hdr, RADEON_CP_PACKET3 | RADEON_CP_NOP | (RELOC_SIZE << 16));
++		DRM_ERROR("Packet 3 was %x should have been %x: reg is %x\n", packet3_hdr, RADEON_CP_PACKET3 | RADEON_CP_NOP | (RELOC_SIZE << 16), reg);
 +		return -EINVAL;
 +	}
 +	
@@ -24918,30 +24956,6 @@
 +	return 0;
 +}
 +
-+static __inline__ int radeon_cs_check_offset(struct drm_device *dev,
-+					     uint32_t reg, uint32_t val)
-+{
-+	uint32_t offset;
-+
-+	switch(reg) {
-+	case RADEON_DST_PITCH_OFFSET:
-+	case RADEON_SRC_PITCH_OFFSET:
-+		offset = val & ((1 << 22) - 1);
-+		offset <<= 10;
-+		break;
-+	case R300_RB3D_COLOROFFSET0:
-+	case R300_RB3D_DEPTHOFFSET:
-+		offset = val;
-+		break;
-+	case R300_TX_OFFSET_0:
-+	case R300_TX_OFFSET_0+4:
-+		offset = val & 0xffffffe0;
-+		break;
-+	}
-+	
-+	return 0;
-+}
-+
 +int radeon_cs_packet0(struct drm_device *dev, struct drm_file *file_priv,
 +		      uint32_t *packets, uint32_t offset_dw)
 +{
@@ -25033,6 +25047,7 @@
 +				DRM_ERROR("need relocate packet 3 for %x\n", reg);
 +				break;
 +
++			case RADEON_3D_DRAW_IMMD:	/* triggers drawing using in-packet vertex data */
 +			case RADEON_CP_3D_DRAW_IMMD_2:	/* triggers drawing using in-packet vertex data */
 +			case RADEON_CP_3D_DRAW_VBUF_2:	/* triggers drawing of vertex buffers setup elsewhere */
 +			case RADEON_CP_3D_DRAW_INDX_2:	/* triggers drawing using indices to vertex buffer */


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1052
retrieving revision 1.1053
diff -u -r1.1052 -r1.1053
--- kernel.spec	15 Oct 2008 23:10:22 -0000	1.1052
+++ kernel.spec	16 Oct 2008 06:35:10 -0000	1.1053
@@ -1822,6 +1822,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Wed Oct 15 2008 Dave Airlie <airlied at redhat.com>
+- radeon-modesetting - fix rs48x
+
 * Wed Oct 15 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.27-16
 - Disable FTRACE; DYNAMIC_FTRACE will be marked broken in 2.6.27.1
   (without dynamic ftrace the overhead is noticeable.)




More information about the scm-commits mailing list