diff mbox

[U-Boot,4/4] mx23_olinuxino: Add ethernet support

Message ID 1359400440-12916-4-git-send-email-otavio@ossystems.com.br
State Not Applicable
Headers show

Commit Message

Otavio Salvador Jan. 28, 2013, 7:14 p.m. UTC
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
 board/olimex/mx23_olinuxino/mx23_olinuxino.c |  8 ++++++
 board/olimex/mx23_olinuxino/spl_boot.c       |  4 +++
 include/configs/mx23_olinuxino.h             | 41 ++++++++++++++++++++++++++--
 3 files changed, 50 insertions(+), 3 deletions(-)

Comments

Fabio Estevam Jan. 28, 2013, 7:12 p.m. UTC | #1
On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:

> +       "ip_dyn=yes\0" \
> +       "usbethaddr=00:11:22:33:44:55\0" \

You should not hardcode a MAC address.
Otavio Salvador Jan. 28, 2013, 7:13 p.m. UTC | #2
On Mon, Jan 28, 2013 at 5:12 PM, Fabio Estevam <festevam@gmail.com> wrote:
> On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
> <otavio@ossystems.com.br> wrote:
>
>> +       "ip_dyn=yes\0" \
>> +       "usbethaddr=00:11:22:33:44:55\0" \
>
> You should not hardcode a MAC address.

It does not provide one.

--
Otavio Salvador                             O.S. Systems
E-mail: otavio@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br
Marek Vasut Jan. 28, 2013, 7:16 p.m. UTC | #3
Dear Otavio Salvador,

And again ... NAK

Anyway, will the hub function properly if you toggle the GPIO in board_eth_init? 
I dont think so.

[..]

Best regards,
Marek Vasut
Marek Vasut Jan. 28, 2013, 7:17 p.m. UTC | #4
Dear Otavio Salvador,

> On Mon, Jan 28, 2013 at 5:12 PM, Fabio Estevam <festevam@gmail.com> wrote:
> > On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
> > 
> > <otavio@ossystems.com.br> wrote:
> >> +       "ip_dyn=yes\0" \
> >> +       "usbethaddr=00:11:22:33:44:55\0" \
> > 
> > You should not hardcode a MAC address.
> 
> It does not provide one.

Your dongle? Then leave that up to user. Besides, there's a tool in tools/ for 
generating a random MAC.

Best regards,
Marek Vasut
Fabio Estevam Jan. 28, 2013, 7:21 p.m. UTC | #5
On Mon, Jan 28, 2013 at 5:13 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:

>> You should not hardcode a MAC address.
>
> It does not provide one.

Right, but you can not force all olinuxino boards to have the same MAC
address, so just remove the MAC setting and each one can set its own.

Also, please read:
http://www.denx.de/wiki/view/DULG/WhereCanIGetAValidMACAddresshttp://www.denx.de/wiki/view/DULG/WhereCanIGetAValidMACAddress
Fabio Estevam Jan. 28, 2013, 7:48 p.m. UTC | #6
On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:

> +#ifdef CONFIG_CMD_NET
> +int board_eth_init(bd_t *bis)
> +{
> +       /* Power-on Ethernet */
> +       gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
> +}
> +#endif

This function expects to return an integer, and there is no return value here.

Also, maybe you could set the GPIO inside board_early_init_f() like we
do on mx28.
Marek Vasut Jan. 28, 2013, 7:56 p.m. UTC | #7
Dear Fabio Estevam,

> On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
> 
> <otavio@ossystems.com.br> wrote:
> > +#ifdef CONFIG_CMD_NET
> > +int board_eth_init(bd_t *bis)
> > +{
> > +       /* Power-on Ethernet */
> > +       gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
> > +}
> > +#endif
> 
> This function expects to return an integer, and there is no return value
> here.
> 
> Also, maybe you could set the GPIO inside board_early_init_f() like we
> do on mx28.

How come it didn't emit an error?

Best regards,
Marek Vasut
Otavio Salvador Jan. 28, 2013, 8:03 p.m. UTC | #8
On Mon, Jan 28, 2013 at 5:56 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Fabio Estevam,
>
>> On Mon, Jan 28, 2013 at 5:14 PM, Otavio Salvador
>>
>> <otavio@ossystems.com.br> wrote:
>> > +#ifdef CONFIG_CMD_NET
>> > +int board_eth_init(bd_t *bis)
>> > +{
>> > +       /* Power-on Ethernet */
>> > +       gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
>> > +}
>> > +#endif
>>
>> This function expects to return an integer, and there is no return value
>> here.
>>
>> Also, maybe you could set the GPIO inside board_early_init_f() like we
>> do on mx28.
>
> How come it didn't emit an error?

It works; I tested it and sent the new patch version with it.

--
Otavio Salvador                             O.S. Systems
E-mail: otavio@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br
diff mbox

Patch

diff --git a/board/olimex/mx23_olinuxino/mx23_olinuxino.c b/board/olimex/mx23_olinuxino/mx23_olinuxino.c
index 2501417..6077d70 100644
--- a/board/olimex/mx23_olinuxino/mx23_olinuxino.c
+++ b/board/olimex/mx23_olinuxino/mx23_olinuxino.c
@@ -53,6 +53,14 @@  int dram_init(void)
 	return mxs_dram_init();
 }
 
+#ifdef CONFIG_CMD_NET
+int board_eth_init(bd_t *bis)
+{
+	/* Power-on Ethernet */
+	gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
+}
+#endif
+
 #ifdef	CONFIG_CMD_MMC
 static int mx23_olx_mmc_cd(int id)
 {
diff --git a/board/olimex/mx23_olinuxino/spl_boot.c b/board/olimex/mx23_olinuxino/spl_boot.c
index 3bbf5ad..8f7ba0b 100644
--- a/board/olimex/mx23_olinuxino/spl_boot.c
+++ b/board/olimex/mx23_olinuxino/spl_boot.c
@@ -95,6 +95,10 @@  const iomux_cfg_t iomux_setup[] = {
 	MX23_PAD_SSP1_DATA2__SSP1_DATA2 | MUX_CONFIG_SSP,
 	MX23_PAD_SSP1_DATA3__SSP1_DATA3 | MUX_CONFIG_SSP,
 	MX23_PAD_SSP1_SCK__SSP1_SCK | MUX_CONFIG_SSP,
+
+	/* Ethernet */
+	MX23_PAD_GPMI_ALE__GPIO_0_17 |
+		(MXS_PAD_12MA | MXS_PAD_3V3),
 };
 
 void board_init_ll(void)
diff --git a/include/configs/mx23_olinuxino.h b/include/configs/mx23_olinuxino.h
index e081c49..9adbb9c 100644
--- a/include/configs/mx23_olinuxino.h
+++ b/include/configs/mx23_olinuxino.h
@@ -55,11 +55,13 @@ 
 #define	CONFIG_DOS_PARTITION
 
 #define	CONFIG_CMD_CACHE
+#define	CONFIG_CMD_DHCP
 #define	CONFIG_CMD_EXT2
 #define	CONFIG_CMD_FAT
 #define	CONFIG_CMD_GPIO
 #define	CONFIG_CMD_LED
 #define	CONFIG_CMD_MMC
+#define	CONFIG_CMD_NET
 #define	CONFIG_CMD_USB
 
 /*
@@ -150,6 +152,12 @@ 
 #define	CONFIG_USB_STORAGE
 #endif
 
+/* Ethernet */
+#ifdef	CONFIG_CMD_NET
+#define	CONFIG_USB_HOST_ETHER
+#define	CONFIG_USB_ETHER_SMSC95XX
+#endif
+
 /*
  * Boot Linux
  */
@@ -175,6 +183,7 @@ 
 /*
  * Extra Environments
  */
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"update_sd_firmware_filename=u-boot.sd\0" \
 	"update_sd_firmware="		/* Update the SD firmware partition */ \
@@ -191,6 +200,8 @@ 
 	"fdt_file=imx23-olinuxino.dtb\0" \
 	"fdt_addr=0x41000000\0" \
 	"boot_fdt=try\0" \
+	"ip_dyn=yes\0" \
+	"usbethaddr=00:11:22:33:44:55\0" \
 	"mmcdev=0\0" \
 	"mmcpart=2\0" \
 	"mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
@@ -216,6 +227,31 @@ 
 			"fi; " \
 		"else " \
 			"bootm; " \
+		"fi;\0" \
+	"netargs=setenv bootargs console=${console_mainline},${baudrate} " \
+		"root=/dev/nfs " \
+		"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+	"netboot=echo Booting from net ...; " \
+		"usb start; " \
+		"run netargs; "	\
+		"if test ${ip_dyn} = yes; then " \
+			"setenv get_cmd dhcp; " \
+		"else " \
+			"setenv get_cmd tftp; " \
+		"fi; " \
+		"${get_cmd} ${uimage}; " \
+		"if test ${boot_fdt} = yes; then " \
+			"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+				"bootm ${loadaddr} - ${fdt_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootm; " \
+				"else " \
+					"echo WARN: Cannot load the DT; " \
+				"fi;" \
+			"fi; " \
+		"else " \
+			"bootm; " \
 		"fi;\0"
 
 #define CONFIG_BOOTCOMMAND \
@@ -225,10 +261,9 @@ 
 		"else " \
 			"if run loaduimage; then " \
 				"run mmcboot; " \
-			"else " \
-				"echo ERR: Fail to boot from MMC; " \
+			"else run netboot; " \
 			"fi; " \
 		"fi; " \
-	"else exit; fi"
+	"else run netboot; fi"
 
 #endif /* __MX23_OLINUXINO_CONFIG_H__ */