Skip to content

Commit 1506b10

Browse files
committed
drm/msm: 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 lookups. For the fbdev case a manual drm_get_format_info() lookup is needed. Cc: Rob Clark <[email protected]> Cc: Abhinav Kumar <[email protected]> Cc: Dmitry Baryshkov <[email protected]> Cc: Sean Paul <[email protected]> Cc: Marijn Suijten <[email protected]> Cc: [email protected] Cc: [email protected] Reviewed-by: Thomas Zimmermann <[email protected]> Acked-by: Dmitry Baryshkov <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 7a46d03 commit 1506b10

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

drivers/gpu/drm/msm/msm_fb.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ struct msm_framebuffer {
3030
#define to_msm_framebuffer(x) container_of(x, struct msm_framebuffer, base)
3131

3232
static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
33+
const struct drm_format_info *info,
3334
const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos);
3435

3536
static int msm_framebuffer_dirtyfb(struct drm_framebuffer *fb,
@@ -154,7 +155,7 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
154155
}
155156
}
156157

157-
fb = msm_framebuffer_init(dev, mode_cmd, bos);
158+
fb = msm_framebuffer_init(dev, info, mode_cmd, bos);
158159
if (IS_ERR(fb)) {
159160
ret = PTR_ERR(fb);
160161
goto out_unref;
@@ -169,11 +170,9 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
169170
}
170171

171172
static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
173+
const struct drm_format_info *info,
172174
const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
173175
{
174-
const struct drm_format_info *info = drm_get_format_info(dev,
175-
mode_cmd->pixel_format,
176-
mode_cmd->modifier[0]);
177176
struct msm_drm_private *priv = dev->dev_private;
178177
struct msm_kms *kms = priv->kms;
179178
struct msm_framebuffer *msm_fb = NULL;
@@ -227,7 +226,7 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
227226
msm_fb->base.obj[i] = bos[i];
228227
}
229228

230-
drm_helper_mode_fill_fb_struct(dev, fb, NULL, mode_cmd);
229+
drm_helper_mode_fill_fb_struct(dev, fb, info, mode_cmd);
231230

232231
ret = drm_framebuffer_init(dev, fb, &msm_framebuffer_funcs);
233232
if (ret) {
@@ -276,7 +275,10 @@ msm_alloc_stolen_fb(struct drm_device *dev, int w, int h, int p, uint32_t format
276275

277276
msm_gem_object_set_name(bo, "stolenfb");
278277

279-
fb = msm_framebuffer_init(dev, &mode_cmd, &bo);
278+
fb = msm_framebuffer_init(dev,
279+
drm_get_format_info(dev, mode_cmd.pixel_format,
280+
mode_cmd.modifier[0]),
281+
&mode_cmd, &bo);
280282
if (IS_ERR(fb)) {
281283
DRM_DEV_ERROR(dev->dev, "failed to allocate fb\n");
282284
/* note: if fb creation failed, we can't rely on fb destroy

0 commit comments

Comments
 (0)