diff options
Diffstat (limited to 'common/spl')
| -rw-r--r-- | common/spl/Makefile | 1 | ||||
| -rw-r--r-- | common/spl/spl.c | 9 | ||||
| -rw-r--r-- | common/spl/spl_net.c | 52 | 
3 files changed, 62 insertions, 0 deletions
| diff --git a/common/spl/Makefile b/common/spl/Makefile index 7cf01ad72..5698a2335 100644 --- a/common/spl/Makefile +++ b/common/spl/Makefile @@ -18,6 +18,7 @@ COBJS-$(CONFIG_SPL_FRAMEWORK) += spl.o  COBJS-$(CONFIG_SPL_NOR_SUPPORT) += spl_nor.o  COBJS-$(CONFIG_SPL_YMODEM_SUPPORT) += spl_ymodem.o  COBJS-$(CONFIG_SPL_NAND_SUPPORT) += spl_nand.o +COBJS-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o  endif  COBJS	:= $(sort $(COBJS-y)) diff --git a/common/spl/spl.c b/common/spl/spl.c index 29cbb9335..40a7acaea 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -196,6 +196,15 @@ void board_init_r(gd_t *dummy1, ulong dummy2)  		spl_spi_load_image();  		break;  #endif +#ifdef CONFIG_SPL_ETH_SUPPORT +	case BOOT_DEVICE_CPGMAC: +#ifdef CONFIG_SPL_ETH_DEVICE +		spl_net_load_image(CONFIG_SPL_ETH_DEVICE); +#else +		spl_net_load_image(NULL); +#endif +		break; +#endif  	default:  		debug("SPL: Un-supported Boot Device\n");  		hang(); diff --git a/common/spl/spl_net.c b/common/spl/spl_net.c new file mode 100644 index 000000000..e1596fee2 --- /dev/null +++ b/common/spl/spl_net.c @@ -0,0 +1,52 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * (C) Copyright 2012 + * Ilya Yanok <ilya.yanok@gmail.com> + * + * 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 <spl.h> +#include <net.h> + +DECLARE_GLOBAL_DATA_PTR; + +void spl_net_load_image(const char *device) +{ +	int rv; + +	env_init(); +	env_relocate(); +	setenv("autoload", "yes"); +	load_addr = CONFIG_SYS_TEXT_BASE - sizeof(struct image_header); +	rv = eth_initialize(gd->bd); +	if (rv == 0) { +		printf("No Ethernet devices found\n"); +		hang(); +	} +	if (device) +		setenv("ethact", device); +	rv = NetLoop(BOOTP); +	if (rv < 0) { +		printf("Problem booting with BOOTP\n"); +		hang(); +	} +	spl_parse_image_header((struct image_header *)load_addr); +} |