From patchwork Tue Oct 30 07:46:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10660515 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 AF4FA14DE for ; Tue, 30 Oct 2018 07:46:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 95E9429132 for ; Tue, 30 Oct 2018 07:46:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 88AC9299D9; Tue, 30 Oct 2018 07:46:20 +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.7 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE 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 EA15A29132 for ; Tue, 30 Oct 2018 07:46:18 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 13FFC26770D; Tue, 30 Oct 2018 08:46:17 +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 7AB4A2677D0; Tue, 30 Oct 2018 08:46:14 +0100 (CET) Received: from JPN01-TY1-obe.outbound.protection.outlook.com (mail-ty1jpn01on0125.outbound.protection.outlook.com [104.47.93.125]) by alsa0.perex.cz (Postfix) with ESMTP id 4327E267692 for ; Tue, 30 Oct 2018 08:46:10 +0100 (CET) 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=A/oeLggjDvzTPmntpSQTQyPSJWBi+VwgTa3xr/kTiDg=; b=Q4MzH8jB17EzI+hJG9gVT+e0DZXPOx354GJBYDJiR8ZAbx62PFFlvG/XZkT60HYtJkT9XnlOedWwxSGTJS2oJvMCENTcAkrQdHuTcFkTG0R2r+e577E5cNdsIynvygIkqqAySYV4q+owLY+A+6AHPsxGHwVm4JQAX5tArlgbs7U= 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 OSAPR01MB3316.jpnprd01.prod.outlook.com (2603:1096:604:52::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1250.20; Tue, 30 Oct 2018 07:46:05 +0000 Message-ID: <87efc7sx53.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: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> References: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Tue, 30 Oct 2018 07:46:05 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: TY2PR02CA0048.apcprd02.prod.outlook.com (2603:1096:404:a6::36) To OSAPR01MB3316.jpnprd01.prod.outlook.com (2603:1096:604:52::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 04258295-a7af-40e1-af74-08d63e3bbf97 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:OSAPR01MB3316; X-Microsoft-Exchange-Diagnostics: 1; OSAPR01MB3316; 3:foF3Re03jwJ8wtfRTUgXOKx1gsvcWs2kQkdYl0GVKGeOPlxz8Bn3LltV8ShVQo+ILAWzqwxxZgESaZydf4F+A0FHk467t9jjHhOifhkHRsU5bPQq++vQGem8nUG8Sc/BqVRTFPcMUYejIpbEz6CkielceO6gKuuvxy8Ous77D9HBYkHYrwZUWDyLZYEjRIJfAEs3Yjl4ePW7Qgc9/48r5QRb25coLlNlvb4FfPJKIwKqAp8aZPPQ9FN1rMhskffi; 25:JdwAvHknRpSH0UfZswws7Zd7YlYJNAHV3Q51TwnaJ40HoaMFNcY3xTTzl5pIldh1a1AFzlLsr6bG0zrWzmtdKbHbAworvXzzdCX+e+5BjvCRCiQXZw0GuYKvwrX0VRqSg60WkiuAiv/yG/X5HEiKtOhYZGfgKsPBcDO+5+AAYMAcoAgS0Rszc/1TkXqgXLkmf49aVmDYH1anJb0qQf3qdOc52pMvKHxOG8NPC1UqTL8Z0lHbI1sAUDJR7Y/9vlO/pf98zxpLu1xey2iF2qN4TSe2kU7aKIaNzjGhR7cZGg9tJL0/c+uBWpLUTheaqsyCI4bIf0FldrvcJtBJ7hnkcA==; 31:f0MPeylHQ8AN++yhLoa3TTL0F0pDr7ckojQL4cSyGVRbLB/b1sHWPwzCWroE6bsnB1d+UIFlnMWufgKwKqT8vi9+//fUSHXqGZ9BsYTjFk+72adZmPaKjAVfSt/to7bSSNTeYzPJqGvYzPHMqOHid/7vjGkAjy4jgp/kaREyfUJULbM7MYb25q8DoP1Z1bHRIb60MjYwzV00uzUQ/4fPGxJrmxMFwEinbuZCxhxz51g= X-MS-TrafficTypeDiagnostic: OSAPR01MB3316: X-Microsoft-Exchange-Diagnostics: 1; OSAPR01MB3316; 20:uPK1vna3nlBYA1lmWM5T3M8BBPHSxd/GLelSOOfr4pk09Cpna7F50fgzRSzj/VaHmkKlQdxpFAscx16+hdP8i1SSHh9+/1vgRR5EyPm3QSieQfMbRGxS21pR+uyD24delgYyGiDhMMtu+IttqN+vbHSoTYMh7PLdc7J4NkN4Ljtx+XUiTSlLf1FXsudkVmDrSw9JmWhAwAPa7Bex7ZLApoYhpVG66I5/hwL0HZcjdKl/bNodpqSUsnLwIGh6fd2LEwpIF58sMf+SwEDMlHAHeB/qtouCc6KGPmcXBoT8lmMNXI+AlnCkUhA4fjJ25uTEWhSxTi2G33We8MurCqONj/zGHtZXOxjfV7VdZCfZGx5HqBXAaikkMB+eZE0RKU7i/vmL2NFNvLPq6W60g37E3g6w85FVbKBHVwOf/Ohj7tDDCdfd0mQj5qZpUXlvpqH6v7d+A9mQQ1w4UAkCgpDYOiBdabx4dQ3+ptFonqIyjROVb0ajyFThAUhTxTFEnu5M; 4:VMJ/NOs7ok2Gg01yTGL8XL1NFnz2cusqIunlAXln7GJABg+/bFMZwpcixrHzYKn/UQwlnQmelLNZJK59ikbW4vKhLAcqzzKaQVbtuOJwLtZJkTFmaIxzmniDzgGHRWwFkiqcPNZR5y5y+fvMHR6f5FU9vMxymNMMnj2G5oAqdD9yegmgUdVeLI1UXWTst8EjPBYBZGmilxloxx/wFq3F5hCmmW8/y9RjNUstr4d+ljSy/n+nBMA3jS9QZYxlKDPfDfoJRAtggBqNpYn3O+v9hA== 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)(5005006)(8121501046)(3231382)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:OSAPR01MB3316; BCL:0; PCL:0; RULEID:; SRVR:OSAPR01MB3316; X-Forefront-PRVS: 08417837C5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39860400002)(376002)(136003)(346002)(396003)(199004)(189003)(66066001)(68736007)(386003)(4744004)(97736004)(76176011)(105586002)(52116002)(7696005)(16526019)(4326008)(106356001)(186003)(53416004)(81156014)(50466002)(5024004)(14444005)(26005)(6486002)(81166006)(8676002)(316002)(8936002)(5660300001)(305945005)(2906002)(486006)(53936002)(86362001)(575784001)(69596002)(6116002)(3846002)(446003)(7736002)(11346002)(16586007)(23726003)(58126008)(25786009)(956004)(47776003)(2616005)(476003)(6916009)(478600001)(36756003)(142923001)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:OSAPR01MB3316; 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; OSAPR01MB3316; 23:thXVj3hQ/O3A/IPoA3i+wXqYemaljjcJ7IUbObvXG?= qIxtB5lJkN64GlLUNiDbMeNJAqdi58KkYEkSd/evPsQZoxhqWAMmYiaPWW/PDf2b0q+qJSOQKnffEf+E54fQDbt+ZZhMMZm0nUAxacUwLUwNR8pD1oz/l7TDnTSvcxplVo3NEVrbmstFe5ga+Z00VfoAr0jkXrfyXudRs3VZodUgPgpv2PzfRCZ8ERW6W4y8ac1lFqdVBRvGJwKlYr6AHav4RrMkFx3A9xo6r/ZsO0qfaMj1lhLUmNsWYZ6I9WcTrEKAtsKujYJDTcht7wcYjtAv3JaXPmNarxP6UjOMJi5FDUmhWBKkKt1AB/otXHJA3p/Edc/wXiNcHEwnBrFkNG3sJXhQkQd+d6JloLBWc6HEPRsHNCw5LG9XFN8a54TBsEFeLo2v9ZYIkklUOiCA9FSFsFM7XslWlzJzJDxBN/298Z3Td3FREiRevKOV0RcoaC9o7ZkPmahvjGOeD+jv5CNOGbu2t1uIQNy9V7/9e8t9vgEOMIbfjpjQcjhPTgba10NgYyH17JNHljYOWShYGVMD5sHV1QLczn3/k/7NREvr46ii/DGbHT9klrcBXex/g80mYfTo3p2X7IM30R+lBWPpDnZZQAzx9FhG2frn/MZTGApZFv5rMbp1lCvAFeO8i9SCmXM/Rlmxz/tMcR3IzhcPT1XGMt0jvrsjZ8AHwc0aOQXnbG4FcOHOceabwcBgCasMF9MnweFF4x0qxwi5hBPMBKvVq+8pP3Wb9iZ8gJGVD7csNDEw5ehBfm3PQGSKBN+WPzZfpimEI3RaIrdopGsHvfhGALmr2VhJa8+7l50HsQu7oHNRnZ6Hg6+y5U2jX23Oru2MR9TElBhSzNVEn978DJA8kgs+RHNkMBGSb50YjALDnsFMDM/icwilYRNRcWnJp99fUvteyFPQQieHltWLrLRzOzRhu2Zx0SL/lCpMM3fxToI8v0j96B/a2uolULeOBYKbI/cSqCGGr5p2nfdz1mh04G6NQ9M0WyOudVHOI2OIbFnaz0IRxLXxMslJzq9roIQ1MLxi2D+hl0wmQp/HWn3V5PzSHd0Yo+rc6h/EtgiLaCzWUFB63i5wvkKSxbxi/NzBQT/2kk3ZLW/rpvaUCL1zNyKg3X7gCudQ5FwIDLsDTNtgGONVEF8GxypK7uCNgNXYichvO2SsXXxG9ONw7eQLuAgJr3ecgCXuYRCqI4oNLvjhlm1udbs7NSGwdfGZsWlgNQj/V5WG78f8NRL X-Microsoft-Antispam-Message-Info: J6XenQKq4o4onaXECFW0zWt3czZ8V+Eo4KevAhDJyqwt+Mi81sajQ5VHAPtFPG4PH9nIkBuVds8Ky4q+aQ3RgZLdhfN/ZZK+5DX8JUMcYRxwzqn8MtSnDa9TjZdaTw/cgV31sqhn+ehtsq8ohJ5kkSAtRy6+tyhrWmWV7Q3W9j4e53T30Y3OxZdz55phz+RLZ/9sXGPhbnCGMWIf2IY3TKv1GHYEsQCfxlxR7rHt1SrWi6XPuhJxjt9SERneN7WAUJig2GngVeqCdgpXwSU6cQmwRYOnrRdVgB2VD4ZKv88YRCMhV+NvdpvlgpP4MTizCv9d+otKDgBtPCM68eQS9N7cCH7kLb6i/WjgjiZrY44= X-Microsoft-Exchange-Diagnostics: 1; OSAPR01MB3316; 6:QGEYwFBfDcHhmyR9QL3A3PYKN34AS0aoJIuv7QoWXhskc8NVwACuDNYXqNzm94arXna8AMvAAMSpPUOMfAUGzhadlE6/gKCtgE5UiyDwlWA757tSPPO0qDbel/IUyPO6eg4rXtivWTswTzcVegKJtJzAxJIPG3UUkAkprpypLs/7XU9uuGU6dAOdwl3HL4fNdDsGtNCjEcRuMzxCPi8Oifv4KDhD7i7AOLCPB9HXedgZCP8QX6L6QWjqwWgFCIhj0wn53MBDKYd3TSRFfbVY4/sC+W2tWwehBn+6oUK88gNBjGIrNopyjgDvKvy4H1uxhoRVdal/zild5JmuwqzTOk93MbaaBKpB5jMhw9BDhoM5tSMz8j7be1yS8/blTCHE5pRbhEGzebAjREpGKwjpR295Uc5+etEhx9/GkYZ+kJdKF7xY1yCHoaBPHEDS4ju8R/CBaEZcIyJOfRiWkGfx2w==; 5:aCJo8pj4XqcEsy7b79xsNJSs1QIz3JTmZ4u17JYO6E7uzIG1S1qY6zhBWB1rIqtiAmZQqecWbrsClMdIqq/K5KBrXXZ9DxNqlFa+JWiZgBKNUJtUlGXsqSJTGhoJzbIfJbxdxEeTpLamIlmrTag0tVNszm6FW+aTYK0JE/aCfy4=; 7:r4pxjDoCjW6C2hJFkbUToCFjcWp0bB91E65VE4hwOKLU8m74mcyE3W35cutFUw+EU+lYItFVSls/jubUXGQWCoi5luSMe/lZAKJ/3WGLO04rwTHwGuxiMVvT87eijVG1IKOp1eHl9GETbMN6YwVaU3UQM+TZkGgLRJfSI9nw+mun8Tw4I0lzWrWThy5y8SgcjJ+ELJvptprgvX9Yp/IunU4sSI9oW97olOwNXA1mrh0Pc6jgsB0I2S8s8GAH9rkI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; OSAPR01MB3316; 20:QoDKLAAUBdYUdFZLRtKN8OQPRXogGmE/yA33H0W+emXCUyH+lanxToYSvKla1nCr7isxxUZgXZEO1mnFMI7REv/IB4DCXmNlwAWGgsSupNaIn9EOv4edFeudt+7dLNr0QuuEiVQy0f5UA07++6/8LGedJ+RE2DNuEWOvxkYpTH0= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2018 07:46:05.7145 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 04258295-a7af-40e1-af74-08d63e3bbf97 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSAPR01MB3316 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH 1/3] ASoC: rsnd: move .get_status under rsnd_mod_ops 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 Each mod needs to have .get_status, but current driver is handling it under rsnd_mod, instead of rsnd_mod_ops. It is not any make sence. This patch moves it to rsnd_mod_ops, and tidyup its parameter order to align to other callback functions. Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/adg.c | 2 +- sound/soc/sh/rcar/cmd.c | 11 +++-- sound/soc/sh/rcar/core.c | 10 ++-- sound/soc/sh/rcar/ctu.c | 3 +- sound/soc/sh/rcar/dma.c | 26 +++++----- sound/soc/sh/rcar/dvc.c | 3 +- sound/soc/sh/rcar/mix.c | 3 +- sound/soc/sh/rcar/rsnd.h | 13 ++--- sound/soc/sh/rcar/src.c | 24 ++++----- sound/soc/sh/rcar/ssi.c | 124 ++++++++++++++++++++++++----------------------- sound/soc/sh/rcar/ssiu.c | 37 +++++++------- 11 files changed, 129 insertions(+), 127 deletions(-) diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c index 28327dd..6768a66 100644 --- a/sound/soc/sh/rcar/adg.c +++ b/sound/soc/sh/rcar/adg.c @@ -613,7 +613,7 @@ int rsnd_adg_probe(struct rsnd_priv *priv) return -ENOMEM; ret = rsnd_mod_init(priv, &adg->mod, &adg_ops, - NULL, NULL, 0, 0); + NULL, 0, 0); if (ret) return ret; diff --git a/sound/soc/sh/rcar/cmd.c b/sound/soc/sh/rcar/cmd.c index cc191cd..e6bb6a9 100644 --- a/sound/soc/sh/rcar/cmd.c +++ b/sound/soc/sh/rcar/cmd.c @@ -116,10 +116,11 @@ static int rsnd_cmd_stop(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_cmd_ops = { - .name = CMD_NAME, - .init = rsnd_cmd_init, - .start = rsnd_cmd_start, - .stop = rsnd_cmd_stop, + .name = CMD_NAME, + .init = rsnd_cmd_init, + .start = rsnd_cmd_start, + .stop = rsnd_cmd_stop, + .get_status = rsnd_mod_get_status, }; static struct rsnd_mod *rsnd_cmd_mod_get(struct rsnd_priv *priv, int id) @@ -162,7 +163,7 @@ int rsnd_cmd_probe(struct rsnd_priv *priv) for_each_rsnd_cmd(cmd, priv, i) { ret = rsnd_mod_init(priv, rsnd_mod_get(cmd), &rsnd_cmd_ops, NULL, - rsnd_mod_get_status, RSND_MOD_CMD, i); + RSND_MOD_CMD, i); if (ret) return ret; } diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index f930f51..5373eba 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -137,8 +137,8 @@ struct dma_chan *rsnd_mod_dma_req(struct rsnd_dai_stream *io, return mod->ops->dma_req(io, mod); } -u32 *rsnd_mod_get_status(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, +u32 *rsnd_mod_get_status(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, enum rsnd_mod_type type) { return &mod->status; @@ -148,9 +148,6 @@ int rsnd_mod_init(struct rsnd_priv *priv, struct rsnd_mod *mod, struct rsnd_mod_ops *ops, struct clk *clk, - u32* (*get_status)(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, - enum rsnd_mod_type type), enum rsnd_mod_type type, int id) { @@ -164,7 +161,6 @@ int rsnd_mod_init(struct rsnd_priv *priv, mod->type = type; mod->clk = clk; mod->priv = priv; - mod->get_status = get_status; return ret; } @@ -472,7 +468,7 @@ static int rsnd_status_update(u32 *status, enum rsnd_mod_type *types = rsnd_mod_sequence[is_play]; \ for_each_rsnd_mod_arrays(i, mod, io, types, RSND_MOD_MAX) { \ int tmp = 0; \ - u32 *status = mod->get_status(io, mod, types[i]); \ + u32 *status = mod->ops->get_status(mod, io, types[i]); \ int func_call = rsnd_status_update(status, \ __rsnd_mod_shift_##fn, \ __rsnd_mod_add_##fn, \ diff --git a/sound/soc/sh/rcar/ctu.c b/sound/soc/sh/rcar/ctu.c index ad70237..2805847 100644 --- a/sound/soc/sh/rcar/ctu.c +++ b/sound/soc/sh/rcar/ctu.c @@ -341,6 +341,7 @@ static struct rsnd_mod_ops rsnd_ctu_ops = { .quit = rsnd_ctu_quit, .hw_params = rsnd_ctu_hw_params, .pcm_new = rsnd_ctu_pcm_new, + .get_status = rsnd_mod_get_status, }; struct rsnd_mod *rsnd_ctu_mod_get(struct rsnd_priv *priv, int id) @@ -404,7 +405,7 @@ int rsnd_ctu_probe(struct rsnd_priv *priv) } ret = rsnd_mod_init(priv, rsnd_mod_get(ctu), &rsnd_ctu_ops, - clk, rsnd_mod_get_status, RSND_MOD_CTU, i); + clk, RSND_MOD_CTU, i); if (ret) { of_node_put(np); goto rsnd_ctu_probe_done; diff --git a/sound/soc/sh/rcar/dma.c b/sound/soc/sh/rcar/dma.c index 6d19475..e5c30ee 100644 --- a/sound/soc/sh/rcar/dma.c +++ b/sound/soc/sh/rcar/dma.c @@ -289,12 +289,13 @@ static int rsnd_dmaen_pointer(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_dmaen_ops = { - .name = "audmac", - .prepare = rsnd_dmaen_prepare, - .cleanup = rsnd_dmaen_cleanup, - .start = rsnd_dmaen_start, - .stop = rsnd_dmaen_stop, - .pointer= rsnd_dmaen_pointer, + .name = "audmac", + .prepare = rsnd_dmaen_prepare, + .cleanup = rsnd_dmaen_cleanup, + .start = rsnd_dmaen_start, + .stop = rsnd_dmaen_stop, + .pointer = rsnd_dmaen_pointer, + .get_status = rsnd_mod_get_status, }; /* @@ -477,10 +478,11 @@ static int rsnd_dmapp_attach(struct rsnd_dai_stream *io, } static struct rsnd_mod_ops rsnd_dmapp_ops = { - .name = "audmac-pp", - .start = rsnd_dmapp_start, - .stop = rsnd_dmapp_stop, - .quit = rsnd_dmapp_stop, + .name = "audmac-pp", + .start = rsnd_dmapp_start, + .stop = rsnd_dmapp_stop, + .quit = rsnd_dmapp_stop, + .get_status = rsnd_mod_get_status, }; /* @@ -756,7 +758,7 @@ static int rsnd_dma_alloc(struct rsnd_dai_stream *io, struct rsnd_mod *mod, *dma_mod = rsnd_mod_get(dma); ret = rsnd_mod_init(priv, *dma_mod, ops, NULL, - rsnd_mod_get_status, type, dma_id); + type, dma_id); if (ret < 0) return ret; @@ -823,5 +825,5 @@ int rsnd_dma_probe(struct rsnd_priv *priv) priv->dma = dmac; /* dummy mem mod for debug */ - return rsnd_mod_init(NULL, &mem, &mem_ops, NULL, NULL, 0, 0); + return rsnd_mod_init(NULL, &mem, &mem_ops, NULL, 0, 0); } diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c index 2b16e0c..d65f24b 100644 --- a/sound/soc/sh/rcar/dvc.c +++ b/sound/soc/sh/rcar/dvc.c @@ -306,6 +306,7 @@ static struct rsnd_mod_ops rsnd_dvc_ops = { .init = rsnd_dvc_init, .quit = rsnd_dvc_quit, .pcm_new = rsnd_dvc_pcm_new, + .get_status = rsnd_mod_get_status, }; struct rsnd_mod *rsnd_dvc_mod_get(struct rsnd_priv *priv, int id) @@ -365,7 +366,7 @@ int rsnd_dvc_probe(struct rsnd_priv *priv) } ret = rsnd_mod_init(priv, rsnd_mod_get(dvc), &rsnd_dvc_ops, - clk, rsnd_mod_get_status, RSND_MOD_DVC, i); + clk, RSND_MOD_DVC, i); if (ret) { of_node_put(np); goto rsnd_dvc_probe_done; diff --git a/sound/soc/sh/rcar/mix.c b/sound/soc/sh/rcar/mix.c index 8e3b57e..a3e0370 100644 --- a/sound/soc/sh/rcar/mix.c +++ b/sound/soc/sh/rcar/mix.c @@ -256,6 +256,7 @@ static struct rsnd_mod_ops rsnd_mix_ops = { .init = rsnd_mix_init, .quit = rsnd_mix_quit, .pcm_new = rsnd_mix_pcm_new, + .get_status = rsnd_mod_get_status, }; struct rsnd_mod *rsnd_mix_mod_get(struct rsnd_priv *priv, int id) @@ -315,7 +316,7 @@ int rsnd_mix_probe(struct rsnd_priv *priv) } ret = rsnd_mod_init(priv, rsnd_mod_get(mix), &rsnd_mix_ops, - clk, rsnd_mod_get_status, RSND_MOD_MIX, i); + clk, RSND_MOD_MIX, i); if (ret) { of_node_put(np); goto rsnd_mix_probe_done; diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index 4464d1d..d25fb5c 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h @@ -301,6 +301,9 @@ struct rsnd_mod_ops { int (*cleanup)(struct rsnd_mod *mod, struct rsnd_dai_stream *io, struct rsnd_priv *priv); + u32 *(*get_status)(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, + enum rsnd_mod_type type); }; struct rsnd_dai_stream; @@ -310,9 +313,6 @@ struct rsnd_mod { struct rsnd_mod_ops *ops; struct rsnd_priv *priv; struct clk *clk; - u32 *(*get_status)(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, - enum rsnd_mod_type type); u32 status; }; /* @@ -385,9 +385,6 @@ int rsnd_mod_init(struct rsnd_priv *priv, struct rsnd_mod *mod, struct rsnd_mod_ops *ops, struct clk *clk, - u32* (*get_status)(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, - enum rsnd_mod_type type), enum rsnd_mod_type type, int id); void rsnd_mod_quit(struct rsnd_mod *mod); @@ -396,8 +393,8 @@ struct dma_chan *rsnd_mod_dma_req(struct rsnd_dai_stream *io, void rsnd_mod_interrupt(struct rsnd_mod *mod, void (*callback)(struct rsnd_mod *mod, struct rsnd_dai_stream *io)); -u32 *rsnd_mod_get_status(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, +u32 *rsnd_mod_get_status(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, enum rsnd_mod_type type); struct rsnd_mod *rsnd_mod_next(int *iterator, struct rsnd_dai_stream *io, diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c index cd38a43..7de7afd 100644 --- a/sound/soc/sh/rcar/src.c +++ b/sound/soc/sh/rcar/src.c @@ -527,16 +527,17 @@ static int rsnd_src_pcm_new(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_src_ops = { - .name = SRC_NAME, - .dma_req = rsnd_src_dma_req, - .probe = rsnd_src_probe_, - .init = rsnd_src_init, - .quit = rsnd_src_quit, - .start = rsnd_src_start, - .stop = rsnd_src_stop, - .irq = rsnd_src_irq, - .hw_params = rsnd_src_hw_params, - .pcm_new = rsnd_src_pcm_new, + .name = SRC_NAME, + .dma_req = rsnd_src_dma_req, + .probe = rsnd_src_probe_, + .init = rsnd_src_init, + .quit = rsnd_src_quit, + .start = rsnd_src_start, + .stop = rsnd_src_stop, + .irq = rsnd_src_irq, + .hw_params = rsnd_src_hw_params, + .pcm_new = rsnd_src_pcm_new, + .get_status = rsnd_mod_get_status, }; struct rsnd_mod *rsnd_src_mod_get(struct rsnd_priv *priv, int id) @@ -605,8 +606,7 @@ int rsnd_src_probe(struct rsnd_priv *priv) } ret = rsnd_mod_init(priv, rsnd_mod_get(src), - &rsnd_src_ops, clk, rsnd_mod_get_status, - RSND_MOD_SRC, i); + &rsnd_src_ops, clk, RSND_MOD_SRC, i); if (ret) { of_node_put(np); goto rsnd_src_probe_done; diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index fcb4df2..cb66986 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -681,6 +681,41 @@ static irqreturn_t rsnd_ssi_interrupt(int irq, void *data) return IRQ_HANDLED; } +static u32 *rsnd_ssi_get_status(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, + enum rsnd_mod_type type) +{ + /* + * SSIP (= SSI parent) needs to be special, otherwise, + * 2nd SSI might doesn't start. see also rsnd_mod_call() + * + * We can't include parent SSI status on SSI, because we don't know + * how many SSI requests parent SSI. Thus, it is localed on "io" now. + * ex) trouble case + * Playback: SSI0 + * Capture : SSI1 (needs SSI0) + * + * 1) start Capture -> SSI0/SSI1 are started. + * 2) start Playback -> SSI0 doesn't work, because it is already + * marked as "started" on 1) + * + * OTOH, using each mod's status is good for MUX case. + * It doesn't need to start in 2nd start + * ex) + * IO-0: SRC0 -> CTU1 -+-> MUX -> DVC -> SSIU -> SSI0 + * | + * IO-1: SRC1 -> CTU2 -+ + * + * 1) start IO-0 -> start SSI0 + * 2) start IO-1 -> SSI0 doesn't need to start, because it is + * already started on 1) + */ + if (type == RSND_MOD_SSIP) + return &io->parent_ssi_status; + + return rsnd_mod_get_status(mod, io, type); +} + /* * SSI PIO */ @@ -876,18 +911,19 @@ static int rsnd_ssi_prepare(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_ssi_pio_ops = { - .name = SSI_NAME, - .probe = rsnd_ssi_common_probe, - .remove = rsnd_ssi_common_remove, - .init = rsnd_ssi_pio_init, - .quit = rsnd_ssi_quit, - .start = rsnd_ssi_start, - .stop = rsnd_ssi_stop, - .irq = rsnd_ssi_irq, - .pointer = rsnd_ssi_pio_pointer, - .pcm_new = rsnd_ssi_pcm_new, - .hw_params = rsnd_ssi_hw_params, - .prepare = rsnd_ssi_prepare, + .name = SSI_NAME, + .probe = rsnd_ssi_common_probe, + .remove = rsnd_ssi_common_remove, + .init = rsnd_ssi_pio_init, + .quit = rsnd_ssi_quit, + .start = rsnd_ssi_start, + .stop = rsnd_ssi_stop, + .irq = rsnd_ssi_irq, + .pointer = rsnd_ssi_pio_pointer, + .pcm_new = rsnd_ssi_pcm_new, + .hw_params = rsnd_ssi_hw_params, + .prepare = rsnd_ssi_prepare, + .get_status = rsnd_ssi_get_status, }; static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, @@ -951,19 +987,20 @@ static struct dma_chan *rsnd_ssi_dma_req(struct rsnd_dai_stream *io, } static struct rsnd_mod_ops rsnd_ssi_dma_ops = { - .name = SSI_NAME, - .dma_req = rsnd_ssi_dma_req, - .probe = rsnd_ssi_dma_probe, - .remove = rsnd_ssi_common_remove, - .init = rsnd_ssi_init, - .quit = rsnd_ssi_quit, - .start = rsnd_ssi_start, - .stop = rsnd_ssi_stop, - .irq = rsnd_ssi_irq, - .pcm_new = rsnd_ssi_pcm_new, - .fallback = rsnd_ssi_fallback, - .hw_params = rsnd_ssi_hw_params, - .prepare = rsnd_ssi_prepare, + .name = SSI_NAME, + .dma_req = rsnd_ssi_dma_req, + .probe = rsnd_ssi_dma_probe, + .remove = rsnd_ssi_common_remove, + .init = rsnd_ssi_init, + .quit = rsnd_ssi_quit, + .start = rsnd_ssi_start, + .stop = rsnd_ssi_stop, + .irq = rsnd_ssi_irq, + .pcm_new = rsnd_ssi_pcm_new, + .fallback = rsnd_ssi_fallback, + .hw_params = rsnd_ssi_hw_params, + .prepare = rsnd_ssi_prepare, + .get_status = rsnd_ssi_get_status, }; int rsnd_ssi_is_dma_mode(struct rsnd_mod *mod) @@ -1091,41 +1128,6 @@ int __rsnd_ssi_is_pin_sharing(struct rsnd_mod *mod) return !!(rsnd_flags_has(rsnd_mod_to_ssi(mod), RSND_SSI_CLK_PIN_SHARE)); } -static u32 *rsnd_ssi_get_status(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, - enum rsnd_mod_type type) -{ - /* - * SSIP (= SSI parent) needs to be special, otherwise, - * 2nd SSI might doesn't start. see also rsnd_mod_call() - * - * We can't include parent SSI status on SSI, because we don't know - * how many SSI requests parent SSI. Thus, it is localed on "io" now. - * ex) trouble case - * Playback: SSI0 - * Capture : SSI1 (needs SSI0) - * - * 1) start Capture -> SSI0/SSI1 are started. - * 2) start Playback -> SSI0 doesn't work, because it is already - * marked as "started" on 1) - * - * OTOH, using each mod's status is good for MUX case. - * It doesn't need to start in 2nd start - * ex) - * IO-0: SRC0 -> CTU1 -+-> MUX -> DVC -> SSIU -> SSI0 - * | - * IO-1: SRC1 -> CTU2 -+ - * - * 1) start IO-0 -> start SSI0 - * 2) start IO-1 -> SSI0 doesn't need to start, because it is - * already started on 1) - */ - if (type == RSND_MOD_SSIP) - return &io->parent_ssi_status; - - return rsnd_mod_get_status(io, mod, type); -} - int rsnd_ssi_probe(struct rsnd_priv *priv) { struct device_node *node; @@ -1192,7 +1194,7 @@ int rsnd_ssi_probe(struct rsnd_priv *priv) ops = &rsnd_ssi_dma_ops; ret = rsnd_mod_init(priv, rsnd_mod_get(ssi), ops, clk, - rsnd_ssi_get_status, RSND_MOD_SSI, i); + RSND_MOD_SSI, i); if (ret) { of_node_put(np); goto rsnd_ssi_probe_done; diff --git a/sound/soc/sh/rcar/ssiu.c b/sound/soc/sh/rcar/ssiu.c index 39b6764..ebcb826 100644 --- a/sound/soc/sh/rcar/ssiu.c +++ b/sound/soc/sh/rcar/ssiu.c @@ -22,6 +22,16 @@ struct rsnd_ssiu { ((pos) = ((struct rsnd_ssiu *)(priv)->ssiu + i)); \ i++) +static u32 *rsnd_ssiu_get_status(struct rsnd_mod *mod, + struct rsnd_dai_stream *io, + enum rsnd_mod_type type) +{ + struct rsnd_ssiu *ssiu = rsnd_mod_to_ssiu(mod); + int busif = rsnd_ssi_get_busif(io); + + return &ssiu->busif_status[busif]; +} + static int rsnd_ssiu_init(struct rsnd_mod *mod, struct rsnd_dai_stream *io, struct rsnd_priv *priv) @@ -115,8 +125,9 @@ static int rsnd_ssiu_init(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_ssiu_ops_gen1 = { - .name = SSIU_NAME, - .init = rsnd_ssiu_init, + .name = SSIU_NAME, + .init = rsnd_ssiu_init, + .get_status = rsnd_ssiu_get_status, }; static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, @@ -279,10 +290,11 @@ static int rsnd_ssiu_stop_gen2(struct rsnd_mod *mod, } static struct rsnd_mod_ops rsnd_ssiu_ops_gen2 = { - .name = SSIU_NAME, - .init = rsnd_ssiu_init_gen2, - .start = rsnd_ssiu_start_gen2, - .stop = rsnd_ssiu_stop_gen2, + .name = SSIU_NAME, + .init = rsnd_ssiu_init_gen2, + .start = rsnd_ssiu_start_gen2, + .stop = rsnd_ssiu_stop_gen2, + .get_status = rsnd_ssiu_get_status, }; static struct rsnd_mod *rsnd_ssiu_mod_get(struct rsnd_priv *priv, int id) @@ -304,16 +316,6 @@ int rsnd_ssiu_attach(struct rsnd_dai_stream *io, return rsnd_dai_connect(mod, io, mod->type); } -static u32 *rsnd_ssiu_get_status(struct rsnd_dai_stream *io, - struct rsnd_mod *mod, - enum rsnd_mod_type type) -{ - struct rsnd_ssiu *ssiu = rsnd_mod_to_ssiu(mod); - int busif = rsnd_ssi_get_busif(io); - - return &ssiu->busif_status[busif]; -} - int rsnd_ssiu_probe(struct rsnd_priv *priv) { struct device *dev = rsnd_priv_to_dev(priv); @@ -337,8 +339,7 @@ int rsnd_ssiu_probe(struct rsnd_priv *priv) for_each_rsnd_ssiu(ssiu, priv, i) { ret = rsnd_mod_init(priv, rsnd_mod_get(ssiu), - ops, NULL, rsnd_ssiu_get_status, - RSND_MOD_SSIU, i); + ops, NULL, RSND_MOD_SSIU, i); if (ret) return ret; } From patchwork Tue Oct 30 07:47:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10660551 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 1078D17DF for ; Tue, 30 Oct 2018 09:06:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 014CF298B5 for ; Tue, 30 Oct 2018 09:06:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E7780298E5; Tue, 30 Oct 2018 09:06:55 +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.7 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE 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 6C1C3298D1 for ; Tue, 30 Oct 2018 09:06:54 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 4A8BD267692; Tue, 30 Oct 2018 08:47:26 +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 D210426770D; Tue, 30 Oct 2018 08:47:23 +0100 (CET) Received: from JPN01-OS2-obe.outbound.protection.outlook.com (mail-os2jpn01on0104.outbound.protection.outlook.com [104.47.92.104]) by alsa0.perex.cz (Postfix) with ESMTP id 3D13C2675B8 for ; Tue, 30 Oct 2018 08:47:21 +0100 (CET) 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=1zYyab5BuesTlpznMbHSYji09GrWuyquGRNFrdMi8oo=; b=SNG39miID798MY252a2jrgdFBPKXX+I/r/EKWF0RxrN3wJ3vaipZlEIh/is6SH6Uvm4if59Qx1X4hqRDc0ELth0wpdc9lZpHqd+ai4lry4/rIS5P0zxSC8RinyzQfSA+gLHWoEL7f19ZCUmXRlLPgRJQ0/iz6v571RGKCE2cdxk= 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 TYAPR01MB3327.jpnprd01.prod.outlook.com (2603:1096:404:bb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1250.22; Tue, 30 Oct 2018 07:47:18 +0000 Message-ID: <87d0rrsx37.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: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> References: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Tue, 30 Oct 2018 07:47:18 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: TY2PR02CA0011.apcprd02.prod.outlook.com (2603:1096:404:56::23) To TYAPR01MB3327.jpnprd01.prod.outlook.com (2603:1096:404:bb::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fdb91d40-4fa6-4000-5975-08d63e3beaf1 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:TYAPR01MB3327; X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 3:OBK4++ZxqO+98F8a9eNTWosCFnxIb1LXpmB/2ohSq3bJlXG00pTH+BER/+nGiRzI9ZWl79mC6U1YAaMXZ6Ke8h7Ahrj05t6J5tr+w6dxuhWx26YLDU6OTjPNIc9y3AnP9K0RdEAaz5TJYnTTXG18Hq/yIZ3L+if6f+hQAougLRrf3SpnrcxPuFBiIAi3vLoxdu4y8S9pLp2FlNInwVsmtYmOzLDy+aQfUMlHwCZGYp018ynvRdVeMnRoZbps5cjo; 25:SRm+/M4tHOEeRWrQEGZADUFm1E4LYw4gQnXSXQMB5KxfyteyAgV8F3JnE07CNwxHnxlVB+1H+ZLjPVA3kE1ojikKSf+WiJr5L4EWmikO1kWJO5XCxGsYdiLEF0MaK9x4M/eCDtrAuhnhXBfqehlLS2OUPeuUE47YNSoi7nWHvtb5LbVI6OG//si+MAAlCkWBY5UVz7OTg54fEt0c0YdAH7iGTIEf1YZTKPlbz5ll31xKDbGmNX2PeEw1rMzzgWzPQN/rvwkxoGcU7XNhkboaeQtCUYjx3k4QNr8pYJCKLN77QrMnEu3JyEkoIPjmLaP+fEeA+Cjs2Y2FDpSmu3E8CQ==; 31:B2qqIUdoldCBygI5p1TeAyudjf25Yd5qE7ESKOeQu3NzVI0gzSQcLEGliEQtK4jCiwuTj1a4taLnG/MPLvBb5wJO7/miMP6MGIbwc5h6fiF/x2KNQquiJuEa0venIFa3kot0h+aApfUkPsXsTDN4iF1BJux6hVKcTXipF4UQVLGqs2WUPyZywk15rKGwDiFogqKQpsBNoGAY5cGpYlCGRyKRudaRyJNDGREnmnylJ8U= X-MS-TrafficTypeDiagnostic: TYAPR01MB3327: X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 20:z8wpZK9llvNy0hdEWblImbdUkVuE1SfSQLTLteq4Tt2GNwsojrNcj3S1tbcL8pAJjGS3xjVBCAqNnnek8lF4SuH1EqNFGvZHg45FvOJPf4MsDyhD3M/uzhYkz8AkP5esmbKVz5DSXIYHqXNUhY0zFumdP29j6fg/89eG9CWVVfrHWvdx8hK1FbxkabuUcbUxMAEWP7uEHl2ljWCnOfVVj0jjTgLqP1nMoNo3jvcsLQPNqHZJj6mf6euKL5mmXZ2gaq3LO/Oj5I2JWdY4GWdkOS8mYZqfXxcMYJQCq/o/GtR5zi6y4ScXEmo0N88x3ebkai1eoJtUL5y9vLoxPaHoM+PEeE06wXwoixYu5YFWkk/Vyf9KaVZB3HGJMCXpyaeEHIUrnDJPBIz/Uar0hGBcFMfe9sUOYjkYgiGLTkaE7eFkVDFeyFHLJXKHIXCYvIY9Wp4RnXPEzpQqZfntOLfNcgHnktS3qCA9Xn/4B17vzD2TO77RJPdmLLtq8eGSJkfG; 4:feP22ixApVjz6Ypt9m4ehJpgM1XDI/HkUTtc8GXndMuvfCHdC9endAc/T/RdXlIKZ5bs6zGy5Fzo5AyMhDb3zGkV9oXN/Te4p1/RQH9Q23ekt9WszzTH2lDATRenoUD00u/ZHagR8o7vlozoO8mK4hfQJSi4hUv+HGduqcuGMVQNw7eJdNNlz3c9S9rMz4yBP3QEDstr+37c7HW1aluhsVwP6tre0moZJwnbxTbuATW9d7VNSCirkQOKKUxKlyx+QvloNpv8/wZWnatXCmu64Q== 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)(3002001)(93006095)(93001095)(3231382)(944501410)(52105095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:TYAPR01MB3327; BCL:0; PCL:0; RULEID:; SRVR:TYAPR01MB3327; X-Forefront-PRVS: 08417837C5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(366004)(346002)(39860400002)(136003)(376002)(40224003)(199004)(189003)(14444005)(956004)(2616005)(476003)(446003)(11346002)(486006)(6486002)(47776003)(66066001)(26005)(2906002)(36756003)(3846002)(86362001)(7736002)(305945005)(6116002)(50466002)(23726003)(316002)(8676002)(8936002)(68736007)(81156014)(81166006)(106356001)(386003)(105586002)(53936002)(16586007)(58126008)(7696005)(4326008)(52116002)(478600001)(97736004)(25786009)(6916009)(53416004)(69596002)(76176011)(5660300001)(16526019)(186003)(142923001)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:TYAPR01MB3327; 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; TYAPR01MB3327; 23:uBARaN2pL2S1zzM27m9lbgGhBScAT7KJSZtr5/jbJ?= 1ejqFp3rTn/VQ6nJagfEbCmeYn2FCiCgQx4seWAiY6K/p4n/ZAR4fZoE48ffpVPx3Vgs3PsrQGCQCL7o948UGIrolVWKuD/yGGA2fjiNNUAU7zOzuE6+bKgy6M66E5iR1STrCIqlnrYjtU+Wn8bSpxQckedm6etNpv6YcvKUcpcPexZB6U5rqFmepmAnViePxqZsr3CRLZD9eUO18RuD7mq4IYOBqFWkQ6sgjB2bbtlL2a8BaWrorJFDka6eZAVqNk8d8pNXGm/7iTEVRnXg+m//FzsUX5RUe7YSHXMd5gf75bnm7GKKTN5ug9x4vhd0Q6n2JpuG5F6804UuXANO+eCO4s9HsAN8p4F6CJwpyFvuXVzLGvhn8woDq218jmPbtPKaxMxqkiYJPdmJjY+0++OlAmzX/ORpNV+4tgRSthQmy0wfMOYfZeEWsicn98c4PTYAFzeYnAbnAd2bC3OtwxhD5Oj0wRasvNxvu5teM15pfUgpxbuWoMBkhQpZZVpsQRp7b5n13Ps4k4UgBjhaXMDzKzAcU8FhMGUgXNknmc10MfoLXarhdRZv7bwImoKN48kw6eRJho8qwxLly1bOJJ7JrO4lBKPNPjlAkAOQaglBdMIHjvv9LmbFRjinX1yGO0yKzOeBntAnH4fFxC3Zdky0Tf6L0/PSu/lpKSxC2OTDxXeagxtcP9CuNVlgn4sA8ftcyl5+w7yuJXk7hzzPie4/7WcKZSBaLGmCOR2C0GwBmbFK/InodnxK7hl+hFiZSxGi5KGCpEIzj2p2QpkwGkVgidWe6O6yEB3dYYJSXz7hGMF4Pk9hq3FX6aq1ejoUmIiUcNX5Y2iYGgG3M7uV4SahociSkoWt0XU4K4jf2FLhAc1rmQRNmli+uMzikHZmPxvis5JL6msejAl4oaTg8F4DAMNLdkGlzOYsqJI5pGV3px5dhEtLisKn8dL37tHl3h/kEM4CZEik0U+zg/ZqcIln39u1CwOwlwzXCQgCCq1Hc//BJO7UAtjLU0ugZavWV18y0LsCF66IQpXuh4QSOyjRdvPjvDpf8816bGG5CQfwAQDiwTjw/xUH3d7IW3NUgvl9VdUP1AyDEAqQ+wsOK2fcuIx6dQR+HKZ/3Zb4HMt8KzCi4Zlm8qJ15JNC/fG4j3xeT3uVwBBxXQ8BvdtO48PTkuR7mgx3CO+3xZvvx/pre4hU6qzVT1cu26Pf5FfVTE= X-Microsoft-Antispam-Message-Info: 4TuKP25+rJlkrl8qho9jcE5syGBHffd5A5njq9ezWVOumwUvY4JOyUOZEEBEYGM3mld6x30ML9QrTdGSAIKDildcysAyEvZh42yyTSjunGR1SDRHad2VUasVUsV8LbARQZPnIULwraTeu1owsUCc2R1Rz+jTNIbAa08ZP8yEWUR7RrN4yKXZtgyUKfQlcQqZsvDAnReSBhBLJpMP0hlZBq8yVlM340Ze/gR3mhQVOPJ4vPvlgtKZm1Qoygp6hTUV/BxYamdDFSz+5TIJLjpsalplyuNtF4oUbU7OSFJsLdc2B5vyvXhkDs2wMnjhrQDyrP+ZFtfH+IBwt8zt2mC/xMmjfWVeNjyRiaxku7LWZMI= X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 6:fvtE+v6jHNbIpJI5SmSGmCBBZiN1WPJAigHkrtXul6HlwK7BEuRp6PUc8tgAVxVw5GIUJKbeJgGVN+UPLnwHgxiYB19knUIKbJ3wZu55uVb6R/ZXq/GPW2Q5upW33zs8n+kcrNgv7LZ8o2ik/rAWssVHui9giNCZa/k/67092UDtp8YpZ+2QNbeImbjTrWD/QFDuV88Ik9bXjc0eugQwyrt9CpIkDCIuvjruWevI1lMspv0/VstZqtoD7NpoMzWxo9l23pI24zPB60jhowPXOG/HKA88VV6eu9NfvS5Qsjo7sKzyQG6T8BNdkJie5ASIqQRtd65VTX4u4nCkUz61Z0otEyxrPb4wIYyZDSJyoVAxd4LcZGoVz5WqnDiNQ/7uso+CU4BDCl7EnleAMbgVXwZrqkjlYvVj9SiM+rimLmh/0isVLOE6JNL12hK+fgeR4Wbeyk0/1LhxyNi6y7OU0A==; 5:gB3LExeHwFeIALeRhXLJ/l2iMP+Tbig0O+akLbgiRnzLhRHqGElIP7tHXwcre7Nz4WW2ABMzwaeu+EhkBbKwxAO2kVJXPNRuVOz0oEL6/BvKBISbEHGHGW1wk/FUT7N9lWzdvQXg3/PMzLHEEyuO/FkcUtXj1q2r4AE1Mu9hMM0=; 7:1UqKO840pSy3yscXUlQn+pfe5mfhB+5amB2tdJtn8yUnVkg8iuIxhnYbP2ZwbYV1BF6Px1W7BvnN62iL6OwujVovq3Q3Una5C6s70ryC/ebRUXBehbZfGQtSv1+3C2+Vb1qlRu8esV4kEusaSudU39XtJUcNMrKpxv4isgg4QOR2Zbvx4yrJC4rALA7aKvrszNX7IbeDe0vpiL8s564v3I8deM5Y662pHhvgUUcMy3up6gq4nkaJ/XkeqjVcnHQK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 20:9tMEgU8A/4sLz67JxTc4vzRhdaSK5bd4xzP92ZoQlJWDJukzR9avsiQO8FdHVCE4og8FK2e9T7raAYC/ky9A7F0w3MbwgihsRLvwOwhbukfHhlzvSht1vcVgUgqLq+it4ms5PJltdIwJkwpU30wvhUS3WRWFqmtUEGJpotDbrLE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2018 07:47:18.4721 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fdb91d40-4fa6-4000-5975-08d63e3beaf1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB3327 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH 2/3] ASoC: rsnd: add .get_id/.get_id_sub 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 ID for CTU and SSIU are confusable. 1 CTU has 4 sub nodes. This means, CTU0 has CTU01 - CTU03, CTU1 has CTU10 - CTU13. SSIU is more confusable. Gen2 SSIU has BUSIF0-3, Gen3 SSIU has BUSIF0-7, but not for all SSIU. In rsnd driver, each mod drivers are assuming rsnd_mod_id() returns main device ID (In CTU case CTU0-1, SSIU case SSIU0-9), not serial number. This patch adds new .id/.id_sub to handling more detail ID. Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/core.c | 21 +++++++++++++++++++++ sound/soc/sh/rcar/ctu.c | 20 ++++++++++++++++++++ sound/soc/sh/rcar/rsnd.h | 6 +++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 5373eba..82d2234 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -144,6 +144,27 @@ u32 *rsnd_mod_get_status(struct rsnd_mod *mod, return &mod->status; } +int rsnd_mod_id_raw(struct rsnd_mod *mod) +{ + return mod->id; +} + +int rsnd_mod_id(struct rsnd_mod *mod) +{ + if ((mod)->ops->id) + return (mod)->ops->id(mod); + + return rsnd_mod_id_raw(mod); +} + +int rsnd_mod_id_sub(struct rsnd_mod *mod) +{ + if ((mod)->ops->id_sub) + return (mod)->ops->id_sub(mod); + + return 0; +} + int rsnd_mod_init(struct rsnd_priv *priv, struct rsnd_mod *mod, struct rsnd_mod_ops *ops, diff --git a/sound/soc/sh/rcar/ctu.c b/sound/soc/sh/rcar/ctu.c index 2805847..6a948b1 100644 --- a/sound/soc/sh/rcar/ctu.c +++ b/sound/soc/sh/rcar/ctu.c @@ -334,6 +334,24 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod, return ret; } +static int rsnd_ctu_id(struct rsnd_mod *mod) +{ + /* + * ctu00: -> 0, ctu01: -> 0, ctu02: -> 0, ctu03: -> 0 + * ctu10: -> 1, ctu11: -> 1, ctu12: -> 1, ctu13: -> 1 + */ + return mod->id / 4; +} + +static int rsnd_ctu_id_sub(struct rsnd_mod *mod) +{ + /* + * ctu00: -> 0, ctu01: -> 1, ctu02: -> 2, ctu03: -> 3 + * ctu10: -> 0, ctu11: -> 1, ctu12: -> 2, ctu13: -> 3 + */ + return mod->id % 4; +} + static struct rsnd_mod_ops rsnd_ctu_ops = { .name = CTU_NAME, .probe = rsnd_ctu_probe_, @@ -342,6 +360,8 @@ static struct rsnd_mod_ops rsnd_ctu_ops = { .hw_params = rsnd_ctu_hw_params, .pcm_new = rsnd_ctu_pcm_new, .get_status = rsnd_mod_get_status, + .id = rsnd_ctu_id, + .id_sub = rsnd_ctu_id_sub, }; struct rsnd_mod *rsnd_ctu_mod_get(struct rsnd_priv *priv, int id) diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index d25fb5c..fdf007a 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h @@ -304,6 +304,8 @@ struct rsnd_mod_ops { u32 *(*get_status)(struct rsnd_mod *mod, struct rsnd_dai_stream *io, enum rsnd_mod_type type); + int (*id)(struct rsnd_mod *mod); + int (*id_sub)(struct rsnd_mod *mod); }; struct rsnd_dai_stream; @@ -376,7 +378,6 @@ struct rsnd_mod { #define rsnd_mod_to_priv(mod) ((mod)->priv) #define rsnd_mod_name(mod) ((mod)->ops->name) -#define rsnd_mod_id(mod) ((mod)->id) #define rsnd_mod_power_on(mod) clk_enable((mod)->clk) #define rsnd_mod_power_off(mod) clk_disable((mod)->clk) #define rsnd_mod_get(ip) (&(ip)->mod) @@ -396,6 +397,9 @@ void rsnd_mod_interrupt(struct rsnd_mod *mod, u32 *rsnd_mod_get_status(struct rsnd_mod *mod, struct rsnd_dai_stream *io, enum rsnd_mod_type type); +int rsnd_mod_id(struct rsnd_mod *mod); +int rsnd_mod_id_raw(struct rsnd_mod *mod); +int rsnd_mod_id_sub(struct rsnd_mod *mod); struct rsnd_mod *rsnd_mod_next(int *iterator, struct rsnd_dai_stream *io, enum rsnd_mod_type *array, From patchwork Tue Oct 30 07:47:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10660553 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 5C17C1932 for ; Tue, 30 Oct 2018 09:06:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4D2E7298B5 for ; Tue, 30 Oct 2018 09:06:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3DFEE298D1; Tue, 30 Oct 2018 09:06:56 +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.7 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE 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 6BA4C298D0 for ; Tue, 30 Oct 2018 09:06:54 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id AFAE52677E8; Tue, 30 Oct 2018 08:47:57 +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 E47F22677EB; Tue, 30 Oct 2018 08:47:55 +0100 (CET) Received: from JPN01-TY1-obe.outbound.protection.outlook.com (mail-ty1jpn01on0107.outbound.protection.outlook.com [104.47.93.107]) by alsa0.perex.cz (Postfix) with ESMTP id 6C1CF2675B8 for ; Tue, 30 Oct 2018 08:47:53 +0100 (CET) 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=unbNsgQHvoKHHF99myqRUDRggk+lInY7qG5it6/chQU=; b=KOKmhveMrJeUweGil1h3qAbNSWX4Baj0mCQLopJXhEweS7wBQX6oqmWJARt1rLRoqltsjPJRxn0gWddHuB6M7uJpZB2NM+7V4dWK39fKX6hJ8yByTK/ASn0iCr21iW10sUYqv0aH3O7QFoDLzpkvVgP2+9z6wnA7MGSesz194ig= 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 TYAPR01MB3326.jpnprd01.prod.outlook.com (2603:1096:404:bb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1250.22; Tue, 30 Oct 2018 07:47:50 +0000 Message-ID: <87bm7bsx26.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: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> References: <87ftwnsx93.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Tue, 30 Oct 2018 07:47:50 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: TY2PR02CA0031.apcprd02.prod.outlook.com (2603:1096:404:a6::19) To TYAPR01MB3326.jpnprd01.prod.outlook.com (2603:1096:404:bb::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4daa8b43-0878-48bb-b0be-08d63e3bfde0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:TYAPR01MB3326; X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3326; 3:lpDyZ9gMTzgVLwnVij8W0GtEyAzaUtvXylx7KCDtlkguF9r78lHXaDLj1yt49GxAYyPKUGudCz4F4P0VX0JI5XOJ26/drnMUYHg2+8guwRvukj4r8Y/xfsdn62QluiVF3kCCxREh9/YzEMqvs/YBIsI/pVTZHQUNQYAn1JJt57L0jCNuXjjlanzlutVBS7Q2DwE/nrcb7CvFM8IH33w0onPPaOqsvCGSlXRnAxvM5qRxR6+nyuERuRQ89SWppd0f; 25:zhozSVPbV+XGqTWTV49mQj+bfSRJmR3KmdNRqbB1fkAe3lD+8//jdsW9OEfwNps1Z30017Qf9wpnaKcUk1hcc2poscbC21yJyAwzSP3jO/aVqshWdLFK8jBKPW+hqzePsRFH6W5/zolyXTZxWG+TuuXB56udQFXQXIPQ7VR3r8bwwGHBxnOzlbCFNHtQQgEA5dCB9N+GrXAHRrJAUNNCV5PtI+7qNdly6UBslCfzC7LFw1ZqIXsS1ZE8sHlENNIE/wuDmsVRzaxwDqJb9XrsneKvzjpxdWBYD1dOkc0SweofgdJxObxxAqxlqqoBQ0MYDmVhUIGAgsNCiTCmrKke7g==; 31:DO1LThIBcUtwQid3ZgHtmA9GBM0zCmdZ6fC5OtAnYcjzUCRUa3QpFp7dyPUKpHnw7BeQLxLmSCxad93z7oNUzYyoMd3WOLIcQZSHYbRifGstX2BLmVYjQhqZItkbhiEKn8vHPjGCAEP0Jsw0+WylOKSTbrgJr1ajDl1xnXYyC+di7nBrxUQObWwwmjmcBAnxmviBharKlymhQonVEuXHldOlOM/mZs1Ll0PoD1Ocido= X-MS-TrafficTypeDiagnostic: TYAPR01MB3326: X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3326; 20:m5RfbFqq1K16eOazl1VAZv6mmmkNqkrPzD4n353mY3e1UBQRAqLQyf7tHX2GJKS1qrXG8M0zOqZj9Ka9jT7S1xqGbs8pGlrbPkubhXcy3pZsjt+KIDvAYsfVqJwAukciGEQtXesjHIatn/CviBqTIRTs1cyh3msVncFsmvP+p3zaVeTVHGyLj6CxW7c47/BdkDXHRexq9SR85Qzh64/7bxLeHgT9g3XJJ5n4piB64C/Qo9vHZB5YpWXB3hr/aFVq/jpHOIppNDyEAKDh7nDNFKTxeX0BwH92hOn/p7WMmUYc93YXUD4dVljD3ZBwrhwFfm21G+Z9WPWvGTz5RbjMMOaaDNN0Ey/wRr8nAJ+cY8kuynLwy/R/qdATO38cxGYBb6wRLalE5gpOy1LIS2Zad9UsiQ2K0FMLETB9aVP7lCotHqBU26Zvs7/qtPIAQ+hz+c+RD1jWMpmrI8f2WYKxM7EiV7wrwPwioOgFL5LTe5yL5Mw/XUjhX4AVLMjmm1NY; 4:tRIabzpa4aLBFphlFCeNy5FGk+9+4TaD6I/U72a2UoSWxINOIyJbe1BbCDbf2qouGIpOixG/Wabt/kaVZLLSG2VtYnkbOA8+MHFEj3pA4iaLfF3w9+lEEYAAgFBxYTYajzZPPDBVAykXRU+25prH8B4oBLxn6Up8TQGRwlc2yqi89tMMktQK9nySYG2UuVcQ17KQayeNewKN9MVvCzq8q8+oeoqBlZ8v/vyhGPr9t07qhFwgOw63Lnz5+mvE9O1m/Ei9oWt8r3yNQ/GXRDiDyA== 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)(3002001)(93006095)(93001095)(3231382)(944501410)(52105095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:TYAPR01MB3326; BCL:0; PCL:0; RULEID:; SRVR:TYAPR01MB3326; X-Forefront-PRVS: 08417837C5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(366004)(376002)(136003)(346002)(39860400002)(199004)(189003)(5024004)(486006)(956004)(2616005)(476003)(14444005)(11346002)(446003)(47776003)(66066001)(2906002)(26005)(6486002)(36756003)(53936002)(86362001)(7736002)(305945005)(6116002)(3846002)(575784001)(50466002)(23726003)(58126008)(16586007)(81156014)(81166006)(8676002)(8936002)(68736007)(316002)(386003)(105586002)(4744004)(106356001)(7696005)(4326008)(52116002)(478600001)(97736004)(25786009)(6916009)(53416004)(69596002)(5660300001)(76176011)(16526019)(186003)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:TYAPR01MB3326; 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; TYAPR01MB3326; 23:S4MObxSZpVyEwnRXYpoc61+jUHIzc6AnddGlCRfB3?= f5OBLMlrAPL6tYeiDxFP2oi08+EDqycY+CuDZe8mUeXptpgp0y09c7AOii2Lz/910D1b51dgvxn5wLmyAA7T4fLMdHRPMc8RUc/Ol8nevWoBGMA4NgZfVY9DGa6AZ/TRf2aNyMXWfN2TH1/FT/Q5sjI8CRQDqUIrLQ4Ct6jpibxf0hWOdr7ztg1Ile1N7L5KrXtM/Y7bk6rEZDNYajaGcQKWr/E4xyq/hYEyBsxGBnG4Tfof2zrsy6+zlMOvsQbA/Cznp8YlVVxR4AWx0li1FE1Nfn10DTpjMXj2RoWcS1Q0vuATs7Jvu3EdpQXZJScSHNlaJQ+4fDoijvUFNv/17T/xXwhP1dngfSeGDuybTZ8O7JhJ1AQj/VGFonf+DYcfKoY41CebyaR3xjzIj6alA1NB0k9eGpW2hKTSQsZe3FxvPhjoLloRJdIHxEjAlpX78+bWexAv+GnesEl7TOj+zFu7EIAKasCYOUzcTk268O+w9yCqlipjUWjPK8Iz8jlaNcCcHuDp6aXKZsP1uUEihScxVWQUFZdjG0+P3KzteGVsmcU1mQyMd9wYIUCM303RX45yZu81ucpQQOoEAZWLI3nYuCH86eED8VtcEbdMIIkhZ7LGyiMMqFuQkTIaTVDbsMtPalcZFIM6iGVBHVf2umnM9mbVgl9P17fiysUmEF6/+mOLCZz9UECjIP3xIP/jVIHbjpMWnZpbxgG1V6ANsG2rcZ7qNcETiAsWt/qdj12hEhFy08XrD77QDwZqu6cqx+hD628kuZwg4+9rqkVx9z4N4AuJxItYp4WcNmYZC1XfjeAeIIpcQPB7oPo29qFVlhwMFx81r3/YE7GgC87rvzb2kF/+px7E26wuUhM7k+8xDhN0dTddOrGOl/6BJ8yJiH+iLhlfrlv/OSJsn8/3OMqSW0+BLu0k0veMmktLI46vpaHA2hpVJjug2Taug3asIrJ2WZ00PMxbrWWjRqTmW90C6U89yx/80hSAr94vlpn2HZs3BGRzKMcJcktlEXWHufRw0J1c73Ahx3FDY/YoZ3hXTXmVSeKhaDlSohLx8STBnIo0gcDwTZBIpvU95rybcFDLGarDoleitxxhFJXJWk09ZWalSdcEwWhYvjNz/Uc/bLyfIjklK9sqZQ+1tMcxmglRz2rSHEWwsSc8e+DA1+IWgfHc6h5X0wv5snREr9+67ANXNnGFDE4BSLGHEKz8Xc= X-Microsoft-Antispam-Message-Info: 9TvBb+4KU/hdShwm9dhBsdoqilrpDxb2Mfmn5YWt2c3iMEkb4G+q2NAni+ZrhGsJlu9MjhsMPJDV2ai05k0Advg/C+LY1DmEYY0W1ehJ6F2A8hG9FuS6StiunHiqH/ONlZyfcbSJa4p9NW1CW9BHWyk0qbfgFfqXdbxVFSx2kIOxwValGjc6h1Z4VPEW/R52+3wG3/fJA/gixnKcQUEmmBzLaWeb+aIe1q3WaFkwz7LbGj16TB/nGBfl2yumhnqes2J7mA4OEhqO56jLcaAE8KmN/itiumg3MQnVg1hAU3ck+G5YaERBMofx6pmBKzhwauMYKxZYqt07mb/t9C0KXnCAqjZf/oDPAzGktEC06jI= X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3326; 6:97jKtEx/b+2edBHoUYWDSZ8lstudrFbKwFjuIgAG/dAexkXntyHAtUs5yOc1XEb+aeDtWof0Ic1BiCrVDFAu2vBsQ/k/8871ebDmwQoAJUCjEqdBlY+NzI0dHg7fNhNxtdXLlKOJzMpCwzaYLLClfUQbJ2gH0BsbnfkX64agNoVs5sWlsukd2I10RQrCb8HudsfVib7XcmY15EIdaLenXoGoXHgRfEvTaZQk7of21mpe4UBSpsoRi6fWuOwde7G6gza7No0fDJZTdjcnnBFDCEJul1ZVq4qtpjwLoPwc8164DsAyaPhwZkuSvtBX45A8Ez37lQfIJbBmDaVR861Hy5BhaUkMm0xZk/RpgSEqYA+U1RrKIkLG5nr+dCP1WyMDKXm7QKMYBNVAw2iT7qarwqJZokXPzHw7nuFq0Ts15lRLCplAf6PYdYfvYsSlNq9m9OV4ZCVJSOuACDPVXaOG0A==; 5:ckftNVoiq7GtC6rG+MPU0HXyQdoZ6lRagMzvm8fJnyR2Gv0MXPA8bl3cUvdXUAXCIZQv27MtwoysseMObpZUbTYaiSU2UDlDswbydYm6YoCxoXnzctlUPyITZbj4HpRBqiq9YzOgFE2NWEDkIyedfCELZ/wcOIGzkoowMMD9Ubw=; 7:sEfgNBFnl6/DJh2BB6MH3rGZeUWexWyJHKwWo74IydpDaC5XtRhWcguLmynKoL+QNwNPsUSOxXvzPIffMAjcrkz5mPCay5cuG+CstEM/BV9A3uU/Erp9cyYaH9xD56eKcMEAwPGWepVt78wZ6SjCQYZcKwJeMNnuKgLRyU5vnW2Gy/PdPp7DzbzGOeTaECjkNEwgeSy+D3hF2vX2SF6UedQ9pqe3XOBOW6TI3skxl0NXFN5gGaH29hQZNyVjyIbe SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3326; 20:nQ3Vc7JMwXAoN7WR9E0aFD8Q1U01Fp1WefPXuU00mBy82kejwigKnw4Bi9e6OSw0VKb1PXi0iJxeqc5yACrOwnyMCRj57DWycIAQ2eY736ssJxUMFuMSZU28Z+/V0bYSDJzjF4TTIY6EzZw+4AkceShKWV//KJMQKRLPrRKKZm4= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2018 07:47:50.2427 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4daa8b43-0878-48bb-b0be-08d63e3bfde0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB3326 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH 3/3] ASoC: rsnd: rsnd_mod_name() handles both name and ID 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 rsnd driver is using "%s[%d]" for mod name and ID, but, this ID portion might confusable. For example currently, CTU ID is 0 to 7, but using 00 to 13 (= 00, 01, 02, 03, 10, 11, 12, 13) is very best matching to datasheet. In the future, we will support BUSIFn, but it will be more complicated numbering. To avoid future confusable code, this patch modify rsnd_mod_name() to return understandable name. To avoid using pointless memory, it uses static char and snprintf, thus, rsnd_mod_name() user should use it immediately, and shouldn't keep its pointer. Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/core.c | 41 ++++++++++++++++++++++++++++++++--------- sound/soc/sh/rcar/dma.c | 21 ++++++++------------- sound/soc/sh/rcar/gen.c | 12 ++++++------ sound/soc/sh/rcar/rsnd.h | 2 +- sound/soc/sh/rcar/src.c | 5 ++--- sound/soc/sh/rcar/ssi.c | 23 ++++++++--------------- 6 files changed, 57 insertions(+), 47 deletions(-) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 82d2234..5e10012 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -123,8 +123,8 @@ void rsnd_mod_make_sure(struct rsnd_mod *mod, enum rsnd_mod_type type) struct rsnd_priv *priv = rsnd_mod_to_priv(mod); struct device *dev = rsnd_priv_to_dev(priv); - dev_warn(dev, "%s[%d] is not your expected module\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_warn(dev, "%s is not your expected module\n", + rsnd_mod_name(mod)); } } @@ -137,6 +137,30 @@ struct dma_chan *rsnd_mod_dma_req(struct rsnd_dai_stream *io, return mod->ops->dma_req(io, mod); } +#define MOD_NAME_SIZE 16 +char *rsnd_mod_name(struct rsnd_mod *mod) +{ + static char name[MOD_NAME_SIZE]; + + /* + * Let's use same char to avoid pointlessness memory + * Thus, rsnd_mod_name() should be used immediately + * Don't keep pointer + */ + if ((mod)->ops->id_sub) { + snprintf(name, MOD_NAME_SIZE, "%s[%d%d]", + mod->ops->name, + rsnd_mod_id(mod), + rsnd_mod_id_sub(mod)); + } else { + snprintf(name, MOD_NAME_SIZE, "%s[%d]", + mod->ops->name, + rsnd_mod_id(mod)); + } + + return name; +} + u32 *rsnd_mod_get_status(struct rsnd_mod *mod, struct rsnd_dai_stream *io, enum rsnd_mod_type type) @@ -494,15 +518,14 @@ static int rsnd_status_update(u32 *status, __rsnd_mod_shift_##fn, \ __rsnd_mod_add_##fn, \ __rsnd_mod_call_##fn); \ - rsnd_dbg_dai_call(dev, "%s[%d]\t0x%08x %s\n", \ - rsnd_mod_name(mod), rsnd_mod_id(mod), *status, \ + rsnd_dbg_dai_call(dev, "%s\t0x%08x %s\n", \ + rsnd_mod_name(mod), *status, \ (func_call && (mod)->ops->fn) ? #fn : ""); \ if (func_call && (mod)->ops->fn) \ tmp = (mod)->ops->fn(mod, io, param); \ if (tmp && (tmp != -EPROBE_DEFER)) \ - dev_err(dev, "%s[%d] : %s error %d\n", \ - rsnd_mod_name(mod), rsnd_mod_id(mod), \ - #fn, tmp); \ + dev_err(dev, "%s : %s error %d\n", \ + rsnd_mod_name(mod), #fn, tmp); \ ret |= tmp; \ } \ ret; \ @@ -529,8 +552,8 @@ int rsnd_dai_connect(struct rsnd_mod *mod, io->mod[type] = mod; - dev_dbg(dev, "%s[%d] is connected to io (%s)\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), + dev_dbg(dev, "%s is connected to io (%s)\n", + rsnd_mod_name(mod), rsnd_io_is_play(io) ? "Playback" : "Capture"); return 0; diff --git a/sound/soc/sh/rcar/dma.c b/sound/soc/sh/rcar/dma.c index e5c30ee..5daa6c9 100644 --- a/sound/soc/sh/rcar/dma.c +++ b/sound/soc/sh/rcar/dma.c @@ -174,8 +174,8 @@ static int rsnd_dmaen_start(struct rsnd_mod *mod, cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; - dev_dbg(dev, "%s[%d] %pad -> %pad\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), + dev_dbg(dev, "%s %pad -> %pad\n", + rsnd_mod_name(mod), &cfg.src_addr, &cfg.dst_addr); ret = dmaengine_slave_config(dmaen->chan, &cfg); @@ -369,8 +369,7 @@ static u32 rsnd_dmapp_get_id(struct rsnd_dai_stream *io, if ((!entry) || (size <= id)) { struct device *dev = rsnd_priv_to_dev(rsnd_io_to_priv(io)); - dev_err(dev, "unknown connection (%s[%d])\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_err(dev, "unknown connection (%s)\n", rsnd_mod_name(mod)); /* use non-prohibited SRS number as error */ return 0x00; /* SSI00 */ @@ -692,12 +691,10 @@ static void rsnd_dma_of_path(struct rsnd_mod *this, *mod_to = mod[1]; } - dev_dbg(dev, "module connection (this is %s[%d])\n", - rsnd_mod_name(this), rsnd_mod_id(this)); + dev_dbg(dev, "module connection (this is %s)\n", rsnd_mod_name(this)); for (i = 0; i <= idx; i++) { - dev_dbg(dev, " %s[%d]%s\n", + dev_dbg(dev, " %s%s\n", rsnd_mod_name(mod[i] ? mod[i] : &mem), - rsnd_mod_id (mod[i] ? mod[i] : &mem), (mod[i] == *mod_from) ? " from" : (mod[i] == *mod_to) ? " to" : ""); } @@ -762,12 +759,10 @@ static int rsnd_dma_alloc(struct rsnd_dai_stream *io, struct rsnd_mod *mod, if (ret < 0) return ret; - dev_dbg(dev, "%s[%d] %s[%d] -> %s[%d]\n", - rsnd_mod_name(*dma_mod), rsnd_mod_id(*dma_mod), + dev_dbg(dev, "%s %s -> %s\n", + rsnd_mod_name(*dma_mod), rsnd_mod_name(mod_from ? mod_from : &mem), - rsnd_mod_id (mod_from ? mod_from : &mem), - rsnd_mod_name(mod_to ? mod_to : &mem), - rsnd_mod_id (mod_to ? mod_to : &mem)); + rsnd_mod_name(mod_to ? mod_to : &mem)); ret = attach(io, dma, mod_from, mod_to); if (ret < 0) diff --git a/sound/soc/sh/rcar/gen.c b/sound/soc/sh/rcar/gen.c index 1f7881cc..ca63940 100644 --- a/sound/soc/sh/rcar/gen.c +++ b/sound/soc/sh/rcar/gen.c @@ -83,8 +83,8 @@ u32 rsnd_read(struct rsnd_priv *priv, regmap_fields_read(gen->regs[reg], rsnd_mod_id(mod), &val); - dev_dbg(dev, "r %s[%d] - %-18s (%4d) : %08x\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), + dev_dbg(dev, "r %s - %-18s (%4d) : %08x\n", + rsnd_mod_name(mod), rsnd_reg_name(gen, reg), reg, val); return val; @@ -102,8 +102,8 @@ void rsnd_write(struct rsnd_priv *priv, regmap_fields_force_write(gen->regs[reg], rsnd_mod_id(mod), data); - dev_dbg(dev, "w %s[%d] - %-18s (%4d) : %08x\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), + dev_dbg(dev, "w %s - %-18s (%4d) : %08x\n", + rsnd_mod_name(mod), rsnd_reg_name(gen, reg), reg, data); } @@ -119,8 +119,8 @@ void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, regmap_fields_force_update_bits(gen->regs[reg], rsnd_mod_id(mod), mask, data); - dev_dbg(dev, "b %s[%d] - %-18s (%4d) : %08x/%08x\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), + dev_dbg(dev, "b %s - %-18s (%4d) : %08x/%08x\n", + rsnd_mod_name(mod), rsnd_reg_name(gen, reg), reg, data, mask); } diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index fdf007a..28bd90a 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h @@ -377,7 +377,6 @@ struct rsnd_mod { #define __rsnd_mod_call_pointer 0 #define rsnd_mod_to_priv(mod) ((mod)->priv) -#define rsnd_mod_name(mod) ((mod)->ops->name) #define rsnd_mod_power_on(mod) clk_enable((mod)->clk) #define rsnd_mod_power_off(mod) clk_disable((mod)->clk) #define rsnd_mod_get(ip) (&(ip)->mod) @@ -400,6 +399,7 @@ u32 *rsnd_mod_get_status(struct rsnd_mod *mod, int rsnd_mod_id(struct rsnd_mod *mod); int rsnd_mod_id_raw(struct rsnd_mod *mod); int rsnd_mod_id_sub(struct rsnd_mod *mod); +char *rsnd_mod_name(struct rsnd_mod *mod); struct rsnd_mod *rsnd_mod_next(int *iterator, struct rsnd_dai_stream *io, enum rsnd_mod_type *array, diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c index 7de7afd..bdc0595 100644 --- a/sound/soc/sh/rcar/src.c +++ b/sound/soc/sh/rcar/src.c @@ -349,9 +349,8 @@ static bool rsnd_src_error_occurred(struct rsnd_mod *mod) status0 = rsnd_mod_read(mod, SCU_SYS_STATUS0); status1 = rsnd_mod_read(mod, SCU_SYS_STATUS1); if ((status0 & val0) || (status1 & val1)) { - rsnd_dbg_irq_status(dev, "%s[%d] err status : 0x%08x, 0x%08x\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), - status0, status1); + rsnd_dbg_irq_status(dev, "%s err status : 0x%08x, 0x%08x\n", + rsnd_mod_name(mod), status0, status1); ret = true; } diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index cb66986..a032819 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -181,8 +181,7 @@ static void rsnd_ssi_status_check(struct rsnd_mod *mod, udelay(5); } - dev_warn(dev, "%s[%d] status check failed\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_warn(dev, "%s status check failed\n", rsnd_mod_name(mod)); } static u32 rsnd_ssi_multi_slaves(struct rsnd_dai_stream *io) @@ -346,9 +345,7 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod, ssi->rate = rate; ssi->chan = chan; - dev_dbg(dev, "%s[%d] outputs %u Hz\n", - rsnd_mod_name(mod), - rsnd_mod_id(mod), rate); + dev_dbg(dev, "%s outputs %u Hz\n", rsnd_mod_name(mod), rate); return 0; } @@ -494,8 +491,7 @@ static int rsnd_ssi_quit(struct rsnd_mod *mod, return 0; if (!ssi->usrcnt) { - dev_err(dev, "%s[%d] usrcnt error\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_err(dev, "%s usrcnt error\n", rsnd_mod_name(mod)); return -EIO; } @@ -654,8 +650,8 @@ static void __rsnd_ssi_interrupt(struct rsnd_mod *mod, /* DMA only */ if (is_dma && (status & (UIRQ | OIRQ))) { - rsnd_dbg_irq_status(dev, "%s[%d] err status : 0x%08x\n", - rsnd_mod_name(mod), rsnd_mod_id(mod), status); + rsnd_dbg_irq_status(dev, "%s err status : 0x%08x\n", + rsnd_mod_name(mod), status); stop = true; } @@ -964,8 +960,7 @@ static int rsnd_ssi_fallback(struct rsnd_mod *mod, */ mod->ops = &rsnd_ssi_pio_ops; - dev_info(dev, "%s[%d] fallback to PIO mode\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_info(dev, "%s fallback to PIO mode\n", rsnd_mod_name(mod)); return 0; } @@ -1085,15 +1080,13 @@ static void __rsnd_ssi_parse_hdmi_connection(struct rsnd_priv *priv, /* HDMI0 */ if (strstr(remote_node->full_name, "hdmi@fead0000")) { rsnd_flags_set(ssi, RSND_SSI_HDMI0); - dev_dbg(dev, "%s[%d] connected to HDMI0\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_dbg(dev, "%s connected to HDMI0\n", rsnd_mod_name(mod)); } /* HDMI1 */ if (strstr(remote_node->full_name, "hdmi@feae0000")) { rsnd_flags_set(ssi, RSND_SSI_HDMI1); - dev_dbg(dev, "%s[%d] connected to HDMI1\n", - rsnd_mod_name(mod), rsnd_mod_id(mod)); + dev_dbg(dev, "%s connected to HDMI1\n", rsnd_mod_name(mod)); } }