mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
drm/i915: Use the mappable sizes determined by GTT for consistency.
There should be no difference, but we can eliminate redundant code. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
a6044e23b7
commit
35c3047ad1
2 changed files with 10 additions and 17 deletions
|
@ -6694,12 +6694,7 @@ void intel_modeset_init(struct drm_device *dev)
|
||||||
dev->mode_config.max_width = 8192;
|
dev->mode_config.max_width = 8192;
|
||||||
dev->mode_config.max_height = 8192;
|
dev->mode_config.max_height = 8192;
|
||||||
}
|
}
|
||||||
|
dev->mode_config.fb_base = dev->agp->base;
|
||||||
/* set memory base */
|
|
||||||
if (IS_GEN2(dev))
|
|
||||||
dev->mode_config.fb_base = pci_resource_start(dev->pdev, 0);
|
|
||||||
else
|
|
||||||
dev->mode_config.fb_base = pci_resource_start(dev->pdev, 2);
|
|
||||||
|
|
||||||
if (IS_MOBILE(dev) || !IS_GEN2(dev))
|
if (IS_MOBILE(dev) || !IS_GEN2(dev))
|
||||||
dev_priv->num_pipe = 2;
|
dev_priv->num_pipe = 2;
|
||||||
|
|
|
@ -62,6 +62,7 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
|
||||||
struct drm_fb_helper_surface_size *sizes)
|
struct drm_fb_helper_surface_size *sizes)
|
||||||
{
|
{
|
||||||
struct drm_device *dev = ifbdev->helper.dev;
|
struct drm_device *dev = ifbdev->helper.dev;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
struct fb_info *info;
|
struct fb_info *info;
|
||||||
struct drm_framebuffer *fb;
|
struct drm_framebuffer *fb;
|
||||||
struct drm_mode_fb_cmd mode_cmd;
|
struct drm_mode_fb_cmd mode_cmd;
|
||||||
|
@ -77,7 +78,7 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
|
||||||
mode_cmd.height = sizes->surface_height;
|
mode_cmd.height = sizes->surface_height;
|
||||||
|
|
||||||
mode_cmd.bpp = sizes->surface_bpp;
|
mode_cmd.bpp = sizes->surface_bpp;
|
||||||
mode_cmd.pitch = ALIGN(mode_cmd.width * ((mode_cmd.bpp + 1) / 8), 64);
|
mode_cmd.pitch = ALIGN(mode_cmd.width * ((mode_cmd.bpp + 7) / 8), 64);
|
||||||
mode_cmd.depth = sizes->surface_depth;
|
mode_cmd.depth = sizes->surface_depth;
|
||||||
|
|
||||||
size = mode_cmd.pitch * mode_cmd.height;
|
size = mode_cmd.pitch * mode_cmd.height;
|
||||||
|
@ -120,6 +121,11 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
|
||||||
info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT;
|
info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT;
|
||||||
info->fbops = &intelfb_ops;
|
info->fbops = &intelfb_ops;
|
||||||
|
|
||||||
|
ret = fb_alloc_cmap(&info->cmap, 256, 0);
|
||||||
|
if (ret) {
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto out_unpin;
|
||||||
|
}
|
||||||
/* setup aperture base/size for vesafb takeover */
|
/* setup aperture base/size for vesafb takeover */
|
||||||
info->apertures = alloc_apertures(1);
|
info->apertures = alloc_apertures(1);
|
||||||
if (!info->apertures) {
|
if (!info->apertures) {
|
||||||
|
@ -127,10 +133,8 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
|
||||||
goto out_unpin;
|
goto out_unpin;
|
||||||
}
|
}
|
||||||
info->apertures->ranges[0].base = dev->mode_config.fb_base;
|
info->apertures->ranges[0].base = dev->mode_config.fb_base;
|
||||||
if (!IS_GEN2(dev))
|
info->apertures->ranges[0].size =
|
||||||
info->apertures->ranges[0].size = pci_resource_len(dev->pdev, 2);
|
dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT;
|
||||||
else
|
|
||||||
info->apertures->ranges[0].size = pci_resource_len(dev->pdev, 0);
|
|
||||||
|
|
||||||
info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset;
|
info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset;
|
||||||
info->fix.smem_len = size;
|
info->fix.smem_len = size;
|
||||||
|
@ -140,12 +144,6 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
|
||||||
ret = -ENOSPC;
|
ret = -ENOSPC;
|
||||||
goto out_unpin;
|
goto out_unpin;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = fb_alloc_cmap(&info->cmap, 256, 0);
|
|
||||||
if (ret) {
|
|
||||||
ret = -ENOMEM;
|
|
||||||
goto out_unpin;
|
|
||||||
}
|
|
||||||
info->screen_size = size;
|
info->screen_size = size;
|
||||||
|
|
||||||
// memset(info->screen_base, 0, size);
|
// memset(info->screen_base, 0, size);
|
||||||
|
|
Loading…
Reference in a new issue