drm/mgag200: Convert to managed device resources where possible
Signed-off-by: Christopher Harvey <charvey@matrox.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
715f59cc23
commit
c2ed884424
2 changed files with 8 additions and 30 deletions
|
@ -249,7 +249,7 @@ int mgag200_fbdev_init(struct mga_device *mdev)
|
||||||
struct mga_fbdev *mfbdev;
|
struct mga_fbdev *mfbdev;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mfbdev = kzalloc(sizeof(struct mga_fbdev), GFP_KERNEL);
|
mfbdev = devm_kzalloc(mdev->dev->dev, sizeof(struct mga_fbdev), GFP_KERNEL);
|
||||||
if (!mfbdev)
|
if (!mfbdev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -258,10 +258,9 @@ int mgag200_fbdev_init(struct mga_device *mdev)
|
||||||
|
|
||||||
ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper,
|
ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper,
|
||||||
mdev->num_crtc, MGAG200FB_CONN_LIMIT);
|
mdev->num_crtc, MGAG200FB_CONN_LIMIT);
|
||||||
if (ret) {
|
if (ret)
|
||||||
kfree(mfbdev);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
|
||||||
drm_fb_helper_single_add_all_connectors(&mfbdev->helper);
|
drm_fb_helper_single_add_all_connectors(&mfbdev->helper);
|
||||||
|
|
||||||
/* disable all the possible outputs/crtcs before entering KMS mode */
|
/* disable all the possible outputs/crtcs before entering KMS mode */
|
||||||
|
@ -278,6 +277,4 @@ void mgag200_fbdev_fini(struct mga_device *mdev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mga_fbdev_destroy(mdev->dev, mdev->mfbdev);
|
mga_fbdev_destroy(mdev->dev, mdev->mfbdev);
|
||||||
kfree(mdev->mfbdev);
|
|
||||||
mdev->mfbdev = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,15 +76,6 @@ static const struct drm_mode_config_funcs mga_mode_funcs = {
|
||||||
.fb_create = mgag200_user_framebuffer_create,
|
.fb_create = mgag200_user_framebuffer_create,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Unmap the framebuffer from the core and release the memory */
|
|
||||||
static void mga_vram_fini(struct mga_device *mdev)
|
|
||||||
{
|
|
||||||
pci_iounmap(mdev->dev->pdev, mdev->rmmio);
|
|
||||||
mdev->rmmio = NULL;
|
|
||||||
if (mdev->mc.vram_base)
|
|
||||||
release_mem_region(mdev->mc.vram_base, mdev->mc.vram_window);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mga_probe_vram(struct mga_device *mdev, void __iomem *mem)
|
static int mga_probe_vram(struct mga_device *mdev, void __iomem *mem)
|
||||||
{
|
{
|
||||||
int offset;
|
int offset;
|
||||||
|
@ -140,7 +131,7 @@ static int mga_vram_init(struct mga_device *mdev)
|
||||||
remove_conflicting_framebuffers(aper, "mgafb", true);
|
remove_conflicting_framebuffers(aper, "mgafb", true);
|
||||||
kfree(aper);
|
kfree(aper);
|
||||||
|
|
||||||
if (!request_mem_region(mdev->mc.vram_base, mdev->mc.vram_window,
|
if (!devm_request_mem_region(mdev->dev->dev, mdev->mc.vram_base, mdev->mc.vram_window,
|
||||||
"mgadrmfb_vram")) {
|
"mgadrmfb_vram")) {
|
||||||
DRM_ERROR("can't reserve VRAM\n");
|
DRM_ERROR("can't reserve VRAM\n");
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
@ -173,13 +164,13 @@ static int mgag200_device_init(struct drm_device *dev,
|
||||||
mdev->rmmio_base = pci_resource_start(mdev->dev->pdev, 1);
|
mdev->rmmio_base = pci_resource_start(mdev->dev->pdev, 1);
|
||||||
mdev->rmmio_size = pci_resource_len(mdev->dev->pdev, 1);
|
mdev->rmmio_size = pci_resource_len(mdev->dev->pdev, 1);
|
||||||
|
|
||||||
if (!request_mem_region(mdev->rmmio_base, mdev->rmmio_size,
|
if (!devm_request_mem_region(mdev->dev->dev, mdev->rmmio_base, mdev->rmmio_size,
|
||||||
"mgadrmfb_mmio")) {
|
"mgadrmfb_mmio")) {
|
||||||
DRM_ERROR("can't reserve mmio registers\n");
|
DRM_ERROR("can't reserve mmio registers\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
mdev->rmmio = pci_iomap(dev->pdev, 1, 0);
|
mdev->rmmio = pcim_iomap(dev->pdev, 1, 0);
|
||||||
if (mdev->rmmio == NULL)
|
if (mdev->rmmio == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -188,10 +179,8 @@ static int mgag200_device_init(struct drm_device *dev,
|
||||||
mdev->reg_1e24 = RREG32(0x1e24);
|
mdev->reg_1e24 = RREG32(0x1e24);
|
||||||
|
|
||||||
ret = mga_vram_init(mdev);
|
ret = mga_vram_init(mdev);
|
||||||
if (ret) {
|
if (ret)
|
||||||
release_mem_region(mdev->rmmio_base, mdev->rmmio_size);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
|
||||||
|
|
||||||
mdev->bpp_shifts[0] = 0;
|
mdev->bpp_shifts[0] = 0;
|
||||||
mdev->bpp_shifts[1] = 1;
|
mdev->bpp_shifts[1] = 1;
|
||||||
|
@ -200,12 +189,6 @@ static int mgag200_device_init(struct drm_device *dev,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mgag200_device_fini(struct mga_device *mdev)
|
|
||||||
{
|
|
||||||
release_mem_region(mdev->rmmio_base, mdev->rmmio_size);
|
|
||||||
mga_vram_fini(mdev);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Functions here will be called by the core once it's bound the driver to
|
* Functions here will be called by the core once it's bound the driver to
|
||||||
* a PCI device
|
* a PCI device
|
||||||
|
@ -217,7 +200,7 @@ int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
|
||||||
struct mga_device *mdev;
|
struct mga_device *mdev;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
mdev = kzalloc(sizeof(struct mga_device), GFP_KERNEL);
|
mdev = devm_kzalloc(dev->dev, sizeof(struct mga_device), GFP_KERNEL);
|
||||||
if (mdev == NULL)
|
if (mdev == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
dev->dev_private = (void *)mdev;
|
dev->dev_private = (void *)mdev;
|
||||||
|
@ -258,8 +241,6 @@ int mgag200_driver_unload(struct drm_device *dev)
|
||||||
mgag200_fbdev_fini(mdev);
|
mgag200_fbdev_fini(mdev);
|
||||||
drm_mode_config_cleanup(dev);
|
drm_mode_config_cleanup(dev);
|
||||||
mgag200_mm_fini(mdev);
|
mgag200_mm_fini(mdev);
|
||||||
mgag200_device_fini(mdev);
|
|
||||||
kfree(mdev);
|
|
||||||
dev->dev_private = NULL;
|
dev->dev_private = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue