From patchwork Mon Nov 30 08:53:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 7722461 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id AFD5E9F1C2 for ; Mon, 30 Nov 2015 09:01:35 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C4EB620653 for ; Mon, 30 Nov 2015 09:01:34 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 6FEA620641 for ; Mon, 30 Nov 2015 09:01:33 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 914622655D1; Mon, 30 Nov 2015 10:01:32 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-2.6 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_LOW, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 7B1422654CE; Mon, 30 Nov 2015 09:57:00 +0100 (CET) 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 F0E452654CE; Mon, 30 Nov 2015 09:56:58 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 0D353265759 for ; Mon, 30 Nov 2015 09:53:31 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 30 Nov 2015 17:53:30 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id A903F56C78; Mon, 30 Nov 2015 17:53:30 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id 88E4548014; Mon, 30 Nov 2015 17:53:30 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id 591FA480A5; Mon, 30 Nov 2015 17:53:30 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac4.idc.renesas.com with ESMTP id TAB02061; Mon, 30 Nov 2015 17:53:30 +0900 X-IronPort-AV: E=Sophos;i="5.20,364,1444662000"; d="scan'";a="199539647" Received: from mail-pu1apc01lp0024.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.24]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA; 30 Nov 2015 17:53:28 +0900 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 HKXPR06MB1016.apcprd06.prod.outlook.com (10.161.181.156) with Microsoft SMTP Server (TLS) id 15.1.331.20; Mon, 30 Nov 2015 08:53:27 +0000 Message-ID: <87vb8jswen.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown In-Reply-To: <87d1urub7x.wl%kuninori.morimoto.gx@renesas.com> References: <87d1urub7x.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 30 Nov 2015 08:53:27 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR06CA0020.apcprd06.prod.outlook.com (25.164.91.30) To HKXPR06MB1016.apcprd06.prod.outlook.com (25.161.181.156) X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB1016; 2:UXb14RuYb0Pwz271ca0+bas30VfzDitTXVDBjVa7wjVrAd5hllozE2hDESHpI5OhCa1nHFvLe2xgnFZJUTjvi+F8SY92VVX8DcWBWY0sQnnv/JZhS1EgYanTvzZhvh7fX7XwbZgTLlnJlGfgOR0BWw==; 3:XkPQDtp1dhYHqRQUsKGb2EJMoo7VcsZI3IDchxuXzpbrBflZBlVYsoxkvW3JOC18O0BNMY/poDYzupAsU8Px0qbZnk+fV8jRU4ir0At+lZbTphjbGIR1n00FVSbBQnxt; 25:291KTTorWIb0IOHAziMyFUqq5J8YOERE9HdoBpWecChIyew6d4bCzLF67dSpF4lf0ZOKaC5/+279DrudVT4ekC0Rlqh8EYWg+qvHuWzMb3w91fXqFkTZMfi/CgNt4CEhz97j6Gw2Pd43DEFxrpGldHe3GeJENRd+v79LNC/v13Fwc7b+o/hgubHbiIMxuoTuWRb1iur4w3+3f4dM5+ofieXLklzIDgTgFMy6qTcdLO3ksTw32y7uFdB+6rJ0gDMJZ7lgSHHA2iImHBTcKSPzCQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HKXPR06MB1016; X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB1016; 20:bu6do9CbQIGj0i4ed5ga16pC0f6P88/zhz1EJHu/N58iT+CPnq2MmF/Y52WcuAkflXCz2Ixkp90D6bFTS80+JjcyRN+r674AAW+zU2gIijdB84RU/rk+cPbTMOziC/koAWsOuFhywu3tLW/YKasNbvRImvUfWPJbGz/dwutv7utdw9yTR4R+H7gZxPSFIAjdj5ulv66zCTXG2rRnZ1vPcFq9AjyjhxBOFOAeCmmXgjUSb2pa0vnEMtRWBmYVBuunnbhLqqZqaaD09KFJF+46yJ+GypU3xv6Sw6HPNzNOsWiFui1Oelh4X6iw0HfhE3MBe4LpbXDDcta+v7ofJNkbfdK/lwQmyFkLJQZWE9x+9aC+qy7VT8B9wubb88ewnxG3HVPWjXKY2QRKACq86Cz085DgXtcPrcoXKtf0K13qs72SXmCk7OmWGCjtN0C4lGabvkgT3wVPmYstVKbXRHYmoWvxJCQ9HUFPnLtk6QCxL36dMlH7eaeQG/T/4rWen5/d; 4:hv0iWy1zP8cbKfH5jO+/G7GhHq65H/M8y0O7xYj8ILbWCUNggSLfJoVm54siEAY3WVEmp83Mc9P8yKgKFuxaxL1KARBSOtOyRfVCV7L/Z+WW2utbTyP1ju0cX+XCDWeAVI6tPA8WeJlFqcaAo3HFVXbe6a6aWny9JJHN96g74y7uFrQ9/OzJF9gd38aik+LzRjzbtqnTujg0L8ffEhEkbEDpr9C4tgr4tWvxniJePasC1cc9Hz+D6qOH9gNHnrUAJKIxQn17MV0OLBBzzCK/SPeJNpndSv6OTi9S736kmXqu8yA4fP/h8SdAMxRgBf7Dt3JZ1sOhJpnhob3KBfpn4FaltHqI/Cao3tITrqhL48KyK5OYaGIR+Urm7Xyfoq1cSq4I9gaYpD1futv+VaMwUXtOXkUcEMD1dDURe0noqbLQyp67HtVEhVr5ud/guifk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85106069007906); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001)(10201501046); SRVR:HKXPR06MB1016; BCL:0; PCL:0; RULEID:; SRVR:HKXPR06MB1016; X-Forefront-PRVS: 0776C39A48 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(199003)(189002)(92566002)(105586002)(5008740100001)(97736004)(36756003)(106356001)(47776003)(23726003)(76176999)(101416001)(53416004)(586003)(3846002)(40100003)(66066001)(1096002)(2950100001)(77096005)(5004730100002)(83506001)(6116002)(42186005)(81156007)(19580405001)(69596002)(46406003)(54356999)(19580395003)(50466002)(86362001)(5001960100002)(122386002)(110136002)(87976001)(4001350100001)(189998001)(50986999)(33646002)(229853001)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:HKXPR06MB1016; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HKXPR06MB1016; 23:mTMtfYX6uEqgfzZXazJlSVoyvggdLyvB33yhjHyEK?= =?us-ascii?Q?F5S/gUBr4Bli8b3UrwZB8AdpQ6w+w9y7SQh4Sp3GyZ47oHSS38lTiSyt0nJJ?= =?us-ascii?Q?TQK5KwIV4qKKbY82F/7sEGpbn1lJdDsFrOtnoJVNBTsmm7suL5ByKLa0V1Pi?= =?us-ascii?Q?6jtOh28+OjBF5EJJvg5LUdPtmfRssr4+hJr2Sj7T7I8RMT09BUP9DAP3Mn3m?= =?us-ascii?Q?rwVo/UH3T8viJoo5CfGuXpOyf6iIHZwbradtvp49TI7DsrYmcV62yrrUey3n?= =?us-ascii?Q?woRA+P2oqvLuUEk5QcvGSPukyCC23rBO5XpQIZ7IGFWbz+m1ZDyNV2ouw4FD?= =?us-ascii?Q?bdyhbSLYTPqP2p1yxCgHB3tA0gHdaYsNO2quwXB6Kx/c2UO3pVkZFs7NpI5f?= =?us-ascii?Q?hHSrQIGUa33iAMBA2WwMt6Ocrukso16QLUZjCr/CRHagodUHlDtqZmzsWV4S?= =?us-ascii?Q?G0YCQ6jIKRjBtqy3DgbljxrvVAJPGiT2aYnGYvVklLKo7LpJga4jk9/ovOiE?= =?us-ascii?Q?rP1uwYEs52eUY6l+Q+JvQYWnjq6RqNaRSoCI4Lf//duMI8QpDy0dRlQ9k9DK?= =?us-ascii?Q?LmG03hU+ZTWB/1byR4ntqhAMvYcBuEK5xlvaVSfMK21+JxVsOZhMwDA/3jE5?= =?us-ascii?Q?+qMsXCpviy6e2AHGSg5Qo+eoTdt//f1VwhfvMolTRmjLy0VQ/wUFJvsQ+aOm?= =?us-ascii?Q?cHxToZBEC2X8LPn6wSK25M1mT+qMhVO2KLS3/MjYM5FkAAUhm/wK3uIylNSr?= =?us-ascii?Q?tWirMsj95zIrZXFcp2qNHCeZnIPZTH9KywlY/obn7c/h4QAa2NTP/FESc9oM?= =?us-ascii?Q?mJg9SSXiAJyImejF0vNE/R8+Oau0XlTburuUbytdJZ3jf0A01/6D/Wl4HIkv?= =?us-ascii?Q?IBayTUVskbWC+F5r1im2JtJyrkkXdZ6NWpiKipNGedYj5noVWAsQoC2FZzwW?= =?us-ascii?Q?BGZzI8H5gahM/+e7lZ0SlSokiXf9s6gKFzsK/a51QHT3Hg5NBnXyo4WSd1o/?= =?us-ascii?Q?e1ayubryZo1LgA82y1HcK8/HdiCyB8GLORwqmUxG1oBygV8NWyLIWbVl1zR1?= =?us-ascii?Q?7kxBEQiCyex7PUCG8R+UxH0FMzouNu/aqPU/GbBw5MdrPvzbOcoYz8al9sS+?= =?us-ascii?Q?xf9436v2wOwWGIOo/ajCFHu1dfp6RnR?= X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB1016; 5:mX4RTfy9E8KbwemG+pH38Ozk1xo/Q3N2EwS1OI0aix5pjKYEmxLKWIrNF/Jqcdawr6Wjusitwvao6BXS/I3Wm9gNETXL++7zQUPo7hO8lXZuLhVzpOPusmiokS1HspRxMoUOS/T+VbOHHC6oXIte1w==; 24:/tVPG7zkgLS38091A8Z616jdMTO3vLG15e81av+EKRTnj9GjXl2K8TraZ7R23DSr5eA3VtSnI4linaYPTosEGXO3BRLZxkjkCdso9OVxmyM=; 20:2CC2+5o9h1sfQZeFA3FwqmNgGHcM53fXYiAbVh1+6aLQMEuo4nMpvc9EZfIFgvuCX+jmCOxWKZ2gEruURHVsYNZ8P3h0A92Nkq/0nYZDgIuP/llGI14vpy5yq6WjSksScNVqyLwrc/mMFfDDMMLIljhSeYMp17zRxSfjQyabwlw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2015 08:53:27.1127 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HKXPR06MB1016 Cc: Linux-ALSA , Simon , Liam Girdwood Subject: [alsa-devel] [PATCH 12/14] ASoC: rsnd: ssi enables non-stereo sound 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 SSI is assuming that the sound is always stereo. But, SSI needs to calculate its frequency when master mode. Then This frequency depends on each SSI's slots, and TDM mode (= TDM Extend Mode, TDM split Mode, TDM Multichannel Mode). This patch enables to use non-stereo sound. Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/core.c | 29 +++++++++++++++++++++++++++++ sound/soc/sh/rcar/rsnd.h | 6 ++++++ sound/soc/sh/rcar/ssi.c | 5 +++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 81a6bdb..f990b4c 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -191,6 +191,34 @@ int rsnd_io_is_working(struct rsnd_dai_stream *io) return !!io->substream; } +int rsnd_get_slot_rdai(struct rsnd_dai *rdai) +{ + return rdai->slots; +} + +int rsnd_get_slot_runtime(struct rsnd_dai_stream *io) +{ + struct rsnd_dai *rdai = rsnd_io_to_rdai(io); + struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); + int chan = rsnd_get_slot_rdai(rdai); + + if (runtime->channels < chan) + chan = runtime->channels; + + return chan; +} + +int rsnd_get_slot_extend(struct rsnd_dai_stream *io) +{ + int chan = rsnd_get_slot_runtime(io); + + /* TDM Extend Mode needs 8ch */ + if (chan == 6) + chan = 8; + + return chan; +} + /* * ADINR function */ @@ -611,6 +639,7 @@ static int rsnd_dai_probe(struct rsnd_priv *priv) rdai->playback.rdai = rdai; rdai->capture.rdai = rdai; + rdai->slots = 2; /* default */ #define mod_parse(name) \ node = rsnd_##name##_of_node(priv); \ diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index bb2c29c..38fd212 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h @@ -285,6 +285,10 @@ void rsnd_mod_interrupt(struct rsnd_mod *mod, void (*callback)(struct rsnd_mod *mod, struct rsnd_dai_stream *io)); +int rsnd_get_slot_rdai(struct rsnd_dai *rdai); +int rsnd_get_slot_runtime(struct rsnd_dai_stream *io); +int rsnd_get_slot_extend(struct rsnd_dai_stream *io); + /* * R-Car sound DAI */ @@ -321,6 +325,8 @@ struct rsnd_dai { struct rsnd_dai_stream capture; struct rsnd_priv *priv; + int slots; + unsigned int clk_master:1; unsigned int bit_clk_inv:1; unsigned int frm_clk_inv:1; diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index d97f365..44e9141 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -177,6 +177,7 @@ static int rsnd_ssi_master_clk_start(struct rsnd_ssi *ssi, struct rsnd_dai *rdai = rsnd_io_to_rdai(io); struct rsnd_mod *mod = rsnd_mod_get(ssi); struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io); + int slots = rsnd_get_slot_extend(io); int j, ret; int ssi_clk_mul_table[] = { 1, 2, 4, 8, 16, 6, 12, @@ -206,10 +207,10 @@ static int rsnd_ssi_master_clk_start(struct rsnd_ssi *ssi, /* * this driver is assuming that - * system word is 64fs (= 2 x 32bit) + * system word is 32bit x slots * see rsnd_ssi_init() */ - main_rate = rate * 32 * 2 * ssi_clk_mul_table[j]; + main_rate = rate * 32 * slots * ssi_clk_mul_table[j]; ret = rsnd_adg_ssi_clk_try_start(mod, main_rate); if (0 == ret) {