From patchwork Wed Aug 24 13:07:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Milo Kim X-Patchwork-Id: 9297713 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A9D9660757 for ; Wed, 24 Aug 2016 13:20:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9AE5828FE6 for ; Wed, 24 Aug 2016 13:20:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F90528FE9; Wed, 24 Aug 2016 13:20:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0BD1628FE6 for ; Wed, 24 Aug 2016 13:20:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755055AbcHXNUF (ORCPT ); Wed, 24 Aug 2016 09:20:05 -0400 Received: from mail-pa0-f65.google.com ([209.85.220.65]:33689 "EHLO mail-pa0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754274AbcHXNT7 (ORCPT ); Wed, 24 Aug 2016 09:19:59 -0400 Received: by mail-pa0-f65.google.com with SMTP id vy10so1205963pac.0; Wed, 24 Aug 2016 06:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yttO5Z8mrK8ZzdyqIgjWaFnZhUizpm8BHLwotmF5OFs=; b=wWSaO5dPLMiLhajV9Ry+99B08X35zw8VWWjWmm/GUSBUaJX2kUHystJvpfpurrns5R ND1MHRkcXwnLBmnvgR4I/JSCpSAseRWIvikWCGyNDo1IRV265INb5vFgGGR8SEBqCUen mlMscaGhdumpYWqmpj/NfgyXLAPh4JHVoX3JZv6svA2WgdJG5In5ITIv2C1Ru58Nynb3 AbY1qSXNHz6chQIJhXvpesfuy6bMLmsPIlBlbhogeswBeF4XKWBLeRKGbjsBhBJX24Jl u+w31yzoajV5zjCBeILP5ox7z5mdpi5N/8aKy1ran/cJwGhedF74cl/U3cpYsu9Wz1bn Kxdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yttO5Z8mrK8ZzdyqIgjWaFnZhUizpm8BHLwotmF5OFs=; b=alVCYA8LIZMbsSa0dKuLahVDBRGJKNeGNXxVOgGLsIgyeyrb30nO+0cymPikwNgFBN DV/ztljPrubbozDn977NYhsyYZC39zCY5iqJextgHH0lebW+UjJ0+ZDq8UwlhouAXQ+U XGzfFSNCB0jqIOwp2n+ZfibtCzqwsJcPtdcyY3Cjf6QMfqbZ8MH8MRdRLaROkSJybgi9 koUDTl74dwfBAdwxWw+2AZMjkBVaC1hgmtaOTX7QOhYAZHyKjeKcXvB5KiMp6KXu6ewp gJzvg94f3KTPW8QSzJjawSGbuAf8xlyulcNX8iVK00rA0AerdIbXI9TwDImWkETq4qfW 8j+g== X-Gm-Message-State: AE9vXwPmsDfGsCrRc/RthWe1weCkcc7D2qrZGpUX/jnwCDZU8Bnj/HQcgaQWv9jdrdYALA== X-Received: by 10.66.161.132 with SMTP id xs4mr5513114pab.140.1472044114358; Wed, 24 Aug 2016 06:08:34 -0700 (PDT) Received: from milo-dev.kornet ([61.77.30.12]) by smtp.gmail.com with ESMTPSA id h125sm13689199pfg.54.2016.08.24.06.08.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 Aug 2016 06:08:33 -0700 (PDT) From: Milo Kim To: Kukjin Kim , Krzysztof Kozlowski , David Airlie Cc: Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Milo Kim Subject: [PATCH v3 3/5] gpu: drm: exynos_hdmi: Move DDC logic into single function Date: Wed, 24 Aug 2016 22:07:17 +0900 Message-Id: <1472044039-16536-4-git-send-email-woogyom.kim@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1472044039-16536-1-git-send-email-woogyom.kim@gmail.com> References: <1472044039-16536-1-git-send-email-woogyom.kim@gmail.com> Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Paring DT properties and getting the I2C adapter in one function. Cc: Kukjin Kim Cc: Krzysztof Kozlowski Cc: David Airlie Cc: Inki Dae Cc: Joonyoung Shim Cc: Seung-Woo Kim Cc: Kyungmin Park Cc: Rob Herring Cc: devicetree@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Signed-off-by: Milo Kim --- drivers/gpu/drm/exynos/exynos_hdmi.c | 46 ++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 2275efe..8d99b5d 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -1760,16 +1760,34 @@ static const struct component_ops hdmi_component_ops = { .unbind = hdmi_unbind, }; -static struct device_node *hdmi_legacy_ddc_dt_binding(struct device *dev) +static int hdmi_get_ddc_adapter(struct hdmi_context *hdata) { const char *compatible_str = "samsung,exynos4210-hdmiddc"; struct device_node *np; + struct i2c_adapter *adpt; np = of_find_compatible_node(NULL, NULL, compatible_str); if (np) - return of_get_next_parent(np); + np = of_get_next_parent(np); + else + np = of_parse_phandle(hdata->dev->of_node, "ddc", 0); + + if (!np) { + DRM_ERROR("Failed to find ddc node in device tree\n"); + return -ENODEV; + } - return NULL; + adpt = of_find_i2c_adapter_by_node(np); + if (!adpt) { + DRM_ERROR("Failed to get ddc i2c adapter by node\n"); + of_node_put(np); + return -EPROBE_DEFER; + } + + hdata->ddc_adpt = adpt; + of_node_put(np); + + return 0; } static struct device_node *hdmi_legacy_phy_dt_binding(struct device *dev) @@ -1781,7 +1799,7 @@ static struct device_node *hdmi_legacy_phy_dt_binding(struct device *dev) static int hdmi_probe(struct platform_device *pdev) { - struct device_node *ddc_node, *phy_node; + struct device_node *phy_node; struct device *dev = &pdev->dev; struct hdmi_context *hdata; struct resource *res; @@ -1811,23 +1829,9 @@ static int hdmi_probe(struct platform_device *pdev) return ret; } - ddc_node = hdmi_legacy_ddc_dt_binding(dev); - if (ddc_node) - goto out_get_ddc_adpt; - - ddc_node = of_parse_phandle(dev->of_node, "ddc", 0); - if (!ddc_node) { - DRM_ERROR("Failed to find ddc node in device tree\n"); - return -ENODEV; - } - of_node_put(dev->of_node); - -out_get_ddc_adpt: - hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node); - if (!hdata->ddc_adpt) { - DRM_ERROR("Failed to get ddc i2c adapter by node\n"); - return -EPROBE_DEFER; - } + ret = hdmi_get_ddc_adapter(hdata); + if (ret) + return ret; phy_node = hdmi_legacy_phy_dt_binding(dev); if (phy_node)