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
next prev 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: linkBe 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.