Skip to content

Commit 4a792c5

Browse files
committed
drm/gma500: 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: Patrik Jakobsson <[email protected]> Reviewed-by: Thomas Zimmermann <[email protected]> Acked-by: Patrik Jakobsson <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent d26e853 commit 4a792c5

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

drivers/gpu/drm/gma500/fbdev.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,10 @@ int psb_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
203203
return PTR_ERR(backing);
204204
obj = &backing->base;
205205

206-
fb = psb_framebuffer_create(dev, &mode_cmd, obj);
206+
fb = psb_framebuffer_create(dev,
207+
drm_get_format_info(dev, mode_cmd.pixel_format,
208+
mode_cmd.modifier[0]),
209+
&mode_cmd, obj);
207210
if (IS_ERR(fb)) {
208211
ret = PTR_ERR(fb);
209212
goto err_drm_gem_object_put;

drivers/gpu/drm/gma500/framebuffer.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,23 @@ static const struct drm_framebuffer_funcs psb_fb_funcs = {
2929
*/
3030
static int psb_framebuffer_init(struct drm_device *dev,
3131
struct drm_framebuffer *fb,
32+
const struct drm_format_info *info,
3233
const struct drm_mode_fb_cmd2 *mode_cmd,
3334
struct drm_gem_object *obj)
3435
{
35-
const struct drm_format_info *info;
3636
int ret;
3737

3838
/*
3939
* Reject unknown formats, YUV formats, and formats with more than
4040
* 4 bytes per pixel.
4141
*/
42-
info = drm_get_format_info(dev, mode_cmd->pixel_format,
43-
mode_cmd->modifier[0]);
44-
if (!info || !info->depth || info->cpp[0] > 4)
42+
if (!info->depth || info->cpp[0] > 4)
4543
return -EINVAL;
4644

4745
if (mode_cmd->pitches[0] & 63)
4846
return -EINVAL;
4947

50-
drm_helper_mode_fill_fb_struct(dev, fb, NULL, mode_cmd);
48+
drm_helper_mode_fill_fb_struct(dev, fb, info, mode_cmd);
5149
fb->obj[0] = obj;
5250
ret = drm_framebuffer_init(dev, fb, &psb_fb_funcs);
5351
if (ret) {
@@ -60,6 +58,7 @@ static int psb_framebuffer_init(struct drm_device *dev,
6058
/**
6159
* psb_framebuffer_create - create a framebuffer backed by gt
6260
* @dev: our DRM device
61+
* @info: pixel format information
6362
* @mode_cmd: the description of the requested mode
6463
* @obj: the backing object
6564
*
@@ -69,6 +68,7 @@ static int psb_framebuffer_init(struct drm_device *dev,
6968
* TODO: review object references
7069
*/
7170
struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,
71+
const struct drm_format_info *info,
7272
const struct drm_mode_fb_cmd2 *mode_cmd,
7373
struct drm_gem_object *obj)
7474
{
@@ -79,7 +79,7 @@ struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,
7979
if (!fb)
8080
return ERR_PTR(-ENOMEM);
8181

82-
ret = psb_framebuffer_init(dev, fb, mode_cmd, obj);
82+
ret = psb_framebuffer_init(dev, fb, info, mode_cmd, obj);
8383
if (ret) {
8484
kfree(fb);
8585
return ERR_PTR(ret);
@@ -112,7 +112,7 @@ static struct drm_framebuffer *psb_user_framebuffer_create
112112
return ERR_PTR(-ENOENT);
113113

114114
/* Let the core code do all the work */
115-
fb = psb_framebuffer_create(dev, cmd, obj);
115+
fb = psb_framebuffer_create(dev, info, cmd, obj);
116116
if (IS_ERR(fb))
117117
drm_gem_object_put(obj);
118118

drivers/gpu/drm/gma500/psb_drv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ extern void psb_modeset_cleanup(struct drm_device *dev);
594594

595595
/* framebuffer */
596596
struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,
597+
const struct drm_format_info *info,
597598
const struct drm_mode_fb_cmd2 *mode_cmd,
598599
struct drm_gem_object *obj);
599600

0 commit comments

Comments
 (0)