From patchwork Wed Sep 11 11:08:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dani Krishna Mohan X-Patchwork-Id: 274239 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 88D092C0137 for ; Wed, 11 Sep 2013 21:08:57 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 891114A0DB; Wed, 11 Sep 2013 13:08:39 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id C8BCsqssdRIT; Wed, 11 Sep 2013 13:08:39 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E9E364A0B3; Wed, 11 Sep 2013 13:08:13 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D7DB84A07B for ; Wed, 11 Sep 2013 13:08:00 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5Z5RmifKn4rg for ; Wed, 11 Sep 2013 13:07:57 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by theia.denx.de (Postfix) with ESMTP id 1D9DD4A07F for ; Wed, 11 Sep 2013 13:07:53 +0200 (CEST) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MSY00BIXK8NDH11@mailout4.samsung.com> for u-boot@lists.denx.de; Wed, 11 Sep 2013 20:07:43 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.122]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 5E.CF.20109.FFE40325; Wed, 11 Sep 2013 20:07:43 +0900 (KST) X-AuditID: cbfee68f-b7f1e6d000004e8d-d2-52304eff2e2e Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 33.31.09055.EFE40325; Wed, 11 Sep 2013 20:07:43 +0900 (KST) Received: from krishnna-desktop.sisodomain.com ([107.108.73.88]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MSY00FFLK8MO870@mmp1.samsung.com>; Wed, 11 Sep 2013 20:07:42 +0900 (KST) From: Dani Krishna Mohan To: u-boot@lists.denx.de Date: Wed, 11 Sep 2013 16:38:49 +0530 Message-id: <1378897730-26678-5-git-send-email-krishna.md@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1378897730-26678-1-git-send-email-krishna.md@samsung.com> References: <1378897730-26678-1-git-send-email-krishna.md@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrDLMWRmVeSWpSXmKPExsWyRsSkSve/n0GQwcybvBYdR1oYLVrWHmC1 +LZlG6PF272d7A4sHrMbLrJ4nL2zg9Gjb8sqxgDmKC6blNSczLLUIn27BK6MM2vXMRYcla+4 da2DqYGxXbKLkZNDQsBEYtOWH2wQtpjEhXvrwWwhgaWMEqf/M8PVHPrK0sXIBRRfxCgxccoW Zginn0ni563b7CBVbAKGEleP7mcCsUUEJCR+9V9lBLGZBVwknv3fzQpiCwu4Suz8eAYsziKg KvH6+yswm1fATWLl9F6gGg6gbQoScybZgJicAu4Sy19xQdzjJjH32j6wtRIC39kk9l3dygYx RkDi2+RDLBCtshKbDkDdLClxcMUNlgmMwgsYGVYxiqYWJBcUJ6UXGesVJ+YWl+al6yXn525i BIbs6X/P+ncw3j1gfYgxGWjcRGYp0eR8YMjnlcQbGpsZWZiamBobmVuakSasJM6r1mIdKCSQ nliSmp2aWpBaFF9UmpNafIiRiYNTqoHRrWPtq1SJJZWzmuXFy5g/JV4tYVjgte9I1LQ8y4M5 e+WvNTxau680YquVhNTJOZy3Phw6ecac8fHPvUFVzDsVGkMq2F+3Ga3V5H14d0+qy6W2Vauj F0QoHxQWfe23pnfvpG1Hwj2qDzmpCG+KuXeqSl/p3I9Mt46FHTqfVd6cFjwx7RL7l3XTlFiK MxINtZiLihMBaCpchW8CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsVy+t9jAd3/fgZBBiemsFp0HGlhtGhZe4DV 4tuWbYwWb/d2sjuweMxuuMjicfbODkaPvi2rGAOYoxoYbTJSE1NSixRS85LzUzLz0m2VvIPj neNNzQwMdQ0tLcyVFPISc1NtlVx8AnTdMnOA9ikplCXmlAKFAhKLi5X07TBNCA1x07WAaYzQ 9Q0JgusxMkADCWsYM86sXcdYcFS+4ta1DqYGxnbJLkZODgkBE4lNh76yQNhiEhfurWfrYuTi EBJYxCgxccoWZginn0ni563b7CBVbAKGEleP7mcCsUUEJCR+9V9lBLGZBVwknv3fzQpiCwu4 Suz8eAYsziKgKvH6+yswm1fATWLl9F6gGg6gbQoScybZgJicAu4Sy19xgVQIAVXMvbaPeQIj 7wJGhlWMoqkFyQXFSem5hnrFibnFpXnpesn5uZsYwTHxTGoH48oGi0OMAhyMSjy8N+T0g4RY E8uKK3MPMUpwMCuJ8D4wNQgS4k1JrKxKLcqPLyrNSS0+xJgMdNNEZinR5HxgvOaVxBsam5ib GptamliYmFmSJqwkznug1TpQSCA9sSQ1OzW1ILUIZgsTB6dUA6Ps+UO7t4erVRoXPvAofm+w 9NSx7fJJbhuVGuJ2VAv8m8cxxeTh4szfc4uvn2Xpj89/YrfXPe7FT6MWn63VYhFa7TmfO2zY RYteTOC9miX7TSphlUJPpFbaNn+3d2kcG6cqX1/+6sX/yBJfXbWTrNMNV0jFy/YEJy83SqvK O/Y3+djqPU0hu5RYijMSDbWYi4oTAUl3mwrNAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: rajeshwari.s@samsung.com Subject: [U-Boot] [PATCH V3 4/5] Sound: I2S: Replacing I2S1 with I2S0 channel. X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de This patch makes required changes to make use of I2S0 channel instead of I2S1 channel on exynos5250. Signed-off-by: Dani Krishna Mohan --- arch/arm/include/asm/arch-exynos/i2s-regs.h | 6 ++++ drivers/sound/samsung-i2s.c | 45 +++++++++++++++++++-------- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/arch/arm/include/asm/arch-exynos/i2s-regs.h b/arch/arm/include/asm/arch-exynos/i2s-regs.h index 613b9b7..4a4a7a0 100644 --- a/arch/arm/include/asm/arch-exynos/i2s-regs.h +++ b/arch/arm/include/asm/arch-exynos/i2s-regs.h @@ -8,10 +8,12 @@ #ifndef __I2S_REGS_H__ #define __I2S_REGS_H__ +#define CON_RESET (1 << 31) #define CON_TXFIFO_FULL (1 << 8) #define CON_TXCH_PAUSE (1 << 4) #define CON_ACTIVE (1 << 0) +#define MOD_OP_CLK (3 << 30) #define MOD_BLCP_SHIFT 24 #define MOD_BLCP_16BIT (0 << MOD_BLCP_SHIFT) #define MOD_BLCP_8BIT (1 << MOD_BLCP_SHIFT) @@ -24,6 +26,7 @@ #define MOD_BLC_MASK (3 << 13) #define MOD_SLAVE (1 << 11) +#define MOD_RCLKSRC (0 << 10) #define MOD_MASK (3 << 8) #define MOD_LR_LLOW (0 << 7) #define MOD_LR_RLOW (1 << 7) @@ -47,4 +50,7 @@ #define FIC_TXFLUSH (1 << 15) #define FIC_RXFLUSH (1 << 7) +#define PSREN (1 << 15) +#define PSVAL (3 << 8) + #endif /* __I2S_REGS_H__ */ diff --git a/drivers/sound/samsung-i2s.c b/drivers/sound/samsung-i2s.c index 30d1470..47f155f 100644 --- a/drivers/sound/samsung-i2s.c +++ b/drivers/sound/samsung-i2s.c @@ -65,7 +65,6 @@ static void i2s_txctrl(struct i2s_reg *i2s_reg, int on) if (on) { con |= CON_ACTIVE; con &= ~CON_TXCH_PAUSE; - } else { con |= CON_TXCH_PAUSE; con &= ~CON_ACTIVE; @@ -300,18 +299,29 @@ int i2s_tx_init(struct i2stx_info *pi2s_tx) int ret; struct i2s_reg *i2s_reg = (struct i2s_reg *)pi2s_tx->base_address; + if (pi2s_tx->id == 0) { + /* Initialize GPIO for I2S-0 */ + exynos_pinmux_config(PERIPH_ID_I2S0, 0); + + /* Set EPLL Clock */ + ret = set_epll_clk(pi2s_tx->samplingrate * pi2s_tx->rfs * 4); + } else if (pi2s_tx->id == 1) { + /* Initialize GPIO for I2S-1 */ + exynos_pinmux_config(PERIPH_ID_I2S1, 0); + + /* Set EPLL Clock */ + ret = set_epll_clk(pi2s_tx->audio_pll_clk); + } else { + debug("%s: unsupported i2s-%d bus\n", __func__, pi2s_tx->id); + return -1; + } - /* Initialize GPIO for I2s */ - exynos_pinmux_config(PERIPH_ID_I2S1, 0); - - /* Set EPLL Clock */ - ret = set_epll_clk(pi2s_tx->audio_pll_clk); if (ret != 0) { - debug("%s: epll clock set rate falied\n", __func__); + debug("%s: epll clock set rate failed\n", __func__); return -1; } - /* Select Clk Source for Audio1 */ + /* Select Clk Source for Audio 0 or 1 */ ret = set_i2s_clk_source(pi2s_tx->id); if (ret == -1) { debug("%s: unsupported clock for i2s-%d\n", __func__, @@ -319,10 +329,19 @@ int i2s_tx_init(struct i2stx_info *pi2s_tx) return -1; } - /* Set Prescaler to get MCLK */ - ret = set_i2s_clk_prescaler(pi2s_tx->audio_pll_clk, - (pi2s_tx->samplingrate * (pi2s_tx->rfs)), - pi2s_tx->id); + if (pi2s_tx->id == 0) { + /*Reset the i2s module */ + writel(CON_RESET, &i2s_reg->con); + + writel(MOD_OP_CLK | MOD_RCLKSRC, &i2s_reg->mod); + /* set i2s prescaler */ + writel(PSREN | PSVAL, &i2s_reg->psr); + } else { + /* Set Prescaler to get MCLK */ + ret = set_i2s_clk_prescaler(pi2s_tx->audio_pll_clk, + (pi2s_tx->samplingrate * (pi2s_tx->rfs)), + pi2s_tx->id); + } if (ret == -1) { debug("%s: unsupported prescalar for i2s-%d\n", __func__, pi2s_tx->id); @@ -331,7 +350,7 @@ int i2s_tx_init(struct i2stx_info *pi2s_tx) /* Configure I2s format */ ret = i2s_set_fmt(i2s_reg, (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | - SND_SOC_DAIFMT_CBM_CFM)); + SND_SOC_DAIFMT_CBM_CFM)); if (ret == 0) { i2s_set_lr_framesize(i2s_reg, pi2s_tx->rfs); ret = i2s_set_samplesize(i2s_reg, pi2s_tx->bitspersample);