diff options
author | Thomas White <taw@bitwiz.org.uk> | 2009-05-27 22:14:11 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2009-05-27 22:14:11 +0100 |
commit | 740d8196e83bd7eaccf2f3575019a7bd96444c1d (patch) | |
tree | e9acf45bdbc32a641c8730991dcfd6faad86f20c /drivers/mfd/glamo/glamo-drm-drv.c | |
parent | 799dc0363fc2c4c98f18dbd9abf39c20811618d9 (diff) |
Initial KMS stuff
Diffstat (limited to 'drivers/mfd/glamo/glamo-drm-drv.c')
-rw-r--r-- | drivers/mfd/glamo/glamo-drm-drv.c | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c index 2208a8ef5f7..5136263375b 100644 --- a/drivers/mfd/glamo/glamo-drm-drv.c +++ b/drivers/mfd/glamo/glamo-drm-drv.c @@ -31,6 +31,7 @@ #include "glamo-cmdq.h" #include "glamo-buffer.h" #include "glamo-drm-private.h" +#include "glamo-display.h" #define DRIVER_AUTHOR "Openmoko, Inc." #define DRIVER_NAME "glamo-drm" @@ -126,13 +127,43 @@ static void glamodrm_master_destroy(struct drm_device *dev, } +static int glamodrm_load(struct drm_device *dev, unsigned long flags) +{ + struct glamodrm_handle *gdrm; + + gdrm = dev->dev_private; + + glamo_buffer_init(gdrm); + glamo_cmdq_init(gdrm); + glamo_display_init(dev); + + return 0; +} + + +static int glamodrm_unload(struct drm_device *dev) +{ + struct glamodrm_handle *gdrm; + + gdrm = dev->dev_private; + + glamo_engine_disable(gdrm->glamo_core, GLAMO_ENGINE_2D); + glamo_engine_disable(gdrm->glamo_core, GLAMO_ENGINE_3D); + glamo_buffer_final(gdrm); + + return 0; +} + + static struct vm_operations_struct glamodrm_gem_vm_ops = { .fault = glamodrm_gem_fault, }; static struct drm_driver glamodrm_drm_driver = { - .driver_features = DRIVER_IS_PLATFORM | DRIVER_GEM, + .driver_features = DRIVER_IS_PLATFORM | DRIVER_GEM | DRIVER_MODESET, .firstopen = glamodrm_firstopen, + .load = glamodrm_load, + .unload = glamodrm_unload, .open = glamodrm_open, .preclose = glamodrm_preclose, .postclose = glamodrm_postclose, @@ -247,9 +278,6 @@ static int glamodrm_probe(struct platform_device *pdev) /* Initialise DRM */ drm_platform_init(&glamodrm_drm_driver, pdev, (void *)gdrm); - glamo_buffer_init(gdrm); - glamo_cmdq_init(gdrm); - return 0; out_release_cmdq: @@ -272,12 +300,7 @@ out_free: static int glamodrm_remove(struct platform_device *pdev) { struct glamodrm_handle *gdrm = platform_get_drvdata(pdev); - struct glamo_core *glamocore = pdev->dev.platform_data; - - glamo_engine_disable(glamocore, GLAMO_ENGINE_2D); - glamo_engine_disable(glamocore, GLAMO_ENGINE_3D); - glamo_buffer_final(gdrm); drm_exit(&glamodrm_drm_driver); platform_set_drvdata(pdev, NULL); |