From patchwork Fri Jul 8 13:28:58 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?UTF-8?q?J=C3=BCrgen=20Lambrecht?= X-Patchwork-Id: 103844 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:4978:20e::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 4D83CB6F7E for ; Fri, 8 Jul 2011 23:29:43 +1000 (EST) Received: from canuck.infradead.org ([2001:4978:20e::1]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1QfB7g-0007ja-EJ; Fri, 08 Jul 2011 13:29:36 +0000 Received: from localhost ([127.0.0.1] helo=canuck.infradead.org) by canuck.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1QfB7f-0005nX-UI; Fri, 08 Jul 2011 13:29:35 +0000 Received: from mail-ww0-f49.google.com ([74.125.82.49]) by canuck.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1QfB7c-0005nE-LJ for linux-arm-kernel@lists.infradead.org; Fri, 08 Jul 2011 13:29:33 +0000 Received: by wwf22 with SMTP id 22so1380188wwf.18 for ; Fri, 08 Jul 2011 06:29:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:mime-version :content-type:content-transfer-encoding; bh=nH+YsABdsZy1gmsFRdn+U0vCyk/uukzyMZ1PWtJDgRY=; b=jdamYtBZZ747B3WwGcZOQVgqZgwB3GapkkhqON0Uj3A2pXET/jX44GsOF7idkssaBg CyXl5f8b/R+DGiyEQK/jpGxxO7QGU5Q0L2bqKHnWiTsVh5bhUvbMMsECgC3ppzqejIba ugpRLbt75uJhxvTs0XCvlnHSMgwAgq6c03NWQ= Received: by 10.227.202.205 with SMTP id ff13mr1838840wbb.102.1310131769440; Fri, 08 Jul 2011 06:29:29 -0700 (PDT) Received: from localhost.localdomain (ip2.televic.com [81.82.194.222]) by mx.google.com with ESMTPS id gb1sm7697374wbb.37.2011.07.08.06.29.28 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 08 Jul 2011 06:29:28 -0700 (PDT) From: "=?UTF-8?q?J=C3=BCrgen=20Lambrecht?=" To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH] ARM: imx27pdk (3ds): enable m13783 codec over SSI Date: Fri, 8 Jul 2011 15:28:58 +0200 Message-Id: <1310131738-668-1-git-send-email-J.Lambrecht@televic.com> X-Mailer: git-send-email 1.7.1 MIME-Version: 1.0 X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20110708_092933_080631_D2C72CB5 X-CRM114-Status: GOOD ( 18.34 ) X-Spam-Score: -0.8 (/) X-Spam-Report: SpamAssassin version 3.3.1 on canuck.infradead.org summary: Content analysis details: (-0.8 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (juergen.lambrecht[at]gmail.com) -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [74.125.82.49 listed in list.dnswl.org] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 T_TO_NO_BRKTS_FREEMAIL To: misformatted and free email service Cc: s.hauer@pengutronix.de, alsa-devel@alsa-project.org, =?UTF-8?q?J=C3=BCrgen=20Lambrecht?= X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org - add SSI in Kconfig - enable audio in MFD mc13783 - configure audmux-v1 - configure SSI4 Signed-off-by: Jürgen Lambrecht --- arch/arm/mach-imx/Kconfig | 1 + arch/arm/mach-imx/mach-mx27_3ds.c | 40 ++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 0a3512b..2fe5e70 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -286,6 +286,7 @@ config MACH_MX27_3DS select IMX_HAVE_PLATFORM_MXC_MMC select IMX_HAVE_PLATFORM_MXC_NAND select IMX_HAVE_PLATFORM_SPI_IMX + select IMX_HAVE_PLATFORM_IMX_SSI select MXC_DEBUG_BOARD select MXC_ULPI if USB_ULPI help diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c index 2787cf3..c0f7dcc 100644 --- a/arch/arm/mach-imx/mach-mx27_3ds.c +++ b/arch/arm/mach-imx/mach-mx27_3ds.c @@ -41,6 +41,7 @@ #include #include #include +#include #include "devices-imx27.h" @@ -101,6 +102,11 @@ static const int mx27pdk_pins[] __initconst = { PE2_PF_USBOTG_DIR, PE24_PF_USBOTG_CLK, PE25_PF_USBOTG_DATA7, + /* SSI4 for audio to MC13783 */ + PC16_PF_SSI4_FS, + PC17_PF_SSI4_RXD, + PC18_PF_SSI4_TXD, + PC19_PF_SSI4_CLK, /* CSPI1 */ PD31_PF_CSPI1_MOSI, PD30_PF_CSPI1_MISO, @@ -271,6 +277,13 @@ static struct regulator_init_data vgen_init = { .consumer_supplies = vgen_consumers, }; +static struct regulator_init_data vaudio_init = { + .constraints = { + .boot_on = 1, + .always_on = 1, + }, +}; + static struct mc13xxx_regulator_init_data mx27_3ds_regulators[] = { { .id = MC13783_REG_VMMC1, @@ -284,6 +297,9 @@ static struct mc13xxx_regulator_init_data mx27_3ds_regulators[] = { }, { .id = MC13783_REG_GPO3, /* Turn on 3.3V */ .init_data = &gpo_init, + }, { + .id = MC13783_REG_VAUDIO, /* Power codec */ + .init_data = &vaudio_init, }, }; @@ -295,7 +311,7 @@ static struct mc13xxx_platform_data mc13783_pdata = { }, .flags = MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN | - MC13783_USE_RTC, + MC13783_USE_RTC | MC13783_USE_CODEC, }; /* SPI */ @@ -385,6 +401,11 @@ static const struct imxi2c_platform_data mx27_3ds_i2c0_data __initconst = { .bitrate = 100000, }; +/* 4-wire is synchronous; SSI-slave and MC13783-master; DMA instead of FIQ */ +static const struct imx_ssi_platform_data mx27pdk_ssi4_pdata __initconst = { + .flags = IMX_SSI_SYN | IMX_SSI_DMA | IMX_SSI_USE_I2S_SLAVE, +}; + static void __init mx27pdk_init(void) { imx27_soc_init(); @@ -420,6 +441,23 @@ static void __init mx27pdk_init(void) pr_warn("Init of the debugboard failed, all devices on the debugboard are unusable.\n"); imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data); imx27_add_imx_fb(&mx27_3ds_fb_data); + + /* SSI unit master I2S codec connected to SSI_PINS_4*/ + mxc_audmux_v1_configure_port(MX27_AUDMUX_HPCR1_SSI0, + MXC_AUDMUX_V1_PCR_SYN | /* 4wire mode */ + MXC_AUDMUX_V1_PCR_TFSDIR | /* Transmit Frame Sync is output */ + MXC_AUDMUX_V1_PCR_TCLKDIR | /* Transmit Clock is output */ + MXC_AUDMUX_V1_PCR_TFCSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4) | /*Transmit Frame Sync and Clock select source port to be HPCR3 or external SSI4*/ + MXC_AUDMUX_V1_PCR_RFSDIR | /* Receive Frame Sync is output */ + MXC_AUDMUX_V1_PCR_RCLKDIR | /* Receive Clock is output */ + MXC_AUDMUX_V1_PCR_RFCSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4) | /*Receive Frame Sync and Clock select source port to be HPCR3 or external SSI4*/ + MXC_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4) /*Receive Data select source port to be HPCR3 or external SSI4*/ + ); + mxc_audmux_v1_configure_port(MX27_AUDMUX_HPCR3_SSI_PINS_4, + MXC_AUDMUX_V1_PCR_SYN | /* 4wire mode */ + MXC_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR1_SSI0) /*Receive Data select source port to be HPCR1 or internal SSI1*/ + ); + imx27_add_imx_ssi(0, &mx27pdk_ssi4_pdata); } static void __init mx27pdk_timer_init(void)