s-paul...@ti.com wrote: > From: Sandeep Paulraj <s-paul...@ti.com> > > This patch enables EMAC on the DM365 EVM. > > Signed-off-by: Sandeep Paulraj <s-paul...@ti.com> > --- > Changes since v1 include using a memory map to manipulate GPIO registers. > This was suggested by Wolfgang. > When compiling with this patch DM365 will still give compilation issues as i > have > to send an update to the EMAC driver for DM365. Patch to follow. > board/davinci/dm365evm/dm365evm.c | 43 > +++++++++++++++++++++++++++++++++++++ > 1 files changed, 43 insertions(+), 0 deletions(-) > > diff --git a/board/davinci/dm365evm/dm365evm.c > b/board/davinci/dm365evm/dm365evm.c > index 99392b3..efd4713 100644 > --- a/board/davinci/dm365evm/dm365evm.c > +++ b/board/davinci/dm365evm/dm365evm.c > @@ -17,9 +17,12 @@ > > #include <common.h> > #include <nand.h> > +#include <asm/io.h> > #include <asm/arch/hardware.h> > #include <asm/arch/emif_defs.h> > #include <asm/arch/nand_defs.h> > +#include <asm/arch/gpio_defs.h> > +#include <netdev.h> > #include "../common/misc.h" > > DECLARE_GLOBAL_DATA_PTR; > @@ -32,6 +35,46 @@ int board_init(void) > return 0; > } > > +#ifdef CONFIG_DRIVER_TI_EMAC > +int board_eth_init(bd_t *bis) > +{ > + uint8_t eeprom_enetaddr[6]; > + int i; > + struct davinci_gpio *gpio1_base = > + (struct davinci_gpio *)DAVINCI_GPIO_BANK01; > + > + /* Configure PINMUX 3 to enable EMAC pins */ > + writel((readl(PINMUX3) | 0x1affff), PINMUX3); > + > + /* Configure GPIO20 as output */ > + writel((readl(&gpio1_base->dir) & 0xffefffff), &gpio1_base->dir); > + > + /* Toggle GPIO 20 */ > + for (i = 0; i < 20; i++) { > + /* GPIO 20 low */ > + writel((readl(&gpio1_base->out_data) & 0xffefffff), > + &gpio1_base->out_data); > + > + udelay(1000); > + > + /* GPIO 20 high */ > + writel((readl(&gpio1_base->out_data) | 0x00100000), > + &gpio1_base->out_data); > + }
You may want to convert the constants from 0xffeffff -> ~(1 << 20) 0x0010000 -> (1 << 20) or bit = 20; (1 << bit) Up to you. Fine otherwise. Tom > + > + /* Configure I2C pins so that EEPROM can be read */ > + writel((readl(PINMUX3) | 0x01400000), PINMUX3); > + > + /* Read Ethernet MAC address from EEPROM */ > + if (dvevm_read_mac_address(eeprom_enetaddr)) > + dv_configure_mac_address(eeprom_enetaddr); > + > + davinci_emac_initialize(); > + > + return 0; > +} > +#endif > + > #ifdef CONFIG_NAND_DAVINCI > static void nand_dm365evm_select_chip(struct mtd_info *mtd, int chip) > { _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot