summaryrefslogtreecommitdiff
path: root/drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c')
-rw-r--r--drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c58
1 files changed, 51 insertions, 7 deletions
diff --git a/drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c b/drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c
index 571ab04e1e2..0d982e38d45 100644
--- a/drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c
+++ b/drivers/gpu/mali/mali400ko/x11/mali_drm/mali/mali_drv.c
@@ -18,6 +18,7 @@
#include "mali_drv.h"
static struct platform_device *dev0;
+static struct platform_device *dev1;
void mali_drm_preclose(struct drm_device *dev, struct drm_file *file_priv)
{
@@ -60,6 +61,7 @@ static const struct file_operations mali_driver_fops =
static struct drm_driver driver =
{
+ .driver_features = DRIVER_USE_PLATFORM_DEVICE,
.load = mali_drm_load,
.unload = mali_drm_unload,
.context_dtor = NULL,
@@ -69,6 +71,8 @@ static struct drm_driver driver =
.lastclose = mali_drm_lastclose,
.suspend = mali_drm_suspend,
.resume = mali_drm_resume,
+ .get_map_ofs = drm_core_get_map_ofs,
+ .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = NULL,
.fops = &mali_driver_fops,
.name = DRIVER_NAME,
@@ -79,23 +83,60 @@ static struct drm_driver driver =
.patchlevel = DRIVER_PATCHLEVEL,
};
-static struct platform_driver platform_drm_driver;
+static struct drm_driver driver1 =
+{
+ .driver_features = DRIVER_USE_PLATFORM_DEVICE,
+ .load = mali_drm_load,
+ .unload = mali_drm_unload,
+ .context_dtor = NULL,
+ .reclaim_buffers = NULL,
+ .reclaim_buffers_idlelocked = NULL,
+ .preclose = mali_drm_preclose,
+ .lastclose = mali_drm_lastclose,
+ .suspend = mali_drm_suspend,
+ .resume = mali_drm_resume,
+ .get_map_ofs = drm_core_get_map_ofs,
+ .get_reg_ofs = drm_core_get_reg_ofs,
+ .ioctls = NULL,
+ .fops = {
+ .owner = THIS_MODULE,
+ .open = drm_open,
+ .release = drm_release,
+ .unlocked_ioctl = drm_ioctl,
+ .mmap = drm_mmap,
+ .poll = drm_poll,
+ .fasync = drm_fasync,
+ },
+ .name = DRIVER_NAME,
+ .desc = DRIVER_DESC,
+ .date = DRIVER_DATE,
+ .major = DRIVER_MAJOR,
+ .minor = DRIVER_MINOR,
+ .patchlevel = DRIVER_PATCHLEVEL,
+};
int mali_drm_init(struct platform_device *dev)
{
printk(KERN_INFO "Mali DRM initialize, driver name: %s, version %d.%d\n", DRIVER_NAME, DRIVER_MAJOR, DRIVER_MINOR);
if (dev == dev0) {
driver.num_ioctls = 0;
- return drm_platform_init(&driver, dev0);
+ driver.platform_device = dev;
+ return drm_init(&driver);
+ } else if (dev == dev1) {
+ driver1.num_ioctls = 0;
+ driver1.platform_device = dev;
+ return drm_init(&driver1);
}
return 0;
-
}
void mali_drm_exit(struct platform_device *dev)
{
- if (dev0 == dev)
- drm_platform_exit(&driver, dev);
+ if (driver.platform_device == dev) {
+ drm_exit(&driver);
+ } else if (driver1.platform_device == dev) {
+ drm_exit(&driver1);
+ }
}
static int __devinit mali_platform_drm_probe(struct platform_device *dev)
@@ -120,6 +161,7 @@ static int mali_platform_drm_resume(struct platform_device *dev)
return 0;
}
+
static struct platform_driver platform_drm_driver = {
.probe = mali_platform_drm_probe,
.remove = __devexit_p(mali_platform_drm_remove),
@@ -134,13 +176,15 @@ static struct platform_driver platform_drm_driver = {
static int __init mali_platform_drm_init(void)
{
dev0 = platform_device_register_simple("mali_drm", 0, NULL, 0);
- return platform_driver_register(&platform_drm_driver);
+ dev1 = platform_device_register_simple("mali_drm", 1, NULL, 0);
+ return platform_driver_register( &platform_drm_driver );
}
static void __exit mali_platform_drm_exit(void)
{
- platform_driver_unregister(&platform_drm_driver);
+ platform_driver_unregister( &platform_drm_driver );
platform_device_unregister(dev0);
+ platform_device_unregister(dev1);
}
#ifdef MODULE