Merge tag 'drm-misc-fixes-2024-06-26' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
drm-misc-fixes for v6.10-rc6: - nouveau tv mode fixes. - Add KOE TX26D202VM0BWA timings. - Fix fb_info when vmalloc is used, regression from CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/2e596c1e-9389-43c2-a029-06fe741c44c3@linux.intel.com
This commit is contained in:
@@ -524,6 +524,9 @@ struct fb_info *drm_fb_helper_alloc_info(struct drm_fb_helper *fb_helper)
|
||||
if (!info)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
if (!drm_leak_fbdev_smem)
|
||||
info->flags |= FBINFO_HIDE_SMEM_START;
|
||||
|
||||
ret = fb_alloc_cmap(&info->cmap, 256, 0);
|
||||
if (ret)
|
||||
goto err_release;
|
||||
@@ -1860,9 +1863,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
|
||||
info = fb_helper->info;
|
||||
info->var.pixclock = 0;
|
||||
|
||||
if (!drm_leak_fbdev_smem)
|
||||
info->flags |= FBINFO_HIDE_SMEM_START;
|
||||
|
||||
/* Need to drop locks to avoid recursive deadlock in
|
||||
* register_framebuffer. This is ok because the only thing left to do is
|
||||
* register the fbdev emulation instance in kernel_fb_helper_list. */
|
||||
|
||||
@@ -130,7 +130,10 @@ static int drm_fbdev_dma_helper_fb_probe(struct drm_fb_helper *fb_helper,
|
||||
info->flags |= FBINFO_READS_FAST; /* signal caching */
|
||||
info->screen_size = sizes->surface_height * fb->pitches[0];
|
||||
info->screen_buffer = map.vaddr;
|
||||
info->fix.smem_start = page_to_phys(virt_to_page(info->screen_buffer));
|
||||
if (!(info->flags & FBINFO_HIDE_SMEM_START)) {
|
||||
if (!drm_WARN_ON(dev, is_vmalloc_addr(info->screen_buffer)))
|
||||
info->fix.smem_start = page_to_phys(virt_to_page(info->screen_buffer));
|
||||
}
|
||||
info->fix.smem_len = info->screen_size;
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -209,6 +209,8 @@ static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode;
|
||||
|
||||
mode = drm_mode_duplicate(encoder->dev, tv_mode);
|
||||
if (!mode)
|
||||
continue;
|
||||
|
||||
mode->clock = tv_norm->tv_enc_mode.vrefresh *
|
||||
mode->htotal / 1000 *
|
||||
@@ -258,6 +260,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,
|
||||
if (modes[i].hdisplay == output_mode->hdisplay &&
|
||||
modes[i].vdisplay == output_mode->vdisplay) {
|
||||
mode = drm_mode_duplicate(encoder->dev, output_mode);
|
||||
if (!mode)
|
||||
continue;
|
||||
mode->type |= DRM_MODE_TYPE_PREFERRED;
|
||||
|
||||
} else {
|
||||
@@ -265,6 +269,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,
|
||||
modes[i].vdisplay, 60, false,
|
||||
(output_mode->flags &
|
||||
DRM_MODE_FLAG_INTERLACE), false);
|
||||
if (!mode)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* CVT modes are sometimes unsuitable... */
|
||||
|
||||
@@ -2752,6 +2752,7 @@ static const struct display_timing koe_tx26d202vm0bwa_timing = {
|
||||
.vfront_porch = { 3, 5, 10 },
|
||||
.vback_porch = { 2, 5, 10 },
|
||||
.vsync_len = { 5, 5, 5 },
|
||||
.flags = DISPLAY_FLAGS_DE_HIGH,
|
||||
};
|
||||
|
||||
static const struct panel_desc koe_tx26d202vm0bwa = {
|
||||
|
||||
Reference in New Issue
Block a user