drm/cirrus: cirrus_framebuffer -> drm_framebuffer
Now cirrus_framebuffer is just an empty wrapper around drm_framebuffer, we can drop it. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Thierry Reding <treding@nvidia.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: virtualization@lists.linux-foundation.org Link: https://patchwork.freedesktop.org/patch/msgid/20180330141138.28987-2-daniels@collabora.com
This commit is contained in:
Родитель
9d7e70020c
Коммит
121df61e5a
|
@ -92,7 +92,6 @@
|
||||||
|
|
||||||
#define to_cirrus_crtc(x) container_of(x, struct cirrus_crtc, base)
|
#define to_cirrus_crtc(x) container_of(x, struct cirrus_crtc, base)
|
||||||
#define to_cirrus_encoder(x) container_of(x, struct cirrus_encoder, base)
|
#define to_cirrus_encoder(x) container_of(x, struct cirrus_encoder, base)
|
||||||
#define to_cirrus_framebuffer(x) container_of(x, struct cirrus_framebuffer, base)
|
|
||||||
|
|
||||||
struct cirrus_crtc {
|
struct cirrus_crtc {
|
||||||
struct drm_crtc base;
|
struct drm_crtc base;
|
||||||
|
@ -117,10 +116,6 @@ struct cirrus_connector {
|
||||||
struct drm_connector base;
|
struct drm_connector base;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cirrus_framebuffer {
|
|
||||||
struct drm_framebuffer base;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct cirrus_mc {
|
struct cirrus_mc {
|
||||||
resource_size_t vram_size;
|
resource_size_t vram_size;
|
||||||
resource_size_t vram_base;
|
resource_size_t vram_base;
|
||||||
|
@ -151,7 +146,7 @@ struct cirrus_device {
|
||||||
|
|
||||||
struct cirrus_fbdev {
|
struct cirrus_fbdev {
|
||||||
struct drm_fb_helper helper;
|
struct drm_fb_helper helper;
|
||||||
struct cirrus_framebuffer gfb;
|
struct drm_framebuffer gfb;
|
||||||
void *sysram;
|
void *sysram;
|
||||||
int size;
|
int size;
|
||||||
int x1, y1, x2, y2; /* dirty rect */
|
int x1, y1, x2, y2; /* dirty rect */
|
||||||
|
@ -197,7 +192,7 @@ int cirrus_dumb_create(struct drm_file *file,
|
||||||
struct drm_mode_create_dumb *args);
|
struct drm_mode_create_dumb *args);
|
||||||
|
|
||||||
int cirrus_framebuffer_init(struct drm_device *dev,
|
int cirrus_framebuffer_init(struct drm_device *dev,
|
||||||
struct cirrus_framebuffer *gfb,
|
struct drm_framebuffer *gfb,
|
||||||
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);
|
||||||
|
|
||||||
|
|
|
@ -22,14 +22,14 @@ static void cirrus_dirty_update(struct cirrus_fbdev *afbdev,
|
||||||
struct drm_gem_object *obj;
|
struct drm_gem_object *obj;
|
||||||
struct cirrus_bo *bo;
|
struct cirrus_bo *bo;
|
||||||
int src_offset, dst_offset;
|
int src_offset, dst_offset;
|
||||||
int bpp = afbdev->gfb.base.format->cpp[0];
|
int bpp = afbdev->gfb.format->cpp[0];
|
||||||
int ret = -EBUSY;
|
int ret = -EBUSY;
|
||||||
bool unmap = false;
|
bool unmap = false;
|
||||||
bool store_for_later = false;
|
bool store_for_later = false;
|
||||||
int x2, y2;
|
int x2, y2;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
obj = afbdev->gfb.base.obj[0];
|
obj = afbdev->gfb.obj[0];
|
||||||
bo = gem_to_cirrus_bo(obj);
|
bo = gem_to_cirrus_bo(obj);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -82,7 +82,7 @@ static void cirrus_dirty_update(struct cirrus_fbdev *afbdev,
|
||||||
}
|
}
|
||||||
for (i = y; i < y + height; i++) {
|
for (i = y; i < y + height; i++) {
|
||||||
/* assume equal stride for now */
|
/* assume equal stride for now */
|
||||||
src_offset = dst_offset = i * afbdev->gfb.base.pitches[0] + (x * bpp);
|
src_offset = dst_offset = i * afbdev->gfb.pitches[0] + (x * bpp);
|
||||||
memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, width * bpp);
|
memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, width * bpp);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ static int cirrusfb_create(struct drm_fb_helper *helper,
|
||||||
gfbdev->sysram = sysram;
|
gfbdev->sysram = sysram;
|
||||||
gfbdev->size = size;
|
gfbdev->size = size;
|
||||||
|
|
||||||
fb = &gfbdev->gfb.base;
|
fb = &gfbdev->gfb;
|
||||||
if (!fb) {
|
if (!fb) {
|
||||||
DRM_INFO("fb is NULL\n");
|
DRM_INFO("fb is NULL\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -246,19 +246,19 @@ static int cirrusfb_create(struct drm_fb_helper *helper,
|
||||||
static int cirrus_fbdev_destroy(struct drm_device *dev,
|
static int cirrus_fbdev_destroy(struct drm_device *dev,
|
||||||
struct cirrus_fbdev *gfbdev)
|
struct cirrus_fbdev *gfbdev)
|
||||||
{
|
{
|
||||||
struct cirrus_framebuffer *gfb = &gfbdev->gfb;
|
struct drm_framebuffer *gfb = &gfbdev->gfb;
|
||||||
|
|
||||||
drm_fb_helper_unregister_fbi(&gfbdev->helper);
|
drm_fb_helper_unregister_fbi(&gfbdev->helper);
|
||||||
|
|
||||||
if (gfb->base.obj[0]) {
|
if (gfb->obj[0]) {
|
||||||
drm_gem_object_put_unlocked(gfb->base.obj[0]);
|
drm_gem_object_put_unlocked(gfb->obj[0]);
|
||||||
gfb->base.obj[0] = NULL;
|
gfb->obj[0] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vfree(gfbdev->sysram);
|
vfree(gfbdev->sysram);
|
||||||
drm_fb_helper_fini(&gfbdev->helper);
|
drm_fb_helper_fini(&gfbdev->helper);
|
||||||
drm_framebuffer_unregister_private(&gfb->base);
|
drm_framebuffer_unregister_private(gfb);
|
||||||
drm_framebuffer_cleanup(&gfb->base);
|
drm_framebuffer_cleanup(gfb);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,15 +20,15 @@ static const struct drm_framebuffer_funcs cirrus_fb_funcs = {
|
||||||
};
|
};
|
||||||
|
|
||||||
int cirrus_framebuffer_init(struct drm_device *dev,
|
int cirrus_framebuffer_init(struct drm_device *dev,
|
||||||
struct cirrus_framebuffer *gfb,
|
struct drm_framebuffer *gfb,
|
||||||
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)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
drm_helper_mode_fill_fb_struct(dev, &gfb->base, mode_cmd);
|
drm_helper_mode_fill_fb_struct(dev, gfb, mode_cmd);
|
||||||
gfb->base.obj[0] = obj;
|
gfb->obj[0] = obj;
|
||||||
ret = drm_framebuffer_init(dev, &gfb->base, &cirrus_fb_funcs);
|
ret = drm_framebuffer_init(dev, gfb, &cirrus_fb_funcs);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DRM_ERROR("drm_framebuffer_init failed: %d\n", ret);
|
DRM_ERROR("drm_framebuffer_init failed: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -43,7 +43,7 @@ cirrus_user_framebuffer_create(struct drm_device *dev,
|
||||||
{
|
{
|
||||||
struct cirrus_device *cdev = dev->dev_private;
|
struct cirrus_device *cdev = dev->dev_private;
|
||||||
struct drm_gem_object *obj;
|
struct drm_gem_object *obj;
|
||||||
struct cirrus_framebuffer *cirrus_fb;
|
struct drm_framebuffer *fb;
|
||||||
u32 bpp;
|
u32 bpp;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -57,19 +57,19 @@ cirrus_user_framebuffer_create(struct drm_device *dev,
|
||||||
if (obj == NULL)
|
if (obj == NULL)
|
||||||
return ERR_PTR(-ENOENT);
|
return ERR_PTR(-ENOENT);
|
||||||
|
|
||||||
cirrus_fb = kzalloc(sizeof(*cirrus_fb), GFP_KERNEL);
|
fb = kzalloc(sizeof(*fb), GFP_KERNEL);
|
||||||
if (!cirrus_fb) {
|
if (!fb) {
|
||||||
drm_gem_object_put_unlocked(obj);
|
drm_gem_object_put_unlocked(obj);
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = cirrus_framebuffer_init(dev, cirrus_fb, mode_cmd, obj);
|
ret = cirrus_framebuffer_init(dev, fb, mode_cmd, obj);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
drm_gem_object_put_unlocked(obj);
|
drm_gem_object_put_unlocked(obj);
|
||||||
kfree(cirrus_fb);
|
kfree(fb);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
return &cirrus_fb->base;
|
return fb;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct drm_mode_config_funcs cirrus_mode_funcs = {
|
static const struct drm_mode_config_funcs cirrus_mode_funcs = {
|
||||||
|
|
|
@ -101,17 +101,13 @@ static int cirrus_crtc_do_set_base(struct drm_crtc *crtc,
|
||||||
int x, int y, int atomic)
|
int x, int y, int atomic)
|
||||||
{
|
{
|
||||||
struct cirrus_device *cdev = crtc->dev->dev_private;
|
struct cirrus_device *cdev = crtc->dev->dev_private;
|
||||||
struct drm_gem_object *obj;
|
|
||||||
struct cirrus_framebuffer *cirrus_fb;
|
|
||||||
struct cirrus_bo *bo;
|
struct cirrus_bo *bo;
|
||||||
int ret;
|
int ret;
|
||||||
u64 gpu_addr;
|
u64 gpu_addr;
|
||||||
|
|
||||||
/* push the previous fb to system ram */
|
/* push the previous fb to system ram */
|
||||||
if (!atomic && fb) {
|
if (!atomic && fb) {
|
||||||
cirrus_fb = to_cirrus_framebuffer(fb);
|
bo = gem_to_cirrus_bo(fb->obj[0]);
|
||||||
obj = cirrus_fb->base.obj[0];
|
|
||||||
bo = gem_to_cirrus_bo(obj);
|
|
||||||
ret = cirrus_bo_reserve(bo, false);
|
ret = cirrus_bo_reserve(bo, false);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -119,9 +115,7 @@ static int cirrus_crtc_do_set_base(struct drm_crtc *crtc,
|
||||||
cirrus_bo_unreserve(bo);
|
cirrus_bo_unreserve(bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
cirrus_fb = to_cirrus_framebuffer(crtc->primary->fb);
|
bo = gem_to_cirrus_bo(crtc->primary->fb->obj[0]);
|
||||||
obj = cirrus_fb->base.obj[0];
|
|
||||||
bo = gem_to_cirrus_bo(obj);
|
|
||||||
|
|
||||||
ret = cirrus_bo_reserve(bo, false);
|
ret = cirrus_bo_reserve(bo, false);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -133,7 +127,7 @@ static int cirrus_crtc_do_set_base(struct drm_crtc *crtc,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (&cdev->mode_info.gfbdev->gfb == cirrus_fb) {
|
if (&cdev->mode_info.gfbdev->gfb == crtc->primary->fb) {
|
||||||
/* if pushing console in kmap it */
|
/* if pushing console in kmap it */
|
||||||
ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap);
|
ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче