From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Date: Tue, 29 Sep 2009 07:39:45 -0500 Subject: [U-Boot] [PATCH v2] TI: DaVinci DM365: Enabling network Support on DM365 EVM In-Reply-To: <1254188617-7666-1-git-send-email-s-paulraj@ti.com> References: <1254188617-7666-1-git-send-email-s-paulraj@ti.com> Message-ID: <4AC20011.3070409@windriver.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de s-paulraj at ti.com wrote: > From: Sandeep Paulraj > > This patch enables EMAC on the DM365 EVM. > > Signed-off-by: Sandeep Paulraj > --- > 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 > #include > +#include > #include > #include > #include > +#include > +#include > #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) > {