* [U-Boot] [RFC 1/3] omap: gpio: Use generic API
2011-08-30 19:52 [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API Sanjeev Premi
@ 2011-08-30 19:52 ` Sanjeev Premi
2011-08-30 19:52 ` [U-Boot] [RFC 2/3] omap: gpio: generic changes after changing API Sanjeev Premi
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Sanjeev Premi @ 2011-08-30 19:52 UTC (permalink / raw)
To: u-boot
Convert all OMAP specific functions to use the common API
definitions in include/asm/gpio.h. In the process, made
few additional changes:
- Use -EINVAL consistently. -1 was used in many places.
- Removed one-liner static functions that were used only
once. Replaced the content as necessary.
A dummy header was created to meet the include dependency
of asm/arch/gpio.h.
Signed-off-by: Sanjeev Premi <premi@ti.com>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Cc: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Enric Balletbo i Serra <eballetbo@gmail.com>
Cc: Sunil Kumar <sunilsaini05@gmail.com>
Cc: Shashi Ranjan <shashiranjanmca05@gmail.com>
Cc: Nishanth Menon <nm@ti.com>
Cc: Steve Sakoman <steve@sakoman.com>
---
It appears that file omap_gpio.h can be renamed to gpio.h
avoiding the need to create a dummy file, but I have to
try this.
arch/arm/cpu/armv7/omap-common/gpio.c | 74 +++++++++++++++++++++++---------
arch/arm/include/asm/arch-omap3/gpio.h | 19 ++++++++
arch/arm/include/asm/omap_gpio.h | 13 ------
3 files changed, 72 insertions(+), 34 deletions(-)
create mode 100644 arch/arm/include/asm/arch-omap3/gpio.h
diff --git a/arch/arm/cpu/armv7/omap-common/gpio.c b/arch/arm/cpu/armv7/omap-common/gpio.c
index f4c3479..5c584ad 100644
--- a/arch/arm/cpu/armv7/omap-common/gpio.c
+++ b/arch/arm/cpu/armv7/omap-common/gpio.c
@@ -36,9 +36,9 @@
* published by the Free Software Foundation.
*/
#include <common.h>
-#include <asm/omap_gpio.h>
#include <asm/io.h>
#include <asm/errno.h>
+#include <asm/omap_gpio.h>
static inline const struct gpio_bank *get_gpio_bank(int gpio)
{
@@ -53,17 +53,17 @@ static inline int get_gpio_index(int gpio)
static inline int gpio_valid(int gpio)
{
if (gpio < 0)
- return -1;
+ return -EINVAL;
if (gpio < 192)
return 0;
- return -1;
+ return -EINVAL;
}
static int check_gpio(int gpio)
{
if (gpio_valid(gpio) < 0) {
printf("ERROR : check_gpio: invalid GPIO %d\n", gpio);
- return -1;
+ return -EINVAL;
}
return 0;
}
@@ -89,16 +89,6 @@ static void _set_gpio_direction(const struct gpio_bank *bank, int gpio,
__raw_writel(l, reg);
}
-void omap_set_gpio_direction(int gpio, int is_input)
-{
- const struct gpio_bank *bank;
-
- if (check_gpio(gpio) < 0)
- return;
- bank = get_gpio_bank(gpio);
- _set_gpio_direction(bank, get_gpio_index(gpio), is_input);
-}
-
static void _set_gpio_dataout(const struct gpio_bank *bank, int gpio,
int enable)
{
@@ -121,17 +111,23 @@ static void _set_gpio_dataout(const struct gpio_bank *bank, int gpio,
__raw_writel(l, reg);
}
-void omap_set_gpio_dataout(int gpio, int enable)
+/**
+ * Set value of the specified gpio
+ */
+void gpio_set_value(int gpio, int value)
{
const struct gpio_bank *bank;
if (check_gpio(gpio) < 0)
return;
bank = get_gpio_bank(gpio);
- _set_gpio_dataout(bank, get_gpio_index(gpio), enable);
+ _set_gpio_dataout(bank, get_gpio_index(gpio), value);
}
-int omap_get_gpio_datain(int gpio)
+/**
+ * Get value of the cpscified gpio
+ */
+int gpio_get_value(int gpio)
{
const struct gpio_bank *bank;
void *reg;
@@ -151,20 +147,56 @@ int omap_get_gpio_datain(int gpio)
& (1 << get_gpio_index(gpio))) != 0;
}
-static void _reset_gpio(const struct gpio_bank *bank, int gpio)
+/**
+ * Set gpio direction as input
+ */
+int gpio_direction_input(unsigned gpio)
{
+ const struct gpio_bank *bank;
+
+ if (check_gpio(gpio) < 0)
+ return -EINVAL;
+
+ bank = get_gpio_bank(gpio);
_set_gpio_direction(bank, get_gpio_index(gpio), 1);
+
+ return 0;
}
-int omap_request_gpio(int gpio)
+/**
+ * Set gpio direction as output
+ */
+int gpio_direction_output(unsigned gpio, int value)
{
+ const struct gpio_bank *bank;
+
if (check_gpio(gpio) < 0)
return -EINVAL;
+ bank = get_gpio_bank(gpio);
+ _set_gpio_dataout(bank, get_gpio_index(gpio), value);
+ _set_gpio_direction(bank, get_gpio_index(gpio), 0);
+
return 0;
}
-void omap_free_gpio(int gpio)
+/**
+ * Request a gpio before using it.
+ *
+ * NOTE: Argument 'label' is unused.
+ */
+int gpio_request(int gpio, const char *label)
+{
+ if (check_gpio(gpio) < 0)
+ return -EINVAL;
+
+ return 0;
+}
+
+/**
+ * Reset and free the gpio after using it.
+ */
+void gpio_free(unsigned gpio)
{
const struct gpio_bank *bank;
@@ -172,5 +204,5 @@ void omap_free_gpio(int gpio)
return;
bank = get_gpio_bank(gpio);
- _reset_gpio(bank, gpio);
+ _set_gpio_direction(bank, get_gpio_index(gpio), 1);
}
diff --git a/arch/arm/include/asm/arch-omap3/gpio.h b/arch/arm/include/asm/arch-omap3/gpio.h
new file mode 100644
index 0000000..89dd824
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap3/gpio.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2011, Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed as is WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _ARCH_GPIO_H_
+#define _ARCH_GPIO_H_
+
+/* Empty file required to fulfill include dependency in asm/gpio.h */
+
+#endif
diff --git a/arch/arm/include/asm/omap_gpio.h b/arch/arm/include/asm/omap_gpio.h
index 3089e1c..516cc42 100644
--- a/arch/arm/include/asm/omap_gpio.h
+++ b/arch/arm/include/asm/omap_gpio.h
@@ -49,17 +49,4 @@ extern const struct gpio_bank *const omap_gpio_bank;
#define METHOD_GPIO_24XX 4
-/* This is the interface */
-
-/* Request a gpio before using it */
-int omap_request_gpio(int gpio);
-/* Reset and free a gpio after using it */
-void omap_free_gpio(int gpio);
-/* Sets the gpio as input or output */
-void omap_set_gpio_direction(int gpio, int is_input);
-/* Set or clear a gpio output */
-void omap_set_gpio_dataout(int gpio, int enable);
-/* Get the value of a gpio input */
-int omap_get_gpio_datain(int gpio);
-
#endif /* _GPIO_H_ */
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread* [U-Boot] [PATCH 3/3] omap: gpio: Adapt board files to use generic API
2011-08-30 19:52 [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API Sanjeev Premi
2011-08-30 19:52 ` [U-Boot] [RFC 1/3] omap: gpio: Use generic API Sanjeev Premi
2011-08-30 19:52 ` [U-Boot] [RFC 2/3] omap: gpio: generic changes after changing API Sanjeev Premi
@ 2011-08-30 19:52 ` Sanjeev Premi
2011-08-30 19:55 ` Premi, Sanjeev
2011-09-01 16:48 ` [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API Luca Ceresoli
2011-09-02 5:50 ` Premi, Sanjeev
4 siblings, 1 reply; 8+ messages in thread
From: Sanjeev Premi @ 2011-08-30 19:52 UTC (permalink / raw)
To: u-boot
This patch contains updates the sources in the board files
to use the generic API.
Signed-off-by: Sanjeev Premi <premi@ti.com>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Cc: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Enric Balletbo i Serra <eballetbo@gmail.com>
Cc: Sunil Kumar <sunilsaini05@gmail.com>
Cc: Shashi Ranjan <shashiranjanmca05@gmail.com>
Cc: Nishanth Menon <nm@ti.com>
Cc: Steve Sakoman <steve@sakoman.com>
---
All changes in this patch were done vis script contained
in 0/0 of this RFC. Have been able to build for OMAP3EVM
so far. Will have to wait until FRI to test.
board/cm_t35/leds.c | 4 +-
board/comelit/dig297/dig297.c | 10 +++---
board/isee/igep0020/igep0020.c | 10 +++---
board/logicpd/zoom2/debug_board.c | 8 +++---
board/logicpd/zoom2/led.c | 36 +++++++++++++-------------
board/logicpd/zoom2/zoom2.c | 8 +++---
board/overo/overo.c | 52 ++++++++++++++++++------------------
board/ti/beagle/beagle.c | 34 ++++++++++++------------
board/ti/beagle/led.c | 12 ++++----
board/ti/evm/evm.c | 12 ++++----
10 files changed, 93 insertions(+), 93 deletions(-)
diff --git a/board/cm_t35/leds.c b/board/cm_t35/leds.c
index 71c5b0d..ae76d09 100644
--- a/board/cm_t35/leds.c
+++ b/board/cm_t35/leds.c
@@ -36,10 +36,10 @@ void __led_init(led_id_t mask, int state)
void __led_set(led_id_t mask, int state)
{
- omap_set_gpio_dataout(leds[mask], state == STATUS_LED_ON);
+ gpio_set_value(leds[mask], state == STATUS_LED_ON);
}
void __led_toggle(led_id_t mask)
{
- omap_set_gpio_dataout(leds[mask], !omap_get_gpio_datain(leds[mask]));
+ gpio_set_value(leds[mask], !gpio_get_value(leds[mask]));
}
diff --git a/board/comelit/dig297/dig297.c b/board/comelit/dig297/dig297.c
index 0062f12..4628554 100644
--- a/board/comelit/dig297/dig297.c
+++ b/board/comelit/dig297/dig297.c
@@ -168,13 +168,13 @@ static void setup_net_chip(void)
&ctrl_base->gpmc_nadv_ale);
/* Make GPIO 12 as output pin and send a magic pulse through it */
- if (!omap_request_gpio(NET_LAN9221_RESET_GPIO)) {
- omap_set_gpio_direction(NET_LAN9221_RESET_GPIO, 0);
- omap_set_gpio_dataout(NET_LAN9221_RESET_GPIO, 1);
+ if (!gpio_request(NET_LAN9221_RESET_GPIO, "")) {
+ gpio_direction_output(NET_LAN9221_RESET_GPIO);
+ gpio_set_value(NET_LAN9221_RESET_GPIO, 1);
udelay(1);
- omap_set_gpio_dataout(NET_LAN9221_RESET_GPIO, 0);
+ gpio_set_value(NET_LAN9221_RESET_GPIO, 0);
udelay(31000); /* Should be >= 30ms according to datasheet */
- omap_set_gpio_dataout(NET_LAN9221_RESET_GPIO, 1);
+ gpio_set_value(NET_LAN9221_RESET_GPIO, 1);
}
}
#endif /* CONFIG_CMD_NET */
diff --git a/board/isee/igep0020/igep0020.c b/board/isee/igep0020/igep0020.c
index 36cc924..52008d1 100644
--- a/board/isee/igep0020/igep0020.c
+++ b/board/isee/igep0020/igep0020.c
@@ -81,13 +81,13 @@ static void setup_net_chip(void)
&ctrl_base->gpmc_nadv_ale);
/* Make GPIO 64 as output pin and send a magic pulse through it */
- if (!omap_request_gpio(64)) {
- omap_set_gpio_direction(64, 0);
- omap_set_gpio_dataout(64, 1);
+ if (!gpio_request(64, "")) {
+ gpio_direction_output(64);
+ gpio_set_value(64, 1);
udelay(1);
- omap_set_gpio_dataout(64, 0);
+ gpio_set_value(64, 0);
udelay(1);
- omap_set_gpio_dataout(64, 1);
+ gpio_set_value(64, 1);
}
}
#endif
diff --git a/board/logicpd/zoom2/debug_board.c b/board/logicpd/zoom2/debug_board.c
index a4ddf29..0bb6576 100644
--- a/board/logicpd/zoom2/debug_board.c
+++ b/board/logicpd/zoom2/debug_board.c
@@ -33,14 +33,14 @@ static void zoom2_debug_board_detect (void)
{
int val = 0;
- if (!omap_request_gpio(158)) {
+ if (!gpio_request(158, "")) {
/*
* GPIO to query for debug board
* 158 db board query
*/
- omap_set_gpio_direction(158, 1);
- val = omap_get_gpio_datain(158);
- omap_free_gpio(158);
+ gpio_direction_input(158);
+ val = gpio_get_value(158);
+ gpio_free(158);
}
if (!val)
diff --git a/board/logicpd/zoom2/led.c b/board/logicpd/zoom2/led.c
index 4e14c58..6704152 100644
--- a/board/logicpd/zoom2/led.c
+++ b/board/logicpd/zoom2/led.c
@@ -39,9 +39,9 @@ static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
void red_LED_off (void)
{
/* red */
- if (!omap_request_gpio(ZOOM2_LED_RED)) {
- omap_set_gpio_direction(ZOOM2_LED_RED, 0);
- omap_set_gpio_dataout(ZOOM2_LED_RED, 0);
+ if (!gpio_request(ZOOM2_LED_RED, "")) {
+ gpio_direction_output(ZOOM2_LED_RED);
+ gpio_set_value(ZOOM2_LED_RED, 0);
}
saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
}
@@ -49,15 +49,15 @@ void red_LED_off (void)
void blue_LED_off (void)
{
/* blue */
- if (!omap_request_gpio(ZOOM2_LED_BLUE)) {
- omap_set_gpio_direction(ZOOM2_LED_BLUE, 0);
- omap_set_gpio_dataout(ZOOM2_LED_BLUE, 0);
+ if (!gpio_request(ZOOM2_LED_BLUE, "")) {
+ gpio_direction_output(ZOOM2_LED_BLUE);
+ gpio_set_value(ZOOM2_LED_BLUE, 0);
}
/* blue 2 */
- if (!omap_request_gpio(ZOOM2_LED_BLUE2)) {
- omap_set_gpio_direction(ZOOM2_LED_BLUE2, 0);
- omap_set_gpio_dataout(ZOOM2_LED_BLUE2, 0);
+ if (!gpio_request(ZOOM2_LED_BLUE2, "")) {
+ gpio_direction_output(ZOOM2_LED_BLUE2);
+ gpio_set_value(ZOOM2_LED_BLUE2, 0);
}
saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
}
@@ -67,9 +67,9 @@ void red_LED_on (void)
blue_LED_off ();
/* red */
- if (!omap_request_gpio(ZOOM2_LED_RED)) {
- omap_set_gpio_direction(ZOOM2_LED_RED, 0);
- omap_set_gpio_dataout(ZOOM2_LED_RED, 1);
+ if (!gpio_request(ZOOM2_LED_RED, "")) {
+ gpio_direction_output(ZOOM2_LED_RED);
+ gpio_set_value(ZOOM2_LED_RED, 1);
}
saved_state[STATUS_LED_RED] = STATUS_LED_ON;
}
@@ -79,15 +79,15 @@ void blue_LED_on (void)
red_LED_off ();
/* blue */
- if (!omap_request_gpio(ZOOM2_LED_BLUE)) {
- omap_set_gpio_direction(ZOOM2_LED_BLUE, 0);
- omap_set_gpio_dataout(ZOOM2_LED_BLUE, 1);
+ if (!gpio_request(ZOOM2_LED_BLUE, "")) {
+ gpio_direction_output(ZOOM2_LED_BLUE);
+ gpio_set_value(ZOOM2_LED_BLUE, 1);
}
/* blue 2 */
- if (!omap_request_gpio(ZOOM2_LED_BLUE2)) {
- omap_set_gpio_direction(ZOOM2_LED_BLUE2, 0);
- omap_set_gpio_dataout(ZOOM2_LED_BLUE2, 1);
+ if (!gpio_request(ZOOM2_LED_BLUE2, "")) {
+ gpio_direction_output(ZOOM2_LED_BLUE2);
+ gpio_set_value(ZOOM2_LED_BLUE2, 1);
}
saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
index 76793e4..6cb240b 100644
--- a/board/logicpd/zoom2/zoom2.c
+++ b/board/logicpd/zoom2/zoom2.c
@@ -89,12 +89,12 @@ void zoom2_identify(void)
* and they are not commonly used. They are mentioned here
* only for completeness.
*/
- if (!omap_request_gpio(94)) {
+ if (!gpio_request(94, "")) {
unsigned int val;
- omap_set_gpio_direction(94, 1);
- val = omap_get_gpio_datain(94);
- omap_free_gpio(94);
+ gpio_direction_input(94);
+ val = gpio_get_value(94);
+ gpio_free(94);
if (val)
revision = ZOOM2_REVISION_BETA;
diff --git a/board/overo/overo.c b/board/overo/overo.c
index 4eafdb1..8481791 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -106,21 +106,21 @@ int get_board_revision(void)
{
int revision;
- if (!omap_request_gpio(112) &&
- !omap_request_gpio(113) &&
- !omap_request_gpio(115)) {
+ if (!gpio_request(112, "") &&
+ !gpio_request(113, "") &&
+ !gpio_request(115, "")) {
- omap_set_gpio_direction(112, 1);
- omap_set_gpio_direction(113, 1);
- omap_set_gpio_direction(115, 1);
+ gpio_direction_input(112);
+ gpio_direction_input(113);
+ gpio_direction_input(115);
- revision = omap_get_gpio_datain(115) << 2 |
- omap_get_gpio_datain(113) << 1 |
- omap_get_gpio_datain(112);
+ revision = gpio_get_value(115) << 2 |
+ gpio_get_value(113) << 1 |
+ gpio_get_value(112);
- omap_free_gpio(112);
- omap_free_gpio(113);
- omap_free_gpio(115);
+ gpio_free(112);
+ gpio_free(113);
+ gpio_free(115);
} else {
printf("Error: unable to acquire board revision GPIOs\n");
revision = -1;
@@ -139,21 +139,21 @@ int get_sdio2_config(void)
{
int sdio_direct;
- if (!omap_request_gpio(130) && !omap_request_gpio(139)) {
+ if (!gpio_request(130, "") && !gpio_request(139, "")) {
- omap_set_gpio_direction(130, 0);
- omap_set_gpio_direction(139, 1);
+ gpio_direction_output(130);
+ gpio_direction_input(139);
sdio_direct = 1;
- omap_set_gpio_dataout(130, 0);
- if (omap_get_gpio_datain(139) == 0) {
- omap_set_gpio_dataout(130, 1);
- if (omap_get_gpio_datain(139) == 1)
+ gpio_set_value(130, 0);
+ if (gpio_get_value(139) == 0) {
+ gpio_set_value(130, 1);
+ if (gpio_get_value(139) == 1)
sdio_direct = 0;
}
- omap_free_gpio(130);
- omap_free_gpio(139);
+ gpio_free(130);
+ gpio_free(139);
} else {
printf("Error: unable to acquire sdio2 clk GPIOs\n");
sdio_direct = -1;
@@ -322,13 +322,13 @@ static void setup_net_chip(void)
&ctrl_base->gpmc_nadv_ale);
/* Make GPIO 64 as output pin and send a magic pulse through it */
- if (!omap_request_gpio(64)) {
- omap_set_gpio_direction(64, 0);
- omap_set_gpio_dataout(64, 1);
+ if (!gpio_request(64, "")) {
+ gpio_direction_output(64);
+ gpio_set_value(64, 1);
udelay(1);
- omap_set_gpio_dataout(64, 0);
+ gpio_set_value(64, 0);
udelay(1);
- omap_set_gpio_dataout(64, 1);
+ gpio_set_value(64, 1);
}
}
#endif
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index ab50514..3cf0920 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -115,21 +115,21 @@ int get_board_revision(void)
{
int revision;
- if (!omap_request_gpio(171) &&
- !omap_request_gpio(172) &&
- !omap_request_gpio(173)) {
+ if (!gpio_request(171, "") &&
+ !gpio_request(172, "") &&
+ !gpio_request(173, "")) {
- omap_set_gpio_direction(171, 1);
- omap_set_gpio_direction(172, 1);
- omap_set_gpio_direction(173, 1);
+ gpio_direction_input(171);
+ gpio_direction_input(172);
+ gpio_direction_input(173);
- revision = omap_get_gpio_datain(173) << 2 |
- omap_get_gpio_datain(172) << 1 |
- omap_get_gpio_datain(171);
+ revision = gpio_get_value(173) << 2 |
+ gpio_get_value(172) << 1 |
+ gpio_get_value(171);
- omap_free_gpio(171);
- omap_free_gpio(172);
- omap_free_gpio(173);
+ gpio_free(171);
+ gpio_free(172);
+ gpio_free(173);
} else {
printf("Error: unable to acquire board revision GPIOs\n");
revision = -1;
@@ -344,7 +344,7 @@ int board_mmc_init(bd_t *bis)
int ehci_hcd_stop(void)
{
pr_debug("Resetting OMAP3 EHCI\n");
- omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+ gpio_set_value(GPIO_PHY_RESET, 0);
writel(OMAP_UHH_SYSCONFIG_SOFTRESET, OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
return 0;
}
@@ -366,9 +366,9 @@ int ehci_hcd_init(void)
pr_debug("Initializing OMAP3 ECHI\n");
/* Put the PHY in RESET */
- omap_request_gpio(GPIO_PHY_RESET);
- omap_set_gpio_direction(GPIO_PHY_RESET, 0);
- omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+ gpio_request(GPIO_PHY_RESET, "");
+ gpio_direction_output(GPIO_PHY_RESET);
+ gpio_set_value(GPIO_PHY_RESET, 0);
/* Hold the PHY in RESET for enough time till DIR is high */
/* Refer: ISSUE1 */
@@ -420,7 +420,7 @@ int ehci_hcd_init(void)
* PHY is settled and ready
*/
udelay(10);
- omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+ gpio_set_value(GPIO_PHY_RESET, 1);
hccr = (struct ehci_hccr *)(OMAP3_EHCI_BASE);
hcor = (struct ehci_hcor *)(OMAP3_EHCI_BASE + 0x10);
diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
index 08f95a0..4b24b73 100644
--- a/board/ti/beagle/led.c
+++ b/board/ti/beagle/led.c
@@ -71,18 +71,18 @@ void __led_set (led_id_t mask, int state)
{
#ifdef STATUS_LED_BIT
if (STATUS_LED_BIT & mask) {
- if (!omap_request_gpio(BEAGLE_LED_USR0)) {
- omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
- omap_set_gpio_dataout(BEAGLE_LED_USR0, state);
+ if (!gpio_request(BEAGLE_LED_USR0, "")) {
+ gpio_direction_output(BEAGLE_LED_USR0);
+ gpio_set_value(BEAGLE_LED_USR0, state);
}
saved_state[0] = state;
}
#endif
#ifdef STATUS_LED_BIT1
if (STATUS_LED_BIT1 & mask) {
- if (!omap_request_gpio(BEAGLE_LED_USR1)) {
- omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
- omap_set_gpio_dataout(BEAGLE_LED_USR1, state);
+ if (!gpio_request(BEAGLE_LED_USR1, "")) {
+ gpio_direction_output(BEAGLE_LED_USR1);
+ gpio_set_value(BEAGLE_LED_USR1, state);
}
saved_state[1] = state;
}
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c
index 30c1c57..bb50c10 100644
--- a/board/ti/evm/evm.c
+++ b/board/ti/evm/evm.c
@@ -33,7 +33,7 @@
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
-#include <asm/arch/gpio.h>
+#include <asm/gpio.h>
#include <i2c.h>
#include <asm/mach-types.h>
#include "evm.h"
@@ -195,21 +195,21 @@ static void reset_net_chip(void)
rst_gpio = OMAP3EVM_GPIO_ETH_RST_GEN2;
}
- ret = omap_request_gpio(rst_gpio);
+ ret = gpio_request(rst_gpio, "");
if (ret < 0) {
printf("Unable to get GPIO %d\n", rst_gpio);
return ;
}
/* Configure as output */
- omap_set_gpio_direction(rst_gpio, 0);
+ gpio_direction_output(rst_gpio, 0);
/* Send a pulse on the GPIO pin */
- omap_set_gpio_dataout(rst_gpio, 1);
+ gpio_set_value(rst_gpio, 1);
udelay(1);
- omap_set_gpio_dataout(rst_gpio, 0);
+ gpio_set_value(rst_gpio, 0);
udelay(1);
- omap_set_gpio_dataout(rst_gpio, 1);
+ gpio_set_value(rst_gpio, 1);
}
int board_eth_init(bd_t *bis)
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread* [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API
2011-08-30 19:52 [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API Sanjeev Premi
` (3 preceding siblings ...)
2011-09-01 16:48 ` [U-Boot] [RFC 0/3] omap: gpio: User generic (instead of custom) API Luca Ceresoli
@ 2011-09-02 5:50 ` Premi, Sanjeev
4 siblings, 0 replies; 8+ messages in thread
From: Premi, Sanjeev @ 2011-09-02 5:50 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Premi, Sanjeev
> Sent: Wednesday, August 31, 2011 1:23 AM
> To: u-boot at lists.denx.de
> Cc: Premi, Sanjeev; Paulraj, Sandeep; Igor Grinberg; Luca
> Ceresoli; Enric Balletbo i Serra; Sunil Kumar; Shashi Ranjan;
> Menon, Nishanth; Steve Sakoman
> Subject: [RFC 0/3] omap: gpio: User generic (instead of custom) API
>
> The OMAP boards use a custom api for GPIO operations. While
> it works, it doesn't help when when we don't know existence
> of the customization.
>
> I earlier encountered the problem when looking for GPIO
> related changes when submitting prev set of patches. Since
> the search for gpio_request() in omap sources returned empty,
> I had assumed that it isn't supported.
>
> This patchset attempts to adapt the current implementation
> to use generic API.
>
> Since, the changes impact all OMAP boards, and I wouldn't be
> able to test on all, I decided to submit changes as RFC.
> Unless any major issue is found, I will be able to submit
> as formal patch by end of this week.
>
> Following bash script was used to replace all occurences of
> the custom API with generic equivalent. After the changes, I
> have compile tested the OMAP3EVM only. Will be able to test
> changes only by FRI.
>
> #!/bin/bash
>
> list=search.lst
>
> [ -f ${list} ] && \rm -rf ${list}
>
> grep -l -R "omap_.*_gpio" . > ${list}
>
> sed -i '/\.sh$/d' ${list}
> sed -i '/\.o$/d' ${list}
> sed -i '/\.orig$/d' ${list}
> sed -i '/\.rej$/d' ${list}
> sed -i '/\.git/d' ${list}
> sed -i '/patch/d' ${list}
> sed -i '/diff/d' ${list}
> sed -i '/save/d' ${list}
>
> for f in `cat ${list}` ;
> do
> echo "Fixing $f..."
>
> sed -r -i
> 's/omap_request_gpio\s*\((\w+)\)/gpio_request(\1, "")/g' "$f"
> sed -r -i 's/omap_free_gpio/gpio_free/g' "$f"
> sed -r -i
> 's/omap_set_gpio_direction\s*\((\w+),\s*1\)/gpio_direction_inp
> ut(\1)/g' "$f"
> sed -r -i
> 's/omap_set_gpio_direction\s*\((\w+),\s*0\)/gpio_direction_out
> put(\1)/g' "$f"
> sed -r -i 's/omap_set_gpio_dataout/gpio_set_value/g' "$f"
> sed -r -i 's/omap_get_gpio_datain/gpio_get_value/g' "$f"
> done
>
> Sanjeev Premi (3):
> omap: gpio: Use generic API
> omap: gpio: generic changes after changing API
> omap: gpio: Adapt board files to use generic API
>
> arch/arm/cpu/armv7/omap-common/gpio.c | 74
> +++++++++++++++++++++++---------
> arch/arm/cpu/armv7/omap4/clocks.c | 4 +-
> arch/arm/include/asm/arch-omap3/gpio.h | 19 ++++++++
> arch/arm/include/asm/omap_gpio.h | 13 ------
> board/cm_t35/leds.c | 4 +-
> board/comelit/dig297/dig297.c | 10 ++--
> board/isee/igep0020/igep0020.c | 10 ++--
> board/logicpd/zoom2/debug_board.c | 8 ++--
> board/logicpd/zoom2/led.c | 36 ++++++++--------
> board/logicpd/zoom2/zoom2.c | 8 ++--
> board/overo/overo.c | 52 +++++++++++-----------
> board/ti/beagle/beagle.c | 34 +++++++-------
> board/ti/beagle/led.c | 12 +++---
> board/ti/evm/evm.c | 12 +++---
> doc/README.omap3 | 20 ++++----
> 15 files changed, 177 insertions(+), 139 deletions(-)
> create mode 100644 arch/arm/include/asm/arch-omap3/gpio.h
>
> Cc: Sandeep Paulraj <s-paulraj@ti.com>
> Cc: Igor Grinberg <grinberg@compulab.co.il>
> Cc: Luca Ceresoli <luca.ceresoli@comelit.it>
> Cc: Enric Balletbo i Serra <eballetbo@gmail.com>
> Cc: Sunil Kumar <sunilsaini05@gmail.com>
> Cc: Shashi Ranjan <shashiranjanmca05@gmail.com>
> Cc: Nishanth Menon <nm@ti.com>
> Cc: Steve Sakoman <steve@sakoman.com>
>
>
Tested working on the OMAP3EVM.
[bootlog]
U-Boot 2011.06-00396-gfa7a454 (Sep 02 2011 - 10:36:54)
OMAP3630/3730-GP ES2.1, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
OMAP3 EVM board + LPDDR/NAND
I2C: ready
DRAM: 384 MiB
NAND: 512 MiB
NAND read from offset 260000 failed -74
*** Warning - readenv() failed, using default environment
In: serial
Out: serial
Err: serial
Read back SMSC id 0x92200000
Die ID #374000029ff80000015f02690c020022
Net: smc911x-0Warning: failed to set MAC address
Hit any key to stop autoboot: 0
OMAP3_EVM #
[/bootlog]
I was concerned that 2 failures during boot were due to the changes
in this patch set, but foud that they exist on the mainline as well.
Details:
At this commit, omap3_evm_config fails to build:
commit bd061a5214e60c9d1bb24393933323bd1a2dae19
Merge: 98e99e5 fe0ddff
Author: Wolfgang Denk <wd@denx.de>
Date: Fri Aug 26 15:55:03 2011 +0200
Error is:
make[1]: Entering directory `/home/premi/u-boot/board/ti/evm'
evm.c:36:32: fatal error: asm/arch/omap_gpio.h: No such file or directory
compilation terminated.
This temporary patch patch was required to fix the build issue on the
master branch:
premi # git diff
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c
index 30c1c57..4160cdd 100644
--- a/board/ti/evm/evm.c
+++ b/board/ti/evm/evm.c
@@ -33,7 +33,7 @@
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
-#include <asm/arch/gpio.h>
+#include <asm/omap_gpio.h>
#include <i2c.h>
#include <asm/mach-types.h>
#include "evm.h"
premi # git log
I do have a comment/query regarding this, in 1/1 of my patchset)
[bootlog]
U-Boot 2011.06-00393-gbd061a5-dirty (Sep 02 2011 - 11:03:57)
OMAP3630/3730-GP ES2.1, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
OMAP3 EVM board + LPDDR/NAND
I2C: ready
DRAM: 384 MiB
NAND: 512 MiB
NAND read from offset 260000 failed -74
*** Warning - readenv() failed, using default environment
In: serial
Out: serial
Err: serial
Read back SMSC id 0x92200000
Die ID #374000029ff80000015f02690c020022
Net: smc911x-0Warning: failed to set MAC address
Hit any key to stop autoboot: 0
OMAP3_EVM #
[/bootlog]
~sanjeev
^ permalink raw reply [flat|nested] 8+ messages in thread