drm/rockchip: rockchip_drm_fb -> drm_framebuffer

Now that rockchip_drm_fb is just a wrapper around drm_framebuffer, we
can remove it.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Acked-by: Heiko Stübner <heiko@sntech.de>
Tested-by: Heiko Stübner <heiko@sntech.de>
Cc: Sandy Huang <hjc@rock-chips.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180330141138.28987-5-daniels@collabora.com
This commit is contained in:
Daniel Stone 2018-03-30 15:11:19 +01:00
parent 4c7c9a63f2
commit 957428f993
3 changed files with 21 additions and 40 deletions

View File

@ -25,21 +25,6 @@
#include "rockchip_drm_gem.h" #include "rockchip_drm_gem.h"
#include "rockchip_drm_psr.h" #include "rockchip_drm_psr.h"
#define to_rockchip_fb(x) container_of(x, struct rockchip_drm_fb, fb)
struct rockchip_drm_fb {
struct drm_framebuffer fb;
};
struct drm_gem_object *rockchip_fb_get_gem_obj(struct drm_framebuffer *fb,
unsigned int plane)
{
if (plane >= ROCKCHIP_MAX_FB_BUFFER)
return NULL;
return fb->obj[plane];
}
static int rockchip_drm_fb_dirty(struct drm_framebuffer *fb, static int rockchip_drm_fb_dirty(struct drm_framebuffer *fb,
struct drm_file *file, struct drm_file *file,
unsigned int flags, unsigned int color, unsigned int flags, unsigned int color,
@ -56,41 +41,40 @@ static const struct drm_framebuffer_funcs rockchip_drm_fb_funcs = {
.dirty = rockchip_drm_fb_dirty, .dirty = rockchip_drm_fb_dirty,
}; };
static struct rockchip_drm_fb * static struct drm_framebuffer *
rockchip_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd, rockchip_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd,
struct drm_gem_object **obj, unsigned int num_planes) struct drm_gem_object **obj, unsigned int num_planes)
{ {
struct rockchip_drm_fb *rockchip_fb; struct drm_framebuffer *fb;
int ret; int ret;
int i; int i;
rockchip_fb = kzalloc(sizeof(*rockchip_fb), GFP_KERNEL); fb = kzalloc(sizeof(*fb), GFP_KERNEL);
if (!rockchip_fb) if (!fb)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
drm_helper_mode_fill_fb_struct(dev, &rockchip_fb->fb, mode_cmd); drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
for (i = 0; i < num_planes; i++) for (i = 0; i < num_planes; i++)
rockchip_fb->fb.obj[i] = obj[i]; fb->obj[i] = obj[i];
ret = drm_framebuffer_init(dev, &rockchip_fb->fb, ret = drm_framebuffer_init(dev, fb, &rockchip_drm_fb_funcs);
&rockchip_drm_fb_funcs);
if (ret) { if (ret) {
DRM_DEV_ERROR(dev->dev, DRM_DEV_ERROR(dev->dev,
"Failed to initialize framebuffer: %d\n", "Failed to initialize framebuffer: %d\n",
ret); ret);
kfree(rockchip_fb); kfree(fb);
return ERR_PTR(ret); return ERR_PTR(ret);
} }
return rockchip_fb; return fb;
} }
static struct drm_framebuffer * static struct drm_framebuffer *
rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
const struct drm_mode_fb_cmd2 *mode_cmd) const struct drm_mode_fb_cmd2 *mode_cmd)
{ {
struct rockchip_drm_fb *rockchip_fb; struct drm_framebuffer *fb;
struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER]; struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER];
struct drm_gem_object *obj; struct drm_gem_object *obj;
unsigned int hsub; unsigned int hsub;
@ -129,13 +113,13 @@ rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
objs[i] = obj; objs[i] = obj;
} }
rockchip_fb = rockchip_fb_alloc(dev, mode_cmd, objs, i); fb = rockchip_fb_alloc(dev, mode_cmd, objs, i);
if (IS_ERR(rockchip_fb)) { if (IS_ERR(fb)) {
ret = PTR_ERR(rockchip_fb); ret = PTR_ERR(fb);
goto err_gem_object_unreference; goto err_gem_object_unreference;
} }
return &rockchip_fb->fb; return fb;
err_gem_object_unreference: err_gem_object_unreference:
for (i--; i >= 0; i--) for (i--; i >= 0; i--)
@ -218,13 +202,13 @@ rockchip_drm_framebuffer_init(struct drm_device *dev,
const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_mode_fb_cmd2 *mode_cmd,
struct drm_gem_object *obj) struct drm_gem_object *obj)
{ {
struct rockchip_drm_fb *rockchip_fb; struct drm_framebuffer *fb;
rockchip_fb = rockchip_fb_alloc(dev, mode_cmd, &obj, 1); fb = rockchip_fb_alloc(dev, mode_cmd, &obj, 1);
if (IS_ERR(rockchip_fb)) if (IS_ERR(fb))
return ERR_CAST(rockchip_fb); return ERR_CAST(fb);
return &rockchip_fb->fb; return fb;
} }
void rockchip_drm_mode_config_init(struct drm_device *dev) void rockchip_drm_mode_config_init(struct drm_device *dev)

View File

@ -22,7 +22,4 @@ rockchip_drm_framebuffer_init(struct drm_device *dev,
void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb); void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb);
void rockchip_drm_mode_config_init(struct drm_device *dev); void rockchip_drm_mode_config_init(struct drm_device *dev);
struct drm_gem_object *rockchip_fb_get_gem_obj(struct drm_framebuffer *fb,
unsigned int plane);
#endif /* _ROCKCHIP_DRM_FB_H */ #endif /* _ROCKCHIP_DRM_FB_H */

View File

@ -728,7 +728,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
return; return;
} }
obj = rockchip_fb_get_gem_obj(fb, 0); obj = fb->obj[0];
rk_obj = to_rockchip_obj(obj); rk_obj = to_rockchip_obj(obj);
actual_w = drm_rect_width(src) >> 16; actual_w = drm_rect_width(src) >> 16;
@ -758,7 +758,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
int vsub = drm_format_vert_chroma_subsampling(fb->format->format); int vsub = drm_format_vert_chroma_subsampling(fb->format->format);
int bpp = fb->format->cpp[1]; int bpp = fb->format->cpp[1];
uv_obj = rockchip_fb_get_gem_obj(fb, 1); uv_obj = fb->obj[1];
rk_uv_obj = to_rockchip_obj(uv_obj); rk_uv_obj = to_rockchip_obj(uv_obj);
offset = (src->x1 >> 16) * bpp / hsub; offset = (src->x1 >> 16) * bpp / hsub;