Use the devm_drm_dev_alloc provided by the drm framework to alloc
a struct hibmc_drm_private.

Signed-off-by: Tian Tao <tiant...@hisilicon.com>
---
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 16 ++++++----------
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h |  2 +-
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c 
b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index dd9fadc..c5b0b57 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -262,13 +262,6 @@ static int hibmc_load(struct drm_device *dev)
        struct hibmc_drm_private *priv = to_hibmc_drm_private(dev);
        int ret;
 
-       priv = drmm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-       if (!priv) {
-               drm_err(dev, "no memory to allocate for hibmc_drm_private\n");
-               return -ENOMEM;
-       }
-       dev->dev_private = priv;
-
        ret = hibmc_hw_init(priv);
        if (ret)
                goto err;
@@ -311,6 +304,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
                           const struct pci_device_id *ent)
 {
        struct drm_device *dev;
+       struct hibmc_drm_private *priv;
        int ret;
 
        ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev,
@@ -318,12 +312,14 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
        if (ret)
                return ret;
 
-       dev = drm_dev_alloc(&hibmc_driver, &pdev->dev);
-       if (IS_ERR(dev)) {
+       priv = devm_drm_dev_alloc(&pdev->dev, &hibmc_driver,
+                                 struct hibmc_drm_private, dev);
+       if (IS_ERR(priv)) {
                DRM_ERROR("failed to allocate drm_device\n");
-               return PTR_ERR(dev);
+               return PTR_ERR(priv);
        }
 
+       dev = &priv->dev;
        dev->pdev = pdev;
        pci_set_drvdata(pdev, dev);
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h 
b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
index e35353a..7e0c756 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
@@ -52,7 +52,7 @@ static inline struct hibmc_connector 
*to_hibmc_connector(struct drm_connector *c
 
 static inline struct hibmc_drm_private *to_hibmc_drm_private(struct drm_device 
*dev)
 {
-       return dev->dev_private;
+       return container_of(dev, struct hibmc_drm_private, dev);
 }
 
 void hibmc_set_power_mode(struct hibmc_drm_private *priv,
-- 
2.7.4

Reply via email to