From patchwork Thu Nov 15 08:15:22 2012
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Piotr Wilczek
X-Patchwork-Id: 199215
X-Patchwork-Delegate: hs@denx.de
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 C36692C00B4
for ;
Thu, 15 Nov 2012 19:16:35 +1100 (EST)
Received: from localhost (localhost [127.0.0.1])
by theia.denx.de (Postfix) with ESMTP id CE8E94A0C5;
Thu, 15 Nov 2012 09:16:22 +0100 (CET)
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 AC7KuFqgO-eG; Thu, 15 Nov 2012 09:16:22 +0100 (CET)
Received: from theia.denx.de (localhost [127.0.0.1])
by theia.denx.de (Postfix) with ESMTP id 94C774A0B9;
Thu, 15 Nov 2012 09:16:07 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
by theia.denx.de (Postfix) with ESMTP id 489564A0B6
for ; Thu, 15 Nov 2012 09:16:04 +0100 (CET)
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 aHfvNAGKvK2Q for ;
Thu, 15 Nov 2012 09:16:03 +0100 (CET)
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 mailout3.samsung.com (mailout3.samsung.com [203.254.224.33])
by theia.denx.de (Postfix) with ESMTP id 10F414A08D
for ; Thu, 15 Nov 2012 09:16:00 +0100 (CET)
Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27])
by mailout3.samsung.com
(Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit
(built Nov
17 2011)) with ESMTP id <0MDI00J2NS9EFU30@mailout3.samsung.com> for
u-boot@lists.denx.de; Thu, 15 Nov 2012 17:15:53 +0900 (KST)
X-AuditID: cbfee61b-b7f616d00000319b-89-50a4a4b8e731
Received: from epmmp1.local.host ( [203.254.227.16])
by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 63.A6.12699.8B4A4A05;
Thu, 15 Nov 2012 17:15:52 +0900 (KST)
Received: from mcdsrvbld02.digital.local ([106.116.37.23])
by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01
(7.0.4.24.0) 64bit (built Nov 17 2011))
with ESMTPA id <0MDI00E3HS9U1070@mmp1.samsung.com> for
u-boot@lists.denx.de; Thu, 15 Nov 2012 17:15:52 +0900 (KST)
From: Piotr Wilczek
To: u-boot@lists.denx.de
Date: Thu, 15 Nov 2012 09:15:22 +0100
Message-id: <1352967325-26426-4-git-send-email-p.wilczek@samsung.com>
X-Mailer: git-send-email 1.7.10
In-reply-to: <1352967325-26426-1-git-send-email-p.wilczek@samsung.com>
References: <1352967325-26426-1-git-send-email-p.wilczek@samsung.com>
X-Brightmail-Tracker:
H4sIAAAAAAAAA+NgFnrMJMWRmVeSWpSXmKPExsVy+t9jAd0dS5YEGKw+ZWXxdm8nuwOjx9k7
OxgDGKO4bFJSczLLUov07RK4Mg7PfM1csFG04uD2k6wNjJ1CXYycHBICJhJbPz9ihbDFJC7c
W8/WxcjFISSwiFFi6aPTLCAJIYHFTBJPJymD2GwC2hLL37xhBLFFBCQkfvVfZQRpYBZYyiRx
7t5/sISwgJ1Ex/GTzCA2i4CqxKedE8HivAKuEmu23IHaJi/x9H4fG4jNKeAmcWTHPXaIZa4S
rStOM05g5F3AyLCKUTS1ILmgOCk910ivODG3uDQvXS85P3cTI9jrz6R3MK5qsDjEKMDBqMTD
a/FxcYAQa2JZcWXuIUYJDmYlEd4XB4FCvCmJlVWpRfnxRaU5qcWHGKU5WJTEeZs9UgKEBNIT
S1KzU1MLUotgskwcnFINjDNuPcngKrkVXnPbtSH+rvaMgOubSufyNV1ut14lovCWJ7pAq98+
dluDqMzGH4+U7M5y7p/4r5ZL4W/mGxPh6nsfF80Njnjm3Hp04j7N15WKqWcz0mfcW+yy2S5s
249/98WDeHYJPZzLf27FHAOJJX1GvbueFJ/fuOnahQOftxy9mdCUq7/f4p4SS3FGoqEWc1Fx
IgCRVmTX9gEAAA==
Cc: Stephen Warren ,
Piotr Wilczek ,
Kyungmin Park ,
Tom Rini , Heiko Schocher
Subject: [U-Boot] [PATCH 3/6] exynos:pinmux: Add pinmux support for i2c
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 add pinmux for I2C for Exynos4
Signed-off-by: Piotr Wilczek
Signed-off-by: Kyungmin Park
CC: Minkyu Kang
---
arch/arm/cpu/armv7/exynos/pinmux.c | 64 ++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
index 7776add..44ce072 100644
--- a/arch/arm/cpu/armv7/exynos/pinmux.c
+++ b/arch/arm/cpu/armv7/exynos/pinmux.c
@@ -265,10 +265,74 @@ static int exynos5_pinmux_config(int peripheral, int flags)
return 0;
}
+static void exynos4_i2c_config(int peripheral, int flags)
+{
+ struct exynos4_gpio_part1 *gpio1 =
+ (struct exynos4_gpio_part1 *) samsung_get_base_gpio_part1();
+
+ switch (peripheral) {
+ case PERIPH_ID_I2C0:
+ s5p_gpio_cfg_pin(&gpio1->d1, 0, GPIO_FUNC(0x2));
+ s5p_gpio_cfg_pin(&gpio1->d1, 1, GPIO_FUNC(0x2));
+ break;
+ case PERIPH_ID_I2C1:
+ s5p_gpio_cfg_pin(&gpio1->d1, 2, GPIO_FUNC(0x2));
+ s5p_gpio_cfg_pin(&gpio1->d1, 3, GPIO_FUNC(0x2));
+ break;
+ case PERIPH_ID_I2C2:
+ s5p_gpio_cfg_pin(&gpio1->a0, 6, GPIO_FUNC(0x3));
+ s5p_gpio_cfg_pin(&gpio1->a0, 7, GPIO_FUNC(0x3));
+ break;
+ case PERIPH_ID_I2C3:
+ s5p_gpio_cfg_pin(&gpio1->a1, 2, GPIO_FUNC(0x3));
+ s5p_gpio_cfg_pin(&gpio1->a1, 3, GPIO_FUNC(0x3));
+ break;
+ case PERIPH_ID_I2C4:
+ s5p_gpio_cfg_pin(&gpio1->b, 2, GPIO_FUNC(0x3));
+ s5p_gpio_cfg_pin(&gpio1->b, 3, GPIO_FUNC(0x3));
+ break;
+ case PERIPH_ID_I2C5:
+ s5p_gpio_cfg_pin(&gpio1->b, 6, GPIO_FUNC(0x3));
+ s5p_gpio_cfg_pin(&gpio1->b, 7, GPIO_FUNC(0x3));
+ break;
+ case PERIPH_ID_I2C6:
+ s5p_gpio_cfg_pin(&gpio1->c1, 3, GPIO_FUNC(0x4));
+ s5p_gpio_cfg_pin(&gpio1->c1, 4, GPIO_FUNC(0x4));
+ break;
+ case PERIPH_ID_I2C7:
+ s5p_gpio_cfg_pin(&gpio1->d0, 2, GPIO_FUNC(0x3));
+ s5p_gpio_cfg_pin(&gpio1->d0, 3, GPIO_FUNC(0x3));
+ break;
+ }
+}
+
+static int exynos4_pinmux_config(int peripheral, int flags)
+{
+ switch (peripheral) {
+ case PERIPH_ID_I2C0:
+ case PERIPH_ID_I2C1:
+ case PERIPH_ID_I2C2:
+ case PERIPH_ID_I2C3:
+ case PERIPH_ID_I2C4:
+ case PERIPH_ID_I2C5:
+ case PERIPH_ID_I2C6:
+ case PERIPH_ID_I2C7:
+ exynos4_i2c_config(peripheral, flags);
+ break;
+ default:
+ debug("%s: invalid peripheral %d", __func__, peripheral);
+ return -1;
+ }
+
+ return 0;
+}
+
int exynos_pinmux_config(int peripheral, int flags)
{
if (cpu_is_exynos5())
return exynos5_pinmux_config(peripheral, flags);
+ else if (cpu_is_exynos4())
+ return exynos4_pinmux_config(peripheral, flags);
else {
debug("pinmux functionality not supported\n");
return -1;