From: Archit Taneja <architt@codeaurora.org>
To: robdclark@gmail.com
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: [PATCH v2 08/13] drm/msm/hdmi: Make HDMI core get its PHY
Date: Mon, 15 Feb 2016 12:23:21 +0530 [thread overview]
Message-ID: <1455519206-12939-9-git-send-email-architt@codeaurora.org> (raw)
In-Reply-To: <1455519206-12939-1-git-send-email-architt@codeaurora.org>
Make HDMI core get its PHY by parsing the qcom,hdmi-phy phandle. The core
will use this PHY reference to enable/disable PHY. The driver defers probe
until PHY isn't available.
Signed-off-by: Archit Taneja <architt@codeaurora.org>
---
drivers/gpu/drm/msm/hdmi/hdmi.c | 40 ++++++++++++++++++++++++++++++++++++++++
drivers/gpu/drm/msm/hdmi/hdmi.h | 2 ++
2 files changed, 42 insertions(+)
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c
index bc22ec4..c38a7378 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -83,12 +83,46 @@ static void hdmi_destroy(struct hdmi *hdmi)
if (phy)
phy->funcs->destroy(phy);
+ if (hdmi->phy_dev) {
+ put_device(hdmi->phy_dev);
+ hdmi->phy = NULL;
+ hdmi->phy_dev = NULL;
+ }
+
if (hdmi->i2c)
hdmi_i2c_destroy(hdmi->i2c);
platform_set_drvdata(hdmi->pdev, NULL);
}
+static int hdmi_get_phy(struct hdmi *hdmi)
+{
+ struct platform_device *pdev = hdmi->pdev;
+ struct platform_device *phy_pdev;
+ struct device_node *phy_node;
+
+ phy_node = of_parse_phandle(pdev->dev.of_node, "qcom,hdmi-phy", 0);
+ if (!phy_node) {
+ dev_err(&pdev->dev, "cannot find phy device\n");
+ return -ENXIO;
+ }
+
+ phy_pdev = of_find_device_by_node(phy_node);
+ if (phy_pdev)
+ hdmi->phy = platform_get_drvdata(phy_pdev);
+
+ of_node_put(phy_node);
+
+ if (!phy_pdev || !hdmi->phy) {
+ dev_err(&pdev->dev, "phy driver is not ready\n");
+ return -EPROBE_DEFER;
+ }
+
+ hdmi->phy_dev = get_device(&phy_pdev->dev);
+
+ return 0;
+}
+
/* construct hdmi at bind/probe time, grab all the resources. If
* we are to EPROBE_DEFER we want to do it here, rather than later
* at modeset_init() time
@@ -232,6 +266,12 @@ static struct hdmi *hdmi_init(struct platform_device *pdev)
goto fail;
}
+ ret = hdmi_get_phy(hdmi);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to get phy\n");
+ goto fail;
+ }
+
hdmi->hdcp_ctrl = hdmi_hdcp_init(hdmi);
if (IS_ERR(hdmi->hdcp_ctrl)) {
dev_warn(&pdev->dev, "failed to init hdcp: disabled\n");
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdmi.h
index 29dc87a..9586663 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.h
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
@@ -71,6 +71,8 @@ struct hdmi {
struct clk **pwr_clks;
struct hdmi_phy *phy;
+ struct device *phy_dev;
+
struct i2c_adapter *i2c;
struct drm_connector *connector;
struct drm_bridge *bridge;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2016-02-15 6:53 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-15 6:53 [PATCH v2 00/13] drm/msm/hdmi: HDMI support on MSM8996 Archit Taneja
2016-02-15 6:53 ` [PATCH v2 01/13] drm/msm/dsi: Create separate Makefile/Kconfig Archit Taneja
2016-02-15 6:53 ` [PATCH v2 02/13] drm/msm/hdmi: " Archit Taneja
2016-02-15 6:53 ` [PATCH v2 03/13] drm/msm/edp: " Archit Taneja
2016-02-15 6:53 ` [PATCH v2 04/13] drm/msm/hdmi: Clean up connector gpio usage Archit Taneja
2016-02-15 6:53 ` [PATCH v2 05/13] drm/msm/hdmi: Fix connector detect when there is no HPD gpio Archit Taneja
2016-02-15 6:53 ` [PATCH v2 06/13] drm/msm/hdmi: Create a separate HDMI PHY driver Archit Taneja
2016-02-15 6:53 ` [PATCH v2 07/13] drm/msm/hdmi: Manage HDMI PLL through " Archit Taneja
2016-02-15 6:53 ` Archit Taneja [this message]
2016-02-15 6:53 ` [PATCH v2 09/13] drm/msm/hdmi: Convert PHY files according to new design Archit Taneja
2016-02-15 6:53 ` [PATCH v2 10/13] drm/msm/hdmi: Update generated headers to split PHY/PLL offsets Archit Taneja
2016-02-15 6:53 ` [PATCH v2 11/13] drm/msm/hdmi: Update generated headers for HDMI 8996 PHY Archit Taneja
2016-02-15 6:53 ` [PATCH v2 12/13] drm/msm/hdmi: HDMI 8996 PHY/PLL support Archit Taneja
2016-02-15 6:53 ` [PATCH v2 13/13] dt-bindings: msm/hdmi: Add HDMI PHY bindings Archit Taneja
2016-02-22 2:54 ` Rob Herring
2016-02-22 11:07 ` Archit Taneja
2016-02-22 19:27 ` Rob Herring
2016-02-23 9:36 ` Archit Taneja
2016-02-24 12:00 ` Kishon Vijay Abraham I
2016-02-25 5:40 ` Archit Taneja
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=1455519206-12939-9-git-send-email-architt@codeaurora.org \
--to=architt@codeaurora.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=robdclark@gmail.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.