* [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt()
@ 2015-09-01 7:22 Joonyoung Shim
2015-09-01 7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
` (8 more replies)
0 siblings, 9 replies; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
The exynos_drm_fb_set_buf_cnt() is used to set buffer count only in
exynos_drm_fbdev_update(). This patch sets directly buffer count in
exynos_drm_framebuffer_init() without using exynos_drm_fb_set_buf_cnt(),
so there is no any reason to keep exynos_drm_fb_set_buf_cnt().
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 13 +++----------
drivers/gpu/drm/exynos/exynos_drm_fb.h | 4 ----
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 ---
3 files changed, 3 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index 9738f4e..effeb64 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -122,16 +122,6 @@ static struct drm_framebuffer_funcs exynos_drm_fb_funcs = {
.dirty = exynos_drm_fb_dirty,
};
-void exynos_drm_fb_set_buf_cnt(struct drm_framebuffer *fb,
- unsigned int cnt)
-{
- struct exynos_drm_fb *exynos_fb;
-
- exynos_fb = to_exynos_fb(fb);
-
- exynos_fb->buf_cnt = cnt;
-}
-
unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
{
struct exynos_drm_fb *exynos_fb;
@@ -163,6 +153,9 @@ exynos_drm_framebuffer_init(struct drm_device *dev,
drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
exynos_fb->exynos_gem_obj[0] = exynos_gem_obj;
+ /* buffer count to framebuffer always is 1 at booting time. */
+ exynos_fb->buf_cnt = 1;
+
ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
if (ret) {
kfree(exynos_fb);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
index 1c9e27c..897d2cf 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
@@ -25,10 +25,6 @@ struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
void exynos_drm_mode_config_init(struct drm_device *dev);
-/* set a buffer count to drm framebuffer. */
-void exynos_drm_fb_set_buf_cnt(struct drm_framebuffer *fb,
- unsigned int cnt);
-
/* get a buffer count to drm framebuffer. */
unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 624595a..8188b1f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -103,9 +103,6 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
return -EIO;
}
- /* buffer count to framebuffer always is 1 at booting time. */
- exynos_drm_fb_set_buf_cnt(fb, 1);
-
offset = fbi->var.xoffset * (fb->bits_per_pixel >> 3);
offset += fbi->var.yoffset * fb->pitches[0];
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 16:42 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update() Joonyoung Shim
` (7 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
The variable name "exynos_gem_obj" is too long, so some lines exceed 80
characters. It's simple to use "obj" instead of "exynos_gem_obj".
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 8188b1f..25170e2 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -32,7 +32,7 @@
struct exynos_drm_fbdev {
struct drm_fb_helper drm_fb_helper;
- struct exynos_drm_gem_obj *exynos_gem_obj;
+ struct exynos_drm_gem_obj *obj;
};
static int exynos_drm_fb_mmap(struct fb_info *info,
@@ -40,7 +40,7 @@ static int exynos_drm_fb_mmap(struct fb_info *info,
{
struct drm_fb_helper *helper = info->par;
struct exynos_drm_fbdev *exynos_fbd = to_exynos_fbdev(helper);
- struct exynos_drm_gem_obj *obj = exynos_fbd->exynos_gem_obj;
+ struct exynos_drm_gem_obj *obj = exynos_fbd->obj;
unsigned long vm_size;
int ret;
@@ -117,7 +117,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
struct drm_fb_helper_surface_size *sizes)
{
struct exynos_drm_fbdev *exynos_fbdev = to_exynos_fbdev(helper);
- struct exynos_drm_gem_obj *exynos_gem_obj;
+ struct exynos_drm_gem_obj *obj;
struct drm_device *dev = helper->dev;
struct fb_info *fbi;
struct drm_mode_fb_cmd2 mode_cmd = { 0 };
@@ -146,27 +146,25 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
size = mode_cmd.pitches[0] * mode_cmd.height;
- exynos_gem_obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);
+ obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);
/*
* If physically contiguous memory allocation fails and if IOMMU is
* supported then try to get buffer from non physically contiguous
* memory area.
*/
- if (IS_ERR(exynos_gem_obj) && is_drm_iommu_supported(dev)) {
+ if (IS_ERR(obj) && is_drm_iommu_supported(dev)) {
dev_warn(&pdev->dev, "contiguous FB allocation failed, falling back to non-contiguous\n");
- exynos_gem_obj = exynos_drm_gem_create(dev, EXYNOS_BO_NONCONTIG,
- size);
+ obj = exynos_drm_gem_create(dev, EXYNOS_BO_NONCONTIG, size);
}
- if (IS_ERR(exynos_gem_obj)) {
- ret = PTR_ERR(exynos_gem_obj);
+ if (IS_ERR(obj)) {
+ ret = PTR_ERR(obj);
goto err_release_fbi;
}
- exynos_fbdev->exynos_gem_obj = exynos_gem_obj;
+ exynos_fbdev->obj = obj;
- helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd,
- &exynos_gem_obj->base);
+ helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj->base);
if (IS_ERR(helper->fb)) {
DRM_ERROR("failed to create drm framebuffer.\n");
ret = PTR_ERR(helper->fb);
@@ -187,7 +185,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
err_destroy_framebuffer:
drm_framebuffer_cleanup(helper->fb);
err_destroy_gem:
- exynos_drm_gem_destroy(exynos_gem_obj);
+ exynos_drm_gem_destroy(obj);
err_release_fbi:
drm_fb_helper_release_fbi(helper);
@@ -282,11 +280,11 @@ static void exynos_drm_fbdev_destroy(struct drm_device *dev,
struct drm_fb_helper *fb_helper)
{
struct exynos_drm_fbdev *exynos_fbd = to_exynos_fbdev(fb_helper);
- struct exynos_drm_gem_obj *exynos_gem_obj = exynos_fbd->exynos_gem_obj;
+ struct exynos_drm_gem_obj *obj = exynos_fbd->obj;
struct drm_framebuffer *fb;
- if (exynos_gem_obj->kvaddr)
- vunmap(exynos_gem_obj->kvaddr);
+ if (obj->kvaddr)
+ vunmap(obj->kvaddr);
/* release drm framebuffer and real buffer */
if (fb_helper->fb && fb_helper->fb->funcs) {
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update()
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
2015-09-01 7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 16:43 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 4/9] drm/exynos: update fb_info via only one function Joonyoung Shim
` (6 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
It can get exynos_gem object via function argument, so no need to call
exynos_drm_fb_gem_obj() in exynos_drm_fbdev_update.
It also can get struct drm_framebuffer *fb via helper->fb, so can remove
a function argument for it.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 25170e2..4ef8739 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -75,11 +75,11 @@ static struct fb_ops exynos_drm_fb_ops = {
};
static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
- struct drm_fb_helper_surface_size *sizes,
- struct drm_framebuffer *fb)
+ struct drm_fb_helper_surface_size *sizes,
+ struct exynos_drm_gem_obj *obj)
{
struct fb_info *fbi = helper->fbdev;
- struct exynos_drm_gem_obj *obj;
+ struct drm_framebuffer *fb = helper->fb;
unsigned int size = fb->width * fb->height * (fb->bits_per_pixel >> 3);
unsigned int nr_pages;
unsigned long offset;
@@ -87,13 +87,6 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth);
drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height);
- /* RGB formats use only one buffer */
- obj = exynos_drm_fb_gem_obj(fb, 0);
- if (!obj) {
- DRM_DEBUG_KMS("gem object is null.\n");
- return -EFAULT;
- }
-
nr_pages = obj->size >> PAGE_SHIFT;
obj->kvaddr = (void __iomem *) vmap(obj->pages, nr_pages, VM_MAP,
@@ -175,7 +168,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
fbi->flags = FBINFO_FLAG_DEFAULT;
fbi->fbops = &exynos_drm_fb_ops;
- ret = exynos_drm_fbdev_update(helper, sizes, helper->fb);
+ ret = exynos_drm_fbdev_update(helper, sizes, obj);
if (ret < 0)
goto err_destroy_framebuffer;
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/9] drm/exynos: update fb_info via only one function
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
2015-09-01 7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
2015-09-01 7:22 ` [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update() Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:30 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 5/9] drm/exynos: cleanup to get gem object for fb Joonyoung Shim
` (5 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
This patch moves codes to update fb_info into exynos_drm_fbdev_update(),
so fb_info is updated via only one function.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 4ef8739..133cf5f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -78,12 +78,22 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
struct drm_fb_helper_surface_size *sizes,
struct exynos_drm_gem_obj *obj)
{
- struct fb_info *fbi = helper->fbdev;
+ struct fb_info *fbi;
struct drm_framebuffer *fb = helper->fb;
unsigned int size = fb->width * fb->height * (fb->bits_per_pixel >> 3);
unsigned int nr_pages;
unsigned long offset;
+ fbi = drm_fb_helper_alloc_fbi(helper);
+ if (IS_ERR(fbi)) {
+ DRM_ERROR("failed to allocate fb info.\n");
+ return PTR_ERR(fbi);
+ }
+
+ fbi->par = helper;
+ fbi->flags = FBINFO_FLAG_DEFAULT;
+ fbi->fbops = &exynos_drm_fb_ops;
+
drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth);
drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height);
@@ -93,6 +103,7 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
pgprot_writecombine(PAGE_KERNEL));
if (!obj->kvaddr) {
DRM_ERROR("failed to map pages to kernel space.\n");
+ drm_fb_helper_release_fbi(helper);
return -EIO;
}
@@ -112,7 +123,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
struct exynos_drm_fbdev *exynos_fbdev = to_exynos_fbdev(helper);
struct exynos_drm_gem_obj *obj;
struct drm_device *dev = helper->dev;
- struct fb_info *fbi;
struct drm_mode_fb_cmd2 mode_cmd = { 0 };
struct platform_device *pdev = dev->platformdev;
unsigned long size;
@@ -130,13 +140,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
mutex_lock(&dev->struct_mutex);
- fbi = drm_fb_helper_alloc_fbi(helper);
- if (IS_ERR(fbi)) {
- DRM_ERROR("failed to allocate fb info.\n");
- ret = PTR_ERR(fbi);
- goto out;
- }
-
size = mode_cmd.pitches[0] * mode_cmd.height;
obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);
@@ -152,7 +155,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
if (IS_ERR(obj)) {
ret = PTR_ERR(obj);
- goto err_release_fbi;
+ goto out;
}
exynos_fbdev->obj = obj;
@@ -164,10 +167,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
goto err_destroy_gem;
}
- fbi->par = helper;
- fbi->flags = FBINFO_FLAG_DEFAULT;
- fbi->fbops = &exynos_drm_fb_ops;
-
ret = exynos_drm_fbdev_update(helper, sizes, obj);
if (ret < 0)
goto err_destroy_framebuffer;
@@ -179,8 +178,6 @@ err_destroy_framebuffer:
drm_framebuffer_cleanup(helper->fb);
err_destroy_gem:
exynos_drm_gem_destroy(obj);
-err_release_fbi:
- drm_fb_helper_release_fbi(helper);
/*
* if failed, all resources allocated above would be released by
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 5/9] drm/exynos: cleanup to get gem object for fb
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (2 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 4/9] drm/exynos: update fb_info via only one function Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:31 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers Joonyoung Shim
` (4 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
Current codes get first gem object and then again get remain gem
objects. They can be unified to one routine.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index effeb64..5cee148 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -179,27 +179,18 @@ exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
if (!exynos_fb)
return ERR_PTR(-ENOMEM);
- obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]);
- if (!obj) {
- DRM_ERROR("failed to lookup gem object\n");
- ret = -ENOENT;
- goto err_free;
- }
-
- drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
- exynos_fb->exynos_gem_obj[0] = to_exynos_gem_obj(obj);
exynos_fb->buf_cnt = drm_format_num_planes(mode_cmd->pixel_format);
DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
- for (i = 1; i < exynos_fb->buf_cnt; i++) {
+ for (i = 0; i < exynos_fb->buf_cnt; i++) {
obj = drm_gem_object_lookup(dev, file_priv,
mode_cmd->handles[i]);
if (!obj) {
DRM_ERROR("failed to lookup gem object\n");
ret = -ENOENT;
exynos_fb->buf_cnt = i;
- goto err_unreference;
+ goto err;
}
exynos_gem_obj = to_exynos_gem_obj(obj);
@@ -207,18 +198,20 @@ exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
if (ret < 0)
- goto err_unreference;
+ goto err;
}
+ drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
+
ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
if (ret) {
DRM_ERROR("failed to init framebuffer.\n");
- goto err_unreference;
+ goto err;
}
return &exynos_fb->fb;
-err_unreference:
+err:
for (i = 0; i < exynos_fb->buf_cnt; i++) {
struct drm_gem_object *obj;
@@ -226,7 +219,7 @@ err_unreference:
if (obj)
drm_gem_object_unreference_unlocked(obj);
}
-err_free:
+
kfree(exynos_fb);
return ERR_PTR(ret);
}
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (3 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 5/9] drm/exynos: cleanup to get gem object for fb Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:35 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Joonyoung Shim
` (3 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
This modifies exynos_drm_framebuffer_init() to be possible to support
multiple buffers. Then it can be used by exynos_user_fb_create().
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 36 +++++++++++++++++--------------
drivers/gpu/drm/exynos/exynos_drm_fb.h | 5 ++++-
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 +--
3 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index 5cee148..8e5d3eb 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -23,7 +23,6 @@
#include "exynos_drm_drv.h"
#include "exynos_drm_fb.h"
#include "exynos_drm_fbdev.h"
-#include "exynos_drm_gem.h"
#include "exynos_drm_iommu.h"
#include "exynos_drm_crtc.h"
@@ -134,36 +133,41 @@ unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
struct drm_framebuffer *
exynos_drm_framebuffer_init(struct drm_device *dev,
struct drm_mode_fb_cmd2 *mode_cmd,
- struct drm_gem_object *obj)
+ struct exynos_drm_gem_obj **gem_obj,
+ int count)
{
struct exynos_drm_fb *exynos_fb;
- struct exynos_drm_gem_obj *exynos_gem_obj;
+ int i;
int ret;
- exynos_gem_obj = to_exynos_gem_obj(obj);
-
- ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
- if (ret < 0)
- return ERR_PTR(ret);
-
exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL);
if (!exynos_fb)
return ERR_PTR(-ENOMEM);
- drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
- exynos_fb->exynos_gem_obj[0] = exynos_gem_obj;
+ exynos_fb->buf_cnt = count;
+ DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
- /* buffer count to framebuffer always is 1 at booting time. */
- exynos_fb->buf_cnt = 1;
+ for (i = 0; i < count; i++) {
+ ret = check_fb_gem_memory_type(dev, gem_obj[i]);
+ if (ret < 0)
+ goto err;
+
+ exynos_fb->exynos_gem_obj[i] = gem_obj[i];
+ }
+
+ drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
- if (ret) {
- kfree(exynos_fb);
+ if (ret < 0) {
DRM_ERROR("failed to initialize framebuffer\n");
- return ERR_PTR(ret);
+ goto err;
}
return &exynos_fb->fb;
+
+err:
+ kfree(exynos_fb);
+ return ERR_PTR(ret);
}
static struct drm_framebuffer *
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
index 897d2cf..8900f6b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
@@ -14,10 +14,13 @@
#ifndef _EXYNOS_DRM_FB_H_
#define _EXYNOS_DRM_FB_H
+#include "exynos_drm_gem.h"
+
struct drm_framebuffer *
exynos_drm_framebuffer_init(struct drm_device *dev,
struct drm_mode_fb_cmd2 *mode_cmd,
- struct drm_gem_object *obj);
+ struct exynos_drm_gem_obj **gem_obj,
+ int count);
/* get gem object of a drm framebuffer */
struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 133cf5f..a221f75 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -21,7 +21,6 @@
#include "exynos_drm_drv.h"
#include "exynos_drm_fb.h"
#include "exynos_drm_fbdev.h"
-#include "exynos_drm_gem.h"
#include "exynos_drm_iommu.h"
#define MAX_CONNECTOR 4
@@ -160,7 +159,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
exynos_fbdev->obj = obj;
- helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj->base);
+ helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj, 1);
if (IS_ERR(helper->fb)) {
DRM_ERROR("failed to create drm framebuffer.\n");
ret = PTR_ERR(helper->fb);
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create()
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (4 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:53 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt() Joonyoung Shim
` (2 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
Using exynos_drm_framebuffer_init(), redundant codes can be removed.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 47 ++++++++++------------------------
1 file changed, 13 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index 8e5d3eb..9accc0d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -174,57 +174,36 @@ static struct drm_framebuffer *
exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
struct drm_mode_fb_cmd2 *mode_cmd)
{
+ struct exynos_drm_gem_obj *gem_objs[MAX_FB_BUFFER];
struct drm_gem_object *obj;
- struct exynos_drm_gem_obj *exynos_gem_obj;
- struct exynos_drm_fb *exynos_fb;
- int i, ret;
-
- exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL);
- if (!exynos_fb)
- return ERR_PTR(-ENOMEM);
-
- exynos_fb->buf_cnt = drm_format_num_planes(mode_cmd->pixel_format);
-
- DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
+ struct drm_framebuffer *fb;
+ int i;
+ int ret;
- for (i = 0; i < exynos_fb->buf_cnt; i++) {
+ for (i = 0; i < drm_format_num_planes(mode_cmd->pixel_format); i++) {
obj = drm_gem_object_lookup(dev, file_priv,
- mode_cmd->handles[i]);
+ mode_cmd->handles[i]);
if (!obj) {
DRM_ERROR("failed to lookup gem object\n");
ret = -ENOENT;
- exynos_fb->buf_cnt = i;
goto err;
}
- exynos_gem_obj = to_exynos_gem_obj(obj);
- exynos_fb->exynos_gem_obj[i] = exynos_gem_obj;
-
- ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
- if (ret < 0)
- goto err;
+ gem_objs[i] = to_exynos_gem_obj(obj);
}
- drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
-
- ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
- if (ret) {
- DRM_ERROR("failed to init framebuffer.\n");
+ fb = exynos_drm_framebuffer_init(dev, mode_cmd, gem_objs, i);
+ if (IS_ERR(fb)) {
+ ret = PTR_ERR(fb);
goto err;
}
- return &exynos_fb->fb;
+ return fb;
err:
- for (i = 0; i < exynos_fb->buf_cnt; i++) {
- struct drm_gem_object *obj;
+ while (i--)
+ drm_gem_object_unreference_unlocked(&gem_objs[i]->base);
- obj = &exynos_fb->exynos_gem_obj[i]->base;
- if (obj)
- drm_gem_object_unreference_unlocked(obj);
- }
-
- kfree(exynos_fb);
return ERR_PTR(ret);
}
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt()
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (5 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:54 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb Joonyoung Shim
2015-09-01 16:41 ` [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Gustavo Padovan
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
We can get buffer count of framebuffer using drm_format_num_planes(), so
keeping exynos_drm_fb_get_buf_cnt() is unnecessary.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 9 ---------
drivers/gpu/drm/exynos/exynos_drm_fb.h | 3 ---
drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 +-
3 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index 9accc0d..d2e746e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -121,15 +121,6 @@ static struct drm_framebuffer_funcs exynos_drm_fb_funcs = {
.dirty = exynos_drm_fb_dirty,
};
-unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
-{
- struct exynos_drm_fb *exynos_fb;
-
- exynos_fb = to_exynos_fb(fb);
-
- return exynos_fb->buf_cnt;
-}
-
struct drm_framebuffer *
exynos_drm_framebuffer_init(struct drm_device *dev,
struct drm_mode_fb_cmd2 *mode_cmd,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
index 8900f6b..85e4445 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
@@ -28,7 +28,4 @@ struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
void exynos_drm_mode_config_init(struct drm_device *dev);
-/* get a buffer count to drm framebuffer. */
-unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb);
-
#endif
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c
index d9a68fd..36c9911 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_plane.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c
@@ -132,7 +132,7 @@ static int exynos_plane_atomic_check(struct drm_plane *plane,
if (!state->fb)
return 0;
- nr = exynos_drm_fb_get_buf_cnt(state->fb);
+ nr = drm_format_num_planes(state->fb->pixel_format);
for (i = 0; i < nr; i++) {
struct exynos_drm_gem_obj *obj =
exynos_drm_fb_gem_obj(state->fb, i);
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (6 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt() Joonyoung Shim
@ 2015-09-01 7:22 ` Joonyoung Shim
2015-09-01 20:55 ` Gustavo Padovan
2015-09-01 16:41 ` [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Gustavo Padovan
8 siblings, 1 reply; 20+ messages in thread
From: Joonyoung Shim @ 2015-09-01 7:22 UTC (permalink / raw)
To: dri-devel; +Cc: sw0312.kim
Looking other drm drivers, there is no the restriction that framebuffer
has only one buffer in .create_handle() callback. They use just first
buffer.
If this limitation is removed, there is no reason keeping buffer count
for framebuffer, so we can remove buf_cnt from struct exynos_drm_fb.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_fb.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index d2e746e..6d1b70e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -32,12 +32,10 @@
* exynos specific framebuffer structure.
*
* @fb: drm framebuffer obejct.
- * @buf_cnt: a buffer count to drm framebuffer.
* @exynos_gem_obj: array of exynos specific gem object containing a gem object.
*/
struct exynos_drm_fb {
struct drm_framebuffer fb;
- unsigned int buf_cnt;
struct exynos_drm_gem_obj *exynos_gem_obj[MAX_FB_BUFFER];
};
@@ -97,10 +95,6 @@ static int exynos_drm_fb_create_handle(struct drm_framebuffer *fb,
{
struct exynos_drm_fb *exynos_fb = to_exynos_fb(fb);
- /* This fb should have only one gem object. */
- if (WARN_ON(exynos_fb->buf_cnt != 1))
- return -EINVAL;
-
return drm_gem_handle_create(file_priv,
&exynos_fb->exynos_gem_obj[0]->base, handle);
}
@@ -135,9 +129,6 @@ exynos_drm_framebuffer_init(struct drm_device *dev,
if (!exynos_fb)
return ERR_PTR(-ENOMEM);
- exynos_fb->buf_cnt = count;
- DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
-
for (i = 0; i < count; i++) {
ret = check_fb_gem_memory_type(dev, gem_obj[i]);
if (ret < 0)
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt()
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
` (7 preceding siblings ...)
2015-09-01 7:22 ` [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb Joonyoung Shim
@ 2015-09-01 16:41 ` Gustavo Padovan
8 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 16:41 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> The exynos_drm_fb_set_buf_cnt() is used to set buffer count only in
> exynos_drm_fbdev_update(). This patch sets directly buffer count in
> exynos_drm_framebuffer_init() without using exynos_drm_fb_set_buf_cnt(),
> so there is no any reason to keep exynos_drm_fb_set_buf_cnt().
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 13 +++----------
> drivers/gpu/drm/exynos/exynos_drm_fb.h | 4 ----
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 ---
> 3 files changed, 3 insertions(+), 17 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c
2015-09-01 7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
@ 2015-09-01 16:42 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 16:42 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> The variable name "exynos_gem_obj" is too long, so some lines exceed 80
> characters. It's simple to use "obj" instead of "exynos_gem_obj".
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 30 ++++++++++++++----------------
> 1 file changed, 14 insertions(+), 16 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update()
2015-09-01 7:22 ` [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update() Joonyoung Shim
@ 2015-09-01 16:43 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 16:43 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> It can get exynos_gem object via function argument, so no need to call
> exynos_drm_fb_gem_obj() in exynos_drm_fbdev_update.
>
> It also can get struct drm_framebuffer *fb via helper->fb, so can remove
> a function argument for it.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 15 ++++-----------
> 1 file changed, 4 insertions(+), 11 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/9] drm/exynos: update fb_info via only one function
2015-09-01 7:22 ` [PATCH 4/9] drm/exynos: update fb_info via only one function Joonyoung Shim
@ 2015-09-01 20:30 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:30 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> This patch moves codes to update fb_info into exynos_drm_fbdev_update(),
> so fb_info is updated via only one function.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 29 +++++++++++++----------------
> 1 file changed, 13 insertions(+), 16 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/9] drm/exynos: cleanup to get gem object for fb
2015-09-01 7:22 ` [PATCH 5/9] drm/exynos: cleanup to get gem object for fb Joonyoung Shim
@ 2015-09-01 20:31 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:31 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> Current codes get first gem object and then again get remain gem
> objects. They can be unified to one routine.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 23 ++++++++---------------
> 1 file changed, 8 insertions(+), 15 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers
2015-09-01 7:22 ` [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers Joonyoung Shim
@ 2015-09-01 20:35 ` Gustavo Padovan
2015-09-01 20:39 ` Gustavo Padovan
2015-09-02 10:32 ` Inki Dae
0 siblings, 2 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:35 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> This modifies exynos_drm_framebuffer_init() to be possible to support
> multiple buffers. Then it can be used by exynos_user_fb_create().
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 36 +++++++++++++++++--------------
> drivers/gpu/drm/exynos/exynos_drm_fb.h | 5 ++++-
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 +--
> 3 files changed, 25 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> index 5cee148..8e5d3eb 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> @@ -23,7 +23,6 @@
> #include "exynos_drm_drv.h"
> #include "exynos_drm_fb.h"
> #include "exynos_drm_fbdev.h"
> -#include "exynos_drm_gem.h"
> #include "exynos_drm_iommu.h"
> #include "exynos_drm_crtc.h"
>
> @@ -134,36 +133,41 @@ unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
> struct drm_framebuffer *
> exynos_drm_framebuffer_init(struct drm_device *dev,
> struct drm_mode_fb_cmd2 *mode_cmd,
> - struct drm_gem_object *obj)
> + struct exynos_drm_gem_obj **gem_obj,
> + int count)
> {
> struct exynos_drm_fb *exynos_fb;
> - struct exynos_drm_gem_obj *exynos_gem_obj;
> + int i;
> int ret;
>
> - exynos_gem_obj = to_exynos_gem_obj(obj);
> -
> - ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
> - if (ret < 0)
> - return ERR_PTR(ret);
> -
> exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL);
> if (!exynos_fb)
> return ERR_PTR(-ENOMEM);
>
> - drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
> - exynos_fb->exynos_gem_obj[0] = exynos_gem_obj;
> + exynos_fb->buf_cnt = count;
> + DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
>
> - /* buffer count to framebuffer always is 1 at booting time. */
> - exynos_fb->buf_cnt = 1;
> + for (i = 0; i < count; i++) {
> + ret = check_fb_gem_memory_type(dev, gem_obj[i]);
> + if (ret < 0)
> + goto err;
> +
> + exynos_fb->exynos_gem_obj[i] = gem_obj[i];
> + }
> +
> + drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
>
> ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
> - if (ret) {
> - kfree(exynos_fb);
> + if (ret < 0) {
> DRM_ERROR("failed to initialize framebuffer\n");
> - return ERR_PTR(ret);
> + goto err;
> }
>
> return &exynos_fb->fb;
> +
> +err:
> + kfree(exynos_fb);
> + return ERR_PTR(ret);
> }
>
> static struct drm_framebuffer *
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
> index 897d2cf..8900f6b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
> @@ -14,10 +14,13 @@
> #ifndef _EXYNOS_DRM_FB_H_
> #define _EXYNOS_DRM_FB_H
>
> +#include "exynos_drm_gem.h"
> +
> struct drm_framebuffer *
> exynos_drm_framebuffer_init(struct drm_device *dev,
> struct drm_mode_fb_cmd2 *mode_cmd,
> - struct drm_gem_object *obj);
> + struct exynos_drm_gem_obj **gem_obj,
> + int count);
>
> /* get gem object of a drm framebuffer */
> struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> index 133cf5f..a221f75 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> @@ -21,7 +21,6 @@
> #include "exynos_drm_drv.h"
> #include "exynos_drm_fb.h"
> #include "exynos_drm_fbdev.h"
> -#include "exynos_drm_gem.h"
> #include "exynos_drm_iommu.h"
>
> #define MAX_CONNECTOR 4
> @@ -160,7 +159,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
>
> exynos_fbdev->obj = obj;
>
> - helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj->base);
> + helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj, 1);
Do you have any use for this for multiple buffers? I don't see any patch
in this series for multiple buffers. I think we should wait for a user
of multiple buffers to apply this patch.
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers
2015-09-01 20:35 ` Gustavo Padovan
@ 2015-09-01 20:39 ` Gustavo Padovan
2015-09-02 10:32 ` Inki Dae
1 sibling, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:39 UTC (permalink / raw)
To: Joonyoung Shim, dri-devel, sw0312.kim
2015-09-01 Gustavo Padovan <gustavo@padovan.org>:
> 2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
>
> > This modifies exynos_drm_framebuffer_init() to be possible to support
> > multiple buffers. Then it can be used by exynos_user_fb_create().
> >
> > Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> > ---
> > drivers/gpu/drm/exynos/exynos_drm_fb.c | 36 +++++++++++++++++--------------
> > drivers/gpu/drm/exynos/exynos_drm_fb.h | 5 ++++-
> > drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 +--
> > 3 files changed, 25 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > index 5cee148..8e5d3eb 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > @@ -23,7 +23,6 @@
> > #include "exynos_drm_drv.h"
> > #include "exynos_drm_fb.h"
> > #include "exynos_drm_fbdev.h"
> > -#include "exynos_drm_gem.h"
> > #include "exynos_drm_iommu.h"
> > #include "exynos_drm_crtc.h"
> >
> > @@ -134,36 +133,41 @@ unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
> > struct drm_framebuffer *
> > exynos_drm_framebuffer_init(struct drm_device *dev,
> > struct drm_mode_fb_cmd2 *mode_cmd,
> > - struct drm_gem_object *obj)
> > + struct exynos_drm_gem_obj **gem_obj,
> > + int count)
> > {
> > struct exynos_drm_fb *exynos_fb;
> > - struct exynos_drm_gem_obj *exynos_gem_obj;
> > + int i;
> > int ret;
> >
> > - exynos_gem_obj = to_exynos_gem_obj(obj);
> > -
> > - ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
> > - if (ret < 0)
> > - return ERR_PTR(ret);
> > -
> > exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL);
> > if (!exynos_fb)
> > return ERR_PTR(-ENOMEM);
> >
> > - drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
> > - exynos_fb->exynos_gem_obj[0] = exynos_gem_obj;
> > + exynos_fb->buf_cnt = count;
> > + DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
> >
> > - /* buffer count to framebuffer always is 1 at booting time. */
> > - exynos_fb->buf_cnt = 1;
> > + for (i = 0; i < count; i++) {
> > + ret = check_fb_gem_memory_type(dev, gem_obj[i]);
> > + if (ret < 0)
> > + goto err;
> > +
> > + exynos_fb->exynos_gem_obj[i] = gem_obj[i];
> > + }
> > +
> > + drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
> >
> > ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
> > - if (ret) {
> > - kfree(exynos_fb);
> > + if (ret < 0) {
> > DRM_ERROR("failed to initialize framebuffer\n");
> > - return ERR_PTR(ret);
> > + goto err;
> > }
> >
> > return &exynos_fb->fb;
> > +
> > +err:
> > + kfree(exynos_fb);
> > + return ERR_PTR(ret);
> > }
> >
> > static struct drm_framebuffer *
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
> > index 897d2cf..8900f6b 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
> > @@ -14,10 +14,13 @@
> > #ifndef _EXYNOS_DRM_FB_H_
> > #define _EXYNOS_DRM_FB_H
> >
> > +#include "exynos_drm_gem.h"
> > +
> > struct drm_framebuffer *
> > exynos_drm_framebuffer_init(struct drm_device *dev,
> > struct drm_mode_fb_cmd2 *mode_cmd,
> > - struct drm_gem_object *obj);
> > + struct exynos_drm_gem_obj **gem_obj,
> > + int count);
> >
> > /* get gem object of a drm framebuffer */
> > struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
> > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > index 133cf5f..a221f75 100644
> > --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > @@ -21,7 +21,6 @@
> > #include "exynos_drm_drv.h"
> > #include "exynos_drm_fb.h"
> > #include "exynos_drm_fbdev.h"
> > -#include "exynos_drm_gem.h"
> > #include "exynos_drm_iommu.h"
> >
> > #define MAX_CONNECTOR 4
> > @@ -160,7 +159,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
> >
> > exynos_fbdev->obj = obj;
> >
> > - helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj->base);
> > + helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj, 1);
>
> Do you have any use for this for multiple buffers? I don't see any patch
> in this series for multiple buffers. I think we should wait for a user
> of multiple buffers to apply this patch.
Ah, just saw it.
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create()
2015-09-01 7:22 ` [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Joonyoung Shim
@ 2015-09-01 20:53 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:53 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> Using exynos_drm_framebuffer_init(), redundant codes can be removed.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 47 ++++++++++------------------------
> 1 file changed, 13 insertions(+), 34 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt()
2015-09-01 7:22 ` [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt() Joonyoung Shim
@ 2015-09-01 20:54 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:54 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> We can get buffer count of framebuffer using drm_format_num_planes(), so
> keeping exynos_drm_fb_get_buf_cnt() is unnecessary.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 9 ---------
> drivers/gpu/drm/exynos/exynos_drm_fb.h | 3 ---
> drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 +-
> 3 files changed, 1 insertion(+), 13 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb
2015-09-01 7:22 ` [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb Joonyoung Shim
@ 2015-09-01 20:55 ` Gustavo Padovan
0 siblings, 0 replies; 20+ messages in thread
From: Gustavo Padovan @ 2015-09-01 20:55 UTC (permalink / raw)
To: Joonyoung Shim; +Cc: sw0312.kim, dri-devel
Hi Joonyoung,
2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
> Looking other drm drivers, there is no the restriction that framebuffer
> has only one buffer in .create_handle() callback. They use just first
> buffer.
>
> If this limitation is removed, there is no reason keeping buffer count
> for framebuffer, so we can remove buf_cnt from struct exynos_drm_fb.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_fb.c | 9 ---------
> 1 file changed, 9 deletions(-)
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers
2015-09-01 20:35 ` Gustavo Padovan
2015-09-01 20:39 ` Gustavo Padovan
@ 2015-09-02 10:32 ` Inki Dae
1 sibling, 0 replies; 20+ messages in thread
From: Inki Dae @ 2015-09-02 10:32 UTC (permalink / raw)
To: Gustavo Padovan, Joonyoung Shim, dri-devel, sw0312.kim
On 2015년 09월 02일 05:35, Gustavo Padovan wrote:
> 2015-09-01 Joonyoung Shim <jy0922.shim@samsung.com>:
>
>> This modifies exynos_drm_framebuffer_init() to be possible to support
>> multiple buffers. Then it can be used by exynos_user_fb_create().
>>
>> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
>> ---
>> drivers/gpu/drm/exynos/exynos_drm_fb.c | 36 +++++++++++++++++--------------
>> drivers/gpu/drm/exynos/exynos_drm_fb.h | 5 ++++-
>> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 3 +--
>> 3 files changed, 25 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
>> index 5cee148..8e5d3eb 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
>> @@ -23,7 +23,6 @@
>> #include "exynos_drm_drv.h"
>> #include "exynos_drm_fb.h"
>> #include "exynos_drm_fbdev.h"
>> -#include "exynos_drm_gem.h"
>> #include "exynos_drm_iommu.h"
>> #include "exynos_drm_crtc.h"
>>
>> @@ -134,36 +133,41 @@ unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb)
>> struct drm_framebuffer *
>> exynos_drm_framebuffer_init(struct drm_device *dev,
>> struct drm_mode_fb_cmd2 *mode_cmd,
>> - struct drm_gem_object *obj)
>> + struct exynos_drm_gem_obj **gem_obj,
>> + int count)
>> {
>> struct exynos_drm_fb *exynos_fb;
>> - struct exynos_drm_gem_obj *exynos_gem_obj;
>> + int i;
>> int ret;
>>
>> - exynos_gem_obj = to_exynos_gem_obj(obj);
>> -
>> - ret = check_fb_gem_memory_type(dev, exynos_gem_obj);
>> - if (ret < 0)
>> - return ERR_PTR(ret);
>> -
>> exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL);
>> if (!exynos_fb)
>> return ERR_PTR(-ENOMEM);
>>
>> - drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
>> - exynos_fb->exynos_gem_obj[0] = exynos_gem_obj;
>> + exynos_fb->buf_cnt = count;
>> + DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt);
>>
>> - /* buffer count to framebuffer always is 1 at booting time. */
>> - exynos_fb->buf_cnt = 1;
>> + for (i = 0; i < count; i++) {
>> + ret = check_fb_gem_memory_type(dev, gem_obj[i]);
>> + if (ret < 0)
>> + goto err;
>> +
>> + exynos_fb->exynos_gem_obj[i] = gem_obj[i];
>> + }
>> +
>> + drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd);
>>
>> ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs);
>> - if (ret) {
>> - kfree(exynos_fb);
>> + if (ret < 0) {
>> DRM_ERROR("failed to initialize framebuffer\n");
>> - return ERR_PTR(ret);
>> + goto err;
>> }
>>
>> return &exynos_fb->fb;
>> +
>> +err:
>> + kfree(exynos_fb);
>> + return ERR_PTR(ret);
>> }
>>
>> static struct drm_framebuffer *
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
>> index 897d2cf..8900f6b 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
>> @@ -14,10 +14,13 @@
>> #ifndef _EXYNOS_DRM_FB_H_
>> #define _EXYNOS_DRM_FB_H
>>
>> +#include "exynos_drm_gem.h"
>> +
>> struct drm_framebuffer *
>> exynos_drm_framebuffer_init(struct drm_device *dev,
>> struct drm_mode_fb_cmd2 *mode_cmd,
>> - struct drm_gem_object *obj);
>> + struct exynos_drm_gem_obj **gem_obj,
>> + int count);
>>
>> /* get gem object of a drm framebuffer */
>> struct exynos_drm_gem_obj *exynos_drm_fb_gem_obj(struct drm_framebuffer *fb,
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
>> index 133cf5f..a221f75 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
>> @@ -21,7 +21,6 @@
>> #include "exynos_drm_drv.h"
>> #include "exynos_drm_fb.h"
>> #include "exynos_drm_fbdev.h"
>> -#include "exynos_drm_gem.h"
>> #include "exynos_drm_iommu.h"
>>
>> #define MAX_CONNECTOR 4
>> @@ -160,7 +159,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
>>
>> exynos_fbdev->obj = obj;
>>
>> - helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj->base);
>> + helper->fb = exynos_drm_framebuffer_init(dev, &mode_cmd, &obj, 1);
>
> Do you have any use for this for multiple buffers? I don't see any patch
> in this series for multiple buffers. I think we should wait for a user
> of multiple buffers to apply this patch.
Exynos4412 SoC has a video processor which can handle YCbCr - NV12 and
NV21 - image, and the image is transferred to Digital TV through HDMI
controller. NV12 and NV21 have 2 plane buffers and the video processor
is controlled by Exynos drm driver. So reasonable and looks good to me.
Thanks,
Inki Dae
>
> Gustavo
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2015-09-02 10:32 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-01 7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
2015-09-01 7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
2015-09-01 16:42 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update() Joonyoung Shim
2015-09-01 16:43 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 4/9] drm/exynos: update fb_info via only one function Joonyoung Shim
2015-09-01 20:30 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 5/9] drm/exynos: cleanup to get gem object for fb Joonyoung Shim
2015-09-01 20:31 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers Joonyoung Shim
2015-09-01 20:35 ` Gustavo Padovan
2015-09-01 20:39 ` Gustavo Padovan
2015-09-02 10:32 ` Inki Dae
2015-09-01 7:22 ` [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Joonyoung Shim
2015-09-01 20:53 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt() Joonyoung Shim
2015-09-01 20:54 ` Gustavo Padovan
2015-09-01 7:22 ` [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb Joonyoung Shim
2015-09-01 20:55 ` Gustavo Padovan
2015-09-01 16:41 ` [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Gustavo Padovan
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.