diff --git a/drivers/gpu/drm/glint/Makefile b/drivers/gpu/drm/glint/Makefile
index 661ebbc..27f4c94 100644
--- a/drivers/gpu/drm/glint/Makefile
+++ b/drivers/gpu/drm/glint/Makefile
@@ -4,6 +4,6 @@
 
 ccflags-y := -Iinclude/drm
 glint-y   := glint_crtc.o glint_dac.o glint_device.o glint_display.o \
-	glint_drv.o glint_irq.o glint_kms.o
+	glint_drv.o glint_irq.o glint_kms.o glint_vga.o
 
 obj-$(CONFIG_DRM_GLINT) += glint.o
diff --git a/drivers/gpu/drm/glint/glint_display.c b/drivers/gpu/drm/glint/glint_display.c
index ecfeef5..a69a8fa 100644
--- a/drivers/gpu/drm/glint/glint_display.c
+++ b/drivers/gpu/drm/glint/glint_display.c
@@ -8,6 +8,7 @@
 int glint_modeset_init(struct glint_device *gdev)
 {
 	struct drm_encoder *encoder;
+	struct drm_connector *connector;
 	int i;
 
 	drm_mode_config_init(gdev->ddev);
@@ -29,6 +30,12 @@
 		return -1;
 	}
 
+	connector = glint_vga_init(gdev->ddev);
+	if (!connector) {
+		GLINT_ERROR("glint_vga_init failed\n");
+		return -1;
+	}
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/glint/glint_drv.h b/drivers/gpu/drm/glint/glint_drv.h
index 3a2cdba..c48518c 100644
--- a/drivers/gpu/drm/glint/glint_drv.h
+++ b/drivers/gpu/drm/glint/glint_drv.h
@@ -61,4 +61,7 @@
 extern struct drm_ioctl_desc glint_ioctls[];
 extern int glint_max_ioctl;
 
+				/* glint_vga.c */
+struct drm_connector *glint_vga_init(struct drm_device *dev);
+
 #endif				/* __GLINT_DRV_H__ */
diff --git a/drivers/gpu/drm/glint/glint_mode.h b/drivers/gpu/drm/glint/glint_mode.h
index 0a125d5..d0a2cc6 100644
--- a/drivers/gpu/drm/glint/glint_mode.h
+++ b/drivers/gpu/drm/glint/glint_mode.h
@@ -30,4 +30,8 @@
 	int				last_dpms;
 };
 
+struct glint_connector {
+	struct drm_connector		base;
+};
+
 #endif				/* __GLINT_MODE_H__ */
diff --git a/drivers/gpu/drm/glint/glint_vga.c b/drivers/gpu/drm/glint/glint_vga.c
new file mode 100644
index 0000000..58bc903
--- /dev/null
+++ b/drivers/gpu/drm/glint/glint_vga.c
@@ -0,0 +1,83 @@
+#include "drmP.h"
+#include "drm.h"
+#include "drm_crtc_helper.h"
+
+#include <video/pm3fb.h>
+
+#include "glint.h"
+#include "glint_drv.h"
+#include "glint_mode.h"
+
+static int glint_vga_get_modes(struct drm_connector *connector)
+{
+	/* return 0 modes, so that we don't have to implement DDC/I2C yet. */
+	return 0;
+}
+
+static int glint_vga_mode_valid(struct drm_connector *connector,
+				struct drm_display_mode *mode)
+{
+	/* XXX check mode bandwidth */
+	/* XXX verify against max DAC output frequency */
+	return MODE_OK;
+}
+
+struct drm_encoder *glint_connector_best_encoder(struct drm_connector *connector)
+{
+	int enc_id = connector->encoder_ids[0];
+	struct drm_mode_object *obj;
+	struct drm_encoder *encoder;
+
+	/* pick the encoder ids */
+	if (enc_id) {
+		obj = drm_mode_object_find(connector->dev, enc_id, DRM_MODE_OBJECT_ENCODER);
+		if (!obj)
+			return NULL;
+		encoder = obj_to_encoder(obj);
+		return encoder;
+	}
+	return NULL;
+}
+
+static enum drm_connector_status glint_vga_detect(struct drm_connector *connector)
+{
+	return connector_status_connected;
+}
+
+static void glint_connector_destroy(struct drm_connector *connector)
+{
+	drm_connector_cleanup(connector);
+	kfree(connector);
+}
+
+struct drm_connector_helper_funcs glint_vga_connector_helper_funcs = {
+	.get_modes = glint_vga_get_modes,
+	.mode_valid = glint_vga_mode_valid,
+	.best_encoder = glint_connector_best_encoder,
+};
+
+struct drm_connector_funcs glint_vga_connector_funcs = {
+	.dpms = drm_helper_connector_dpms,
+	.detect = glint_vga_detect,
+	.fill_modes = drm_helper_probe_single_connector_modes,
+	.destroy = glint_connector_destroy,
+};
+
+struct drm_connector *glint_vga_init(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct glint_connector *glint_connector;
+
+	glint_connector = kzalloc(sizeof(struct glint_connector), GFP_KERNEL);
+	if (!glint_connector)
+		return NULL;
+
+	connector = &glint_connector->base;
+
+	drm_connector_init(dev, connector,
+		&glint_vga_connector_funcs, DRM_MODE_CONNECTOR_VGA);
+
+	drm_connector_helper_add(connector, &glint_vga_connector_helper_funcs);
+
+	return connector;
+}
