Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp28233imm; Tue, 10 Jul 2018 20:13:36 -0700 (PDT) X-Google-Smtp-Source: AAOMgpd85inrLjxZtD4iFNY3f60HxNQmYEXnE1KgAoE0l4aBwtVUlRR6FyK4soMly3Cykjg8pe+P X-Received: by 2002:a62:9bc5:: with SMTP id e66-v6mr28024505pfk.84.1531278816673; Tue, 10 Jul 2018 20:13:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531278816; cv=none; d=google.com; s=arc-20160816; b=wTrIZwaWgMk/jJW5wPSqOWV2A5UulbyHB6mUiR0CEBc8bZFyWTVK5y5n+iNpn5fQs3 praK64vJF1UotEidEBgR040gKHCOnYLDYa0z1Ghk1znG44//t0vjgfVsDz/MZOW9weCL lmxjXG2QmL5UBeXevlTt39FV+tzer+acpN/qviu7i2qEjQ3dbY26wtB+l2Y/FHBYysb0 ezMEUwb8uGCb5/0zpDuoruIWS7Agc5aDAbc9/kcr2bmvxEH/zw48cflOHuOyH4F9AVb+ Ss4G6mLJI/iKh2A4iQtHOvFzZaix75wDIDVURFe5/KKqEttkMA+KCLxBIGXZhaioIRBY A4Hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:arc-authentication-results; bh=QxU/Dw9Xlxrpz5zPQauLoiJ5usN1XoQhbiyPL7ohbrQ=; b=BHWL1cBOSMp/DXrTdADlvtpJx2EXmNTlH0Ymtrr5vMp1D2CPjEHof0mCdp0lGa3ypo Fj8J2raI+amG30X/gquNBo3KSDOmZGUFV9+eZzr30R9kguMd+hurnYIPfk2Du6Pvq+JD xiyQH2gJ5rtZ2AXZmILKZn03KlxLDRwOeTIPe4B0ti6E8hxz+or32ea045NrcajR3fXk 9D6xVP/aTwQtyTO+WCwKUNilEyqSq+zQJ6pr1PGSf889SVFX7Hu4ue7TyFfqqnJoTUTk NoCjJR5ju7Pgbv1RnKq0Es93xMBHYP/9fwjWhKH1YzM0/Pm5sUtFN2lY1bRaG1Bp2RhY gIpA== 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 m39-v6si18441087plg.371.2018.07.10.20.13.21; Tue, 10 Jul 2018 20:13:36 -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 S1732493AbeGKDO3 (ORCPT + 99 others); Tue, 10 Jul 2018 23:14:29 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:43011 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732372AbeGKDO3 (ORCPT ); Tue, 10 Jul 2018 23:14:29 -0400 Received: by mail-ed1-f65.google.com with SMTP id u11-v6so18006450eds.10; Tue, 10 Jul 2018 20:12:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=QxU/Dw9Xlxrpz5zPQauLoiJ5usN1XoQhbiyPL7ohbrQ=; b=QyqjXDz38IMDydj3dNKW6czb5LaO0m19ARArgJpwdZ9Iwl739b3aAMmsIjR7/Z6gbW euC8VEVWnoQyP1r9WZw4dF6Whj+7kY9ZHSc+cmSHkXcEOFBR88JrIUiV8lLd8qASNn95 0CJDfZVUh5TYo8zmFtJkscfuPHxjzRcMvIQI0NXoFES8biBpqBBbNwDovI+LVXTKcFgr Alm+VVV3+uD5w5KGNcgzWS33C81XJjF8BpSTJQbt+k91VYpSh04C/SV/I+7FJQIfve4P GqddT5pXDhT53qHN99FApfE84dhs5LfpuWaj2pfHvDwOYyRNEZECfTlYYOqKnl63Qalm unUw== X-Gm-Message-State: APt69E3Ja9Wvumk18iO9MNTkhWDOIWHEbJrfbf5zTiEPcsrC26S/ljN1 mNpAFAKqRcWyvDLOh7FzsIFGg0LX X-Received: by 2002:a50:8327:: with SMTP id 36-v6mr8932776edh.305.1531278739611; Tue, 10 Jul 2018 20:12:19 -0700 (PDT) Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com. [209.85.221.54]) by smtp.gmail.com with ESMTPSA id 33-v6sm2222730edy.82.2018.07.10.20.12.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Jul 2018 20:12:18 -0700 (PDT) Received: by mail-wr1-f54.google.com with SMTP id q10-v6so16547463wrd.4; Tue, 10 Jul 2018 20:12:17 -0700 (PDT) X-Received: by 2002:adf:f9c9:: with SMTP id w9-v6mr18918844wrr.105.1531278737643; Tue, 10 Jul 2018 20:12:17 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:a15a:0:0:0:0:0 with HTTP; Tue, 10 Jul 2018 20:11:56 -0700 (PDT) In-Reply-To: <20180710203511.18454-11-jernej.skrabec@siol.net> References: <20180710203511.18454-1-jernej.skrabec@siol.net> <20180710203511.18454-11-jernej.skrabec@siol.net> From: Chen-Yu Tsai Date: Wed, 11 Jul 2018 11:11:56 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 10/18] drm/sun4i: mixer: Read id from DT To: Jernej Skrabec Cc: Maxime Ripard , Rob Herring , David Airlie , Mark Rutland , dri-devel , devicetree , linux-arm-kernel , linux-kernel , linux-sunxi Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 11, 2018 at 4:35 AM, Jernej Skrabec wrote: > 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; > +} > + The above looks good. > 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); Should you be handling error codes? ChenYu