Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e4d15d9 authored by Daniel Vetter's avatar Daniel Vetter Committed by Dave Airlie
Browse files

drm/radeon: introduce gem_to_radeon_bo helper



... and switch it to container_of upcasting.

v2: converted new pageflip code-paths.

Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 441921d5
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -1030,7 +1030,7 @@ static int evergreen_crtc_do_set_base(struct drm_crtc *crtc,
	 * just update base pointers
	 * just update base pointers
	 */
	 */
	obj = radeon_fb->obj;
	obj = radeon_fb->obj;
	rbo = obj->driver_private;
	rbo = gem_to_radeon_bo(obj);
	r = radeon_bo_reserve(rbo, false);
	r = radeon_bo_reserve(rbo, false);
	if (unlikely(r != 0))
	if (unlikely(r != 0))
		return r;
		return r;
@@ -1145,7 +1145,7 @@ static int evergreen_crtc_do_set_base(struct drm_crtc *crtc,


	if (!atomic && fb && fb != crtc->fb) {
	if (!atomic && fb && fb != crtc->fb) {
		radeon_fb = to_radeon_framebuffer(fb);
		radeon_fb = to_radeon_framebuffer(fb);
		rbo = radeon_fb->obj->driver_private;
		rbo = gem_to_radeon_bo(radeon_fb->obj);
		r = radeon_bo_reserve(rbo, false);
		r = radeon_bo_reserve(rbo, false);
		if (unlikely(r != 0))
		if (unlikely(r != 0))
			return r;
			return r;
@@ -1191,7 +1191,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
	}
	}


	obj = radeon_fb->obj;
	obj = radeon_fb->obj;
	rbo = obj->driver_private;
	rbo = gem_to_radeon_bo(obj);
	r = radeon_bo_reserve(rbo, false);
	r = radeon_bo_reserve(rbo, false);
	if (unlikely(r != 0))
	if (unlikely(r != 0))
		return r;
		return r;
@@ -1308,7 +1308,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,


	if (!atomic && fb && fb != crtc->fb) {
	if (!atomic && fb && fb != crtc->fb) {
		radeon_fb = to_radeon_framebuffer(fb);
		radeon_fb = to_radeon_framebuffer(fb);
		rbo = radeon_fb->obj->driver_private;
		rbo = gem_to_radeon_bo(radeon_fb->obj);
		r = radeon_bo_reserve(rbo, false);
		r = radeon_bo_reserve(rbo, false);
		if (unlikely(r != 0))
		if (unlikely(r != 0))
			return r;
			return r;
+1 −0
Original line number Original line Diff line number Diff line
@@ -261,6 +261,7 @@ struct radeon_bo {
	struct drm_gem_object		*gobj;
	struct drm_gem_object		*gobj;
	struct drm_gem_object		gem_base;
	struct drm_gem_object		gem_base;
};
};
#define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base)


struct radeon_bo_list {
struct radeon_bo_list {
	struct ttm_validate_buffer tv;
	struct ttm_validate_buffer tv;
+1 −1
Original line number Original line Diff line number Diff line
@@ -75,7 +75,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
				return -ENOENT;
				return -ENOENT;
			}
			}
			p->relocs_ptr[i] = &p->relocs[i];
			p->relocs_ptr[i] = &p->relocs[i];
			p->relocs[i].robj = p->relocs[i].gobj->driver_private;
			p->relocs[i].robj = gem_to_radeon_bo(p->relocs[i].gobj);
			p->relocs[i].lobj.bo = p->relocs[i].robj;
			p->relocs[i].lobj.bo = p->relocs[i].robj;
			p->relocs[i].lobj.wdomain = r->write_domain;
			p->relocs[i].lobj.wdomain = r->write_domain;
			p->relocs[i].lobj.rdomain = r->read_domains;
			p->relocs[i].lobj.rdomain = r->read_domains;
+1 −1
Original line number Original line Diff line number Diff line
@@ -860,7 +860,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
		if (rfb == NULL || rfb->obj == NULL) {
		if (rfb == NULL || rfb->obj == NULL) {
			continue;
			continue;
		}
		}
		robj = rfb->obj->driver_private;
		robj = gem_to_radeon_bo(rfb->obj);
		/* don't unpin kernel fb objects */
		/* don't unpin kernel fb objects */
		if (!radeon_fbdev_robj_is_fb(rdev, robj)) {
		if (!radeon_fbdev_robj_is_fb(rdev, robj)) {
			r = radeon_bo_reserve(robj, false);
			r = radeon_bo_reserve(robj, false);
+2 −2
Original line number Original line Diff line number Diff line
@@ -371,7 +371,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
	new_radeon_fb = to_radeon_framebuffer(fb);
	new_radeon_fb = to_radeon_framebuffer(fb);
	/* schedule unpin of the old buffer */
	/* schedule unpin of the old buffer */
	obj = old_radeon_fb->obj;
	obj = old_radeon_fb->obj;
	rbo = obj->driver_private;
	rbo = gem_to_radeon_bo(obj);
	work->old_rbo = rbo;
	work->old_rbo = rbo;
	INIT_WORK(&work->work, radeon_unpin_work_func);
	INIT_WORK(&work->work, radeon_unpin_work_func);


@@ -391,7 +391,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,


	/* pin the new buffer */
	/* pin the new buffer */
	obj = new_radeon_fb->obj;
	obj = new_radeon_fb->obj;
	rbo = obj->driver_private;
	rbo = gem_to_radeon_bo(obj);


	DRM_DEBUG_DRIVER("flip-ioctl() cur_fbo = %p, cur_bbo = %p\n",
	DRM_DEBUG_DRIVER("flip-ioctl() cur_fbo = %p, cur_bbo = %p\n",
			 work->old_rbo, rbo);
			 work->old_rbo, rbo);
Loading