From 478e019cb7caa0c336b19a18eb3cb4e81896b493 Mon Sep 17 00:00:00 2001
From: Alan Hourihane <alanh@tungstengraphics.com>
Date: Mon, 28 Jul 2008 15:16:45 +0100
Subject: set to 2.4.0

---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 78203343..987b0111 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 AC_PREREQ(2.57)
-AC_INIT([libdrm], 2.3.1, [dri-devel@lists.sourceforge.net], libdrm)
+AC_INIT([libdrm], 2.4.0, [dri-devel@lists.sourceforge.net], libdrm)
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2])
 
-- 
cgit v1.2.3


From 2b7feebb8ad5f49391b4f6bd6fc548e4f93b94f3 Mon Sep 17 00:00:00 2001
From: Maarten Maathuis <madman2003@gmail.com>
Date: Sat, 9 Aug 2008 19:33:32 +0200
Subject: NV50: call drm_sysfs_hotplug_event when appropriate

---
 linux-core/drm_sysfs.c        | 1 +
 linux-core/nv50_kms_wrapper.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/linux-core/drm_sysfs.c b/linux-core/drm_sysfs.c
index 5c384a60..3b217342 100644
--- a/linux-core/drm_sysfs.c
+++ b/linux-core/drm_sysfs.c
@@ -450,6 +450,7 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
 
 	kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, envp);
 }
+EXPORT_SYMBOL(drm_sysfs_hotplug_event);
 
 static struct device_attribute dri_attrs[] = {
 	__ATTR(dri_library_name, S_IRUGO, show_dri, NULL),
diff --git a/linux-core/nv50_kms_wrapper.c b/linux-core/nv50_kms_wrapper.c
index 77271c1b..bf747a4c 100644
--- a/linux-core/nv50_kms_wrapper.c
+++ b/linux-core/nv50_kms_wrapper.c
@@ -970,6 +970,9 @@ static enum drm_connector_status nv50_kms_connector_detect(struct drm_connector
 
 		/* notify fb of changes */
 		dev->mode_config.funcs->fb_changed(dev);
+
+		/* sent a hotplug event when appropriate. */
+		drm_sysfs_hotplug_event(dev);
 	}
 
 	return drm_connector->status;
-- 
cgit v1.2.3


From f79ed5546229aa923f8dd54055bebeb56efaa76c Mon Sep 17 00:00:00 2001
From: Maarten Maathuis <madman2003@gmail.com>
Date: Sat, 9 Aug 2008 19:47:06 +0200
Subject: NV50: enable hotplug irq

---
 linux-core/nv50_display.c | 6 ++++++
 shared-core/nouveau_irq.c | 9 +++++++--
 shared-core/nouveau_reg.h | 2 --
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/linux-core/nv50_display.c b/linux-core/nv50_display.c
index eeaa0e68..6665a32f 100644
--- a/linux-core/nv50_display.c
+++ b/linux-core/nv50_display.c
@@ -125,6 +125,9 @@ static int nv50_display_init(struct nv50_display *display)
 	/* enable clock change interrupts. */
 	NV_WRITE(NV50_PDISPLAY_SUPERVISOR_INTR, NV_READ(NV50_PDISPLAY_SUPERVISOR_INTR) | 0x70);
 
+	/* enable hotplug interrupts */
+	NV_WRITE(NV50_PCONNECTOR_HOTPLUG_INTR, 0x7FFF7FFF);
+
 	display->init_done = true;
 
 	return 0;
@@ -171,6 +174,9 @@ static int nv50_display_disable(struct nv50_display *display)
 	/* disable clock change interrupts. */
 	NV_WRITE(NV50_PDISPLAY_SUPERVISOR_INTR, NV_READ(NV50_PDISPLAY_SUPERVISOR_INTR) & ~0x70);
 
+	/* disable hotplug interrupts */
+	NV_WRITE(NV50_PCONNECTOR_HOTPLUG_INTR, 0);
+
 	display->init_done = false;
 
 	return 0;
diff --git a/shared-core/nouveau_irq.c b/shared-core/nouveau_irq.c
index 4c46da8d..5b700915 100644
--- a/shared-core/nouveau_irq.c
+++ b/shared-core/nouveau_irq.c
@@ -41,6 +41,8 @@
 #include "nv50_display.h"
 #include "nv50_crtc.h"
 #include "nv50_output.h"
+/* needed for hotplug irq */
+#include "nv50_kms_wrapper.h"
 
 void
 nouveau_irq_preinstall(struct drm_device *dev)
@@ -591,10 +593,13 @@ nouveau_nv50_i2c_irq_handler(struct drm_device *dev)
 {
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 
-	DRM_INFO("NV50_I2C_INTR - 0x%08X\n", NV_READ(NV50_I2C_CONTROLLER));
+	DRM_INFO("NV50_I2C_INTR - 0x%08X\n", NV_READ(NV50_PCONNECTOR_HOTPLUG_CTRL));
 
 	/* This seems to be the way to acknowledge an interrupt. */
-	NV_WRITE(NV50_I2C_CONTROLLER, 0x7FFF7FFF);
+	NV_WRITE(NV50_PCONNECTOR_HOTPLUG_CTRL, 0x7FFF7FFF);
+
+	/* Do a "dumb" detect all */
+	nv50_kms_connector_detect_all(dev);
 }
 
 irqreturn_t
diff --git a/shared-core/nouveau_reg.h b/shared-core/nouveau_reg.h
index 6ed23e26..091c22c4 100644
--- a/shared-core/nouveau_reg.h
+++ b/shared-core/nouveau_reg.h
@@ -128,8 +128,6 @@
 #define NV04_PTIMER_TIME_1                                 0x00009410
 #define NV04_PTIMER_ALARM_0                                0x00009420
 
-#define NV50_I2C_CONTROLLER                           0x0000E054
-
 #define NV04_PFB_CFG0                                      0x00100200
 #define NV04_PFB_CFG1                                      0x00100204
 #define NV40_PFB_020C                                      0x0010020C
-- 
cgit v1.2.3


From 9a2adc442af9d83b85e4d558cb5e4d33597b60b9 Mon Sep 17 00:00:00 2001
From: Maarten Maathuis <madman2003@gmail.com>
Date: Sat, 9 Aug 2008 19:50:00 +0200
Subject: NV50: minor changes

---
 shared-core/nouveau_irq.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/shared-core/nouveau_irq.c b/shared-core/nouveau_irq.c
index 5b700915..48872622 100644
--- a/shared-core/nouveau_irq.c
+++ b/shared-core/nouveau_irq.c
@@ -512,7 +512,7 @@ nouveau_nv50_display_irq_handler(struct drm_device *dev)
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 	uint32_t val = NV_READ(NV50_PDISPLAY_SUPERVISOR);
 
-	DRM_INFO("NV50_DISPLAY_INTR - 0x%08X\n", val);
+	DRM_INFO("NV50_PDISPLAY_SUPERVISOR - 0x%08X\n", val);
 
 	/* vblank interrupts */
 	if (val & NV50_PDISPLAY_SUPERVISOR_CRTCn) {
@@ -593,7 +593,7 @@ nouveau_nv50_i2c_irq_handler(struct drm_device *dev)
 {
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 
-	DRM_INFO("NV50_I2C_INTR - 0x%08X\n", NV_READ(NV50_PCONNECTOR_HOTPLUG_CTRL));
+	DRM_INFO("NV50_PCONNECTOR_HOTPLUG_CTRL - 0x%08X\n", NV_READ(NV50_PCONNECTOR_HOTPLUG_CTRL));
 
 	/* This seems to be the way to acknowledge an interrupt. */
 	NV_WRITE(NV50_PCONNECTOR_HOTPLUG_CTRL, 0x7FFF7FFF);
-- 
cgit v1.2.3