diff mbox

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

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

Commit Message

Otavio Salvador Jan. 28, 2013, 8:01 p.m. UTC
This adds support to the LAN9212 chip included in the board and extend
the environment to easy netboot use.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
Changes in v2:
- Move GPIO initialization to board_early_init_f;
- Extend commitlog;

 board/olimex/mx23_olinuxino/mx23_olinuxino.c |  6 +++++
 board/olimex/mx23_olinuxino/spl_boot.c       |  4 +++
 include/configs/mx23_olinuxino.h             | 40 +++++++++++++++++++++++++---
 3 files changed, 47 insertions(+), 3 deletions(-)

Comments

Marek Vasut Jan. 28, 2013, 7:59 p.m. UTC | #1
Dear Otavio Salvador,
[...]

> 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),

PULLUP/NOPULL missing

>  };
> 
>  void board_init_ll(void)

[...]

> @@ -175,6 +183,7 @@
>  /*
>   * Extra Environments
>   */
> +

Spurious newline

>  #define CONFIG_EXTRA_ENV_SETTINGS \
>  	"update_sd_firmware_filename=u-boot.sd\0" \
>  	"update_sd_firmware="		/* Update the SD firmware partition */ \
> @@ -191,6 +200,7 @@
>  	"fdt_file=imx23-olinuxino.dtb\0" \
>  	"fdt_addr=0x41000000\0" \
>  	"boot_fdt=try\0" \
> +	"ip_dyn=yes\0" \
>  	"mmcdev=0\0" \
>  	"mmcpart=2\0" \
>  	"mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
> @@ -216,6 +226,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 +260,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__ */

Best regards,
Marek Vasut
Fabio Estevam Jan. 28, 2013, 8:12 p.m. UTC | #2
On Mon, Jan 28, 2013 at 6:01 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:
> This adds support to the LAN9212 chip included in the board and extend

My schematics says it is a LAN9512.

> +#ifdef CONFIG_USB_EHCI
> +       /* Enable LAN9512 */
> +       gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
> +#endif

You would better use #ifdef	CONFIG_CMD_USB instead, like we do on mx28evk.

This would make things easier for someone that wants to test the board
without USB support, by just undefing CONFIG_CMD_USB, which in turn
remove all USB related support.
Otavio Salvador Jan. 28, 2013, 8:15 p.m. UTC | #3
On Mon, Jan 28, 2013 at 6:12 PM, Fabio Estevam <festevam@gmail.com> wrote:
> On Mon, Jan 28, 2013 at 6:01 PM, Otavio Salvador
> <otavio@ossystems.com.br> wrote:
>> This adds support to the LAN9212 chip included in the board and extend

> My schematics says it is a LAN9512.

Right; a typo!

>> +#ifdef CONFIG_USB_EHCI
>> +       /* Enable LAN9512 */
>> +       gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
>> +#endif
>
> You would better use #ifdef     CONFIG_CMD_USB instead, like we do on mx28evk.
>
> This would make things easier for someone that wants to test the board
> without USB support, by just undefing CONFIG_CMD_USB, which in turn
> remove all USB related support.

Done; v3 being rolling out ... :)

--
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..b2090b2 100644
--- a/board/olimex/mx23_olinuxino/mx23_olinuxino.c
+++ b/board/olimex/mx23_olinuxino/mx23_olinuxino.c
@@ -45,6 +45,11 @@  int board_early_init_f(void)
 	/* SSP0 clock at 96MHz */
 	mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
 
+#ifdef CONFIG_USB_EHCI
+	/* Enable LAN9512 */
+	gpio_direction_output(MX23_PAD_GPMI_ALE__GPIO_0_17, 1);
+#endif
+
 	return 0;
 }
 
@@ -53,6 +58,7 @@  int dram_init(void)
 	return mxs_dram_init();
 }
 
+
 #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..2c81fb6 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,7 @@ 
 	"fdt_file=imx23-olinuxino.dtb\0" \
 	"fdt_addr=0x41000000\0" \
 	"boot_fdt=try\0" \
+	"ip_dyn=yes\0" \
 	"mmcdev=0\0" \
 	"mmcpart=2\0" \
 	"mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
@@ -216,6 +226,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 +260,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__ */