From patchwork Mon Apr 3 07:57:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9658907 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 1C7DB6016C for ; Mon, 3 Apr 2017 07:58:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0D17327F95 for ; Mon, 3 Apr 2017 07:58:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 01D3727D4A; Mon, 3 Apr 2017 07:58:21 +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 16AC427D4A for ; Mon, 3 Apr 2017 07:58:21 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id A6DDC266B85; Mon, 3 Apr 2017 09:58:19 +0200 (CEST) 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 D845B266B83; Mon, 3 Apr 2017 09:58:17 +0200 (CEST) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 8D571266BCA for ; Mon, 3 Apr 2017 09:57:56 +0200 (CEST) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie3.idc.renesas.com with ESMTP; 03 Apr 2017 16:57:55 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id 0A40F5FEDA; Mon, 3 Apr 2017 16:57:55 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id DEAE0480A5; Mon, 3 Apr 2017 16:57:54 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id D8DE448014; Mon, 3 Apr 2017 16:57:54 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac4.idc.renesas.com with ESMTP id SAS14152; Mon, 3 Apr 2017 16:57:54 +0900 X-IronPort-AV: E=Sophos;i="5.36,269,1486393200"; d="scan'208";a="238550915" Received: from mail-pu1apc01lp0021.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.21]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 03 Apr 2017 16:57:53 +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=Q0U0z6htQFusEYIAddIzr3/pvEjngjavyAWyptpE6UxBsPyXrTtBkUZhuNEQOdJUkaOdlFRWB2lX+cBTNJ9BWNAp4g2KqvkuKJflWo2nxR6eFZnncep+fzaR/lbacnzt8eGByGDPTMI64O6+ZVfEt1P9xZXWoGaibfbKwic5bdU= 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 SG2PR06MB0823.apcprd06.prod.outlook.com (10.162.198.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Mon, 3 Apr 2017 07:57:51 +0000 Message-ID: <87y3vilyeg.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Mark Brown , Rob Herring In-Reply-To: <8737e79pkq.wl%kuninori.morimoto.gx@renesas.com> References: <8737e79pkq.wl%kuninori.morimoto.gx@renesas.com> User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 3 Apr 2017 07:57:51 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR01CA0142.jpnprd01.prod.outlook.com (10.174.224.146) To SG2PR06MB0823.apcprd06.prod.outlook.com (10.162.198.149) X-MS-Office365-Filtering-Correlation-Id: fc55e71c-620b-49d2-3782-08d47a67212a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(201703131423075)(201703031133081); SRVR:SG2PR06MB0823; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0823; 3:YTzho2UUyUpB7uLTYyW6ppLJamX0hdZnjPZT/IwP3CO3tCCyuSzWZ6ASp97vHjUqalIShjULnC/CnwxGo4KNVuoRzQ7EzMdezI6AWLI55gtKR/ufDo07mODpdoZBk4i7iVHIw06gTdz0vKZjnoWLe82KbFqnxPOw765j4KQ4GaOWoioqRByZvypUdA086uJpyILQ8yUpDXpBRfzLYAPaHSe+wePSnPH/lkU+SsFyoVC1JMyVS9XgIZ8Mjx6/fuIERt+MJz83LfZN4sKbCoXlTR7+wQFcbhr8bCRQ+qh2Be5BSorLs0X2BgNeYq1FT8YDAvCQnoe4nwN/VEKU0NMh3HDWDqMKEA43Hvh8zdCWXEM=; 25:JHZealTkSVb2kU/kLfOEMZfscXqsagwHpYDAN6oHtaAQsa5YjM9AewVGT/Cv0ipmPJH4tht7GZN0dgOAOD3nlw3f/0uYUyWtXfhiFs9mESDg55oWBp61kZAydywig4llxcqE82R7+PcPbNcSgWzov1fYzlMSLTC/YxsK+F/I/Is6mMe10NZSa8Q2FL8XjMUcFvAk1S7/QE/0DZ+QglASlHDBIrV02XtnYQfqmF4SodGcMcez7MHTN1t5NbiqoL/WyaY+xHzNoi9Z1urCSlbBFZzMWLU2mVfpyhzhvf41oJ1eJgi+J9Q24EAUbqXN+lq/2dBFs79eBpjWkjqTtLqpEXRQ1DpSPEWtdrcgUHC3XmrsYW775mCLAMo9iKQCi76S2PmMvtYItAxY7x5d1TySs5KhTx/weXwvBfvGeZfB7w6/ROetj8tZEUi3Cr6ja7BFQyaV+5Pa1UFuNeuLtBN8Lw== X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0823; 31:+pGIiEvWzLN20yP2DtmisX5GRSx8uZ1bAr4gzORop5Pz6pTqz3ZSj39idH6RkSy0Xf95WLurvnGG9aBDzRozwW6PPMfsOTw6zEFAgzw6O39xXx7HPHjMGJI3Z7r5nWgaSQcctjWnFqMX3GBOaW18EKtVPGmh5g55vCqtDbluPmkZctSHax3/mkAv3dcfWLkq9ql/c8OQTK1Qux0xdSoASk8g88SfFoHhcmCD79mqQ6T1Bfa+QpR77hHvKeHpTDiy3R9oaFlfa/oDBAksSCdXY5GkWwcdb+CjV4gcvuWkeNc=; 20:PmnW9l9cKOlUyymBzKh/1RRqCWAEmBr5gT/KBDn/TkbwTAZZhvcsvMwDQI11ocO2flVUqT+4SLSdA6eZsEQeFID5Wj3MkrNNS5eM9zLGXSblO5bUr2OoViTtT8Yfc3ql2Qb22n7IYDFhFaSXErVpqVGhBnEEry5tEJpCdqKki2386t0l3yMKRtd5mWJ03duqAKBTkKRP9oz4jYc8QMh6RilYUXEsncuN5afmTnkfZWGfEc0AW9/pYvE3nVLm7gg+sX4lmeFMEZ0m3PyG3dsM7mRqhIIXR4ji46FGEGcHXQ3qt2Lns557QQYo1jGSpN4Q7/Vi0Ox45zwc7FVR4MlKomPCpm0jK7zegiCx5+guzNNyQSrmzDPX3xuZUUAeztB2vYsYPbYnUE8lpM1zbTo6t6nnp1x3OOtEPIHyt5896fcV9VahoPm09OaTfxHQRYKH6rsprYVx/KfR/zAfNL3b8q8IaZgoG3qGqdB2lHhhUcEdllVo4fbvo3fF+MZwyH+J X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(6072148); SRVR:SG2PR06MB0823; BCL:0; PCL:0; RULEID:; SRVR:SG2PR06MB0823; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0823; 4:2HFzzDK5hpSctZDAqOiU2kwGDYR3xwXOl7U2CxFUciyrG5FQbk8ZFxvklmn6Qb4K07sw3TNF79DSno6BWmoBREz8jm9RgEN3HZbHK3WZ+MZZkmRgriRmhaFivvZUW5V4jkBrtxwBgVHO75EkimjpyRVNLnKWFsvX9GeSkh1suAuQotvR/4VykzUAP1Iu3uJ91efeVcAKmoMaW2n1EBleGCnvOQy9eq8Ve8UHSVbm/3IRuVNHjMlj9I7xd/mlST2HFZonOVqcAP8rI7YIsUeiJ1wsJE5QhZNKEQzQP2lAS/61OKP+kjdjoitkzdS2qSXYn33MOPBpXEU2bobKUbecCUBOVHOEDQmEbBSFy9vsxbqAGu8akMfqgmIwGZTuSivnrzTV1bTerWAAdKAYlPv0X+gPiP7JSQhsJ50qsmqNbrJaZC+4OTcAAv7e60XO+Wse9ZYH2O2+YnDKL+xMVqoxLEeGcWq125fEuWGN9dy+bv+2N8nFZmvgxuA4AkJzPIZV+K3DbWEasGkrl8ORtSKDAXnrelDF9UPbbyt/y/d+hD6cUOAofTDDfFha1m5el5CZf2QS6Ie81WF5ofSYM+Pso22N6p8TciOO/Zawl2BWb01qDat19uiKV1ctLYjReRrrwT0AZefDzWlRCDmhzTpc17v41dS0g16QLGUnue28myRjYehFrtrRDetruQBqshlSZem+bHJtz2ewBrDpBr6Q+CTGywyH3K48oRDAPNixu48= X-Forefront-PRVS: 0266491E90 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39400400002)(39850400002)(39840400002)(39860400002)(39450400003)(39410400002)(4001350100001)(38730400002)(53416004)(53936002)(54356999)(86362001)(6116002)(76176999)(3846002)(42186005)(6486002)(54906002)(46406003)(189998001)(25786009)(33646002)(4326008)(50986999)(23726003)(36756003)(305945005)(66066001)(7736002)(2906002)(5660300001)(2950100002)(81166006)(8676002)(83506001)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR06MB0823; H:morimoto-PC.renesas.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR06MB0823; 23:WEShs9NWRY24myJkuThKjFkGGXLsx+KM8Mk5fbRsi?= =?us-ascii?Q?/APgAy39KqBSoAayqcPDgSBIF4C1wPqF/B1iZ0fgQgvkXUoM7K4Qxd07CLvL?= =?us-ascii?Q?fI0JN1AGi8gJkRK6yOusvfD8VHoiiX1sMSbqtt4kSoRmsPpxqGo37B0l2SeY?= =?us-ascii?Q?HhNWByE1glN0viMh2GCBDVyKF80YPROKqXT/iyhz44m0eR0vvHdURe7Xe1zl?= =?us-ascii?Q?OinZ8CZ4GWdLuMJWLZGMq7C7Zax60EgbNTSvpHzIDeE7Q+AZdt7L292AfHAz?= =?us-ascii?Q?4SVR+ULPFqwebKHR/14dyE9DFXxl7fOSlmNsjr8+G9QBoWDuPxtj4qtq1GF+?= =?us-ascii?Q?IZOeatrGWo6TEzezlklMSb9A6/Uh8Z8b0T50yO4x2dp2+BZ2PkZ66zG7mQ00?= =?us-ascii?Q?zl9mwtskg9c2ziS6gJXTBxJ89u5S1Du0UdwQdPC8HXAMAwxhB5OotPaIS776?= =?us-ascii?Q?DAb3HNiiM2d9cEoijCVHirkd4DZGQG8fw+6pA6YncH12Qn3AJ0ESi/Yi8obv?= =?us-ascii?Q?E2iOsP7YaYjPHSpwa9XoSUuefC+f6d+ONSgNA/chQuWTwe/qqI59fGBk1RIG?= =?us-ascii?Q?8Jgebs4SMgD/bfM38tv9A0S53j/xVK8MVIXbQyxeVLz2LLBQs/dOvsWX/lXg?= =?us-ascii?Q?17dhHUja43gUhWzm2KY6OST2B0DnJq30JnSXdrdbv4Vluxsn4JLmDfl7Nfm4?= =?us-ascii?Q?wQrN2z4beorUuJjXVmd9ZckT1V+XQ31dP8wUauplQBEyN66Ef2zghgnxcMPo?= =?us-ascii?Q?nDqPyxwRYKm5qL3OMg+bktvsMWE5g+owafSpD5Sufb4jT0iEHcBf9apUIDA2?= =?us-ascii?Q?/K5tYMA9Kyd/qNLq6zOSH19j/a11fyt3kwcqrthEBWp0LDxSxSkrA0MnNWg8?= =?us-ascii?Q?u1WG6T2o0pf+iTgWkM+InmCVRAKd9OzPs/rNN5Aq3uF6zrI6vuWWgBDObaKc?= =?us-ascii?Q?80eNy67fRTplaIs2XOMrSJT3buiH+2ncvA5upkdlTSbGDUVAXbgDsQBZH+eG?= =?us-ascii?Q?ap6WGejev3LJordIdzIWnvE?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0823; 6:uR3vyGROCsg/NCV8EpzGPavNMRnWJZyIZ5rCLsAYaQ0MdVaqvfwdf2px3PMf39RpAxMaMIqKPBqOP9aSr5+YMeGW7AjM5cMtjWMqb8ESsB9KqvtUQkrfuTBIqj99kY5VooO+MjF7f6Uqmk8mi7iW1AQEfTxRmZHDPvWrXgzcaI/m03ZRoFCwDlAxHsQzjI8YgBRlOSZq166KJYwVhEOntaWWm0ETufIv+5ILVcNeKC+EKmDqLTtowAPPYDGzlPs4aqNN/5DsG7fh6G4saIur69kyUtLlN9Lp8TN58JpGktXTyzYs5AFzkcwPW1161KwQhEaEtlmh3xdKrEfsOq7YXFl21x+Yob0cmSW5tpxsP5+gV9s7uZYuE9wnmEknBATgnHoXZPe3m1DlhS4daSmMUpt4f9wusmpFuve9kPMf590=; 5:lxPki51dKu88P9WbDDvRVRSlKgRpNzuY9jypw2GpPrbukooxXz+Ap7/3cX+6IrJGEHBYrCk8T6QrdJdEDpfiagVVJ8Ec1G6BEkBGxjlbbW6JzXBYTVwvbLR2V08yctD66mrS8xBDc+3N1aFKhs5/dg==; 24:jiGt1mBGuW5sD7kkfXrDQxP3T+/ZUg23JbbBBXS98IDgb1rkO6osRxacevViQhO53N/oXuctoSq1xYJlkaeLFfM/cBEgrsI8YOqFf/w5D08= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0823; 7:ZU+wqG1X5nrHHd529ozfkPGVAc0LdH0g80Zn6hXXrhvx+qjQYRcdU/v6W5iXci6MEK4wmTBvoqnYBfeuv8eblIylRibL/0Xfs+hhXPhyixxOna3+nd2+bj1rKvfHc/Re6NGty696621uKY4QYfjIYmOoj91eQEDr4Bb3lT5klPTdQmaa329uWl4W8wNml+AjpJ+xnnGECYmb3froAkpf7sMoZ9shV9r3MYPhV84zxTlPUvOUn0AjGJRq4E/zeA5zgFGzZ85P1KDraoqLpQFbkReHPyt2Ik1/3nvfHcbPWRi8XnxQU3uvS9kwqMEcUPSMuMM72DKp0edRsbRsy8qIRA==; 20:I9c/QmuotCbPTsO8SW+fqVorSxqxZgCbdVdFaXVdN0YxhEYTsAbQizwxfvystuYTqoqc8pSebLXle8k2Eqr8YoGtV+0Wn3XE1zcTw+weEJl6i28DmkWPu1s8Hxko8Ip4SHn2SliAoRODZ04Qs8gW9Hfgo9JBYScsqGsVBaaUMwQ= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2017 07:57:51.6780 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR06MB0823 Cc: Linux-DT , Linux-ALSA , Simon Subject: [alsa-devel] [resend][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) {