From patchwork Tue Mar 21 05:21:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9636007 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 5C036602CC for ; Tue, 21 Mar 2017 05:21:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4C98226E1A for ; Tue, 21 Mar 2017 05:21:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 417FA27B13; Tue, 21 Mar 2017 05:21:49 +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 5289C26E1A for ; Tue, 21 Mar 2017 05:21:48 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id F3FE4267030; Tue, 21 Mar 2017 06:21:40 +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 D55FF267029; Tue, 21 Mar 2017 06:21:39 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id 5391B267022 for ; Tue, 21 Mar 2017 06:21:34 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie2.idc.renesas.com with ESMTP; 21 Mar 2017 14:21:32 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 844C0679D3; Tue, 21 Mar 2017 14:21:32 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id 723D8480A5; Tue, 21 Mar 2017 14:21:32 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id 6BAFB48014; Tue, 21 Mar 2017 14:21:32 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac4.idc.renesas.com with ESMTP id QAF24750; Tue, 21 Mar 2017 14:21:32 +0900 X-IronPort-AV: E=Sophos;i="5.36,197,1486393200"; d="scan'208";a="238086041" Received: from mail-hk2apc01lp0215.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.215]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 21 Mar 2017 14:21:31 +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=7RmtKSKWbyHKNsn4pWBR5ZduOiubD4HwA3dvPPxlOFQ=; b=SiHWLONR6senh9WQSMXle2rQrLgMVy3a90l1um53GGbL3mTh1Snq1f6E1RwCh7qHNVaYQj7AXp7zufbQU1kG1rskcdL2uszTVNEKVw9um06In5Nwkgn83qWG6gw/DcNXPp9YOTxKe6EapaeqoqKffWPN4KxaXGiMNFiNdEbMZQw= 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 SG2PR06MB0821.apcprd06.prod.outlook.com (10.162.198.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11; Tue, 21 Mar 2017 05:21:29 +0000 Message-ID: <87zigf8ayn.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") To: Mark Brown , Rob Herring In-Reply-To: <8737e79pkq.wl%kuninori.morimoto.gx@renesas.com> References: <8737e79pkq.wl%kuninori.morimoto.gx@renesas.com> Date: Tue, 21 Mar 2017 05:21:29 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TYXPR01CA0028.jpnprd01.prod.outlook.com (10.168.40.38) To SG2PR06MB0821.apcprd06.prod.outlook.com (10.162.198.147) X-MS-Office365-Filtering-Correlation-Id: 1a5eab1f-6692-44aa-2245-08d4701a2167 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:SG2PR06MB0821; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0821; 3:fRAqMjp2+KZr/yLL02jaeu2Mk4WhBrwOsIYIAIhQRtYsfd/GV326vdxI2MJI8R5VL/hM6xhambw/81C/WFEE1w/kqvjfajLjI/Amyo7it7Y7c5wPeVKRx4XJC0prKCSs2o/AzhtZ2DX/9VMAceba0IXaBYTF3p5gLTPm6/9UnvV3RJ4wPH3OXn8qWEZDK36w4TbGdel7fvCnbMPyrv9Id/sRVV/+WL1SoJHFtyRXWug1O8qtIbGz+Ub2qLEcknRTm2eQIRe0gftZkZARaevuzzWlcW2FqrLNOZbPhR+YE1g=; 25:sqzVdDzsF7fZIvd8z2HpcGtwXwJ8OvLAjYwCl8p8Oq9COBxBi5WV+ZxwdFz/oCTn9BGj3aReMVTOsHH9InPalW9klYEK/0L9Xac7eaUdtCr0zhoUo/PWTcpjZlXp25Lye9PXGRBEnYgUNYUUVgNMl9hf/DVqtBkUWTEhpSQmH+A5+0w+mnilNXBJOIja3GA29aCc5oQEc/ybA1sFhIq2Vv7CD2h8BdSc0DZGxoVVf+VQo6Abm0/0TN6qbM41c1bXLDzwgsmNXukyugImGT2Ee/gRXZGnTrxdLdTRUsJSbeNm57Ji+dQLOY9je/oE4cBvif7B7UPnEy4zttUt7SNZQZsq6IjG6a1k3LJFFAKKdXUHXfWg8IGrwej1xrD1sHHrVcON94ekTCT3AUP/ZzY+MRzgnm3OHbiDPHGc71KMFZK71/plKyU5OOiA8ZBihRYualX8cq96PiNpYoiM51JyTQ== X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0821; 31:6agxjxe+NDvoeHvYd9uj/VAgMlHgBP1x0lcAK7MO17+mKDK2CzSo0xRbceo+hMBX2enrwtaoTOujLUqGRBmd9mRbV424aKzH/PgVvAIvrfPzwbnhQTpRLABxKrspvDpyf24JddPVNd8RUG78ZpLQxgNSVlPt23xuNwuXAJpXuO8pwgkjm/nU1HyAvAqHq5IVURdJGYxGusj1mPONsmJXs/dB9tZxjIlNsQn/V20CZKXa+/8YCRpTR9EvCCItHgYAnWvG8Y6AyJzDCr2vjuY9gQ==; 20:XjrHMGzZbT6Vd7AJFtfXeX2p+DPqYpPj/JNQS2dxJsN9ZdbzZaDKMSw86Uo1jP6oLXHCSKTWOqjHMojPMSnV91jYtwpAwB5j5jdRRj/mCJ+baQXlZM5bYu8bEcMa3c2vj9cf/rWTDpd9VkEjZLpxP6COfDMz91zSJHLAHpUgARarSWzU5Wm75URGfcb2ahg8YYBMRLHQ0SdesJI+Wd3TiR8n8aU2j1D49Nih5sC7mggFoqUZdZPgXDw7Je7SFL1uTx7FZykQjx8w1dc/tA+WmezE3COCHNLDuaR0knrmlk/x7gA4usNAvlFIoB5FZKD4+6pASe9Hj3rvUwYt8iGl3472BtgNJLjJAyd6RhW/q4HcU8buGgDsQn2ixZhXyugs7Fb3sPKJG40G7mSSEOky/xcai2/F/m/FbhtHASi82qTSXXHinwamZ1VfbcyGrNtdBrnuvfruKV6oNkA9eL8cdo5lp5cPSZojdsN4pEUwzwum9uemCBZJFXe6jjdhUdAJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123558025)(20161123555025)(6072148); SRVR:SG2PR06MB0821; BCL:0; PCL:0; RULEID:; SRVR:SG2PR06MB0821; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0821; 4:VEtkSOw/phQh6hD76Sz1DIFoCMerh7F3jNs2A264IBiAuSSy3LZuXMSdwyR4HL8lKBIIKl4L1GeP689fXBax+JFKu62LEuHrRH04604CoZBWdPhr7hLpo/eN90dVMpiXEGvHO99yVa5WbdT+LPCHriASmgjubvH0SrbJXabWKwqKHrx4Kq6bWv16dyJh8vgs89NPtarnB60sf1tzlVvn8yv/k5m9yqIQk2Hbb6A7ssVQieACB23TbOAe2nnZp11em8h+glaGYz3tlMfEb7OSVIsYtvTNzdaca3f634N5c/bImFZXB2XwGDnW2a2du+FY1KeCE20KMrGciFw87RX0gV3F/jCS9osEb12K0DV87UE8/Br0MYKd0kuJ9bPN+KxmJVEEz7wAv1dIP/lSq6mq9U/8NUfti+eUJlpVEgKggCZ/2g7pmxktm3uDHjJkWG13admU9187rIzheIpqrvw85SdGTZuhxBdEQN8UKHgJaWRFyUWGShUlzFYESy4B/VeKvNYoQcUpn7N0ZXlmqBdBslcKuwEC4PLF9YnePwRimqV57QLs700Gop1b+tktjaf3olnPFw60lyBvF1uJCqNmCUzC7vjo5BbDWLcTCuEH5485GsMnVmoRGPUCQzbNnQGv X-Forefront-PRVS: 02530BD3AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39410400002)(39860400002)(39840400002)(39450400003)(39850400002)(47776003)(66066001)(42186005)(83506001)(53416004)(5660300001)(2906002)(54356999)(76176999)(38730400002)(50986999)(4326008)(53936002)(2950100002)(36756003)(86362001)(54906002)(25786008)(8676002)(50466002)(6486002)(46406003)(81166006)(7736002)(305945005)(4001350100001)(23726003)(3846002)(6116002)(189998001)(33646002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR06MB0821; H:morimoto-PC.renesas.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR06MB0821; 23:KdL5pfus/SFpv9+kVZZp7MmsACDIA0pBXgZeggksR?= =?us-ascii?Q?q710yU70atluSZwuny6bi+J9wYeFH7ASP0qBV28dBeS8IvsxybtrOUrZLhcA?= =?us-ascii?Q?Zk5LH6LL6rp/pfCtd4RcwAHLvsOzt8xw6LbqwTA6CV95nbDF8ycsBKTBE1l9?= =?us-ascii?Q?3BvqN8XPfSoAbNw3uPZTUfwk9xvWj3qjDlN/wKfjQ1zvyagGnuJPgnaIe4gt?= =?us-ascii?Q?bImgbKLobIqcxLoi3pKOdFNRoIi+Y2PveL3iZGOc0tvQitK0wIUJFCWL6G/J?= =?us-ascii?Q?HXdAIUguqwKYaU0q3jpcgFGHJUnC0VUtakiojeGm+bWibx5kBV8YcSfvi+Bt?= =?us-ascii?Q?cal2m7miZqx9V4bDHTWbDMAu943zn85+BNxnDwC0gvFMVtYIwZL9LpxfROu/?= =?us-ascii?Q?hGPO32H/3JdiWNRRw7Tl+sk6ZEoZn9b3TWa0TA6NcsyFTWTzfujJGODFhWW5?= =?us-ascii?Q?8TRVjvBgF437aIp4l5Ga5H97Mv60+LKY6IBK4aJAKnewJxAbeRqV9ELEmrv3?= =?us-ascii?Q?BWgInWZ77WofJOWJjSeqGzPNOBOfyPP2Cl/PwOVPk5x/zLpIYHjWnZIwatea?= =?us-ascii?Q?Hu1dGFSDlefkumq67CP8YuFPKS74wGNnpcLXOJdr8M0Zv/e6TgyR0QWSGWrv?= =?us-ascii?Q?KzRWGece5E85IKY7bNsom3VZN8NzxdS3x6PAKwjuCVV4e5dFKBwsNPX7p8NX?= =?us-ascii?Q?s+bxntuuA+x24y5GrUNnRZF+ol3j0+TAgzpZbsKCVuUuSUs1+Pl3qV4Kq+tB?= =?us-ascii?Q?KMUPOYyPtxbuLlhJZAicC8piKrijbRBQaYeDhhcdgu0D4sfcfQOBzucP0mfh?= =?us-ascii?Q?NvEQmHm2Sd9mzAOsP0I/X0XZT4cyNdtyx+mHtzW+oNOWGPU9JXW5e07vD+oU?= =?us-ascii?Q?3XIxO+raGmEegDap4uB1UyO3c+yj9Mq7cujlKkqWCJwhpLjffDZgnMAVjK/i?= =?us-ascii?Q?FwwepM6Jy2XYHmVMcsWITmfUORtFj/amHjXseE50QKVODzbAkM1FCe5tRRSu?= =?us-ascii?Q?9KXrWOQ/tSZ3KqshOh8oBNq?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0821; 6:bc8XG1wjqMdjGe6A56V4PDx8j9Cxf4Q30QxhuNwJIBtDJdphA8W1aJZEJDwJnhFYDBkjgd++cV6QjQJD8WDjTRNlJ61TJIGhaGSSWGGt6nfIfrzu+o0pG1CdYSXhuu0pam27ATTbZLe926QslyAOpDTQBXFAl0aX3itG49pcy7u/j9QlJv7gdpcKTsJoDh7K6qWg149H2yDxfFoECdwrqIhfgV2x+jW3/6Sr/Ak/zfxlfd41EBbh7afloQnFfmaF4VzPf/03t3a200xXiF8WFgUwlV1ITYkOqJh0ZYEWrcqOHCn7iXP3+jf5FEaz0WFBEz1CwUzaZaOUTF+wSrITKzpmX2WgJHaDV3JH6poGdY+nDkYCccdOd73GA+7kq6KvKR2SFpBr4zntBz2d+TYf3pc86lV4zPlmndD2JgndF7Q=; 5:cLlq/A3LvO/dbPD4uEqIZ2HcO2Gvyft5CnCrpldPC3+R78gb0gcLOxe1+sMdz7tXjNaeLkuV8m+BdKsr6FImz+yjyWRM7BzogwLDixW7au2c2d2NDOvLvBGt41JNybQukcjSsdZStI1ToTuZHB2xQw==; 24:lbhqE8r9geXGGEoohfnVJifwUg0tPE5rn7LWzNjK5RmdsbjPJkvOeuOLW2I/VbS9B3dbvGNYshpNVxyOz1+NYDtyB3xHUllkkWujwCsI/Gg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0821; 7:gYMlDMeFm9MCN3FT+Te+98XV0kG17b6jU57BRUY5CQXZP48pQamn+66tZLN/9m6/o3ipAJcUCr2hpU+EmzlPrSyVUGAEJlFc5TYip2j4ugA2f3ENPURSGpXNphIyOWF4eJiCjYNdgsLqKcemhLq7nanr7xAxKk8o4m4WTTe5depDXTyLnK1AsOiqfnVy2RaF6mkendE7crQhn+1WaP3yKPhPKtYk1ptb25TwiMtrSihTV53GizoQ1thF2mC7dofR1+UXqAgT5RfQT5QQZilWGU/D8pYe9ulvLxi+KfDHsi+D6jzqhynZztbsCtPEGuvI6CG80EnmTKxxU41G0cb0kg==; 20:a2CVNnduceRKD3+foqduAWLhtwQds4jsouqryNZ2NmBzDNNM0aARJ7ppTyd3D9xoV1AedMwMJdqsm9pw1mleVrgSM19y1gTJQlmYAaBAYYIFjCgzQHHVIGYoSY/xWpJzeQw6DN9+gQRe9zwEUmxzTSwEKKpnDREcf+P/onibuME= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2017 05:21:29.2395 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR06MB0821 Cc: Linux-DT , Linux-ALSA , Simon Subject: [alsa-devel] [PATCH v5 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 --- v4 -> v5 - 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) {