mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
drm/tegra: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
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. Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Mikko Perttunen <mperttunen@nvidia.com> Cc: linux-tegra@vger.kernel.org Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250701090722.13645-17-ville.syrjala@linux.intel.com
This commit is contained in:
parent
1506b10310
commit
b146e3e03b
|
|
@ -185,6 +185,7 @@ bool tegra_fb_is_bottom_up(struct drm_framebuffer *framebuffer);
|
|||
int tegra_fb_get_tiling(struct drm_framebuffer *framebuffer,
|
||||
struct tegra_bo_tiling *tiling);
|
||||
struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,
|
||||
const struct drm_format_info *info,
|
||||
const struct drm_mode_fb_cmd2 *mode_cmd,
|
||||
struct tegra_bo **planes,
|
||||
unsigned int num_planes);
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ static const struct drm_framebuffer_funcs tegra_fb_funcs = {
|
|||
};
|
||||
|
||||
struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,
|
||||
const struct drm_format_info *info,
|
||||
const struct drm_mode_fb_cmd2 *mode_cmd,
|
||||
struct tegra_bo **planes,
|
||||
unsigned int num_planes)
|
||||
|
|
@ -114,7 +115,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,
|
|||
if (!fb)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
drm_helper_mode_fill_fb_struct(drm, fb, NULL, mode_cmd);
|
||||
drm_helper_mode_fill_fb_struct(drm, fb, info, mode_cmd);
|
||||
|
||||
for (i = 0; i < fb->format->num_planes; i++)
|
||||
fb->obj[i] = &planes[i]->gem;
|
||||
|
|
@ -166,7 +167,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
|
|||
planes[i] = to_tegra_bo(gem);
|
||||
}
|
||||
|
||||
fb = tegra_fb_alloc(drm, cmd, planes, i);
|
||||
fb = tegra_fb_alloc(drm, info, cmd, planes, i);
|
||||
if (IS_ERR(fb)) {
|
||||
err = PTR_ERR(fb);
|
||||
goto unreference;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,9 @@ int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
|
|||
return PTR_ERR(info);
|
||||
}
|
||||
|
||||
fb = tegra_fb_alloc(drm, &cmd, &bo, 1);
|
||||
fb = tegra_fb_alloc(drm,
|
||||
drm_get_format_info(drm, cmd.pixel_format, cmd.modifier[0]),
|
||||
&cmd, &bo, 1);
|
||||
if (IS_ERR(fb)) {
|
||||
err = PTR_ERR(fb);
|
||||
dev_err(drm->dev, "failed to allocate DRM framebuffer: %d\n",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user