diff mbox

[U-Boot,13/13] Davinci: ea20: use gpio framework to access gpios

Message ID 1317820104-22208-1-git-send-email-sbabic@denx.de
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Stefano Babic Oct. 5, 2011, 1:08 p.m. UTC
Drop direct access to SOC's registers and use
the function of the GPIO driver for da8xx.

Signed-off-by: Stefano Babic <sbabic@denx.de>
CC: Bastian Ruppert <Bastian.Ruppert@Sewerin.de>
CC: dzu@denx.de
CC: Sandeep Paulraj <s-paulraj@ti.com>
---

This is added to an existing patchset

 board/davinci/ea20/ea20.c |   32 +++++++++-----------------------
 include/configs/ea20.h    |    2 ++
 2 files changed, 11 insertions(+), 23 deletions(-)

Comments

Laurence Withers Oct. 5, 2011, 1:14 p.m. UTC | #1
On Wed, Oct 05, 2011 at 03:08:24PM +0200, Stefano Babic wrote:
> Drop direct access to SOC's registers and use
> the function of the GPIO driver for da8xx.

Dear Stefano,

The da8xx GPIO driver also configures the pinmux for you.

Bye for now,
Stefano Babic Oct. 5, 2011, 1:49 p.m. UTC | #2
On 10/05/2011 03:14 PM, Laurence Withers wrote:
> On Wed, Oct 05, 2011 at 03:08:24PM +0200, Stefano Babic wrote:
>> Drop direct access to SOC's registers and use
>> the function of the GPIO driver for da8xx.
> 
> Dear Stefano,
> 
> The da8xx GPIO driver also configures the pinmux for you.
> 
> Bye for now,

That's true, but this was wanted. IMHO is the usage of the functions
gpio_request() and gpio_free() optional.

I decided to program myself the pinmux also for the gpio together with
the setup of the pinmux for the other controllers of the SOC, everything
in the ea20.c file.
this allows to see all code managing the pinmux on this board in one place.

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c
index 720a360..e16c31b 100644
--- a/board/davinci/ea20/ea20.c
+++ b/board/davinci/ea20/ea20.c
@@ -35,7 +35,7 @@ 
 #include <asm/arch/emac_defs.h>
 #include <asm/io.h>
 #include <asm/arch/davinci_misc.h>
-#include <asm/arch/gpio.h>
+#include <asm/gpio.h>
 #include <asm/arch/da8xx-fb.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -182,29 +182,19 @@  int board_early_init_f(void)
 		return 1;
 
 	/* Set the RESETOUTn low */
-	writel((readl(&gpio6_base->set_data) & ~(1 << 15)),
-		&gpio6_base->set_data);
-	writel((readl(&gpio6_base->dir) & ~(1 << 15)), &gpio6_base->dir);
+	gpio_direction_output(111, 0);
 
 	/* Set U0_SW0 low for UART0 as console*/
-	writel((readl(&gpio6_base->set_data) & ~(1 << 10)),
-		&gpio6_base->set_data);
-	writel((readl(&gpio6_base->dir) & ~(1 << 10)), &gpio6_base->dir);
+	gpio_direction_output(106, 0);
 
 	/* Set U0_SW1 low for UART0 as console*/
-	writel((readl(&gpio6_base->set_data) & ~(1 << 12)),
-		&gpio6_base->set_data);
-	writel((readl(&gpio6_base->dir) & ~(1 << 12)), &gpio6_base->dir);
+	gpio_direction_output(108, 0);
 
 	/* Set LCD_B_PWR low to power down LCD Backlight*/
-	writel((readl(&gpio6_base->set_data) & ~(1 << 6)),
-		&gpio6_base->set_data);
-	writel((readl(&gpio6_base->dir) & ~(1 << 6)), &gpio6_base->dir);
+	gpio_direction_output(102, 0);
 
 	/* Set DISP_ON low to disable LCD output*/
-	writel((readl(&gpio6_base->set_data) & ~(1 << 1)),
-		&gpio6_base->set_data);
-	writel((readl(&gpio6_base->dir) & ~(1 << 1)), &gpio6_base->dir);
+	gpio_direction_output(97, 0);
 
 #ifndef CONFIG_USE_IRQ
 	irq_init();
@@ -266,12 +256,10 @@  int board_early_init_f(void)
 	       &davinci_syscfg_regs->mstpri[2]);
 
 	/* Set LCD_B_PWR low to power up LCD Backlight*/
-	writel((readl(&gpio6_base->set_data)  | (1 << 6)),
-		&gpio6_base->set_data);
+	gpio_set_value(102, 1);
 
 	/* Set DISP_ON low to disable LCD output*/
-	writel((readl(&gpio6_base->set_data) | (1 << 1)),
-		&gpio6_base->set_data);
+	gpio_set_value(97, 1);
 
 	return 0;
 }
@@ -301,9 +289,7 @@  int board_late_init(void)
 		return 1;
 
 	/* Set HALTEN to high */
-	writel((readl(&gpio8_base->set_data) | (1 << 6)),
-		&gpio8_base->set_data);
-	writel((readl(&gpio8_base->dir) & ~(1 << 6)), &gpio8_base->dir);
+	gpio_direction_output(134, 1);
 
 	setenv("stdout", "serial");
 
diff --git a/include/configs/ea20.h b/include/configs/ea20.h
index b99c620..d01b605 100644
--- a/include/configs/ea20.h
+++ b/include/configs/ea20.h
@@ -48,6 +48,7 @@ 
 #define CONFIG_SYS_HZ			1000
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #define CONFIG_SYS_TEXT_BASE		0xc1080000
+#define CONFIG_DA8XX_GPIO
 
 /*
  * Memory Info
@@ -169,6 +170,7 @@ 
 #define CONFIG_CMD_SAVES
 #define CONFIG_CMD_MEMORY
 #define CONFIG_CMD_I2C
+#define CONFIG_CMD_GPIO
 
 #ifndef CONFIG_DRIVER_TI_EMAC
 #undef CONFIG_CMD_NET