All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xinliang Liu <xinliang.liu@linaro.org>
To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	daniel@ffwll.ch, robh@kernel.org, daniel@fooishbar.org,
	architt@codeaurora.org, airlied@linux.ie, corbet@lwn.net,
	catalin.marinas@arm.com, will.deacon@arm.com,
	emil.l.velikov@gmail.com, mark.rutland@arm.com
Cc: linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linuxarm@huawei.com, andy.green@linaro.org,
	haojian.zhuang@linaro.org, liguozhu@hisilicon.com,
	xuwei5@hisilicon.com, w.f@huawei.com, puck.chen@hisilicon.com,
	bintian.wang@huawei.com, benjamin.gaignard@linaro.org,
	xuyiping@hisilicon.com, kong.kongxinwei@hisilicon.com,
	zourongrong@huawei.com, lijianhua@huawei.com,
	sumit.semwal@linaro.org, guodong.xu@linaro.org,
	Xinliang Liu <xinliang.liu@linaro.org>
Subject: [PATCH v6 06/11] drm/hisilicon: Add cma fbdev and hotplug
Date: Fri, 26 Feb 2016 16:40:23 +0800	[thread overview]
Message-ID: <1456476028-36880-7-git-send-email-xinliang.liu@linaro.org> (raw)
In-Reply-To: <1456476028-36880-1-git-send-email-xinliang.liu@linaro.org>

Add cma Fbdev, Fbdev is legency and optional, you can enable/disable it by
configuring DRM_FBDEV_EMULATION.
Add hotplug.

v6: None.
v5: None.
v4: None.
v3: None.
v2:
- Use CONFIG_DRM_FBDEV_EMULATION instead of CONFIG_DRM_HISI_FBDEV.

Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
---
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 34 +++++++++++++++++++++++++
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h |  3 +++
 2 files changed, 37 insertions(+)

diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index 723888feb760..d57b9fa0ce3e 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -23,6 +23,7 @@
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_crtc_helper.h>
 
 #include "kirin_drm_drv.h"
 
@@ -32,6 +33,13 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev)
 {
 	struct kirin_drm_private *priv = dev->dev_private;
 
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	if (priv->fbdev) {
+		drm_fbdev_cma_fini(priv->fbdev);
+		priv->fbdev = NULL;
+	}
+#endif
+	drm_kms_helper_poll_fini(dev);
 	drm_vblank_cleanup(dev);
 	dc_ops->cleanup(dev);
 	drm_mode_config_cleanup(dev);
@@ -41,8 +49,28 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev)
 	return 0;
 }
 
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
+{
+	struct kirin_drm_private *priv = dev->dev_private;
+
+	if (priv->fbdev) {
+		drm_fbdev_cma_hotplug_event(priv->fbdev);
+	} else {
+		priv->fbdev = drm_fbdev_cma_init(dev, 32,
+				dev->mode_config.num_crtc,
+				dev->mode_config.num_connector);
+		if (IS_ERR(priv->fbdev))
+			priv->fbdev = NULL;
+	}
+}
+#endif
+
 static const struct drm_mode_config_funcs kirin_drm_mode_config_funcs = {
 	.fb_create = drm_fb_cma_create,
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	.output_poll_changed = kirin_fbdev_output_poll_changed,
+#endif
 	.atomic_check = drm_atomic_helper_check,
 	.atomic_commit = drm_atomic_helper_commit,
 };
@@ -98,6 +126,12 @@ static int kirin_drm_kms_init(struct drm_device *dev)
 	/* reset all the states of crtc/plane/encoder/connector */
 	drm_mode_config_reset(dev);
 
+	/* init kms poll for handling hpd */
+	drm_kms_helper_poll_init(dev);
+
+	/* force detection after connectors init */
+	(void)drm_helper_hpd_irq_event(dev);
+
 	return 0;
 
 err_unbind_all:
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index 5a05ad6a81db..1a07caf8e7f4 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -21,6 +21,9 @@ struct kirin_dc_ops {
 
 struct kirin_drm_private {
 	struct drm_crtc *crtc[MAX_CRTC];
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	struct drm_fbdev_cma *fbdev;
+#endif
 };
 
 extern const struct kirin_dc_ops ade_dc_ops;
-- 
2.7.1


WARNING: multiple messages have this Message-ID (diff)
From: xinliang.liu@linaro.org (Xinliang Liu)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 06/11] drm/hisilicon: Add cma fbdev and hotplug
Date: Fri, 26 Feb 2016 16:40:23 +0800	[thread overview]
Message-ID: <1456476028-36880-7-git-send-email-xinliang.liu@linaro.org> (raw)
In-Reply-To: <1456476028-36880-1-git-send-email-xinliang.liu@linaro.org>

Add cma Fbdev, Fbdev is legency and optional, you can enable/disable it by
configuring DRM_FBDEV_EMULATION.
Add hotplug.

v6: None.
v5: None.
v4: None.
v3: None.
v2:
- Use CONFIG_DRM_FBDEV_EMULATION instead of CONFIG_DRM_HISI_FBDEV.

Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
---
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 34 +++++++++++++++++++++++++
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h |  3 +++
 2 files changed, 37 insertions(+)

diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index 723888feb760..d57b9fa0ce3e 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -23,6 +23,7 @@
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_crtc_helper.h>
 
 #include "kirin_drm_drv.h"
 
@@ -32,6 +33,13 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev)
 {
 	struct kirin_drm_private *priv = dev->dev_private;
 
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	if (priv->fbdev) {
+		drm_fbdev_cma_fini(priv->fbdev);
+		priv->fbdev = NULL;
+	}
+#endif
+	drm_kms_helper_poll_fini(dev);
 	drm_vblank_cleanup(dev);
 	dc_ops->cleanup(dev);
 	drm_mode_config_cleanup(dev);
@@ -41,8 +49,28 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev)
 	return 0;
 }
 
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
+{
+	struct kirin_drm_private *priv = dev->dev_private;
+
+	if (priv->fbdev) {
+		drm_fbdev_cma_hotplug_event(priv->fbdev);
+	} else {
+		priv->fbdev = drm_fbdev_cma_init(dev, 32,
+				dev->mode_config.num_crtc,
+				dev->mode_config.num_connector);
+		if (IS_ERR(priv->fbdev))
+			priv->fbdev = NULL;
+	}
+}
+#endif
+
 static const struct drm_mode_config_funcs kirin_drm_mode_config_funcs = {
 	.fb_create = drm_fb_cma_create,
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	.output_poll_changed = kirin_fbdev_output_poll_changed,
+#endif
 	.atomic_check = drm_atomic_helper_check,
 	.atomic_commit = drm_atomic_helper_commit,
 };
@@ -98,6 +126,12 @@ static int kirin_drm_kms_init(struct drm_device *dev)
 	/* reset all the states of crtc/plane/encoder/connector */
 	drm_mode_config_reset(dev);
 
+	/* init kms poll for handling hpd */
+	drm_kms_helper_poll_init(dev);
+
+	/* force detection after connectors init */
+	(void)drm_helper_hpd_irq_event(dev);
+
 	return 0;
 
 err_unbind_all:
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
index 5a05ad6a81db..1a07caf8e7f4 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h
@@ -21,6 +21,9 @@ struct kirin_dc_ops {
 
 struct kirin_drm_private {
 	struct drm_crtc *crtc[MAX_CRTC];
+#ifdef CONFIG_DRM_FBDEV_EMULATION
+	struct drm_fbdev_cma *fbdev;
+#endif
 };
 
 extern const struct kirin_dc_ops ade_dc_ops;
-- 
2.7.1

  parent reply	other threads:[~2016-02-26  8:40 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-26  8:40 [PATCH v6 00/11] Add DRM Driver for HiSilicon Kirin hi6220 SoC Xinliang Liu
2016-02-26  8:40 ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 01/11] drm/hisilicon: Add device tree binding for hi6220 display subsystem Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-03-02 18:29   ` Rob Herring
2016-03-02 18:29     ` Rob Herring
2016-03-03  1:28     ` Xinliang Liu
2016-03-03  1:28       ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 02/11] drm/hisilicon: Add hisilicon kirin drm master driver Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-26  8:54   ` Archit Taneja
2016-02-26  8:54     ` Archit Taneja
2016-02-26  9:14     ` Xinliang Liu
2016-02-26  9:14       ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 03/11] drm/hisilicon: Add crtc driver for ADE Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-29 18:48   ` Archit Taneja
2016-02-29 18:48     ` Archit Taneja
2016-03-01  9:20     ` Xinliang Liu
2016-03-01  9:20       ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 04/11] drm/hisilicon: Add plane " Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-29 18:48   ` Archit Taneja
2016-02-29 18:48     ` Archit Taneja
     [not found]     ` <56D4926F.1090707-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-03-01  9:45       ` Xinliang Liu
2016-03-01  9:45         ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 05/11] drm/hisilicon: Add vblank " Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-29 18:48   ` Archit Taneja
2016-02-29 18:48     ` Archit Taneja
2016-03-01 10:14     ` Xinliang Liu
2016-03-01 10:14       ` Xinliang Liu
2016-03-01 12:40       ` Archit Taneja
2016-03-01 12:40         ` Archit Taneja
2016-03-03  7:52         ` Xinliang Liu
2016-03-03  7:52           ` Xinliang Liu
2016-02-26  8:40 ` Xinliang Liu [this message]
2016-02-26  8:40   ` [PATCH v6 06/11] drm/hisilicon: Add cma fbdev and hotplug Xinliang Liu
     [not found] ` <1456476028-36880-1-git-send-email-xinliang.liu-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-02-26  8:40   ` [PATCH v6 07/11] drm/hisilicon: Add designware dsi encoder driver Xinliang Liu
2016-02-26  8:40     ` Xinliang Liu
2016-02-29 18:49     ` Archit Taneja
2016-02-29 18:49       ` Archit Taneja
2016-03-01 10:33       ` Xinliang Liu
2016-03-01 10:33         ` Xinliang Liu
2016-03-01 12:45         ` Archit Taneja
2016-03-01 12:45           ` Archit Taneja
2016-03-02  9:49           ` Xinliang Liu
2016-03-02  9:49             ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 08/11] drm/hisilicon: Add designware dsi host driver Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-29 18:51   ` Archit Taneja
2016-02-29 18:51     ` Archit Taneja
2016-03-01 10:34     ` Xinliang Liu
2016-03-01 10:34       ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 09/11] drm/hisilicon: Add support for external bridge Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-29 18:53   ` Archit Taneja
2016-02-29 18:53     ` Archit Taneja
2016-03-01 10:34     ` Xinliang Liu
2016-03-01 10:34       ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 10/11] MAINTAINERS: Add maintainer for hisilicon DRM driver Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu
2016-02-26  8:40 ` [PATCH v6 11/11] arm64: dts: hisilicon: Add display subsystem DT nodes for hi6220 Xinliang Liu
2016-02-26  8:40   ` Xinliang Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456476028-36880-7-git-send-email-xinliang.liu@linaro.org \
    --to=xinliang.liu@linaro.org \
    --cc=airlied@linux.ie \
    --cc=andy.green@linaro.org \
    --cc=architt@codeaurora.org \
    --cc=benjamin.gaignard@linaro.org \
    --cc=bintian.wang@huawei.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=daniel@ffwll.ch \
    --cc=daniel@fooishbar.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=guodong.xu@linaro.org \
    --cc=haojian.zhuang@linaro.org \
    --cc=kong.kongxinwei@hisilicon.com \
    --cc=liguozhu@hisilicon.com \
    --cc=lijianhua@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=mark.rutland@arm.com \
    --cc=puck.chen@hisilicon.com \
    --cc=robh@kernel.org \
    --cc=sumit.semwal@linaro.org \
    --cc=w.f@huawei.com \
    --cc=will.deacon@arm.com \
    --cc=xuwei5@hisilicon.com \
    --cc=xuyiping@hisilicon.com \
    --cc=zourongrong@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.