mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-03 17:51:23 +00:00

Plumb the format info from .fb_create() all the way to
drm_helper_mode_fill_fb_struct() to avoid the redundant
lookup.
For the fbdev case a manual drm_get_format_info() lookup
is needed.
The patch is based on the driver parts of the patchset at Link:
below, which missed converting the omap driver.
Due to the absence of this change in the patchset at Link:, after the
Fixed: commit below, omap_framebuffer_init() ->
drm_helper_mode_fill_fb_struct() set drm_framebuffer::format incorrectly
to NULL, which lead to the !fb->format WARN() in drm_framebuffer_init()
and causing framebuffer creation to fail. This patch fixes both of these
issues.
v2: Amend the commit log mentioning the functional issues the patch
fixes. (Tomi)
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Fixes: 41ab92d35c
("drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory")
Reported-by: Mark Brown <broonie@kernel.org>
Closes: https://lore.kernel.org/all/98b3a62c-91ff-4f91-a58b-e1265f84180b@sirena.org.uk
Link: https://lore.kernel.org/all/20250701090722.13645-1-ville.syrjala@linux.intel.com
Tested-by: Mark Brown <broonie@kernel.org>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250805175752.690504-2-imre.deak@intel.com
39 lines
1.2 KiB
C
39 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* omap_fb.h -- OMAP DRM Framebuffer
|
|
*
|
|
* Copyright (C) 2011 Texas Instruments
|
|
* Author: Rob Clark <rob@ti.com>
|
|
*/
|
|
|
|
#ifndef __OMAPDRM_FB_H__
|
|
#define __OMAPDRM_FB_H__
|
|
|
|
struct drm_connector;
|
|
struct drm_device;
|
|
struct drm_file;
|
|
struct drm_framebuffer;
|
|
struct drm_format_info;
|
|
struct drm_gem_object;
|
|
struct drm_mode_fb_cmd2;
|
|
struct drm_plane_state;
|
|
struct omap_overlay_info;
|
|
struct seq_file;
|
|
|
|
struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
|
|
struct drm_file *file, const struct drm_format_info *info,
|
|
const struct drm_mode_fb_cmd2 *mode_cmd);
|
|
struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
|
|
const struct drm_format_info *info,
|
|
const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos);
|
|
int omap_framebuffer_pin(struct drm_framebuffer *fb);
|
|
void omap_framebuffer_unpin(struct drm_framebuffer *fb);
|
|
void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
|
|
struct drm_plane_state *state,
|
|
struct omap_overlay_info *info,
|
|
struct omap_overlay_info *r_info);
|
|
bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb);
|
|
void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m);
|
|
|
|
#endif /* __OMAPDRM_FB_H__ */
|