Signed-off-by: Luca Ceresoli <luca.ceres...@comelit.it>
Cc: Wolfgang Denk <w...@denx.de>
---
 README           |    1 +
 common/cmd_net.c |   14 ++++++++++++++
 include/net.h    |    3 ++-
 net/net.c        |   10 ++++++++--
 4 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/README b/README
index b9b0fcb..83dcb2a 100644
--- a/README
+++ b/README
@@ -685,6 +685,7 @@ The following options need to be configured:
                                          (requires CONFIG_CMD_MEMORY)
                CONFIG_CMD_SOURCE         "source" command Support
                CONFIG_CMD_SPI          * SPI serial bus support
+               CONFIG_CMD_TFTPSRV      * TFTP transfer in server mode
                CONFIG_CMD_USB          * USB support
                CONFIG_CMD_VFD          * VFD support (TRAB)
                CONFIG_CMD_CDP          * Cisco Discover Protocol support
diff --git a/common/cmd_net.c b/common/cmd_net.c
index 8c6f5c8..053162a 100644
--- a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -52,6 +52,20 @@ U_BOOT_CMD(
        "[loadAddress] [[hostIPaddr:]bootfilename]"
 );
 
+#ifdef CONFIG_CMD_TFTPSRV
+int do_tftpsrv(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       return netboot_common(TFTPSRV, cmdtp, argc, argv);
+}
+
+U_BOOT_CMD(
+       tftpsrv,        2,      1,      do_tftpsrv,
+       "boot image via network acting as a TFTP server",
+       "[loadAddress]"
+);
+#endif
+
+
 #ifdef CONFIG_CMD_RARP
 int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
diff --git a/include/net.h b/include/net.h
index 01f7159..018a744 100644
--- a/include/net.h
+++ b/include/net.h
@@ -364,7 +364,8 @@ extern int          NetState;               /* Network loop 
state           */
 extern int             NetRestartWrap;         /* Tried all network devices    
*/
 #endif
 
-typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS, 
SNTP } proto_t;
+typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS, 
SNTP,
+              TFTPSRV } proto_t;
 
 /* from net/net.c */
 extern char    BootFile[128];                  /* Boot File name               
*/
diff --git a/net/net.c b/net/net.c
index 79afd8b..a9a2f8b 100644
--- a/net/net.c
+++ b/net/net.c
@@ -388,7 +388,11 @@ restart:
                        /* always use ARP to get server ethernet address */
                        TftpStart();
                        break;
-
+#ifdef CONFIG_CMD_TFTPSRV
+               case TFTPSRV:
+                       TftpStartServer();
+                       break;
+#endif
 #if defined(CONFIG_CMD_DHCP)
                case DHCP:
                        BootpTry = 0;
@@ -1730,7 +1734,9 @@ static int net_check_prereq (proto_t protocol)
 #if defined(CONFIG_CMD_PING) || defined(CONFIG_CMD_SNTP)
     common:
 #endif
-
+#ifdef CONFIG_CMD_TFTPSRV
+       case TFTPSRV:
+#endif
                if (NetOurIP == 0) {
                        puts ("*** ERROR: `ipaddr' not set\n");
                        return (1);
-- 
1.7.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to