* [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
@ 2017-11-15 14:19 Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional Noralf Trønnes
` (23 more replies)
0 siblings, 24 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
struct drm_fbdev_cma and it's wrapper functions. The final piece will
happen when tinydrm moves away from the cma helper and we can remove the
struct.
Note:
Patches 19-22 depends on patchset:
[v3] drm: Add simple modeset suspend/resume helpers
Noralf.
Changes since version 1:
- Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
- sti: Remove unused private variable (Benjamin)
- stm: Remove duplicate ldev assignment (Philippe)
- tilcdc: Rebase on: 'drm/tilcdc: Use drm_gem_cma_print_info()'
Noralf Trønnes (22):
drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional
drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
drm/arc: Use drm_fb_cma_fbdev_init/fini()
drm/arm/hdlcd: Use drm_fb_cma_fbdev_init/fini()
drm/atmel-hlcdc: Use drm_fb_cma_fbdev_init/fini()
drm/hisilicon/kirin: Use drm_fb_cma_fbdev_init/fini()
drm/imx: Use drm_fb_cma_fbdev_init/fini()
drm/meson: Use drm_fb_cma_fbdev_init/fini()
drm/mxsfb: Use drm_fb_cma_fbdev_init/fini()
drm/pl111: Use drm_fb_cma_fbdev_init/fini()
drm/rcar-du: Use drm_fb_cma_fbdev_init/fini()
drm/sti: Use drm_fb_cma_fbdev_init/fini()
drm/stm: Use drm_fb_cma_fbdev_init/fini()
drm/sun4i: Use drm_fb_cma_fbdev_init/fini()
drm/tilcdc: Use drm_fb_cma_fbdev_init/fini()
drm/tve200: Use drm_fb_cma_fbdev_init/fini()
drm/vc4: Use drm_fb_cma_fbdev_init/fini()
drm/zte: Use drm_fb_cma_fbdev_init/fini()
drm/arm/mali: Use drm_fb_cma_fbdev_init/fini()
drm/fsl-dcu: Use drm_fb_cma_fbdev_init/fini()
drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini()
drm/cma-helper: Remove drm_fbdev_cma* functions
Documentation/gpu/todo.rst | 5 -
drivers/gpu/drm/arc/arcpgu.h | 4 -
drivers/gpu/drm/arc/arcpgu_drv.c | 36 +----
drivers/gpu/drm/arm/hdlcd_drv.c | 37 +----
drivers/gpu/drm/arm/hdlcd_drv.h | 1 -
drivers/gpu/drm/arm/malidp_drv.c | 39 +----
drivers/gpu/drm/arm/malidp_drv.h | 1 -
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 26 +---
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 2 +-
drivers/gpu/drm/drm_fb_cma_helper.c | 191 +++++++++---------------
drivers/gpu/drm/drm_gem_framebuffer_helper.c | 6 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 +---
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 1 -
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 35 +----
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 4 -
drivers/gpu/drm/imx/imx-drm-core.c | 33 +---
drivers/gpu/drm/imx/imx-drm.h | 1 -
drivers/gpu/drm/meson/meson_drv.c | 20 +--
drivers/gpu/drm/meson/meson_drv.h | 1 -
drivers/gpu/drm/mxsfb/mxsfb_drv.c | 21 +--
drivers/gpu/drm/mxsfb/mxsfb_drv.h | 1 -
drivers/gpu/drm/pl111/pl111_drm.h | 1 -
drivers/gpu/drm/pl111/pl111_drv.c | 16 +-
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 13 +-
drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 -
drivers/gpu/drm/rcar-du/rcar_du_kms.c | 20 +--
drivers/gpu/drm/sti/sti_drv.c | 27 +---
drivers/gpu/drm/sti/sti_drv.h | 1 -
drivers/gpu/drm/stm/drv.c | 38 +----
drivers/gpu/drm/stm/ltdc.h | 1 -
drivers/gpu/drm/sun4i/sun4i_drv.c | 14 +-
drivers/gpu/drm/sun4i/sun4i_drv.h | 2 -
drivers/gpu/drm/sun4i/sun4i_framebuffer.c | 18 +--
drivers/gpu/drm/sun4i/sun4i_framebuffer.h | 2 +-
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 26 +---
drivers/gpu/drm/tilcdc/tilcdc_drv.h | 2 -
drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 37 +----
drivers/gpu/drm/tinydrm/mi0283qt.c | 3 +-
drivers/gpu/drm/tinydrm/st7586.c | 3 +-
drivers/gpu/drm/tve200/tve200_drm.h | 1 -
drivers/gpu/drm/tve200/tve200_drv.c | 16 +-
drivers/gpu/drm/vc4/vc4_drv.c | 13 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 -
drivers/gpu/drm/vc4/vc4_kms.c | 18 +--
drivers/gpu/drm/zte/zx_drm_drv.c | 48 +-----
include/drm/drm_fb_cma_helper.h | 29 +---
include/drm/tinydrm/tinydrm.h | 3 -
47 files changed, 198 insertions(+), 649 deletions(-)
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini() Noralf Trønnes
` (22 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Make the drm_framebuffer_funcs argument optional for drivers that
don't need to set the dirty callback.
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/drm_gem_framebuffer_helper.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
index aa8cb9bfa499..4d682a6e8bcb 100644
--- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c
+++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
@@ -272,7 +272,8 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_prepare_fb);
* @sizes: fbdev size description
* @pitch_align: Optional pitch alignment
* @obj: GEM object backing the framebuffer
- * @funcs: vtable to be used for the new framebuffer object
+ * @funcs: Optional vtable to be used for the new framebuffer object when the
+ * dirty callback is needed.
*
* This function creates a framebuffer from a &drm_fb_helper_surface_size
* description for use in the &drm_fb_helper_funcs.fb_probe callback.
@@ -300,6 +301,9 @@ drm_gem_fbdev_fb_create(struct drm_device *dev,
if (obj->size < mode_cmd.pitches[0] * mode_cmd.height)
return ERR_PTR(-EINVAL);
+ if (!funcs)
+ funcs = &drm_gem_fb_funcs;
+
return drm_gem_fb_alloc(dev, &mode_cmd, &obj, 1, funcs);
}
EXPORT_SYMBOL(drm_gem_fbdev_fb_create);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-30 17:38 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini() Noralf Trønnes
` (21 subsequent siblings)
23 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Add functions drm_fb_cma_fbdev_init(), drm_fb_cma_fbdev_fini() and
drm_fb_cma_fbdev_init_with_funcs(). These functions relies on the fact
that the drm_fb_helper struct is stored in dev->drm_fb_helper_private
so drivers don't need to store it.
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
Changes since version 1:
- Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
drivers/gpu/drm/drm_fb_cma_helper.c | 119 +++++++++++++++++++++++++++++++++++-
include/drm/drm_fb_cma_helper.h | 7 +++
2 files changed, 123 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 35b56dfba929..186d00adfb5f 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -23,6 +23,7 @@
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_fb_cma_helper.h>
+#include <drm/drm_print.h>
#include <linux/module.h>
#define DEFAULT_FBDEFIO_DELAY_MS 50
@@ -42,7 +43,7 @@ struct drm_fbdev_cma {
* callback function to create a cma backed framebuffer.
*
* An fbdev framebuffer backed by cma is also available by calling
- * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down.
+ * drm_fb_cma_fbdev_init(). drm_fb_cma_fbdev_fini() tears it down.
* If the &drm_framebuffer_funcs.dirty callback is set, fb_deferred_io will be
* set up automatically. &drm_framebuffer_funcs.dirty is called by
* drm_fb_helper_deferred_io() in process context (&struct delayed_work).
@@ -68,7 +69,7 @@ struct drm_fbdev_cma {
*
* Initialize::
*
- * fbdev = drm_fbdev_cma_init_with_funcs(dev, 16,
+ * fbdev = drm_fb_cma_fbdev_init_with_funcs(dev, 16,
* dev->mode_config.num_crtc,
* dev->mode_config.num_connector,
* &driver_fb_funcs);
@@ -256,7 +257,7 @@ drm_fbdev_cma_create(struct drm_fb_helper *helper,
fbi->screen_size = size;
fbi->fix.smem_len = size;
- if (fbdev_cma->fb_funcs->dirty) {
+ if (fb->funcs->dirty) {
ret = drm_fbdev_cma_defio_init(fbi, obj);
if (ret)
goto err_cma_destroy;
@@ -277,6 +278,118 @@ static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
.fb_probe = drm_fbdev_cma_create,
};
+/**
+ * drm_fb_cma_fbdev_init_with_funcs() - Allocate and initialize fbdev emulation
+ * @dev: DRM device
+ * @preferred_bpp: Preferred bits per pixel for the device.
+ * @dev->mode_config.preferred_depth is used if this is zero.
+ * @max_conn_count: Maximum number of connectors.
+ * @dev->mode_config.num_connector is used if this is zero.
+ * @funcs: Framebuffer functions, in particular a custom dirty() callback.
+ * Can be NULL.
+ *
+ * Returns:
+ * Zero on success or negative error code on failure.
+ */
+int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
+ unsigned int preferred_bpp, unsigned int max_conn_count,
+ const struct drm_framebuffer_funcs *funcs)
+{
+ struct drm_fbdev_cma *fbdev_cma;
+ struct drm_fb_helper *fb_helper;
+ int ret;
+
+ if (!preferred_bpp)
+ preferred_bpp = dev->mode_config.preferred_depth;
+ if (!preferred_bpp)
+ preferred_bpp = 32;
+
+ if (!max_conn_count)
+ max_conn_count = dev->mode_config.num_connector;
+
+ fbdev_cma = kzalloc(sizeof(*fbdev_cma), GFP_KERNEL);
+ if (!fbdev_cma)
+ return -ENOMEM;
+
+ fbdev_cma->fb_funcs = funcs;
+ fb_helper = &fbdev_cma->fb_helper;
+
+ drm_fb_helper_prepare(dev, fb_helper, &drm_fb_cma_helper_funcs);
+
+ ret = drm_fb_helper_init(dev, fb_helper, max_conn_count);
+ if (ret < 0) {
+ DRM_DEV_ERROR(dev->dev, "Failed to initialize fbdev helper.\n");
+ goto err_free;
+ }
+
+ ret = drm_fb_helper_single_add_all_connectors(fb_helper);
+ if (ret < 0) {
+ DRM_DEV_ERROR(dev->dev, "Failed to add connectors.\n");
+ goto err_drm_fb_helper_fini;
+ }
+
+ ret = drm_fb_helper_initial_config(fb_helper, preferred_bpp);
+ if (ret < 0) {
+ DRM_DEV_ERROR(dev->dev, "Failed to set fbdev configuration.\n");
+ goto err_drm_fb_helper_fini;
+ }
+
+ return 0;
+
+err_drm_fb_helper_fini:
+ drm_fb_helper_fini(fb_helper);
+err_free:
+ kfree(fbdev_cma);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init_with_funcs);
+
+/**
+ * drm_fb_cma_fbdev_init() - Allocate and initialize fbdev emulation
+ * @dev: DRM device
+ * @preferred_bpp: Preferred bits per pixel for the device.
+ * @dev->mode_config.preferred_depth is used if this is zero.
+ * @max_conn_count: Maximum number of connectors.
+ * @dev->mode_config.num_connector is used if this is zero.
+ *
+ * Returns:
+ * Zero on success or negative error code on failure.
+ */
+int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
+ unsigned int max_conn_count)
+{
+ return drm_fb_cma_fbdev_init_with_funcs(dev, preferred_bpp,
+ max_conn_count, NULL);
+}
+EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init);
+
+/**
+ * drm_fb_cma_fbdev_fini() - Teardown fbdev emulation
+ * @dev: DRM device
+ */
+void drm_fb_cma_fbdev_fini(struct drm_device *dev)
+{
+ struct drm_fb_helper *fb_helper = dev->fb_helper;
+
+ if (!fb_helper)
+ return;
+
+ /* Unregister if it hasn't been done already */
+ if (fb_helper->fbdev && fb_helper->fbdev->dev)
+ drm_fb_helper_unregister_fbi(fb_helper);
+
+ if (fb_helper->fbdev)
+ drm_fbdev_cma_defio_fini(fb_helper->fbdev);
+
+ if (fb_helper->fb)
+ drm_framebuffer_remove(fb_helper->fb);
+
+ drm_fb_helper_fini(fb_helper);
+ kfree(to_fbdev_cma(fb_helper));
+}
+EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_fini);
+
/**
* drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
* @dev: DRM device
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index a613ff022e6c..4fb2d5563420 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -15,6 +15,13 @@ struct drm_mode_fb_cmd2;
struct drm_plane;
struct drm_plane_state;
+int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
+ unsigned int preferred_bpp, unsigned int max_conn_count,
+ const struct drm_framebuffer_funcs *funcs);
+int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
+ unsigned int max_conn_count);
+void drm_fb_cma_fbdev_fini(struct drm_device *dev);
+
struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
unsigned int preferred_bpp, unsigned int max_conn_count,
const struct drm_framebuffer_funcs *funcs);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini() Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-21 16:49 ` Alexey Brodkin
2018-09-27 8:49 ` Alexey Brodkin
2017-11-15 14:19 ` [PATCH v2 04/22] drm/arm/hdlcd: " Noralf Trønnes
` (20 subsequent siblings)
23 siblings, 2 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Remove unused function prototype arcpgu_fbdev_cma_init().
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/arc/arcpgu.h | 4 ----
drivers/gpu/drm/arc/arcpgu_drv.c | 36 +++++++-----------------------------
2 files changed, 7 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/arc/arcpgu.h b/drivers/gpu/drm/arc/arcpgu.h
index e8fcf3ab1d9a..90ef76b19f8a 100644
--- a/drivers/gpu/drm/arc/arcpgu.h
+++ b/drivers/gpu/drm/arc/arcpgu.h
@@ -20,7 +20,6 @@
struct arcpgu_drm_private {
void __iomem *regs;
struct clk *clk;
- struct drm_fbdev_cma *fbdev;
struct drm_framebuffer *fb;
struct drm_crtc crtc;
struct drm_plane *plane;
@@ -43,8 +42,5 @@ static inline u32 arc_pgu_read(struct arcpgu_drm_private *arcpgu,
int arc_pgu_setup_crtc(struct drm_device *dev);
int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np);
int arcpgu_drm_sim_init(struct drm_device *drm, struct device_node *np);
-struct drm_fbdev_cma *arcpgu_fbdev_cma_init(struct drm_device *dev,
- unsigned int preferred_bpp, unsigned int num_crtc,
- unsigned int max_conn_count);
#endif
diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
index f067de4e1e82..e25981adbed0 100644
--- a/drivers/gpu/drm/arc/arcpgu_drv.c
+++ b/drivers/gpu/drm/arc/arcpgu_drv.c
@@ -16,6 +16,7 @@
#include <linux/clk.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
@@ -25,16 +26,9 @@
#include "arcpgu.h"
#include "arcpgu_regs.h"
-static void arcpgu_fb_output_poll_changed(struct drm_device *dev)
-{
- struct arcpgu_drm_private *arcpgu = dev->dev_private;
-
- drm_fbdev_cma_hotplug_event(arcpgu->fbdev);
-}
-
static const struct drm_mode_config_funcs arcpgu_drm_modecfg_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = arcpgu_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -51,13 +45,6 @@ static void arcpgu_setup_mode_config(struct drm_device *drm)
DEFINE_DRM_GEM_CMA_FOPS(arcpgu_drm_ops);
-static void arcpgu_lastclose(struct drm_device *drm)
-{
- struct arcpgu_drm_private *arcpgu = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(arcpgu->fbdev);
-}
-
static int arcpgu_load(struct drm_device *drm)
{
struct platform_device *pdev = to_platform_device(drm->dev);
@@ -113,13 +100,9 @@ static int arcpgu_load(struct drm_device *drm)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
- arcpgu->fbdev = drm_fbdev_cma_init(drm, 16,
- drm->mode_config.num_connector);
- if (IS_ERR(arcpgu->fbdev)) {
- ret = PTR_ERR(arcpgu->fbdev);
- arcpgu->fbdev = NULL;
- return -ENODEV;
- }
+ ret = drm_fb_cma_fbdev_init(drm, 16, 0);
+ if (ret)
+ return ret;
platform_set_drvdata(pdev, drm);
return 0;
@@ -127,12 +110,7 @@ static int arcpgu_load(struct drm_device *drm)
static int arcpgu_unload(struct drm_device *drm)
{
- struct arcpgu_drm_private *arcpgu = drm->dev_private;
-
- if (arcpgu->fbdev) {
- drm_fbdev_cma_fini(arcpgu->fbdev);
- arcpgu->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
drm_mode_config_cleanup(drm);
@@ -167,7 +145,7 @@ static int arcpgu_debugfs_init(struct drm_minor *minor)
static struct drm_driver arcpgu_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = arcpgu_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.name = "arcpgu",
.desc = "ARC PGU Controller",
.date = "20160219",
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 04/22] drm/arm/hdlcd: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (2 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini() Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 05/22] drm/atmel-hlcdc: " Noralf Trønnes
` (19 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Brian Starkey <brian.starkey@arm.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
---
drivers/gpu/drm/arm/hdlcd_drv.c | 37 ++++++-------------------------------
drivers/gpu/drm/arm/hdlcd_drv.h | 1 -
2 files changed, 6 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index 59b21bdc0c30..9752240d3540 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -99,16 +99,9 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags)
return ret;
}
-static void hdlcd_fb_output_poll_changed(struct drm_device *drm)
-{
- struct hdlcd_drm_private *hdlcd = drm->dev_private;
-
- drm_fbdev_cma_hotplug_event(hdlcd->fbdev);
-}
-
static const struct drm_mode_config_funcs hdlcd_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = hdlcd_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -123,13 +116,6 @@ static void hdlcd_setup_mode_config(struct drm_device *drm)
drm->mode_config.funcs = &hdlcd_mode_config_funcs;
}
-static void hdlcd_lastclose(struct drm_device *drm)
-{
- struct hdlcd_drm_private *hdlcd = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(hdlcd->fbdev);
-}
-
static irqreturn_t hdlcd_irq(int irq, void *arg)
{
struct drm_device *drm = arg;
@@ -245,7 +231,7 @@ static struct drm_driver hdlcd_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = hdlcd_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.irq_handler = hdlcd_irq,
.irq_preinstall = hdlcd_irq_preinstall,
.irq_postinstall = hdlcd_irq_postinstall,
@@ -320,14 +306,9 @@ static int hdlcd_drm_bind(struct device *dev)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
- hdlcd->fbdev = drm_fbdev_cma_init(drm, 32,
- drm->mode_config.num_connector);
-
- if (IS_ERR(hdlcd->fbdev)) {
- ret = PTR_ERR(hdlcd->fbdev);
- hdlcd->fbdev = NULL;
+ ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+ if (ret)
goto err_fbdev;
- }
ret = drm_dev_register(drm, 0);
if (ret)
@@ -336,10 +317,7 @@ static int hdlcd_drm_bind(struct device *dev)
return 0;
err_register:
- if (hdlcd->fbdev) {
- drm_fbdev_cma_fini(hdlcd->fbdev);
- hdlcd->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
err_fbdev:
drm_kms_helper_poll_fini(drm);
err_vblank:
@@ -365,10 +343,7 @@ static void hdlcd_drm_unbind(struct device *dev)
struct hdlcd_drm_private *hdlcd = drm->dev_private;
drm_dev_unregister(drm);
- if (hdlcd->fbdev) {
- drm_fbdev_cma_fini(hdlcd->fbdev);
- hdlcd->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
component_unbind_all(dev, drm);
of_node_put(hdlcd->crtc.port);
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.h b/drivers/gpu/drm/arm/hdlcd_drv.h
index e3950a071152..a9f0b4350d95 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.h
+++ b/drivers/gpu/drm/arm/hdlcd_drv.h
@@ -8,7 +8,6 @@
struct hdlcd_drm_private {
void __iomem *mmio;
struct clk *clk;
- struct drm_fbdev_cma *fbdev;
struct drm_crtc crtc;
struct drm_plane *plane;
struct drm_atomic_state *state;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 05/22] drm/atmel-hlcdc: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (3 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 04/22] drm/arm/hdlcd: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 06/22] drm/hisilicon/kirin: " Noralf Trønnes
` (18 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
---
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 26 ++++----------------------
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 2 +-
2 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index c6e8061ffcfc..c1ea5c36b006 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -461,13 +461,6 @@ static struct drm_framebuffer *atmel_hlcdc_fb_create(struct drm_device *dev,
return drm_gem_fb_create(dev, file_priv, mode_cmd);
}
-static void atmel_hlcdc_fb_output_poll_changed(struct drm_device *dev)
-{
- struct atmel_hlcdc_dc *dc = dev->dev_private;
-
- drm_fbdev_cma_hotplug_event(dc->fbdev);
-}
-
struct atmel_hlcdc_dc_commit {
struct work_struct work;
struct drm_device *dev;
@@ -563,7 +556,7 @@ static int atmel_hlcdc_dc_atomic_commit(struct drm_device *dev,
static const struct drm_mode_config_funcs mode_config_funcs = {
.fb_create = atmel_hlcdc_fb_create,
- .output_poll_changed = atmel_hlcdc_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = atmel_hlcdc_dc_atomic_commit,
};
@@ -665,10 +658,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
platform_set_drvdata(pdev, dev);
- dc->fbdev = drm_fbdev_cma_init(dev, 24,
- dev->mode_config.num_connector);
- if (IS_ERR(dc->fbdev))
- dc->fbdev = NULL;
+ drm_fb_cma_fbdev_init(dev, 24, 0);
drm_kms_helper_poll_init(dev);
@@ -688,8 +678,7 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
{
struct atmel_hlcdc_dc *dc = dev->dev_private;
- if (dc->fbdev)
- drm_fbdev_cma_fini(dc->fbdev);
+ drm_fb_cma_fbdev_fini(dev);
flush_workqueue(dc->wq);
drm_kms_helper_poll_fini(dev);
drm_mode_config_cleanup(dev);
@@ -705,13 +694,6 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
destroy_workqueue(dc->wq);
}
-static void atmel_hlcdc_dc_lastclose(struct drm_device *dev)
-{
- struct atmel_hlcdc_dc *dc = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(dc->fbdev);
-}
-
static int atmel_hlcdc_dc_irq_postinstall(struct drm_device *dev)
{
struct atmel_hlcdc_dc *dc = dev->dev_private;
@@ -744,7 +726,7 @@ static struct drm_driver atmel_hlcdc_dc_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = atmel_hlcdc_dc_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.irq_handler = atmel_hlcdc_dc_irq_handler,
.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
.irq_postinstall = atmel_hlcdc_dc_irq_postinstall,
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
index 6833ee253cfa..ab32d5b268d2 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
@@ -32,6 +32,7 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
@@ -374,7 +375,6 @@ struct atmel_hlcdc_dc {
const struct atmel_hlcdc_dc_desc *desc;
struct dma_pool *dscrpool;
struct atmel_hlcdc *hlcdc;
- struct drm_fbdev_cma *fbdev;
struct drm_crtc *crtc;
struct atmel_hlcdc_layer *layers[ATMEL_HLCDC_MAX_LAYERS];
struct workqueue_struct *wq;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 06/22] drm/hisilicon/kirin: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (4 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 05/22] drm/atmel-hlcdc: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 07/22] drm/imx: " Noralf Trønnes
` (17 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Xinliang Liu <z.liuxinliang@hisilicon.com>
Cc: Rongrong Zou <zourongrong@gmail.com>
Cc: Xinwei Kong <kong.kongxinwei@hisilicon.com>
Cc: Chen Feng <puck.chen@hisilicon.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 35 ++++---------------------
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 4 ---
2 files changed, 5 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index ddb0403f1975..e3673efbf1c2 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -21,6 +21,7 @@
#include <drm/drmP.h>
#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_atomic_helper.h>
@@ -33,32 +34,17 @@ static struct kirin_dc_ops *dc_ops;
static int kirin_drm_kms_cleanup(struct drm_device *dev)
{
- struct kirin_drm_private *priv = dev->dev_private;
-
- if (priv->fbdev) {
- drm_fbdev_cma_fini(priv->fbdev);
- priv->fbdev = NULL;
- }
-
+ drm_fb_cma_fbdev_fini(dev);
drm_kms_helper_poll_fini(dev);
dc_ops->cleanup(to_platform_device(dev->dev));
drm_mode_config_cleanup(dev);
- devm_kfree(dev->dev, priv);
- dev->dev_private = NULL;
return 0;
}
-static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
-{
- struct kirin_drm_private *priv = dev->dev_private;
-
- drm_fbdev_cma_hotplug_event(priv->fbdev);
-}
-
static const struct drm_mode_config_funcs kirin_drm_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = kirin_fbdev_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -76,14 +62,8 @@ static void kirin_drm_mode_config_init(struct drm_device *dev)
static int kirin_drm_kms_init(struct drm_device *dev)
{
- struct kirin_drm_private *priv;
int ret;
- priv = devm_kzalloc(dev->dev, sizeof(*priv), GFP_KERNEL);
- if (!priv)
- return -ENOMEM;
-
- dev->dev_private = priv;
dev_set_drvdata(dev->dev, dev);
/* dev->mode_config initialization */
@@ -117,12 +97,9 @@ static int kirin_drm_kms_init(struct drm_device *dev)
/* init kms poll for handling hpd */
drm_kms_helper_poll_init(dev);
- priv->fbdev = drm_fbdev_cma_init(dev, 32,
- dev->mode_config.num_connector);
-
- if (IS_ERR(priv->fbdev)) {
+ ret = drm_fb_cma_fbdev_init(dev, 32, 0);
+ if (ret) {
DRM_ERROR("failed to initialize fbdev.\n");
- ret = PTR_ERR(priv->fbdev);
goto err_cleanup_poll;
}
return 0;
@@ -135,8 +112,6 @@ static int kirin_drm_kms_init(struct drm_device *dev)
dc_ops->cleanup(to_platform_device(dev->dev));
err_mode_config_cleanup:
drm_mode_config_cleanup(dev);
- devm_kfree(dev->dev, priv);
- dev->dev_private = NULL;
return ret;
}
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index 56cb62df065c..ad027d1cc826 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -19,10 +19,6 @@ struct kirin_dc_ops {
void (*cleanup)(struct platform_device *pdev);
};
-struct kirin_drm_private {
- struct drm_fbdev_cma *fbdev;
-};
-
extern const struct kirin_dc_ops ade_dc_ops;
#endif /* __KIRIN_DRM_DRV_H__ */
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 07/22] drm/imx: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (5 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 06/22] drm/hisilicon/kirin: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 08/22] drm/meson: " Noralf Trønnes
` (16 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
---
drivers/gpu/drm/imx/imx-drm-core.c | 33 ++++++---------------------------
drivers/gpu/drm/imx/imx-drm.h | 1 -
2 files changed, 6 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 93c7e3f9b4a8..197484f01849 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -38,7 +38,6 @@
struct imx_drm_device {
struct drm_device *drm;
unsigned int pipes;
- struct drm_fbdev_cma *fbhelper;
struct drm_atomic_state *state;
};
@@ -47,13 +46,6 @@ static int legacyfb_depth = 16;
module_param(legacyfb_depth, int, 0444);
#endif
-static void imx_drm_driver_lastclose(struct drm_device *drm)
-{
- struct imx_drm_device *imxdrm = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(imxdrm->fbhelper);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(imx_drm_driver_fops);
void imx_drm_connector_destroy(struct drm_connector *connector)
@@ -69,13 +61,6 @@ void imx_drm_encoder_destroy(struct drm_encoder *encoder)
}
EXPORT_SYMBOL_GPL(imx_drm_encoder_destroy);
-static void imx_drm_output_poll_changed(struct drm_device *drm)
-{
- struct imx_drm_device *imxdrm = drm->dev_private;
-
- drm_fbdev_cma_hotplug_event(imxdrm->fbhelper);
-}
-
static int imx_drm_atomic_check(struct drm_device *dev,
struct drm_atomic_state *state)
{
@@ -107,7 +92,7 @@ static int imx_drm_atomic_check(struct drm_device *dev,
static const struct drm_mode_config_funcs imx_drm_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = imx_drm_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = imx_drm_atomic_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -179,7 +164,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
static struct drm_driver imx_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = imx_drm_driver_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops,
.dumb_create = drm_gem_cma_dumb_create,
@@ -291,12 +276,9 @@ static int imx_drm_bind(struct device *dev)
dev_warn(dev, "Invalid legacyfb_depth. Defaulting to 16bpp\n");
legacyfb_depth = 16;
}
- imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, MAX_CRTC);
- if (IS_ERR(imxdrm->fbhelper)) {
- ret = PTR_ERR(imxdrm->fbhelper);
- imxdrm->fbhelper = NULL;
+ ret = drm_fb_cma_fbdev_init(drm, legacyfb_depth, MAX_CRTC);
+ if (ret)
goto err_unbind;
- }
#endif
drm_kms_helper_poll_init(drm);
@@ -310,8 +292,7 @@ static int imx_drm_bind(struct device *dev)
err_fbhelper:
drm_kms_helper_poll_fini(drm);
#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION)
- if (imxdrm->fbhelper)
- drm_fbdev_cma_fini(imxdrm->fbhelper);
+ drm_fb_cma_fbdev_fini(drm);
err_unbind:
#endif
component_unbind_all(drm->dev, drm);
@@ -326,14 +307,12 @@ static int imx_drm_bind(struct device *dev)
static void imx_drm_unbind(struct device *dev)
{
struct drm_device *drm = dev_get_drvdata(dev);
- struct imx_drm_device *imxdrm = drm->dev_private;
drm_dev_unregister(drm);
drm_kms_helper_poll_fini(drm);
- if (imxdrm->fbhelper)
- drm_fbdev_cma_fini(imxdrm->fbhelper);
+ drm_fb_cma_fbdev_fini(drm);
drm_mode_config_cleanup(drm);
diff --git a/drivers/gpu/drm/imx/imx-drm.h b/drivers/gpu/drm/imx/imx-drm.h
index f6dd64be9cd5..8afdc49ee695 100644
--- a/drivers/gpu/drm/imx/imx-drm.h
+++ b/drivers/gpu/drm/imx/imx-drm.h
@@ -7,7 +7,6 @@ struct drm_connector;
struct drm_device;
struct drm_display_mode;
struct drm_encoder;
-struct drm_fbdev_cma;
struct drm_framebuffer;
struct drm_plane;
struct imx_drm_crtc;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 08/22] drm/meson: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (6 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 07/22] drm/imx: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 09/22] drm/mxsfb: " Noralf Trønnes
` (15 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/meson/meson_drv.c | 20 +++++---------------
drivers/gpu/drm/meson/meson_drv.h | 1 -
2 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 3b804fdaf7a0..35e6ad5b565f 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -35,6 +35,7 @@
#include <drm/drm_plane_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_rect.h>
#include <drm/drm_fb_helper.h>
@@ -68,15 +69,8 @@
* - Powering Up HDMI controller and PHY
*/
-static void meson_fb_output_poll_changed(struct drm_device *dev)
-{
- struct meson_drm *priv = dev->dev_private;
-
- drm_fbdev_cma_hotplug_event(priv->fbdev);
-}
-
static const struct drm_mode_config_funcs meson_mode_config_funcs = {
- .output_poll_changed = meson_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
.fb_create = drm_gem_fb_create,
@@ -254,12 +248,9 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
drm_mode_config_reset(drm);
- priv->fbdev = drm_fbdev_cma_init(drm, 32,
- drm->mode_config.num_connector);
- if (IS_ERR(priv->fbdev)) {
- ret = PTR_ERR(priv->fbdev);
+ ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+ if (ret)
goto free_drm;
- }
drm_kms_helper_poll_init(drm);
@@ -285,11 +276,10 @@ static int meson_drv_bind(struct device *dev)
static void meson_drv_unbind(struct device *dev)
{
struct drm_device *drm = dev_get_drvdata(dev);
- struct meson_drm *priv = drm->dev_private;
drm_dev_unregister(drm);
drm_kms_helper_poll_fini(drm);
- drm_fbdev_cma_fini(priv->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
drm_mode_config_cleanup(drm);
drm_dev_unref(drm);
diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h
index 5e8b392b9d1f..746bbdbbdec3 100644
--- a/drivers/gpu/drm/meson/meson_drv.h
+++ b/drivers/gpu/drm/meson/meson_drv.h
@@ -33,7 +33,6 @@ struct meson_drm {
struct drm_device *drm;
struct drm_crtc *crtc;
- struct drm_fbdev_cma *fbdev;
struct drm_plane *primary_plane;
/* Components Data */
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 09/22] drm/mxsfb: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (7 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 08/22] drm/meson: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 10/22] drm/pl111: " Noralf Trønnes
` (14 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Marek Vasut <marex@denx.de>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/mxsfb/mxsfb_drv.c | 21 ++++-----------------
drivers/gpu/drm/mxsfb/mxsfb_drv.h | 1 -
2 files changed, 4 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 1207ffe36250..d846dbfc22e9 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -223,11 +223,8 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags)
drm_kms_helper_poll_init(drm);
- mxsfb->fbdev = drm_fbdev_cma_init(drm, 32,
- drm->mode_config.num_connector);
- if (IS_ERR(mxsfb->fbdev)) {
- ret = PTR_ERR(mxsfb->fbdev);
- mxsfb->fbdev = NULL;
+ ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+ if (ret) {
dev_err(drm->dev, "Failed to init FB CMA area\n");
goto err_cma;
}
@@ -250,10 +247,7 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags)
static void mxsfb_unload(struct drm_device *drm)
{
- struct mxsfb_drm_private *mxsfb = drm->dev_private;
-
- if (mxsfb->fbdev)
- drm_fbdev_cma_fini(mxsfb->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
drm_mode_config_cleanup(drm);
@@ -267,13 +261,6 @@ static void mxsfb_unload(struct drm_device *drm)
pm_runtime_disable(drm->dev);
}
-static void mxsfb_lastclose(struct drm_device *drm)
-{
- struct mxsfb_drm_private *mxsfb = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(mxsfb->fbdev);
-}
-
static int mxsfb_enable_vblank(struct drm_device *drm, unsigned int crtc)
{
struct mxsfb_drm_private *mxsfb = drm->dev_private;
@@ -329,7 +316,7 @@ static struct drm_driver mxsfb_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET |
DRIVER_PRIME | DRIVER_ATOMIC |
DRIVER_HAVE_IRQ,
- .lastclose = mxsfb_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.irq_handler = mxsfb_irq_handler,
.irq_preinstall = mxsfb_irq_preinstall,
.irq_uninstall = mxsfb_irq_preinstall,
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.h b/drivers/gpu/drm/mxsfb/mxsfb_drv.h
index 5d0883fc805b..bedd6801edca 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.h
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.h
@@ -37,7 +37,6 @@ struct mxsfb_drm_private {
struct drm_simple_display_pipe pipe;
struct drm_connector connector;
struct drm_panel *panel;
- struct drm_fbdev_cma *fbdev;
};
int mxsfb_setup_crtc(struct drm_device *dev);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 10/22] drm/pl111: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (8 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 09/22] drm/mxsfb: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 11/22] drm/rcar-du: " Noralf Trønnes
` (13 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/gpu/drm/pl111/pl111_drm.h | 1 -
drivers/gpu/drm/pl111/pl111_drv.c | 16 ++++------------
2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/pl111/pl111_drm.h b/drivers/gpu/drm/pl111/pl111_drm.h
index 440f53ebee8c..07fa2cdb364a 100644
--- a/drivers/gpu/drm/pl111/pl111_drm.h
+++ b/drivers/gpu/drm/pl111/pl111_drm.h
@@ -53,7 +53,6 @@ struct pl111_drm_dev_private {
struct drm_panel *panel;
struct drm_bridge *bridge;
struct drm_simple_display_pipe pipe;
- struct drm_fbdev_cma *fbdev;
void *regs;
u32 ienb;
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 201d57d5cb54..acb738c69873 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -64,6 +64,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_of.h>
#include <drm/drm_bridge.h>
@@ -137,8 +138,7 @@ static int pl111_modeset_init(struct drm_device *dev)
drm_mode_config_reset(dev);
- priv->fbdev = drm_fbdev_cma_init(dev, 32,
- dev->mode_config.num_connector);
+ drm_fb_cma_fbdev_init(dev, 32, 0);
drm_kms_helper_poll_init(dev);
@@ -155,17 +155,10 @@ static int pl111_modeset_init(struct drm_device *dev)
DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
-static void pl111_lastclose(struct drm_device *dev)
-{
- struct pl111_drm_dev_private *priv = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(priv->fbdev);
-}
-
static struct drm_driver pl111_drm_driver = {
.driver_features =
DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
- .lastclose = pl111_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.ioctls = NULL,
.fops = &drm_fops,
.name = "pl111",
@@ -281,8 +274,7 @@ static int pl111_amba_remove(struct amba_device *amba_dev)
struct pl111_drm_dev_private *priv = drm->dev_private;
drm_dev_unregister(drm);
- if (priv->fbdev)
- drm_fbdev_cma_fini(priv->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
if (priv->panel)
drm_panel_bridge_remove(priv->bridge);
drm_mode_config_cleanup(drm);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 11/22] drm/rcar-du: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (9 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 10/22] drm/pl111: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 12/22] drm/sti: " Noralf Trønnes
` (12 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 13 +++----------
drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 --
drivers/gpu/drm/rcar-du/rcar_du_kms.c | 20 +++++---------------
3 files changed, 8 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index d2f29e6b1112..aa342a1b0d12 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -23,6 +23,7 @@
#include <drm/drmP.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
@@ -224,19 +225,12 @@ MODULE_DEVICE_TABLE(of, rcar_du_of_table);
* DRM operations
*/
-static void rcar_du_lastclose(struct drm_device *dev)
-{
- struct rcar_du_device *rcdu = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(rcdu->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
static struct drm_driver rcar_du_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME
| DRIVER_ATOMIC,
- .lastclose = rcar_du_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
@@ -298,8 +292,7 @@ static int rcar_du_remove(struct platform_device *pdev)
drm_dev_unregister(ddev);
- if (rcdu->fbdev)
- drm_fbdev_cma_fini(rcdu->fbdev);
+ drm_fb_cma_fbdev_fini(ddev);
drm_kms_helper_poll_fini(ddev);
drm_mode_config_cleanup(ddev);
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
index f8cd79488ece..bb3516ad26b3 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
@@ -24,7 +24,6 @@
struct clk;
struct device;
struct drm_device;
-struct drm_fbdev_cma;
struct rcar_du_device;
struct rcar_du_lvdsenc;
@@ -80,7 +79,6 @@ struct rcar_du_device {
void __iomem *mmio;
struct drm_device *ddev;
- struct drm_fbdev_cma *fbdev;
struct rcar_du_crtc crtcs[RCAR_DU_MAX_CRTCS];
unsigned int num_crtcs;
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index 566d1a948c8f..344c4613fbc1 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -16,6 +16,7 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
@@ -217,13 +218,6 @@ rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,
return drm_gem_fb_create(dev, file_priv, mode_cmd);
}
-static void rcar_du_output_poll_changed(struct drm_device *dev)
-{
- struct rcar_du_device *rcdu = dev->dev_private;
-
- drm_fbdev_cma_hotplug_event(rcdu->fbdev);
-}
-
/* -----------------------------------------------------------------------------
* Atomic Check and Update
*/
@@ -278,7 +272,7 @@ static const struct drm_mode_config_helper_funcs rcar_du_mode_config_helper = {
static const struct drm_mode_config_funcs rcar_du_mode_config_funcs = {
.fb_create = rcar_du_fb_create,
- .output_poll_changed = rcar_du_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = rcar_du_atomic_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -519,7 +513,6 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
struct drm_device *dev = rcdu->ddev;
struct drm_encoder *encoder;
- struct drm_fbdev_cma *fbdev;
unsigned int num_encoders;
unsigned int num_groups;
unsigned int i;
@@ -629,12 +622,9 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
drm_kms_helper_poll_init(dev);
if (dev->mode_config.num_connector) {
- fbdev = drm_fbdev_cma_init(dev, 32,
- dev->mode_config.num_connector);
- if (IS_ERR(fbdev))
- return PTR_ERR(fbdev);
-
- rcdu->fbdev = fbdev;
+ ret = drm_fb_cma_fbdev_init(dev, 32, 0);
+ if (ret)
+ return ret;
} else {
dev_info(rcdu->dev,
"no connector found, disabling fbdev emulation\n");
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 12/22] drm/sti: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (10 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 11/22] drm/rcar-du: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 15:01 ` Benjamin Gaignard
2017-11-15 14:19 ` [PATCH v2 13/22] drm/stm: " Noralf Trønnes
` (11 subsequent siblings)
23 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Cc: Vincent Abriou <vincent.abriou@st.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/sti/sti_drv.c | 27 +++++----------------------
drivers/gpu/drm/sti/sti_drv.h | 1 -
2 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 9e9343101738..a4553a31c59e 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -17,6 +17,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_of.h>
@@ -138,16 +139,9 @@ static int sti_atomic_check(struct drm_device *dev,
return ret;
}
-static void sti_output_poll_changed(struct drm_device *ddev)
-{
- struct sti_private *private = ddev->dev_private;
-
- drm_fbdev_cma_hotplug_event(private->fbdev);
-}
-
static const struct drm_mode_config_funcs sti_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = sti_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = sti_atomic_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -230,11 +224,7 @@ static void sti_cleanup(struct drm_device *ddev)
{
struct sti_private *private = ddev->dev_private;
- if (private->fbdev) {
- drm_fbdev_cma_fini(private->fbdev);
- private->fbdev = NULL;
- }
-
+ drm_fb_cma_fbdev_fini(ddev);
drm_kms_helper_poll_fini(ddev);
component_unbind_all(ddev->dev, ddev);
kfree(private);
@@ -244,8 +234,6 @@ static void sti_cleanup(struct drm_device *ddev)
static int sti_bind(struct device *dev)
{
struct drm_device *ddev;
- struct sti_private *private;
- struct drm_fbdev_cma *fbdev;
int ret;
ddev = drm_dev_alloc(&sti_driver, dev);
@@ -266,15 +254,10 @@ static int sti_bind(struct device *dev)
drm_mode_config_reset(ddev);
- private = ddev->dev_private;
if (ddev->mode_config.num_connector) {
- fbdev = drm_fbdev_cma_init(ddev, 32,
- ddev->mode_config.num_connector);
- if (IS_ERR(fbdev)) {
+ ret = drm_fb_cma_fbdev_init(ddev, 32, 0);
+ if (ret)
DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
- fbdev = NULL;
- }
- private->fbdev = fbdev;
}
return 0;
diff --git a/drivers/gpu/drm/sti/sti_drv.h b/drivers/gpu/drm/sti/sti_drv.h
index 6502ed2d3351..16c5c9110cb0 100644
--- a/drivers/gpu/drm/sti/sti_drv.h
+++ b/drivers/gpu/drm/sti/sti_drv.h
@@ -24,7 +24,6 @@ struct sti_private {
struct sti_compositor *compo;
struct drm_property *plane_zorder_property;
struct drm_device *drm_dev;
- struct drm_fbdev_cma *fbdev;
};
extern struct platform_driver sti_tvout_driver;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 13/22] drm/stm: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (11 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 12/22] drm/sti: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 14/22] drm/sun4i: " Noralf Trønnes
` (10 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Remove duplicate ldev assignment.
Cc: Yannick Fertre <yannick.fertre@st.com>
Cc: Philippe Cornu <philippe.cornu@st.com>
Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Cc: Vincent Abriou <vincent.abriou@st.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Philippe Cornu <philippe.cornu@st.com>
---
drivers/gpu/drm/stm/drv.c | 38 ++++++--------------------------------
drivers/gpu/drm/stm/ltdc.h | 1 -
2 files changed, 6 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index c857663eafc2..555b05010e9b 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -15,6 +15,7 @@
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
@@ -24,35 +25,19 @@
#define STM_MAX_FB_WIDTH 2048
#define STM_MAX_FB_HEIGHT 2048 /* same as width to handle orientation */
-static void drv_output_poll_changed(struct drm_device *ddev)
-{
- struct ltdc_device *ldev = ddev->dev_private;
-
- drm_fbdev_cma_hotplug_event(ldev->fbdev);
-}
-
static const struct drm_mode_config_funcs drv_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = drv_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
-static void drv_lastclose(struct drm_device *ddev)
-{
- struct ltdc_device *ldev = ddev->dev_private;
-
- DRM_DEBUG("%s\n", __func__);
-
- drm_fbdev_cma_restore_mode(ldev->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
static struct drm_driver drv_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = drv_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.name = "stm",
.desc = "STMicroelectronics SoC DRM",
.date = "20170330",
@@ -79,7 +64,6 @@ static struct drm_driver drv_driver = {
static int drv_load(struct drm_device *ddev)
{
struct platform_device *pdev = to_platform_device(ddev->dev);
- struct drm_fbdev_cma *fbdev;
struct ltdc_device *ldev;
int ret;
@@ -112,14 +96,9 @@ static int drv_load(struct drm_device *ddev)
drm_kms_helper_poll_init(ddev);
if (ddev->mode_config.num_connector) {
- ldev = ddev->dev_private;
- fbdev = drm_fbdev_cma_init(ddev, 16,
- ddev->mode_config.num_connector);
- if (IS_ERR(fbdev)) {
+ ret = drm_fb_cma_fbdev_init(ddev, 16, 0);
+ if (ret)
DRM_DEBUG("Warning: fails to create fbdev\n");
- fbdev = NULL;
- }
- ldev->fbdev = fbdev;
}
platform_set_drvdata(pdev, ddev);
@@ -132,14 +111,9 @@ static int drv_load(struct drm_device *ddev)
static void drv_unload(struct drm_device *ddev)
{
- struct ltdc_device *ldev = ddev->dev_private;
-
DRM_DEBUG("%s\n", __func__);
- if (ldev->fbdev) {
- drm_fbdev_cma_fini(ldev->fbdev);
- ldev->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(ddev);
drm_kms_helper_poll_fini(ddev);
ltdc_unload(ddev);
drm_mode_config_cleanup(ddev);
diff --git a/drivers/gpu/drm/stm/ltdc.h b/drivers/gpu/drm/stm/ltdc.h
index ae437557d715..27ac217406be 100644
--- a/drivers/gpu/drm/stm/ltdc.h
+++ b/drivers/gpu/drm/stm/ltdc.h
@@ -21,7 +21,6 @@ struct ltdc_caps {
};
struct ltdc_device {
- struct drm_fbdev_cma *fbdev;
void __iomem *regs;
struct clk *pixel_clk; /* lcd pixel clock */
struct mutex err_lock; /* protecting error_status */
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 14/22] drm/sun4i: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (12 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 13/22] drm/stm: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 15/22] drm/tilcdc: " Noralf Trønnes
` (9 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
drivers/gpu/drm/sun4i/sun4i_drv.c | 14 +++-----------
drivers/gpu/drm/sun4i/sun4i_drv.h | 2 --
drivers/gpu/drm/sun4i/sun4i_framebuffer.c | 18 +++++-------------
drivers/gpu/drm/sun4i/sun4i_framebuffer.h | 2 +-
4 files changed, 9 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 75c76cdd82bc..2743c8a839a0 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -26,20 +26,13 @@
#include "sun4i_framebuffer.h"
#include "sun4i_tcon.h"
-static void sun4i_drv_lastclose(struct drm_device *dev)
-{
- struct sun4i_drv *drv = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(drv->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
static struct drm_driver sun4i_drv_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_ATOMIC,
/* Generic Operations */
- .lastclose = sun4i_drv_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.fops = &sun4i_drv_fops,
.name = "sun4i-drm",
.desc = "Allwinner sun4i Display Engine",
@@ -126,10 +119,9 @@ static int sun4i_drv_bind(struct device *dev)
sun4i_remove_framebuffers();
/* Create our framebuffer */
- drv->fbdev = sun4i_framebuffer_init(drm);
- if (IS_ERR(drv->fbdev)) {
+ ret = sun4i_framebuffer_init(drm);
+ if (ret) {
dev_err(drm->dev, "Couldn't create our framebuffer\n");
- ret = PTR_ERR(drv->fbdev);
goto cleanup_mode_config;
}
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.h b/drivers/gpu/drm/sun4i/sun4i_drv.h
index a960c89270cc..2825f140da54 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.h
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.h
@@ -20,8 +20,6 @@
struct sun4i_drv {
struct list_head engine_list;
struct list_head tcon_list;
-
- struct drm_fbdev_cma *fbdev;
};
#endif /* _SUN4I_DRV_H_ */
diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
index 2992f0a6b349..38a36c0dfa2f 100644
--- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
+++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
@@ -11,6 +11,7 @@
*/
#include <drm/drm_atomic_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drmP.h>
@@ -18,21 +19,14 @@
#include "sun4i_drv.h"
#include "sun4i_framebuffer.h"
-static void sun4i_de_output_poll_changed(struct drm_device *drm)
-{
- struct sun4i_drv *drv = drm->dev_private;
-
- drm_fbdev_cma_hotplug_event(drv->fbdev);
-}
-
static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = {
- .output_poll_changed = sun4i_de_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
.fb_create = drm_gem_fb_create,
};
-struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
+int sun4i_framebuffer_init(struct drm_device *drm)
{
drm_mode_config_reset(drm);
@@ -41,12 +35,10 @@ struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
drm->mode_config.funcs = &sun4i_de_mode_config_funcs;
- return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector);
+ return drm_fb_cma_fbdev_init(drm, 32, 0);
}
void sun4i_framebuffer_free(struct drm_device *drm)
{
- struct sun4i_drv *drv = drm->dev_private;
-
- drm_fbdev_cma_fini(drv->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
}
diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.h b/drivers/gpu/drm/sun4i/sun4i_framebuffer.h
index 3afd65252ee0..7ef0aed8384c 100644
--- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.h
+++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.h
@@ -13,7 +13,7 @@
#ifndef _SUN4I_FRAMEBUFFER_H_
#define _SUN4I_FRAMEBUFFER_H_
-struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm);
+int sun4i_framebuffer_init(struct drm_device *drm);
void sun4i_framebuffer_free(struct drm_device *drm);
#endif /* _SUN4I_FRAMEBUFFER_H_ */
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 15/22] drm/tilcdc: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (13 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 14/22] drm/sun4i: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 16/22] drm/tve200: " Noralf Trønnes
` (8 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Jyri Sarha <jsarha@ti.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Jyri Sarha <jsarha@ti.com>
---
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 26 +++++---------------------
drivers/gpu/drm/tilcdc/tilcdc_drv.h | 2 --
2 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index bc4feb3a84b9..1afde61f1247 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -69,12 +69,6 @@ static struct drm_framebuffer *tilcdc_fb_create(struct drm_device *dev,
return drm_gem_fb_create(dev, file_priv, mode_cmd);
}
-static void tilcdc_fb_output_poll_changed(struct drm_device *dev)
-{
- struct tilcdc_drm_private *priv = dev->dev_private;
- drm_fbdev_cma_hotplug_event(priv->fbdev);
-}
-
static int tilcdc_atomic_check(struct drm_device *dev,
struct drm_atomic_state *state)
{
@@ -146,7 +140,7 @@ static int tilcdc_commit(struct drm_device *dev,
static const struct drm_mode_config_funcs mode_config_funcs = {
.fb_create = tilcdc_fb_create,
- .output_poll_changed = tilcdc_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = tilcdc_atomic_check,
.atomic_commit = tilcdc_commit,
};
@@ -198,8 +192,7 @@ static void tilcdc_fini(struct drm_device *dev)
drm_kms_helper_poll_fini(dev);
- if (priv->fbdev)
- drm_fbdev_cma_fini(priv->fbdev);
+ drm_fb_cma_fbdev_fini(dev);
drm_irq_uninstall(dev);
drm_mode_config_cleanup(dev);
@@ -405,12 +398,9 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
drm_mode_config_reset(ddev);
- priv->fbdev = drm_fbdev_cma_init(ddev, bpp,
- ddev->mode_config.num_connector);
- if (IS_ERR(priv->fbdev)) {
- ret = PTR_ERR(priv->fbdev);
+ ret = drm_fb_cma_fbdev_init(ddev, bpp, 0);
+ if (ret)
goto init_failed;
- }
drm_kms_helper_poll_init(ddev);
@@ -427,12 +417,6 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
return ret;
}
-static void tilcdc_lastclose(struct drm_device *dev)
-{
- struct tilcdc_drm_private *priv = dev->dev_private;
- drm_fbdev_cma_restore_mode(priv->fbdev);
-}
-
static irqreturn_t tilcdc_irq(int irq, void *arg)
{
struct drm_device *dev = arg;
@@ -537,7 +521,7 @@ DEFINE_DRM_GEM_CMA_FOPS(fops);
static struct drm_driver tilcdc_driver = {
.driver_features = (DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET |
DRIVER_PRIME | DRIVER_ATOMIC),
- .lastclose = tilcdc_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.irq_handler = tilcdc_irq,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_print_info = drm_gem_cma_print_info,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
index 8caa11bc7aec..ead512216669 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
@@ -79,8 +79,6 @@ struct tilcdc_drm_private {
struct workqueue_struct *wq;
- struct drm_fbdev_cma *fbdev;
-
struct drm_crtc *crtc;
unsigned int num_encoders;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 16/22] drm/tve200: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (14 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 15/22] drm/tilcdc: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 17/22] drm/vc4: " Noralf Trønnes
` (7 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/gpu/drm/tve200/tve200_drm.h | 1 -
drivers/gpu/drm/tve200/tve200_drv.c | 16 ++++------------
2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/tve200/tve200_drm.h b/drivers/gpu/drm/tve200/tve200_drm.h
index 628b79324c48..5c270055bd58 100644
--- a/drivers/gpu/drm/tve200/tve200_drm.h
+++ b/drivers/gpu/drm/tve200/tve200_drm.h
@@ -103,7 +103,6 @@ struct tve200_drm_dev_private {
struct drm_panel *panel;
struct drm_bridge *bridge;
struct drm_simple_display_pipe pipe;
- struct drm_fbdev_cma *fbdev;
void *regs;
struct clk *pclk;
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index bd6c9454d767..44911d921864 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -46,6 +46,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_panel.h>
#include <drm/drm_of.h>
@@ -130,8 +131,7 @@ static int tve200_modeset_init(struct drm_device *dev)
* Passing in 16 here will make the RGB656 mode the default
* Passing in 32 will use XRGB8888 mode
*/
- priv->fbdev = drm_fbdev_cma_init(dev, 16,
- dev->mode_config.num_connector);
+ drm_fb_cma_fbdev_init(dev, 16, 0);
drm_kms_helper_poll_init(dev);
goto finish;
@@ -146,17 +146,10 @@ static int tve200_modeset_init(struct drm_device *dev)
DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
-static void tve200_lastclose(struct drm_device *dev)
-{
- struct tve200_drm_dev_private *priv = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(priv->fbdev);
-}
-
static struct drm_driver tve200_drm_driver = {
.driver_features =
DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
- .lastclose = tve200_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.ioctls = NULL,
.fops = &drm_fops,
.name = "tve200",
@@ -270,8 +263,7 @@ static int tve200_remove(struct platform_device *pdev)
struct tve200_drm_dev_private *priv = drm->dev_private;
drm_dev_unregister(drm);
- if (priv->fbdev)
- drm_fbdev_cma_fini(priv->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
if (priv->panel)
drm_panel_bridge_remove(priv->bridge);
drm_mode_config_cleanup(drm);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 17/22] drm/vc4: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (15 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 16/22] drm/tve200: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 18/22] drm/zte: " Noralf Trønnes
` (6 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
---
drivers/gpu/drm/vc4/vc4_drv.c | 13 ++-----------
drivers/gpu/drm/vc4/vc4_drv.h | 2 --
drivers/gpu/drm/vc4/vc4_kms.c | 18 ++++--------------
3 files changed, 6 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
index e3c29729da2e..ceb385fd69c5 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -111,13 +111,6 @@ static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
return 0;
}
-static void vc4_lastclose(struct drm_device *dev)
-{
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-
- drm_fbdev_cma_restore_mode(vc4->fbdev);
-}
-
static const struct vm_operations_struct vc4_vm_ops = {
.fault = vc4_fault,
.open = drm_gem_vm_open,
@@ -159,7 +152,7 @@ static struct drm_driver vc4_drm_driver = {
DRIVER_HAVE_IRQ |
DRIVER_RENDER |
DRIVER_PRIME),
- .lastclose = vc4_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.irq_handler = vc4_irq,
.irq_preinstall = vc4_irq_preinstall,
.irq_postinstall = vc4_irq_postinstall,
@@ -301,12 +294,10 @@ static void vc4_drm_unbind(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct drm_device *drm = platform_get_drvdata(pdev);
- struct vc4_dev *vc4 = to_vc4_dev(drm);
drm_dev_unregister(drm);
- if (vc4->fbdev)
- drm_fbdev_cma_fini(vc4->fbdev);
+ drm_fb_cma_fbdev_fini(drm);
drm_mode_config_cleanup(drm);
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
index 9c0d380c96f2..3af22936d9b3 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -39,8 +39,6 @@ struct vc4_dev {
struct vc4_dsi *dsi1;
struct vc4_vec *vec;
- struct drm_fbdev_cma *fbdev;
-
struct vc4_hang_state *hang_state;
/* The kernel-space BO cache. Tracks buffers that have been
diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index 50c4959b5bd3..4256f294c346 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -19,17 +19,11 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_plane_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include "vc4_drv.h"
-static void vc4_output_poll_changed(struct drm_device *dev)
-{
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-
- drm_fbdev_cma_hotplug_event(vc4->fbdev);
-}
-
static void
vc4_atomic_complete_commit(struct drm_atomic_state *state)
{
@@ -194,7 +188,7 @@ static struct drm_framebuffer *vc4_fb_create(struct drm_device *dev,
}
static const struct drm_mode_config_funcs vc4_mode_funcs = {
- .output_poll_changed = vc4_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = vc4_atomic_commit,
.fb_create = vc4_fb_create,
@@ -224,12 +218,8 @@ int vc4_kms_load(struct drm_device *dev)
drm_mode_config_reset(dev);
- if (dev->mode_config.num_connector) {
- vc4->fbdev = drm_fbdev_cma_init(dev, 32,
- dev->mode_config.num_connector);
- if (IS_ERR(vc4->fbdev))
- vc4->fbdev = NULL;
- }
+ if (dev->mode_config.num_connector)
+ drm_fb_cma_fbdev_init(dev, 32, 0);
drm_kms_helper_poll_init(dev);
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 18/22] drm/zte: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (16 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 17/22] drm/vc4: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-17 13:46 ` Shawn Guo
2017-11-15 14:19 ` [PATCH v2 19/22] drm/arm/mali: " Noralf Trønnes
` (5 subsequent siblings)
23 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/zte/zx_drm_drv.c | 48 +++++-----------------------------------
1 file changed, 6 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index e8b8266c0cde..6f4205e80378 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -29,37 +29,19 @@
#include "zx_drm_drv.h"
#include "zx_vou.h"
-struct zx_drm_private {
- struct drm_fbdev_cma *fbdev;
-};
-
-static void zx_drm_fb_output_poll_changed(struct drm_device *drm)
-{
- struct zx_drm_private *priv = drm->dev_private;
-
- drm_fbdev_cma_hotplug_event(priv->fbdev);
-}
-
static const struct drm_mode_config_funcs zx_drm_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = zx_drm_fb_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
-static void zx_drm_lastclose(struct drm_device *drm)
-{
- struct zx_drm_private *priv = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(priv->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
static struct drm_driver zx_drm_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
- .lastclose = zx_drm_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops,
.dumb_create = drm_gem_cma_dumb_create,
@@ -83,18 +65,12 @@ static struct drm_driver zx_drm_driver = {
static int zx_drm_bind(struct device *dev)
{
struct drm_device *drm;
- struct zx_drm_private *priv;
int ret;
- priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
- if (!priv)
- return -ENOMEM;
-
drm = drm_dev_alloc(&zx_drm_driver, dev);
if (IS_ERR(drm))
return PTR_ERR(drm);
- drm->dev_private = priv;
dev_set_drvdata(dev, drm);
drm_mode_config_init(drm);
@@ -125,12 +101,9 @@ static int zx_drm_bind(struct device *dev)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
- priv->fbdev = drm_fbdev_cma_init(drm, 32,
- drm->mode_config.num_connector);
- if (IS_ERR(priv->fbdev)) {
- ret = PTR_ERR(priv->fbdev);
+ ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+ if (ret) {
DRM_DEV_ERROR(dev, "failed to init cma fbdev: %d\n", ret);
- priv->fbdev = NULL;
goto out_poll_fini;
}
@@ -141,10 +114,7 @@ static int zx_drm_bind(struct device *dev)
return 0;
out_fbdev_fini:
- if (priv->fbdev) {
- drm_fbdev_cma_fini(priv->fbdev);
- priv->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
out_poll_fini:
drm_kms_helper_poll_fini(drm);
drm_mode_config_cleanup(drm);
@@ -152,7 +122,6 @@ static int zx_drm_bind(struct device *dev)
component_unbind_all(dev, drm);
out_unregister:
dev_set_drvdata(dev, NULL);
- drm->dev_private = NULL;
drm_dev_unref(drm);
return ret;
}
@@ -160,18 +129,13 @@ static int zx_drm_bind(struct device *dev)
static void zx_drm_unbind(struct device *dev)
{
struct drm_device *drm = dev_get_drvdata(dev);
- struct zx_drm_private *priv = drm->dev_private;
drm_dev_unregister(drm);
- if (priv->fbdev) {
- drm_fbdev_cma_fini(priv->fbdev);
- priv->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
drm_mode_config_cleanup(drm);
component_unbind_all(dev, drm);
dev_set_drvdata(dev, NULL);
- drm->dev_private = NULL;
drm_dev_unref(drm);
}
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 19/22] drm/arm/mali: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (17 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 18/22] drm/zte: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 20/22] drm/fsl-dcu: " Noralf Trønnes
` (4 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Brian Starkey <brian.starkey@arm.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
---
drivers/gpu/drm/arm/malidp_drv.c | 39 +++++++--------------------------------
drivers/gpu/drm/arm/malidp_drv.h | 1 -
2 files changed, 7 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 75f0bce33941..65ecc49c5862 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -13,7 +13,6 @@
#include <linux/module.h>
#include <linux/clk.h>
#include <linux/component.h>
-#include <linux/console.h>
#include <linux/of_device.h>
#include <linux/of_graph.h>
#include <linux/of_reserved_mem.h>
@@ -24,6 +23,7 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
@@ -183,13 +183,6 @@ static int malidp_set_and_wait_config_valid(struct drm_device *drm)
return (ret > 0) ? 0 : -ETIMEDOUT;
}
-static void malidp_output_poll_changed(struct drm_device *drm)
-{
- struct malidp_drm *malidp = drm->dev_private;
-
- drm_fbdev_cma_hotplug_event(malidp->fbdev);
-}
-
static void malidp_atomic_commit_hw_done(struct drm_atomic_state *state)
{
struct drm_pending_vblank_event *event;
@@ -252,7 +245,7 @@ static const struct drm_mode_config_helper_funcs malidp_mode_config_helpers = {
static const struct drm_mode_config_funcs malidp_mode_config_funcs = {
.fb_create = drm_gem_fb_create,
- .output_poll_changed = malidp_output_poll_changed,
+ .output_poll_changed = drm_fb_helper_output_poll_changed,
.atomic_check = drm_atomic_helper_check,
.atomic_commit = drm_atomic_helper_commit,
};
@@ -317,19 +310,12 @@ static int malidp_irq_init(struct platform_device *pdev)
return 0;
}
-static void malidp_lastclose(struct drm_device *drm)
-{
- struct malidp_drm *malidp = drm->dev_private;
-
- drm_fbdev_cma_restore_mode(malidp->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(fops);
static struct drm_driver malidp_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
DRIVER_PRIME,
- .lastclose = malidp_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.gem_free_object_unlocked = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops,
.dumb_create = drm_gem_cma_dumb_create,
@@ -627,14 +613,9 @@ static int malidp_bind(struct device *dev)
drm_mode_config_reset(drm);
- malidp->fbdev = drm_fbdev_cma_init(drm, 32,
- drm->mode_config.num_connector);
-
- if (IS_ERR(malidp->fbdev)) {
- ret = PTR_ERR(malidp->fbdev);
- malidp->fbdev = NULL;
+ ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+ if (ret)
goto fbdev_fail;
- }
drm_kms_helper_poll_init(drm);
@@ -645,10 +626,7 @@ static int malidp_bind(struct device *dev)
return 0;
register_fail:
- if (malidp->fbdev) {
- drm_fbdev_cma_fini(malidp->fbdev);
- malidp->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
fbdev_fail:
pm_runtime_get_sync(dev);
@@ -685,10 +663,7 @@ static void malidp_unbind(struct device *dev)
struct malidp_drm *malidp = drm->dev_private;
drm_dev_unregister(drm);
- if (malidp->fbdev) {
- drm_fbdev_cma_fini(malidp->fbdev);
- malidp->fbdev = NULL;
- }
+ drm_fb_cma_fbdev_fini(drm);
drm_kms_helper_poll_fini(drm);
pm_runtime_get_sync(dev);
malidp_se_irq_fini(drm);
diff --git a/drivers/gpu/drm/arm/malidp_drv.h b/drivers/gpu/drm/arm/malidp_drv.h
index 70ed6aeccf05..e0d12c9fc6b8 100644
--- a/drivers/gpu/drm/arm/malidp_drv.h
+++ b/drivers/gpu/drm/arm/malidp_drv.h
@@ -20,7 +20,6 @@
struct malidp_drm {
struct malidp_hw_device *dev;
- struct drm_fbdev_cma *fbdev;
struct drm_crtc crtc;
wait_queue_head_t wq;
atomic_t config_valid;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 20/22] drm/fsl-dcu: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (18 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 19/22] drm/arm/mali: " Noralf Trønnes
@ 2017-11-15 14:19 ` Noralf Trønnes
2017-11-15 14:20 ` [PATCH v2 21/22] drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini() Noralf Trønnes
` (3 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:19 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Cc: Stefan Agner <stefan@agner.ch>
Cc: Alison Wang <alison.wang@freescale.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 ++++++--------------------
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 1 -
2 files changed, 6 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 80232321a244..e487a2002783 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -11,7 +11,6 @@
#include <linux/clk.h>
#include <linux/clk-provider.h>
-#include <linux/console.h>
#include <linux/io.h>
#include <linux/mfd/syscon.h>
#include <linux/mm.h>
@@ -25,6 +24,7 @@
#include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_modeset_helper.h>
@@ -89,19 +89,15 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
"Invalid legacyfb_depth. Defaulting to 24bpp\n");
legacyfb_depth = 24;
}
- fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1);
- if (IS_ERR(fsl_dev->fbdev)) {
- ret = PTR_ERR(fsl_dev->fbdev);
- fsl_dev->fbdev = NULL;
+ ret = drm_fb_cma_fbdev_init(dev, legacyfb_depth, 1);
+ if (ret)
goto done;
- }
return 0;
done:
drm_kms_helper_poll_fini(dev);
- if (fsl_dev->fbdev)
- drm_fbdev_cma_fini(fsl_dev->fbdev);
+ drm_fb_cma_fbdev_fini(dev);
drm_mode_config_cleanup(dev);
drm_irq_uninstall(dev);
@@ -112,13 +108,10 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
static void fsl_dcu_unload(struct drm_device *dev)
{
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-
drm_atomic_helper_shutdown(dev);
drm_kms_helper_poll_fini(dev);
- if (fsl_dev->fbdev)
- drm_fbdev_cma_fini(fsl_dev->fbdev);
+ drm_fb_cma_fbdev_fini(dev);
drm_mode_config_cleanup(dev);
drm_irq_uninstall(dev);
@@ -147,19 +140,12 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
return IRQ_HANDLED;
}
-static void fsl_dcu_drm_lastclose(struct drm_device *dev)
-{
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-
- drm_fbdev_cma_restore_mode(fsl_dev->fbdev);
-}
-
DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
static struct drm_driver fsl_dcu_drm_driver = {
.driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET
| DRIVER_PRIME | DRIVER_ATOMIC,
- .lastclose = fsl_dcu_drm_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.load = fsl_dcu_load,
.unload = fsl_dcu_unload,
.irq_handler = fsl_dcu_drm_irq,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
index 93bfb98012d4..cb87bb74cb87 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
@@ -191,7 +191,6 @@ struct fsl_dcu_drm_device {
/*protects hardware register*/
spinlock_t irq_lock;
struct drm_device *drm;
- struct drm_fbdev_cma *fbdev;
struct drm_crtc crtc;
struct drm_encoder encoder;
struct fsl_dcu_drm_connector connector;
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 21/22] drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini()
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (19 preceding siblings ...)
2017-11-15 14:19 ` [PATCH v2 20/22] drm/fsl-dcu: " Noralf Trønnes
@ 2017-11-15 14:20 ` Noralf Trønnes
2017-11-15 14:20 ` [PATCH v2 22/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (2 subsequent siblings)
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:20 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Use drm_fb_cma_fbdev_init_with_funcs() and drm_fb_cma_fbdev_fini() which
relies on the fact that drm_device holds a pointer to the drm_fb_helper
structure. This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.
Remove todo entry.
Cc: David Lechner <david@lechnology.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: David Lechner <david@lechnology.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
Documentation/gpu/todo.rst | 5 ----
drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 37 ++++-------------------------
drivers/gpu/drm/tinydrm/mi0283qt.c | 3 ++-
drivers/gpu/drm/tinydrm/st7586.c | 3 ++-
include/drm/tinydrm/tinydrm.h | 3 ---
5 files changed, 9 insertions(+), 42 deletions(-)
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index 6bce1beafabe..6dbcd4a90015 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -395,11 +395,6 @@ those drivers as simple as possible, so lots of room for refactoring:
one of the ideas for having a shared dsi/dbi helper, abstracting away the
transport details more.
-- tinydrm_lastclose could be drm_fb_helper_lastclose. Only thing we need
- for that is to store the drm_fb_helper pointer somewhere in
- drm_device->mode_config. And then we could roll that out to all the
- drivers.
-
- tinydrm_gem_cma_prime_import_sg_table should probably go into the cma
helpers, as a _vmapped variant (since not every driver needs the vmap).
And tinydrm_gem_cma_free_object could the be merged into
diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
index bd7b82824a34..4c6616278c48 100644
--- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
+++ b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
@@ -10,6 +10,7 @@
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/tinydrm/tinydrm.h>
#include <linux/device.h>
@@ -35,23 +36,6 @@
* and registers the DRM device using devm_tinydrm_register().
*/
-/**
- * tinydrm_lastclose - DRM lastclose helper
- * @drm: DRM device
- *
- * This function ensures that fbdev is restored when drm_lastclose() is called
- * on the last drm_release(). Drivers can use this as their
- * &drm_driver->lastclose callback.
- */
-void tinydrm_lastclose(struct drm_device *drm)
-{
- struct tinydrm_device *tdev = drm->dev_private;
-
- DRM_DEBUG_KMS("\n");
- drm_fbdev_cma_restore_mode(tdev->fbdev_cma);
-}
-EXPORT_SYMBOL(tinydrm_lastclose);
-
/**
* tinydrm_gem_cma_prime_import_sg_table - Produce a CMA GEM object from
* another driver's scatter/gather table of pinned pages
@@ -214,35 +198,24 @@ EXPORT_SYMBOL(devm_tinydrm_init);
static int tinydrm_register(struct tinydrm_device *tdev)
{
struct drm_device *drm = tdev->drm;
- int bpp = drm->mode_config.preferred_depth;
- struct drm_fbdev_cma *fbdev;
int ret;
ret = drm_dev_register(tdev->drm, 0);
if (ret)
return ret;
- fbdev = drm_fbdev_cma_init_with_funcs(drm, bpp ? bpp : 32,
- drm->mode_config.num_connector,
- tdev->fb_funcs);
- if (IS_ERR(fbdev))
- DRM_ERROR("Failed to initialize fbdev: %ld\n", PTR_ERR(fbdev));
- else
- tdev->fbdev_cma = fbdev;
+ ret = drm_fb_cma_fbdev_init_with_funcs(drm, 0, 0, tdev->fb_funcs);
+ if (ret)
+ DRM_ERROR("Failed to initialize fbdev: %d\n", ret);
return 0;
}
static void tinydrm_unregister(struct tinydrm_device *tdev)
{
- struct drm_fbdev_cma *fbdev_cma = tdev->fbdev_cma;
-
drm_atomic_helper_shutdown(tdev->drm);
- /* don't restore fbdev in lastclose, keep pipeline disabled */
- tdev->fbdev_cma = NULL;
+ drm_fb_cma_fbdev_fini(tdev->drm);
drm_dev_unregister(tdev->drm);
- if (fbdev_cma)
- drm_fbdev_cma_fini(fbdev_cma);
}
static void devm_tinydrm_register_release(void *data)
diff --git a/drivers/gpu/drm/tinydrm/mi0283qt.c b/drivers/gpu/drm/tinydrm/mi0283qt.c
index 70ae4f76f455..674d407640be 100644
--- a/drivers/gpu/drm/tinydrm/mi0283qt.c
+++ b/drivers/gpu/drm/tinydrm/mi0283qt.c
@@ -9,6 +9,7 @@
* (at your option) any later version.
*/
+#include <drm/drm_fb_helper.h>
#include <drm/drm_modeset_helper.h>
#include <drm/tinydrm/ili9341.h>
#include <drm/tinydrm/mipi-dbi.h>
@@ -140,7 +141,7 @@ static struct drm_driver mi0283qt_driver = {
DRIVER_ATOMIC,
.fops = &mi0283qt_fops,
TINYDRM_GEM_DRIVER_OPS,
- .lastclose = tinydrm_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.debugfs_init = mipi_dbi_debugfs_init,
.name = "mi0283qt",
.desc = "Multi-Inno MI0283QT",
diff --git a/drivers/gpu/drm/tinydrm/st7586.c b/drivers/gpu/drm/tinydrm/st7586.c
index 0a2c60da5c0e..5aebfceb740e 100644
--- a/drivers/gpu/drm/tinydrm/st7586.c
+++ b/drivers/gpu/drm/tinydrm/st7586.c
@@ -17,6 +17,7 @@
#include <linux/spi/spi.h>
#include <video/mipi_display.h>
+#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/tinydrm/mipi-dbi.h>
#include <drm/tinydrm/tinydrm-helpers.h>
@@ -320,7 +321,7 @@ static struct drm_driver st7586_driver = {
DRIVER_ATOMIC,
.fops = &st7586_fops,
TINYDRM_GEM_DRIVER_OPS,
- .lastclose = tinydrm_lastclose,
+ .lastclose = drm_fb_helper_lastclose,
.debugfs_init = mipi_dbi_debugfs_init,
.name = "st7586",
.desc = "Sitronix ST7586",
diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h
index 03cd9d72308c..07a9a11fe19d 100644
--- a/include/drm/tinydrm/tinydrm.h
+++ b/include/drm/tinydrm/tinydrm.h
@@ -19,14 +19,12 @@
* @drm: DRM device
* @pipe: Display pipe structure
* @dirty_lock: Serializes framebuffer flushing
- * @fbdev_cma: CMA fbdev structure
* @fb_funcs: Framebuffer functions used when creating framebuffers
*/
struct tinydrm_device {
struct drm_device *drm;
struct drm_simple_display_pipe pipe;
struct mutex dirty_lock;
- struct drm_fbdev_cma *fbdev_cma;
const struct drm_framebuffer_funcs *fb_funcs;
};
@@ -80,7 +78,6 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
.type = DRM_MODE_TYPE_DRIVER, \
.clock = 1 /* pass validation */
-void tinydrm_lastclose(struct drm_device *drm);
void tinydrm_gem_cma_free_object(struct drm_gem_object *gem_obj);
struct drm_gem_object *
tinydrm_gem_cma_prime_import_sg_table(struct drm_device *drm,
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 22/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (20 preceding siblings ...)
2017-11-15 14:20 ` [PATCH v2 21/22] drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini() Noralf Trønnes
@ 2017-11-15 14:20 ` Noralf Trønnes
2017-11-16 8:14 ` [PATCH v2 00/22] " Shawn Guo
2017-12-08 13:59 ` Noralf Trønnes
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-15 14:20 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Remove the unused struct drm_fbdev_cma functions.
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/drm_fb_cma_helper.c | 158 ------------------------------------
include/drm/drm_fb_cma_helper.h | 28 +------
2 files changed, 3 insertions(+), 183 deletions(-)
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 186d00adfb5f..7e2a01fa8a38 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -389,161 +389,3 @@ void drm_fb_cma_fbdev_fini(struct drm_device *dev)
kfree(to_fbdev_cma(fb_helper));
}
EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_fini);
-
-/**
- * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
- * @dev: DRM device
- * @preferred_bpp: Preferred bits per pixel for the device
- * @max_conn_count: Maximum number of connectors
- * @funcs: fb helper functions, in particular a custom dirty() callback
- *
- * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
- */
-struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
- unsigned int preferred_bpp, unsigned int max_conn_count,
- const struct drm_framebuffer_funcs *funcs)
-{
- struct drm_fbdev_cma *fbdev_cma;
- struct drm_fb_helper *helper;
- int ret;
-
- fbdev_cma = kzalloc(sizeof(*fbdev_cma), GFP_KERNEL);
- if (!fbdev_cma) {
- dev_err(dev->dev, "Failed to allocate drm fbdev.\n");
- return ERR_PTR(-ENOMEM);
- }
- fbdev_cma->fb_funcs = funcs;
-
- helper = &fbdev_cma->fb_helper;
-
- drm_fb_helper_prepare(dev, helper, &drm_fb_cma_helper_funcs);
-
- ret = drm_fb_helper_init(dev, helper, max_conn_count);
- if (ret < 0) {
- dev_err(dev->dev, "Failed to initialize drm fb helper.\n");
- goto err_free;
- }
-
- ret = drm_fb_helper_single_add_all_connectors(helper);
- if (ret < 0) {
- dev_err(dev->dev, "Failed to add connectors.\n");
- goto err_drm_fb_helper_fini;
-
- }
-
- ret = drm_fb_helper_initial_config(helper, preferred_bpp);
- if (ret < 0) {
- dev_err(dev->dev, "Failed to set initial hw configuration.\n");
- goto err_drm_fb_helper_fini;
- }
-
- return fbdev_cma;
-
-err_drm_fb_helper_fini:
- drm_fb_helper_fini(helper);
-err_free:
- kfree(fbdev_cma);
-
- return ERR_PTR(ret);
-}
-EXPORT_SYMBOL_GPL(drm_fbdev_cma_init_with_funcs);
-
-static const struct drm_framebuffer_funcs drm_fb_cma_funcs = {
- .destroy = drm_gem_fb_destroy,
- .create_handle = drm_gem_fb_create_handle,
-};
-
-/**
- * drm_fbdev_cma_init() - Allocate and initializes a drm_fbdev_cma struct
- * @dev: DRM device
- * @preferred_bpp: Preferred bits per pixel for the device
- * @max_conn_count: Maximum number of connectors
- *
- * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
- */
-struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
- unsigned int preferred_bpp, unsigned int max_conn_count)
-{
- return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp,
- max_conn_count,
- &drm_fb_cma_funcs);
-}
-EXPORT_SYMBOL_GPL(drm_fbdev_cma_init);
-
-/**
- * drm_fbdev_cma_fini() - Free drm_fbdev_cma struct
- * @fbdev_cma: The drm_fbdev_cma struct
- */
-void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma)
-{
- drm_fb_helper_unregister_fbi(&fbdev_cma->fb_helper);
- if (fbdev_cma->fb_helper.fbdev)
- drm_fbdev_cma_defio_fini(fbdev_cma->fb_helper.fbdev);
-
- if (fbdev_cma->fb_helper.fb)
- drm_framebuffer_remove(fbdev_cma->fb_helper.fb);
-
- drm_fb_helper_fini(&fbdev_cma->fb_helper);
- kfree(fbdev_cma);
-}
-EXPORT_SYMBOL_GPL(drm_fbdev_cma_fini);
-
-/**
- * drm_fbdev_cma_restore_mode() - Restores initial framebuffer mode
- * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
- *
- * This function is usually called from the &drm_driver.lastclose callback.
- */
-void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma)
-{
- if (fbdev_cma)
- drm_fb_helper_restore_fbdev_mode_unlocked(&fbdev_cma->fb_helper);
-}
-EXPORT_SYMBOL_GPL(drm_fbdev_cma_restore_mode);
-
-/**
- * drm_fbdev_cma_hotplug_event() - Poll for hotpulug events
- * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
- *
- * This function is usually called from the &drm_mode_config.output_poll_changed
- * callback.
- */
-void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma)
-{
- if (fbdev_cma)
- drm_fb_helper_hotplug_event(&fbdev_cma->fb_helper);
-}
-EXPORT_SYMBOL_GPL(drm_fbdev_cma_hotplug_event);
-
-/**
- * drm_fbdev_cma_set_suspend - wrapper around drm_fb_helper_set_suspend
- * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
- * @state: desired state, zero to resume, non-zero to suspend
- *
- * Calls drm_fb_helper_set_suspend, which is a wrapper around
- * fb_set_suspend implemented by fbdev core.
- */
-void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
-{
- if (fbdev_cma)
- drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
-}
-EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
-
-/**
- * drm_fbdev_cma_set_suspend_unlocked - wrapper around
- * drm_fb_helper_set_suspend_unlocked
- * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
- * @state: desired state, zero to resume, non-zero to suspend
- *
- * Calls drm_fb_helper_set_suspend, which is a wrapper around
- * fb_set_suspend implemented by fbdev core.
- */
-void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
- bool state)
-{
- if (fbdev_cma)
- drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
- state);
-}
-EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index 4fb2d5563420..cde293ae0ccb 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -1,18 +1,10 @@
#ifndef __DRM_FB_CMA_HELPER_H__
#define __DRM_FB_CMA_HELPER_H__
-struct drm_fbdev_cma;
-struct drm_gem_cma_object;
-
-struct drm_fb_helper_surface_size;
-struct drm_framebuffer_funcs;
-struct drm_fb_helper_funcs;
-struct drm_framebuffer;
-struct drm_fb_helper;
struct drm_device;
-struct drm_file;
-struct drm_mode_fb_cmd2;
-struct drm_plane;
+struct drm_framebuffer;
+struct drm_framebuffer_funcs;
+struct drm_gem_cma_object;
struct drm_plane_state;
int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
@@ -22,19 +14,6 @@ int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
unsigned int max_conn_count);
void drm_fb_cma_fbdev_fini(struct drm_device *dev);
-struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
- unsigned int preferred_bpp, unsigned int max_conn_count,
- const struct drm_framebuffer_funcs *funcs);
-struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
- unsigned int preferred_bpp, unsigned int max_conn_count);
-void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
-
-void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
-void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
-void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
-void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
- bool state);
-
struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
unsigned int plane);
@@ -43,4 +22,3 @@ dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb,
unsigned int plane);
#endif
-
--
2.14.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 12/22] drm/sti: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 ` [PATCH v2 12/22] drm/sti: " Noralf Trønnes
@ 2017-11-15 15:01 ` Benjamin Gaignard
0 siblings, 0 replies; 38+ messages in thread
From: Benjamin Gaignard @ 2017-11-15 15:01 UTC (permalink / raw)
To: Noralf Trønnes
Cc: narmstrong, Liviu Dudau, Laurent Pinchart, Marek Vašut,
boris.brezillon, abrodkin, z.liuxinliang, kongxinwei (A),
Tomi Valkeinen, David Lechner, Chen Feng, Jyri Sarha, dri-devel,
Vincent Abriou, Alison Wang, Philippe Cornu, Yannick Fertre,
Rongrong Zou, Maxime Ripard, Shawn Guo
2017-11-15 15:19 GMT+01:00 Noralf Trønnes <noralf@tronnes.org>:
> Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
> the fact that drm_device holds a pointer to the drm_fb_helper structure.
> This means that the driver doesn't have to keep track of that.
> Also use the drm_fb_helper functions directly.
This v2 doesn't crash anymore so
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
>
> Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> Cc: Vincent Abriou <vincent.abriou@st.com>
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> ---
> drivers/gpu/drm/sti/sti_drv.c | 27 +++++----------------------
> drivers/gpu/drm/sti/sti_drv.h | 1 -
> 2 files changed, 5 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 9e9343101738..a4553a31c59e 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -17,6 +17,7 @@
> #include <drm/drm_crtc_helper.h>
> #include <drm/drm_gem_cma_helper.h>
> #include <drm/drm_gem_framebuffer_helper.h>
> +#include <drm/drm_fb_helper.h>
> #include <drm/drm_fb_cma_helper.h>
> #include <drm/drm_of.h>
>
> @@ -138,16 +139,9 @@ static int sti_atomic_check(struct drm_device *dev,
> return ret;
> }
>
> -static void sti_output_poll_changed(struct drm_device *ddev)
> -{
> - struct sti_private *private = ddev->dev_private;
> -
> - drm_fbdev_cma_hotplug_event(private->fbdev);
> -}
> -
> static const struct drm_mode_config_funcs sti_mode_config_funcs = {
> .fb_create = drm_gem_fb_create,
> - .output_poll_changed = sti_output_poll_changed,
> + .output_poll_changed = drm_fb_helper_output_poll_changed,
> .atomic_check = sti_atomic_check,
> .atomic_commit = drm_atomic_helper_commit,
> };
> @@ -230,11 +224,7 @@ static void sti_cleanup(struct drm_device *ddev)
> {
> struct sti_private *private = ddev->dev_private;
>
> - if (private->fbdev) {
> - drm_fbdev_cma_fini(private->fbdev);
> - private->fbdev = NULL;
> - }
> -
> + drm_fb_cma_fbdev_fini(ddev);
> drm_kms_helper_poll_fini(ddev);
> component_unbind_all(ddev->dev, ddev);
> kfree(private);
> @@ -244,8 +234,6 @@ static void sti_cleanup(struct drm_device *ddev)
> static int sti_bind(struct device *dev)
> {
> struct drm_device *ddev;
> - struct sti_private *private;
> - struct drm_fbdev_cma *fbdev;
> int ret;
>
> ddev = drm_dev_alloc(&sti_driver, dev);
> @@ -266,15 +254,10 @@ static int sti_bind(struct device *dev)
>
> drm_mode_config_reset(ddev);
>
> - private = ddev->dev_private;
> if (ddev->mode_config.num_connector) {
> - fbdev = drm_fbdev_cma_init(ddev, 32,
> - ddev->mode_config.num_connector);
> - if (IS_ERR(fbdev)) {
> + ret = drm_fb_cma_fbdev_init(ddev, 32, 0);
> + if (ret)
> DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
> - fbdev = NULL;
> - }
> - private->fbdev = fbdev;
> }
>
> return 0;
> diff --git a/drivers/gpu/drm/sti/sti_drv.h b/drivers/gpu/drm/sti/sti_drv.h
> index 6502ed2d3351..16c5c9110cb0 100644
> --- a/drivers/gpu/drm/sti/sti_drv.h
> +++ b/drivers/gpu/drm/sti/sti_drv.h
> @@ -24,7 +24,6 @@ struct sti_private {
> struct sti_compositor *compo;
> struct drm_property *plane_zorder_property;
> struct drm_device *drm_dev;
> - struct drm_fbdev_cma *fbdev;
> };
>
> extern struct platform_driver sti_tvout_driver;
> --
> 2.14.2
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (21 preceding siblings ...)
2017-11-15 14:20 ` [PATCH v2 22/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
@ 2017-11-16 8:14 ` Shawn Guo
2017-11-16 20:11 ` Noralf Trønnes
2017-12-08 13:59 ` Noralf Trønnes
23 siblings, 1 reply; 38+ messages in thread
From: Shawn Guo @ 2017-11-16 8:14 UTC (permalink / raw)
To: Noralf Trønnes
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, dri-devel,
vincent.abriou, alison.wang, philippe.cornu, yannick.fertre,
zourongrong, maxime.ripard
On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
> This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
> drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
> struct drm_fbdev_cma and it's wrapper functions. The final piece will
> happen when tinydrm moves away from the cma helper and we can remove the
> struct.
>
> Note:
> Patches 19-22 depends on patchset:
> [v3] drm: Add simple modeset suspend/resume helpers
Is there a git branch somewhere we can test?
Shawn
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-16 8:14 ` [PATCH v2 00/22] " Shawn Guo
@ 2017-11-16 20:11 ` Noralf Trønnes
2017-11-17 9:10 ` Alexey Brodkin
0 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-16 20:11 UTC (permalink / raw)
To: Shawn Guo
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, dri-devel,
vincent.abriou, alison.wang, philippe.cornu, yannick.fertre,
zourongrong, maxime.ripard
Den 16.11.2017 09.14, skrev Shawn Guo:
> On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
>> This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
>> drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
>> struct drm_fbdev_cma and it's wrapper functions. The final piece will
>> happen when tinydrm moves away from the cma helper and we can remove the
>> struct.
>>
>> Note:
>> Patches 19-22 depends on patchset:
>> [v3] drm: Add simple modeset suspend/resume helpers
> Is there a git branch somewhere we can test?
>
Here you go: https://github.com/notro/linux/tree/drm_fb_cma_fbdev_init
It includes the pending fsl-dcu suspend/resume patches and the patchset
mentioned above.
Noralf.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-16 20:11 ` Noralf Trønnes
@ 2017-11-17 9:10 ` Alexey Brodkin
2017-11-17 11:12 ` Noralf Trønnes
2017-11-20 23:52 ` Noralf Trønnes
0 siblings, 2 replies; 38+ messages in thread
From: Alexey Brodkin @ 2017-11-17 9:10 UTC (permalink / raw)
To: noralf
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, dri-devel, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Hi Noralf,
On Thu, 2017-11-16 at 21:11 +0100, Noralf Trønnes wrote:
> Den 16.11.2017 09.14, skrev Shawn Guo:
> >
> > On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
> > >
> > > This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
> > > drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
> > > struct drm_fbdev_cma and it's wrapper functions. The final piece will
> > > happen when tinydrm moves away from the cma helper and we can remove the
> > > struct.
> > >
> > > Note:
> > > Patches 19-22 depends on patchset:
> > > [v3] drm: Add simple modeset suspend/resume helpers
> > Is there a git branch somewhere we can test?
> >
>
> Here you go: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notro_linux_tree_drm-5Ffb-5Fcma-5Ffbdev-5Finit&d=DwIDaQ&c=DPL6_X_6JkXFx
> 7AXWqB0tg&r=OtZvQ4lNHIbjtyysXrNW8RbX6WFkigcev-xByzJ_fLk&m=McbBjcx46wmGkpM3GHmk9URB1xbd6ywS-
> Z5tpdWwDX8&s=BewulagwMNQa5xW19olMnlzV5DI5cZ_7eDSPyUpzMV8&e=
Thanks for that this really helps to test your patches.
And looks like something is broken for ARC PGU + ADV7511 with your tree:
-------------------------->8------------------------
adv7511: probe of 1-0039 failed with error -2
arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
arcpgu e0017000.pgu: assigned reserved memory node frame_buffe
r@9e000000
[drm] Cannot find any crtc or sizes
[drm] Cannot find any crtc or sizes
[drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
-------------------------->8------------------------
That's what I see on vanilla 4.14 kernel:
-------------------------->8------------------------
arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
arcpgu e0017000.pgu: assigned reserved memory node frame_buffer@9e000000
Console: switching to colour frame buffer device 160x45
arcpgu e0017000.pgu: fb0: frame buffer device
[drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
-------------------------->8------------------------
Any thoughts?
-Alexey
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-17 9:10 ` Alexey Brodkin
@ 2017-11-17 11:12 ` Noralf Trønnes
2017-11-20 23:52 ` Noralf Trønnes
1 sibling, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-17 11:12 UTC (permalink / raw)
To: Alexey Brodkin
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, dri-devel, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Den 17.11.2017 10.10, skrev Alexey Brodkin:
> Hi Noralf,
>
> On Thu, 2017-11-16 at 21:11 +0100, Noralf Trønnes wrote:
>> Den 16.11.2017 09.14, skrev Shawn Guo:
>>> On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
>>>> This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
>>>> drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
>>>> struct drm_fbdev_cma and it's wrapper functions. The final piece will
>>>> happen when tinydrm moves away from the cma helper and we can remove the
>>>> struct.
>>>>
>>>> Note:
>>>> Patches 19-22 depends on patchset:
>>>> [v3] drm: Add simple modeset suspend/resume helpers
>>> Is there a git branch somewhere we can test?
>>>
>> Here you go: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notro_linux_tree_drm-5Ffb-5Fcma-5Ffbdev-5Finit&d=DwIDaQ&c=DPL6_X_6JkXFx
>> 7AXWqB0tg&r=OtZvQ4lNHIbjtyysXrNW8RbX6WFkigcev-xByzJ_fLk&m=McbBjcx46wmGkpM3GHmk9URB1xbd6ywS-
>> Z5tpdWwDX8&s=BewulagwMNQa5xW19olMnlzV5DI5cZ_7eDSPyUpzMV8&e=
> Thanks for that this really helps to test your patches.
That's nice to know so I can include it in future patchsets like this.
> And looks like something is broken for ARC PGU + ADV7511 with your tree:
> -------------------------->8------------------------
> adv7511: probe of 1-0039 failed with error -2
-2 is -ENOENT
There are some changes to adv7511 in drm-misc since 4.14.
I suggest you try drm-misc-next directly to see if that works or not.
Noralf.
> arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
> arcpgu e0017000.pgu: assigned reserved memory node frame_buffe
> r@9e000000
> [drm] Cannot find any crtc or sizes
> [drm] Cannot find any crtc or sizes
> [drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
> -------------------------->8------------------------
>
> That's what I see on vanilla 4.14 kernel:
> -------------------------->8------------------------
> arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
> arcpgu e0017000.pgu: assigned reserved memory node frame_buffer@9e000000
> Console: switching to colour frame buffer device 160x45
> arcpgu e0017000.pgu: fb0: frame buffer device
> [drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
> -------------------------->8------------------------
>
> Any thoughts?
>
> -Alexey
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 18/22] drm/zte: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 ` [PATCH v2 18/22] drm/zte: " Noralf Trønnes
@ 2017-11-17 13:46 ` Shawn Guo
0 siblings, 0 replies; 38+ messages in thread
From: Shawn Guo @ 2017-11-17 13:46 UTC (permalink / raw)
To: Noralf Trønnes
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, dri-devel,
vincent.abriou, alison.wang, philippe.cornu, yannick.fertre,
zourongrong, maxime.ripard
On Wed, Nov 15, 2017 at 03:19:57PM +0100, Noralf Trønnes wrote:
> Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
> the fact that drm_device holds a pointer to the drm_fb_helper structure.
> This means that the driver doesn't have to keep track of that.
> Also use the drm_fb_helper functions directly.
>
> Cc: Shawn Guo <shawnguo@kernel.org>
Acked-by: Shawn Guo <shawnguo@kernel.org>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-17 9:10 ` Alexey Brodkin
2017-11-17 11:12 ` Noralf Trønnes
@ 2017-11-20 23:52 ` Noralf Trønnes
2017-11-21 16:47 ` Alexey Brodkin
1 sibling, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-20 23:52 UTC (permalink / raw)
To: Alexey Brodkin
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, dri-devel, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Den 17.11.2017 10.10, skrev Alexey Brodkin:
> Hi Noralf,
>
> On Thu, 2017-11-16 at 21:11 +0100, Noralf Trønnes wrote:
>> Den 16.11.2017 09.14, skrev Shawn Guo:
>>> On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
>>>> This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
>>>> drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
>>>> struct drm_fbdev_cma and it's wrapper functions. The final piece will
>>>> happen when tinydrm moves away from the cma helper and we can remove the
>>>> struct.
>>>>
>>>> Note:
>>>> Patches 19-22 depends on patchset:
>>>> [v3] drm: Add simple modeset suspend/resume helpers
>>> Is there a git branch somewhere we can test?
>>>
>> Here you go: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notro_linux_tree_drm-5Ffb-5Fcma-5Ffbdev-5Finit&d=DwIDaQ&c=DPL6_X_6JkXFx
>> 7AXWqB0tg&r=OtZvQ4lNHIbjtyysXrNW8RbX6WFkigcev-xByzJ_fLk&m=McbBjcx46wmGkpM3GHmk9URB1xbd6ywS-
>> Z5tpdWwDX8&s=BewulagwMNQa5xW19olMnlzV5DI5cZ_7eDSPyUpzMV8&e=
> Thanks for that this really helps to test your patches.
> And looks like something is broken for ARC PGU + ADV7511 with your tree:
> -------------------------->8------------------------
> adv7511: probe of 1-0039 failed with error -2
Maybe the problem is with the cec support added after 4.14:
drm: adv7511/33: add HDMI CEC support
https://cgit.freedesktop.org/drm/drm-misc/commit/drivers/gpu/drm/bridge/adv7511?id=3b1b975003e4a3da4b93ab032487a3ae4afca7b5
Apparently there's a problem with it:
[PATCHv2] drm: adv7511/33: Fix adv7511_cec_init() failure handling
https://lists.freedesktop.org/archives/dri-devel/2017-November/158024.html
Noralf.
> arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
> arcpgu e0017000.pgu: assigned reserved memory node frame_buffe
> r@9e000000
> [drm] Cannot find any crtc or sizes
> [drm] Cannot find any crtc or sizes
> [drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
> -------------------------->8------------------------
>
> That's what I see on vanilla 4.14 kernel:
> -------------------------->8------------------------
> arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
> arcpgu e0017000.pgu: assigned reserved memory node frame_buffer@9e000000
> Console: switching to colour frame buffer device 160x45
> arcpgu e0017000.pgu: fb0: frame buffer device
> [drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
> -------------------------->8------------------------
>
> Any thoughts?
>
> -Alexey
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-20 23:52 ` Noralf Trønnes
@ 2017-11-21 16:47 ` Alexey Brodkin
0 siblings, 0 replies; 38+ messages in thread
From: Alexey Brodkin @ 2017-11-21 16:47 UTC (permalink / raw)
To: noralf
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, dri-devel, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Hi Noralf,
On Tue, 2017-11-21 at 00:52 +0100, Noralf Trønnes wrote:
> Den 17.11.2017 10.10, skrev Alexey Brodkin:
> >
> > Hi Noralf,
> >
> > On Thu, 2017-11-16 at 21:11 +0100, Noralf Trønnes wrote:
> > >
> > > Den 16.11.2017 09.14, skrev Shawn Guo:
> > > >
> > > > On Wed, Nov 15, 2017 at 03:19:39PM +0100, Noralf Trønnes wrote:
> > > > >
> > > > > This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
> > > > > drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
> > > > > struct drm_fbdev_cma and it's wrapper functions. The final piece will
> > > > > happen when tinydrm moves away from the cma helper and we can remove the
> > > > > struct.
> > > > >
> > > > > Note:
> > > > > Patches 19-22 depends on patchset:
> > > > > [v3] drm: Add simple modeset suspend/resume helpers
> > > > Is there a git branch somewhere we can test?
> > > >
> > > Here you go: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notro_linux_tree_drm-5Ffb-5Fcma-5Ffbdev-5Finit&d=DwIDaQ&c=DPL6_X_6J
> > > kXFx
> > > 7AXWqB0tg&r=OtZvQ4lNHIbjtyysXrNW8RbX6WFkigcev-xByzJ_fLk&m=McbBjcx46wmGkpM3GHmk9URB1xbd6ywS-
> > > Z5tpdWwDX8&s=BewulagwMNQa5xW19olMnlzV5DI5cZ_7eDSPyUpzMV8&e=
> > Thanks for that this really helps to test your patches.
> > And looks like something is broken for ARC PGU + ADV7511 with your tree:
> > -------------------------->8------------------------
> > adv7511: probe of 1-0039 failed with error -2
>
> Maybe the problem is with the cec support added after 4.14:
>
> drm: adv7511/33: add HDMI CEC support
> https://urldefense.proofpoint.com/v2/url?u=https-3A__cgit.freedesktop.org_drm_drm-2Dmisc_commit_drivers_gpu_drm_bridge_adv7511-3Fid-3D3b1b975003e4a3
> da4b93ab032487a3ae4afca7b5&d=DwIDaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=H7HSEHrOweYdtYmtV7QQ7l6ndVPGq1aUigPo3Wq
> DlNg&s=67zDRPjQ2iyMOhroP6wat67ESWhYnGPAhKgbmgHwxQ0&e=
>
> Apparently there's a problem with it:
>
> [PATCHv2] drm: adv7511/33: Fix adv7511_cec_init() failure handling
> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_archives_dri-2Ddevel_2017-2DNovember_158024.html&d=DwIDaQ&c=DPL6_X_6JkXFx
> 7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=H7HSEHrOweYdtYmtV7QQ7l6ndVPGq1aUigPo3WqDlNg&s=ecprlgbDaK04JzdFl4w5JR7J-
> HoHaHCMwB0BfgRxufY&e=
Thanks a lot for the pointer!
Indeed this patch fixes a problem:
------------------------------------>8--------------------------------
arcpgu e0017000.pgu: arc_pgu ID: 0x41440304
arcpgu e0017000.pgu: assigned reserved memory node frame_buffer@9e000000
Console: switching to colour frame buffer device 160x45
arcpgu e0017000.pgu: fb0: frame buffer device
[drm] Initialized arcpgu 1.0.0 20160219 for e0017000.pgu on minor 0
------------------------------------>8--------------------------------
So I'll reply with my ack for ARC PGU patch then as it works perfectly fine for me.
-Alexey
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 ` [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini() Noralf Trønnes
@ 2017-11-21 16:49 ` Alexey Brodkin
2018-09-27 8:49 ` Alexey Brodkin
1 sibling, 0 replies; 38+ messages in thread
From: Alexey Brodkin @ 2017-11-21 16:49 UTC (permalink / raw)
To: noralf
Cc: narmstrong, liviu.dudau, dri-devel, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Hi Noralf,
On Wed, 2017-11-15 at 15:19 +0100, Noralf Trønnes wrote:
> Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
> the fact that drm_device holds a pointer to the drm_fb_helper structure.
> This means that the driver doesn't have to keep track of that.
> Also use the drm_fb_helper functions directly.
> Remove unused function prototype arcpgu_fbdev_cma_init().
>
> Cc: Alexey Brodkin <abrodkin@synopsys.com>
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 ` [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini() Noralf Trønnes
@ 2017-11-30 17:38 ` Noralf Trønnes
2017-12-07 13:09 ` Noralf Trønnes
0 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-11-30 17:38 UTC (permalink / raw)
To: dri-devel, laurent.pinchart
Cc: narmstrong, liviu.dudau, marex, boris.brezillon, abrodkin,
z.liuxinliang, kong.kongxinwei, tomi.valkeinen, david, puck.chen,
jsarha, vincent.abriou, alison.wang, philippe.cornu,
yannick.fertre, zourongrong, maxime.ripard, shawnguo
Laurent,
Can you please have a look at this and see if it's ok with you?
Noralf.
Den 15.11.2017 15.19, skrev Noralf Trønnes:
> Add functions drm_fb_cma_fbdev_init(), drm_fb_cma_fbdev_fini() and
> drm_fb_cma_fbdev_init_with_funcs(). These functions relies on the fact
> that the drm_fb_helper struct is stored in dev->drm_fb_helper_private
> so drivers don't need to store it.
>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>
> Changes since version 1:
> - Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
>
> drivers/gpu/drm/drm_fb_cma_helper.c | 119 +++++++++++++++++++++++++++++++++++-
> include/drm/drm_fb_cma_helper.h | 7 +++
> 2 files changed, 123 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 35b56dfba929..186d00adfb5f 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -23,6 +23,7 @@
> #include <drm/drm_gem_cma_helper.h>
> #include <drm/drm_gem_framebuffer_helper.h>
> #include <drm/drm_fb_cma_helper.h>
> +#include <drm/drm_print.h>
> #include <linux/module.h>
>
> #define DEFAULT_FBDEFIO_DELAY_MS 50
> @@ -42,7 +43,7 @@ struct drm_fbdev_cma {
> * callback function to create a cma backed framebuffer.
> *
> * An fbdev framebuffer backed by cma is also available by calling
> - * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down.
> + * drm_fb_cma_fbdev_init(). drm_fb_cma_fbdev_fini() tears it down.
> * If the &drm_framebuffer_funcs.dirty callback is set, fb_deferred_io will be
> * set up automatically. &drm_framebuffer_funcs.dirty is called by
> * drm_fb_helper_deferred_io() in process context (&struct delayed_work).
> @@ -68,7 +69,7 @@ struct drm_fbdev_cma {
> *
> * Initialize::
> *
> - * fbdev = drm_fbdev_cma_init_with_funcs(dev, 16,
> + * fbdev = drm_fb_cma_fbdev_init_with_funcs(dev, 16,
> * dev->mode_config.num_crtc,
> * dev->mode_config.num_connector,
> * &driver_fb_funcs);
> @@ -256,7 +257,7 @@ drm_fbdev_cma_create(struct drm_fb_helper *helper,
> fbi->screen_size = size;
> fbi->fix.smem_len = size;
>
> - if (fbdev_cma->fb_funcs->dirty) {
> + if (fb->funcs->dirty) {
> ret = drm_fbdev_cma_defio_init(fbi, obj);
> if (ret)
> goto err_cma_destroy;
> @@ -277,6 +278,118 @@ static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
> .fb_probe = drm_fbdev_cma_create,
> };
>
> +/**
> + * drm_fb_cma_fbdev_init_with_funcs() - Allocate and initialize fbdev emulation
> + * @dev: DRM device
> + * @preferred_bpp: Preferred bits per pixel for the device.
> + * @dev->mode_config.preferred_depth is used if this is zero.
> + * @max_conn_count: Maximum number of connectors.
> + * @dev->mode_config.num_connector is used if this is zero.
> + * @funcs: Framebuffer functions, in particular a custom dirty() callback.
> + * Can be NULL.
> + *
> + * Returns:
> + * Zero on success or negative error code on failure.
> + */
> +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
> + unsigned int preferred_bpp, unsigned int max_conn_count,
> + const struct drm_framebuffer_funcs *funcs)
> +{
> + struct drm_fbdev_cma *fbdev_cma;
> + struct drm_fb_helper *fb_helper;
> + int ret;
> +
> + if (!preferred_bpp)
> + preferred_bpp = dev->mode_config.preferred_depth;
> + if (!preferred_bpp)
> + preferred_bpp = 32;
> +
> + if (!max_conn_count)
> + max_conn_count = dev->mode_config.num_connector;
> +
> + fbdev_cma = kzalloc(sizeof(*fbdev_cma), GFP_KERNEL);
> + if (!fbdev_cma)
> + return -ENOMEM;
> +
> + fbdev_cma->fb_funcs = funcs;
> + fb_helper = &fbdev_cma->fb_helper;
> +
> + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_cma_helper_funcs);
> +
> + ret = drm_fb_helper_init(dev, fb_helper, max_conn_count);
> + if (ret < 0) {
> + DRM_DEV_ERROR(dev->dev, "Failed to initialize fbdev helper.\n");
> + goto err_free;
> + }
> +
> + ret = drm_fb_helper_single_add_all_connectors(fb_helper);
> + if (ret < 0) {
> + DRM_DEV_ERROR(dev->dev, "Failed to add connectors.\n");
> + goto err_drm_fb_helper_fini;
> + }
> +
> + ret = drm_fb_helper_initial_config(fb_helper, preferred_bpp);
> + if (ret < 0) {
> + DRM_DEV_ERROR(dev->dev, "Failed to set fbdev configuration.\n");
> + goto err_drm_fb_helper_fini;
> + }
> +
> + return 0;
> +
> +err_drm_fb_helper_fini:
> + drm_fb_helper_fini(fb_helper);
> +err_free:
> + kfree(fbdev_cma);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init_with_funcs);
> +
> +/**
> + * drm_fb_cma_fbdev_init() - Allocate and initialize fbdev emulation
> + * @dev: DRM device
> + * @preferred_bpp: Preferred bits per pixel for the device.
> + * @dev->mode_config.preferred_depth is used if this is zero.
> + * @max_conn_count: Maximum number of connectors.
> + * @dev->mode_config.num_connector is used if this is zero.
> + *
> + * Returns:
> + * Zero on success or negative error code on failure.
> + */
> +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
> + unsigned int max_conn_count)
> +{
> + return drm_fb_cma_fbdev_init_with_funcs(dev, preferred_bpp,
> + max_conn_count, NULL);
> +}
> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init);
> +
> +/**
> + * drm_fb_cma_fbdev_fini() - Teardown fbdev emulation
> + * @dev: DRM device
> + */
> +void drm_fb_cma_fbdev_fini(struct drm_device *dev)
> +{
> + struct drm_fb_helper *fb_helper = dev->fb_helper;
> +
> + if (!fb_helper)
> + return;
> +
> + /* Unregister if it hasn't been done already */
> + if (fb_helper->fbdev && fb_helper->fbdev->dev)
> + drm_fb_helper_unregister_fbi(fb_helper);
> +
> + if (fb_helper->fbdev)
> + drm_fbdev_cma_defio_fini(fb_helper->fbdev);
> +
> + if (fb_helper->fb)
> + drm_framebuffer_remove(fb_helper->fb);
> +
> + drm_fb_helper_fini(fb_helper);
> + kfree(to_fbdev_cma(fb_helper));
> +}
> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_fini);
> +
> /**
> * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
> * @dev: DRM device
> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
> index a613ff022e6c..4fb2d5563420 100644
> --- a/include/drm/drm_fb_cma_helper.h
> +++ b/include/drm/drm_fb_cma_helper.h
> @@ -15,6 +15,13 @@ struct drm_mode_fb_cmd2;
> struct drm_plane;
> struct drm_plane_state;
>
> +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
> + unsigned int preferred_bpp, unsigned int max_conn_count,
> + const struct drm_framebuffer_funcs *funcs);
> +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
> + unsigned int max_conn_count);
> +void drm_fb_cma_fbdev_fini(struct drm_device *dev);
> +
> struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
> unsigned int preferred_bpp, unsigned int max_conn_count,
> const struct drm_framebuffer_funcs *funcs);
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
2017-11-30 17:38 ` Noralf Trønnes
@ 2017-12-07 13:09 ` Noralf Trønnes
2017-12-07 14:55 ` Daniel Vetter
0 siblings, 1 reply; 38+ messages in thread
From: Noralf Trønnes @ 2017-12-07 13:09 UTC (permalink / raw)
To: dri-devel, laurent.pinchart, Daniel Vetter
Cc: marex, boris.brezillon, david, narmstrong, liviu.dudau,
alison.wang, abrodkin, philippe.cornu, jsarha, z.liuxinliang,
kong.kongxinwei, tomi.valkeinen, puck.chen, zourongrong,
shawnguo, maxime.ripard, vincent.abriou, yannick.fertre
Daniel,
There's no response from Laurent, can I go ahead and start applying?
Noralf.
Den 30.11.2017 18.38, skrev Noralf Trønnes:
> Laurent,
>
> Can you please have a look at this and see if it's ok with you?
>
> Noralf.
>
>
> Den 15.11.2017 15.19, skrev Noralf Trønnes:
>> Add functions drm_fb_cma_fbdev_init(), drm_fb_cma_fbdev_fini() and
>> drm_fb_cma_fbdev_init_with_funcs(). These functions relies on the fact
>> that the drm_fb_helper struct is stored in dev->drm_fb_helper_private
>> so drivers don't need to store it.
>>
>> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>> ---
>>
>> Changes since version 1:
>> - Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
>>
>> drivers/gpu/drm/drm_fb_cma_helper.c | 119
>> +++++++++++++++++++++++++++++++++++-
>> include/drm/drm_fb_cma_helper.h | 7 +++
>> 2 files changed, 123 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c
>> b/drivers/gpu/drm/drm_fb_cma_helper.c
>> index 35b56dfba929..186d00adfb5f 100644
>> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
>> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
>> @@ -23,6 +23,7 @@
>> #include <drm/drm_gem_cma_helper.h>
>> #include <drm/drm_gem_framebuffer_helper.h>
>> #include <drm/drm_fb_cma_helper.h>
>> +#include <drm/drm_print.h>
>> #include <linux/module.h>
>> #define DEFAULT_FBDEFIO_DELAY_MS 50
>> @@ -42,7 +43,7 @@ struct drm_fbdev_cma {
>> * callback function to create a cma backed framebuffer.
>> *
>> * An fbdev framebuffer backed by cma is also available by calling
>> - * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down.
>> + * drm_fb_cma_fbdev_init(). drm_fb_cma_fbdev_fini() tears it down.
>> * If the &drm_framebuffer_funcs.dirty callback is set,
>> fb_deferred_io will be
>> * set up automatically. &drm_framebuffer_funcs.dirty is called by
>> * drm_fb_helper_deferred_io() in process context (&struct
>> delayed_work).
>> @@ -68,7 +69,7 @@ struct drm_fbdev_cma {
>> *
>> * Initialize::
>> *
>> - * fbdev = drm_fbdev_cma_init_with_funcs(dev, 16,
>> + * fbdev = drm_fb_cma_fbdev_init_with_funcs(dev, 16,
>> * dev->mode_config.num_crtc,
>> * dev->mode_config.num_connector,
>> * &driver_fb_funcs);
>> @@ -256,7 +257,7 @@ drm_fbdev_cma_create(struct drm_fb_helper *helper,
>> fbi->screen_size = size;
>> fbi->fix.smem_len = size;
>> - if (fbdev_cma->fb_funcs->dirty) {
>> + if (fb->funcs->dirty) {
>> ret = drm_fbdev_cma_defio_init(fbi, obj);
>> if (ret)
>> goto err_cma_destroy;
>> @@ -277,6 +278,118 @@ static const struct drm_fb_helper_funcs
>> drm_fb_cma_helper_funcs = {
>> .fb_probe = drm_fbdev_cma_create,
>> };
>> +/**
>> + * drm_fb_cma_fbdev_init_with_funcs() - Allocate and initialize
>> fbdev emulation
>> + * @dev: DRM device
>> + * @preferred_bpp: Preferred bits per pixel for the device.
>> + * @dev->mode_config.preferred_depth is used if this
>> is zero.
>> + * @max_conn_count: Maximum number of connectors.
>> + * @dev->mode_config.num_connector is used if this
>> is zero.
>> + * @funcs: Framebuffer functions, in particular a custom dirty()
>> callback.
>> + * Can be NULL.
>> + *
>> + * Returns:
>> + * Zero on success or negative error code on failure.
>> + */
>> +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
>> + unsigned int preferred_bpp, unsigned int max_conn_count,
>> + const struct drm_framebuffer_funcs *funcs)
>> +{
>> + struct drm_fbdev_cma *fbdev_cma;
>> + struct drm_fb_helper *fb_helper;
>> + int ret;
>> +
>> + if (!preferred_bpp)
>> + preferred_bpp = dev->mode_config.preferred_depth;
>> + if (!preferred_bpp)
>> + preferred_bpp = 32;
>> +
>> + if (!max_conn_count)
>> + max_conn_count = dev->mode_config.num_connector;
>> +
>> + fbdev_cma = kzalloc(sizeof(*fbdev_cma), GFP_KERNEL);
>> + if (!fbdev_cma)
>> + return -ENOMEM;
>> +
>> + fbdev_cma->fb_funcs = funcs;
>> + fb_helper = &fbdev_cma->fb_helper;
>> +
>> + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_cma_helper_funcs);
>> +
>> + ret = drm_fb_helper_init(dev, fb_helper, max_conn_count);
>> + if (ret < 0) {
>> + DRM_DEV_ERROR(dev->dev, "Failed to initialize fbdev
>> helper.\n");
>> + goto err_free;
>> + }
>> +
>> + ret = drm_fb_helper_single_add_all_connectors(fb_helper);
>> + if (ret < 0) {
>> + DRM_DEV_ERROR(dev->dev, "Failed to add connectors.\n");
>> + goto err_drm_fb_helper_fini;
>> + }
>> +
>> + ret = drm_fb_helper_initial_config(fb_helper, preferred_bpp);
>> + if (ret < 0) {
>> + DRM_DEV_ERROR(dev->dev, "Failed to set fbdev
>> configuration.\n");
>> + goto err_drm_fb_helper_fini;
>> + }
>> +
>> + return 0;
>> +
>> +err_drm_fb_helper_fini:
>> + drm_fb_helper_fini(fb_helper);
>> +err_free:
>> + kfree(fbdev_cma);
>> +
>> + return ret;
>> +}
>> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init_with_funcs);
>> +
>> +/**
>> + * drm_fb_cma_fbdev_init() - Allocate and initialize fbdev emulation
>> + * @dev: DRM device
>> + * @preferred_bpp: Preferred bits per pixel for the device.
>> + * @dev->mode_config.preferred_depth is used if this
>> is zero.
>> + * @max_conn_count: Maximum number of connectors.
>> + * @dev->mode_config.num_connector is used if this
>> is zero.
>> + *
>> + * Returns:
>> + * Zero on success or negative error code on failure.
>> + */
>> +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int
>> preferred_bpp,
>> + unsigned int max_conn_count)
>> +{
>> + return drm_fb_cma_fbdev_init_with_funcs(dev, preferred_bpp,
>> + max_conn_count, NULL);
>> +}
>> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init);
>> +
>> +/**
>> + * drm_fb_cma_fbdev_fini() - Teardown fbdev emulation
>> + * @dev: DRM device
>> + */
>> +void drm_fb_cma_fbdev_fini(struct drm_device *dev)
>> +{
>> + struct drm_fb_helper *fb_helper = dev->fb_helper;
>> +
>> + if (!fb_helper)
>> + return;
>> +
>> + /* Unregister if it hasn't been done already */
>> + if (fb_helper->fbdev && fb_helper->fbdev->dev)
>> + drm_fb_helper_unregister_fbi(fb_helper);
>> +
>> + if (fb_helper->fbdev)
>> + drm_fbdev_cma_defio_fini(fb_helper->fbdev);
>> +
>> + if (fb_helper->fb)
>> + drm_framebuffer_remove(fb_helper->fb);
>> +
>> + drm_fb_helper_fini(fb_helper);
>> + kfree(to_fbdev_cma(fb_helper));
>> +}
>> +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_fini);
>> +
>> /**
>> * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a
>> drm_fbdev_cma struct
>> * @dev: DRM device
>> diff --git a/include/drm/drm_fb_cma_helper.h
>> b/include/drm/drm_fb_cma_helper.h
>> index a613ff022e6c..4fb2d5563420 100644
>> --- a/include/drm/drm_fb_cma_helper.h
>> +++ b/include/drm/drm_fb_cma_helper.h
>> @@ -15,6 +15,13 @@ struct drm_mode_fb_cmd2;
>> struct drm_plane;
>> struct drm_plane_state;
>> +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
>> + unsigned int preferred_bpp, unsigned int max_conn_count,
>> + const struct drm_framebuffer_funcs *funcs);
>> +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int
>> preferred_bpp,
>> + unsigned int max_conn_count);
>> +void drm_fb_cma_fbdev_fini(struct drm_device *dev);
>> +
>> struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct
>> drm_device *dev,
>> unsigned int preferred_bpp, unsigned int max_conn_count,
>> const struct drm_framebuffer_funcs *funcs);
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
2017-12-07 13:09 ` Noralf Trønnes
@ 2017-12-07 14:55 ` Daniel Vetter
0 siblings, 0 replies; 38+ messages in thread
From: Daniel Vetter @ 2017-12-07 14:55 UTC (permalink / raw)
To: Noralf Trønnes
Cc: marex, boris.brezillon, david, narmstrong, Daniel Vetter,
tomi.valkeinen, alison.wang, liviu.dudau, philippe.cornu,
dri-devel, z.liuxinliang, kong.kongxinwei, abrodkin,
laurent.pinchart, puck.chen, zourongrong, shawnguo,
maxime.ripard, jsarha, vincent.abriou, yannick.fertre
On Thu, Dec 07, 2017 at 02:09:40PM +0100, Noralf Trønnes wrote:
> Daniel,
>
> There's no response from Laurent, can I go ahead and start applying?
He's usually fairly responsive to a ping on irc, but yeah I think this is
plenty time, and it's a simple change. Imo good to go.
-Daniel
>
> Noralf.
>
>
> Den 30.11.2017 18.38, skrev Noralf Trønnes:
> > Laurent,
> >
> > Can you please have a look at this and see if it's ok with you?
> >
> > Noralf.
> >
> >
> > Den 15.11.2017 15.19, skrev Noralf Trønnes:
> > > Add functions drm_fb_cma_fbdev_init(), drm_fb_cma_fbdev_fini() and
> > > drm_fb_cma_fbdev_init_with_funcs(). These functions relies on the fact
> > > that the drm_fb_helper struct is stored in dev->drm_fb_helper_private
> > > so drivers don't need to store it.
> > >
> > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > ---
> > >
> > > Changes since version 1:
> > > - Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
> > >
> > > drivers/gpu/drm/drm_fb_cma_helper.c | 119
> > > +++++++++++++++++++++++++++++++++++-
> > > include/drm/drm_fb_cma_helper.h | 7 +++
> > > 2 files changed, 123 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c
> > > b/drivers/gpu/drm/drm_fb_cma_helper.c
> > > index 35b56dfba929..186d00adfb5f 100644
> > > --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> > > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> > > @@ -23,6 +23,7 @@
> > > #include <drm/drm_gem_cma_helper.h>
> > > #include <drm/drm_gem_framebuffer_helper.h>
> > > #include <drm/drm_fb_cma_helper.h>
> > > +#include <drm/drm_print.h>
> > > #include <linux/module.h>
> > > #define DEFAULT_FBDEFIO_DELAY_MS 50
> > > @@ -42,7 +43,7 @@ struct drm_fbdev_cma {
> > > * callback function to create a cma backed framebuffer.
> > > *
> > > * An fbdev framebuffer backed by cma is also available by calling
> > > - * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down.
> > > + * drm_fb_cma_fbdev_init(). drm_fb_cma_fbdev_fini() tears it down.
> > > * If the &drm_framebuffer_funcs.dirty callback is set,
> > > fb_deferred_io will be
> > > * set up automatically. &drm_framebuffer_funcs.dirty is called by
> > > * drm_fb_helper_deferred_io() in process context (&struct
> > > delayed_work).
> > > @@ -68,7 +69,7 @@ struct drm_fbdev_cma {
> > > *
> > > * Initialize::
> > > *
> > > - * fbdev = drm_fbdev_cma_init_with_funcs(dev, 16,
> > > + * fbdev = drm_fb_cma_fbdev_init_with_funcs(dev, 16,
> > > * dev->mode_config.num_crtc,
> > > * dev->mode_config.num_connector,
> > > * &driver_fb_funcs);
> > > @@ -256,7 +257,7 @@ drm_fbdev_cma_create(struct drm_fb_helper *helper,
> > > fbi->screen_size = size;
> > > fbi->fix.smem_len = size;
> > > - if (fbdev_cma->fb_funcs->dirty) {
> > > + if (fb->funcs->dirty) {
> > > ret = drm_fbdev_cma_defio_init(fbi, obj);
> > > if (ret)
> > > goto err_cma_destroy;
> > > @@ -277,6 +278,118 @@ static const struct drm_fb_helper_funcs
> > > drm_fb_cma_helper_funcs = {
> > > .fb_probe = drm_fbdev_cma_create,
> > > };
> > > +/**
> > > + * drm_fb_cma_fbdev_init_with_funcs() - Allocate and initialize
> > > fbdev emulation
> > > + * @dev: DRM device
> > > + * @preferred_bpp: Preferred bits per pixel for the device.
> > > + * @dev->mode_config.preferred_depth is used if
> > > this is zero.
> > > + * @max_conn_count: Maximum number of connectors.
> > > + * @dev->mode_config.num_connector is used if this
> > > is zero.
> > > + * @funcs: Framebuffer functions, in particular a custom dirty()
> > > callback.
> > > + * Can be NULL.
> > > + *
> > > + * Returns:
> > > + * Zero on success or negative error code on failure.
> > > + */
> > > +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
> > > + unsigned int preferred_bpp, unsigned int max_conn_count,
> > > + const struct drm_framebuffer_funcs *funcs)
> > > +{
> > > + struct drm_fbdev_cma *fbdev_cma;
> > > + struct drm_fb_helper *fb_helper;
> > > + int ret;
> > > +
> > > + if (!preferred_bpp)
> > > + preferred_bpp = dev->mode_config.preferred_depth;
> > > + if (!preferred_bpp)
> > > + preferred_bpp = 32;
> > > +
> > > + if (!max_conn_count)
> > > + max_conn_count = dev->mode_config.num_connector;
> > > +
> > > + fbdev_cma = kzalloc(sizeof(*fbdev_cma), GFP_KERNEL);
> > > + if (!fbdev_cma)
> > > + return -ENOMEM;
> > > +
> > > + fbdev_cma->fb_funcs = funcs;
> > > + fb_helper = &fbdev_cma->fb_helper;
> > > +
> > > + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_cma_helper_funcs);
> > > +
> > > + ret = drm_fb_helper_init(dev, fb_helper, max_conn_count);
> > > + if (ret < 0) {
> > > + DRM_DEV_ERROR(dev->dev, "Failed to initialize fbdev
> > > helper.\n");
> > > + goto err_free;
> > > + }
> > > +
> > > + ret = drm_fb_helper_single_add_all_connectors(fb_helper);
> > > + if (ret < 0) {
> > > + DRM_DEV_ERROR(dev->dev, "Failed to add connectors.\n");
> > > + goto err_drm_fb_helper_fini;
> > > + }
> > > +
> > > + ret = drm_fb_helper_initial_config(fb_helper, preferred_bpp);
> > > + if (ret < 0) {
> > > + DRM_DEV_ERROR(dev->dev, "Failed to set fbdev
> > > configuration.\n");
> > > + goto err_drm_fb_helper_fini;
> > > + }
> > > +
> > > + return 0;
> > > +
> > > +err_drm_fb_helper_fini:
> > > + drm_fb_helper_fini(fb_helper);
> > > +err_free:
> > > + kfree(fbdev_cma);
> > > +
> > > + return ret;
> > > +}
> > > +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init_with_funcs);
> > > +
> > > +/**
> > > + * drm_fb_cma_fbdev_init() - Allocate and initialize fbdev emulation
> > > + * @dev: DRM device
> > > + * @preferred_bpp: Preferred bits per pixel for the device.
> > > + * @dev->mode_config.preferred_depth is used if
> > > this is zero.
> > > + * @max_conn_count: Maximum number of connectors.
> > > + * @dev->mode_config.num_connector is used if this
> > > is zero.
> > > + *
> > > + * Returns:
> > > + * Zero on success or negative error code on failure.
> > > + */
> > > +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int
> > > preferred_bpp,
> > > + unsigned int max_conn_count)
> > > +{
> > > + return drm_fb_cma_fbdev_init_with_funcs(dev, preferred_bpp,
> > > + max_conn_count, NULL);
> > > +}
> > > +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_init);
> > > +
> > > +/**
> > > + * drm_fb_cma_fbdev_fini() - Teardown fbdev emulation
> > > + * @dev: DRM device
> > > + */
> > > +void drm_fb_cma_fbdev_fini(struct drm_device *dev)
> > > +{
> > > + struct drm_fb_helper *fb_helper = dev->fb_helper;
> > > +
> > > + if (!fb_helper)
> > > + return;
> > > +
> > > + /* Unregister if it hasn't been done already */
> > > + if (fb_helper->fbdev && fb_helper->fbdev->dev)
> > > + drm_fb_helper_unregister_fbi(fb_helper);
> > > +
> > > + if (fb_helper->fbdev)
> > > + drm_fbdev_cma_defio_fini(fb_helper->fbdev);
> > > +
> > > + if (fb_helper->fb)
> > > + drm_framebuffer_remove(fb_helper->fb);
> > > +
> > > + drm_fb_helper_fini(fb_helper);
> > > + kfree(to_fbdev_cma(fb_helper));
> > > +}
> > > +EXPORT_SYMBOL_GPL(drm_fb_cma_fbdev_fini);
> > > +
> > > /**
> > > * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a
> > > drm_fbdev_cma struct
> > > * @dev: DRM device
> > > diff --git a/include/drm/drm_fb_cma_helper.h
> > > b/include/drm/drm_fb_cma_helper.h
> > > index a613ff022e6c..4fb2d5563420 100644
> > > --- a/include/drm/drm_fb_cma_helper.h
> > > +++ b/include/drm/drm_fb_cma_helper.h
> > > @@ -15,6 +15,13 @@ struct drm_mode_fb_cmd2;
> > > struct drm_plane;
> > > struct drm_plane_state;
> > > +int drm_fb_cma_fbdev_init_with_funcs(struct drm_device *dev,
> > > + unsigned int preferred_bpp, unsigned int max_conn_count,
> > > + const struct drm_framebuffer_funcs *funcs);
> > > +int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int
> > > preferred_bpp,
> > > + unsigned int max_conn_count);
> > > +void drm_fb_cma_fbdev_fini(struct drm_device *dev);
> > > +
> > > struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct
> > > drm_device *dev,
> > > unsigned int preferred_bpp, unsigned int max_conn_count,
> > > const struct drm_framebuffer_funcs *funcs);
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> >
>
--
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] 38+ messages in thread
* Re: [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
` (22 preceding siblings ...)
2017-11-16 8:14 ` [PATCH v2 00/22] " Shawn Guo
@ 2017-12-08 13:59 ` Noralf Trønnes
23 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2017-12-08 13:59 UTC (permalink / raw)
To: dri-devel
Cc: narmstrong, liviu.dudau, laurent.pinchart, marex,
boris.brezillon, abrodkin, z.liuxinliang, kong.kongxinwei,
tomi.valkeinen, david, puck.chen, jsarha, vincent.abriou,
alison.wang, philippe.cornu, yannick.fertre, zourongrong,
maxime.ripard, shawnguo
Den 15.11.2017 15.19, skrev Noralf Trønnes:
> This patchset adds drm_fb_cma_fbdev_init/fini() functions that replaces
> drm_fbdev_cma_init/fini(). The reason for doing so is to get rid of
> struct drm_fbdev_cma and it's wrapper functions. The final piece will
> happen when tinydrm moves away from the cma helper and we can remove the
> struct.
The following has been applied to drm-misc-next.
I will resend a rebased version for the rest.
Thanks for reviewing.
Noralf.
[v2,01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional
[v2,02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
[v2,05/22] drm/atmel-hlcdc: Use drm_fb_cma_fbdev_init/fini()
[v2,07/22] drm/imx: Use drm_fb_cma_fbdev_init/fini()
[v2,10/22] drm/pl111: Use drm_fb_cma_fbdev_init/fini()
[v2,12/22] drm/sti: Use drm_fb_cma_fbdev_init/fini()
[v2,13/22] drm/stm: Use drm_fb_cma_fbdev_init/fini()
[v2,14/22] drm/sun4i: Use drm_fb_cma_fbdev_init/fini()
[v2,15/22] drm/tilcdc: Use drm_fb_cma_fbdev_init/fini()
[v2,16/22] drm/tve200: Use drm_fb_cma_fbdev_init/fini()
[v2,17/22] drm/vc4: Use drm_fb_cma_fbdev_init/fini()
[v2,18/22] drm/zte: Use drm_fb_cma_fbdev_init/fini()
[v2,19/22] drm/arm/mali: Use drm_fb_cma_fbdev_init/fini()
> Note:
> Patches 19-22 depends on patchset:
> [v3] drm: Add simple modeset suspend/resume helpers
>
> Noralf.
>
> Changes since version 1:
> - Fix NULL pointer dereference in drm_fbdev_cma_create() (Benjamin)
> - sti: Remove unused private variable (Benjamin)
> - stm: Remove duplicate ldev assignment (Philippe)
> - tilcdc: Rebase on: 'drm/tilcdc: Use drm_gem_cma_print_info()'
>
> Noralf Trønnes (22):
> drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional
> drm/cma-helper: Add drm_fb_cma_fbdev_init/fini()
> drm/arc: Use drm_fb_cma_fbdev_init/fini()
> drm/arm/hdlcd: Use drm_fb_cma_fbdev_init/fini()
> drm/atmel-hlcdc: Use drm_fb_cma_fbdev_init/fini()
> drm/hisilicon/kirin: Use drm_fb_cma_fbdev_init/fini()
> drm/imx: Use drm_fb_cma_fbdev_init/fini()
> drm/meson: Use drm_fb_cma_fbdev_init/fini()
> drm/mxsfb: Use drm_fb_cma_fbdev_init/fini()
> drm/pl111: Use drm_fb_cma_fbdev_init/fini()
> drm/rcar-du: Use drm_fb_cma_fbdev_init/fini()
> drm/sti: Use drm_fb_cma_fbdev_init/fini()
> drm/stm: Use drm_fb_cma_fbdev_init/fini()
> drm/sun4i: Use drm_fb_cma_fbdev_init/fini()
> drm/tilcdc: Use drm_fb_cma_fbdev_init/fini()
> drm/tve200: Use drm_fb_cma_fbdev_init/fini()
> drm/vc4: Use drm_fb_cma_fbdev_init/fini()
> drm/zte: Use drm_fb_cma_fbdev_init/fini()
> drm/arm/mali: Use drm_fb_cma_fbdev_init/fini()
> drm/fsl-dcu: Use drm_fb_cma_fbdev_init/fini()
> drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini()
> drm/cma-helper: Remove drm_fbdev_cma* functions
>
> Documentation/gpu/todo.rst | 5 -
> drivers/gpu/drm/arc/arcpgu.h | 4 -
> drivers/gpu/drm/arc/arcpgu_drv.c | 36 +----
> drivers/gpu/drm/arm/hdlcd_drv.c | 37 +----
> drivers/gpu/drm/arm/hdlcd_drv.h | 1 -
> drivers/gpu/drm/arm/malidp_drv.c | 39 +----
> drivers/gpu/drm/arm/malidp_drv.h | 1 -
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 26 +---
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 2 +-
> drivers/gpu/drm/drm_fb_cma_helper.c | 191 +++++++++---------------
> drivers/gpu/drm/drm_gem_framebuffer_helper.c | 6 +-
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 +---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 1 -
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 35 +----
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 4 -
> drivers/gpu/drm/imx/imx-drm-core.c | 33 +---
> drivers/gpu/drm/imx/imx-drm.h | 1 -
> drivers/gpu/drm/meson/meson_drv.c | 20 +--
> drivers/gpu/drm/meson/meson_drv.h | 1 -
> drivers/gpu/drm/mxsfb/mxsfb_drv.c | 21 +--
> drivers/gpu/drm/mxsfb/mxsfb_drv.h | 1 -
> drivers/gpu/drm/pl111/pl111_drm.h | 1 -
> drivers/gpu/drm/pl111/pl111_drv.c | 16 +-
> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 13 +-
> drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 -
> drivers/gpu/drm/rcar-du/rcar_du_kms.c | 20 +--
> drivers/gpu/drm/sti/sti_drv.c | 27 +---
> drivers/gpu/drm/sti/sti_drv.h | 1 -
> drivers/gpu/drm/stm/drv.c | 38 +----
> drivers/gpu/drm/stm/ltdc.h | 1 -
> drivers/gpu/drm/sun4i/sun4i_drv.c | 14 +-
> drivers/gpu/drm/sun4i/sun4i_drv.h | 2 -
> drivers/gpu/drm/sun4i/sun4i_framebuffer.c | 18 +--
> drivers/gpu/drm/sun4i/sun4i_framebuffer.h | 2 +-
> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 26 +---
> drivers/gpu/drm/tilcdc/tilcdc_drv.h | 2 -
> drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 37 +----
> drivers/gpu/drm/tinydrm/mi0283qt.c | 3 +-
> drivers/gpu/drm/tinydrm/st7586.c | 3 +-
> drivers/gpu/drm/tve200/tve200_drm.h | 1 -
> drivers/gpu/drm/tve200/tve200_drv.c | 16 +-
> drivers/gpu/drm/vc4/vc4_drv.c | 13 +-
> drivers/gpu/drm/vc4/vc4_drv.h | 2 -
> drivers/gpu/drm/vc4/vc4_kms.c | 18 +--
> drivers/gpu/drm/zte/zx_drm_drv.c | 48 +-----
> include/drm/drm_fb_cma_helper.h | 29 +---
> include/drm/tinydrm/tinydrm.h | 3 -
> 47 files changed, 198 insertions(+), 649 deletions(-)
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini()
2017-11-15 14:19 ` [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini() Noralf Trønnes
2017-11-21 16:49 ` Alexey Brodkin
@ 2018-09-27 8:49 ` Alexey Brodkin
2018-09-27 12:33 ` Noralf Trønnes
1 sibling, 1 reply; 38+ messages in thread
From: Alexey Brodkin @ 2018-09-27 8:49 UTC (permalink / raw)
To: stefan, noralf
Cc: narmstrong, Alexey.Brodkin, liviu.dudau, dri-devel,
laurent.pinchart, marex, boris.brezillon, z.liuxinliang,
kong.kongxinwei, tomi.valkeinen, david, puck.chen, jsarha,
vincent.abriou, alison.wang, philippe.cornu, yannick
Hi Noralf,
On Wed, 2017-11-15 at 15:19 +0100, Noralf Trønnes wrote:
> Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
> the fact that drm_device holds a pointer to the drm_fb_helper structure.
> This means that the driver doesn't have to keep track of that.
> Also use the drm_fb_helper functions directly.
> Remove unused function prototype arcpgu_fbdev_cma_init().
>
> Cc: Alexey Brodkin <abrodkin@synopsys.com>
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Similarly to drm/fsl-dcu driver this one never made it upstream.
I was under impression that entire series will be either accepted or not
but looks like fixes for separate drivers were pulled via separate trees.
Anyways I like this patch for ARC PGU and may confirm it works
perfectly fine on top of 4.18.10 so should I pull this into my tree and
send a pull-request to David or maybe all not yet accepted patches from the
series may go through the same tree?
-Alexey
And essentially...
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini()
2018-09-27 8:49 ` Alexey Brodkin
@ 2018-09-27 12:33 ` Noralf Trønnes
0 siblings, 0 replies; 38+ messages in thread
From: Noralf Trønnes @ 2018-09-27 12:33 UTC (permalink / raw)
To: Alexey Brodkin, stefan
Cc: narmstrong, liviu.dudau, dri-devel, laurent.pinchart, marex,
boris.brezillon, z.liuxinliang, kong.kongxinwei, tomi.valkeinen,
david, puck.chen, jsarha, vincent.abriou, alison.wang,
philippe.cornu, yannick.fertre, zourongrong
Den 27.09.2018 10.49, skrev Alexey Brodkin:
> Hi Noralf,
>
> On Wed, 2017-11-15 at 15:19 +0100, Noralf Trønnes wrote:
>> Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
>> the fact that drm_device holds a pointer to the drm_fb_helper structure.
>> This means that the driver doesn't have to keep track of that.
>> Also use the drm_fb_helper functions directly.
>> Remove unused function prototype arcpgu_fbdev_cma_init().
>>
>> Cc: Alexey Brodkin <abrodkin@synopsys.com>
>> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> Similarly to drm/fsl-dcu driver this one never made it upstream.
> I was under impression that entire series will be either accepted or not
> but looks like fixes for separate drivers were pulled via separate trees.
>
> Anyways I like this patch for ARC PGU and may confirm it works
> perfectly fine on top of 4.18.10 so should I pull this into my tree and
> send a pull-request to David or maybe all not yet accepted patches from the
> series may go through the same tree?
>
> -Alexey
>
> And essentially...
> Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
>
It has been superseeded by this patch:
[02/20] drm/arc: Use drm_fbdev_generic_setup()
https://patchwork.freedesktop.org/patch/247862/
I'll reply to the cover letter of this series that it has been superseeded
and why.
Wrt to applying, I only do that if I get an ack from the driver maintainer
or a DRM maintainer for trivial stuff.
Some reply that they have applied/queued the patch in their tree for the
next version.
Noralf.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 38+ messages in thread
end of thread, other threads:[~2018-09-27 12:33 UTC | newest]
Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-15 14:19 [PATCH v2 00/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 01/22] drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 02/22] drm/cma-helper: Add drm_fb_cma_fbdev_init/fini() Noralf Trønnes
2017-11-30 17:38 ` Noralf Trønnes
2017-12-07 13:09 ` Noralf Trønnes
2017-12-07 14:55 ` Daniel Vetter
2017-11-15 14:19 ` [PATCH v2 03/22] drm/arc: Use drm_fb_cma_fbdev_init/fini() Noralf Trønnes
2017-11-21 16:49 ` Alexey Brodkin
2018-09-27 8:49 ` Alexey Brodkin
2018-09-27 12:33 ` Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 04/22] drm/arm/hdlcd: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 05/22] drm/atmel-hlcdc: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 06/22] drm/hisilicon/kirin: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 07/22] drm/imx: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 08/22] drm/meson: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 09/22] drm/mxsfb: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 10/22] drm/pl111: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 11/22] drm/rcar-du: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 12/22] drm/sti: " Noralf Trønnes
2017-11-15 15:01 ` Benjamin Gaignard
2017-11-15 14:19 ` [PATCH v2 13/22] drm/stm: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 14/22] drm/sun4i: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 15/22] drm/tilcdc: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 16/22] drm/tve200: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 17/22] drm/vc4: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 18/22] drm/zte: " Noralf Trønnes
2017-11-17 13:46 ` Shawn Guo
2017-11-15 14:19 ` [PATCH v2 19/22] drm/arm/mali: " Noralf Trønnes
2017-11-15 14:19 ` [PATCH v2 20/22] drm/fsl-dcu: " Noralf Trønnes
2017-11-15 14:20 ` [PATCH v2 21/22] drm/tinydrm: Use drm_fb_cma_fbdev_init_with_funcs/fini() Noralf Trønnes
2017-11-15 14:20 ` [PATCH v2 22/22] drm/cma-helper: Remove drm_fbdev_cma* functions Noralf Trønnes
2017-11-16 8:14 ` [PATCH v2 00/22] " Shawn Guo
2017-11-16 20:11 ` Noralf Trønnes
2017-11-17 9:10 ` Alexey Brodkin
2017-11-17 11:12 ` Noralf Trønnes
2017-11-20 23:52 ` Noralf Trønnes
2017-11-21 16:47 ` Alexey Brodkin
2017-12-08 13:59 ` Noralf Trønnes
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.