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