* [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM
@ 2009-09-29 13:47 s-paulraj at ti.com
2009-09-29 13:53 ` Tom
2009-09-29 17:05 ` Ben Warren
0 siblings, 2 replies; 4+ messages in thread
From: s-paulraj at ti.com @ 2009-09-29 13:47 UTC (permalink / raw)
To: u-boot
From: Sandeep Paulraj <s-paulraj@ti.com>
This patch enables EMAC on the DM365 EVM.
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
---
Changes since v1: Using a memory map to manipulate GPIO registers.
This was suggested by Wolfgang.
Changes since v2: Improve Bit handling.
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..5b97060 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) & ~(1 << 20)), &gpio1_base->dir);
+
+ /* Toggle GPIO 20 */
+ for (i = 0; i < 20; i++) {
+ /* GPIO 20 low */
+ writel((readl(&gpio1_base->out_data) & ~(1 << 20)),
+ &gpio1_base->out_data);
+
+ udelay(1000);
+
+ /* GPIO 20 high */
+ writel((readl(&gpio1_base->out_data) | (1 << 20)),
+ &gpio1_base->out_data);
+ }
+
+ /* 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)
{
--
1.6.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM
2009-09-29 13:47 [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM s-paulraj at ti.com
@ 2009-09-29 13:53 ` Tom
2009-09-29 17:05 ` Ben Warren
1 sibling, 0 replies; 4+ messages in thread
From: Tom @ 2009-09-29 13:53 UTC (permalink / raw)
To: u-boot
s-paulraj at ti.com wrote:
> From: Sandeep Paulraj <s-paulraj@ti.com>
>
> This patch enables EMAC on the DM365 EVM.
>
> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
> ---
> Changes since v1: Using a memory map to manipulate GPIO registers.
> This was suggested by Wolfgang.
>
> Changes since v2: Improve Bit handling.
>
> 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..5b97060 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) & ~(1 << 20)), &gpio1_base->dir);
> +
> + /* Toggle GPIO 20 */
> + for (i = 0; i < 20; i++) {
> + /* GPIO 20 low */
> + writel((readl(&gpio1_base->out_data) & ~(1 << 20)),
> + &gpio1_base->out_data);
> +
> + udelay(1000);
> +
> + /* GPIO 20 high */
> + writel((readl(&gpio1_base->out_data) | (1 << 20)),
> + &gpio1_base->out_data);
> + }
> +
> + /* 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)
> {
Ack
Tom
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM
2009-09-29 13:47 [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM s-paulraj at ti.com
2009-09-29 13:53 ` Tom
@ 2009-09-29 17:05 ` Ben Warren
2009-09-29 17:39 ` Paulraj, Sandeep
1 sibling, 1 reply; 4+ messages in thread
From: Ben Warren @ 2009-09-29 17:05 UTC (permalink / raw)
To: u-boot
Hi Sandeep,
s-paulraj at ti.com wrote:
> From: Sandeep Paulraj <s-paulraj@ti.com>
>
> This patch enables EMAC on the DM365 EVM.
>
> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
> ---
>
<snip>
> + /* Read Ethernet MAC address from EEPROM */
> + if (dvevm_read_mac_address(eeprom_enetaddr))
> + dv_configure_mac_address(eeprom_enetaddr);
> +
>
You should get rid of this function (dv_configure_mac_address), as it
duplicates logic already present in net/eth.c, albeit in a different
order. Mike Frysinger has invested a lot of effort in cleaning this up
(and documenting it too). The correct behavior is as follows:
1. davinci_emac_initialize() should read programmed MAC address from ROM
and stuff it into dev->enetaddr
2. eth_initialize() (in net/eth.c) reads from the environment and
compares to the value in dev->enetaddr, warning on mismatch.
> + davinci_emac_initialize();
> +
> + return 0;
> +}
> +#endif
> +
> #ifdef CONFIG_NAND_DAVINCI
> static void nand_dm365evm_select_chip(struct mtd_info *mtd, int chip)
> {
>
regards,
Ben
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM
2009-09-29 17:05 ` Ben Warren
@ 2009-09-29 17:39 ` Paulraj, Sandeep
0 siblings, 0 replies; 4+ messages in thread
From: Paulraj, Sandeep @ 2009-09-29 17:39 UTC (permalink / raw)
To: u-boot
>
> Hi Sandeep,
>
> s-paulraj at ti.com wrote:
> > From: Sandeep Paulraj <s-paulraj@ti.com>
> >
> > This patch enables EMAC on the DM365 EVM.
> >
> > Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
> > ---
> >
> <snip>
> > + /* Read Ethernet MAC address from EEPROM */
> > + if (dvevm_read_mac_address(eeprom_enetaddr))
> > + dv_configure_mac_address(eeprom_enetaddr);
> > +
> >
> You should get rid of this function (dv_configure_mac_address), as it
> duplicates logic already present in net/eth.c, albeit in a different
> order. Mike Frysinger has invested a lot of effort in cleaning this up
> (and documenting it too). The correct behavior is as follows:
>
> 1. davinci_emac_initialize() should read programmed MAC address from ROM
> and stuff it into dev->enetaddr
> 2. eth_initialize() (in net/eth.c) reads from the environment and
> compares to the value in dev->enetaddr, warning on mismatch.
I will take a look at this as I have not followed this discussion.
I know that the NET_MULTI updates broke DM9000 and EMAC on DaVinci SOC s which I fixed
I will post follow up patches after studying Mike updates.
Getting rid of this as you suggest involves multiple boards so I have to test as well.
And besides I have to clean up the davinci EMAC driver as well because there are other DaVinci SOCs which will use that driver albeit with some updates.
Updates for DaVinci EMAC are going to be sent soon. The header for this patch also says that.
> > + davinci_emac_initialize();
> > +
> > + return 0;
> > +}
> > +#endif
> > +
> > #ifdef CONFIG_NAND_DAVINCI
> > static void nand_dm365evm_select_chip(struct mtd_info *mtd, int chip)
> > {
> >
> regards,
> Ben
Thanks,
Sandeep
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-09-29 17:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-29 13:47 [U-Boot] [PATCH v3] TI: DaVinci DM365: Enabling network Support on DM365 EVM s-paulraj at ti.com
2009-09-29 13:53 ` Tom
2009-09-29 17:05 ` Ben Warren
2009-09-29 17:39 ` Paulraj, Sandeep
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox