From patchwork Tue Jan 22 13:48:09 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajeshwari Birje X-Patchwork-Id: 214550 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 F0E852C007E for ; Wed, 23 Jan 2013 00:43:10 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8472C4A0F3; Tue, 22 Jan 2013 14:42:51 +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 fGiPtPg5ww7p; Tue, 22 Jan 2013 14:42:51 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C80B34A100; Tue, 22 Jan 2013 14:42:48 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BE37C4A0B9 for ; Tue, 22 Jan 2013 14:42:23 +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 wdEJmw1iSU3P for ; Tue, 22 Jan 2013 14:42:22 +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 421344A0B8 for ; Tue, 22 Jan 2013 14:42:19 +0100 (CET) Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MH100K164QEEJR0@mailout3.samsung.com> for u-boot@lists.denx.de; Tue, 22 Jan 2013 22:42:16 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.125]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 1B.8C.03918.8379EF05; Tue, 22 Jan 2013 22:42:16 +0900 (KST) X-AuditID: cbfee61a-b7f7d6d000000f4e-2c-50fe973877e4 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 7A.8C.03918.8379EF05; Tue, 22 Jan 2013 22:42:16 +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 <0MH100D7F4N8JQB0@mmp1.samsung.com> for u-boot@lists.denx.de; Tue, 22 Jan 2013 22:42:16 +0900 (KST) From: Rajeshwari Shinde To: u-boot@lists.denx.de Date: Tue, 22 Jan 2013 19:18:09 +0530 Message-id: <1358862489-28818-4-git-send-email-rajeshwari.s@samsung.com> X-Mailer: git-send-email 1.7.4.4 In-reply-to: <1358862489-28818-1-git-send-email-rajeshwari.s@samsung.com> References: <1358862489-28818-1-git-send-email-rajeshwari.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCLMWRmVeSWpSXmKPExsWyRsSkVtdi+r8Ag4cf9Cze7u1kd2D0OHtn B2MAYxSXTUpqTmZZapG+XQJXxtl5HWwFRxQqXrx4y9zA+Emii5GTQ0LAROLB/P/MELaYxIV7 69m6GLk4hASWMkrMaehhgSn68vISK0RiEaPE6W9f2CGcVUwS+z59YgOpYhMwkth6chojiC0i ICHxq/8qmM0sECPxev8PsBphATeJ5ytOg01lEVCV+LrjNZjNK+Ah8X3VH6htChLHpn5lBbE5 BTwlbs6YBNYrBFTz+uF1JpDFEgKX2ST23T7CDDFIQOLb5ENAzRxACVmJTQeg3pGUOLjiBssE RuEFjAyrGEVTC5ILipPScw31ihNzi0vz0vWS83M3MQLD8PS/Z1I7GFc2WBxiFOBgVOLhtXj0 N0CINbGsuDL3EKMEB7OSCK9u/b8AId6UxMqq1KL8+KLSnNTiQ4zJQMsnMkuJJucDYySvJN7Q 2MTc1NjU0sjIzNSUNGElcV7GU08ChATSE0tSs1NTC1KLYLYwcXBKNTBOO/TIw7xsx71ZM3ds +2wts+eDrk3Vjo7nKkmSNge6EoybHP72X579y2Ib0/N5t61CX3NuFj24Y17HyzzBX6urT8W7 a6Y8s+b6kOjw9nGX2p41FjvFT9n8tOabdtuyeoKPxfPoB3ZbWPbdO8vYq567NPJ4t4Zy/J22 Xe7fb6ik/KgNrmkQ1tNQYinOSDTUYi4qTgQAFy7bq4cCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsVy+t9jAV2L6f8CDPr3Klq83dvJ7sDocfbO DsYAxqgGRpuM1MSU1CKF1Lzk/JTMvHRbJe/geOd4UzMDQ11DSwtzJYW8xNxUWyUXnwBdt8wc oLFKCmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMIaxoyz8zrYCo4oVLx48Za5 gfGTRBcjJ4eEgInEl5eXWCFsMYkL99azdTFycQgJLGKUOP3tCzuEs4pJYt+nT2wgVWwCRhJb T05jBLFFBCQkfvVfBbOZBWIkXu//AVYjLOAm8XzFaRYQm0VAVeLrjtdgNq+Ah8T3VX9YILYp SByb+hVsM6eAp8TNGZPAeoWAal4/vM40gZF3ASPDKkbR1ILkguKk9FxDveLE3OLSvHS95Pzc TYzgIH8mtYNxZYPFIUYBDkYlHl6LR38DhFgTy4orcw8xSnAwK4nw6tb/CxDiTUmsrEotyo8v Ks1JLT7EmAx01URmKdHkfGAE5pXEGxqbmJsam1qaWJiYWZImrCTOy3jqSYCQQHpiSWp2ampB ahHMFiYOTqkGRsNzcyIn/Z2j7vPo4dfn1X9eKGz8bcWW7qf6UPNL2u/8WbVHDO52O0s/6Z9n 4TXd/WqXuE5O3KrvS9IKI04w3l95Yp2E3Iyn77yW62TlRm7W2MqVWvWW75RH4OrFplJW9277 21ytYVHl457trS6xTl+T1y5zg9m1sKzUOwvn3Pxaoug+4Zf9DCWW4oxEQy3mouJEAPpi6UO2 AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: patches@linaro.org Subject: [U-Boot] [PATCH 3/3 V2] 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 GPIO_INPUT in cmd_gpio.c has been modified to GPIO_DIRECTION_INPUT as GPIO_INPUT is alraedy defined in exynos5 and leading to a error. Signed-off-by: Rajeshwari Shinde --- Chnages in V2: - New patch arch/arm/include/asm/arch-exynos/gpio.h | 88 +++++++++++++++++++++++++++++++ common/cmd_gpio.c | 6 +- include/configs/exynos5250-dt.h | 1 + 3 files changed, 92 insertions(+), 3 deletions(-) diff --git a/arch/arm/include/asm/arch-exynos/gpio.h b/arch/arm/include/asm/arch-exynos/gpio.h index af882dd..66e4a8e 100644 --- a/arch/arm/include/asm/arch-exynos/gpio.h +++ b/arch/arm/include/asm/arch-exynos/gpio.h @@ -657,6 +657,94 @@ static inline unsigned int s5p_gpio_part_max(int nr) void gpio_cfg_pin(int gpio, int cfg); void gpio_set_pull(int gpio, int mode); void gpio_set_drv(int gpio, int mode); + +#include + +static inline int name_to_gpio(const char *name) +{ + int num; + + name++; + + if (*name == 'p') { + ++name; + + switch (*name) { + case 'a': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_A00 + num; + break; + case 'b': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_B00 + num; + break; + case 'c': + name++; + num = simple_strtoul(name, NULL, 10); + if (num >= 40) + num = GPIO_C40 + (num - 40); + else { + num = simple_strtoul(name, NULL, 8); + num = GPIO_C00 + num; + } + break; + case 'd': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_D00 + num; + break; + case 'y': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_Y00 + num; + break; + case 'x': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_X00 + num; + break; + case 'e': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_E00 + num; + break; + case 'f': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_F00 + num; + break; + case 'g': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_G00 + num; + break; + case 'h': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_H00 + num; + break; + case 'v': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_V00 + num; + break; + case 'z': + name++; + num = simple_strtoul(name, NULL, 8); + num = GPIO_Z0 + num; + break; + default: + return -1; + } + } else + return -1; + + return num; +} + +#define name_to_gpio(n) name_to_gpio(n) #endif /* Pin configurations */ diff --git a/common/cmd_gpio.c b/common/cmd_gpio.c index 47eee89..450e6d1 100644 --- a/common/cmd_gpio.c +++ b/common/cmd_gpio.c @@ -16,7 +16,7 @@ #endif enum gpio_cmd { - GPIO_INPUT, + GPIO_DIRECTION_INPUT, GPIO_SET, GPIO_CLEAR, GPIO_TOGGLE, @@ -44,7 +44,7 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) /* parse the behavior */ switch (*str_cmd) { - case 'i': sub_cmd = GPIO_INPUT; break; + case 'i': sub_cmd = GPIO_DIRECTION_INPUT; break; case 's': sub_cmd = GPIO_SET; break; case 'c': sub_cmd = GPIO_CLEAR; break; case 't': sub_cmd = GPIO_TOGGLE; break; @@ -63,7 +63,7 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } /* finally, let's do it: set direction and exec command */ - if (sub_cmd == GPIO_INPUT) { + if (sub_cmd == GPIO_DIRECTION_INPUT) { gpio_direction_input(gpio); value = gpio_get_value(gpio); } else { diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h index 7b9c393..b20b8f2 100644 --- a/include/configs/exynos5250-dt.h +++ b/include/configs/exynos5250-dt.h @@ -113,6 +113,7 @@ #define CONFIG_CMD_EXT2 #define CONFIG_CMD_FAT #define CONFIG_CMD_NET +#define CONFIG_CMD_GPIO #define CONFIG_BOOTDELAY 3 #define CONFIG_ZERO_BOOTDELAY_CHECK