From patchwork Mon Aug 20 05:11:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10569915 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 6419F5A4 for ; Mon, 20 Aug 2018 05:11:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 50935291D7 for ; Mon, 20 Aug 2018 05:11:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4EBA529226; Mon, 20 Aug 2018 05:11:26 +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 4C7B32925C for ; Mon, 20 Aug 2018 05:11:25 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 1EBCE26773F; Mon, 20 Aug 2018 07:11: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 3AC4D26779C; Mon, 20 Aug 2018 07:11:19 +0200 (CEST) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 8AA5926773C for ; Mon, 20 Aug 2018 07:11:14 +0200 (CEST) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 20 Aug 2018 14:11:13 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 00E3D63B22; Mon, 20 Aug 2018 14:11:13 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.53,263,1531753200"; d="scan'208";a="290050989" Received: from mail-ty1jpn01lp0180.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([23.103.139.180]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 20 Aug 2018 14:11:12 +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=J4732YDelU/0LBpmQk3E881rVYuq0AIqfBZodUyPZ3HnxFp3jRFuGF76fQe8bAigHLn+Hcv9TJ0UihWjsxqtdRWYm/ALeGyeRrjJFdMQAHp3ZzYmz7ntpr5A6ruoj3JtYKs2w6JV9DwFlWpMKhyHFab1exH46lXK1+iEmvXIrQ4= 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 OSBPR01MB1864.jpnprd01.prod.outlook.com (2603:1096:603:2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1059.20; Mon, 20 Aug 2018 05:11:06 +0000 Message-ID: <877eklvdau.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.5 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") To: Mark Brown In-Reply-To: <878t51vdd3.wl-kuninori.morimoto.gx@renesas.com> References: <878t51vdd3.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 20 Aug 2018 05:11:06 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: TYAPR01CA0028.jpnprd01.prod.outlook.com (2603:1096:404:28::16) To OSBPR01MB1864.jpnprd01.prod.outlook.com (2603:1096:603:2::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0e49a891-3b77-453e-dd91-08d6065b5599 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:OSBPR01MB1864; X-Microsoft-Exchange-Diagnostics: 1; OSBPR01MB1864; 3:tH08JQ4+atyvheFCpJ8CGdvbi7jAU2LRPVTg2RRmchuuneD/fSw4BKtajwRMmE2A2/ZoNXmv7IAvE9t4hy/bFj0FnXX/WzG7Bd5b5OUaC5EolXYvx/91Z7VXR135sPAZi4IqctXTuhi1uC5TzSFXKqXQ7QGlpvnjCcgzjba5w+VbioaO6XktteUj9Ud0pgkAC+PAi/qehQfR/7JbvQapAANtGANyH7kCfDBN5MQAj3rl1QLqYyF5SYjdnJlyKcPE; 25:1fUrTqLgav5Q3mG+TxlxWygVhpa4hGx6CcGXknj1T5xX5WrIp6MyN+tOGSlP9BKO/KS+Y6gms5fMtjI4Thd5PKQ/DsHmTL3yKdd4EzKcaUKw5kMF+0v5GaC5mPlunL8h+r8CME65bMOJssR6IEacpzZy7mNDIATJ5NZ8aUlx4eukwvWhbZlNXikIBBBUQvk7wRH+sl8ET4QXEg+9TxVabA+uZovjbXwQjQhieLvN4p1MQQyNFTL3WMJ8Cw/uNtzSyplzeSK26HhLFfT3qBE0UTp4EfLcDXSj5STxHjBuTtOP4mEJlp71YOTRkQI9K+LGErtAzYTUjq6kPEwP0aA9qA==; 31:YloQA7ZQ/jpLdKVtGOzTc099kLGz8GpujQJi2ZPhjIUXyRS+3A0iKbsRETBzhPITAgH4kEdxt/hL0xV0pRkTbhFB6kmZbVFsFr83WfFiU3hx6wXuXnI9fOj6gPfx5Sy8ioQSg038QJ3YnhV5jcOwGwc3hptKRJ7Eq4LrbiNuEN8rh/9S+/8kNBJq2go9frWnr+Niiy3WQ7NqwDRXmdLmbelCo5faGav5uQDjB0HFsck= X-MS-TrafficTypeDiagnostic: OSBPR01MB1864: X-Microsoft-Exchange-Diagnostics: 1; OSBPR01MB1864; 20:uHepMSmNitTmF4J3L8hAX++a0nleARe+YpWC4u5n8MMMLECMr2BBMbkVtuTsi6iAOL9O9aYaIwmIA5hNY3ueZKxTHTR95RBgd/a4ptFhe0gHVJSUpehqhPQ8eixBFn7kyd4WphXrmWdm8h3v3VBx7PJGxifaM3QxdPkOwAPdyQKuCAwWmJnwbr2vyH+HiITwCfjjGtr5Ghvrik6cNm4AkH7X3mW4H7KsUqj+xUf0f6GHKqWYNzLjsGF8El7bognzZ2wWV2AHL2SvxDdEKo7BUZcf/7aw3kA0pcA66BWuR5oHRNae5uGgvM3L4oNfo41JrB28OaPTo+vZ3kNGex3wwQdSBZWMwOGdFWOPdF3gT5bQOWhtcU0fg1iKfqm/Ig6/aAcYWaenIRlDw7vJqUe/0n1nkw6ICHbFJoh5Ae87R7J+ZdtkGJqUb0M7G5qEEgKac9mGO/ls1r2kEBrKJWJ/S4UF7+FvMFf9Ym4GQMttmIqj5SsaF2aZyM6QbNagDeHK; 4:Kk2Yl4sOL9RKr1apEE5HDObvqF26otcFg7Nqs1hHL10vNR1D86dmcBG3PtgkB29YaJJaRl/hVokxsgYMh9OoNNJnaUTpXVSgwnLUHp6uTlNezzjlqDUCVYgjb6xbpTHbZp/fSKYpy74ZhIYVvl38e3SaEJKl9ZrxiEVFocb6fUl2bgv4RA1Se90TgtOCQnswDkeq2k+H30HVf4DDd2UR7sSOkYHQ99pE0maHhRGkkRo+1P+tNGFJMM6r30LF4ek+FAtgOU7NXird3zG4bwWhpA== 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)(93006095)(93001095)(3002001)(10201501046)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:OSBPR01MB1864; BCL:0; PCL:0; RULEID:; SRVR:OSBPR01MB1864; X-Forefront-PRVS: 0770F75EA9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(346002)(366004)(136003)(396003)(376002)(39860400002)(199004)(189003)(26005)(7736002)(69596002)(16526019)(186003)(97736004)(53936002)(305945005)(53416004)(5660300001)(106356001)(6916009)(105586002)(81166006)(2616005)(81156014)(956004)(11346002)(8676002)(2906002)(6486002)(486006)(476003)(446003)(386003)(58126008)(76176011)(16586007)(36756003)(4326008)(52116002)(7696005)(316002)(23726003)(25786009)(6116002)(3846002)(575784001)(86362001)(68736007)(50466002)(8936002)(66066001)(478600001)(47776003)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:OSBPR01MB1864; 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; OSBPR01MB1864; 23:pXKJJ9Ak1S2IhEe1jKkWjMAIHYTATCYzU7QrCXUKe?= gv8G+h00f35sPiWWYuFdc4CKzT3f1r/CaLnUPRyhkkZx2hr/kg3FR5qYEWthmN5rB84tTa/trehvoriwe+itb08r0D0fl+naJB4DZ/f+Z1jS5z9vpZJnXOk59N3AUUo2fDLXbqqERZ1gJg9n/aH525FEcQnpUtXBJEy+r/UDzafvLC4p3u5JLM41vhezmiTXMXdkShAslFvveP1bH5nuhzO1n64uCgvpZci5ZLZZL2590vMDU2UKGqMn/RqCIiepQ0NvN947IAdnvCvpYvep0JnNmRHZnksaRtHTKnsQUQiG+gOY0qbNaWsLWwwpjCdPEVxfdu2ZPwL4yKpnrBweZ66kC9wXAG4/fPRbVQoFyom+fpzNkDw1UMQOLXzRmeBO+rqZ06EpuYYUqct0svnEwLtzp/dDBMKMZT2eIaIR6EP9eWVjt18oCSWzODP5+yQ8vxC1f6vXZAs3c+H/oCchFh7DQonyPmzaohLHjNJWZ/V/K+TEMDqqMkZ+7hRXJ7aywRbScidN7igohWYMuFAo0d2pfBhQ9uj2bW9lNX83/th9C06ND/tnIDCB2GUJox8H0yrQhv0t8CGhUmfUZ/YHjJPXJ1nzaae9DIKgC4VdJZibvOU1vi1anuXJ/tIXqPHXgcqpE7JHs0pR+M3k8+6xXVamppDpRzuRq2DbyIEfUc3/U9eJ+/tpPPY6fFHOwgR9gRONA8Wnuk2UXKLxIv0Lj/5NylyrhzLyvPOccTMmq4hC+N+4s7GrE7NCsauslTygO+0LL4erC6nblyJvP/PppTLHTKk4yY3BqWUg6FPfUioEWgQRBEuqirJw4wKnr5z0vp6cTZWUnr23nWpK6ZJbFS4VMR/Ka3SeK0CKtdXzJ284tqBYVoX30ddSHDrgS55OSu/JHZ5LTxyzTf28nSVVScJBVRu2v28RyCa+ABZW09XUzLrFqXkSa1xP0EChOGJrU4LXZlD9cGHCCqptpdrgHlXj8jmH1BRnsBMBGXgjPKj3+WzDOKjkU3X4mbHK/YIypjwdEjuKnoInWGboz/7wmSXTuavOElS3zwYn2q2BnwXGNp3f8+Of8Zr9WJklM4ZA6+cXYA0XsvDWNqfArqnY/ftxrKWHcqy2q3hGPcdFfPjulmxgdhfJottzgCAkfE41dPotTDjpWVL2X+9vx5ttoYADnPriTwa8ZrGinynNiA6dw== X-Microsoft-Antispam-Message-Info: /BMojqsf+u3PMLlEJD25FGGynKMEJMufJzfgZCWgt/33DpMkKh1TK8jiiHb/HszdqtyKveN9f3djJeCz4xmEtzDfso9MmmRQ91/utupmZYZanHWY+fP/ccqUNmAB6RakbzZXfvcs1xtGFI81fj8+kjVW4+jtrMItOt0ohAOEwFvauouF683crBVyoCKg55c4mGjl9oxr0o/CdznIZYv9F1FwytWDD0EH8qcm9xQqW/LJg+VrtA8msBDRKuD70ynQDQ4GV4psSuBhgguZcqwwNpB2ITLnKap2pE6ao5v3PmqEOO5izW8GTjbWbvkE3FZeHwYm1dmZ1RA+511WYUptdVTBC/9EznPFx/GVaK6G820= X-Microsoft-Exchange-Diagnostics: 1; OSBPR01MB1864; 6:mKvZYQ8Rjf3nIBrjvqkzjindwXwwTZBAqu8LbMZgysB8RSRKzPJLZEdZE+wKjyqq7EGSKi1U8gxUaEm1CpxdcLjuEOmJtOAorJXmiZvC408iwyPvt5wZ3y1buqumR4qwfc90RdB4NboZJ+MvdBr9mGAkd2oSAF0J+ojIR2q2Yk17V2NKqWZ4JYomu92iPhB5bZHVpgFQGs70IOLJWQSnwMU2xze+s4ta8qO1rqWmCqDqVD3AtsfVyntgJU7JSGcQglzQzGrdNoXgfxG9gS9OdxgZTrhQ3BsSQCdlOz8HoPAm86zqo8RIpSCAladZTfE0GTG41pvozAS867AOGzPn7N63dNvSvNnlf4d3Gkr5gNWqoxx5/6H2Avk9KA3p9ajMEdQmzjE2puI4WJsgdzcaMe1I0j44TD2fLkPT24MJPLWPRb7XZPUCX7gYBtKHjPsFbDDGRQbbVtA15ahVNXUygQ==; 5:URbAgi+3a9elU99oh2YVIVn+ucfFfdFWDZZsEBVTgf7jSOdWgsp5VjyQzLqiE2ep4979m3+5sjRESbenAGKLsGxVtGR6q0Y1oTmhQ1B89tRe0BWSMQ/6jYjsH69hwUd/Kdb3e5NLXCXLKDl89YVAJBGRhooMkRgpx+Fvbn4ACk4=; 7:lNLjcOqmIaExy91LRew6gmwdCkMbZ4IwiZo1phXESbyssCDXAfXb0RaBnX2268Tn1IGethyqPG1vR8FoQBQ0kMuzxvpzhaDec0N1c804nMmFsxvgOQeAr9T538naiN8VgKoP25E2S1VqNd8kipZ4vU30oEdAomxk/Qc0W3t9MVBEF5sAka6gb+h0jat6/9EmwXjZ7J7KXJhw5xwqwN37TxMKPlmsedTGsOn2bAouIkqZZRF3ndLWl8frqfenwfnD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; OSBPR01MB1864; 20:A2Gpg/ZJBwtm4a5kw/ya2J5LX8vkMAXViyiKk9o975CLaPaGxuYa1ciy2nAVBvK/tuVINUGjNOthNSudqCh9aA7gqUCrZ1txKy3Ye3kyfYkbXr3BGmgRWJHolt17RpCd2VRdtWwCSxZ33zYd5rpWWT3Ug+9+yw+DVtQ1uG6fMlI= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Aug 2018 05:11:06.6560 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0e49a891-3b77-453e-dd91-08d6065b5599 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSBPR01MB1864 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH 01/15][RFC] 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; }