Commit 797f8fc4 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/armada: 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: Russell King <linux@armlinux.org.uk>
Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250701090722.13645-11-ville.syrjala@linux.intel.com
parent b4d36070
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -18,7 +18,9 @@ static const struct drm_framebuffer_funcs armada_fb_funcs = {
};

struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
	const struct drm_mode_fb_cmd2 *mode, struct armada_gem_object *obj)
						     const struct drm_format_info *info,
						     const struct drm_mode_fb_cmd2 *mode,
						     struct armada_gem_object *obj)
{
	struct armada_framebuffer *dfb;
	uint8_t format, config;
@@ -64,7 +66,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
	dfb->mod = config;
	dfb->fb.obj[0] = &obj->obj;

	drm_helper_mode_fill_fb_struct(dev, &dfb->fb, NULL, mode);
	drm_helper_mode_fill_fb_struct(dev, &dfb->fb, info, mode);

	ret = drm_framebuffer_init(dev, &dfb->fb, &armada_fb_funcs);
	if (ret) {
@@ -122,7 +124,7 @@ struct drm_framebuffer *armada_fb_create(struct drm_device *dev,
		goto err_unref;
	}

	dfb = armada_framebuffer_create(dev, mode, obj);
	dfb = armada_framebuffer_create(dev, info, mode, obj);
	if (IS_ERR(dfb)) {
		ret = PTR_ERR(dfb);
		goto err;
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ struct armada_framebuffer {
#define drm_fb_obj(fb) drm_to_armada_gem((fb)->obj[0])

struct armada_framebuffer *armada_framebuffer_create(struct drm_device *,
	const struct drm_format_info *info,
	const struct drm_mode_fb_cmd2 *, struct armada_gem_object *);
struct drm_framebuffer *armada_fb_create(struct drm_device *dev,
	struct drm_file *dfile, const struct drm_format_info *info,
+4 −1
Original line number Diff line number Diff line
@@ -78,7 +78,10 @@ int armada_fbdev_driver_fbdev_probe(struct drm_fb_helper *fbh,
		return -ENOMEM;
	}

	dfb = armada_framebuffer_create(dev, &mode, obj);
	dfb = armada_framebuffer_create(dev,
					drm_get_format_info(dev, mode.pixel_format,
							    mode.modifier[0]),
					&mode, obj);

	/*
	 * A reference is now held by the framebuffer object if