rpms/kernel/devel kernel.spec, 1.489, 1.490 linux-2.6-drm-i915-modeset.patch, 1.2, 1.3

Dave Airlie (airlied) fedora-extras-commits at redhat.com
Tue Mar 11 05:15:10 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20746

Modified Files:
	kernel.spec linux-2.6-drm-i915-modeset.patch 
Log Message:
* Tue Mar 11 2008 Dave Airlie <airlied at redhat.com>
- fix i965 cursor support in drm modesetting



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.489
retrieving revision 1.490
diff -u -r1.489 -r1.490
--- kernel.spec	11 Mar 2008 00:40:59 -0000	1.489
+++ kernel.spec	11 Mar 2008 05:14:35 -0000	1.490
@@ -1751,6 +1751,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Tue Mar 11 2008 Dave Airlie <airlied at redhat.com>
+- fix i965 cursor support in drm modesetting
+
 * Mon Mar 10 2008 John W. Linville <linville at redhat.com>
 - Use correct "Dual BSD/GPL" license tag for iwlcore.ko
 

linux-2.6-drm-i915-modeset.patch:

Index: linux-2.6-drm-i915-modeset.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-drm-i915-modeset.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-drm-i915-modeset.patch	7 Mar 2008 07:03:34 -0000	1.2
+++ linux-2.6-drm-i915-modeset.patch	11 Mar 2008 05:14:35 -0000	1.3
@@ -7830,7 +7830,7 @@
  }
  
 diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h
-index 0ec2447..e7b27c5 100644
+index 0ec2447..9e4631a 100644
 --- a/drivers/char/drm/i915_drv.h
 +++ b/drivers/char/drm/i915_drv.h
 @@ -60,7 +60,7 @@
@@ -7872,16 +7872,18 @@
  	void *hw_status_page;
  	dma_addr_t dma_status_page;
  	uint32_t counter;
-@@ -120,6 +129,8 @@ typedef struct drm_i915_private {
+@@ -120,6 +129,10 @@ typedef struct drm_i915_private {
  	uint32_t irq_enable_reg;
  	int irq_enabled;
  
 +	struct workqueue_struct *wq;
 +
++	bool cursor_needs_physical;
++
  	uint32_t flush_sequence;
  	uint32_t flush_flags;
  	uint32_t flush_pending;
-@@ -127,11 +138,17 @@ typedef struct drm_i915_private {
+@@ -127,11 +140,17 @@ typedef struct drm_i915_private {
  	void *agp_iomap;
  	unsigned int max_validate_buffers;
  	struct mutex cmdbuf_mutex;
@@ -7899,7 +7901,7 @@
  	/* DRI2 sarea */
  	struct drm_buffer_object *sarea_bo;
  	struct drm_bo_kmap_obj sarea_kmap;
-@@ -222,16 +239,25 @@ typedef struct drm_i915_private {
+@@ -222,16 +241,25 @@ typedef struct drm_i915_private {
  	u8 saveDACMASK;
  	u8 saveDACDATA[256*3]; /* 256 3-byte colors */
  	u8 saveCR[36];
@@ -7926,7 +7928,7 @@
  extern void i915_driver_preclose(struct drm_device *dev,
  				 struct drm_file *file_priv);
  extern int i915_driver_device_is_agp(struct drm_device * dev);
-@@ -240,8 +266,7 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd,
+@@ -240,8 +268,7 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd,
  extern void i915_emit_breadcrumb(struct drm_device *dev);
  extern void i915_dispatch_flip(struct drm_device * dev, int pipes, int sync);
  extern int i915_emit_mi_flush(struct drm_device *dev, uint32_t flush);
@@ -7936,7 +7938,7 @@
  /* i915_irq.c */
  extern int i915_irq_emit(struct drm_device *dev, void *data,
  			 struct drm_file *file_priv);
-@@ -259,11 +284,11 @@ extern int i915_vblank_pipe_set(struct drm_device *dev, void *data,
+@@ -259,11 +286,11 @@ extern int i915_vblank_pipe_set(struct drm_device *dev, void *data,
  extern int i915_vblank_pipe_get(struct drm_device *dev, void *data,
  				struct drm_file *file_priv);
  extern int i915_emit_irq(struct drm_device *dev);
@@ -7951,7 +7953,7 @@
  /* i915_mem.c */
  extern int i915_mem_alloc(struct drm_device *dev, void *data,
  			  struct drm_file *file_priv);
-@@ -296,6 +321,10 @@ void i915_flush_ttm(struct drm_ttm *ttm);
+@@ -296,6 +323,10 @@ void i915_flush_ttm(struct drm_ttm *ttm);
  extern void intel_init_chipset_flush_compat(struct drm_device *dev);
  extern void intel_fini_chipset_flush_compat(struct drm_device *dev);
  
@@ -7962,7 +7964,7 @@
  #define I915_READ(reg)          DRM_READ32(dev_priv->mmio_map, (reg))
  #define I915_WRITE(reg,val)     DRM_WRITE32(dev_priv->mmio_map, (reg), (val))
  #define I915_READ16(reg)	DRM_READ16(dev_priv->mmio_map, (reg))
-@@ -332,8 +361,31 @@ extern void intel_fini_chipset_flush_compat(struct drm_device *dev);
+@@ -332,8 +363,31 @@ extern void intel_fini_chipset_flush_compat(struct drm_device *dev);
  	I915_WRITE(LP_RING + RING_TAIL, outring);			\
  } while(0)
  
@@ -7994,7 +7996,7 @@
  /* Extended config space */
  #define LBB 0xf4
  
-@@ -400,6 +452,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -400,6 +454,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  #define BB1_UNPROTECTED       (0<<0)
  #define BB2_END_ADDR_MASK     (~0x7)
  
@@ -8003,7 +8005,7 @@
  /* Framebuffer compression */
  #define FBC_CFB_BASE		0x03200 /* 4k page aligned */
  #define FBC_LL_BASE		0x03204 /* 4k page aligned */
-@@ -444,12 +498,102 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -444,12 +500,102 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  #define I915REG_INT_ENABLE_R	0x020a0
  #define I915REG_INSTPM	        0x020c0
  
@@ -8106,7 +8108,7 @@
  #define SRX_INDEX		0x3c4
  #define SRX_DATA		0x3c5
  #define SR01			1
-@@ -458,6 +602,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -458,6 +604,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  #define PPCR			0x61204
  #define PPCR_ON			(1<<0)
  
@@ -8115,7 +8117,7 @@
  #define DVOB			0x61140
  #define DVOB_ON			(1<<31)
  #define DVOC			0x61160
-@@ -619,8 +765,14 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -619,8 +767,14 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  
  #define SRC_COPY_BLT_CMD                ((2<<29)|(0x43<<22)|4)
  #define XY_SRC_COPY_BLT_CMD		((2<<29)|(0x53<<22)|6)
@@ -8130,7 +8132,7 @@
  
  #define MI_BATCH_BUFFER		((0x30<<23)|1)
  #define MI_BATCH_BUFFER_START	(0x31<<23)
-@@ -739,6 +891,14 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -739,6 +893,14 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  #define BCLRPAT_B	0x61020
  #define VSYNCSHIFT_B	0x61028
  
@@ -8145,7 +8147,7 @@
  #define PP_STATUS	0x61200
  # define PP_ON					(1 << 31)
  /**
-@@ -1011,6 +1171,579 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -1011,6 +1173,579 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  # define LVDS_B0B3_POWER_DOWN		(0 << 2)
  # define LVDS_B0B3_POWER_UP		(3 << 2)
  
@@ -8725,7 +8727,7 @@
  #define PIPEACONF 0x70008
  #define PIPEACONF_ENABLE	(1<<31)
  #define PIPEACONF_DISABLE	0
-@@ -1102,13 +1835,17 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -1102,13 +1837,17 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
   */
  
  #define SWF0			0x71410
@@ -8780,10 +8782,10 @@
  	int ret;
 diff --git a/drivers/char/drm/i915_init.c b/drivers/char/drm/i915_init.c
 new file mode 100644
-index 0000000..b82a46b
+index 0000000..c59067a
 --- /dev/null
 +++ b/drivers/char/drm/i915_init.c
-@@ -0,0 +1,401 @@
+@@ -0,0 +1,409 @@
 +/*
 + * Copyright (c) 2007 Intel Corporation
 + *   Jesse Barnes <jesse.barnes at intel.com>
@@ -8916,6 +8918,14 @@
 +	dev->types[8] = _DRM_STAT_SECONDARY;
 +	dev->types[9] = _DRM_STAT_DMA;
 +
++	if (IS_MOBILE(dev) || IS_I9XX(dev))
++		dev_priv->cursor_needs_physical = true;
++	else
++		dev_priv->cursor_needs_physical = false;
++
++	if (IS_I965G(dev) || IS_G33(dev))
++		dev_priv->cursor_needs_physical = false;
++
 +	if (IS_I9XX(dev)) {
 +		pci_read_config_dword(dev->pdev, 0x5C, &dev_priv->stolen_base);
 +		DRM_DEBUG("stolen base %p\n", (void*)dev_priv->stolen_base);
@@ -9801,10 +9811,10 @@
 +}
 diff --git a/drivers/char/drm/intel_display.c b/drivers/char/drm/intel_display.c
 new file mode 100644
-index 0000000..4b48a0b
+index 0000000..fa2b9be
 --- /dev/null
 +++ b/drivers/char/drm/intel_display.c
-@@ -0,0 +1,1366 @@
+@@ -0,0 +1,1370 @@
 +/*
 + * Copyright © 2006-2007 Intel Corporation
 + *
@@ -10814,7 +10824,7 @@
 +	uint32_t control = (pipe == 0) ? CURSOR_A_CONTROL : CURSOR_B_CONTROL;
 +	uint32_t base = (pipe == 0) ? CURSOR_A_BASE : CURSOR_B_BASE;
 +	uint32_t temp;
-+	size_t adder;
++	size_t addr;
 +
 +	DRM_DEBUG("\n");
 +
@@ -10846,17 +10856,21 @@
 +		return -ENOMEM;
 +	}
 +
-+	adder = dev_priv->stolen_base + bo->offset;
-+	intel_crtc->cursor_adder = adder;
++	if (dev_priv->cursor_needs_physical)
++		addr = dev_priv->stolen_base + bo->offset;
++	else
++		addr = bo->offset;
++
++	intel_crtc->cursor_addr = addr;
 +	temp = 0;
 +	/* set the pipe for the cursor */
 +	temp |= (pipe << 28);
 +	temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
 +
-+	DRM_DEBUG("cusror base %x\n", adder);
++	DRM_DEBUG("cusror base %x\n", addr);
 +
 +	I915_WRITE(control, temp);
-+	I915_WRITE(base, adder);
++	I915_WRITE(base, addr);
 +
 +	return 0;
 +}
@@ -10882,7 +10896,7 @@
 +	temp |= ((x & CURSOR_POS_MASK) << CURSOR_X_SHIFT);
 +	temp |= ((y & CURSOR_POS_MASK) << CURSOR_Y_SHIFT);
 +
-+	adder = intel_crtc->cursor_adder;
++	adder = intel_crtc->cursor_addr;
 +	I915_WRITE((pipe == 0) ? CURSOR_A_POSITION : CURSOR_B_POSITION, temp);
 +	I915_WRITE((pipe == 0) ? CURSOR_A_BASE : CURSOR_B_BASE, adder);
 +
@@ -11048,7 +11062,7 @@
 +		intel_crtc->lut_b[i] = i;
 +	}
 +
-+	intel_crtc->cursor_adder = 0;
++	intel_crtc->cursor_addr = 0;
 +
 +	crtc->driver_private = intel_crtc;
 +}
@@ -11173,7 +11187,7 @@
 +}
 diff --git a/drivers/char/drm/intel_drv.h b/drivers/char/drm/intel_drv.h
 new file mode 100644
-index 0000000..72ba01d
+index 0000000..a36fd3f
 --- /dev/null
 +++ b/drivers/char/drm/intel_drv.h
 @@ -0,0 +1,89 @@
@@ -11235,7 +11249,7 @@
 +struct intel_crtc {
 +	int pipe;
 +	int plane;
-+	uint32_t cursor_adder;
++	uint32_t cursor_addr;
 +	u8 lut_r[256], lut_g[256], lut_b[256];
 +};
 +




More information about the fedora-extras-commits mailing list