diff mbox

[U-Boot,6/8] AM35xx: add EMAC support

Message ID 1318540312-24777-7-git-send-email-yanok@emcraft.com
State Changes Requested
Headers show

Commit Message

Ilya Yanok Oct. 13, 2011, 9:11 p.m. UTC
AM35xx has DaVinci-compatible EMAC.

Signed-off-by: Ilya Yanok <yanok@emcraft.com>
---
 arch/arm/cpu/armv7/omap3/Makefile           |    1 +
 arch/arm/cpu/armv7/omap3/emac.c             |   37 ++++++++++++++++++
 arch/arm/include/asm/arch-omap3/emac_defs.h |   56 +++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/omap3/emac.c
 create mode 100644 arch/arm/include/asm/arch-omap3/emac_defs.h

Comments

Mike Frysinger Oct. 13, 2011, 10:55 p.m. UTC | #1
On Thursday 13 October 2011 17:11:50 Ilya Yanok wrote:
> --- /dev/null
> +++ b/arch/arm/cpu/armv7/omap3/emac.c
>
> +/*
> + * Initializes on-chip ethernet controllers.
> + * to override, implement board_eth_init()
> + */
> +int cpu_eth_init(bd_t *bis)
> +{
> +	davinci_emac_initialize();
> +
> +	return 0;
> +}

shouldn't emac support always be up to the board porter and not the SoC code ?  
also, this should be:
int cpu_eth_init(bd_t *bis)
{
	return davinci_emac_initialize();
}
-mike
Ilya Yanok Oct. 14, 2011, 7:51 a.m. UTC | #2
Hi Mike,

On 14.10.2011 02:55, Mike Frysinger wrote:
>> --- /dev/null
>> +++ b/arch/arm/cpu/armv7/omap3/emac.c
>>
>> +/*
>> + * Initializes on-chip ethernet controllers.
>> + * to override, implement board_eth_init()
>> + */
>> +int cpu_eth_init(bd_t *bis)
>> +{
>> +	davinci_emac_initialize();
>> +
>> +	return 0;
>> +}
> 
> shouldn't emac support always be up to the board porter and not the SoC code ?  

It's up to the board porter to define CONFIG_DRIVER_TI_EMAC (or not),
isn't it enough?

> also, this should be:
> int cpu_eth_init(bd_t *bis)
> {
> 	return davinci_emac_initialize();
> }

Agreed.

Regards, Ilya.
Igor Grinberg Oct. 16, 2011, 8:11 a.m. UTC | #3
On 10/14/11 09:51, Ilya Yanok wrote:
> Hi Mike,
> 
> On 14.10.2011 02:55, Mike Frysinger wrote:
>>> --- /dev/null
>>> +++ b/arch/arm/cpu/armv7/omap3/emac.c
>>>
>>> +/*
>>> + * Initializes on-chip ethernet controllers.
>>> + * to override, implement board_eth_init()
>>> + */
>>> +int cpu_eth_init(bd_t *bis)
>>> +{
>>> +	davinci_emac_initialize();
>>> +
>>> +	return 0;
>>> +}
>>
>> shouldn't emac support always be up to the board porter and not the SoC code ?  
> 
> It's up to the board porter to define CONFIG_DRIVER_TI_EMAC (or not),
> isn't it enough?

Yes, it should be enough, especially in case of EMAC on Davinci and AM35x,
when this IP block is always present inside the SoC.

> 
>> also, this should be:
>> int cpu_eth_init(bd_t *bis)
>> {
>> 	return davinci_emac_initialize();
>> }
> 
> Agreed.
> 
> Regards, Ilya.
> 
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/omap3/Makefile b/arch/arm/cpu/armv7/omap3/Makefile
index 8e85891..6ebfd32 100644
--- a/arch/arm/cpu/armv7/omap3/Makefile
+++ b/arch/arm/cpu/armv7/omap3/Makefile
@@ -32,6 +32,7 @@  COBJS	+= clock.o
 COBJS	+= mem.o
 COBJS	+= sys_info.o
 
+COBJS-$(CONFIG_DRIVER_TI_EMAC)	+= emac.o
 COBJS-$(CONFIG_EMIF4)	+= emif4.o
 COBJS-$(CONFIG_SDRC)	+= sdrc.o
 
diff --git a/arch/arm/cpu/armv7/omap3/emac.c b/arch/arm/cpu/armv7/omap3/emac.c
new file mode 100644
index 0000000..71b4424
--- /dev/null
+++ b/arch/arm/cpu/armv7/omap3/emac.c
@@ -0,0 +1,37 @@ 
+/*
+ *
+ * DaVinci EMAC initialization.
+ *
+ * (C) Copyright 2011, Ilya Yanok, Emcraft Systems
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc.
+ */
+
+#include <common.h>
+#include <netdev.h>
+
+/*
+ * Initializes on-chip ethernet controllers.
+ * to override, implement board_eth_init()
+ */
+int cpu_eth_init(bd_t *bis)
+{
+	davinci_emac_initialize();
+
+	return 0;
+}
diff --git a/arch/arm/include/asm/arch-omap3/emac_defs.h b/arch/arm/include/asm/arch-omap3/emac_defs.h
new file mode 100644
index 0000000..8506c55
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap3/emac_defs.h
@@ -0,0 +1,56 @@ 
+/*
+ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
+ *
+ * Based on:
+ *
+ * ----------------------------------------------------------------------------
+ *
+ * dm644x_emac.h
+ *
+ * TI DaVinci (DM644X) EMAC peripheral driver header for DV-EVM
+ *
+ * Copyright (C) 2005 Texas Instruments.
+ *
+ * ----------------------------------------------------------------------------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * ----------------------------------------------------------------------------
+
+ * Modifications:
+ * ver. 1.0: Sep 2005, TI PSP Team - Created EMAC version for uBoot.
+ *
+ */
+
+#ifndef _AM3517_EMAC_H_
+#define _AM3517_EMAC_H_
+
+#define EMAC_BASE_ADDR                 0x5C010000
+#define EMAC_WRAPPER_BASE_ADDR         0x5C000000
+#define EMAC_WRAPPER_RAM_ADDR          0x5C020000
+#define EMAC_MDIO_BASE_ADDR            0x5C030000
+#define EMAC_HW_RAM_ADDR               0x01E20000
+
+#define EMAC_MDIO_BUS_FREQ             166000000       /* 166 MHZ check */
+#define EMAC_MDIO_CLOCK_FREQ           1000000         /* 2.0 MHz */
+
+/* SOFTRESET macro definition interferes with emac_regs structure definition */
+#undef SOFTRESET
+
+typedef volatile unsigned int	dv_reg;
+typedef volatile unsigned int	*dv_reg_p;
+
+#define DAVINCI_EMAC_VERSION2
+
+#endif  /* _AM3517_EMAC_H_ */