All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev
@ 2019-11-22 10:05 Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 1/6] drm/gma500: Remove addr_space field from psb_framebuffer Thomas Zimmermann
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

These patches remove struct psb_framebuffer and struct psb_fbdev
from gma500. Both are replaced by their equivalents from the DRM
helpers.

The patchset has been tested by running the fbdev console, X11 and
Weston on an Atom Z520 with Poulsbo graphics chip.

Thomas Zimmermann (6):
  drm/gma500: Remove addr_space field from psb_framebuffer
  drm/gma500: Remove field 'fbdev' from struct psb_framebuffer
  drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer
  drm/gma500: Pass struct drm_gem_object to framebuffer functions
  drm/gma500: Store framebuffer in struct drm_fb_helper
  drm/gma500: Remove struct psb_fbdev

 drivers/gpu/drm/gma500/accel_2d.c    |  15 ++--
 drivers/gpu/drm/gma500/framebuffer.c | 129 +++++++++++++--------------
 drivers/gpu/drm/gma500/framebuffer.h |  15 ----
 drivers/gpu/drm/gma500/psb_drv.c     |   1 +
 drivers/gpu/drm/gma500/psb_drv.h     |   8 +-
 5 files changed, 74 insertions(+), 94 deletions(-)

--
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/6] drm/gma500: Remove addr_space field from psb_framebuffer
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 2/6] drm/gma500: Remove field 'fbdev' from struct psb_framebuffer Thomas Zimmermann
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

The field 'addr_space' in struct psb_framebuffer serves no
purpose. Remove it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/framebuffer.c | 2 --
 drivers/gpu/drm/gma500/framebuffer.h | 1 -
 2 files changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 218f3bb15276..598dc51d9e24 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -153,8 +153,6 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 	if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
 		return -EINVAL;
 
-	if (!psbfb->addr_space)
-		psbfb->addr_space = vma->vm_file->f_mapping;
 	/*
 	 * If this is a GEM object then info->screen_base is the virtual
 	 * kernel remapping of the object. FIXME: Review if this is
diff --git a/drivers/gpu/drm/gma500/framebuffer.h b/drivers/gpu/drm/gma500/framebuffer.h
index ae8a02639fd9..a2d68dd74c12 100644
--- a/drivers/gpu/drm/gma500/framebuffer.h
+++ b/drivers/gpu/drm/gma500/framebuffer.h
@@ -15,7 +15,6 @@
 
 struct psb_framebuffer {
 	struct drm_framebuffer base;
-	struct address_space *addr_space;
 	struct fb_info *fbdev;
 };
 
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/6] drm/gma500: Remove field 'fbdev' from struct psb_framebuffer
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 1/6] drm/gma500: Remove addr_space field from psb_framebuffer Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 3/6] drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer Thomas Zimmermann
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

The field 'fbdev' in struct psb_framebuffer serves no purpose. Remove
it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/framebuffer.c | 1 -
 drivers/gpu/drm/gma500/framebuffer.h | 1 -
 2 files changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 598dc51d9e24..f56a1fcf58ab 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -383,7 +383,6 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 		goto out;
 
 	fb = &psbfb->base;
-	psbfb->fbdev = info;
 
 	fbdev->psb_fb_helper.fb = fb;
 
diff --git a/drivers/gpu/drm/gma500/framebuffer.h b/drivers/gpu/drm/gma500/framebuffer.h
index a2d68dd74c12..95d4485dc860 100644
--- a/drivers/gpu/drm/gma500/framebuffer.h
+++ b/drivers/gpu/drm/gma500/framebuffer.h
@@ -15,7 +15,6 @@
 
 struct psb_framebuffer {
 	struct drm_framebuffer base;
-	struct fb_info *fbdev;
 };
 
 struct psb_fbdev {
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/6] drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 1/6] drm/gma500: Remove addr_space field from psb_framebuffer Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 2/6] drm/gma500: Remove field 'fbdev' from struct psb_framebuffer Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 4/6] drm/gma500: Pass struct drm_gem_object to framebuffer functions Thomas Zimmermann
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

After removing all unnecessary fields, struct psb_framebuffer is just a
wrapper around struct drm_framebuffer. So we can replace the former with
the latter.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/accel_2d.c    |  6 ++--
 drivers/gpu/drm/gma500/framebuffer.c | 48 +++++++++++++---------------
 drivers/gpu/drm/gma500/framebuffer.h |  8 +----
 3 files changed, 25 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/gma500/accel_2d.c b/drivers/gpu/drm/gma500/accel_2d.c
index 45ad5ffedc93..3d1ad2f85628 100644
--- a/drivers/gpu/drm/gma500/accel_2d.c
+++ b/drivers/gpu/drm/gma500/accel_2d.c
@@ -227,8 +227,7 @@ static void psbfb_copyarea_accel(struct fb_info *info,
 				 const struct fb_copyarea *a)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
-	struct drm_device *dev = psbfb->base.dev;
+	struct drm_device *dev = fbdev->fb.dev;
 	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	uint32_t offset;
@@ -310,8 +309,7 @@ void psbfb_copyarea(struct fb_info *info,
 int psbfb_sync(struct fb_info *info)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
-	struct drm_device *dev = psbfb->base.dev;
+	struct drm_device *dev = fbdev->fb.dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	unsigned long _end = jiffies + HZ;
 	int busy = 0;
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index f56a1fcf58ab..b0f4b6194bda 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -78,9 +78,9 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green,
 static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
-	struct drm_device *dev = psbfb->base.dev;
-	struct gtt_range *gtt = to_gtt_range(psbfb->base.obj[0]);
+	struct drm_framebuffer *fb = &fbdev->fb;
+	struct drm_device *dev = fb->dev;
+	struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
 
 	/*
 	 *	We have to poke our nose in here. The core fb code assumes
@@ -99,10 +99,10 @@ static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info)
 static vm_fault_t psbfb_vm_fault(struct vm_fault *vmf)
 {
 	struct vm_area_struct *vma = vmf->vma;
-	struct psb_framebuffer *psbfb = vma->vm_private_data;
-	struct drm_device *dev = psbfb->base.dev;
+	struct drm_framebuffer *fb = vma->vm_private_data;
+	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
-	struct gtt_range *gtt = to_gtt_range(psbfb->base.obj[0]);
+	struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
 	int page_num;
 	int i;
 	unsigned long address;
@@ -146,7 +146,7 @@ static const struct vm_operations_struct psbfb_vm_ops = {
 static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
+	struct drm_framebuffer *fb = &fbdev->fb;
 
 	if (vma->vm_pgoff != 0)
 		return -EINVAL;
@@ -159,7 +159,7 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 	 * suitable for our mmap work
 	 */
 	vma->vm_ops = &psbfb_vm_ops;
-	vma->vm_private_data = (void *)psbfb;
+	vma->vm_private_data = (void *)fb;
 	vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
 	return 0;
 }
@@ -207,7 +207,7 @@ static struct fb_ops psbfb_unaccel_ops = {
  *	0 on success or an error code if we fail.
  */
 static int psb_framebuffer_init(struct drm_device *dev,
-					struct psb_framebuffer *fb,
+					struct drm_framebuffer *fb,
 					const struct drm_mode_fb_cmd2 *mode_cmd,
 					struct gtt_range *gt)
 {
@@ -225,9 +225,9 @@ static int psb_framebuffer_init(struct drm_device *dev,
 	if (mode_cmd->pitches[0] & 63)
 		return -EINVAL;
 
-	drm_helper_mode_fill_fb_struct(dev, &fb->base, mode_cmd);
-	fb->base.obj[0] = &gt->gem;
-	ret = drm_framebuffer_init(dev, &fb->base, &psb_fb_funcs);
+	drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
+	fb->obj[0] = &gt->gem;
+	ret = drm_framebuffer_init(dev, fb, &psb_fb_funcs);
 	if (ret) {
 		dev_err(dev->dev, "framebuffer init failed: %d\n", ret);
 		return ret;
@@ -252,7 +252,7 @@ static struct drm_framebuffer *psb_framebuffer_create
 			 const struct drm_mode_fb_cmd2 *mode_cmd,
 			 struct gtt_range *gt)
 {
-	struct psb_framebuffer *fb;
+	struct drm_framebuffer *fb;
 	int ret;
 
 	fb = kzalloc(sizeof(*fb), GFP_KERNEL);
@@ -264,7 +264,7 @@ static struct drm_framebuffer *psb_framebuffer_create
 		kfree(fb);
 		return ERR_PTR(ret);
 	}
-	return &fb->base;
+	return fb;
 }
 
 /**
@@ -304,8 +304,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 	struct drm_device *dev = fbdev->psb_fb_helper.dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	struct fb_info *info;
-	struct drm_framebuffer *fb;
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
+	struct drm_framebuffer *fb = &fbdev->fb;
 	struct drm_mode_fb_cmd2 mode_cmd;
 	int size;
 	int ret;
@@ -378,12 +377,10 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 
 	mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth);
 
-	ret = psb_framebuffer_init(dev, psbfb, &mode_cmd, backing);
+	ret = psb_framebuffer_init(dev, fb, &mode_cmd, backing);
 	if (ret)
 		goto out;
 
-	fb = &psbfb->base;
-
 	fbdev->psb_fb_helper.fb = fb;
 
 	if (dev_priv->ops->accel_2d && pitch_lines > 8)	/* 2D engine */
@@ -415,8 +412,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 
 	/* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
 
-	dev_dbg(dev->dev, "allocated %dx%d fb\n",
-					psbfb->base.width, psbfb->base.height);
+	dev_dbg(dev->dev, "allocated %dx%d fb\n", fb->width, fb->height);
 
 	return 0;
 out:
@@ -483,16 +479,16 @@ static const struct drm_fb_helper_funcs psb_fb_helper_funcs = {
 
 static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
 {
-	struct psb_framebuffer *psbfb = &fbdev->pfb;
+	struct drm_framebuffer *fb = &fbdev->fb;
 
 	drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
 
 	drm_fb_helper_fini(&fbdev->psb_fb_helper);
-	drm_framebuffer_unregister_private(&psbfb->base);
-	drm_framebuffer_cleanup(&psbfb->base);
+	drm_framebuffer_unregister_private(fb);
+	drm_framebuffer_cleanup(fb);
 
-	if (psbfb->base.obj[0])
-		drm_gem_object_put_unlocked(psbfb->base.obj[0]);
+	if (fb->obj[0])
+		drm_gem_object_put_unlocked(fb->obj[0]);
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/gma500/framebuffer.h b/drivers/gpu/drm/gma500/framebuffer.h
index 95d4485dc860..ae12801829b2 100644
--- a/drivers/gpu/drm/gma500/framebuffer.h
+++ b/drivers/gpu/drm/gma500/framebuffer.h
@@ -13,17 +13,11 @@
 
 #include "psb_drv.h"
 
-struct psb_framebuffer {
-	struct drm_framebuffer base;
-};
-
 struct psb_fbdev {
 	struct drm_fb_helper psb_fb_helper; /* must be first */
-	struct psb_framebuffer pfb;
+	struct drm_framebuffer fb;
 };
 
-#define to_psb_fb(x) container_of(x, struct psb_framebuffer, base)
-
 extern int gma_connector_clones(struct drm_device *dev, int type_mask);
 
 #endif
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/6] drm/gma500: Pass struct drm_gem_object to framebuffer functions
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2019-11-22 10:05 ` [PATCH 3/6] drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 5/6] drm/gma500: Store framebuffer in struct drm_fb_helper Thomas Zimmermann
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

Several framebuffer functions take a pointer to an object of type
struct gtt_range when they actually need the GEM base object. Passing
the GEM object removes some type casting and clutter.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/framebuffer.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index b0f4b6194bda..766182da97f6 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -209,7 +209,7 @@ static struct fb_ops psbfb_unaccel_ops = {
 static int psb_framebuffer_init(struct drm_device *dev,
 					struct drm_framebuffer *fb,
 					const struct drm_mode_fb_cmd2 *mode_cmd,
-					struct gtt_range *gt)
+					struct drm_gem_object *obj)
 {
 	const struct drm_format_info *info;
 	int ret;
@@ -226,7 +226,7 @@ static int psb_framebuffer_init(struct drm_device *dev,
 		return -EINVAL;
 
 	drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
-	fb->obj[0] = &gt->gem;
+	fb->obj[0] = obj;
 	ret = drm_framebuffer_init(dev, fb, &psb_fb_funcs);
 	if (ret) {
 		dev_err(dev->dev, "framebuffer init failed: %d\n", ret);
@@ -250,7 +250,7 @@ static int psb_framebuffer_init(struct drm_device *dev,
 static struct drm_framebuffer *psb_framebuffer_create
 			(struct drm_device *dev,
 			 const struct drm_mode_fb_cmd2 *mode_cmd,
-			 struct gtt_range *gt)
+			 struct drm_gem_object *obj)
 {
 	struct drm_framebuffer *fb;
 	int ret;
@@ -259,7 +259,7 @@ static struct drm_framebuffer *psb_framebuffer_create
 	if (!fb)
 		return ERR_PTR(-ENOMEM);
 
-	ret = psb_framebuffer_init(dev, fb, mode_cmd, gt);
+	ret = psb_framebuffer_init(dev, fb, mode_cmd, obj);
 	if (ret) {
 		kfree(fb);
 		return ERR_PTR(ret);
@@ -377,7 +377,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 
 	mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth);
 
-	ret = psb_framebuffer_init(dev, fb, &mode_cmd, backing);
+	ret = psb_framebuffer_init(dev, fb, &mode_cmd, &backing->gem);
 	if (ret)
 		goto out;
 
@@ -432,7 +432,6 @@ static struct drm_framebuffer *psb_user_framebuffer_create
 			(struct drm_device *dev, struct drm_file *filp,
 			 const struct drm_mode_fb_cmd2 *cmd)
 {
-	struct gtt_range *r;
 	struct drm_gem_object *obj;
 
 	/*
@@ -444,8 +443,7 @@ static struct drm_framebuffer *psb_user_framebuffer_create
 		return ERR_PTR(-ENOENT);
 
 	/* Let the core code do all the work */
-	r = container_of(obj, struct gtt_range, gem);
-	return psb_framebuffer_create(dev, cmd, r);
+	return psb_framebuffer_create(dev, cmd, obj);
 }
 
 static int psbfb_probe(struct drm_fb_helper *helper,
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/6] drm/gma500: Store framebuffer in struct drm_fb_helper
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2019-11-22 10:05 ` [PATCH 4/6] drm/gma500: Pass struct drm_gem_object to framebuffer functions Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-22 10:05 ` [PATCH 6/6] drm/gma500: Remove struct psb_fbdev Thomas Zimmermann
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

The gma500 driver stores the console framebuffer in struct psb_fbdev.
Moving it into struct drm_fb_helper will allow for removal of struct
psb_fbdev.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/accel_2d.c    |  5 +++--
 drivers/gpu/drm/gma500/framebuffer.c | 16 ++++++++++------
 drivers/gpu/drm/gma500/framebuffer.h |  1 -
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/gma500/accel_2d.c b/drivers/gpu/drm/gma500/accel_2d.c
index 3d1ad2f85628..2a60add10dbd 100644
--- a/drivers/gpu/drm/gma500/accel_2d.c
+++ b/drivers/gpu/drm/gma500/accel_2d.c
@@ -227,8 +227,8 @@ static void psbfb_copyarea_accel(struct fb_info *info,
 				 const struct fb_copyarea *a)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct drm_device *dev = fbdev->fb.dev;
 	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	uint32_t offset;
 	uint32_t stride;
@@ -309,7 +309,8 @@ void psbfb_copyarea(struct fb_info *info,
 int psbfb_sync(struct fb_info *info)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct drm_device *dev = fbdev->fb.dev;
+	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	unsigned long _end = jiffies + HZ;
 	int busy = 0;
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 766182da97f6..0c44ba8c3a79 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -78,7 +78,7 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green,
 static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = &fbdev->fb;
+	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
 	struct drm_device *dev = fb->dev;
 	struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
 
@@ -146,7 +146,7 @@ static const struct vm_operations_struct psbfb_vm_ops = {
 static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
 	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = &fbdev->fb;
+	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
 
 	if (vma->vm_pgoff != 0)
 		return -EINVAL;
@@ -304,7 +304,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 	struct drm_device *dev = fbdev->psb_fb_helper.dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	struct fb_info *info;
-	struct drm_framebuffer *fb = &fbdev->fb;
+	struct drm_framebuffer *fb;
 	struct drm_mode_fb_cmd2 mode_cmd;
 	int size;
 	int ret;
@@ -377,9 +377,11 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 
 	mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth);
 
-	ret = psb_framebuffer_init(dev, fb, &mode_cmd, &backing->gem);
-	if (ret)
+	fb = psb_framebuffer_create(dev, &mode_cmd, &backing->gem);
+	if (IS_ERR(fb)) {
+		ret = PTR_ERR(fb);
 		goto out;
+	}
 
 	fbdev->psb_fb_helper.fb = fb;
 
@@ -477,7 +479,7 @@ static const struct drm_fb_helper_funcs psb_fb_helper_funcs = {
 
 static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
 {
-	struct drm_framebuffer *fb = &fbdev->fb;
+	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
 
 	drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
 
@@ -487,6 +489,8 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
 
 	if (fb->obj[0])
 		drm_gem_object_put_unlocked(fb->obj[0]);
+	kfree(fb);
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/gma500/framebuffer.h b/drivers/gpu/drm/gma500/framebuffer.h
index ae12801829b2..c75f48c44921 100644
--- a/drivers/gpu/drm/gma500/framebuffer.h
+++ b/drivers/gpu/drm/gma500/framebuffer.h
@@ -15,7 +15,6 @@
 
 struct psb_fbdev {
 	struct drm_fb_helper psb_fb_helper; /* must be first */
-	struct drm_framebuffer fb;
 };
 
 extern int gma_connector_clones(struct drm_device *dev, int type_mask);
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 6/6] drm/gma500: Remove struct psb_fbdev
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2019-11-22 10:05 ` [PATCH 5/6] drm/gma500: Store framebuffer in struct drm_fb_helper Thomas Zimmermann
@ 2019-11-22 10:05 ` Thomas Zimmermann
  2019-11-25  9:17 ` [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Daniel Vetter
  2019-11-25  9:38 ` Patrik Jakobsson
  7 siblings, 0 replies; 9+ messages in thread
From: Thomas Zimmermann @ 2019-11-22 10:05 UTC (permalink / raw)
  To: patrik.r.jakobsson, airlied, daniel; +Cc: Thomas Zimmermann, dri-devel

Gma500's struct psb_fbdev is an, otherwise empty, wrapper around
struct drm_fb_helper. Remove it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/accel_2d.c    | 10 ++--
 drivers/gpu/drm/gma500/framebuffer.c | 70 ++++++++++++++--------------
 drivers/gpu/drm/gma500/framebuffer.h |  6 ---
 drivers/gpu/drm/gma500/psb_drv.c     |  1 +
 drivers/gpu/drm/gma500/psb_drv.h     |  8 ++--
 5 files changed, 45 insertions(+), 50 deletions(-)

diff --git a/drivers/gpu/drm/gma500/accel_2d.c b/drivers/gpu/drm/gma500/accel_2d.c
index 2a60add10dbd..b9e5a38632f7 100644
--- a/drivers/gpu/drm/gma500/accel_2d.c
+++ b/drivers/gpu/drm/gma500/accel_2d.c
@@ -21,9 +21,9 @@
 
 #include <drm/drm.h>
 #include <drm/drm_crtc.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
 
-#include "framebuffer.h"
 #include "psb_drv.h"
 #include "psb_reg.h"
 
@@ -226,8 +226,8 @@ static int psb_accel_2d_copy(struct drm_psb_private *dev_priv,
 static void psbfb_copyarea_accel(struct fb_info *info,
 				 const struct fb_copyarea *a)
 {
-	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_fb_helper *fb_helper = info->par;
+	struct drm_framebuffer *fb = fb_helper->fb;
 	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	uint32_t offset;
@@ -308,8 +308,8 @@ void psbfb_copyarea(struct fb_info *info,
  */
 int psbfb_sync(struct fb_info *info)
 {
-	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_fb_helper *fb_helper = info->par;
+	struct drm_framebuffer *fb = fb_helper->fb;
 	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	unsigned long _end = jiffies + HZ;
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 0c44ba8c3a79..6745e3f6a2f0 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -40,8 +40,8 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green,
 			   unsigned blue, unsigned transp,
 			   struct fb_info *info)
 {
-	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_fb_helper *fb_helper = info->par;
+	struct drm_framebuffer *fb = fb_helper->fb;
 	uint32_t v;
 
 	if (!fb)
@@ -77,8 +77,8 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green,
 
 static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info)
 {
-	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_fb_helper *fb_helper = info->par;
+	struct drm_framebuffer *fb = fb_helper->fb;
 	struct drm_device *dev = fb->dev;
 	struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
 
@@ -145,8 +145,8 @@ static const struct vm_operations_struct psbfb_vm_ops = {
 
 static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
-	struct psb_fbdev *fbdev = info->par;
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_fb_helper *fb_helper = info->par;
+	struct drm_framebuffer *fb = fb_helper->fb;
 
 	if (vma->vm_pgoff != 0)
 		return -EINVAL;
@@ -298,10 +298,10 @@ static struct gtt_range *psbfb_alloc(struct drm_device *dev, int aligned_size)
  *
  *	Create a framebuffer to the specifications provided
  */
-static int psbfb_create(struct psb_fbdev *fbdev,
+static int psbfb_create(struct drm_fb_helper *fb_helper,
 				struct drm_fb_helper_surface_size *sizes)
 {
-	struct drm_device *dev = fbdev->psb_fb_helper.dev;
+	struct drm_device *dev = fb_helper->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	struct fb_info *info;
 	struct drm_framebuffer *fb;
@@ -369,7 +369,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 
 	memset(dev_priv->vram_addr + backing->offset, 0, size);
 
-	info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper);
+	info = drm_fb_helper_alloc_fbi(fb_helper);
 	if (IS_ERR(info)) {
 		ret = PTR_ERR(info);
 		goto out;
@@ -383,7 +383,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 		goto out;
 	}
 
-	fbdev->psb_fb_helper.fb = fb;
+	fb_helper->fb = fb;
 
 	if (dev_priv->ops->accel_2d && pitch_lines > 8)	/* 2D engine */
 		info->fbops = &psbfb_ops;
@@ -407,7 +407,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
 		info->apertures->ranges[0].size = dev_priv->gtt.stolen_size;
 	}
 
-	drm_fb_helper_fill_info(info, &fbdev->psb_fb_helper, sizes);
+	drm_fb_helper_fill_info(info, fb_helper, sizes);
 
 	info->fix.mmio_start = pci_resource_start(dev->pdev, 0);
 	info->fix.mmio_len = pci_resource_len(dev->pdev, 0);
@@ -448,12 +448,10 @@ static struct drm_framebuffer *psb_user_framebuffer_create
 	return psb_framebuffer_create(dev, cmd, obj);
 }
 
-static int psbfb_probe(struct drm_fb_helper *helper,
-				struct drm_fb_helper_surface_size *sizes)
+static int psbfb_probe(struct drm_fb_helper *fb_helper,
+		       struct drm_fb_helper_surface_size *sizes)
 {
-	struct psb_fbdev *psb_fbdev =
-		container_of(helper, struct psb_fbdev, psb_fb_helper);
-	struct drm_device *dev = psb_fbdev->psb_fb_helper.dev;
+	struct drm_device *dev = fb_helper->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	int bytespp;
 
@@ -470,20 +468,21 @@ static int psbfb_probe(struct drm_fb_helper *helper,
                 sizes->surface_depth = 16;
         }
 
-	return psbfb_create(psb_fbdev, sizes);
+	return psbfb_create(fb_helper, sizes);
 }
 
 static const struct drm_fb_helper_funcs psb_fb_helper_funcs = {
 	.fb_probe = psbfb_probe,
 };
 
-static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
+static int psb_fbdev_destroy(struct drm_device *dev,
+			     struct drm_fb_helper *fb_helper)
 {
-	struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
+	struct drm_framebuffer *fb = fb_helper->fb;
 
-	drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
+	drm_fb_helper_unregister_fbi(fb_helper);
 
-	drm_fb_helper_fini(&fbdev->psb_fb_helper);
+	drm_fb_helper_fini(fb_helper);
 	drm_framebuffer_unregister_private(fb);
 	drm_framebuffer_cleanup(fb);
 
@@ -496,42 +495,41 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
 
 int psb_fbdev_init(struct drm_device *dev)
 {
-	struct psb_fbdev *fbdev;
+	struct drm_fb_helper *fb_helper;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	int ret;
 
-	fbdev = kzalloc(sizeof(struct psb_fbdev), GFP_KERNEL);
-	if (!fbdev) {
+	fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL);
+	if (!fb_helper) {
 		dev_err(dev->dev, "no memory\n");
 		return -ENOMEM;
 	}
 
-	dev_priv->fbdev = fbdev;
+	dev_priv->fb_helper = fb_helper;
 
-	drm_fb_helper_prepare(dev, &fbdev->psb_fb_helper, &psb_fb_helper_funcs);
+	drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, &fbdev->psb_fb_helper,
-				 INTELFB_CONN_LIMIT);
+	ret = drm_fb_helper_init(dev, fb_helper, INTELFB_CONN_LIMIT);
 	if (ret)
 		goto free;
 
-	ret = drm_fb_helper_single_add_all_connectors(&fbdev->psb_fb_helper);
+	ret = drm_fb_helper_single_add_all_connectors(fb_helper);
 	if (ret)
 		goto fini;
 
 	/* disable all the possible outputs/crtcs before entering KMS mode */
 	drm_helper_disable_unused_functions(dev);
 
-	ret = drm_fb_helper_initial_config(&fbdev->psb_fb_helper, 32);
+	ret = drm_fb_helper_initial_config(fb_helper, 32);
 	if (ret)
 		goto fini;
 
 	return 0;
 
 fini:
-	drm_fb_helper_fini(&fbdev->psb_fb_helper);
+	drm_fb_helper_fini(fb_helper);
 free:
-	kfree(fbdev);
+	kfree(fb_helper);
 	return ret;
 }
 
@@ -539,12 +537,12 @@ static void psb_fbdev_fini(struct drm_device *dev)
 {
 	struct drm_psb_private *dev_priv = dev->dev_private;
 
-	if (!dev_priv->fbdev)
+	if (!dev_priv->fb_helper)
 		return;
 
-	psb_fbdev_destroy(dev, dev_priv->fbdev);
-	kfree(dev_priv->fbdev);
-	dev_priv->fbdev = NULL;
+	psb_fbdev_destroy(dev, dev_priv->fb_helper);
+	kfree(dev_priv->fb_helper);
+	dev_priv->fb_helper = NULL;
 }
 
 static const struct drm_mode_config_funcs psb_mode_funcs = {
diff --git a/drivers/gpu/drm/gma500/framebuffer.h b/drivers/gpu/drm/gma500/framebuffer.h
index c75f48c44921..2fbba4b48841 100644
--- a/drivers/gpu/drm/gma500/framebuffer.h
+++ b/drivers/gpu/drm/gma500/framebuffer.h
@@ -9,14 +9,8 @@
 #ifndef _FRAMEBUFFER_H_
 #define _FRAMEBUFFER_H_
 
-#include <drm/drm_fb_helper.h>
-
 #include "psb_drv.h"
 
-struct psb_fbdev {
-	struct drm_fb_helper psb_fb_helper; /* must be first */
-};
-
 extern int gma_connector_clones(struct drm_device *dev, int type_mask);
 
 #endif
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index 7005f8f69c68..192a39e52617 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -19,6 +19,7 @@
 
 #include <drm/drm.h>
 #include <drm/drm_drv.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_file.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_irq.h>
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index 9b3c03f4a38d..3d4ef3071d45 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -229,6 +229,8 @@ enum {
 #define KSEL_BYPASS_25 6
 #define KSEL_BYPASS_83_100 7
 
+struct drm_fb_helper;
+
 struct opregion_header;
 struct opregion_acpi;
 struct opregion_swsci;
@@ -432,7 +434,7 @@ struct drm_psb_private {
 	struct pci_dev *lpc_pdev; /* Currently only used by mrst */
 	const struct psb_ops *ops;
 	const struct psb_offset *regmap;
-	
+
 	struct child_device_config *child_dev;
 	int child_dev_num;
 
@@ -540,7 +542,7 @@ struct drm_psb_private {
 
 	/* Oaktrail HDMI state */
 	struct oaktrail_hdmi_dev *hdmi_priv;
-	
+
 	/* Register state */
 	struct psb_save_area regs;
 
@@ -572,7 +574,7 @@ struct drm_psb_private {
 	uint32_t blc_adj1;
 	uint32_t blc_adj2;
 
-	void *fbdev;
+	struct drm_fb_helper *fb_helper;
 
 	/* 2D acceleration */
 	spinlock_t lock_2d;
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2019-11-22 10:05 ` [PATCH 6/6] drm/gma500: Remove struct psb_fbdev Thomas Zimmermann
@ 2019-11-25  9:17 ` Daniel Vetter
  2019-11-25  9:38 ` Patrik Jakobsson
  7 siblings, 0 replies; 9+ messages in thread
From: Daniel Vetter @ 2019-11-25  9:17 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: airlied, dri-devel

On Fri, Nov 22, 2019 at 11:05:39AM +0100, Thomas Zimmermann wrote:
> These patches remove struct psb_framebuffer and struct psb_fbdev
> from gma500. Both are replaced by their equivalents from the DRM
> helpers.
> 
> The patchset has been tested by running the fbdev console, X11 and
> Weston on an Atom Z520 with Poulsbo graphics chip.

On the series: Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> Thomas Zimmermann (6):
>   drm/gma500: Remove addr_space field from psb_framebuffer
>   drm/gma500: Remove field 'fbdev' from struct psb_framebuffer
>   drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer
>   drm/gma500: Pass struct drm_gem_object to framebuffer functions
>   drm/gma500: Store framebuffer in struct drm_fb_helper
>   drm/gma500: Remove struct psb_fbdev
> 
>  drivers/gpu/drm/gma500/accel_2d.c    |  15 ++--
>  drivers/gpu/drm/gma500/framebuffer.c | 129 +++++++++++++--------------
>  drivers/gpu/drm/gma500/framebuffer.h |  15 ----
>  drivers/gpu/drm/gma500/psb_drv.c     |   1 +
>  drivers/gpu/drm/gma500/psb_drv.h     |   8 +-
>  5 files changed, 74 insertions(+), 94 deletions(-)
> 
> --
> 2.23.0
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev
  2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
                   ` (6 preceding siblings ...)
  2019-11-25  9:17 ` [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Daniel Vetter
@ 2019-11-25  9:38 ` Patrik Jakobsson
  7 siblings, 0 replies; 9+ messages in thread
From: Patrik Jakobsson @ 2019-11-25  9:38 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: David Airlie, dri-devel

On Fri, Nov 22, 2019 at 11:05 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> These patches remove struct psb_framebuffer and struct psb_fbdev
> from gma500. Both are replaced by their equivalents from the DRM
> helpers.
>
> The patchset has been tested by running the fbdev console, X11 and
> Weston on an Atom Z520 with Poulsbo graphics chip.

Hi Thomas, nice cleanups!
I'll apply to drm-misc-next

For series:
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>

Thanks

>
> Thomas Zimmermann (6):
>   drm/gma500: Remove addr_space field from psb_framebuffer
>   drm/gma500: Remove field 'fbdev' from struct psb_framebuffer
>   drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer
>   drm/gma500: Pass struct drm_gem_object to framebuffer functions
>   drm/gma500: Store framebuffer in struct drm_fb_helper
>   drm/gma500: Remove struct psb_fbdev
>
>  drivers/gpu/drm/gma500/accel_2d.c    |  15 ++--
>  drivers/gpu/drm/gma500/framebuffer.c | 129 +++++++++++++--------------
>  drivers/gpu/drm/gma500/framebuffer.h |  15 ----
>  drivers/gpu/drm/gma500/psb_drv.c     |   1 +
>  drivers/gpu/drm/gma500/psb_drv.h     |   8 +-
>  5 files changed, 74 insertions(+), 94 deletions(-)
>
> --
> 2.23.0
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-11-25  9:38 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-22 10:05 [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 1/6] drm/gma500: Remove addr_space field from psb_framebuffer Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 2/6] drm/gma500: Remove field 'fbdev' from struct psb_framebuffer Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 3/6] drm/gma500: Replace struct psb_framebuffer with struct drm_framebuffer Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 4/6] drm/gma500: Pass struct drm_gem_object to framebuffer functions Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 5/6] drm/gma500: Store framebuffer in struct drm_fb_helper Thomas Zimmermann
2019-11-22 10:05 ` [PATCH 6/6] drm/gma500: Remove struct psb_fbdev Thomas Zimmermann
2019-11-25  9:17 ` [PATCH 0/6] drm/gma500: Cleanup framebuffer and fbdev Daniel Vetter
2019-11-25  9:38 ` Patrik Jakobsson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.