aboutsummaryrefslogtreecommitdiff
path: root/drivers/mfd/glamo/glamo-drm-drv.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-05-04 12:47:05 +0100
committerThomas White <taw@bitwiz.org.uk>2009-05-04 12:47:05 +0100
commit6b88fb82138a28f6edf89700b44ca7d65da03163 (patch)
tree2bf7dd8e8b3548a459fd99513329a79796f41433 /drivers/mfd/glamo/glamo-drm-drv.c
parent3d56235cb9b596ad4fcc72db109d4d499b4b92c1 (diff)
Add (untested) memory management
This implements the GEM 'create' ioctl. Signed-off-by: Thomas White <taw@bitwiz.org.uk>
Diffstat (limited to 'drivers/mfd/glamo/glamo-drm-drv.c')
-rw-r--r--drivers/mfd/glamo/glamo-drm-drv.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
index d402b780c66..2208a8ef5f7 100644
--- a/drivers/mfd/glamo/glamo-drm-drv.c
+++ b/drivers/mfd/glamo/glamo-drm-drv.c
@@ -47,6 +47,7 @@ static int glamo_ioctl_swap(struct drm_device *dev, void *data,
return 0;
}
+
static int glamo_ioctl_gem_info(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
@@ -54,6 +55,7 @@ static int glamo_ioctl_gem_info(struct drm_device *dev, void *data,
return 0;
}
+
static int glamo_ioctl_gem_wait_rendering(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
@@ -61,6 +63,7 @@ static int glamo_ioctl_gem_wait_rendering(struct drm_device *dev, void *data,
return 0;
}
+
struct drm_ioctl_desc glamo_ioctls[] = {
DRM_IOCTL_DEF(DRM_GLAMO_CMDBUF, glamo_ioctl_cmdbuf, DRM_AUTH),
DRM_IOCTL_DEF(DRM_GLAMO_SWAP, glamo_ioctl_swap, DRM_AUTH),
@@ -75,18 +78,21 @@ struct drm_ioctl_desc glamo_ioctls[] = {
glamo_ioctl_gem_wait_rendering, DRM_AUTH),
};
+
static int glamodrm_firstopen(struct drm_device *dev)
{
DRM_DEBUG("\n");
return 0;
}
+
static int glamodrm_open(struct drm_device *dev, struct drm_file *fh)
{
DRM_DEBUG("\n");
return 0;
}
+
static void glamodrm_preclose(struct drm_device *dev, struct drm_file *fh)
{
DRM_DEBUG("\n");
@@ -97,11 +103,13 @@ static void glamodrm_postclose(struct drm_device *dev, struct drm_file *fh)
DRM_DEBUG("\n");
}
+
static void glamodrm_lastclose(struct drm_device *dev)
{
DRM_DEBUG("\n");
}
+
static int glamodrm_master_create(struct drm_device *dev,
struct drm_master *master)
{
@@ -110,26 +118,13 @@ static int glamodrm_master_create(struct drm_device *dev,
return 0;
}
+
static void glamodrm_master_destroy(struct drm_device *dev,
struct drm_master *master)
{
DRM_DEBUG("\n");
}
-static int glamodrm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-{
- return VM_FAULT_SIGBUS;
-}
-
-static int glamodrm_gem_init_object(struct drm_gem_object *obj)
-{
- return 0;
-}
-
-static void glamodrm_gem_free_object(struct drm_gem_object *obj)
-{
-}
-
static struct vm_operations_struct glamodrm_gem_vm_ops = {
.fault = glamodrm_gem_fault,
@@ -252,6 +247,7 @@ 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;
@@ -275,29 +271,30 @@ out_free:
static int glamodrm_remove(struct platform_device *pdev)
{
- struct glamodrm_handle *glamodrm = platform_get_drvdata(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);
/* Release registers */
- iounmap(glamodrm->reg_base);
- release_mem_region(glamodrm->reg->start, RESSIZE(glamodrm->reg));
+ iounmap(gdrm->reg_base);
+ release_mem_region(gdrm->reg->start, RESSIZE(gdrm->reg));
/* Release VRAM */
- iounmap(glamodrm->vram_base);
- release_mem_region(glamodrm->vram->start, RESSIZE(glamodrm->vram));
+ iounmap(gdrm->vram_base);
+ release_mem_region(gdrm->vram->start, RESSIZE(gdrm->vram));
/* Release command queue */
- iounmap(glamodrm->cmdq_base);
- release_mem_region(glamodrm->cmdq->start, RESSIZE(glamodrm->cmdq));
+ iounmap(gdrm->cmdq_base);
+ release_mem_region(gdrm->cmdq->start, RESSIZE(gdrm->cmdq));
- kfree(glamodrm);
+ kfree(gdrm);
return 0;
}
@@ -329,17 +326,20 @@ static struct platform_driver glamodrm_driver = {
},
};
+
static int __devinit glamodrm_init(void)
{
glamodrm_drm_driver.num_ioctls = DRM_ARRAY_SIZE(glamo_ioctls);
return platform_driver_register(&glamodrm_driver);
}
+
static void __exit glamodrm_exit(void)
{
platform_driver_unregister(&glamodrm_driver);
}
+
module_init(glamodrm_init);
module_exit(glamodrm_exit);