[U-Boot] [PATCHv2] omap3evm: Update ethernet reset sequence for Rev.G board
Sanjeev Premi
premi at ti.com
Mon Jun 27 17:55:45 CEST 2011
From: Sriramakrishnan <srk at ti.com>
The GPIO pin used for resetting the external LAN chip has
changed for Rev.G board.
The patch uses generic gpio API instead of direct access
to corresponding registers.
Signed-off-by: Sriramakrishnan <srk at ti.com>
Signed-off-by: Sanjeev Premi <premi at ti.com>
---
Changes since v1:
* Use of gpio API instead of direct register access.
Tested basic ethernet operations - dhcp and tftpboot - on the
OMAP3EVM Rev G to load kernel and ramdisk images.
board/ti/evm/evm.c | 35 ++++++++++++++++++++++++++---------
1 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c
index 8f9f141..2c95fae 100644
--- a/board/ti/evm/evm.c
+++ b/board/ti/evm/evm.c
@@ -33,10 +33,14 @@
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
+#include <asm/arch/gpio.h>
#include <i2c.h>
#include <asm/mach-types.h>
#include "evm.h"
+#define OMAP3EVM_GPIO_ETH_RST_GEN1 64
+#define OMAP3EVM_GPIO_ETH_RST_GEN2 7
+
DECLARE_GLOBAL_DATA_PTR;
static u32 omap3_evm_version;
@@ -181,17 +185,30 @@ static void setup_net_chip(void)
*/
static void reset_net_chip(void)
{
- struct gpio *gpio3_base = (struct gpio *)OMAP34XX_GPIO3_BASE;
-
- /* Make GPIO 64 as output pin */
- writel(readl(&gpio3_base->oe) & ~(GPIO0), &gpio3_base->oe);
-
- /* Now send a pulse on the GPIO pin */
- writel(GPIO0, &gpio3_base->setdataout);
+ int ret;
+ int rst_gpio;
+
+ if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) {
+ rst_gpio = OMAP3EVM_GPIO_ETH_RST_GEN1;
+ } else {
+ rst_gpio = OMAP3EVM_GPIO_ETH_RST_GEN2;
+ }
+
+ ret = omap_request_gpio(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);
+
+ /* Send a pulse on the GPIO pin */
+ omap_set_gpio_dataout(rst_gpio, 1);
udelay(1);
- writel(GPIO0, &gpio3_base->cleardataout);
+ omap_set_gpio_dataout(rst_gpio, 0);
udelay(1);
- writel(GPIO0, &gpio3_base->setdataout);
+ omap_set_gpio_dataout(rst_gpio, 1);
}
int board_eth_init(bd_t *bis)
--
1.7.2.2
More information about the U-Boot
mailing list