[Freedreno] [DPU PATCH 10/15] drm/msm: Remove dpu_kms_fbo and associated functions

Sean Paul seanpaul at chromium.org
Thu Jun 28 18:29:01 UTC 2018


It's not used anywhere and it lets us revert the changes to msm_fb
to match upstream.

Signed-off-by: Sean Paul <seanpaul at chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 279 ------------------------
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |  69 ------
 drivers/gpu/drm/msm/msm_drv.h           |   3 -
 drivers/gpu/drm/msm/msm_fb.c            |   4 +-
 4 files changed, 3 insertions(+), 352 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 30da3e047384..ddba0873466b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -698,134 +698,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
 	return ret;
 }
 
-/**
- * struct dpu_kms_fbo_fb - framebuffer creation list
- * @list: list of framebuffer attached to framebuffer object
- * @fb: Pointer to framebuffer attached to framebuffer object
- */
-struct dpu_kms_fbo_fb {
-	struct list_head list;
-	struct drm_framebuffer *fb;
-};
-
-struct drm_framebuffer *dpu_kms_fbo_create_fb(struct drm_device *dev,
-		struct dpu_kms_fbo *fbo)
-{
-	struct drm_framebuffer *fb = NULL;
-	struct dpu_kms_fbo_fb *fbo_fb;
-	struct drm_mode_fb_cmd2 mode_cmd = {0};
-	u32 base_offset = 0;
-	int i, ret;
-
-	if (!dev) {
-		DPU_ERROR("invalid drm device node\n");
-		return NULL;
-	}
-
-	fbo_fb = kzalloc(sizeof(struct dpu_kms_fbo_fb), GFP_KERNEL);
-	if (!fbo_fb)
-		return NULL;
-
-	mode_cmd.pixel_format = fbo->pixel_format;
-	mode_cmd.width = fbo->width;
-	mode_cmd.height = fbo->height;
-	mode_cmd.flags = fbo->flags;
-
-	for (i = 0; i < fbo->nplane; i++) {
-		mode_cmd.offsets[i] = base_offset;
-		mode_cmd.pitches[i] = fbo->layout.plane_pitch[i];
-		mode_cmd.modifier[i] = fbo->modifier[i];
-		base_offset += fbo->layout.plane_size[i];
-		DPU_DEBUG("offset[%d]:%x\n", i, mode_cmd.offsets[i]);
-	}
-
-	fb = msm_framebuffer_init(dev, &mode_cmd, fbo->bo);
-	if (IS_ERR(fb)) {
-		ret = PTR_ERR(fb);
-		fb = NULL;
-		DPU_ERROR("failed to allocate fb %d\n", ret);
-		goto fail;
-	}
-
-	/* need to take one reference for gem object */
-	for (i = 0; i < fbo->nplane; i++)
-		drm_gem_object_get(fbo->bo[i]);
-
-	DPU_DEBUG("register private fb:%d\n", fb->base.id);
-
-	INIT_LIST_HEAD(&fbo_fb->list);
-	fbo_fb->fb = fb;
-	drm_framebuffer_get(fbo_fb->fb);
-	list_add_tail(&fbo_fb->list, &fbo->fb_list);
-
-	return fb;
-
-fail:
-	kfree(fbo_fb);
-	return NULL;
-}
-
-static void dpu_kms_fbo_destroy(struct dpu_kms_fbo *fbo)
-{
-	struct msm_drm_private *priv;
-	struct dpu_kms *dpu_kms;
-	struct drm_device *dev;
-	struct dpu_kms_fbo_fb *curr, *next;
-	int i;
-
-	if (!fbo) {
-		DPU_ERROR("invalid drm device node\n");
-		return;
-	}
-	dev = fbo->dev;
-
-	if (!dev || !dev->dev_private) {
-		DPU_ERROR("invalid drm device node\n");
-		return;
-	}
-	priv = dev->dev_private;
-
-	if (!priv->kms) {
-		DPU_ERROR("invalid kms handle\n");
-		return;
-	}
-	dpu_kms = to_dpu_kms(priv->kms);
-
-	DPU_DEBUG("%dx%d@%c%c%c%c/%llx/%x\n", fbo->width, fbo->height,
-			fbo->pixel_format >> 0, fbo->pixel_format >> 8,
-			fbo->pixel_format >> 16, fbo->pixel_format >> 24,
-			fbo->modifier[0], fbo->flags);
-
-	list_for_each_entry_safe(curr, next, &fbo->fb_list, list) {
-		DPU_DEBUG("unregister private fb:%d\n", curr->fb->base.id);
-		drm_framebuffer_unregister_private(curr->fb);
-		drm_framebuffer_put(curr->fb);
-		list_del(&curr->list);
-		kfree(curr);
-	}
-
-	for (i = 0; i < fbo->layout.num_planes; i++) {
-		if (fbo->bo[i]) {
-			mutex_lock(&dev->struct_mutex);
-			drm_gem_object_put(fbo->bo[i]);
-			mutex_unlock(&dev->struct_mutex);
-			fbo->bo[i] = NULL;
-		}
-	}
-
-	if (fbo->dma_buf) {
-		dma_buf_put(fbo->dma_buf);
-		fbo->dma_buf = NULL;
-	}
-
-#ifdef CONFIG_ION
-	if (dpu_kms->iclient && fbo->ihandle) {
-		ion_free(dpu_kms->iclient, fbo->ihandle);
-		fbo->ihandle = NULL;
-	}
-#endif
-}
-
 #ifdef CONFIG_ION
 static void dpu_kms_set_gem_flags(struct msm_gem_object *msm_obj,
 		uint32_t flags)
@@ -835,157 +707,6 @@ static void dpu_kms_set_gem_flags(struct msm_gem_object *msm_obj,
 }
 #endif
 
-struct dpu_kms_fbo *dpu_kms_fbo_alloc(struct drm_device *dev, u32 width,
-		u32 height, u32 pixel_format, u64 modifier[4], u32 flags)
-{
-	struct msm_drm_private *priv;
-	struct dpu_kms *dpu_kms;
-	struct dpu_kms_fbo *fbo;
-	int i, ret;
-
-	if (!dev || !dev->dev_private) {
-		DPU_ERROR("invalid drm device node\n");
-		return NULL;
-	}
-	priv = dev->dev_private;
-
-	if (!priv->kms) {
-		DPU_ERROR("invalid kms handle\n");
-		return NULL;
-	}
-	dpu_kms = to_dpu_kms(priv->kms);
-
-	DPU_DEBUG("%dx%d@%c%c%c%c/%llx/%x\n", width, height,
-			pixel_format >> 0, pixel_format >> 8,
-			pixel_format >> 16, pixel_format >> 24,
-			modifier[0], flags);
-
-	fbo = kzalloc(sizeof(struct dpu_kms_fbo), GFP_KERNEL);
-	if (!fbo)
-		return NULL;
-
-	atomic_set(&fbo->refcount, 0);
-	INIT_LIST_HEAD(&fbo->fb_list);
-	fbo->dev = dev;
-	fbo->width = width;
-	fbo->height = height;
-	fbo->pixel_format = pixel_format;
-	fbo->flags = flags;
-	for (i = 0; i < ARRAY_SIZE(fbo->modifier); i++)
-		fbo->modifier[i] = modifier[i];
-	fbo->nplane = drm_format_num_planes(fbo->pixel_format);
-	fbo->fmt = dpu_get_dpu_format_ext(fbo->pixel_format, fbo->modifier[0]);
-	if (!fbo->fmt) {
-		ret = -EINVAL;
-		DPU_ERROR("failed to find pixel format\n");
-		goto done;
-	}
-
-	ret = dpu_format_get_plane_sizes(fbo->fmt, fbo->width, fbo->height,
-			&fbo->layout, fbo->layout.plane_pitch);
-	if (ret) {
-		DPU_ERROR("failed to get plane sizes\n");
-		goto done;
-	}
-
-	/* allocate backing buffer object */
-	if (dpu_kms->iclient) {
-#ifdef CONFIG_ION
-		u32 heap_id = ION_HEAP(ION_SYSTEM_HEAP_ID);
-
-		fbo->ihandle = ion_alloc(dpu_kms->iclient,
-				fbo->layout.total_size, SZ_4K, heap_id, 0);
-		if (IS_ERR_OR_NULL(fbo->ihandle)) {
-			DPU_ERROR("failed to alloc ion memory\n");
-			ret = PTR_ERR(fbo->ihandle);
-			fbo->ihandle = NULL;
-			goto done;
-		}
-
-		fbo->dma_buf = ion_share_dma_buf(dpu_kms->iclient,
-				fbo->ihandle);
-		if (IS_ERR(fbo->dma_buf)) {
-			DPU_ERROR("failed to share ion memory\n");
-			ret = -ENOMEM;
-			fbo->dma_buf = NULL;
-			goto done;
-		}
-
-		fbo->bo[0] = dev->driver->gem_prime_import(dev,
-				fbo->dma_buf);
-		if (IS_ERR(fbo->bo[0])) {
-			DPU_ERROR("failed to import ion memory\n");
-			ret = PTR_ERR(fbo->bo[0]);
-			fbo->bo[0] = NULL;
-			goto done;
-		}
-
-		/* insert extra bo flags */
-		dpu_kms_set_gem_flags(to_msm_bo(fbo->bo[0]), MSM_BO_KEEPATTRS);
-#endif
-	} else {
-		fbo->bo[0] = msm_gem_new(dev, fbo->layout.total_size,
-				MSM_BO_SCANOUT | MSM_BO_WC);
-		if (IS_ERR(fbo->bo[0])) {
-			DPU_ERROR("failed to new gem buffer\n");
-			ret = PTR_ERR(fbo->bo[0]);
-			fbo->bo[0] = NULL;
-			goto done;
-		}
-	}
-
-	mutex_lock(&dev->struct_mutex);
-	for (i = 1; i < fbo->layout.num_planes; i++) {
-		fbo->bo[i] = fbo->bo[0];
-		drm_gem_object_get(fbo->bo[i]);
-	}
-	mutex_unlock(&dev->struct_mutex);
-
-done:
-	if (ret) {
-		dpu_kms_fbo_destroy(fbo);
-		kfree(fbo);
-		fbo = NULL;
-	} else {
-		dpu_kms_fbo_reference(fbo);
-	}
-
-	return fbo;
-}
-
-int dpu_kms_fbo_reference(struct dpu_kms_fbo *fbo)
-{
-	if (!fbo) {
-		DPU_ERROR("invalid parameters\n");
-		return -EINVAL;
-	}
-
-	DPU_DEBUG("%pS refcount:%d\n", __builtin_return_address(0),
-			atomic_read(&fbo->refcount));
-
-	atomic_inc(&fbo->refcount);
-
-	return 0;
-}
-
-void dpu_kms_fbo_unreference(struct dpu_kms_fbo *fbo)
-{
-	if (!fbo) {
-		DPU_ERROR("invalid parameters\n");
-		return;
-	}
-
-	DPU_DEBUG("%pS refcount:%d\n", __builtin_return_address(0),
-			atomic_read(&fbo->refcount));
-
-	if (!atomic_read(&fbo->refcount)) {
-		DPU_ERROR("invalid refcount\n");
-		return;
-	} else if (atomic_dec_return(&fbo->refcount) == 0) {
-		dpu_kms_fbo_destroy(fbo);
-	}
-}
-
 #ifdef CONFIG_DEBUG_FS
 static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
 {
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index 4f86a51affdc..6308bd84e6a9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -110,37 +110,6 @@ struct dpu_irq {
 	struct dentry *debugfs_file;
 };
 
-/**
- * struct dpu_kms_fbo - framebuffer memory object
- * @refcount: reference/usage count of this object
- * @dev: Pointer to containing drm device
- * @width: width of the framebuffer
- * @height: height of the framebuffer
- * @flags: drm framebuffer flags
- * @modifier: pixel format modifier of the framebuffer
- * @fmt: Pointer to dpu format descriptor
- * @layout: dpu format layout descriptor
- * @ihandle: framebuffer object ion handle
- * @dma_buf: framebuffer object dma buffer
- * @bo: per plane buffer object
- * @fb_list: llist of fb created from this buffer object
- */
-struct dpu_kms_fbo {
-	atomic_t refcount;
-	struct drm_device *dev;
-	u32 width, height;
-	u32 pixel_format;
-	u32 flags;
-	u64 modifier[4];
-	int nplane;
-	const struct dpu_format *fmt;
-	struct dpu_hw_fmt_layout layout;
-	struct ion_handle *ihandle;
-	struct dma_buf *dma_buf;
-	struct drm_gem_object *bo[4];
-	struct list_head fb_list;
-};
-
 struct dpu_kms {
 	struct msm_kms base;
 	struct drm_device *dev;
@@ -426,44 +395,6 @@ void dpu_kms_info_stop(struct dpu_kms_info *info);
 int dpu_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc);
 void dpu_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc);
 
-/**
- * dpu_kms_fbo_create_fb - create framebuffer from given framebuffer object
- * @dev: Pointer to drm device
- * @fbo: Pointer to framebuffer object
- * return: Pointer to drm framebuffer on success; NULL on error
- */
-struct drm_framebuffer *dpu_kms_fbo_create_fb(struct drm_device *dev,
-		struct dpu_kms_fbo *fbo);
-
-/**
- * dpu_kms_fbo_alloc - create framebuffer object with given format parameters
- * @dev: pointer to drm device
- * @width: width of framebuffer
- * @height: height of framebuffer
- * @pixel_format: pixel format of framebuffer
- * @modifier: pixel format modifier
- * @flags: DRM_MODE_FB flags
- * return: Pointer to framebuffer memory object on success; NULL on error
- */
-struct dpu_kms_fbo *dpu_kms_fbo_alloc(struct drm_device *dev,
-		u32 width, u32 height, u32 pixel_format,
-		u64 modifiers[4], u32 flags);
-
-/**
- * dpu_kms_fbo_reference - increment reference count of given framebuffer object
- * @fbo: Pointer to framebuffer memory object
- * return: 0 on success; error code otherwise
- */
-int dpu_kms_fbo_reference(struct dpu_kms_fbo *fbo);
-
-/**
- * dpu_kms_fbo_unreference - decrement reference count of given framebuffer
- *	object
- * @fbo: Pointer to framebuffer memory object
- * return: 0 on success; error code otherwise
- */
-void dpu_kms_fbo_unreference(struct dpu_kms_fbo *fbo);
-
 void dpu_kms_encoder_enable(struct drm_encoder *encoder);
 
 /**
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 4a2f87fe11a9..c370a962d0a3 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -339,9 +339,6 @@ uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb,
 uint32_t msm_framebuffer_phys(struct drm_framebuffer *fb, int plane);
 struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane);
 const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb);
-struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
-		const struct drm_mode_fb_cmd2 *mode_cmd,
-		struct drm_gem_object **bos);
 struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
 		struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd);
 struct drm_framebuffer * msm_alloc_stolen_fb(struct drm_device *dev,
diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c
index 32e0f33ff43b..ce604a6ab599 100644
--- a/drivers/gpu/drm/msm/msm_fb.c
+++ b/drivers/gpu/drm/msm/msm_fb.c
@@ -29,6 +29,8 @@ struct msm_framebuffer {
 };
 #define to_msm_framebuffer(x) container_of(x, struct msm_framebuffer, base)
 
+static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
+		const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos);
 
 static int msm_framebuffer_create_handle(struct drm_framebuffer *fb,
 		struct drm_file *file_priv,
@@ -161,7 +163,7 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
 	return ERR_PTR(ret);
 }
 
-struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
+static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
 		const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
 {
 	struct msm_drm_private *priv = dev->dev_private;
-- 
Sean Paul, Software Engineer, Google / Chromium OS



More information about the Freedreno mailing list