From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752725AbcF2AhU (ORCPT ); Tue, 28 Jun 2016 20:37:20 -0400 Received: from relmlor2.renesas.com ([210.160.252.172]:48201 "EHLO relmlie1.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752448AbcF2AhQ (ORCPT ); Tue, 28 Jun 2016 20:37:16 -0400 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'";a="213979331" Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Message-ID: <87a8i4g7l8.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v2 7/7] of_graph: add of_graph_get_endpoint_count() 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: Rob Herring , Mark Brown , Mark Brown , Laurent , Guennadi , Grant Likely , Frank Rowand CC: Linux-Kernel , Linux-DT , Linux-ALSA In-Reply-To: <87k2h8g7rr.wl%kuninori.morimoto.gx@renesas.com> References: <87k2h8g7rr.wl%kuninori.morimoto.gx@renesas.com> Content-Type: text/plain; charset="US-ASCII" Date: Wed, 29 Jun 2016 00:37:09 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR01CA0037.jpnprd01.prod.outlook.com (10.164.162.147) To KL1PR06MB1701.apcprd06.prod.outlook.com (10.167.63.15) X-MS-Office365-Filtering-Correlation-Id: 95cc16f1-162d-4604-6865-08d39fb58222 X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1701;2:pnKrdpFcuCuFuL7+JAlYFqjYBskscOEkiQ3FQThWrbc9CFkfEe82og3n9BDwB/1UqwyAi//SwiWAE96MJ8V24hmmShvx986cxloQscYbrjA1yBTydKEMfGZxG+x8wVtzNOKJQUiPo19SBPJBD0COQZNqjnMGkTo4Jm4qkge5NC8biUQvmd3udAfqKRW1yCvv;3:KTDeFy/CjQO18ZNEk4ZV0oqz4KTCXreowapH4kL9p6h04Digq7FMxcJGVRQG6Q37gagzh5hirgHkQ/rZPpFep1MbJJctOWO1sIgXqkkDlHesDAb0Pf9A+E7beT3P3O01;25:5WA/mMyR0uLkPOj6014AnuW15PPb7hIgN+/N8SF5tY6JyP0SKgFRqsbbfKKyHuhXLTVKWe13MqOin+LnR2ZbqD5HrAtHfgyr8zQV+iX+Wq+b0mlrAvPUkKnl/11fnsPNRl29HwDYwVJJd4EZBwJrezXg77lhIfq7OAYfo6LH3KE4ztwBSTXbyVrz3s4yeio5kwcVGdg4L6sazUis9V5ifoJXtJawwwVvEjy4AlXPzTVLo2PWJqYVRtuwBaGinJg1N9Al1P+EQtaYvZPXqW5QBb+DXCHeh4RPgrGC3OUZtRhaoRl5bN0IRLaeP2w0dE5szXfNxof5FYCl+PlSfNDTOn9Vik7EF4MXsVKsmVnJ4zIfYJqJpjodKitWWRYbkMsfuwSI5nZkzsstt2GYRc91n4gvsEpC1d2VUGwNe9nQH84=;31:QZ5NQ7mhzPTSw9l3j4HwJC1G4SYI3V6kHTMcYzUMKtcCzx2SolK1XupFZ1npEqBgU1h7gNZubwukPyAiwtwGkSR+9Lc/QNZ4IIJXOm6fOuOSF6JfetK5fkwGchn6TC3adsMoHVmZ9p5T3jnRh605J8KhAnfujWAeQtwEIObNvIIJBNIrnqqviOIQEIuhY0HWZb+aNj224650RAl9EFWG IA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:KL1PR06MB1701; X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1701;20:hD19ZVbNZRQVIies5CfQDUHX8czltZNM8kVLIHHhyQ7wK+RPJXRq9MHzdoXf0Qqa4pjBgxuGrcxCILNCaKpyDikTqpcTJ4pBA2Sz+taA/bwwZUsz4tJXzc8oDOaen8tdOda2k5EQBFz+Sb/7Pl5ByETaafy8YMLfD5vyTzU9fh9Y+qHlHdFwuzPhgPDuQ0PiTiPxDOo1K2s830gyfIoYqNZMScBsc/18TVKptEEFl7Sqj4QGsJrRLof1OmW1dR/lFrPinRWIBdAbJzlJe0+9tO5j0ziOmAQkuNGM44nnTQ+DTnjIZHOyI5rp9hb+agK+e+qUqDONoj/KY0j2wXPb4KEYrLPEEims3TAFza7j/pZuCUVEbTRB0E2sJU1iRJkoh5GrqWDEe9hLxfuFCmKqj4BwmVcCE8zq63imnJDxlkQVql2xv7vy8XY/h3R/zjfwV9a1sS6gOEDAR6+p9XIHCPonEkDy358LgCJO/ahcJA08B0iZui/31dQETQscrRh5;4:0n2cVH53XpamTvaAP5pcfex6G9SyGi0AL3Q4yV4lrJwQbiqCJKKFtOo+VqIHbWTKguG6bk+0T7nnOJ4hh9/infVvTxJD6g0mKZFhqROv6UEiLZScmqeYPrCGj9NpU62qo2eaq3TbiTZnW6pYfxOWSPIZciSVFO+GIKgDZK35V61qjF+ZW4F7Pmy9wOh2s5KDrwoTlV43N3ms6KfQrJKJl0u8xv1e6k7XnZKUOsTS2TJfqIlxzYu9vRsCFV+uMjrW+pgjWg5l+hsQpcV0zIy5jqOpAldC7Xp3YLduT/slodoUCKVyqq5jaSJitGn0UA7KSnKzyPeYFz0lkU1WoeYD5ZYgArhyDYIo5fLdB491zTStva7ONOV9nnSHOM6edgxZY2XN4HO8TZsuc7iTd8OlDw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:KL1PR06MB1701;BCL:0;PCL:0;RULEID:;SRVR:KL1PR06MB1701; X-Forefront-PRVS: 09888BC01D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(105586002)(101416001)(106356001)(46406003)(92566002)(2950100001)(86362001)(77096005)(76176999)(36756003)(50986999)(42186005)(53416004)(54356999)(229853001)(33646002)(7736002)(7846002)(23726003)(2906002)(305945005)(19580405001)(19580395003)(50466002)(4001350100001)(81166006)(189998001)(81156014)(97736004)(5001770100001)(4326007)(6116002)(66066001)(83506001)(47776003)(69596002)(586003)(68736007)(3846002)(8666005)(8676002)(7059030)(16060500001);DIR:OUT;SFP:1102;SCL:1;SRVR:KL1PR06MB1701;H:morimoto-PC.renesas.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;KL1PR06MB1701;23:SBAeoIveYUCuScWWB7g3oKFscKJ0y7FugBh8HlsKo?= =?us-ascii?Q?8yGrh+uF4eV/tzB/3YtDBYr6SHTKdRkzzmZ9gS44QSLOqjIiSCaBPR2Je8yZ?= =?us-ascii?Q?zM8oDEq9aQ1QV+QXbOv6effMHXTrxIs7GhwJAtgQEvM0MsaTDQy0ymYvdygU?= =?us-ascii?Q?TiECp0Q7R4p4lZtXDsNFygQ4iCgqQvqhs/77wuHve5ey0wPntXfl1buz/u9F?= =?us-ascii?Q?u2bIbvPXj8Js99CZGDTXSV5PSUoGIjHeDwea1L64eLhH2eCNv3FTpkYCUsjk?= =?us-ascii?Q?7rYfjvc4SECm+79Wt0pIOLpmwD7+dUvlanZwDfg6s4c7Fs1lkVHPGkMim0IE?= =?us-ascii?Q?Sf/dRAvIQ8I4czDnspkHz/j9yAyrn781k4oNTKfav1K0W5lI/QqVXSZ/mayR?= =?us-ascii?Q?LFPk+5910+5ko9ouB2U328UD03M9afuFYAuCT3+Li/Dkd0BSbRuV4V/ayuKK?= =?us-ascii?Q?bYcMLb8Gjw6Ifp06cTwUYM7/iljsqFW9kG7HRE1gUEk8Ph2V6+3okYqQpoby?= =?us-ascii?Q?gUqq/TTRtzrHgSvkftPID5CP9zG6JWXvUC/rEdp39l4flF5Mh+skFWYEBj+X?= =?us-ascii?Q?+XL8o3qZMtiw798le//vtv4Wv8cYw7QsCWy5uaWXA63Rf2MT1kNFw/G3mp82?= =?us-ascii?Q?xQwIc+QLxs42orpy4gatjqiQrTeN79LmssGXoeEGNz8tm1Is78tKQ61g3VED?= =?us-ascii?Q?bd2LZmgj11CwISa1kpDpRzMznTma1QcFCWicrmvFQz2DAJrm/2jwA3tTeXi1?= =?us-ascii?Q?Z2FK5jFKG9zFKeD73cW32Gk8evT2+MmxOuXjLc9qPWbfxnMVfBwZc2rKaP7S?= =?us-ascii?Q?q4ivqLSl4KcwpwRa/V9M2PgywwA/4gQUDMDt/mCelQVYkzXxvqivOKUGyLQW?= =?us-ascii?Q?IVRZNiETSIM4cnGO0DG5pMfcQQB3G6Gz871CFcl7TowW35J/4wjS4R7S9ewk?= =?us-ascii?Q?99YS+DvxN0uGBt5vx1Isax+B8LOOk/lHnneVRRhDg/9T3qR5V2Gxy3AnhSmE?= =?us-ascii?Q?qOAROBHjU6Fzlamftrv/9wr3Sxwyo//ka7G6Hm8WnUK5T1W4X31u1jRlXJt5?= =?us-ascii?Q?aJBAszL2KheTaYA0gyiUUI/+JQt5Bzx7Y6nKBP7o9U3ZPMpKbYiGnaV0JMys?= =?us-ascii?Q?QjtAlU6yd2Uo1MGoWDYLC2OYJ9nha95AEQnzMtImUeGIub+MvFuP79c4qTPJ?= =?us-ascii?Q?gluctcQh0VrFxuARj618tKWP5cNK68fCjpB?= X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1701;6:DWHOPzQrf6ODcZUBxM4ZhSQ+7L1BC++tsrWgQqadyBU7hX6ON1DFIQwkI9uZHUx5yiJNz7utFv08HRer0yxgy2zrafLyCMoa3jRrrKrUNK3KbWrky2w4eCqDd5TsVgRHr/RupV7NMH61oRLE0WLw4HHwuPRwRQ+r2zA+CeieZs3zjU/HriHj8mjkaPm8FkMgjB8dzzWSVKZO9yro4UusJHnUfqRouUSuD/Q1375/O1Veecm+xk40u7XI8U65QqcA4NTZUlQ4fH5jOiYDOmWwxmO4sYkbolMimTYOpvP/oR3bmkR0AsW1f5VV9vR3/p4RkVXWa/EXmdZJEayKOrztHQ==;5:fZwQGdPZK8bCH/mfRjXs1Uvg7zeYS0mTMpJgnsi80QL8gN4M82ltyJXA8IxmkaOzTetStwwnTxmhVVQ7x0FEUM3q0ChhyiPKfNrmgFCguq1tjx1VECJGGjPjBFvIfeyXIeaNgWOSk+/VLZ7BLF9low==;24:4qWNW5pDFOIFvFQ6iUId2c6XZbwd5lc+rQ33uq4qCwXylocJNVCb2U4NgjNTONAg3ii8st96rrkuqeSU2qX/XiW595WArl/6PindwqOT5Gg=;7:4jX0Dj/6Rxd2K1xT5yLGwtn+otlvA9bFMCVa6mes1UuiTNDomsB1+WQwmhTTvfv6H3TY+YUsnaNFOFRGqmZZ1vefGetMpB33H22sdg1t7t/TqhYZu7qerHrYygjhhEYbWu7b8PbmRoKM7A66E5la90CIoRY+95jz6/iKmAc71QsZwRuJuUzs8mQA08h2drpM0Y0/BpiqAwLVQvdOFFHPwKVdmH8KLY2fNe4mLsXwRynK4Y3qqdh/ejO/etSWbqhY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1701;20:5grVYlGriFfYlZvfrsCNQDF2Q7QW22McTztIYCk1rZZZ0KTkUMEyEyVzB8WWs+7bjW1qg3MDdmw9ihLTLgU8Nild3DoSq8IYH8NbofJhbRjVfiBGY4PdTeswW3FaVAjmtkUBZNUFbrj/wZOu6psAZkoWjzAWbtUecfENfT3GRKI= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2016 00:37:09.9930 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB1701 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kuninori Morimoto OF graph want to count its endpoint number, same as of_get_child_count(). This patch adds of_graph_get_endpoint_count() which can check specific type. It will count all endpoint if type was NULL. Signed-off-by: Kuninori Morimoto --- v1 -> v2 - based on port_type_is drivers/of/base.c | 16 ++++++++++++++++ include/linux/of_graph.h | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index a39d483..84806196 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2498,3 +2498,19 @@ bool of_graph_port_type_is(struct device_node *port, char *type) return false; } EXPORT_SYMBOL(of_graph_port_type_is); + +int of_graph_get_endpoint_count(const struct device_node *np, char *type) +{ + struct device_node *port, *endpoint; + int num = 0; + + for_each_of_endpoint(np, port, endpoint) { + if (!type) + num++; + else + num += of_graph_port_type_is(port, type); + } + + return num; +} +EXPORT_SYMBOL(of_graph_get_endpoint_count); diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h index c88b676..28c51c7 100644 --- a/include/linux/of_graph.h +++ b/include/linux/of_graph.h @@ -52,11 +52,13 @@ struct of_endpoint { child = of_graph_get_next_endpoint(parent, child)) #define of_graph_port_type_is_sound(n) of_graph_port_type_is(n, "sound") +#define of_graph_get_sound_endpoint_count(n) of_graph_get_endpoint_count(n, "sound") #ifdef CONFIG_OF int of_graph_parse_endpoint(const struct device_node *node, struct of_endpoint *endpoint); bool of_graph_port_type_is(struct device_node *port, char *type); +int of_graph_get_endpoint_count(const struct device_node *np, char *type); struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id); struct device_node *of_graph_get_top_port(struct device *dev); struct device_node *of_graph_get_next_port(const struct device_node *parent, @@ -86,6 +88,12 @@ static bool of_graph_port_type_is(struct device_node *port, char *type) return false; } +static inline int of_graph_get_endpoint_count(const struct device_node *np, + char *type) +{ + return 0; +} + static inline struct device_node *of_graph_get_port_by_id( struct device_node *node, u32 id) { -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kuninori Morimoto Subject: [PATCH v2 7/7] of_graph: add of_graph_get_endpoint_count() Date: Wed, 29 Jun 2016 00:37:09 +0000 Message-ID: <87a8i4g7l8.wl%kuninori.morimoto.gx@renesas.com> References: <87k2h8g7rr.wl%kuninori.morimoto.gx@renesas.com> Mime-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="US-ASCII" Return-path: In-Reply-To: <87k2h8g7rr.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Rob Herring , Mark Brown , Mark Brown , Laurent , Guennadi , Grant Likely , Frank Rowand Cc: Linux-Kernel , Linux-DT , Linux-ALSA List-Id: devicetree@vger.kernel.org From: Kuninori Morimoto OF graph want to count its endpoint number, same as of_get_child_count(). This patch adds of_graph_get_endpoint_count() which can check specific type. It will count all endpoint if type was NULL. Signed-off-by: Kuninori Morimoto --- v1 -> v2 - based on port_type_is drivers/of/base.c | 16 ++++++++++++++++ include/linux/of_graph.h | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index a39d483..84806196 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2498,3 +2498,19 @@ bool of_graph_port_type_is(struct device_node *port, char *type) return false; } EXPORT_SYMBOL(of_graph_port_type_is); + +int of_graph_get_endpoint_count(const struct device_node *np, char *type) +{ + struct device_node *port, *endpoint; + int num = 0; + + for_each_of_endpoint(np, port, endpoint) { + if (!type) + num++; + else + num += of_graph_port_type_is(port, type); + } + + return num; +} +EXPORT_SYMBOL(of_graph_get_endpoint_count); diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h index c88b676..28c51c7 100644 --- a/include/linux/of_graph.h +++ b/include/linux/of_graph.h @@ -52,11 +52,13 @@ struct of_endpoint { child = of_graph_get_next_endpoint(parent, child)) #define of_graph_port_type_is_sound(n) of_graph_port_type_is(n, "sound") +#define of_graph_get_sound_endpoint_count(n) of_graph_get_endpoint_count(n, "sound") #ifdef CONFIG_OF int of_graph_parse_endpoint(const struct device_node *node, struct of_endpoint *endpoint); bool of_graph_port_type_is(struct device_node *port, char *type); +int of_graph_get_endpoint_count(const struct device_node *np, char *type); struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id); struct device_node *of_graph_get_top_port(struct device *dev); struct device_node *of_graph_get_next_port(const struct device_node *parent, @@ -86,6 +88,12 @@ static bool of_graph_port_type_is(struct device_node *port, char *type) return false; } +static inline int of_graph_get_endpoint_count(const struct device_node *np, + char *type) +{ + return 0; +} + static inline struct device_node *of_graph_get_port_by_id( struct device_node *node, u32 id) { -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html