]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/tegra: fbdev: Remove offset into framebuffer memory
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 21 Apr 2026 07:29:06 +0000 (09:29 +0200)
committerThierry Reding <treding@nvidia.com>
Thu, 28 May 2026 15:19:29 +0000 (17:19 +0200)
The screen_buffer field in struct fb_info contains the kernel address
of the first byte of framebuffer memory. Do not add the display offset.
This offset only describes scrolling during scanout.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: de2ba664c30f ("gpu: host1x: drm: Add memory manager and fb")
Cc: dri-devel@lists.freedesktop.org
Cc: linux-tegra@vger.kernel.org
Cc: <stable@vger.kernel.org> # v3.10+
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patch.msgid.link/20260421073646.144712-3-tzimmermann@suse.de
drivers/gpu/drm/tegra/fbdev.c

index 19e39fa54bfae279541041e6368608444e8339b0..793849199783aa8f8d4e7ec8b5cbf32db20b2975 100644 (file)
@@ -76,7 +76,6 @@ int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
        struct fb_info *info = helper->info;
        unsigned int bytes_per_pixel;
        struct drm_framebuffer *fb;
-       unsigned long offset;
        struct tegra_bo *bo;
        size_t size;
        int err;
@@ -115,9 +114,6 @@ int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 
        drm_fb_helper_fill_info(info, helper, sizes);
 
-       offset = info->var.xoffset * bytes_per_pixel +
-                info->var.yoffset * fb->pitches[0];
-
        if (bo->pages) {
                bo->vaddr = vmap(bo->pages, bo->num_pages, VM_MAP,
                                 pgprot_writecombine(PAGE_KERNEL));
@@ -129,9 +125,9 @@ int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
        }
 
        info->flags |= FBINFO_VIRTFB;
-       info->screen_buffer = bo->vaddr + offset;
+       info->screen_buffer = bo->vaddr;
        info->screen_size = size;
-       info->fix.smem_start = (unsigned long)(bo->iova + offset);
+       info->fix.smem_start = (unsigned long)(bo->iova);
        info->fix.smem_len = size;
 
        return 0;