From patchwork Fri Jun 24 01:17:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9196279 X-Patchwork-Delegate: geert@linux-m68k.org 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 330336075A for ; Fri, 24 Jun 2016 01:17:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2196A2847D for ; Fri, 24 Jun 2016 01:17:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1618728483; Fri, 24 Jun 2016 01:17:36 +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=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 707662847D for ; Fri, 24 Jun 2016 01:17:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750847AbcFXBRf (ORCPT ); Thu, 23 Jun 2016 21:17:35 -0400 Received: from relmlor2.renesas.com ([210.160.252.172]:37565 "EHLO relmlie1.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750838AbcFXBRe (ORCPT ); Thu, 23 Jun 2016 21:17:34 -0400 Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie1.idc.renesas.com with ESMTP; 24 Jun 2016 10:17:32 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 9C5744BE5C; Fri, 24 Jun 2016 10:17:32 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id 98D12480A4; Fri, 24 Jun 2016 10:17:32 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id 91EEF480A3; Fri, 24 Jun 2016 10:17:32 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac4.idc.renesas.com with ESMTP id LAC16973; Fri, 24 Jun 2016 10:17:32 +0900 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'";a="213663752" 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-SHA; 24 Jun 2016 10:17:32 +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=6xLrww/T4Vpf0fY4yC1H91KA2xzqBg4+YREJ2ZqJspY=; b=eCKCh7a5y5wFjRKP2vk50ddIyUlM8fbG7Yb5JcU4ibv+wTXjhVzRDIwG4q3rSlvmwmdqcVrXwnLnM8DhD5cgCdKCk3hJu20xuBL74q355IJDoLhMuaWEsSzrBORrfcBB/aibbkJ76RRfo1E/sM48YTb3jGDQhwX6eE0IwtxhZSk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.144) by PS1PR06MB1705.apcprd06.prod.outlook.com (10.167.53.15) with Microsoft SMTP Server (TLS) id 15.1.523.12; Fri, 24 Jun 2016 01:17:28 +0000 Message-ID: <87oa6rxugl.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 06/11] ASoC: simple-card-utils: add asoc_simple_card_parse_clk() User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown CC: Linux-ALSA , Liam Girdwood , Simon , In-Reply-To: <87wplfxumi.wl%kuninori.morimoto.gx@renesas.com> References: <87wplfxumi.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Fri, 24 Jun 2016 01:17:28 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TYXPR0101CA0037.jpnprd01.prod.outlook.com (10.168.40.175) To PS1PR06MB1705.apcprd06.prod.outlook.com (10.167.53.15) X-MS-Office365-Filtering-Correlation-Id: cb877326-18b3-482f-bcb2-08d39bcd4eff X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 2:LMewbxcaYWTXaUzLqyq6beY86cCaLgdilhMOrB3SkYZjLcIQGoqJ9mzeFJk+ALpu2WnTBcAj7h/2imgg6fLmHu+4aJKdxxLdQCV8sZfD4Hl5c4Eqd4hIMI8OQ654D9lBnN7LDLfdvzm4aOCTABD/WXIJRiocsLCq9WsO+GlL/FVNpcYyZTR0xsfdSinxFdSM; 3:SLQVWaxg4zbo6Xcamx+ZcScL5u/DK7HliuUbLmco+D+SUYTYQt7iqRBUdxxdXxYGdJZAb6tJqk27V3NA/t3H+KIqd9UIj9Y0xoE9n6uyDXxtm5TRxgy6wBYe02YP2w2G X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:PS1PR06MB1705; X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 25:4N2bfYX7/z8GUfu1/beMfF2uif9YX+fxinrs4bgeW9nYpu6yscRahuiY3P1mDMkuiS6bZgrqMJ1smp8F8OZBKMhbOfHmFIem1ksczEGHrLzr4k7sbmmFEXu+rRWo+bWg9N0cHMccprLZr4kzlPTHpmbcDru/G4NuflxGktiCGazCVknr4V31vvljSLgdhO405hPkvHXRTVFJlWfhz+VdIhPLGIXQ5kVlxgbSn1XNVwo8NdGy8ZrBzqLCPvNtOPbuJUQRSpcOr2PzfMhOpgPA9Rbk3EAEOdESuAJpzvgtA/cZD+4eVkn9G5wJxTmNH3HP2mdnZkPINA6VtCJNEDZFyz613nDIX2w0rR93sqXBmFz1svP7I2WHzpUKcORe1R0+qs0mleuMfr1T5tOS86/oh5kNaIzAScSMM9bzqxpsHg2eEAGy233bY3rtCV5oTuM1L2uZAX1CWE1MrsChrG+JGTc6cbB4ys/9+Bii2yXk3CghHMf/JBEjPwLFdnoQ9TADKuXehEUgUEmuB/c5F059L+u3r4z8NvswcCgkJa3BglnfYCBIbHHUHviGmLXX5sxs2927PWPu3wOsrtWi7A4MHmYYMygGa+GDxNvZKyfkarTV4s8IpxI/Up0ijme+w7U92EVQNpIkCpez1Zh2NgRkS225KQvg4weJ4KGGkGl/47YWE0wW4ibpNMARnuVD8VRk X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 20:8zNkyqIpXTqDa7f1yUKCDxL4rFif3lzq/etGKY7qfr7OOkt8mvpURC6QPYSrnwmDAlL1Q3vEhoXkHhwwHRYtdF8Wm8OW75WcFPRCpMcQKcK3LtqVCLRjELQng9X4mNl3QOS2TkuDEERLRmSxOpxvtqqxVWRhAVWkOg7P+25apvQPWf3ACHZE9qZD6yEaP7CnVcof4x2VNtRpI1Dasw8dC9Q4xBr7EtL5WN//Vq/kz3+D7jrTiPiGoYcwF1wdnBnJfk4tnCIWJtcUVtcWt0A6x5wtruoPa9djLXiTKR5YZJeFmEEu5wn4jorFBPrYyM1fyKBxa3RFi91HH20nXkhlGuXlJ7n8hm9pZ5/hkDh7l7jbt0aF9Huv1mvSlkgqLVEU+dY3Ia4Kzne0frqfywnKoA/ovBBS1eVJbZX3KdsumlP7Bk9X/nsdSi3/Xut+oZarSmZpyB8dXooFOOj32pzoTI6fHPIoxqVDiLEAUj7JZbSRtOVbF15c+aFJ/QuZnAvS; 4:FKJIUhvWUrk1nu6RyJzomhCDdgzv6vlebmzfUXJ7ooFLzv533aJXpAR9scU4AutVb5L7PbvoWTt+4AWzeNpmgCup2LyHI3/du56AgerHl8jTT4sqlM9XhFEMwhQ03T7Luvpsj/fa7pCI0ULoS0P4vuZpuqDrxvL2nhxp980+cemIbrPCEzyDeGAWXA617ADdFPm4Xq/QnR6UwzU8+GOnrrizQyi5zAm5vdazbAGoNWe8gSRUdDAiZFwWZEJ4d6BMe/LRDNJTQxMSXW3GRUzFIuYHNsKjfs9bAdwUqRHf8KEByVKcoYHc9X8vQjs83IH8LKT4Eq3UWQqA884ZBMljmNWj5q8Yq+9oEYE2eDKd6WZw5+HTX9S9PZqr3kdkHIjktMBoKYbMUOe3RgYqqu5zkw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026); SRVR:PS1PR06MB1705; BCL:0; PCL:0; RULEID:; SRVR:PS1PR06MB1705; X-Forefront-PRVS: 0983EAD6B2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(66066001)(46406003)(189998001)(110136002)(19580405001)(230783001)(47776003)(92566002)(86362001)(4326007)(69596002)(2906002)(19580395003)(7846002)(3846002)(586003)(83506001)(23726003)(50466002)(6116002)(81156014)(8676002)(2950100001)(54356999)(53416004)(50986999)(76176999)(105586002)(97736004)(229853001)(305945005)(36756003)(7736002)(106356001)(77096005)(33646002)(4001350100001)(101416001)(42186005)(68736007)(81166006)(21314002)(2004002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR06MB1705; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; PS1PR06MB1705; 23:0pXst7FzPvsw0wteM47CQWWnPtS8t3pZx6kx1kYdH?= =?us-ascii?Q?E52h94LeCqz1vlpMx+hwZxX72X5fI5jVzZPn5SlKIhF0vLoQXqGKzCJHyp67?= =?us-ascii?Q?qGhJIZUUOohu9mPtFCBOSTr0yZ+6J1tU+yYpXnLbEWHVHxY/mQ88GM0fl/OH?= =?us-ascii?Q?By7U0JYM3NvJI9eaKDDWCqouriDo8GEuD9UaPTmJLIx79tYGqPyzwQN/UL0k?= =?us-ascii?Q?hQPHfTSNs7PMmS8/0FymMqMST2DfopaWyv5Wi7U0QdXUoviHSukOGQ/ak0DK?= =?us-ascii?Q?fn5kbhnnByFMH2YHyj8SWEewfEV6tQ3BCVc/XzmgKdTphHFv67ApuufW7ori?= =?us-ascii?Q?upF/ENjXLYvWYMDGDr5pqWLhXdLAQMlRn+W23x73piZgtjhILA7jtyzJXPss?= =?us-ascii?Q?HLE2kBnuLaRIzNHVudFl4gnG6thSqTNfPfryx/S1M9uZRjfT/l0gKPbXQuEv?= =?us-ascii?Q?nUTWKx8ZWsyZoC+UZCgx+k6k9iIkbzuD/FdF+fK8UMOIt8atysGXQHhWTq8x?= =?us-ascii?Q?ttT9drv8cPxkA/z+2Ucm3oJcrCQ7jAsZwemlyQuvREuwlsDBga6x8YcHlRb7?= =?us-ascii?Q?U9Kr7Rp3ebiWTjoH/LMsOq5L678jkJ/t0rHUWK/v5NqiVbFNw4ho4bmOxjSS?= =?us-ascii?Q?COiqT91wa/yxmk8icZFbCy8d5SdaiEsDK/2T/cBs+QM+j/aQBXKIcNeX+COX?= =?us-ascii?Q?Yuup92yaGFlClI1UjRJ+Ek4h7QlK5YrmQKAJl2dNz/Guq/myKnTGXbTp2qw4?= =?us-ascii?Q?sMpFrH7Ga6jF5v76K3NYl1SCBEp43+4AzSI1NrE2yHc0CKyG2SCs4bM/Vbzn?= =?us-ascii?Q?Tj/cssi4DsRn9VYjh9mbZZjGz4+hN0Fw/CVxUlWXYY4g6qA/kzSFsfp8dkK7?= =?us-ascii?Q?ERkynMIR6Lx93tZd7Smdi97iT+8D8z6qq7UML+EgJ1sDJ/dxSC2tDy5hlCkL?= =?us-ascii?Q?zH7rx5JDQwTjuW02RIy4qKLFHeBttC7AjYiVAv+al48zwFBYhUmxR7+niTYL?= =?us-ascii?Q?eGZgF9S85zap9rVKshlMDVGB0xP/mWpZTLnkpIiHnzxruGHCvLaJ9xJjrh8j?= =?us-ascii?Q?d1rVOtmMyP/xXk5SJd0HgZK48TGBNmMV4Ybae5e6fqt8a2taol4g/vHMHGtb?= =?us-ascii?Q?7VSE2eGKYofzl7KPjd8jxFTNNVGgWcEFUC5i3bGeIS+PJeFvzGvOP0xBlYA9?= =?us-ascii?Q?UktgT54AO62OnLuYmtMy2p6njPjo/ET3H+1HqwTmn83Mw4SYAP+G1SLKw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 6:89bf9PhYH0zUrUGonkouYOhgqvecHf1Po+ol54Lw2ibyDLIxv/ZHuEhbsDOe+H9V9/Jd0xovqPK/DdVRg4RO2lptPkkFLk9sC0NW/oO5W/ZtWR4LXCULdpxu4mEilNCVzhafjPiWI+NziH8e6GqLtGoAssMASS0p+MMnpD64iuGZpGWWDMUdeiY4iaNAEYYL0LX3PrGZCeTEf9rlYYsjgWPN4MePDQX4I0m6gYKQrXTh0jcTr8rFfIPDfKXvHkbEm5+d+A3WS1RixM9skkzMEhWN/0xW+7LdvYKzg72OLBeTni0dQoz5yo4lXfFWsGeWEmCdfq835zt98GAFbzl6Xl187DWHjKCGh5B9heDWKeo=; 5:6eaO/SG+YhNr7LOdOpMeKLl8fNA/D49Vov0BRzG18aK87vbAL/eMPLXmiks4qXuul3+KbCoHPFrdPKUW8VuRJVtnnKlYEhDj/EPSgYf3g4NfwlVR/uxs3RC6LKsoa6/58e0u6mytOGLINFPqqKY4Zg==; 24:eTGVL3tjf3DGbAvfcd7bu+jOaGkFVIOhYRRO0ZlLPH8DOeTNm0S/9osgOXnrskSKVWyr19AzcdiMFLaZlZsn+f2OveaAV+rgb3H78QTjdaI=; 7:WMHhC87/6Z4xpIt73NAWFI84OqSr8Ok6MSCcIh2xxa86mhSY/7zOd8MWpwCu+ve+Va8jtVKTMx+XLduD5yOIRBptev79pQfDRjmsJK5+HO2xfRn1yRY0ThLaF9GbP2zX+bn3WpvSMQk0xJWIvWXZDyoCADOPEbUZC5U8eGVhofIdklSslUBjrt9kSPnwTqcolu0DZBw3dpqVLM9+n2D6iqArtT0d8OCSKCRbPejMY9o8rGpuD8ZFXXsRsTPAXjVPUZv/+2zxiTCwHHry1/IT7A== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 20:l9KqocUZHoxpwa9DjrREu8M0chES6g9ICLNxzoXplwABAESHoDEkoqTAob/dMY/BtPRKlIf3ivRmsXJZayj7fI1GqsN+UoN1OigJ5KfC2KxhzlFLUIokjtqHge9f33jo90QiI4QeRs+ajYbsOlBAiSFhOxA1pvVmkENwchuO0qw= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2016 01:17:28.1332 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR06MB1705 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kuninori Morimoto Current simple-card can get clock via DT clocks or "system-clock-frequency" property. This patch makes it simple style standard Signed-off-by: Kuninori Morimoto --- include/sound/simple_card_utils.h | 8 ++++++++ sound/soc/generic/simple-card-utils.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 89172aa..b8a8649 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -38,4 +38,12 @@ int asoc_simple_card_parse_card_prefix(struct snd_soc_card *card, struct snd_soc_codec_conf *codec_conf, char *prefix); +#define asoc_simple_card_parse_clk_cpu(port_np, dai_link, simple_dai)\ + asoc_simple_card_parse_clk(port_np, dai_link->cpu_of_node, simple_dai) +#define asoc_simple_card_parse_clk_codec(port_np, dai_link, simple_dai) \ + asoc_simple_card_parse_clk(port_np, dai_link->codec_of_node, simple_dai) +int asoc_simple_card_parse_clk(struct device_node *port_np, + struct device_node *endpoint_np, + struct asoc_simple_dai *simple_dai); + #endif /* __SIMPLE_CARD_CORE_H */ diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 439fc01..dbf4b00 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include @@ -142,3 +143,32 @@ int asoc_simple_card_parse_card_prefix(struct snd_soc_card *card, return 0; } EXPORT_SYMBOL_GPL(asoc_simple_card_parse_card_prefix); + +int asoc_simple_card_parse_clk(struct device_node *port_np, + struct device_node *endpoint_np, + struct asoc_simple_dai *simple_dai) +{ + struct clk *clk; + u32 val; + + /* + * Parse dai->sysclk come from "clocks = <&xxx>" + * (if system has common clock) + * or "system-clock-frequency = " + * or device's module clock. + */ + clk = of_clk_get(port_np, 0); + if (!IS_ERR(clk)) { + simple_dai->sysclk = clk_get_rate(clk); + simple_dai->clk = clk; + } else if (!of_property_read_u32(port_np, "system-clock-frequency", &val)) { + simple_dai->sysclk = val; + } else { + clk = of_clk_get(endpoint_np, 0); + if (!IS_ERR(clk)) + simple_dai->sysclk = clk_get_rate(clk); + } + + return 0; +} +EXPORT_SYMBOL_GPL(asoc_simple_card_parse_clk);