From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751453AbdBAHoe (ORCPT ); Wed, 1 Feb 2017 02:44:34 -0500 Received: from mailout2.samsung.com ([203.254.224.25]:33614 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751080AbdBAHob (ORCPT ); Wed, 1 Feb 2017 02:44:31 -0500 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 X-AuditID: b6c32a2e-f79656d0000012f2-c3-589191dc01fd Content-transfer-encoding: 8BIT Message-id: <589191DB.5000304@samsung.com> Date: Wed, 01 Feb 2017 16:44:27 +0900 From: Inki Dae User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Andrzej Hajda , dri-devel@lists.freedesktop.org, Krzysztof Kozlowski Cc: Bartlomiej Zolnierkiewicz , Marek Szyprowski , Kyungmin Park , linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Subject: Re: [PATCH 4/7] drm/exynos/hdmi: add bridge support In-reply-to: <53bb68fd-5de0-6b3d-df3e-e961ba3fd0fb@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA01SbUhTYRTuvXe7uxNXt5V2MKbjmoTS1u6cehWtrIiVBtIHiRHrohcV3Ue7 W2VEWT/KNG2rMBGjSWliliVm1g8LEyzBVksJQrfoAyIrsw9TImvbLYr3z3MOz3Pe5zwcElce J2LIUouDt1u4cpqIkPTcT1yuGXO783XTzSr2+bVHUvZGQ6eUHfk2SbBe73UZO3z0vYx9eqeJ YBu8fRh7dWBctoY0drWfIIyBmkHMWNfdjoxfumLzJAV8ZgnPFfF2NW8ptBaVWoqz6JytpnWm lFQdo2HS2TRabeHMfBa9PjdPs6G0PGiDVu/lyp3BVh4nCPTKVZl2q9PBq0usgiOL3skwei2j S9Pq9XqtIXlXhj4lSNnNlzx8+ha3zcTvd3WoKlGbqhrJSaAM8KbvLC7iaHjs7ySqUQSppFoQ TLWNSMXiOAZPRmeJv4qeobEwVlJNCLx9C0JYQS2EmTN+STUiSZyKgwFfWaiNU4nw9utpiTjH j8DXcV8q8pNgxHsrPEdCJUDl4HcshIkgdrcFwv0oKh9uX5iWhfBiag803xbd4dQogsCEP0xa RGWCq9sTHiqnVkO171LYNVCtMpiaHSVCjoBSQde9P2uuh7nH1zERL4J3g90yES+Fny3Pkait QfDs5ElCLKoQ/DzxSyKykiHwwo+Lu82H2h+vMfEDBVQdU4oUI7z5+OoPPRsaBiYwcf2LGDT2 3sRcKK7xv8Qa/yXW+F9iHoS3o2jeJpiLeSHFlqwVOLPgtBRrC63mLhQ+wiRtL5rz5PQjikR0 pMI25cpXSrm9QoW5HwGJ04sVDafc+UpFEVdxgLdbTXZnOS/0o5Rg4G48JqrQGjxpi8PEGFIZ gz49+NKYNHqJokAXFFHFnIMv43kbb/+rw0h5TCVyxyc86NYIy2zftmCPOkDVuo/I2LQtfXR8 486Oj8YJ3aGqyCNbn8Qa9PGHk9bKAmew+pjNQ/WRx94Nf6+6kD39ac2Hu4kuzdjL2oy5prLk 3S6nM4Hz7ahg1pk+n++N+np5Y/R43bzO9Iij8vqWrHOesoe1hb5J9UHPitzEK/LtdQItEUo4 Jgm3C9xvwRZFrJoDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrAIsWRmVeSWpSXmKPExsVy+t9jQd07EydGGBw+x2Fxa905VouNM9az Wlz5+p7N4vz5DewWZ5vesFtc3jWHzWLG+X1MFmuP3GV34PDYtKqTzeN+93Emj74tqxg9Pm+S C2CJcrPJSE1MSS1SSM1Lzk/JzEu3VQoNcdO1UFLIS8xNtVWK0PUNCVJSKEvMKQXyjAzQgINz gHuwkr5dglvGycsvmAt+KFdMWCPbwLhCtouRk0NCwERi26k7bBC2mMSFe+vBbCGBWYwS+5YX gdi8AoISPybfY+li5OBgFpCXOHIpG8JUl5gyJbeLkQuo+gGjxIydP5ghyrUkrpzfDjaGRUBV ouH4dyYQmw3InrjiPhtIr6hAhET3iUqQsIhAocT9+09YQOYwC1xnlNj6uJkVJCEsYCMxYcsC VogFi5kkXp+fAJbgFLCX6Lq0hHUCI9CRCOfNQjhvFsJ5CxiZVzFKpBYkFxQnpeca5aWW6xUn 5haX5qXrJefnbmIEx9Yz6R2Mh3e5H2IU4GBU4uG9wTgxQog1say4MvcQowQHs5II74x+oBBv SmJlVWpRfnxRaU5q8SFGU6D/JjJLiSbnA+M+ryTe0MTcxNzYwMLc0tLESEmct3H2s3AhgfTE ktTs1NSC1CKYPiYOTqkGRr7QPhfZbQd/HDdRdC3NTN5107e3TC00v0blffy3dYbCl8Uq5utM tZHhirORnyz5xzH17YntHf3nbWaq2isIHRFiqz9bbv1KcubD2mPax3Rm2Kz8GnhpifY8L5nA ac80FLf/fqhSNvm7JXv+EpnL/hzrb901nlVmsNezmOWkYEnXho3m6V3RSizFGYmGWsxFxYkA UH02WcMCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170201074428epcas5p2c6a40a697a1f865897105d3f3d217d41 X-Msg-Generator: CA X-Sender-IP: 203.254.230.27 X-Local-Sender: =?UTF-8?B?64yA7J246riwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbUzUo7LGF7J6EKS/ssYXsnoQ=?= X-Global-Sender: =?UTF-8?B?SW5raSBEYWUbVGl6ZW4gUGxhdGZvcm0gTGFiLhtTYW1zdW5n?= =?UTF-8?B?IEVsZWN0cm9uaWNzG1M1L1NlbmlvciBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG1NUQUYbQzEwVjgxMTE=?= CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-HopCount: 7 X-CMS-RootMailID: 20170120065230eucas1p2e22f7b832ec7e1c770c3e8a27a3341f5 X-RootMTR: 20170120065230eucas1p2e22f7b832ec7e1c770c3e8a27a3341f5 References: <1484895145-511-1-git-send-email-a.hajda@samsung.com> <1484895145-511-5-git-send-email-a.hajda@samsung.com> <58918ED0.3020406@samsung.com> <53bb68fd-5de0-6b3d-df3e-e961ba3fd0fb@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2017년 02월 01일 16:34에 Andrzej Hajda 이(가) 쓴 글: > On 01.02.2017 08:31, Inki Dae wrote: >> >> 2017년 01월 20일 15:52에 Andrzej Hajda 이(가) 쓴 글: >>> In some platforms there is attached another device to the end of HDMI. >>> The patch adds support for it. >> Andrzej, can you clarify what bridge device can be attached and actually is now attached to the end of HDMI? >> And I wonder if we have the device tree file which defines the bridge device in mainline. Seems we have no the device tree file. >> >> If nothing, then this patch should be merged with real use case. > > SiI8620 MHL bridge in tm2/tm2e. Did you post dt patch to add the properties related to SiI8620 MHL bridge device? I see below patch series, [PATCH 00/24] drm/bridge/sii8620: add Ultra HD modes support but I couldn't find dt patch for it. And specifying SiI8620 MHL bridge device as description would be needed. Thanks. > > Regards > Andrzej > >> >> Thanks. >> >>> Signed-off-by: Andrzej Hajda >>> --- >>> 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 >>> #include >>> #include >>> +#include >>> #include >>> #include >>> #include >>> @@ -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); >>> + 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[] = { >>> >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >