From patchwork Mon Mar 13 05:52:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9619757 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 0DC3960414 for ; Mon, 13 Mar 2017 05:53:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F166E28423 for ; Mon, 13 Mar 2017 05:53:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E4DC428451; Mon, 13 Mar 2017 05:53:00 +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=-1.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID autolearn=no version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 047C828446 for ; Mon, 13 Mar 2017 05:52:59 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 979FE266B4B; Mon, 13 Mar 2017 06:52:58 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 82FD0266B22; Mon, 13 Mar 2017 06:52:57 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id A8D81266B69 for ; Mon, 13 Mar 2017 06:52:39 +0100 (CET) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie2.idc.renesas.com with ESMTP; 13 Mar 2017 14:52:34 +0900 Received: from relmlac3.idc.renesas.com (relmlac3.idc.renesas.com [10.200.69.23]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id 98A0564207; Mon, 13 Mar 2017 14:52:34 +0900 (JST) Received: by relmlac3.idc.renesas.com (Postfix, from userid 0) id 7AA1618070; Mon, 13 Mar 2017 14:52:34 +0900 (JST) Received: from relmlac3.idc.renesas.com (localhost [127.0.0.1]) by relmlac3.idc.renesas.com (Postfix) with ESMTP id 757301806F; Mon, 13 Mar 2017 14:52:34 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac3.idc.renesas.com with ESMTP id QAF17221; Mon, 13 Mar 2017 14:52:34 +0900 X-IronPort-AV: E=Sophos;i="5.36,157,1486393200"; d="scan'208";a="236491819" Received: from mail-sg2apc01lp0242.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.242]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 13 Mar 2017 14:52:33 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oJKbzgMvikw+3BgjUDmXQGQw58PUlOPgU9mDrs9HzFs=; b=XLyYr35P1V6QFmErUX/2ihOT4IHwwW52BatZXWjo8FqticrfUd0kq3Qqu2DePs7hDrvkmmHyQ1uftlOinVL+F3PhiI6iHcX+vz4r49O0WM/0D894IQnouiRh1WMHxnh07eLoVDos+hdCysppwHrPIYGAE0sf59XrY3dBm1RJACo= Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none; kernel.org; dmarc=none action=none header.from=renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.144) by KL1PR0601MB1927.apcprd06.prod.outlook.com (2603:1096:802:9::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Mon, 13 Mar 2017 05:52:32 +0000 Message-ID: <8737ehiv59.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown , Rob Herring In-Reply-To: <8760jdivfm.wl%kuninori.morimoto.gx@renesas.com> References: <8760jdivfm.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 13 Mar 2017 05:52:32 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: OS1PR01CA0043.jpnprd01.prod.outlook.com (2a01:111:e400:540c::25) To KL1PR0601MB1927.apcprd06.prod.outlook.com (2603:1096:802:9::17) X-MS-Office365-Filtering-Correlation-Id: 45d01d44-0f89-46ae-f6c9-08d469d52487 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:KL1PR0601MB1927; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1927; 3:EfgvZZ316mhgCTkUiM3O5EzPniPvMh2AVKe1ts0Ho8k+2ejdxGj0/2RDtDNwp6p/n158kiJLDFH1+138DXahjS/b/ir2nCEetBwFn2jBQyYYcD8/ZPt5Gpm52rCQdQ4gbTVuDv+SnXnKa/akEDARO5KgYkR0KpVanHDiyg0j6rd81apXdiYOBHrJ1klBoNDaBIl6Rb7CGbkFWokKCvrQ6oWsyymfvIfoMmF2scSQWTV/TnNOjkGJ3AlxzMG1ubZmjfuKA8EOIjRikC86ctWCI/IJUfv46Rl4Gmi9F2OAY3M=; 25:EjSFwJ3waVG84zoXK2wJ65jPBNxDWrs9zv2BfDrLn7iJHZyHTsvKhrqzxTOO4pdmpm7U+B+NuqiaIimBcnoF3LE+1R9yzoLlY8/CXjbBwBr8ujqQY+JprEeOLbdFu4DUi8wg4RDd7Z+JFIYmkSWKacsIO+IvEcGShYjlSYCw9/yPURpcquZP2daR3VXW9/G9e260w5XaNejD0cfxFLAw3MqIidzOiGYSNQoINOL9aCmmWGdWKpg2J74Rfi3QJkTemw8iemtyawSOk0UzeyeHhQpN9GCWVCFimrLKRn1uk8Qeet0Pcxeb/OFOQrrNnSCABpZIaSY+oix0KAiQGxdiz2Ueq9YV0uV/GNZG0Bi7fxhN6p9M9VrcJ0hDjrOOWfg7JOx9QpetitdiNp1hn9RHSmvuEfyVQuXAU393tFYttV9QN12bJF5X83fUOTOXWzdPSMo0sD/Z/Y6XyIXhlnxFlQ== X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1927; 31:UsSVa2GP4Ltq+SGGSi21p3SBB3PsANJQNIcteCJ9tk1xWcZCHzfK++cE7SZVvldjYMqmbmCmXZoMWRssR1+Y9RKn1ozH6jsYDz6MhYdaOddLNk0csj6QwmKQS+4qiMVhRSYLdHWDcqaG19O7MJX8C0gUq5F/kZNb/9waJvUKXpUDWA8PlJZRFiE9xtxiRm9T49fx7MBnZTD5k1T0JAl5T6w6cO7W7tkfZy6D/w9xvNwikiimCADzM0mcL9QDdaO/t0FV0hc1NP58bvNICrfSU0vz7N2iy3GaH8n+q20mSdM=; 20:y5lpIyQfubA7BztJ1g0KYXcilR9YO99y3OZFmUHYOW5FxT+Nyg1iyg30HCgkMo/5kX482dGpBzwDcfKE+lfpaa8XClE4nCrw9n1GYA9m0x+05Wjb4zeraxFmLfbFJ42AZwkkds7qXexN9N/Wpfi675aaMpdqBFzuj6ywrXheWI8z+S9UlfFJGPfGAN/JG7YhdpFh+PcqRR4KFIQiO1oC3zAPvLra6mgIT817GoKQTVkOcdSISTU9JIcekIPLTyImU2xoExSGXKJAXK1pAY1avkN5asxAhpkVQnukasNx+w5XaLWMWSPZoytJYuZ71ZjCQGVW9B9LnQmOGMU0bUWJEdfVo0wReapIEdpP99WtPxTaZ/MRRUk3+aM708DEsvWcDa10E+bB94+2JWR5fiYRjC/8J3FisLlLlTsfgzcYZ6PV4L3Uvmez56P+e0GTyw1CJBDZaTFa4suAy1SSCQ5f6UYXn4z3dhY0G0wpHmHKteBuvS68j4QuHDD9q3ooOtAq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123558025)(20161123564025)(6072148); SRVR:KL1PR0601MB1927; BCL:0; PCL:0; RULEID:; SRVR:KL1PR0601MB1927; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1927; 4:Ruw5bV3X8BTlkoY0ZJIaCcfxy+JBA/Ds3Fp+3bl+bTEJjxKjqbRiCicbxyHx5vrtjnHNvTz+0dMtPXXx+XvdOxcYxSMpQnSywTI+ZGpDj1rr+jw/wK/w1LFCzKDC0VRuJY7CzZ2KHLgGmYdF8GbkukipN8bLDD+l7XYtRwJOfCvCfDiLILEfdQhYQeWxaeZes8SJSy42junhu7ZnxWJfG2TA+jge9kyCqKi+3O8Pz+hFADgiqMNX26iiVvVQu0lcDpgkuZNhKN+zVymvsU8G/DYUzueA2sng1maG3/Z8+TRIbV4kdcvAS+F4R0rd7C/UsJqAYUy2Kj9X/3ac8QByfZjh+1YLoRTk0lRAIGOXcT/mmcsNyQ2ZJyxxBZlrXfRWOMwvf+quKPwc6rLhrhLa91INNT6cbKVuOQcYzuVoCBqOz5rJ4V3YEyyd9QDHKKwBDN+toOg4BQSxn7tYXxXg/z+rUkY65Q6mmTLSYRbHJPrhFvMqyvVCc1EFYNDXGRqMNb5W0BopmoDIKhlRYhw+kHFICPmyhPCyRNNI9+IviL6JhKZI009ehukUkaedhf7joLBJkKU4jji7muDYGYayDFtUllTlctaAVh+F2JCmA9WnIupSgaGzYHjwaqb9Q+Md X-Forefront-PRVS: 0245702D7B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39410400002)(39850400002)(39840400002)(39860400002)(39450400003)(86362001)(53416004)(42186005)(33646002)(50986999)(54356999)(7736002)(76176999)(305945005)(4001350100001)(189998001)(2906002)(38730400002)(4326008)(66066001)(6486002)(47776003)(46406003)(6116002)(54906002)(3846002)(23726003)(50466002)(8676002)(5660300001)(81166006)(2950100002)(36756003)(83506001)(53936002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:KL1PR0601MB1927; H:morimoto-PC.renesas.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; KL1PR0601MB1927; 23:flMz9oTPmACZJGzo4LeKW1ZfuNROCZ2DYlTGfMS?= =?us-ascii?Q?eHPwlZOdu7xzmope61u+DFtfpX0+c0DYcBO7bb5BI724YPjyImt3JKWENg1Y?= =?us-ascii?Q?+spviIV1vgnGaM3UvImNf5hzmg1tbAFOOJGEjTgi573TO6CsZNLbhdBIKybW?= =?us-ascii?Q?K/y6hh1EieElVZ4FRkDOtoJcyCeCxJhfFPGwvyxvzC/6wKBsVgzVz0vzVDwa?= =?us-ascii?Q?uFAjo6qoBvEiLN9b5gO6rznAuFUVbb0JeAKD8ry4BVTjXtJydetKxCHZFIwQ?= =?us-ascii?Q?je0BZDNOaE6RPLeZL5LfpUaCffCRJ0cMc/HDoZFnycinVARyI/zQArDYwmN9?= =?us-ascii?Q?k+8KcmaugWNRX6pnUaiOLxFvsmEb5XPwvSOhZgb/rIwK6f3t+gKh3mZzFO3m?= =?us-ascii?Q?BfNcj+Kyg5FitjNWMauOA5PWUQVr8FJAZ7lRJXwqYkmRN/IyzaF/u0yR11dd?= =?us-ascii?Q?xmbEEP/t4dsWfj9Ksc6JAOD78d9Cp3xGiIAvg4q3O27YTABq2FA48pK+iX08?= =?us-ascii?Q?KvbsECiRpCJYf00n7lXYP8a3NhAy291Nmp8T69x48ImkErHTZXio7MgMhjzS?= =?us-ascii?Q?EtU6X6dLqBAmECgp8+V2iIl2KwTPETNNP1uH5viIQ5finQCdJ25bLk+oGwrf?= =?us-ascii?Q?JxBWI8aQ77jZWDESuCfki4gLiy/OqauJ4DrFJtmPbDkdb8GZ4UrDFu3uGnko?= =?us-ascii?Q?ou5yJ2YSh61Ldh6ax1530L9BXf/qujWR2TCl4zxULAfiQHwvP48Pv6j0lwns?= =?us-ascii?Q?yD41sAz5BWTpfuBSaDrCNZHZbXO7mf38iTV9nH1gEuLUPwpc3kBFkqA3zsxI?= =?us-ascii?Q?AC7UHuhmKCHApFzChekdqLPbCYIrtCbDKpUEgkQhMRmQavgxVJy46LXkV7xE?= =?us-ascii?Q?xonMjbOxJFRiKftTfNgqFLJsfnnferlMTfZXhAedZ46fH7TzSyoXb46P18th?= =?us-ascii?Q?TZAbKfVf9OzaktTsdXAVFQiw00db2SRX/Bs4n06kKmdSSudM1m03il7umsPk?= =?us-ascii?Q?2lBk=3D?= X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1927; 6:1r0KMXsn6O2nGHlfIyJCfHrAQAAEPCFG225naDhycM5XMpWPMhZFiKuIU5xJNxOrHZEh6eX5ZwK1z78KVnSGXASVov3+eInc4uGSrNmc8twVmd+Qaj79NxDhh+Mrp2YtiaaaCD2oQUPGQ8aiAhbWvwdlf8nYJUkpXM7btX5pNzEXWsEHTv1wnyssR9GT2kQdGRewiCSFSbs2IMI07TqBRK+nG+FdkbFw3GawGwHXFLPn4qg6Y/4ebU39ozmDDw3Nwjwx07+t3+9MTz7BhXV7GwyZlF5+aQPL0OO5XRzPsc0fouE/1IBUt0PoNx8YeVEJi6JWT0P6Wdd94yifIKR2CkmAWqdeo0BltJtrI/DF5JhsXb6GaVKM/9ghDD77r0m8r8LuIUzupO2uGQ3jdEt9RIq4w+SC5VU39Zj9INgBSKs=; 5:mLdPJB0RrEwGyqJ3WJmkx6JgGPSyFWu3pWLCe7Y2JhwGp++YiRaJLgkrVJnM32aPu6y26oX8wXoq6Ij51nppjgpzQpVtGkaHdMovsG4OPuNuIqapQUcsXbywF4iWiick90bJLjX1fd+YjY9+NoIZyQ==; 24:h823gaG6G7rV4SIIW9m7tL3tvbv1kKWfQp/tgpnHJDsyoB2h8RaHXbrpqB7D4xIsgOJdgH2fESfYlufVVCzbqGBGpyHbAGFBux85J7qKdTE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1927; 7:1TVqkSr4+pGbOj1PSAjOZiepqfQb7iLNds3ueEfmHTEg8qRUDRfJiKtxq+rj11g4NctFQjBOt00PqvMEsoHOCGJhI4PoLoGtwKkL6qwJvKRHcihtARGVSBAzlJUv6DyOH6hBCX+9QbgMZuIX71KqW9ITyNHvqX68SdkGTfi1fC1AbRZAwDBv4yplITdanwnOKrFJj4ggleQcGfwUnlKuUKOtLbk7QRPU6hXAN1DMsXx22Gr3sFh5l3AvBYllXOxSvgvAT5Q70Ir3Zn1tinn71eDlqQDWzvmp9IpJTdFiAvXFBKEVRW7benIvEfBp9di07smxSnTEsXr+QtiJQTQWmA==; 20:fbfmpwCJ7KupQg1G5Y0x9erFVe0NmJJ2micgss07e8DuNucrf391TtZi/aPLZMQp2oPbcMf3DflZ48cF1UdOJRNSjSgYRcUI9okX2l/X27TgCxqVnSYJkTFKtrp3tsg3xY/tw0py6VhG6E6/DCqUEyLgzAuN/LHRMAWxirXYiYg= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2017 05:52:32.1048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB1927 Cc: Linux-DT , Linux-ALSA , Simon Subject: [alsa-devel] [PATCH v4 2/9] of_graph: add of_graph_get_port_parent() X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kuninori Morimoto Linux kernel already has of_graph_get_remote_port_parent(), but, sometimes we want to get own port parent. This patch adds of_graph_get_port_parent() Signed-off-by: Kuninori Morimoto --- v3 -> v4 - no change drivers/of/base.c | 30 ++++++++++++++++++++++-------- include/linux/of_graph.h | 7 +++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 3fad47f..eac37014 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2469,6 +2469,27 @@ struct device_node *of_graph_get_remote_endpoint(const struct device_node *node) EXPORT_SYMBOL(of_graph_get_remote_endpoint); /** + * of_graph_get_port_parent() - get port's parent node + * @node: pointer to a local endpoint device_node + * + * Return: device node associated with endpoint node linked + * to @node. Use of_node_put() on it when done. + */ +struct device_node *of_graph_get_port_parent(struct device_node *node) +{ + unsigned int depth; + + /* Walk 3 levels up only if there is 'ports' node. */ + for (depth = 3; depth && node; depth--) { + node = of_get_next_parent(node); + if (depth == 2 && of_node_cmp(node->name, "ports")) + break; + } + return node; +} +EXPORT_SYMBOL(of_graph_get_port_parent); + +/** * of_graph_get_remote_port_parent() - get remote port's parent node * @node: pointer to a local endpoint device_node * @@ -2479,18 +2500,11 @@ struct device_node *of_graph_get_remote_port_parent( const struct device_node *node) { struct device_node *np; - unsigned int depth; /* Get remote endpoint node. */ np = of_graph_get_remote_endpoint(node); - /* Walk 3 levels up only if there is 'ports' node. */ - for (depth = 3; depth && np; depth--) { - np = of_get_next_parent(np); - if (depth == 2 && of_node_cmp(np->name, "ports")) - break; - } - return np; + return of_graph_get_port_parent(np); } EXPORT_SYMBOL(of_graph_get_remote_port_parent); diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h index 0c9473a..9db632d 100644 --- a/include/linux/of_graph.h +++ b/include/linux/of_graph.h @@ -50,6 +50,7 @@ struct device_node *of_graph_get_endpoint_by_regs( const struct device_node *parent, int port_reg, int reg); struct device_node *of_graph_get_remote_endpoint( const struct device_node *node); +struct device_node *of_graph_get_port_parent(struct device_node *node); struct device_node *of_graph_get_remote_port_parent( const struct device_node *node); struct device_node *of_graph_get_remote_port(const struct device_node *node); @@ -88,6 +89,12 @@ static inline struct device_node *of_graph_get_remote_endpoint( return NULL; } +static inline struct device_node *of_graph_get_port_parent( + struct device_node *node) +{ + return NULL; +} + static inline struct device_node *of_graph_get_remote_port_parent( const struct device_node *node) {