From patchwork Tue Sep 10 15:02:16 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: 273902 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 108052C0108 for ; Wed, 11 Sep 2013 01:03:04 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EDA664A068; Tue, 10 Sep 2013 17:02:32 +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 GwrsmnuqAcSg; Tue, 10 Sep 2013 17:02:32 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B291A4A0C2; Tue, 10 Sep 2013 17:02:01 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A23D84A0A6 for ; Tue, 10 Sep 2013 17:01:47 +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 F2O7HFZGSo2w for ; Tue, 10 Sep 2013 17:01:41 +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 BBAED4A067 for ; Tue, 10 Sep 2013 17:01:24 +0200 (CEST) Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MSX00MZU0DZOO20@mailout4.samsung.com> for u-boot@lists.denx.de; Wed, 11 Sep 2013 00:01:13 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.124]) by epcpsbgr4.samsung.com (EPCPMTA) with SMTP id E9.2D.31253.9343F225; Wed, 11 Sep 2013 00:01:13 +0900 (KST) X-AuditID: cbfee690-b7f3b6d000007a15-80-522f3439f76b Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 0F.C1.09055.9343F225; Wed, 11 Sep 2013 00:01:13 +0900 (KST) Received: from krishnna-desktop.sisodomain.com ([107.108.73.88]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MSX00IW80DPDH00@mmp2.samsung.com>; Wed, 11 Sep 2013 00:01:13 +0900 (KST) From: Dani Krishna Mohan To: u-boot@lists.denx.de Date: Tue, 10 Sep 2013 20:32:16 +0530 Message-id: <1378825337-9661-5-git-send-email-krishna.md@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1378825337-9661-1-git-send-email-krishna.md@samsung.com> References: <1378825337-9661-1-git-send-email-krishna.md@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrLLMWRmVeSWpSXmKPExsWyRsSkRtfSRD/IYN1OdYuOIy2MFi1rD7Ba fNuyjdHi7d5OdgcWj9kNF1k8zt7ZwejRt2UVYwBzFJdNSmpOZllqkb5dAlfG43nbmAo2y1T8 f9fK1sB4VKyLkZNDQsBEovXWS3YIW0ziwr31bF2MXBxCAksZJTZt2c4OU7T/2ERmiMR0Ronj lzrZIZx+JomL37ewgVSxCRhKXD26nwnEFhGQkPjVf5URxGYWcJF49n83K4gtLOAq8ef+TbB6 FgFVifm7GoDiHBy8QPG+514gpoSAgsScSTYgFZwCbhJ9NzaCTRECqvj26SkjyFoJge9sEjce HWCEGCMg8W3yIRaIXlmJTQeYIW6WlDi44gbLBEbhBYwMqxhFUwuSC4qT0otM9IoTc4tL89L1 kvNzNzECg/b0v2cTdjDeO2B9iDEZaNxEZinR5Hxg0OeVxBsamxlZmJqYGhuZW5qRJqwkzqve Yh0oJJCeWJKanZpakFoUX1Sak1p8iJGJg1OqgbHeU2ZW4JLeXKYpifvynt+7bsP6SOV6veNh bz4utlVvmIpWuhZxKhX82xunG3v7/OuYgAUOWUXrZGK7tXlS74Xb3YjT2DX98gY5m2yeVULV j6YVFYaVzLnZnztlqsT1hGe7y55edDno+fQCv9HjyrPa3DmfZy4QDH/+NNRid5SZ1mGpTR+4 niixFGckGmoxFxUnAgDFqN3mcAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsVy+t9jQV1LE/0gg1t75Sw6jrQwWrSsPcBq 8W3LNkaLt3s72R1YPGY3XGTxOHtnB6NH35ZVjAHMUQ2MNhmpiSmpRQqpecn5KZl56bZK3sHx zvGmZgaGuoaWFuZKCnmJuam2Si4+AbpumTlA+5QUyhJzSoFCAYnFxUr6dpgmhIa46VrANEbo +oYEwfUYGaCBhDWMGY/nbWMq2CxT8f9dK1sD41GxLkZODgkBE4n9xyYyQ9hiEhfurWfrYuTi EBKYzihx/FInO4TTzyRx8fsWNpAqNgFDiatH9zOB2CICEhK/+q8ygtjMAi4Sz/7vZgWxhQVc Jf7cvwlWzyKgKjF/VwNQnIODFyje99wLxJQQUJCYM8kGpIJTwE2i78ZGsClCQBXfPj1lnMDI u4CRYRWjaGpBckFxUnquoV5xYm5xaV66XnJ+7iZGcEw8k9rBuLLB4hCjAAejEg/vDTn9ICHW xLLiytxDjBIczEoivFziQCHelMTKqtSi/Pii0pzU4kOMyUA3TWSWEk3OB8ZrXkm8obGJuamx qaWJhYmZJWnCSuK8B1qtA4UE0hNLUrNTUwtSi2C2MHFwSjUwVmn9UIz698k6/XVT/8zj3lp/ bH34VnMzdoT8/KQeKy4W2X6mOdcmL1O7xaBnN6Oh/CcF5mNHMpQafk9tj+CYZrN75bK9Z7i1 fjhyFO9ZudRhM/OS/1HnlY+8PqZQ+9Ey4VZfy6mEmXf7Xxqlb2BYfGLX91tvNwb/C2RwsmPn PL5W6O4H/TM8SizFGYmGWsxFxYkAeRm/H80CAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: rajeshwari.s@samsung.com Subject: [U-Boot] [PATCH V2 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 | 42 +++++++++++++++++++-------- 2 files changed, 36 insertions(+), 12 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 9caa4d2..66db9a8 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,28 +299,47 @@ 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__); return -1; } - /* Select Clk Source for Audio1 */ + /* Select Clk Source for Audio 0 or 1 */ set_i2s_clk_source(pi2s_tx->id); - /* Set Prescaler to get MCLK */ - 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 */ + set_i2s_clk_prescaler(pi2s_tx->audio_pll_clk, + (pi2s_tx->samplingrate * (pi2s_tx->rfs)), + pi2s_tx->id); + } /* 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);