All of lore.kernel.org
 help / color / mirror / Atom feed
From: Inki Dae <inki.dae@samsung.com>
To: Andrzej Hajda <a.hajda@samsung.com>,
	dri-devel@lists.freedesktop.org,
	Krzysztof Kozlowski <krzk@kernel.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org
Subject: Re: [PATCH v3 4/7] drm/exynos/hdmi: add bridge support
Date: Fri, 03 Feb 2017 15:38:42 +0900	[thread overview]
Message-ID: <58942572.604@samsung.com> (raw)
In-Reply-To: <1485937754-21440-1-git-send-email-a.hajda@samsung.com>



2017년 02월 01일 17:29에 Andrzej Hajda 이(가) 쓴 글:
> On TM2/TM2e platforms HDMI output is connected to MHL bridge
> SiI8620. To allow configure UltraHD modes on the bridge
> and to eliminate unsupported modes this bridge should be
> attached to drm_encoder implemented in exynos_hdmi.
> 
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_hdmi.c | 56 +++++++++++++++++++++++++++++-------
>  1 file changed, 46 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index a73b192..41fb894 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -35,6 +35,7 @@
>  #include <linux/io.h>
>  #include <linux/of_address.h>
>  #include <linux/of_device.h>
> +#include <linux/of_graph.h>
>  #include <linux/hdmi.h>
>  #include <linux/component.h>
>  #include <linux/mfd/syscon.h>
> @@ -133,6 +134,7 @@ struct hdmi_context {
>  	struct regulator_bulk_data	regul_bulk[ARRAY_SIZE(supply)];
>  	struct regulator		*reg_hdmi_en;
>  	struct exynos_drm_clk		phy_clk;
> +	struct drm_bridge		*bridge;
>  };
>  
>  static inline struct hdmi_context *encoder_to_hdmi(struct drm_encoder *e)
> @@ -922,7 +924,15 @@ static int hdmi_create_connector(struct drm_encoder *encoder)
>  	drm_connector_register(connector);
>  	drm_mode_connector_attach_encoder(connector, encoder);
>  
> -	return 0;
> +	if (hdata->bridge) {
> +		encoder->bridge = hdata->bridge;
> +		hdata->bridge->encoder = encoder;
> +		ret = drm_bridge_attach(encoder->dev, hdata->bridge);

arguments of drm_bridge_attach function has been changed so fixed it - trivial thing.
Applied it including other patches.

Thanks,
Inki Dae

> +		if (ret)
> +			DRM_ERROR("Failed to attach bridge\n");
> +	}
> +
> +	return ret;
>  }
>  
>  static bool hdmi_mode_fixup(struct drm_encoder *encoder,
> @@ -1591,6 +1601,31 @@ static void hdmiphy_clk_enable(struct exynos_drm_clk *clk, bool enable)
>  		hdmiphy_disable(hdata);
>  }
>  
> +static int hdmi_bridge_init(struct hdmi_context *hdata)
> +{
> +	struct device *dev = hdata->dev;
> +	struct device_node *ep, *np;
> +
> +	ep = of_graph_get_endpoint_by_regs(dev->of_node, 1, -1);
> +	if (!ep)
> +		return 0;
> +
> +	np = of_graph_get_remote_port_parent(ep);
> +	of_node_put(ep);
> +	if (!np) {
> +		DRM_ERROR("failed to get remote port parent");
> +		return -EINVAL;
> +	}
> +
> +	hdata->bridge = of_drm_find_bridge(np);
> +	of_node_put(np);
> +
> +	if (!hdata->bridge)
> +		return -EPROBE_DEFER;
> +
> +	return 0;
> +}
> +
>  static int hdmi_resources_init(struct hdmi_context *hdata)
>  {
>  	struct device *dev = hdata->dev;
> @@ -1630,17 +1665,18 @@ static int hdmi_resources_init(struct hdmi_context *hdata)
>  
>  	hdata->reg_hdmi_en = devm_regulator_get_optional(dev, "hdmi-en");
>  
> -	if (PTR_ERR(hdata->reg_hdmi_en) == -ENODEV)
> -		return 0;
> +	if (PTR_ERR(hdata->reg_hdmi_en) != -ENODEV) {
> +		if (IS_ERR(hdata->reg_hdmi_en))
> +			return PTR_ERR(hdata->reg_hdmi_en);
>  
> -	if (IS_ERR(hdata->reg_hdmi_en))
> -		return PTR_ERR(hdata->reg_hdmi_en);
> -
> -	ret = regulator_enable(hdata->reg_hdmi_en);
> -	if (ret)
> -		DRM_ERROR("failed to enable hdmi-en regulator\n");
> +		ret = regulator_enable(hdata->reg_hdmi_en);
> +		if (ret) {
> +			DRM_ERROR("failed to enable hdmi-en regulator\n");
> +			return ret;
> +		}
> +	}
>  
> -	return ret;
> +	return hdmi_bridge_init(hdata);
>  }
>  
>  static struct of_device_id hdmi_match_types[] = {
> 

  reply	other threads:[~2017-02-03  6:38 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20170120065229eucas1p22f0eed53220820b1145294029d4bd706@eucas1p2.samsung.com>
2017-01-20  6:52 ` [PATCH 0/7] drm/exynos: add Ultra HD and interlace modes support to Exynos5433 Andrzej Hajda
2017-01-20  6:52   ` Andrzej Hajda
2017-01-20  6:52   ` [PATCH 1/7] drm/exynos/hdmi: add 297MHz pixel clock support Andrzej Hajda
2017-01-20  6:52   ` [PATCH 2/7] drm/exynos/hdmi: fix VSI infoframe registers Andrzej Hajda
2017-01-20  6:52   ` [PATCH 3/7] drm/exynos/hdmi: fix PLL for 27MHz settings Andrzej Hajda
2017-01-20  6:52     ` Andrzej Hajda
2017-01-20  6:52   ` [PATCH 4/7] drm/exynos/hdmi: add bridge support Andrzej Hajda
2017-01-20  6:52     ` Andrzej Hajda
2017-02-01  7:31     ` Inki Dae
2017-02-01  7:31       ` Inki Dae
2017-02-01  7:34       ` Andrzej Hajda
2017-02-01  7:44         ` Inki Dae
2017-02-01  7:44           ` Inki Dae
2017-02-01  8:12           ` Andrzej Hajda
2017-02-01  8:12             ` Andrzej Hajda
2017-02-01  8:17             ` Inki Dae
2017-02-01  8:17               ` Inki Dae
2017-02-01  8:29               ` [PATCH v3 " Andrzej Hajda
2017-02-03  6:38                 ` Inki Dae [this message]
2017-02-03  6:39                   ` Inki Dae
2017-02-03  6:39                     ` Inki Dae
2017-01-20  6:52   ` [PATCH 5/7] drm/exynos/decon5433: add support for interlace modes Andrzej Hajda
2017-01-20  6:52     ` Andrzej Hajda
2017-01-20  6:52   ` [PATCH 6/7] drm/exynos/decon5433: signal vblank only on odd fields Andrzej Hajda
2017-01-20  6:52     ` Andrzej Hajda
2017-01-20 13:55     ` Ville Syrjälä
2017-01-23  9:15       ` Andrzej Hajda
2017-01-23  9:15         ` Andrzej Hajda
2017-01-25 14:06         ` Ville Syrjälä
2017-01-25 14:06           ` Ville Syrjälä
2017-01-26  8:22           ` Andrzej Hajda
2017-01-26 10:42             ` Ville Syrjälä
2017-01-20  6:52   ` [PATCH 7/7] arm64: dts: exynos: configure TV path clocks for Ultra HD modes Andrzej Hajda
2017-01-20  6:52     ` Andrzej Hajda
2017-01-20 14:51     ` Krzysztof Kozlowski
2017-01-23  7:56       ` [PATCH v2 " Andrzej Hajda
2017-01-23  7:56         ` Andrzej Hajda
2017-01-23  9:08         ` Marek Szyprowski
2017-01-23 10:05           ` [PATCH v3 " Andrzej Hajda
2017-01-23 10:05             ` Andrzej Hajda
2017-01-23 16:35             ` Krzysztof Kozlowski
2017-01-20 14:49   ` [PATCH 0/7] drm/exynos: add Ultra HD and interlace modes support to Exynos5433 Krzysztof Kozlowski

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=58942572.604@samsung.com \
    --to=inki.dae@samsung.com \
    --cc=a.hajda@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=m.szyprowski@samsung.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.