From patchwork Mon Nov 30 08:52:38 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 7722431 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id B7546BEEE1 for ; Mon, 30 Nov 2015 08:58:00 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D3E1620641 for ; Mon, 30 Nov 2015 08:57:59 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id A03FA20631 for ; Mon, 30 Nov 2015 08:57:58 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id BA79A2654BF; Mon, 30 Nov 2015 09:57:57 +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 E67412654C9; Mon, 30 Nov 2015 09:54:35 +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 198092657D8; Mon, 30 Nov 2015 09:54:34 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 86CBD2654D5 for ; Mon, 30 Nov 2015 09:52:41 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie3.idc.renesas.com with ESMTP; 30 Nov 2015 17:52:40 +0900 Received: from relmlac2.idc.renesas.com (relmlac2.idc.renesas.com [10.200.69.22]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 34ECD50BE9; Mon, 30 Nov 2015 17:52:40 +0900 (JST) Received: by relmlac2.idc.renesas.com (Postfix, from userid 0) id 19A302806F; Mon, 30 Nov 2015 17:52:40 +0900 (JST) Received: from relmlac2.idc.renesas.com (localhost [127.0.0.1]) by relmlac2.idc.renesas.com (Postfix) with ESMTP id 12FD82806D; Mon, 30 Nov 2015 17:52:40 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac2.idc.renesas.com with ESMTP id TAM27710; Mon, 30 Nov 2015 17:52:40 +0900 X-IronPort-AV: E=Sophos;i="5.20,364,1444662000"; d="scan'";a="200771239" Received: from mail-hk2apc01lp0209.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.209]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA; 30 Nov 2015 17:52:39 +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 HK2PR06MB1010.apcprd06.prod.outlook.com (10.161.187.27) with Microsoft SMTP Server (TLS) id 15.1.331.20; Mon, 30 Nov 2015 08:52:38 +0000 Message-ID: <87y4dfswg0.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:52:38 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: HK2PR02CA0010.apcprd02.prod.outlook.com (25.163.104.148) To HK2PR06MB1010.apcprd06.prod.outlook.com (25.161.187.27) X-Microsoft-Exchange-Diagnostics: 1; HK2PR06MB1010; 2:Y8ZTp5KuMXjI+tp85kK2VLPr6lqQTsTiEQk2OdK/oLJULYyeqc7S0+8uLC4sbW6pCrLJSe821t+7k9bMnglgHFY+rnO8aP8gIhXRyYYW8dB0Gp2tD6/Z+7Px/CNMTzTZaqcYlKkG2kMr/dzHZ3uMOA==; 3:VVq55mgmUzMkL9IocYjq4/XQ9i3GbDVUngB9TFlppOnk9kmZjhgi2UatXsycGA7jctCGvcbYJbmHS0fv5BugcJvUlBQ2CPiAWV2pDaicTGKWXVav5EZmbr/wgFW5ZKTT; 25:c2oJg0mvpxkEk33fl+22QaGSXzhBeAyBPZU4gupZZ5ZgqSYiors9yfD8jOuTg3Vaze9JBfaby0G/4q5IfiwL2x3DHPQ8cGSM70cs1AvH3bZ+WaMqokEY0Fpwnk49CHE1L+0SGuvoQsXCVUQHq9xRSDb3+IP3fbEcqHH2cG+8mTZ63Ok0qIIKtyoorVnsuLokIp2YZt/593A41pOrHkgnAoi0ht9sXz9JtfF8ElaIy/b6umeXd/1GKjh5lt/zXpG4oEC5c6wVRLn/Tc3NqOALmg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HK2PR06MB1010; X-Microsoft-Exchange-Diagnostics: 1; HK2PR06MB1010; 20:rCOlcRjUs6RvrjZbKpc+KiUgA0tH5HiViWHG8HCxwa1vDSSp1hwf/0qUOLY4vyJkuxWLnA5CgYOqNI68WRPRMEQUMNGehAyhkpLI3JQSEhyUJeE0xguJBROKLUdS7vxaWhQyz513kGEwcda+i/4w95UYzC1jNuZc3eVcphuVdNTQ8w6tUI1iRyWVT/uBjNEHjo89bgjiMs8C6s4NG75HXzLjkgM2e6hjdIkHAlDdDJA1NJBwFsXaq997zVQ22NIswDaDlyv7JLpFv/W3tO+He874BaaJSSmKsN4Ih60cgiAjuH4/0P+3ziRHiAzJkQuVWRgJ/2EIa6ILYae4mNXlg8+7wsWAVHtlsvOnmz0pTk4y+V5yGjO8dK2UOj5c4C2KeDNWX+0ciWvdCwabtdroYUGYKbV2DtxPFQ3ocQ+soiuQDOujhJFTLqfsvUVdHHGQavZY86Ki0NiRPf80tl6rBeGT97jlh2AxGHvBHukB410hCLdPZMAHO8TXynLdC/EN; 4:2d3f4d2tLRD4lJubEj9gjA8U80PdcyZrVvP1QcbQGpE86oLaf03qoP5IurgVHug+xlcjpSEpGVVgOPNJ7rPzZIzGeYmC6oMpCcMNZTLM36wxJx5+P+VheFGJ+VPCyRX0uJavUMwYGBlcQlpmiLj05SCEjzDa1uG8iarpA1/Sspn7zz/VuwIJu+XT6XBm2PWi7xv+4/0SrPsUYZ5Oo5jyuBX4K1cEBXS8Z9dpmKtOHilaBTDkDO52lkrPRC2yaNOd//SS9eOgcrBDxa9mj/bpWcLLrW3NjB4bMJ7CgMm7Mne9KKYLSm/s2Ed+BcA//t5KW5znaQQZGX3VaF4ZBc/yuvl5sXpdQN4g6wkz7LwqFftBvtTRG4yiq1eBpMB2Zr/1YmoBkBhc1cZreKuSmygZbfIdV8zbK1f1ZYCeuWTipJZUIuy11tJlROvqrxXNVXD9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85106069007906); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(10201501046)(3002001); SRVR:HK2PR06MB1010; BCL:0; PCL:0; RULEID:; SRVR:HK2PR06MB1010; X-Forefront-PRVS: 0776C39A48 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(199003)(189002)(19580395003)(42186005)(23726003)(76176999)(3846002)(46406003)(81156007)(50986999)(54356999)(6116002)(586003)(66066001)(101416001)(19580405001)(229853001)(189998001)(110136002)(36756003)(4001350100001)(5008740100001)(5001960100002)(40100003)(47776003)(33646002)(1096002)(105586002)(106356001)(50466002)(97736004)(69596002)(83506001)(92566002)(86362001)(2950100001)(53416004)(5004730100002)(77096005)(122386002)(87976001); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR06MB1010; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HK2PR06MB1010; 23:y+lgEbiQPcSZ89PLlIwbMiu5lzvnxVjyhl2zIS8o9?= =?us-ascii?Q?GTYo99wf219GRIrqajMj3kqM7lfgkyJNpv5hGmS4ZjKtw/9ULHU+qZJ8l1FA?= =?us-ascii?Q?F+RdARQ/jLtoLUOKU5bsX0pJBfIue88mu0/PcDPpDahasT0TGrV1rABGq02e?= =?us-ascii?Q?A1gKI2JLcqaUldC26uh3KvJR1QpTeJop2UloBHtM+Clu4zFORj7J0v1nOLzZ?= =?us-ascii?Q?Om9sHC3JNvHd3egiXi7gYLWHG7k20uE9ZW4mJdE1e394dAWOCL46cIaEueEb?= =?us-ascii?Q?uH2h3iGipB7O6txvt/xLrk8SVK0h6Zv2PMExYovZUk/0tlXKNLNRd2Ua8M1h?= =?us-ascii?Q?XKMkVXiFco7c0YoOeA9ZEdL8q83v2moj4V2XwO3PsuSBurIxauwubB6xg0Sq?= =?us-ascii?Q?NIAsqGJD9hZFDPQ8m7r1Lw9cD282U2W0o0Kdi7qGTmaSMJ9nBpdSV1hXCORA?= =?us-ascii?Q?M8BSZNe+K7DTAQx7YOLzTe0gXld3IeOckHJtJ4hMnve5VcVKXN+EKtbGM375?= =?us-ascii?Q?tb96RjhQ2ZFN6bbRhtqgs5nj51JFfRGrLM3lSZfKLaV9LcKNoBPSl1SISypT?= =?us-ascii?Q?LEOTIY7uMvnp/UOJUJyTUqFB8/YZ2Dtc7XDZGrSFW6xT9ksqRwoRcogin2l3?= =?us-ascii?Q?hUgrDpsH6ehxKlxnBvXS7Dum2z0UwHpqms+KJkVzmnjeAKpNNlzSzRAVZ/0w?= =?us-ascii?Q?wBAiOJ2fHd1Z3WFo8NlDd8UkpNSCJ/QDB6M9FfdhoTAOiDWIbp2fH5Xh7XB9?= =?us-ascii?Q?N2yBE35UHoYz0WRRhD5jBlW1wYyZc9acgEgKGPOwMAsZSq8DQLt/pfz6jpsA?= =?us-ascii?Q?Zw7ce460UUMBIQM0e5bcwBiAoUXnXR6fMxsAG1uiIAkWVyGyr4nVQYO05O9t?= =?us-ascii?Q?l8eJBCWCql+veg/xSesKLE8oHXdwx1tI93xoOI2wyTRiPchwPxzRDt88puUY?= =?us-ascii?Q?9gEHrqFQSYR8jaPql1u98qQtVjL9mAEezJwgiaECI+cNFA5cIu9O/ur1/vW+?= =?us-ascii?Q?vXK/DXKMhxKrjp+SCDbf2IMnjUoR/6BrOloMZG47MIYRT8/q1O6UGGOPLiNQ?= =?us-ascii?Q?D7AhUoXYKY5BHJtl3OksgVSRhsamuVzl3t67B39+YW+luRFcA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR06MB1010; 5:lMWTvNX6+iWOaMNE1KqOoJjQ4pL4h4dXousmMTqmMOEK3KMaBjrWKlMv5sA4qtUO+dS/LMRcCu630x/24cR0mvsEOd4kxOx1Qf1XA9QlJ93vmLbV+i+x1L7vVU04Lla2V3/7vTDxkkZN597AOC71kQ==; 24:F0h/Yt6ynZsivOZbKcUCdYJRrTe/dUDTk2oZx/lupD5hUG/f1FynftDoWn9vl43vxitPxayV5W0pxe8Isu5P6yIZVOWsxJdB5sYiay9uPZk=; 20:ptw49GO/vlklFcaYjySZZo5SdSymQKDPOege6TGjhIUu3EWC8hkDPqEbL/OOzRHfAzRJfP/cRO9saRAxaQVP2IfU7yC8Eo1w84I6QafLZilv0LSqt/7hi1EHLaGRnpxNBFq84o48vEFNdTSouUypl6Z5gwyXlEjgUyWZMIUMsXU= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2015 08:52:38.5647 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR06MB1010 Cc: Linux-ALSA , Simon , Liam Girdwood Subject: [alsa-devel] [PATCH 10/14] ASoC: rsnd: add rsnd_ssi_config_init() 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 In order to enhance code readability, this patch adds rsnd_ssi_config_init() and moves SSICR register settings to it. This is prepare patch for TDM support Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/ssi.c | 98 ++++++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 40d5b58..31e26bd 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -253,6 +253,55 @@ static void rsnd_ssi_master_clk_stop(struct rsnd_ssi *ssi, rsnd_adg_ssi_clk_stop(mod); } +static int rsnd_ssi_config_init(struct rsnd_ssi *ssi, + struct rsnd_dai_stream *io) +{ + struct rsnd_dai *rdai = rsnd_io_to_rdai(io); + struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); + u32 cr_own; + u32 cr_mode; + + /* + * always use 32bit system word. + * see also rsnd_ssi_master_clk_enable() + */ + cr_own = FORCE | SWL_32 | PDTA; + + if (rdai->bit_clk_inv) + cr_own |= SCKP; + if (rdai->frm_clk_inv) + cr_own |= SWSP; + if (rdai->data_alignment) + cr_own |= SDTA; + if (rdai->sys_delay) + cr_own |= DEL; + if (rsnd_io_is_play(io)) + cr_own |= TRMD; + + switch (runtime->sample_bits) { + case 16: + cr_own |= DWL_16; + break; + case 32: + cr_own |= DWL_24; + break; + default: + return -EINVAL; + } + + if (rsnd_ssi_is_dma_mode(rsnd_mod_get(ssi))) { + cr_mode = UIEN | OIEN | /* over/under run */ + DMEN; /* DMA : enable DMA */ + } else { + cr_mode = DIEN; /* PIO : enable Data interrupt */ + } + + ssi->cr_own = cr_own; + ssi->cr_mode = cr_mode; + + return 0; +} + /* * SSI mod common functions */ @@ -261,9 +310,6 @@ static int rsnd_ssi_init(struct rsnd_mod *mod, struct rsnd_priv *priv) { struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); - struct rsnd_dai *rdai = rsnd_io_to_rdai(io); - struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); - u32 cr; int ret; ssi->usrcnt++; @@ -277,49 +323,9 @@ static int rsnd_ssi_init(struct rsnd_mod *mod, if (rsnd_ssi_is_parent(mod, io)) return 0; - cr = FORCE | PDTA; - - /* - * always use 32bit system word for easy clock calculation. - * see also rsnd_ssi_master_clk_enable() - */ - cr |= SWL_32; - - /* - * init clock settings for SSICR - */ - switch (runtime->sample_bits) { - case 16: - cr |= DWL_16; - break; - case 32: - cr |= DWL_24; - break; - default: - return -EIO; - } - - if (rdai->bit_clk_inv) - cr |= SCKP; - if (rdai->frm_clk_inv) - cr |= SWSP; - if (rdai->data_alignment) - cr |= SDTA; - if (rdai->sys_delay) - cr |= DEL; - if (rsnd_io_is_play(io)) - cr |= TRMD; - - ssi->cr_own = cr; - - if (rsnd_ssi_is_dma_mode(mod)) { - cr = UIEN | OIEN | /* over/under run */ - DMEN; /* DMA : enable DMA */ - } else { - cr = DIEN; /* PIO : enable Data interrupt */ - } - - ssi->cr_mode = cr; + ret = rsnd_ssi_config_init(ssi, io); + if (ret < 0) + return ret; ssi->err = -1; /* ignore 1st error */