From patchwork Fri Aug 31 03:08:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10583149 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52699920 for ; Fri, 31 Aug 2018 05:35:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 412102B637 for ; Fri, 31 Aug 2018 05:35:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 354232B64D; Fri, 31 Aug 2018 05:35:13 +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=-2.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,T_DKIM_INVALID autolearn=ham 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 25A942B6AD for ; Fri, 31 Aug 2018 05:35:12 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id E3E7F26793E; Fri, 31 Aug 2018 05:08:22 +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 C6AA226793F; Fri, 31 Aug 2018 05:08:19 +0200 (CEST) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id D904226792C for ; Fri, 31 Aug 2018 05:08:15 +0200 (CEST) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie3.idc.renesas.com with ESMTP; 31 Aug 2018 12:08:13 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 3EFE06FFF2; Fri, 31 Aug 2018 12:08:13 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.53,309,1531753200"; d="scan'208";a="289581170" Received: from mail-ty1jpn01lp0184.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([23.103.139.184]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 31 Aug 2018 12:08:13 +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:X-MS-Exchange-SenderADCheck; bh=How7Y6mLjIX/r+4B5vCQaDj4877WHyIvXeEUUimXUfE=; b=P2jxWavKfWt1toPtkGTtqa+ENTB59iXbAnEX+CvbpWcXYGl+mLmjYJpCxIrjaog7L6hPuVUz0wbx6z74+MvMsKyOMLFPCjH5TLX24Z+x5BFLXM2SprTnCJ3EuYZm1bZork5Jm9bgYBegLk98DsS6arFuxbQWEKx3rDDQuOdLS8k= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.130) by TYXPR01MB1871.jpnprd01.prod.outlook.com (2603:1096:403:d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.16; Fri, 31 Aug 2018 03:08:09 +0000 Message-ID: <8736uvme7x.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.5 Mule/6.0 To: Mark Brown In-Reply-To: <874lfbme8u.wl-kuninori.morimoto.gx@renesas.com> References: <874lfbme8u.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Fri, 31 Aug 2018 03:08:09 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: OSAPR01CA0105.jpnprd01.prod.outlook.com (2603:1096:604:e::21) To TYXPR01MB1871.jpnprd01.prod.outlook.com (2603:1096:403:d::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4a70089d-7f5e-46a8-afe0-08d60eeefafe X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:TYXPR01MB1871; X-Microsoft-Exchange-Diagnostics: 1; TYXPR01MB1871; 3:1s+LFxSVT93N45JF5CqU3pf0EZWHB+yu6uiQZK8lrpHDikKmAxAe9CcNvGiSNUasK+9P2fTOkPd4FOFQ485F0u/EOInzFYRoASHlg3WKYTEwtrnDktzI238PSzkKCgTs2Xm0b0Q7JERrm9SZjoqDrxq9EAFrldGyXykhjcm+NmaWjOnyCFlTpdDVOH2wcH8LwQAPiBWEQY2B/67LXdZ/HSiMHfeCmLoRnG9hX79DTxYKkXFCMOloCP1FnndDv7EZ; 25:VrkfML9qAkIZLS1rnhViDCixxaLoPvOM4DywRJ/bU4WRuVtLUNciaRHY+Yv+krkhLIW3cPmd7Bx+ePjzozGZOwyqxFdviPYnYTtT0LBGW2rEOO5woBpmTg8+QBLgGSnrn6X5PR0S0/3Tcc0u/PMMy/mi1ijkmf4zjaDWdDgYmybYIoFyzbHT1Jo1kc+9gbZO+jkxWkD7qxm3/8L/LvHkSHCOdOuqyTqDzagb829JobBajcejZrj+QNPd2U5wDJkTtH1UOlDqgkUuETGs9M3J9xm/vJyeSY8paAAlG1AqyNwmXVX+vQHJN9jeLq3bMMTIvlMwU4KZRc991WCET47/cQ==; 31:/KIU7sWYcgymtQfm7To8guU/+fAR2EXwyCOAUFTOAqIK66cXOxa/z/CzLs6/MWKsvcVs9YhVoAowRfClt1zvcrx/OiwxdIeMnUenMUrA/OBONQYecbRakVsRlQtyy0wGDeNdjp3L8Da71yzqxfKDH8fXoQS8nV+8fgwVvtybLVAhVOj9b1yXVbjn2nUtsP2USODt2SBAe6JdegjF3xlv9exEbPU9DQ5c9WHe5FGldwU= X-MS-TrafficTypeDiagnostic: TYXPR01MB1871: X-Microsoft-Exchange-Diagnostics: 1; TYXPR01MB1871; 20:H3PauPzs3YdPcIhNp+T5eS9YaavgBkmaoziIA+8PslmHFUrUPtVVV2ztKmHcrfADTNA3n8TA3rLZMMJkvTcuGIcWZGnJvET671SK7N02Zm5BDjbrgJzj+y+1lT+4gt5RGyhKl26jgbKKVMw9M91zl/psDHAjphGYGfKQFlR0l3Ir7zB27C7Q/zizLeHrmC+2lsY7nOrpb9gxEGJxlECWG04ZYBw+o4iO6DwoHd0D3GQ7hl8U5aDpPj0A24TOdGXTUUdshTMwObIEzxgB+vsQfz7x6cT1/AY03H8WT/u0W1UCnCvw3KmHypbJbj4EG7xSbnznGcVGVP0ElVVF1v/Fbz9f7wQY9gY1+W7iV2idodP1G/W5Xx0OABAmJBv2HToPv2fDG6ZS4+3qc3UePeV1POdXjYw2fQjgLKzkJ4HoiffqHI6fKEUWAhla5fQBpQEQAK0oj0MVtbWys/QU7F/uJBxJ0tg9XEwnPTA1JRNPZ6IoTXO1e1WeX+/xtT7hV+Ac; 4:nba6/vWWt/1XdRltJ1NSjBq6Sb8u3frsoUXYc8+5gGZWBqgEi4uRK1SJaFCHL8J9DbJ36FNmXw+Fz7F3UEJXerfXmzgVahIZXiWgIwUdlQntCnnkDFLbJuSNIVp2woCsorIRklcBR1ZKPO8Pa4qvZ+c4AXzXWBjZcT8Jfw2QWPgwVPc3JLvaYz6SFALXln6Jm8Wvnggjdp/YxL0Cye2hiwD6cauPFuLhC1dT237gLYzxPvgu2W2bvCUyZMaH/Y2jIIEnR2EuH0VTLMAwywzMHQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231311)(944501410)(52105095)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699016); SRVR:TYXPR01MB1871; BCL:0; PCL:0; RULEID:; SRVR:TYXPR01MB1871; X-Forefront-PRVS: 07817FCC2D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(346002)(366004)(376002)(136003)(39860400002)(199004)(189003)(16586007)(316002)(58126008)(5660300001)(2906002)(97736004)(478600001)(446003)(3846002)(486006)(11346002)(575784001)(2616005)(476003)(69596002)(956004)(86362001)(7696005)(52116002)(76176011)(50466002)(6116002)(23726003)(6916009)(53936002)(105586002)(106356001)(16526019)(36756003)(8676002)(81156014)(81166006)(305945005)(7736002)(6486002)(386003)(26005)(186003)(4326008)(25786009)(8936002)(66066001)(47776003)(68736007)(53416004)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:TYXPR01MB1871; H:morimoto-PC.renesas.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; TYXPR01MB1871; 23:vHP0jsvqNU8MZKej19uru2PPFEwomUU3OgriOzVbG?= h++NvzZ6fSbJXrJgZZ+WVzwTD1AdlyXScNl0weN/2neWbcB9KeDIrapk9u2+9aFQMzrkyrVvZrgD7LU9B5I6Sq5IaaKWp9BwIZVmDujg3TaNCnyXilqAYqAehyJnLaWuIuksAuWenCpAG7HW486dhDcYjKNsPiTHOxNB0hjiIbpKEvPQx8wR6I30Y//BZzN9d+yavz/zscf8m43Z3Ol6f7mDPkPYjORL3VcLR7hwhc+UabF+X19nX8MElsj3R1NrirIRSmINqTGL3yblw5ni9197Of8acH7+BzmB0lgoZXgYbH4cgKPMNxNPp+MecGHcO8dIc2aPtO4vip8+C6ef7l6q4JsJEhAmGrjQ/ll8jKxJ2EwR4I7vc2I+xIKNTYEdoXZfjHWxV8qaku9nhbfX4SVPPzEJegov9dbCjw14Zpub3FoHAaIG62TPSn97v2CsiE6xi9gZTSX3CgdjfBSSV+A0os6fvPsErB5cWnN7L08MCsfu61YfPsaKOwNTfuQ4SiHJoqZhk12SqdpW2eOYX/mTqGESc2x5kOr4/0iKT28pvGUq0F4GrOkdQbzrrzEG5a3ADn+G2G7hIkmR7QL59zqfBURhmTnrH6YwFjCC9MrMnVO9qiCVCKHpnQycW6vDlNbsH0EzNPXntamAA/ggTmAV/vVyrjMfU+P4WIuEOcDPiHMwUxHNQ35hAjTiZ1SaDTvmU+pQJZZQpuojq+k+33pU9U0v8WfoxoEFqeHlRqmVGTTYGPrDa2BRAsOMYZZ4/eKScXXpWOMFUNm1akmvB1X4DtwbJrPd/ChvULM9SaBAqKtgf9Dd8+u/nwrokMnI56hUb5+1hEYSCQi04yfofxqTj9YJB2DJnqFoTTCMntBZdO/q/J5d0D6DXUpq6DFn4vvaL4q98mkeJN/HTxjrV7+D44e1PhCLv4Hut6WFJHs/MMLfkAN2Xd75vsN3RKWmSPGWHZXza5A1I2gB0gSZuFvtPRRyd8p8XMj79KSqFwdsyWfx0tZBF0zXjwocipfs7SoUaO4SsOl+L7vNTT0v0oXIAohdN4YlipbJNFoMTHcFcoG3xRSWF7AMpxIdKDMw6bzJUmAHbT4HXRivwxXbUzZ6IxfahDnvrT7bio/sWKhpUlLaW+j5l2hlaqITq1NsA5LXKZlI1JsCBSFDoW2zE8iSI+TUHTHkDxdAzAzwa0eTA== X-Microsoft-Antispam-Message-Info: /jsJwWNF/g/xZYWxRkanqs5yKJTassnbMAcI0jk1H2KZyPoDpWI+cGS9Ezu2mH5clwdri+E960MQ5IJd7TeE9ZTfDh553c5Lxq7pBFLh2AF5wkiqbe15E2Ffe0Ud7/tcR+w8TLyx/louE6A7d9Ylyw4nfgPWZMnEvxv9p0wHxspNG759eA+Vdmxmhr/dfKpy8j0LiD8VpX8EnHAjc7B74+DQ7o2Y+JJNHH0D/9h0J7rBbTbEjU+hRMa9WM5Dq5dzZYJfkz4xHhNgh8N8Hdd2CXIh8eq1XqzVl3/PMTfHQFjntg2rGyok7r5BHPIGHTTm3RnVKL3S4+TLgfUTav8qdNEXZN5VOdv/fUt0iiJ75B8= X-Microsoft-Exchange-Diagnostics: 1; TYXPR01MB1871; 6:s1Xa5o57DPNomveI8/6v+ynJNv42GYElrxp+Uvb5N4g0m3V5S44o2Po0KF2lOvgaMLWusSEvMX5VxX9tDdmjrS4OJIfA0cYtCzFQHo9ftGph06+GqWGXOORoV0LfQLvy7yM98squy59XDlS/Cp5s+0AgRxbqTuGL5le1X1o2IlW9h5/WhkMPLnUdiYsZp5zI2K55xa2WutKCTmgpduLPKl4QQm0aaMDycycT/QPCGJy7lLAb0Y43gAuoZyidoiFBhf49bjhl9nwv+Q1bu0phz6IW7R31pjjRJlhUinSEXHqSORnUwUvFBdy1UIfuAEDb0E7eo8iTRrohal1xClav/ljDXTtfjXPAtXlrhL8eJbwKroPpabI+fSjJW8jG8o5tV3jRYYSQ/vgT4zuNgjZAeauIjqDQVq8CxCKeCJu12bQ7qkkXPpEvlMnZN8LKbKaq6gIg70Aiah5IuZiUHPLzTA==; 5:PcVfZhmSE2bXdr7hJkvcBUOtkvqQKffl402RlblBAcleOmJUzNDv56RU2v72mAqmcqTNVoAb3zeacASvKzfwR/A+AdEwDVvhbyRKimm+dlAosb3Kg+xmu9rO7LyQC7bKA2X9Gnp4CwuZ5CnzQxHYN8PzSIQCzVaBJb7Bcbd0ovA=; 7:cjPaKVcLFe/H0RFwwJukD2y/tlbxXRtkmoaU+z6fD3i334mFOUiJ28EH9ORGqRvErdMFGoZwpTIC2ad/Dy213NwOI9ITBWalPz7h5yj93WtpIDZKkK3/SNJzIR0JBedGi8KxU9eSBbE1O/4TveuNBt1DjRY6tJfSIpRRj4uSmUn9arOcWoAXwGN+Cn/PqFSiqUninoy3Ie4YEuKBE0EZTJEJkrqpfuwhimP+wg8aJl1L/RhsHECZqIc+FdUMRj8i SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; TYXPR01MB1871; 20:jruR5HiM69cNVOm2ZBFMei8tFeX5O1sOAwesnQCY91l7W7mOvTiWstTHcn02UlwYGaKAbn+0X5v38MK0WoFdfrFziyKaERWeKnvJvWpGfdAC61KViN9Wj6I+66FOD7Ib+YMvKBSDNFGR/Krjy7bCuV+ILHrTnDHS2fFBEXweX/U= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2018 03:08:09.4523 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4a70089d-7f5e-46a8-afe0-08d60eeefafe X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYXPR01MB1871 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 01/15] ASoC: simple_card_utils: support snd_soc_dai_link_component style for codec 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 Current ASoC is supporting snd_soc_dai_link_component for binding, it is more useful than current legacy style. Currently only codec is supporting it as multicodec (= codecs). CPU will support multi style in the future. We want to have it on Platform too in the future. If all Codec/CPU/Platform are replaced into snd_soc_dai_link_component style, we can remove legacy complex style. This patch supports snd_soc_dai_link_component style for simple_card_utils for codec. [current] struct snd_soc_dai_link { ... *cpu_name; *cpu_of_node; *cpu_dai_name; *codec_name; *codec_of_node; *codec_dai_name; *codecs; num_codecs; *platform_name; *platform_of_node; ... } [in the future] struct snd_soc_dai_link { ... *cpus num_cpus; *codecs; num_codecs; *platform; ... } Signed-off-by: Kuninori Morimoto --- include/sound/simple_card_utils.h | 27 ++++++++++++++-------- sound/soc/generic/simple-card-utils.c | 42 +++++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 8bc5e2d..3b5bd6e 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -51,29 +51,35 @@ int asoc_simple_card_parse_card_name(struct snd_soc_card *card, #define asoc_simple_card_parse_clk_cpu(dev, node, dai_link, simple_dai) \ asoc_simple_card_parse_clk(dev, node, dai_link->cpu_of_node, simple_dai, \ - dai_link->cpu_dai_name) + dai_link->cpu_dai_name, NULL) #define asoc_simple_card_parse_clk_codec(dev, node, dai_link, simple_dai) \ asoc_simple_card_parse_clk(dev, node, dai_link->codec_of_node, simple_dai,\ - dai_link->codec_dai_name) + dai_link->codec_dai_name, dai_link->codecs) int asoc_simple_card_parse_clk(struct device *dev, struct device_node *node, struct device_node *dai_of_node, struct asoc_simple_dai *simple_dai, - const char *name); + const char *dai_name, + struct snd_soc_dai_link_component *dlc); int asoc_simple_card_clk_enable(struct asoc_simple_dai *dai); void asoc_simple_card_clk_disable(struct asoc_simple_dai *dai); #define asoc_simple_card_parse_cpu(node, dai_link, \ list_name, cells_name, is_single_link) \ - asoc_simple_card_parse_dai(node, &dai_link->cpu_of_node, \ + asoc_simple_card_parse_dai(node, NULL, \ + &dai_link->cpu_of_node, \ &dai_link->cpu_dai_name, list_name, cells_name, is_single_link) #define asoc_simple_card_parse_codec(node, dai_link, list_name, cells_name) \ - asoc_simple_card_parse_dai(node, &dai_link->codec_of_node, \ - &dai_link->codec_dai_name, list_name, cells_name, NULL) + asoc_simple_card_parse_dai(node, dai_link->codecs, \ + &dai_link->codec_of_node, \ + &dai_link->codec_dai_name, \ + list_name, cells_name, NULL) #define asoc_simple_card_parse_platform(node, dai_link, list_name, cells_name) \ - asoc_simple_card_parse_dai(node, &dai_link->platform_of_node, \ + asoc_simple_card_parse_dai(node, NULL, \ + &dai_link->platform_of_node, \ NULL, list_name, cells_name, NULL) int asoc_simple_card_parse_dai(struct device_node *node, + struct snd_soc_dai_link_component *dlc, struct device_node **endpoint_np, const char **dai_name, const char *list_name, @@ -81,12 +87,15 @@ int asoc_simple_card_parse_dai(struct device_node *node, int *is_single_links); #define asoc_simple_card_parse_graph_cpu(ep, dai_link) \ - asoc_simple_card_parse_graph_dai(ep, &dai_link->cpu_of_node, \ + asoc_simple_card_parse_graph_dai(ep, NULL, \ + &dai_link->cpu_of_node, \ &dai_link->cpu_dai_name) #define asoc_simple_card_parse_graph_codec(ep, dai_link) \ - asoc_simple_card_parse_graph_dai(ep, &dai_link->codec_of_node, \ + asoc_simple_card_parse_graph_dai(ep, dai_link->codecs, \ + &dai_link->codec_of_node, \ &dai_link->codec_dai_name) int asoc_simple_card_parse_graph_dai(struct device_node *ep, + struct snd_soc_dai_link_component *dlc, struct device_node **endpoint_np, const char **dai_name); diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index d3f3f0f..73c0a90 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -173,12 +173,24 @@ int asoc_simple_card_parse_clk(struct device *dev, struct device_node *node, struct device_node *dai_of_node, struct asoc_simple_dai *simple_dai, - const char *name) + const char *dai_name, + struct snd_soc_dai_link_component *dlc) { struct clk *clk; u32 val; /* + * Use snd_soc_dai_link_component instead of legacy style. + * It is only for codec, but cpu will be supported in the future. + * see + * soc-core.c :: snd_soc_init_multicodec() + */ + if (dlc) { + dai_of_node = dlc->of_node; + dai_name = dlc->dai_name; + } + + /* * Parse dai->sysclk come from "clocks = <&xxx>" * (if system has common clock) * or "system-clock-frequency = " @@ -200,7 +212,7 @@ int asoc_simple_card_parse_clk(struct device *dev, if (of_property_read_bool(node, "system-clock-direction-out")) simple_dai->clk_direction = SND_SOC_CLOCK_OUT; - dev_dbg(dev, "%s : sysclk = %d, direction %d\n", name, + dev_dbg(dev, "%s : sysclk = %d, direction %d\n", dai_name, simple_dai->sysclk, simple_dai->clk_direction); return 0; @@ -208,6 +220,7 @@ int asoc_simple_card_parse_clk(struct device *dev, EXPORT_SYMBOL_GPL(asoc_simple_card_parse_clk); int asoc_simple_card_parse_dai(struct device_node *node, + struct snd_soc_dai_link_component *dlc, struct device_node **dai_of_node, const char **dai_name, const char *list_name, @@ -221,6 +234,17 @@ int asoc_simple_card_parse_dai(struct device_node *node, return 0; /* + * Use snd_soc_dai_link_component instead of legacy style. + * It is only for codec, but cpu will be supported in the future. + * see + * soc-core.c :: snd_soc_init_multicodec() + */ + if (dlc) { + dai_name = &dlc->dai_name; + dai_of_node = &dlc->of_node; + } + + /* * Get node via "sound-dai = <&phandle port>" * it will be used as xxx_of_node on soc_bind_dai_link() */ @@ -278,6 +302,7 @@ static int asoc_simple_card_get_dai_id(struct device_node *ep) } int asoc_simple_card_parse_graph_dai(struct device_node *ep, + struct snd_soc_dai_link_component *dlc, struct device_node **dai_of_node, const char **dai_name) { @@ -285,6 +310,17 @@ int asoc_simple_card_parse_graph_dai(struct device_node *ep, struct of_phandle_args args; int ret; + /* + * Use snd_soc_dai_link_component instead of legacy style. + * It is only for codec, but cpu will be supported in the future. + * see + * soc-core.c :: snd_soc_init_multicodec() + */ + if (dlc) { + dai_name = &dlc->dai_name; + dai_of_node = &dlc->of_node; + } + if (!ep) return 0; if (!dai_name) @@ -374,6 +410,8 @@ int asoc_simple_card_clean_reference(struct snd_soc_card *card) num_links++, dai_link++) { of_node_put(dai_link->cpu_of_node); of_node_put(dai_link->codec_of_node); + if (dai_link->codecs) + of_node_put(dai_link->codecs->of_node); } return 0; }