summaryrefslogtreecommitdiff
path: root/meta-moblin
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2009-02-25 14:05:59 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2009-02-25 14:05:59 +0000
commit00dccf496e975e814d44ded7f43d29e7ea1b6126 (patch)
tree3f3bf6b3862b2c655b01afc2fa5248a7988e6fc1 /meta-moblin
parent440ac105bd8c5005180b23aaf0b005f25be71ccf (diff)
downloadopenembedded-core-00dccf496e975e814d44ded7f43d29e7ea1b6126.tar.gz
openembedded-core-00dccf496e975e814d44ded7f43d29e7ea1b6126.tar.bz2
openembedded-core-00dccf496e975e814d44ded7f43d29e7ea1b6126.zip
linux-moblin: Update psb driver
Diffstat (limited to 'meta-moblin')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.28+2.6.29-rc2/i915_split.patch1627
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.28+2.6.29-rc2/psb-driver.patch2767
-rw-r--r--meta-moblin/packages/linux/linux-moblin_2.6.28+2.6.29-rc2.bb2
3 files changed, 2113 insertions, 2283 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.28+2.6.29-rc2/i915_split.patch b/meta-moblin/packages/linux/linux-moblin-2.6.28+2.6.29-rc2/i915_split.patch
new file mode 100644
index 0000000000..1841a681d2
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.28+2.6.29-rc2/i915_split.patch
@@ -0,0 +1,1627 @@
+Index: linux-2.6.28/drivers/gpu/drm/i915/intel_tv.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/intel_tv.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/intel_tv.c 2009-02-19 12:59:28.000000000 +0000
+@@ -902,7 +902,7 @@
+ intel_tv_dpms(struct drm_encoder *encoder, int mode)
+ {
+ struct drm_device *dev = encoder->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ switch(mode) {
+ case DRM_MODE_DPMS_ON:
+@@ -920,7 +920,7 @@
+ intel_tv_save(struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_tv_priv *tv_priv = intel_output->dev_priv;
+ int i;
+@@ -970,7 +970,7 @@
+ intel_tv_restore(struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_tv_priv *tv_priv = intel_output->dev_priv;
+ struct drm_crtc *crtc = connector->encoder->crtc;
+@@ -1117,7 +1117,7 @@
+ struct drm_display_mode *adjusted_mode)
+ {
+ struct drm_device *dev = encoder->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_crtc *crtc = encoder->crtc;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_output *intel_output = enc_to_intel_output(encoder);
+@@ -1362,6 +1362,7 @@
+ struct drm_encoder *encoder = &intel_output->enc;
+ struct drm_device *dev = encoder->dev;
+ struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ unsigned long irqflags;
+ u32 tv_ctl, save_tv_ctl;
+ u32 tv_dac, save_tv_dac;
+@@ -1626,6 +1627,7 @@
+ intel_tv_init(struct drm_device *dev)
+ {
+ struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_connector *connector;
+ struct intel_output *intel_output;
+ struct intel_tv_priv *tv_priv;
+Index: linux-2.6.28/drivers/gpu/drm/i915/intel_modes.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/intel_modes.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/intel_modes.c 2009-02-19 12:59:28.000000000 +0000
+@@ -81,3 +81,6 @@
+
+ return ret;
+ }
++EXPORT_SYMBOL(intel_ddc_get_modes);
++
++MODULE_LICENSE("GPL and additional rights");
+Index: linux-2.6.28/drivers/gpu/drm/i915/intel_i2c.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/intel_i2c.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/intel_i2c.c 2009-02-20 14:50:20.000000000 +0000
+@@ -43,7 +43,7 @@
+ static int get_clock(void *data)
+ {
+ struct intel_i2c_chan *chan = data;
+- struct drm_i915_private *dev_priv = chan->drm_dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = chan->drm_dev->dev_private;
+ u32 val;
+
+ val = I915_READ(chan->reg);
+@@ -53,7 +53,7 @@
+ static int get_data(void *data)
+ {
+ struct intel_i2c_chan *chan = data;
+- struct drm_i915_private *dev_priv = chan->drm_dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = chan->drm_dev->dev_private;
+ u32 val;
+
+ val = I915_READ(chan->reg);
+@@ -64,7 +64,7 @@
+ {
+ struct intel_i2c_chan *chan = data;
+ struct drm_device *dev = chan->drm_dev;
+- struct drm_i915_private *dev_priv = chan->drm_dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = chan->drm_dev->dev_private;
+ u32 reserved = 0, clock_bits;
+
+ /* On most chips, these bits must be preserved in software. */
+@@ -85,7 +85,7 @@
+ {
+ struct intel_i2c_chan *chan = data;
+ struct drm_device *dev = chan->drm_dev;
+- struct drm_i915_private *dev_priv = chan->drm_dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = chan->drm_dev->dev_private;
+ u32 reserved = 0, data_bits;
+
+ /* On most chips, these bits must be preserved in software. */
+@@ -167,6 +167,7 @@
+ kfree(chan);
+ return NULL;
+ }
++EXPORT_SYMBOL(intel_i2c_create);
+
+ /**
+ * intel_i2c_destroy - unregister and free i2c bus resources
+@@ -182,3 +183,4 @@
+ i2c_del_adapter(&chan->adapter);
+ kfree(chan);
+ }
++EXPORT_SYMBOL(intel_i2c_destroy);
+Index: linux-2.6.28/drivers/gpu/drm/i915/intel_dvo.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/intel_dvo.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/intel_dvo.c 2009-02-19 15:14:20.000000000 +0000
+@@ -78,7 +78,7 @@
+
+ static void intel_dvo_dpms(struct drm_encoder *encoder, int mode)
+ {
+- struct drm_i915_private *dev_priv = encoder->dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = encoder->dev->dev_private;
+ struct intel_output *intel_output = enc_to_intel_output(encoder);
+ struct intel_dvo_device *dvo = intel_output->dev_priv;
+ u32 dvo_reg = dvo->dvo_reg;
+@@ -98,15 +98,16 @@
+ static void intel_dvo_save(struct drm_connector *connector)
+ {
+ struct drm_i915_private *dev_priv = connector->dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = connector->dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_dvo_device *dvo = intel_output->dev_priv;
+
+ /* Each output should probably just save the registers it touches,
+ * but for now, use more overkill.
+ */
+- dev_priv->saveDVOA = I915_READ(DVOA);
+- dev_priv->saveDVOB = I915_READ(DVOB);
+- dev_priv->saveDVOC = I915_READ(DVOC);
++ dev_priv->common.saveDVOA = I915_READ(DVOA);
++ dev_priv->common.saveDVOB = I915_READ(DVOB);
++ dev_priv->common.saveDVOC = I915_READ(DVOC);
+
+ dvo->dev_ops->save(dvo);
+ }
+@@ -114,14 +115,15 @@
+ static void intel_dvo_restore(struct drm_connector *connector)
+ {
+ struct drm_i915_private *dev_priv = connector->dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = connector->dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_dvo_device *dvo = intel_output->dev_priv;
+
+ dvo->dev_ops->restore(dvo);
+
+- I915_WRITE(DVOA, dev_priv->saveDVOA);
+- I915_WRITE(DVOB, dev_priv->saveDVOB);
+- I915_WRITE(DVOC, dev_priv->saveDVOC);
++ I915_WRITE(DVOA, dev_priv->common.saveDVOA);
++ I915_WRITE(DVOB, dev_priv->common.saveDVOB);
++ I915_WRITE(DVOC, dev_priv->common.saveDVOC);
+ }
+
+ static int intel_dvo_mode_valid(struct drm_connector *connector,
+@@ -183,7 +185,7 @@
+ struct drm_display_mode *adjusted_mode)
+ {
+ struct drm_device *dev = encoder->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
+ struct intel_output *intel_output = enc_to_intel_output(encoder);
+ struct intel_dvo_device *dvo = intel_output->dev_priv;
+@@ -349,7 +351,7 @@
+ intel_dvo_get_current_mode (struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_dvo_device *dvo = intel_output->dev_priv;
+ uint32_t dvo_reg = dvo->dvo_reg;
+Index: linux-2.6.28/drivers/gpu/drm/i915/intel_hdmi.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/intel_hdmi.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/intel_hdmi.c 2009-02-19 12:59:28.000000000 +0000
+@@ -46,7 +46,7 @@
+ struct drm_display_mode *adjusted_mode)
+ {
+ struct drm_device *dev = encoder->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_crtc *crtc = encoder->crtc;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_output *intel_output = enc_to_intel_output(encoder);
+@@ -71,7 +71,7 @@
+ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
+ {
+ struct drm_device *dev = encoder->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = enc_to_intel_output(encoder);
+ struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
+ u32 temp;
+@@ -89,7 +89,7 @@
+ static void intel_hdmi_save(struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
+
+@@ -99,7 +99,7 @@
+ static void intel_hdmi_restore(struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
+
+@@ -132,7 +132,7 @@
+ intel_hdmi_detect(struct drm_connector *connector)
+ {
+ struct drm_device *dev = connector->dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct intel_output *intel_output = to_intel_output(connector);
+ struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
+ u32 temp, bit;
+@@ -220,7 +220,7 @@
+
+ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_connector *connector;
+ struct intel_output *intel_output;
+ struct intel_hdmi_priv *hdmi_priv;
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_suspend.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_suspend.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_suspend.c 2009-02-19 12:59:28.000000000 +0000
+@@ -31,7 +31,7 @@
+
+ static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ if (pipe == PIPE_A)
+ return (I915_READ(DPLL_A) & DPLL_VCO_ENABLE);
+@@ -41,7 +41,7 @@
+
+ static void i915_save_palette(struct drm_device *dev, enum pipe pipe)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ unsigned long reg = (pipe == PIPE_A ? PALETTE_A : PALETTE_B);
+ u32 *array;
+ int i;
+@@ -50,9 +50,9 @@
+ return;
+
+ if (pipe == PIPE_A)
+- array = dev_priv->save_palette_a;
++ array = dev_priv_common->save_palette_a;
+ else
+- array = dev_priv->save_palette_b;
++ array = dev_priv_common->save_palette_b;
+
+ for(i = 0; i < 256; i++)
+ array[i] = I915_READ(reg + (i << 2));
+@@ -60,7 +60,7 @@
+
+ static void i915_restore_palette(struct drm_device *dev, enum pipe pipe)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ unsigned long reg = (pipe == PIPE_A ? PALETTE_A : PALETTE_B);
+ u32 *array;
+ int i;
+@@ -69,9 +69,9 @@
+ return;
+
+ if (pipe == PIPE_A)
+- array = dev_priv->save_palette_a;
++ array = dev_priv_common->save_palette_a;
+ else
+- array = dev_priv->save_palette_b;
++ array = dev_priv_common->save_palette_b;
+
+ for(i = 0; i < 256; i++)
+ I915_WRITE(reg + (i << 2), array[i]);
+@@ -79,7 +79,7 @@
+
+ static u8 i915_read_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ I915_WRITE8(index_port, reg);
+ return I915_READ8(data_port);
+@@ -87,7 +87,7 @@
+
+ static u8 i915_read_ar(struct drm_device *dev, u16 st01, u8 reg, u16 palette_enable)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ I915_READ8(st01);
+ I915_WRITE8(VGA_AR_INDEX, palette_enable | reg);
+@@ -96,7 +96,7 @@
+
+ static void i915_write_ar(struct drm_device *dev, u16 st01, u8 reg, u8 val, u16 palette_enable)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ I915_READ8(st01);
+ I915_WRITE8(VGA_AR_INDEX, palette_enable | reg);
+@@ -105,7 +105,7 @@
+
+ static void i915_write_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg, u8 val)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+
+ I915_WRITE8(index_port, reg);
+ I915_WRITE8(data_port, val);
+@@ -113,7 +113,8 @@
+
+ static void i915_save_vga(struct drm_device *dev)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
++ struct drm_i915_common_private *dev_priv = dev->dev_private;
+ int i;
+ u16 cr_index, cr_data, st01;
+
+@@ -176,7 +177,8 @@
+
+ static void i915_restore_vga(struct drm_device *dev)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
++ struct drm_i915_common_private *dev_priv = dev->dev_private;
+ int i;
+ u16 cr_index, cr_data, st01;
+
+@@ -235,7 +237,8 @@
+
+ int i915_save_state(struct drm_device *dev)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
++ struct drm_i915_common_private *dev_priv = dev->dev_private;
+ int i;
+
+ pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB);
+@@ -367,7 +370,8 @@
+
+ int i915_restore_state(struct drm_device *dev)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
++ struct drm_i915_common_private *dev_priv = dev->dev_private;
+ int i;
+
+ pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB);
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_opregion.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_opregion.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_opregion.c 2009-02-19 12:59:28.000000000 +0000
+@@ -139,6 +139,7 @@
+ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
+ {
+ struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct opregion_asle *asle = dev_priv->opregion.asle;
+ u32 blc_pwm_ctl, blc_pwm_ctl2;
+
+@@ -172,7 +173,8 @@
+
+ static u32 asle_set_pwm_freq(struct drm_device *dev, u32 pfmb)
+ {
+- struct drm_i915_private *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
++
+ if (pfmb & ASLE_PFMB_PWM_VALID) {
+ u32 blc_pwm_ctl = I915_READ(BLC_PWM_CTL);
+ u32 pwm = pfmb & ASLE_PFMB_PWM_MASK;
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_gem.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_gem.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_gem.c 2009-02-19 12:59:28.000000000 +0000
+@@ -877,6 +877,7 @@
+ i915_add_request(struct drm_device *dev, uint32_t flush_domains)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_gem_request *request;
+ uint32_t seqno;
+ int was_empty;
+@@ -942,6 +943,7 @@
+ static uint32_t
+ i915_retire_commands(struct drm_device *dev)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ uint32_t cmd = MI_FLUSH | MI_NO_WRITE_FLUSH;
+ uint32_t flush_domains = 0;
+@@ -1049,12 +1051,14 @@
+ void
+ i915_gem_retire_work_handler(struct work_struct *work)
+ {
++ struct drm_i915_common_private *dev_priv_common;
+ drm_i915_private_t *dev_priv;
+ struct drm_device *dev;
+
+ dev_priv = container_of(work, drm_i915_private_t,
+ mm.retire_work.work);
+ dev = dev_priv->dev;
++ dev_priv_common = dev->dev_private;
+
+ mutex_lock(&dev->struct_mutex);
+ i915_gem_retire_requests(dev);
+@@ -1109,6 +1113,7 @@
+ uint32_t invalidate_domains,
+ uint32_t flush_domains)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ uint32_t cmd;
+ RING_LOCALS;
+@@ -1422,7 +1427,7 @@
+ {
+ struct drm_gem_object *obj = reg->obj;
+ struct drm_device *dev = obj->dev;
+- drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_gem_object *obj_priv = obj->driver_private;
+ int regnum = obj_priv->fence_reg;
+ uint64_t val;
+@@ -1442,8 +1447,8 @@
+ {
+ struct drm_gem_object *obj = reg->obj;
+ struct drm_device *dev = obj->dev;
+- drm_i915_private_t *dev_priv = dev->dev_private;
+ struct drm_i915_gem_object *obj_priv = obj->driver_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ int regnum = obj_priv->fence_reg;
+ uint32_t val;
+ uint32_t pitch_val;
+@@ -1475,7 +1480,7 @@
+ {
+ struct drm_gem_object *obj = reg->obj;
+ struct drm_device *dev = obj->dev;
+- drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_gem_object *obj_priv = obj->driver_private;
+ int regnum = obj_priv->fence_reg;
+ uint32_t val;
+@@ -1605,6 +1610,7 @@
+ {
+ struct drm_device *dev = obj->dev;
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_gem_object *obj_priv = obj->driver_private;
+
+ if (IS_I965G(dev))
+@@ -2327,6 +2333,7 @@
+ uint64_t exec_offset)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_clip_rect __user *boxes = (struct drm_clip_rect __user *)
+ (uintptr_t) exec->cliprects_ptr;
+ int nbox = exec->num_cliprects;
+@@ -3035,6 +3042,7 @@
+ i915_gem_init_hws(struct drm_device *dev)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_gem_object *obj;
+ struct drm_i915_gem_object *obj_priv;
+ int ret;
+@@ -3081,6 +3089,7 @@
+ i915_gem_init_ringbuffer(struct drm_device *dev)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_gem_object *obj;
+ struct drm_i915_gem_object *obj_priv;
+ drm_i915_ring_buffer_t *ring = &dev_priv->ring;
+@@ -3186,6 +3195,7 @@
+ void
+ i915_gem_cleanup_ringbuffer(struct drm_device *dev)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = dev->dev_private;
+
+ if (dev_priv->ring.ring_obj == NULL)
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_gem_proc.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_gem_proc.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_gem_proc.c 2009-02-19 12:59:28.000000000 +0000
+@@ -213,6 +213,7 @@
+ struct drm_minor *minor = (struct drm_minor *) data;
+ struct drm_device *dev = minor->dev;
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ int len = 0;
+
+ if (offset > DRM_PROC_LIMIT) {
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_gem_tiling.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_gem_tiling.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_gem_tiling.c 2009-02-19 12:59:28.000000000 +0000
+@@ -87,6 +87,7 @@
+ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ uint32_t swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN;
+ uint32_t swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN;
+
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_irq.c
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_irq.c 2009-02-19 12:59:22.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_irq.c 2009-02-20 14:53:08.000000000 +0000
+@@ -64,6 +64,8 @@
+ void
+ i915_enable_irq(drm_i915_private_t *dev_priv, u32 mask)
+ {
++ struct drm_i915_common_private *dev_priv_common = (struct drm_i915_common_private *) dev_priv;
++
+ if ((dev_priv->irq_mask_reg & mask) != 0) {
+ dev_priv->irq_mask_reg &= ~mask;
+ I915_WRITE(IMR, dev_priv->irq_mask_reg);
+@@ -74,6 +76,8 @@
+ static inline void
+ i915_disable_irq(drm_i915_private_t *dev_priv, u32 mask)
+ {
++ struct drm_i915_common_private *dev_priv_common = (struct drm_i915_common_private *) dev_priv;
++
+ if ((dev_priv->irq_mask_reg & mask) != mask) {
+ dev_priv->irq_mask_reg |= mask;
+ I915_WRITE(IMR, dev_priv->irq_mask_reg);
+@@ -94,6 +98,8 @@
+ void
+ i915_enable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask)
+ {
++ struct drm_i915_common_private *dev_priv_common = (struct drm_i915_common_private *) dev_priv;
++
+ if ((dev_priv->pipestat[pipe] & mask) != mask) {
+ u32 reg = i915_pipestat(pipe);
+
+@@ -107,6 +113,8 @@
+ void
+ i915_disable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask)
+ {
++ struct drm_i915_common_private *dev_priv_common = (struct drm_i915_common_private *) dev_priv;
++
+ if ((dev_priv->pipestat[pipe] & mask) != 0) {
+ u32 reg = i915_pipestat(pipe);
+
+@@ -128,7 +136,7 @@
+ static int
+ i915_pipe_enabled(struct drm_device *dev, int pipe)
+ {
+- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ unsigned long pipeconf = pipe ? PIPEBCONF : PIPEACONF;
+
+ if (I915_READ(pipeconf) & PIPEACONF_ENABLE)
+@@ -142,7 +150,7 @@
+ */
+ u32 i915_get_vblank_counter(struct drm_device *dev, int pipe)
+ {
+- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ unsigned long high_frame;
+ unsigned long low_frame;
+ u32 high1, high2, low, count;
+@@ -178,6 +186,7 @@
+ {
+ struct drm_device *dev = (struct drm_device *) arg;
+ drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_master_private *master_priv;
+ u32 iir, new_iir;
+ u32 pipea_stats, pipeb_stats;
+@@ -284,6 +293,7 @@
+ static int i915_emit_irq(struct drm_device * dev)
+ {
+ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
+ RING_LOCALS;
+
+@@ -409,6 +419,7 @@
+ */
+ int i915_enable_vblank(struct drm_device *dev, int pipe)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+ unsigned long irqflags;
+ int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
+@@ -510,6 +521,7 @@
+ */
+ void i915_driver_irq_preinstall(struct drm_device * dev)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+
+ atomic_set(&dev_priv->irq_received, 0);
+@@ -554,6 +566,7 @@
+
+ void i915_driver_irq_uninstall(struct drm_device * dev)
+ {
++ struct drm_i915_common_private *dev_priv_common = dev->dev_private;
+ drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+
+ if (!dev_priv)
+Index: linux-2.6.28/drivers/gpu/drm/i915/Makefile
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/Makefile 2009-02-19 12:59:23.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/Makefile 2009-02-19 12:59:28.000000000 +0000
+@@ -9,24 +9,29 @@
+ i915_gem_debug.o \
+ i915_gem_proc.o \
+ i915_gem_tiling.o \
+- intel_display.o \
+- intel_crt.o \
+- intel_lvds.o \
+ intel_bios.o \
+- intel_hdmi.o \
+- intel_sdvo.o \
+- intel_modes.o \
+- intel_i2c.o \
+ intel_fb.o \
+ intel_tv.o \
++
++intel_gfx_common-y := \
++ intel_display.o \
++ intel_modes.o \
++ intel_i2c.o \
++ intel_crt.o \
+ intel_dvo.o \
++ intel_hdmi.o \
++ intel_lvds.o \
++ intel_sdvo.o \
+ dvo_ch7xxx.o \
+ dvo_ch7017.o \
+ dvo_ivch.o \
+ dvo_tfp410.o \
+ dvo_sil164.o
+
++
+ i915-$(CONFIG_ACPI) += i915_opregion.o
+ i915-$(CONFIG_COMPAT) += i915_ioc32.o
+
+ obj-$(CONFIG_DRM_I915) += i915.o
++
++obj-$(CONFIG_DRM_INTEL_COMMON) += intel_gfx_common.o
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_common.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_common.h 2009-02-20 14:49:42.000000000 +0000
+@@ -0,0 +1,184 @@
++/*
++ *
++ * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
++ * All Rights Reserved.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sub license, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the
++ * next paragraph) shall be included in all copies or substantial portions
++ * of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
++ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ *
++ */
++
++#ifndef _I915_COMMON_H_
++#define _I915_COMMON_H_
++
++typedef struct drm_i915_common_private {
++ //struct drm_device *dev;
++
++ void __iomem *regs;
++
++ //drm_dma_handle_t *status_page_dmah;
++ //void *hw_status_page;
++ //dma_addr_t dma_status_page;
++ //uint32_t counter;
++ //unsigned int status_gfx_addr;
++ //drm_local_map_t hws_map;
++ //struct drm_gem_object *hws_obj;
++
++ //unsigned int cpp;
++ //int back_offset;
++ //int front_offset;
++ //int current_page;
++ //int page_flipping;
++
++ //wait_queue_head_t irq_queue;
++ //atomic_t irq_received;
++ /** Protects user_irq_refcount and irq_mask_reg */
++ //spinlock_t user_irq_lock;
++ /** Refcount for i915_user_irq_get() versus i915_user_irq_put(). */
++ //int user_irq_refcount;
++ /** Cached value of IMR to avoid reads in updating the bitfield */
++ //u32 irq_mask_reg;
++ //u32 pipestat[2];
++
++ //int tex_lru_log_granularity;
++ //int allow_batchbuffer;
++ //struct mem_block *agp_heap;
++ //unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds;
++ //int vblank_pipe;
++
++ //bool cursor_needs_physical;
++
++ //struct drm_mm vram;
++
++ //int irq_enabled;
++
++ /* LVDS info */
++ int backlight_duty_cycle; /* restore backlight to this value */
++ bool panel_wants_dither;
++ struct drm_display_mode *panel_fixed_mode;
++ //struct drm_display_mode *vbt_mode; /* if any */
++
++ /* Feature bits from the VBIOS */
++ //unsigned int int_tv_support:1;
++ //unsigned int lvds_dither:1;
++ //unsigned int lvds_vbt:1;
++ //unsigned int int_crt_support:1;
++
++ //int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
++ //int num_fence_regs; /* 8 on pre-965, 16 otherwise */
++
++ /* Register state */
++ u8 saveLBB;
++ u32 saveDSPACNTR;
++ u32 saveDSPBCNTR;
++ u32 saveDSPARB;
++ u32 saveRENDERSTANDBY;
++ u32 saveHWS;
++ u32 savePIPEACONF;
++ u32 savePIPEBCONF;
++ u32 savePIPEASRC;
++ u32 savePIPEBSRC;
++ u32 saveFPA0;
++ u32 saveFPA1;
++ u32 saveDPLL_A;
++ u32 saveDPLL_A_MD;
++ u32 saveHTOTAL_A;
++ u32 saveHBLANK_A;
++ u32 saveHSYNC_A;
++ u32 saveVTOTAL_A;
++ u32 saveVBLANK_A;
++ u32 saveVSYNC_A;
++ u32 saveBCLRPAT_A;
++ u32 savePIPEASTAT;
++ u32 saveDSPASTRIDE;
++ u32 saveDSPASIZE;
++ u32 saveDSPAPOS;
++ u32 saveDSPAADDR;
++ u32 saveDSPASURF;
++ u32 saveDSPATILEOFF;
++ u32 savePFIT_PGM_RATIOS;
++ u32 saveBLC_PWM_CTL;
++ u32 saveBLC_PWM_CTL2;
++ u32 saveFPB0;
++ u32 saveFPB1;
++ u32 saveDPLL_B;
++ u32 saveDPLL_B_MD;
++ u32 saveHTOTAL_B;
++ u32 saveHBLANK_B;
++ u32 saveHSYNC_B;
++ u32 saveVTOTAL_B;
++ u32 saveVBLANK_B;
++ u32 saveVSYNC_B;
++ u32 saveBCLRPAT_B;
++ u32 savePIPEBSTAT;
++ u32 saveDSPBSTRIDE;
++ u32 saveDSPBSIZE;
++ u32 saveDSPBPOS;
++ u32 saveDSPBADDR;
++ u32 saveDSPBSURF;
++ u32 saveDSPBTILEOFF;
++ u32 saveVGA0;
++ u32 saveVGA1;
++ u32 saveVGA_PD;
++ u32 saveVGACNTRL;
++ u32 saveADPA;
++ u32 saveLVDS;
++ u32 savePP_ON_DELAYS;
++ u32 savePP_OFF_DELAYS;
++ u32 saveDVOA;
++ u32 saveDVOB;
++ u32 saveDVOC;
++ u32 savePP_ON;
++ u32 savePP_OFF;
++ u32 savePP_CONTROL;
++ u32 savePP_DIVISOR;
++ u32 savePFIT_CONTROL;
++ u32 save_palette_a[256];
++ u32 save_palette_b[256];
++ u32 saveFBC_CFB_BASE;
++ u32 saveFBC_LL_BASE;
++ u32 saveFBC_CONTROL;
++ u32 saveFBC_CONTROL2;
++ u32 saveIER;
++ u32 saveIIR;
++ u32 saveIMR;
++ u32 saveCACHE_MODE_0;
++ u32 saveD_STATE;
++ u32 saveCG_2D_DIS;
++ u32 saveMI_ARB_STATE;
++ u32 saveSWF0[16];
++ u32 saveSWF1[16];
++ u32 saveSWF2[3];
++ u8 saveMSR;
++ u8 saveSR[8];
++ u8 saveGR[25];
++ u8 saveAR_INDEX;
++ u8 saveAR[21];
++ u8 saveDACMASK;
++ u8 saveDACDATA[256*3]; /* 256 3-byte colors */
++ u8 saveCR[37];
++} drm_i915_common_private_t;
++
++struct drm_i915_master_private {
++ drm_local_map_t *sarea;
++ struct _drm_i915_sarea *sarea_priv;
++};
++
++#endif
+Index: linux-2.6.28/drivers/gpu/drm/i915/i915_drv.h
+===================================================================
+--- linux-2.6.28.orig/drivers/gpu/drm/i915/i915_drv.h 2009-02-19 12:59:23.000000000 +0000
++++ linux-2.6.28/drivers/gpu/drm/i915/i915_drv.h 2009-02-19 16:30:19.000000000 +0000
+@@ -32,6 +32,7 @@
+
+ #include "i915_reg.h"
+ #include "intel_bios.h"
++#include "i915_common.h"
+ #include <linux/io-mapping.h>
+
+ /* General customization:
+@@ -116,10 +117,6 @@
+ int enabled;
+ };
+
+-struct drm_i915_master_private {
+- drm_local_map_t *sarea;
+- struct _drm_i915_sarea *sarea_priv;
+-};
+ #define I915_FENCE_REG_NONE -1
+
+ struct drm_i915_fence_reg {
+@@ -127,12 +124,15 @@
+ };
+
+ typedef struct drm_i915_private {
+- struct drm_device *dev;
++ /* common is assumed to be the first item in this structure */
++ struct drm_i915_common_private common;
+
+- void __iomem *regs;
+-
+- drm_i915_ring_buffer_t ring;
++ struct drm_device *dev;
+
++ //void __iomem *regs;
++
++ drm_i915_ring_buffer_t ring;
++
+ drm_dma_handle_t *status_page_dmah;
+ void *hw_status_page;
+ dma_addr_t dma_status_page;
+@@ -169,12 +169,12 @@
+
+ int irq_enabled;
+
+- struct intel_opregion opregion;
+-
++ struct intel_opregion opregion;
++
+ /* LVDS info */
+- int backlight_duty_cycle; /* restore backlight to this value */
+- bool panel_wants_dither;
+- struct drm_display_mode *panel_fixed_mode;
++ //int backlight_duty_cycle; /* restore backlight to this value */
++ //bool panel_wants_dither;
++ //struct drm_display_mode *panel_fixed_mode;
+ struct drm_display_mode *vbt_mode; /* if any */
+
+ /* Feature bits from the VBIOS */
+@@ -183,101 +183,10 @@
+ unsigned int lvds_vbt:1;
+ unsigned int int_crt_support:1;
+
+- struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */
++ struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */
+ int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
+ int num_fence_regs; /* 8 on pre-965, 16 otherwise */
+
+- /* Register state */
+- u8 saveLBB;
+- u32 saveDSPACNTR;
+- u32 saveDSPBCNTR;
+- u32 saveDSPARB;
+- u32 saveRENDERSTANDBY;
+- u32 saveHWS;
+- u32 savePIPEACONF;
+- u32 savePIPEBCONF;
+- u32 savePIPEASRC;
+- u32 savePIPEBSRC;
+- u32 saveFPA0;
+- u32 saveFPA1;
+- u32 saveDPLL_A;
+- u32 saveDPLL_A_MD;
+- u32 saveHTOTAL_A;
+- u32 saveHBLANK_A;
+- u32 saveHSYNC_A;
+- u32 saveVTOTAL_A;
+- u32 saveVBLANK_A;
+- u32 saveVSYNC_A;
+- u32 saveBCLRPAT_A;
+- u32 savePIPEASTAT;
+- u32 saveDSPASTRIDE;
+- u32 saveDSPASIZE;
+- u32 saveDSPAPOS;
+- u32 saveDSPAADDR;
+- u32 saveDSPASURF;
+- u32 saveDSPATILEOFF;
+- u32 savePFIT_PGM_RATIOS;
+- u32 saveBLC_PWM_CTL;
+- u32 saveBLC_PWM_CTL2;
+- u32 saveFPB0;