From patchwork Wed Apr 3 11:54:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajeshwari Birje X-Patchwork-Id: 233418 X-Patchwork-Delegate: promsoft@gmail.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 6675D2C00B5 for ; Wed, 3 Apr 2013 22:51:14 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C14AC4A1F6; Wed, 3 Apr 2013 13:51:12 +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 7534Hyo9Yo2J; Wed, 3 Apr 2013 13:51:12 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B3E714A1FB; Wed, 3 Apr 2013 13:50:39 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3E67C4A1EE for ; Wed, 3 Apr 2013 13:50:29 +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 QapBidXbffcA for ; Wed, 3 Apr 2013 13:50:24 +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 mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by theia.denx.de (Postfix) with ESMTP id 0F6054A1DE for ; Wed, 3 Apr 2013 13:50:10 +0200 (CEST) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MKO00J5DGV95KB0@mailout3.samsung.com> for u-boot@lists.denx.de; Wed, 03 Apr 2013 20:50:06 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.126]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 3F.C6.05174.E671C515; Wed, 03 Apr 2013 20:50:06 +0900 (KST) X-AuditID: cbfee68f-b7f4a6d000001436-fc-515c176ecbdc Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 4A.09.17838.D671C515; Wed, 03 Apr 2013 20:50:06 +0900 (KST) Received: from rajeshwari-linux.sisodomain.com ([107.108.215.115]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MKO009TKGQZAL50@mmp1.samsung.com>; Wed, 03 Apr 2013 20:50:05 +0900 (KST) From: Rajeshwari Shinde To: u-boot@lists.denx.de Date: Wed, 03 Apr 2013 17:24:24 +0530 Message-id: <1364990064-30688-4-git-send-email-rajeshwari.s@samsung.com> X-Mailer: git-send-email 1.7.4.4 In-reply-to: <1364990064-30688-1-git-send-email-rajeshwari.s@samsung.com> References: <1364990064-30688-1-git-send-email-rajeshwari.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsWyRsSkTjdPPCbQYOY0AYuH62+yWHQcaWG0 mHL4C4vFty3bGC3e7u1kd2D1mN1wkcXjzrU9bB5n7+xg9OjbsooxgCWKyyYlNSezLLVI3y6B K+PAqynMBfukKh68ecPcwDhJtIuRk0NCwETi46r/zBC2mMSFe+vZuhi5OIQEljJKTLgCkzCR 2P2hmREisYhR4vj7t0wgCSGBiUwSJ6dEgNhsAkYSW09OYwSxRQQkJH71XwWzmQViJF7v/8EG YgsLuEns+b4DrJdFQFXiwrOzQAs4OHgFPCQWPOKH2KUgcWzqV1YQm1PAU6J93WMWkBIhoJLF FzRBTpAQaGeXOP51FQvEGAGJb5MPgdVICMhKbDoAdbKkxMEVN1gmMAovYGRYxSiaWpBcUJyU XmSsV5yYW1yal66XnJ+7iREYxqf/PevfwXj3gPUhxmSgcROZpUST84FxkFcSb2hsZmRhamJq bGRuaUaasJI4r1qLdaCQQHpiSWp2ampBalF8UWlOavEhRiYOTqkGxq51n1gL0srfLGXYdncO r/Oj5zFyKV+tb4Rc8/qplFQ97Yp/yIeUo7rcM9YztN4RCljL+4hr1tVa0/tWrg679rw1X+l1 9v2hKZsSd4X949zfHj/n0PmXzOKXfukvkl3ysWmG+ALm5LI5F6efmhlgn/WZ4eVy09+ndxc0 +DKuNdlxVSIl4+qGmTuUWIozEg21mIuKEwG8/KYZeQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMIsWRmVeSWpSXmKPExsVy+t9jAd088ZhAg/Y+douH62+yWHQcaWG0 mHL4C4vFty3bGC3e7u1kd2D1mN1wkcXjzrU9bB5n7+xg9OjbsooxgCWqgdEmIzUxJbVIITUv OT8lMy/dVsk7ON453tTMwFDX0NLCXEkhLzE31VbJxSdA1y0zB2izkkJZYk4pUCggsbhYSd8O 04TQEDddC5jGCF3fkCC4HiMDNJCwhjHjwKspzAX7pCoevHnD3MA4SbSLkZNDQsBEYveHZkYI W0ziwr31bF2MXBxCAosYJY6/f8sEkhASmMgkcXJKBIjNJmAksfXkNLAGEQEJiV/9V8FsZoEY idf7f7CB2MICbhJ7vu8A62URUJW48OwscxcjBwevgIfEgkf8ELsUJI5N/coKYnMKeEq0r3vM AlIiBFSy+ILmBEbeBYwMqxhFUwuSC4qT0nMN9YoTc4tL89L1kvNzNzGCo+SZ1A7GlQ0WhxgF OBiVeHhPfIkKFGJNLCuuzD3EKMHBrCTCy3k8OlCINyWxsiq1KD++qDQntfgQYzLQTROZpUST 84ERnFcSb2hsYm5qbGppYmFiZkmasJI474FW60AhgfTEktTs1NSC1CKYLUwcnFINjC33A85n Psgp3PEx98Krpl380r1rLp71Flq8sc4sxOJf3aHZ+wLvdZTzdEQbBf6zCJhx1cynM/fY/uaE iMADod3ihxLyyvcxm222fnR0hfjDwLart1+8shNaf0BgedWvmLxiDsXvk6VFJubea/tTEe7C vNCs6e7VZUYRatn73e45/d4pkhT1WImlOCPRUIu5qDgRAJMY4nHWAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: patches@linaro.org Subject: [U-Boot] [PATCH 3/3 V5] EXYNOS5: GPIO: Enable GPIO Command for EXYNOS5 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 enables GPIO Command for EXYNOS5. Function has been added to asm/gpio.h to decode the input gpio name to gpio number. example: gpio set gpa00 Signed-off-by: Rajeshwari Shinde Acked-by: Simon Glass --- Changes in V2: - New patch Changes in V3: - Created a table to know the base address of input bank. Changes in V4: - Moved the function name_to_gpio to s5p gpio driver and renamed to s5p_name_to_gpio. Changes in V5: - Rebased on latest u-boot-samsung tree arch/arm/include/asm/arch-exynos/gpio.h | 8 +++++ drivers/gpio/s5p_gpio.c | 49 +++++++++++++++++++++++++++++++ include/configs/exynos5250-dt.h | 1 + 3 files changed, 58 insertions(+), 0 deletions(-) diff --git a/arch/arm/include/asm/arch-exynos/gpio.h b/arch/arm/include/asm/arch-exynos/gpio.h index d8000af..9b31dc2 100644 --- a/arch/arm/include/asm/arch-exynos/gpio.h +++ b/arch/arm/include/asm/arch-exynos/gpio.h @@ -660,6 +660,14 @@ static inline unsigned int get_bank_num(void) return 0; } +struct gpio_name_num_table { + char bank; + unsigned int base; +}; + +int s5p_name_to_gpio(const char *name); +#define name_to_gpio(n) s5p_name_to_gpio(n) + void gpio_cfg_pin(int gpio, int cfg); void gpio_set_pull(int gpio, int mode); void gpio_set_drv(int gpio, int mode); diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c index d6650c3..824977b 100644 --- a/drivers/gpio/s5p_gpio.c +++ b/drivers/gpio/s5p_gpio.c @@ -36,6 +36,21 @@ #define RATE_MASK(x) (0x1 << (x + 16)) #define RATE_SET(x) (0x1 << (x + 16)) +struct gpio_name_num_table exynos5_gpio_table[] = { + { 'a', EXYNOS5_GPIO_A00 }, + { 'b', EXYNOS5_GPIO_B00 }, + { 'c', EXYNOS5_GPIO_C00 }, + { 'd', EXYNOS5_GPIO_D00 }, + { 'y', EXYNOS5_GPIO_Y00 }, + { 'x', EXYNOS5_GPIO_X00 }, + { 'e', EXYNOS5_GPIO_E00 }, + { 'f', EXYNOS5_GPIO_F00 }, + { 'g', EXYNOS5_GPIO_G00 }, + { 'h', EXYNOS5_GPIO_H00 }, + { 'v', EXYNOS5_GPIO_V00 }, + { 'z', EXYNOS5_GPIO_Z0 }, +}; + void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg) { unsigned int value; @@ -238,3 +253,37 @@ void gpio_cfg_pin(int gpio, int cfg) s5p_gpio_cfg_pin(s5p_gpio_get_bank(gpio), s5p_gpio_get_pin(gpio), cfg); } + +int s5p_name_to_gpio(const char *name) +{ + unsigned int num, i; + + name++; + + if (*name == 'p') + ++name; + + for (i = 0; i < ARRAY_SIZE(exynos5_gpio_table); i++) { + if (*name == exynos5_gpio_table[i].bank) { + if (*name == 'c') { + name++; + num = simple_strtoul(name, NULL, 10); + if (num >= 40) { + num = EXYNOS5_GPIO_C40 + (num - 40); + } else { + num = simple_strtoul(name, NULL, 8); + num = exynos5_gpio_table[i].base + num; + } + } else { + name++; + num = simple_strtoul(name, NULL, 8); + num = exynos5_gpio_table[i].base + num; + } + break; + } + } + + if (i == ARRAY_SIZE(exynos5_gpio_table)) + return -1; + return num; +} diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h index cbd1c4e..46a4e75 100644 --- a/include/configs/exynos5250-dt.h +++ b/include/configs/exynos5250-dt.h @@ -122,6 +122,7 @@ #define CONFIG_CMD_FAT #define CONFIG_CMD_NET #define CONFIG_CMD_HASH +#define CONFIG_CMD_GPIO #define CONFIG_BOOTDELAY 3 #define CONFIG_ZERO_BOOTDELAY_CHECK