diff options
author | He Yangxuan <yangxuan8282@gmail.com> | 2018-12-12 04:18:06 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2018-12-20 14:35:09 +0000 |
commit | 468ce5d3db5bea1bfc4d0b21ce0460bbc508c0ff (patch) | |
tree | eed21d01ea548aec8278a37ccf3a67357c56ed13 /testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch | |
parent | 27ddcaeab2051aaf617a81eeddfa34fb6557e64a (diff) | |
download | aports-468ce5d3db5bea1bfc4d0b21ce0460bbc508c0ff.tar.bz2 aports-468ce5d3db5bea1bfc4d0b21ce0460bbc508c0ff.tar.xz |
testing/linux-amlogic: upgrade to 4.19.8
Diffstat (limited to 'testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch')
-rw-r--r-- | testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch b/testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch new file mode 100644 index 0000000000..fc3511a111 --- /dev/null +++ b/testing/linux-amlogic/0009-drm-meson-Use-drm_fbdev_generic_setup.patch @@ -0,0 +1,100 @@ +From a753ec94679503680fcf86ffad3f3d3eb817c6b9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org> +Date: Sat, 8 Sep 2018 15:46:33 +0200 +Subject: [PATCH] drm/meson: Use drm_fbdev_generic_setup() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The CMA helper is already using the drm_fb_helper_generic_probe part of +the generic fbdev emulation. This patch makes full use of the generic +fbdev emulation by using its drm_client callbacks. This means that +drm_mode_config_funcs->output_poll_changed and drm_driver->lastclose are +now handled by the emulation code. Additionally fbdev unregister happens +automatically on drm_dev_unregister(). + +The drm_fbdev_generic_setup() call is put after drm_dev_register() in the +driver. This is done to highlight the fact that fbdev emulation is an +internal client that makes use of the driver, it is not part of the +driver as such. If fbdev setup fails, an error is printed, but the driver +succeeds probing. + +Cc: Neil Armstrong <narmstrong@baylibre.com> +Signed-off-by: Noralf Trønnes <noralf@tronnes.org> + +--- + drivers/gpu/drm/meson/meson_drv.c | 19 ++----------------- + drivers/gpu/drm/meson/meson_drv.h | 1 - + 2 files changed, 2 insertions(+), 18 deletions(-) + +diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c +index b55e03d..3997e3e 100644 +--- a/drivers/gpu/drm/meson/meson_drv.c ++++ b/drivers/gpu/drm/meson/meson_drv.c +@@ -69,15 +69,7 @@ + * - 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, + .atomic_check = drm_atomic_helper_check, + .atomic_commit = drm_atomic_helper_commit, + .fb_create = drm_gem_fb_create, +@@ -314,13 +306,6 @@ 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); +- goto free_drm; +- } +- + drm_kms_helper_poll_init(drm); + + platform_set_drvdata(pdev, priv); +@@ -329,6 +314,8 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) + if (ret) + goto free_drm; + ++ drm_fbdev_generic_setup(drm, 32); ++ + return 0; + + free_drm: +@@ -345,7 +332,6 @@ 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; + + if (priv->canvas) { + meson_canvas_free(priv->canvas, priv->canvas_id_osd1); +@@ -356,7 +342,6 @@ static void meson_drv_unbind(struct device *dev) + + drm_dev_unregister(drm); + drm_kms_helper_poll_fini(drm); +- drm_fbdev_cma_fini(priv->fbdev); + drm_mode_config_cleanup(drm); + drm_dev_put(drm); + +diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h +index a955354..4dccf4c 100644 +--- a/drivers/gpu/drm/meson/meson_drv.h ++++ b/drivers/gpu/drm/meson/meson_drv.h +@@ -40,7 +40,6 @@ struct meson_drm { + + struct drm_device *drm; + struct drm_crtc *crtc; +- struct drm_fbdev_cma *fbdev; + struct drm_plane *primary_plane; + struct drm_plane *overlay_plane; + |