From: Thierry Reding <tred...@nvidia.com>

The DRM core can now cope with drivers that don't have an associated
struct drm_bus, so the host1x implementation is no longer useful.

Signed-off-by: Thierry Reding <treding at nvidia.com>
---
 drivers/gpu/drm/tegra/Makefile |  1 -
 drivers/gpu/drm/tegra/bus.c    | 64 ------------------------------------------
 drivers/gpu/drm/tegra/drm.c    | 35 +++++++++++++++++++----
 drivers/gpu/drm/tegra/drm.h    |  4 ---
 4 files changed, 30 insertions(+), 74 deletions(-)
 delete mode 100644 drivers/gpu/drm/tegra/bus.c

diff --git a/drivers/gpu/drm/tegra/Makefile b/drivers/gpu/drm/tegra/Makefile
index d43f21bb4596..2c66a8db9da4 100644
--- a/drivers/gpu/drm/tegra/Makefile
+++ b/drivers/gpu/drm/tegra/Makefile
@@ -1,7 +1,6 @@
 ccflags-$(CONFIG_DRM_TEGRA_DEBUG) += -DDEBUG

 tegra-drm-y := \
-       bus.o \
        drm.o \
        gem.o \
        fb.o \
diff --git a/drivers/gpu/drm/tegra/bus.c b/drivers/gpu/drm/tegra/bus.c
deleted file mode 100644
index b3a66d65cb53..000000000000
--- a/drivers/gpu/drm/tegra/bus.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2013 NVIDIA Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include "drm.h"
-
-static int drm_host1x_set_busid(struct drm_device *dev,
-                               struct drm_master *master)
-{
-       const char *device = dev_name(dev->dev);
-       const char *bus = dev->dev->bus->name;
-
-       master->unique_len = strlen(bus) + 1 + strlen(device);
-       master->unique_size = master->unique_len;
-
-       master->unique = kmalloc(master->unique_len + 1, GFP_KERNEL);
-       if (!master->unique)
-               return -ENOMEM;
-
-       snprintf(master->unique, master->unique_len + 1, "%s:%s", bus, device);
-
-       return 0;
-}
-
-static struct drm_bus drm_host1x_bus = {
-       .set_busid = drm_host1x_set_busid,
-};
-
-int drm_host1x_init(struct drm_driver *driver, struct host1x_device *device)
-{
-       struct drm_device *drm;
-       int ret;
-
-       driver->bus = &drm_host1x_bus;
-
-       drm = drm_dev_alloc(driver, &device->dev);
-       if (!drm)
-               return -ENOMEM;
-
-       ret = drm_dev_register(drm, 0);
-       if (ret)
-               goto err_free;
-
-       DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", driver->name,
-                driver->major, driver->minor, driver->patchlevel,
-                driver->date, drm->primary->index);
-
-       return 0;
-
-err_free:
-       drm_dev_unref(drm);
-       return ret;
-}
-
-void drm_host1x_exit(struct drm_driver *driver, struct host1x_device *device)
-{
-       struct tegra_drm *tegra = dev_get_drvdata(&device->dev);
-
-       drm_put_dev(tegra->drm);
-}
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index d492c2f12ca8..fd736efd14bd 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -33,7 +33,6 @@ static int tegra_drm_load(struct drm_device *drm, unsigned 
long flags)
        if (!tegra)
                return -ENOMEM;

-       dev_set_drvdata(drm->dev, tegra);
        mutex_init(&tegra->clients_lock);
        INIT_LIST_HEAD(&tegra->clients);
        drm->dev_private = tegra;
@@ -644,14 +643,40 @@ int tegra_drm_unregister_client(struct tegra_drm *tegra,
        return 0;
 }

-static int host1x_drm_probe(struct host1x_device *device)
+static int host1x_drm_probe(struct host1x_device *dev)
 {
-       return drm_host1x_init(&tegra_drm_driver, device);
+       struct drm_driver *driver = &tegra_drm_driver;
+       struct drm_device *drm;
+       int err;
+
+       drm = drm_dev_alloc(driver, &dev->dev);
+       if (!drm)
+               return -ENOMEM;
+
+       drm_dev_set_unique(drm, dev_name(&dev->dev));
+       dev_set_drvdata(&dev->dev, drm);
+
+       err = drm_dev_register(drm, 0);
+       if (err < 0)
+               goto unref;
+
+       DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", driver->name,
+                driver->major, driver->minor, driver->patchlevel,
+                driver->date, drm->primary->index);
+
+       return 0;
+
+unref:
+       drm_dev_unref(drm);
+       return err;
 }

-static int host1x_drm_remove(struct host1x_device *device)
+static int host1x_drm_remove(struct host1x_device *dev)
 {
-       drm_host1x_exit(&tegra_drm_driver, device);
+       struct drm_device *drm = dev_get_drvdata(&dev->dev);
+
+       drm_dev_unregister(drm);
+       drm_dev_unref(drm);

        return 0;
 }
diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index d100f706d818..0d30689dff01 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -249,10 +249,6 @@ static inline int tegra_output_check_mode(struct 
tegra_output *output,
        return output ? -ENOSYS : -EINVAL;
 }

-/* from bus.c */
-int drm_host1x_init(struct drm_driver *driver, struct host1x_device *device);
-void drm_host1x_exit(struct drm_driver *driver, struct host1x_device *device);
-
 /* from rgb.c */
 int tegra_dc_rgb_probe(struct tegra_dc *dc);
 int tegra_dc_rgb_remove(struct tegra_dc *dc);
-- 
1.9.2

Reply via email to