From: Yakir Yang <ykk@rock-chips.com> To: Inki Dae <inki.dae@samsung.com>, Andrzej Hajda <a.hajda@samsung.com>, Joonyoung Shim <jy0922.shim@samsung.com>, Seung-Woo Kim <sw0312.kim@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Jingoo Han <jingoohan1@gmail.com>, Thierry Reding <treding@nvidia.com>, Krzysztof Kozlowski <k.kozlowski@samsung.com>, Rob Herring <robh+dt@kernel.org>, Heiko Stuebner <heiko@sntech.de>, Mark Yao <mark.yao@rock-chips.com> Cc: Russell King <linux@arm.linux.org.uk>, djkurtz@chromium.org, Sean Paul <seanpaul@chromium.org>, Kukjin Kim <kgene@kernel.org>, Kumar Gala <galak@codeaurora.org>, emil.l.velikov@gmail.com, Ian Campbell <ijc+devicetree@hellion.org.uk>, Gustavo Padovan <gustavo.padovan@collabora.co.uk>, Kishon Vijay Abraham I <kishon@ti.com>, Pawel Moll <pawel.moll@arm.com>, ajaynumb@gmail.com, robherring2@gmail.com, javier@osg.samsung.com, Andy Yan <andy.yan@rock-chips.com>, Yakir Yang <ykk@rock-chips.com>, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v14 14/17] drm: bridge: analogix/dp: move hpd detect to connector detect function Date: Mon, 15 Feb 2016 19:11:20 +0800 [thread overview] Message-ID: <1455534680-2112-1-git-send-email-ykk@rock-chips.com> (raw) In-Reply-To: <1455534485-1154-1-git-send-email-ykk@rock-chips.com> This change just make a little clean to make code more like drm core expect, move hdp detect code from bridge->enable(), and place them into connector->detect(). Note: Gustavo Padovan try to remove the controller and phy power on function in bind time at bellow commit: drm/exynos: do not start enabling DP at bind() phase But for now the connector status don't hardcode to connected, need to operate dp phy in .detect function, so we need to revert parts if Gustavo Padovan's changes, add phy poweron function in bind time. Signed-off-by: Yakir Yang <ykk@rock-chips.com> Tested-by: Javier Martinez Canillas <javier@osg.samsung.com> --- Changes in v14: None Changes in v13: None Changes in v12: None Changes in v11: - Revert parts of Gustavo Padovan's changes in commit: drm/exynos: do not start enabling DP at bind() phase Add dp phy poweron function in bind time. - Move the panel prepare from get_modes time to bind time, and move the panel unprepare from bridge->disable to unbind time. (Heiko) Changes in v10: None Changes in v9: None Changes in v8: None Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: - Take Jingoo suggest, add commit messages. Changes in v3: - move dp hpd detect to connector detect function. Changes in v2: None drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 13986b7..cfdf695 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -904,12 +904,6 @@ static void analogix_dp_commit(struct analogix_dp_device *dp) DRM_ERROR("failed to disable the panel\n"); } - ret = analogix_dp_detect_hpd(dp); - if (ret) { - /* Cable has been disconnected, we're done */ - return; - } - ret = analogix_dp_handle_edid(dp); if (ret) { dev_err(dp->dev, "unable to handle edid\n"); @@ -972,6 +966,11 @@ static const struct drm_connector_helper_funcs analogix_dp_connector_helper_func enum drm_connector_status analogix_dp_detect(struct drm_connector *connector, bool force) { + struct analogix_dp_device *dp = to_dp(connector); + + if (analogix_dp_detect_hpd(dp)) + return connector_status_disconnected; + return connector_status_connected; } @@ -1051,13 +1050,6 @@ static void analogix_dp_bridge_enable(struct drm_bridge *bridge) pm_runtime_get_sync(dp->dev); - if (dp->plat_data->panel) { - if (drm_panel_prepare(dp->plat_data->panel)) { - DRM_ERROR("failed to setup the panel\n"); - return; - } - } - if (dp->plat_data->power_on) dp->plat_data->power_on(dp->plat_data); @@ -1090,11 +1082,6 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge) if (dp->plat_data->power_off) dp->plat_data->power_off(dp->plat_data); - if (dp->plat_data->panel) { - if (drm_panel_unprepare(dp->plat_data->panel)) - DRM_ERROR("failed to turnoff the panel\n"); - } - pm_runtime_put_sync(dp->dev); dp->dpms_mode = DRM_MODE_DPMS_OFF; @@ -1352,6 +1339,15 @@ int analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, pm_runtime_enable(dev); + phy_power_on(dp->phy); + + if (dp->plat_data->panel) { + if (drm_panel_prepare(dp->plat_data->panel)) { + DRM_ERROR("failed to setup the panel\n"); + return -EBUSY; + } + } + ret = devm_request_irq(&pdev->dev, dp->irq, analogix_dp_irq_handler, irq_flags, "analogix-dp", dp); if (ret) { @@ -1385,6 +1381,12 @@ void analogix_dp_unbind(struct device *dev, struct device *master, struct analogix_dp_device *dp = dev_get_drvdata(dev); analogix_dp_bridge_disable(dp->bridge); + + if (dp->plat_data->panel) { + if (drm_panel_unprepare(dp->plat_data->panel)) + DRM_ERROR("failed to turnoff the panel\n"); + } + pm_runtime_disable(dev); } EXPORT_SYMBOL_GPL(analogix_dp_unbind); -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: ykk@rock-chips.com (Yakir Yang) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v14 14/17] drm: bridge: analogix/dp: move hpd detect to connector detect function Date: Mon, 15 Feb 2016 19:11:20 +0800 [thread overview] Message-ID: <1455534680-2112-1-git-send-email-ykk@rock-chips.com> (raw) In-Reply-To: <1455534485-1154-1-git-send-email-ykk@rock-chips.com> This change just make a little clean to make code more like drm core expect, move hdp detect code from bridge->enable(), and place them into connector->detect(). Note: Gustavo Padovan try to remove the controller and phy power on function in bind time at bellow commit: drm/exynos: do not start enabling DP at bind() phase But for now the connector status don't hardcode to connected, need to operate dp phy in .detect function, so we need to revert parts if Gustavo Padovan's changes, add phy poweron function in bind time. Signed-off-by: Yakir Yang <ykk@rock-chips.com> Tested-by: Javier Martinez Canillas <javier@osg.samsung.com> --- Changes in v14: None Changes in v13: None Changes in v12: None Changes in v11: - Revert parts of Gustavo Padovan's changes in commit: drm/exynos: do not start enabling DP at bind() phase Add dp phy poweron function in bind time. - Move the panel prepare from get_modes time to bind time, and move the panel unprepare from bridge->disable to unbind time. (Heiko) Changes in v10: None Changes in v9: None Changes in v8: None Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: - Take Jingoo suggest, add commit messages. Changes in v3: - move dp hpd detect to connector detect function. Changes in v2: None drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 13986b7..cfdf695 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -904,12 +904,6 @@ static void analogix_dp_commit(struct analogix_dp_device *dp) DRM_ERROR("failed to disable the panel\n"); } - ret = analogix_dp_detect_hpd(dp); - if (ret) { - /* Cable has been disconnected, we're done */ - return; - } - ret = analogix_dp_handle_edid(dp); if (ret) { dev_err(dp->dev, "unable to handle edid\n"); @@ -972,6 +966,11 @@ static const struct drm_connector_helper_funcs analogix_dp_connector_helper_func enum drm_connector_status analogix_dp_detect(struct drm_connector *connector, bool force) { + struct analogix_dp_device *dp = to_dp(connector); + + if (analogix_dp_detect_hpd(dp)) + return connector_status_disconnected; + return connector_status_connected; } @@ -1051,13 +1050,6 @@ static void analogix_dp_bridge_enable(struct drm_bridge *bridge) pm_runtime_get_sync(dp->dev); - if (dp->plat_data->panel) { - if (drm_panel_prepare(dp->plat_data->panel)) { - DRM_ERROR("failed to setup the panel\n"); - return; - } - } - if (dp->plat_data->power_on) dp->plat_data->power_on(dp->plat_data); @@ -1090,11 +1082,6 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge) if (dp->plat_data->power_off) dp->plat_data->power_off(dp->plat_data); - if (dp->plat_data->panel) { - if (drm_panel_unprepare(dp->plat_data->panel)) - DRM_ERROR("failed to turnoff the panel\n"); - } - pm_runtime_put_sync(dp->dev); dp->dpms_mode = DRM_MODE_DPMS_OFF; @@ -1352,6 +1339,15 @@ int analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, pm_runtime_enable(dev); + phy_power_on(dp->phy); + + if (dp->plat_data->panel) { + if (drm_panel_prepare(dp->plat_data->panel)) { + DRM_ERROR("failed to setup the panel\n"); + return -EBUSY; + } + } + ret = devm_request_irq(&pdev->dev, dp->irq, analogix_dp_irq_handler, irq_flags, "analogix-dp", dp); if (ret) { @@ -1385,6 +1381,12 @@ void analogix_dp_unbind(struct device *dev, struct device *master, struct analogix_dp_device *dp = dev_get_drvdata(dev); analogix_dp_bridge_disable(dp->bridge); + + if (dp->plat_data->panel) { + if (drm_panel_unprepare(dp->plat_data->panel)) + DRM_ERROR("failed to turnoff the panel\n"); + } + pm_runtime_disable(dev); } EXPORT_SYMBOL_GPL(analogix_dp_unbind); -- 1.9.1
next prev parent reply other threads:[~2016-02-15 11:11 UTC|newest] Thread overview: 157+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-02-15 11:08 [PATCH v14 0/17] Add Analogix Core Display Port Driver Yakir Yang 2016-02-15 11:08 ` Yakir Yang 2016-02-15 11:09 ` [PATCH v14 01/17] drm: bridge: analogix/dp: split exynos dp driver to bridge directory Yakir Yang 2016-02-15 11:09 ` Yakir Yang 2016-03-17 21:47 ` [PATCH v14.1 " Heiko Stübner 2016-03-17 21:47 ` Heiko Stübner 2016-03-18 7:01 ` Caesar Wang 2016-03-18 7:01 ` Caesar Wang 2016-06-07 17:06 ` Javier Martinez Canillas 2016-06-07 17:06 ` Javier Martinez Canillas 2016-06-07 17:06 ` Javier Martinez Canillas 2016-06-08 1:28 ` Yakir Yang 2016-06-08 1:28 ` Yakir Yang 2016-06-08 1:28 ` Yakir Yang 2016-06-08 7:44 ` Marc Zyngier 2016-06-08 7:44 ` Marc Zyngier 2016-06-08 7:44 ` Marc Zyngier 2016-06-08 10:53 ` Yakir Yang 2016-06-08 10:53 ` Yakir Yang 2016-06-08 10:53 ` Yakir Yang 2016-06-08 14:19 ` Javier Martinez Canillas 2016-06-08 14:19 ` Javier Martinez Canillas 2016-06-08 14:19 ` Javier Martinez Canillas 2016-03-30 20:32 ` [v14, " Guenter Roeck 2016-03-30 20:32 ` Guenter Roeck 2016-03-30 20:32 ` Guenter Roeck 2016-03-31 9:56 ` Thierry Reding 2016-03-31 9:56 ` Thierry Reding 2016-03-31 9:56 ` Thierry Reding 2016-03-31 16:02 ` Doug Anderson 2016-03-31 16:02 ` Doug Anderson 2016-03-31 16:02 ` Doug Anderson 2016-04-05 2:15 ` Yakir Yang 2016-04-05 2:15 ` Yakir Yang 2016-04-05 2:15 ` Yakir Yang 2016-03-31 15:57 ` Doug Anderson 2016-03-31 15:57 ` Doug Anderson 2016-03-31 15:57 ` Doug Anderson 2016-04-05 1:49 ` Yakir Yang 2016-04-05 1:49 ` Yakir Yang 2016-04-05 1:49 ` Yakir Yang 2016-02-15 11:09 ` [PATCH v14 02/17] drm/exynos: dp: rename implementation specific driver part Yakir Yang 2016-02-15 11:09 ` Yakir Yang 2016-02-15 11:09 ` [PATCH v14 03/17] drm: bridge: analogix/dp: rename register constants Yakir Yang 2016-02-15 11:09 ` Yakir Yang 2016-02-15 11:09 ` [PATCH v14 04/17] drm: bridge: analogix/dp: fix some obvious code style Yakir Yang 2016-02-15 11:09 ` Yakir Yang 2016-02-15 11:09 ` Yakir Yang 2016-03-17 21:48 ` Heiko Stübner 2016-03-17 21:48 ` Heiko Stübner 2016-03-17 21:48 ` Heiko Stübner 2016-03-17 21:50 ` [PATCH v14.1 " Heiko Stübner 2016-03-17 21:50 ` Heiko Stübner 2016-03-17 21:50 ` Heiko Stübner 2016-02-15 11:10 ` [PATCH v14 05/17] drm: bridge: analogix/dp: remove duplicate configuration of link rate and link count Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-02-15 11:10 ` [PATCH v14 06/17] drm: bridge: analogix/dp: dynamic parse sync_pol & interlace & dynamic_range Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-02-15 11:10 ` [PATCH v14 07/17] dt-bindings: add document for analogix display port driver Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-02-15 11:10 ` [PATCH v14 08/17] ARM: dts: exynos/dp: remove some properties that deprecated by analogix_dp driver Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-02-15 11:10 ` [PATCH v14 09/17] drm: rockchip: dp: add rockchip platform dp driver Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-03-17 21:51 ` [PATCH v14.1 " Heiko Stübner 2016-03-17 21:51 ` Heiko Stübner 2016-03-17 21:51 ` Heiko Stübner 2016-03-18 6:45 ` Caesar Wang 2016-03-18 6:45 ` Caesar Wang 2016-03-18 6:45 ` Caesar Wang 2016-03-23 1:08 ` [PATCH v14 " Mark yao 2016-03-23 1:08 ` Mark yao 2016-03-23 1:08 ` Mark yao 2016-02-15 11:10 ` [PATCH v14 10/17] dt-bindings: add document for rockchip variant of analogix_dp Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-02-15 11:10 ` [PATCH v14 11/17] drm: bridge: analogix/dp: add some rk3288 special registers setting Yakir Yang 2016-02-15 11:10 ` Yakir Yang 2016-03-18 6:56 ` Caesar Wang 2016-03-18 6:56 ` Caesar Wang 2016-03-18 6:56 ` Caesar Wang 2016-02-15 11:11 ` [PATCH v14 12/17] drm: bridge: analogix/dp: add max link rate and lane count limit for RK3288 Yakir Yang 2016-02-15 11:11 ` Yakir Yang 2016-02-15 11:11 ` [PATCH v14 13/17] drm: bridge: analogix/dp: try force hpd after plug in lookup failed Yakir Yang 2016-02-15 11:11 ` Yakir Yang 2016-02-15 11:11 ` Yakir Yang [this message] 2016-02-15 11:11 ` [PATCH v14 14/17] drm: bridge: analogix/dp: move hpd detect to connector detect function Yakir Yang 2016-02-15 11:11 ` [PATCH v14 15/17] drm: bridge: analogix/dp: add edid modes parse in get_modes method Yakir Yang 2016-02-15 11:11 ` Yakir Yang 2016-02-15 11:11 ` [PATCH v14 16/17] drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time Yakir Yang 2016-02-15 11:11 ` Yakir Yang 2016-02-15 11:11 ` [PATCH v14 17/17] drm: bridge: analogix/dp: Fix the possible dead lock in bridge disable time Yakir Yang 2016-02-15 11:11 ` Yakir Yang 2016-03-18 6:41 ` [PATCH v14 0/17] Add Analogix Core Display Port Driver Caesar Wang 2016-03-18 6:41 ` Caesar Wang 2016-03-18 6:41 ` Caesar Wang 2016-03-18 22:53 ` Doug Anderson 2016-03-18 22:53 ` Doug Anderson 2016-03-18 22:53 ` Doug Anderson 2016-03-22 19:19 ` Javier Martinez Canillas 2016-03-22 19:19 ` Javier Martinez Canillas 2016-03-22 19:19 ` Javier Martinez Canillas 2016-03-22 22:12 ` Who is going to merge it [Was: Re: [PATCH v14 0/17] Add Analogix Core Display Port Driver] Heiko Stübner 2016-03-22 22:12 ` Heiko Stübner 2016-03-22 22:12 ` Heiko Stübner 2016-03-22 22:44 ` Inki Dae 2016-03-22 22:44 ` Inki Dae 2016-03-22 22:44 ` Inki Dae 2016-03-22 22:52 ` Heiko Stübner 2016-03-22 22:52 ` Heiko Stübner 2016-03-22 22:52 ` Heiko Stübner 2016-03-22 23:09 ` Inki Dae 2016-03-22 23:09 ` Inki Dae 2016-03-22 23:09 ` Inki Dae 2016-03-22 23:39 ` Russell King - ARM Linux 2016-03-22 23:39 ` Russell King - ARM Linux 2016-03-22 23:39 ` Russell King - ARM Linux 2016-03-22 23:54 ` Inki Dae 2016-03-22 23:54 ` Inki Dae 2016-03-22 23:54 ` Inki Dae 2016-03-23 0:08 ` Russell King - ARM Linux 2016-03-23 0:08 ` Russell King - ARM Linux 2016-03-23 0:08 ` Russell King - ARM Linux 2016-03-23 0:41 ` Dave Airlie 2016-03-23 0:41 ` Dave Airlie 2016-03-23 0:41 ` Dave Airlie 2016-03-23 1:08 ` Mark yao 2016-03-23 1:08 ` Mark yao 2016-03-23 1:08 ` Mark yao 2016-03-23 15:49 ` Thierry Reding 2016-03-23 15:49 ` Thierry Reding 2016-03-23 15:49 ` Thierry Reding 2016-03-24 11:10 ` Yakir Yang 2017-11-13 1:11 ` Yakir Yang 2016-03-24 11:10 ` Yakir Yang 2016-03-24 11:10 ` Yakir Yang 2016-03-24 11:10 ` Yakir Yang [not found] ` <CAPM=9tz9_rbGJFuv-+YN=Sicfng++tHTDLrOX5Ohtwft+VnwtA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-03-24 11:10 ` Yakir Yang 2016-03-24 11:11 ` Yakir Yang 2016-03-24 15:00 ` Yakir Yang 2016-03-24 13:01 ` [PATCH v14 0/17] Add Analogix Core Display Port Driver Heiko Stübner 2016-03-24 13:01 ` Heiko Stübner 2016-03-24 13:01 ` Heiko Stübner 2016-03-31 10:15 ` Daniel Vetter 2016-03-31 10:15 ` Daniel Vetter 2016-03-31 10:15 ` Daniel Vetter 2016-03-31 10:22 ` Thierry Reding 2016-03-31 10:22 ` Thierry Reding 2016-03-31 10:22 ` Thierry Reding 2016-04-05 2:06 ` Yakir Yang 2016-04-05 2:06 ` Yakir Yang 2016-04-05 2:06 ` Yakir Yang 2016-07-29 8:38 ` Tomeu Vizoso 2016-07-29 8:38 ` Tomeu Vizoso 2016-07-29 8:38 ` Tomeu Vizoso 2016-08-01 1:49 ` Yakir Yang 2016-08-01 1:49 ` Yakir Yang 2016-08-01 1:49 ` Yakir Yang
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=1455534680-2112-1-git-send-email-ykk@rock-chips.com \ --to=ykk@rock-chips.com \ --cc=a.hajda@samsung.com \ --cc=ajaynumb@gmail.com \ --cc=andy.yan@rock-chips.com \ --cc=devicetree@vger.kernel.org \ --cc=djkurtz@chromium.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=emil.l.velikov@gmail.com \ --cc=galak@codeaurora.org \ --cc=gustavo.padovan@collabora.co.uk \ --cc=heiko@sntech.de \ --cc=ijc+devicetree@hellion.org.uk \ --cc=inki.dae@samsung.com \ --cc=javier@osg.samsung.com \ --cc=jingoohan1@gmail.com \ --cc=jy0922.shim@samsung.com \ --cc=k.kozlowski@samsung.com \ --cc=kgene@kernel.org \ --cc=kishon@ti.com \ --cc=kyungmin.park@samsung.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=mark.yao@rock-chips.com \ --cc=pawel.moll@arm.com \ --cc=robh+dt@kernel.org \ --cc=robherring2@gmail.com \ --cc=seanpaul@chromium.org \ --cc=sw0312.kim@samsung.com \ --cc=treding@nvidia.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.