Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2116565imm; Tue, 10 Jul 2018 13:37:01 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfwe4UKStsTvPT2MUvXqVKWmY2xBx6nNIw9++Iz0hhIIffA8lV78hulHMF0qaGB5ecOD1lm X-Received: by 2002:a65:60cd:: with SMTP id r13-v6mr24226194pgv.232.1531255021126; Tue, 10 Jul 2018 13:37:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531255021; cv=none; d=google.com; s=arc-20160816; b=pSY5hT1eb7o+ZfVrFxm1HvqK2Qg+eZU2RfqBkQkDJ7dUlGs8aRzH0BsJ9g9LTwguhw AyXhqAlqhdqWqhAlvLHCcyBzw80lQ+gHDcMv53QDF38zT9BawkMYpskNZibfxgvOx0CW 1x3IkVICgOzrBzFToDA9Bpd0xrybqPkw60CY+aWIc4tIu0D2vH1lgEmYvvslTdPlnvbD mVKtedG9s51zln96A8KsFJ88owHlmBoYBez9wV8j0zQQ0V4se5TuMFVB5Z4wqXPptlfo hXHe1FZAfi+3lQknIrFaOSllvLle8j+tLZKkgHTHsooGgJvkzNnHAvYccGhOPPW/FEYm ZR+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=Fr9VGbITPI2FHp2DbGnnD2gkqvMuKylPxYzSfpnzua4=; b=AbboGwMLXoUa68gytIzCt05r24Auc36QPDkR/6jsaoZgdrSF/z9PGJ7ut+nzwZaSoN FixKQeqXFxwM53whT/jc7xXpS9A4wwDy89R7GUqeneA2K4Tk0Lj92yHBWXYMbz+KT6nf kHGNtrOHsP6C578Z+GJRE0LuFJxUuIDS8lHtMFx9bBxAhwUcs5lElt4R33mzqDKQlnms PT6d0OUnILTXEWkitGcmH1t6JVNeZ79WKjAEOUAcTlt25M3Oo2ECAf5iz3h5LpP7VAWf 7CcXZ/MA4bWvTbNJNlhLIx+z8RIkrPfooC4oMYP5cvyIqtqwp/I84D2H/EkPbnKbw49X 1/7w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c197-v6si19604331pfc.74.2018.07.10.13.36.46; Tue, 10 Jul 2018 13:37:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732980AbeGJUga (ORCPT + 99 others); Tue, 10 Jul 2018 16:36:30 -0400 Received: from mailoutvs16.siol.net ([185.57.226.207]:47444 "EHLO mail.siol.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732333AbeGJUg3 (ORCPT ); Tue, 10 Jul 2018 16:36:29 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Zimbra) with ESMTP id 2386B52271C; Tue, 10 Jul 2018 22:35:46 +0200 (CEST) X-Virus-Scanned: amavisd-new at psrvmta12.zcs-production.pri Received: from mail.siol.net ([127.0.0.1]) by localhost (psrvmta12.zcs-production.pri [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 06I3cww4bRws; Tue, 10 Jul 2018 22:35:45 +0200 (CEST) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Zimbra) with ESMTPS id 9FE6852272D; Tue, 10 Jul 2018 22:35:45 +0200 (CEST) Received: from localhost.localdomain (unknown [194.152.15.144]) (Authenticated sender: 031275009) by mail.siol.net (Zimbra) with ESMTPSA id 3AA5952271C; Tue, 10 Jul 2018 22:35:43 +0200 (CEST) From: Jernej Skrabec To: maxime.ripard@bootlin.com, wens@csie.org, robh+dt@kernel.org Cc: airlied@linux.ie, mark.rutland@arm.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [PATCH v2 10/18] drm/sun4i: mixer: Read id from DT Date: Tue, 10 Jul 2018 22:35:03 +0200 Message-Id: <20180710203511.18454-11-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180710203511.18454-1-jernej.skrabec@siol.net> References: <20180710203511.18454-1-jernej.skrabec@siol.net> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, TCON supports 2 ways to match TCON with engine (mixer in this case). Old way is to just traverse of graph backwards and compare node pointer. New way is to match TCON and engine by their respective ids. All SoCs with DE2 enabled till now used the old way, which means mixer id was never used and thus never implemented. However, for R40, only the new way will be used. To prepare for that, implement mixer id fetching from DT. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 40 +++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index aa81b9838ae8..4bd4d8ccb34f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "sun4i_drv.h" @@ -322,6 +323,42 @@ static struct regmap_config sun8i_mixer_regmap_config = { .max_register = 0xbfffc, /* guessed */ }; +static int sun8i_mixer_of_get_id(struct device_node *node) +{ + struct device_node *port, *ep; + int ret = -EINVAL; + + /* output is port 1 */ + port = of_graph_get_port_by_id(node, 1); + if (!port) + return -EINVAL; + + /* try to find downstream endpoint */ + for_each_available_child_of_node(port, ep) { + struct device_node *remote; + u32 reg; + + remote = of_graph_get_remote_endpoint(ep); + if (!remote) + continue; + + ret = of_property_read_u32(remote, "reg", ®); + if (!ret) { + of_node_put(remote); + of_node_put(ep); + of_node_put(port); + + return reg; + } + + of_node_put(remote); + } + + of_node_put(port); + + return ret; +} + static int sun8i_mixer_bind(struct device *dev, struct device *master, void *data) { @@ -353,8 +390,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, dev_set_drvdata(dev, mixer); mixer->engine.ops = &sun8i_engine_ops; mixer->engine.node = dev->of_node; - /* The ID of the mixer currently doesn't matter */ - mixer->engine.id = -1; + mixer->engine.id = sun8i_mixer_of_get_id(dev->of_node); mixer->cfg = of_device_get_match_data(dev); if (!mixer->cfg) -- 2.18.0