diff --git a/arch/arm/cpu/armv7/omap-common/gpio.c b/arch/arm/cpu/armv7/omap-common/gpio.c
index e62c6f4eb59bb41b4f9c609f60290d390d1abafd..75a02da877d9bb367c1c3d1afc418a66acb00260 100644
--- a/arch/arm/cpu/armv7/omap-common/gpio.c
+++ b/arch/arm/cpu/armv7/omap-common/gpio.c
@@ -237,11 +237,4 @@ int gpio_request(int gpio, const char *label)
  */
 void gpio_free(unsigned gpio)
 {
-	const struct gpio_bank *bank;
-
-	if (check_gpio(gpio) < 0)
-		return;
-	bank = get_gpio_bank(gpio);
-
-	_set_gpio_direction(bank, get_gpio_index(gpio), 1);
 }
diff --git a/board/logicpd/zoom2/debug_board.c b/board/logicpd/zoom2/debug_board.c
index 33aa6001bc6b9d33c1beeba0f75c1d92150229f8..071e7f98e2238c1c721a6b194eae8ee20da2502d 100644
--- a/board/logicpd/zoom2/debug_board.c
+++ b/board/logicpd/zoom2/debug_board.c
@@ -40,7 +40,6 @@ static void zoom2_debug_board_detect (void)
 		 */
 		gpio_direction_input(158);
 		val = gpio_get_value(158);
-		gpio_free(158);
 	}
 
 	if (!val)
diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
index 21964c24055420680ea6a509af9431be0b91f8ce..be3083d9c339f52de0399d7eb0518bc89e7f1b18 100644
--- a/board/logicpd/zoom2/zoom2.c
+++ b/board/logicpd/zoom2/zoom2.c
@@ -95,7 +95,6 @@ void zoom2_identify(void)
 
 		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 2f9eba6383ee019b34c2be6983d50854d4833e36..3c60b06ae75e25b27b6c34df7073eac5e4bd6d85 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -118,10 +118,6 @@ int get_board_revision(void)
 		revision = gpio_get_value(115) << 2 |
 			   gpio_get_value(113) << 1 |
 			   gpio_get_value(112);
-
-		gpio_free(112);
-		gpio_free(113);
-		gpio_free(115);
 	} else {
 		printf("Error: unable to acquire board revision GPIOs\n");
 		revision = -1;
@@ -153,8 +149,7 @@ int get_sdio2_config(void)
 				sdio_direct = 0;
 		}
 
-		gpio_free(130);
-		gpio_free(139);
+		gpio_direction_input(130);
 	} else {
 		printf("Error: unable to acquire sdio2 clk GPIOs\n");
 		sdio_direct = -1;
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index aa5047c669755eb60c78ebcf643d3fbc48493a19..9482c5eac74d7d7622b95b14875f6368475fde55 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -127,10 +127,6 @@ int get_board_revision(void)
 		revision = gpio_get_value(173) << 2 |
 			   gpio_get_value(172) << 1 |
 			   gpio_get_value(171);
-
-		gpio_free(171);
-		gpio_free(172);
-		gpio_free(173);
 	} else {
 		printf("Error: unable to acquire board revision GPIOs\n");
 		revision = -1;
@@ -522,8 +518,6 @@ int do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 		printf("NOT pressed.\n");
 	}
 
-	gpio_free(gpio);
-
 	return !button;
 }