struct mga_device *mdev;
int ret;
- mdev = devm_kzalloc(&pdev->dev, sizeof(*mdev), GFP_KERNEL);
- if (!mdev)
- return ERR_PTR(-ENOMEM);
+ mdev = devm_drm_dev_alloc(&pdev->dev, &mgag200_driver,
+ struct mga_device, base);
+ if (IS_ERR(mdev))
+ return mdev;
dev = &mdev->base;
- ret = drm_dev_init(dev, &mgag200_driver, &pdev->dev);
- if (ret)
- return ERR_PTR(ret);
-
dev->pdev = pdev;
pci_set_drvdata(pdev, dev);
ret = mgag200_device_init(mdev, flags);
if (ret)
- goto err_drm_dev_put;
+ return ERR_PTR(ret);
return mdev;
-
-err_drm_dev_put:
- drm_dev_put(dev);
- return ERR_PTR(ret);
}
/*
return ret;
mdev = mgag200_device_create(pdev, ent->driver_data);
- if (IS_ERR(mdev)) {
- ret = PTR_ERR(mdev);
- goto err_drm_dev_put;
- }
+ if (IS_ERR(mdev))
+ return PTR_ERR(mdev);
dev = &mdev->base;
ret = drm_dev_register(dev, ent->driver_data);
if (ret)
- goto err_drm_dev_put;
+ return ret;
drm_fbdev_generic_setup(dev, 0);
return 0;
-
-err_drm_dev_put:
- drm_dev_put(dev);
- return ret;
}
static void mgag200_pci_remove(struct pci_dev *pdev)
struct drm_device *dev = pci_get_drvdata(pdev);
drm_dev_unregister(dev);
- drm_dev_put(dev);
}
static struct pci_driver mgag200_pci_driver = {