From patchwork Mon Sep 3 07:08:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10585543 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 AF1E7139B for ; Mon, 3 Sep 2018 07:08:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A25A929484 for ; Mon, 3 Sep 2018 07:08:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9680829489; Mon, 3 Sep 2018 07:08:50 +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 173F329488 for ; Mon, 3 Sep 2018 07:08:49 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id F1AF9267889; Mon, 3 Sep 2018 09:08:47 +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 5CD3F26788B; Mon, 3 Sep 2018 09:08:45 +0200 (CEST) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id 8CA5E267889 for ; Mon, 3 Sep 2018 09:08:42 +0200 (CEST) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie2.idc.renesas.com with ESMTP; 03 Sep 2018 16:08:41 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id F278975E10; Mon, 3 Sep 2018 16:08:40 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.53,324,1531753200"; d="scan'208";a="289829249" Received: from mail-ty1jpn01lp0178.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([23.103.139.178]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 03 Sep 2018 16:08:40 +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=poMpWncJjJjKthwThdtLOJxh9eceqX1RlD7a9MzRlLI=; b=GHhl8/b8XMd81FHpoA5wFLR/s8B4e47kkkSXIT290oqS0I1ZuM1aGS8z7tqQWIFmShf6hWNU0BpTuQEuCmpErU0PmMl26cdNp7oj7cvOHjPQIb2Vv46uVvYvBEk9RlR697U21m0YHXP5XCE/GQzAUAIaUI1269TngJGr9SdPV+4= 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 TY1PR01MB1866.jpnprd01.prod.outlook.com (2603:1096:403:2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.18; Mon, 3 Sep 2018 07:08:37 +0000 Message-ID: <87wos3dpye.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: <87d0tvf4q0.wl-kuninori.morimoto.gx@renesas.com> References: <87d0tvf4q0.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 3 Sep 2018 07:08:37 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: OSAPR01CA0189.jpnprd01.prod.outlook.com (2603:1096:604:c::33) To TY1PR01MB1866.jpnprd01.prod.outlook.com (2603:1096:403:2::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba4b872f-4dfb-4d72-c419-08d6116c124f 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:TY1PR01MB1866; X-Microsoft-Exchange-Diagnostics: 1; TY1PR01MB1866; 3:/nD6EX9wIDlYjxu3XLGMiWQ6uIhkz+1vEtNPY6q52jqNix3uOGsP2C3gGztW3CrSBs0eqI/My9g7eiX9SxheuJMoS1BEwkyR0dFglt10NTgXG+lB7tepD6hIIPZAyWtHSNzGlNak+qC85Kqa0HeMY/FhQBUqr86e+z8rEXOmRCivudiG5ARlOz6O3yDukrcRI7MKo2P1yDB1O+bx3suH1IK8z84bdx3hEhNz1BEIWPewqHllt6T1ryd/wFatOyAx; 25:HpiWPeEDmCXBAttdQqIYyIsyVm5P/4hd7Pv5bCJAx9TI3fHGoDwbxUeckDk9rMfXFqKIZiEcUngHS4aiwEXOqqyvz424713XMFGdkYZnl1B+8f4DDou0hran4lSlOx/3HNWQV0imhqe4bCihYg6MErgCgqlGQl8XFdatY/AxYyQG57PCjU+DUh9ZD/JW2Wt+3w9K2NSJ9mgR5YPa6vDbCzA7q+CGsgyxSh+3RXZ1ieSLCIRB8MTOJsAx8jyLAH50vjZeHjc6BS3aSLD/ML6bffBYmckqAtqQfwU9X6bkbi5vJDvHhHPjsx11PM6QMYGmAc1Aq3lf2u1k4fYBuzhBcA==; 31:ngdL8ZlVb+eMTHkhUC0YXU6GYyOrH7BCDfeBoEd0dr/2ZgIbpvt8RIcotBmYCtC3tYUgU3adoqywO32sKKJ4+cVSN1iVgJ6l29bsIeckVHD/GlcahRNo1YnDQrOYxOGVZsZaL65/a20IWQyCy7JwQ0EjFXAe6rCM/G+rOK4449q84L226ALwiNF3wtoZ88niwOzTTTbKfgY2wo86RgIcHxA1QnNxDdQXyudj8W8DWEs= X-MS-TrafficTypeDiagnostic: TY1PR01MB1866: X-Microsoft-Exchange-Diagnostics: 1; TY1PR01MB1866; 20:Ge6q8VAyChRccxP855yijxYuoh9snblwZ6blaT6jOTIyemzXbRp1ML1+N3KdIfIeMWpCC9oCVS3ZH2CW2Rj37enwHt18r/D5O3Maltp3qYx1mIvMHx6QEL9NEHrcO/VB4fKscCPfrwgFGtSXgM9+I1mnCTBoUKxQcTI0KRpM6yhKtmUKynjrc5Yr5vSgyFAxkvDWkfGx7Z/084Pg5C1uUlmOATnJ5InBOau/HoWJKWB3zPk9/6UcZOGkwVXqn57BKEbbJNx9ggs/D7ye3DrbP5PKPV7fOehGlNSUQpjf511uQeUOsHh/6SqfnkrM+0RmfeN3+s6N2OX0e8hC0yRGqpxoj7e42Md9/w3QkDixCE9nc4c1xYfh8bdRccXpOrZ4xGIalL31//iw2ce0XP0RM9uDvwDohwXnkbXxn3rbVTzJvs97gnXWWigUipbt3DEnGp63ldkKs3Mx5lldj61ArtO5TsJzFQ9gRm0F4fUFrBY4ko/ktXy5oPfPXG0rV+wI; 4:Pzgs2xKjTnDg7MafBurv8vgVYrTYFGyuYZglZZveciYGJgQuO/U/wUkdNPPXH48GNiB/TeurnBRY5hBChVSwh0RwxvkIY8rXDmny26mAhzAfBkUeIHzFzcgaOm14AWWC+AY7QhPDktJ9xo4GyhiD6frtEO67GDvOiwrJoqOD0S+XSWiRMq5YFYuin1wWsdIEfNWXNUXIimoLYUEQZFztS4IElfhdwghzp/Tm2le0ACAgCxsD2naReEVHqMlgfnqgwtqRMSGPWMNzd7prQbdXXg== 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)(823301075)(10201501046)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:TY1PR01MB1866; BCL:0; PCL:0; RULEID:; SRVR:TY1PR01MB1866; X-Forefront-PRVS: 0784C803FD X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(53416004)(81156014)(66066001)(7736002)(76176011)(53936002)(23726003)(186003)(446003)(86362001)(11346002)(386003)(2616005)(956004)(50466002)(305945005)(26005)(6116002)(3846002)(16526019)(5024004)(2906002)(14444005)(476003)(106356001)(105586002)(68736007)(25786009)(6916009)(36756003)(81166006)(97736004)(486006)(4326008)(8936002)(54906003)(316002)(16586007)(7696005)(52116002)(47776003)(8676002)(69596002)(478600001)(58126008)(5660300001)(6486002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:TY1PR01MB1866; H:morimoto-PC.renesas.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; TY1PR01MB1866; 23:JfM8qj1uucd+srUwmCfsNgKXJuq7vVnsyay436Ywq?= ojiUaOtgOEFHCx66CO6U4CP9WehoK2RG+hLbEHiou7LC5880360IHMi2qGZQbt1EJe5jeXo+zKVSMeewLQTsvp+7QuuzhHqNFjSF8UI5jhQh3Njhe1Ouqo2QSsQ3hDLOIBHUg6Aezp60eiSGoJeZqK/I05WpEUwYD+qT1zLPJ1DNALtO8iDA0I2GGAI4YsHp2Hc0aAxaSpSvKSTVMbmzX6HLRVySYxMeM8QLOkwMkGDAh6tGZ/1jIjNaBpAz6cPkjVHpmIGm/vwTyHpPlnwamoBHMUGw8FCDJsv4XAz7w6w26vaXlGwQHRY6WB6rPsWgijOQLRAcKwb5jx+bA6I+wCqJXGS8JeZu1a37KK5Qbz2NwdSgX6j5ioXb+yav1FxtiMqBxu/SnoAYbp0wngi8Lyejkk/wO5V9/avFa0htkx2+WpmZW1grfucXNiN3tQJNW4KsP3tNvQyHymEZB/AoL5mt9MSfYp74IZkWhprTS+7BXQdwYso2MPNEQ1sXUBchAhh+0sxEkdjcG3oyuk9MhyhnkkAuuZFP6/4nLyK/hN82BxwIzdTOkJ1iWVAeWf6rPge1ftny31iTo2rkIGjvuAfoCilIRSuo/ekt0gFF7aLPY4rbBSNPLlIDBeb2NftgePZ/bejiEUCpKAdpNrLwVNzFX1RsC/XduijREyIA2ccXvzyZ+NDWQKdkwpJ9nVM5rZVfBpM0KlStkjkvkvLHdCrUFhEqkT+OHZfQNLRkw3F40nYheOfTUSS6LsTd/7UrE3mWBz2VIdeylnz7reSYmwNKgcB6kKk1J4w6578iNKv6DjB2d+nsAOVKzlOK7eefEtTPE/8X8y1Se4Tl5XiBQU3R8jsJKJ1RtWTOIyOhdhbeoulpZe13jHdVt2t8X4kuc9NcfiKe8D8BZRtoYg6+FBR1tvcDIf/Cte6AsBjxUnw/A0rk2r2FoHae1fAOLOSXyZyKabQ2+QHIfqv211sA3uJk6X82rZ0CPFEafFGJ2b05k7rdnRYgW2jGWYqbIcCS4FXtlm7mwvKyjs5F9RIMLGavPz5DtEWpPVVBAkVeWzPgXh+VuH6bmPwkxiffYtrxlv8SaGLm91py0WQHUzteKaoKKvh7AsgRYA0DTrGKWAcm64qGLaUAMF5hMgkxaHqGTen2VpC5GVRFCMDI7VjKP4Zb8yhdKfrAUxqyH4sWuugvQ== X-Microsoft-Antispam-Message-Info: PBAkVp4gnbgjOIbmz1NW6u7/bApaNwsBG4fbJeZu0uY5ULQ9yGRom7GDss8JnH5wi0GLCjps/BwnbL+Nt7lgcQCoUSYmcFZJq34zEBvF+zPkptZcAob03p09rEKxe49Pydms76drUv5fOICbNV0sEEFCb5jnbSW4+B3m5aZcwYea8D3V++g3YMV/hflzjTTbvA+rieARLHhg5B0DqoyeKtCYWf03GsRLQ5N3jew341pGSNwlyv+BsEillDkisgrHEVQz9DqLeHwOTWhNfislkQnqkYPRmLOA17p/+kW0uy7JySbkYSzqCOPQqGPtd6U7IknI8e9wgJkSdYUY3VvqJNhi/8FNQrIi8AHmuTVgnzo= X-Microsoft-Exchange-Diagnostics: 1; TY1PR01MB1866; 6:m6U6+E7s9RjRprHLXSsQS8lgIvZR7hyCEuSCOZCmmvqb/UC8A7MeIu/C1aTpk4XvE9WkExsKBb6IEV7/GblcHSSBDGHYFK14il+2KKyU9SExlsmjO7I1BP1lE8nIC2UBqSQIfET4fbUtkEUrh7or1OYn1Dvaprbdrm3o455grqXxZPUL0vyZG1HXUXT0dqLpetcXfDIjBIou8+Kh+vSx8dxAIM9hgEieVdJgpnU4+HuCQsl2aifUKLD6jDUInDkr+sYaUBnAh7UiQ7hajKaJqgG5iKQR6Jrw46rmVSzpYe9htPlGoiMMeReg/NT7qAGwZvclZgLLov0kSZ8z+W5K9yjq52fRS03cfQusT/YCYbRut65xgZzom8KG7tPRvc5Zhje4TzyeWQ5izp1ltDVM7K6FSCbVWMZMZXpO2Fx/Bt/HEX0JKVfj3bbz78W4eX4dmE9rZly1Pz75WQ/o6dHOTQ==; 5:8hSp1gCiDhjGntOnEbyRZB5dw/lCIMfRQByDHi9o1gJ9pLDRRd7le+unT1plEtA6Pn8wXdyaY9zqrv63+gV8/FvMPuy2/bD+fNG22cyld6OwEym4ARRULHOwStOrqV+3fZHESoqOmkYlFDh7NhBpiQjBEaE8MUO+ZndsIHgRB+M=; 7:JNhX6VV2H4zh2E5iEMedaQQl6NVUressa6klhpe3aNUhzQ1MKG6oNA3z2LddAK8eAv4o7Axss+5Analwo85TyfHletvI1q33V6hRa6vkS36ZD34jg/syBfx2fb9sb8Daepwpg5O6q8a8epZfY8NO2ZNbcJs1s7uvPqJ04ecbj2hMZsMsBpxTStLQ9NB7lHMueXZ0W9GA5bJYTA1CF+m89m8VsezHVt7gF7SLYlEiMxdWNgzKyrognmGmf3VPmQyp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; TY1PR01MB1866; 20:EXVIXPUz/QLTT33TjmvJOeryMZCIUzwR3fKF+1nesuMvcjdn1RauM4JAnHIbmjlx/cNhao0ZIKvdOKDrG7Me2Zx5smDeuBD4yiUowfIPa8uZjlvf+WxcrfYpzasQqX0WMVmCZILWv5e8lAIM7me6PInzHaR1eD1u4tBldBsC6hE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2018 07:08:37.8673 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ba4b872f-4dfb-4d72-c419-08d6116c124f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PR01MB1866 Cc: Jiada Wang , Timo Wischer , Linux-ALSA , Hiroyuki Yokoyama , Dragos Tarcatu Subject: [alsa-devel] [PATCH 11/13] ASoC: rsnd: ssiu: Support to init different BUSIF instance 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: Jiada Wang Currently ssiu's .init is only called once during audio stream. But SSIU with different BUSIF, shall be initialized each time, even they are used in the same audio stream. This patch introduces ssiu_status for BUSIF0 to BUSIF7 in rsnd_ssiu, to make sure same .init for different BUSIF can always be executed. To avoid the first stopped stream to stop the whole SSIU, which may still has other BUSIF instance running, use usrcnt to count the usage of SSIU, only the last user of SSIU can stop the whole SSIU. Signed-off-by: Jiada Wang Signed-off-by: Timo Wischer [Kuninori: tidyup for upstream] Signed-off-by: Kuninori Morimoto Tested-by: Hiroyuki Yokoyama --- sound/soc/sh/rcar/ssiu.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/sound/soc/sh/rcar/ssiu.c b/sound/soc/sh/rcar/ssiu.c index a9605a0..39b6764 100644 --- a/sound/soc/sh/rcar/ssiu.c +++ b/sound/soc/sh/rcar/ssiu.c @@ -10,9 +10,12 @@ struct rsnd_ssiu { struct rsnd_mod mod; + u32 busif_status[8]; /* for BUSIF0 - BUSIF7 */ + unsigned int usrcnt; }; #define rsnd_ssiu_nr(priv) ((priv)->ssiu_nr) +#define rsnd_mod_to_ssiu(_mod) container_of((_mod), struct rsnd_ssiu, mod) #define for_each_rsnd_ssiu(pos, priv, i) \ for (i = 0; \ (i < rsnd_ssiu_nr(priv)) && \ @@ -120,6 +123,7 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, struct rsnd_dai_stream *io, struct rsnd_priv *priv) { + struct rsnd_ssiu *ssiu = rsnd_mod_to_ssiu(mod); int hdmi = rsnd_ssi_hdmi_port(io); int ret; u32 mode = 0; @@ -128,6 +132,8 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, if (ret < 0) return ret; + ssiu->usrcnt++; + if (rsnd_runtime_is_ssi_tdm(io)) { /* * TDM Extend Mode @@ -255,6 +261,7 @@ static int rsnd_ssiu_stop_gen2(struct rsnd_mod *mod, struct rsnd_dai_stream *io, struct rsnd_priv *priv) { + struct rsnd_ssiu *ssiu = rsnd_mod_to_ssiu(mod); int busif = rsnd_ssi_get_busif(io); if (!rsnd_ssi_use_busif(io)) @@ -262,6 +269,9 @@ static int rsnd_ssiu_stop_gen2(struct rsnd_mod *mod, rsnd_mod_bset(mod, SSI_CTRL, 1 << (busif * 4), 0); + if (--ssiu->usrcnt) + return 0; + if (rsnd_ssi_multi_slaves_runtime(io)) rsnd_mod_write(mod, SSI_CONTROL, 0); @@ -294,6 +304,16 @@ 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); @@ -317,7 +337,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_mod_get_status, + ops, NULL, rsnd_ssiu_get_status, RSND_MOD_SSIU, i); if (ret) return ret;