Modifications since 0.6.3:
======================================================================
+* Fix timeout handling in TFTP code
+
* Fix Bug in Boot File Size calculation
* Fix MPC8xxFADS configuration (don't clobber unused port lines;
/*
- * $Id: bitops.h,v 1.1 2000/08/21 14:18:07 wd Exp $
* bitops.h: Bit string operations on the ppc
*/
#ifndef _PPC_BYTEORDER_H
#define _PPC_BYTEORDER_H
-/*
- * $Id: byteorder.h,v 1.1 2000/08/21 14:18:07 wd Exp $
- */
-
#include <asm/types.h>
#ifdef __GNUC__
#ifndef __VERSION_H__
#define __VERSION_H__
-#define PPCBOOT_VERSION "ppcboot 0.6.3"
+#define PPCBOOT_VERSION "ppcboot 0.6.3+"
#endif /* __VERSION_H__ */
-/* $Id: zlib.h,v 1.2 2000/10/25 10:46:51 wd Exp $ */
-
/*
* This file is derived from zlib.h and zconf.h from the zlib-0.95
* distribution by Jean-loup Gailly and Mark Adler, with some additions
##########################################################################
#
-# $Id: Makefile,v 1.2 2000/11/23 00:46:21 wdenk Exp $
-#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#
##########################################################################
#
# makefile_pc for use with mksnt tools drivers/dma
-# $Id: Makefile_pc,v 1.2 2000/11/23 00:46:21 wdenk Exp $
+#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#
#ifndef DMA_H
#define DMA_H
/*******************************************************
- * $Id: dma.h,v 1.1 2000/11/20 17:22:32 wdenk Exp $
*
* copyright @ Motorola 1999
*
/************************************************************
- * $Id: dma1.c,v 1.1 2000/11/20 17:22:32 wdenk Exp $
*
* copyright @ Motorola, 1999
*
/**************************************
- * $Id: dma2.S,v 1.1 2000/11/20 17:22:32 wdenk Exp $
*
* copyright @ Motorola, 1999
*
/**************************************************
- * $Id: epic1.c,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ motorola, 1999
*
/**************************************
- * $Id: epic2.S,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ Motorola, 1999
*
/**************************************
- * $Id: epicutil.S,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ Motorola, 1999
*
##########################################################################
#
-# $Id: Makefile,v 1.2 2000/11/23 00:46:21 wdenk Exp $
-#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#
##########################################################################
#
# makefile_pc for use with PC mksnt tools dink32/drivers/i2c
-# $Id: Makefile_pc,v 1.2 2000/11/23 00:46:21 wdenk Exp $
#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#define I2C_H
/****************************************************
- * $Id: i2c.h,v 1.2 2000/11/23 00:46:21 wdenk Exp $
*
* Copyright Motrola 1999
*
/*************************************************************
- * $Id: i2c1.c,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* Copyright @ Motorola, 1999
*
/**************************************
- * $Id: i2c2.S,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ Motorola, 1999
*
#define I2C_EXPORT_H
/****************************************************
- * $Id: i2c_export.h,v 1.2 2000/11/23 00:46:21 wdenk Exp $
*
* Copyright Motrola 1999
*
#define I2C_EXPORT_H
/****************************************************
- * $Id: i2c_export.h,v 1.2 2000/11/23 00:46:21 wdenk Exp $
*
* Copyright Motrola 1999
*
#ifndef I2O_H
#define I2O_H
/*********************************************************
- * $Id: i2o.h,v 1.1 2000/11/20 17:22:32 wdenk Exp $
*
* copyright @ Motorola, 1999
*********************************************************/
##########################################################################
#
-# $Id: Makefile,v 1.2 2000/11/23 00:46:50 wdenk Exp $
-#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#
##########################################################################
#
# makefile_pc for use with PC mksnt tools dink32/drivers/i2o
-# $Id: Makefile_pc,v 1.2 2000/11/23 00:46:50 wdenk Exp $
#
# Copyright Motorola, Inc. 1997
# ALL RIGHTS RESERVED
#ifndef I2O_H
#define I2O_H
/*********************************************************
- * $Id: i2o.h,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ Motorola, 1999
+ *
*********************************************************/
#define I2O_REG_OFFSET 0x0004
/**************************************
- * $Id: i2o2.S,v 1.1 2000/11/20 17:22:33 wdenk Exp $
*
* copyright @ Motorola, 1999
*
#include <net.h>
#include <command.h>
-#define ET_DEBUG
+#undef ET_DEBUG
#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(FEC_ENET)
int eth_send(volatile void *packet, int length)
{
- int i, j=0;
+ int j, rc;
volatile immap_t *immr = (immap_t *) CFG_IMMR;
volatile fec_t *fecp = &(immr->im_cpm.cp_fec);
-printf("%s[%d] %s: addr %p, len %d -- txIdx=%d\n",
-__FILE__,__LINE__,__FUNCTION__,packet,length,txIdx);
/* section 16.9.23.3
* Wait for ready
*/
+ j = 0;
while ((rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_READY) && (j<TOUT_LOOP)) {
udelay(1);
j++;
}
if (j>=TOUT_LOOP) {
printf("TX not ready\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_HB) printf("- No heartbeat\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_LC) printf("- Late collision\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_RL) printf("- Retrans limit\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_UN) printf("- Underrun\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_CSL) printf("- Carrier lost\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_DEF) printf("- Deferred\n");
}
-printf("%s[%d] %s: tx_bd[%d] @ %p: addr %p len %d\n",
-__FILE__,__LINE__,__FUNCTION__,txIdx,&(rtx->txbd[txIdx]), packet, length);
rtx->txbd[txIdx].cbd_bufaddr = (uint)packet;
- rtx->txbd[txIdx].cbd_datlen = length;
- rtx->txbd[txIdx].cbd_sc |= (BD_ENET_TX_READY | BD_ENET_TX_LAST |BD_ENET_TX_WRAP);
+ rtx->txbd[txIdx].cbd_datlen = length;
+ rtx->txbd[txIdx].cbd_sc |= BD_ENET_TX_READY | BD_ENET_TX_LAST;
__asm__ ("eieio");
/* Activate transmit Buffer Descriptor polling */
fecp->fec_x_des_active = 0x01000000; /* Descriptor polling active */
+ j = 0;
while ((rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_READY) && (j<TOUT_LOOP)) {
-printf("%s[%d] %s: tx_bd[%d] @ %p: sc=%04x\n",
-__FILE__,__LINE__,__FUNCTION__,txIdx,&(rtx->txbd[txIdx]),rtx->txbd[txIdx].cbd_sc);
udelay(1);
j++;
}
if (j>=TOUT_LOOP) {
printf("TX timeout\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_HB) printf("- No heartbeat\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_LC) printf("- Late collision\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_RL) printf("- Retrans limit\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_UN) printf("- Underrun\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_CSL) printf("- Carrier lost\n");
-if (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_DEF) printf("- Deferred\n");
}
#ifdef ET_DEBUG
printf("%s[%d] %s: cycles: %d status: %x retry cnt: %d\n",
__FILE__,__LINE__,__FUNCTION__,j,rtx->txbd[txIdx].cbd_sc,
(rtx->txbd[txIdx].cbd_sc & 0x003C)>>2);
#endif
- i = (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_STATS) /* return only status bits */;
+ /* return only status bits */;
+ rc = (rtx->txbd[txIdx].cbd_sc & BD_ENET_TX_STATS);
-printf("%s[%d] %s: return 0x%x\n",__FILE__,__LINE__,__FUNCTION__,i);
- return i;
+ txIdx = (txIdx + 1) % TX_BUF_CNT;
+
+ return rc;
}
int eth_rx(void)
{
/* section 16.9.23.2 */
if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_EMPTY) {
-#if 0
- printf("%s[%d] %s: status: %x ==> return (-1)\n",
- __FILE__,__LINE__,__FUNCTION__,rtx->rxbd[rxIdx].cbd_sc);
-#endif
length = -1;
break; /* nothing received - leave for() loop */
}
#ifdef ET_DEBUG
printf("%s[%d] %s: err: %x\n",
__FILE__,__LINE__,__FUNCTION__,rtx->rxbd[rxIdx].cbd_sc);
-if ((rtx->rxbd[rxIdx].cbd_sc & (BD_ENET_RX_LAST | BD_ENET_RX_OV)) == (BD_ENET_RX_LAST | BD_ENET_RX_OV)) printf("- RX overrun\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_MISS) printf("- MISS flag set\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_LG) printf("- frame too long\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_NO) printf("- nonocted-aligned frame\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_SH) printf("- frame too short\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_CR) printf("- CRC error\n");
-if (rtx->rxbd[rxIdx].cbd_sc & BD_ENET_RX_CL) printf("- frame truncated\n");
#endif
} else {
/* Pass the packet up to the protocol layers. */
volatile immap_t *immr = (immap_t *) CFG_IMMR;
volatile fec_t *fecp = &(immr->im_cpm.cp_fec);
-printf ("Start FEC init\n");
/* Whack a reset.
* A delay is required between a reset of the FEC block and
* initialization of other FEC registers because the reset takes
txIdx = 0;
rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + m8xx_cpm_dpbase_align(8));
-printf("%s[%d] %s: rtx = %p\n",__FILE__,__LINE__,__FUNCTION__,rtx);
/*
* Setup Receiver Buffer Descriptors (13.14.24.18)
* Empty, Wrap
*/
for (i = 0; i < PKTBUFSRX; i++) {
- rtx->rxbd[i].cbd_sc = BD_ENET_RX_EMPTY;
- rtx->rxbd[i].cbd_datlen = 0; /* Reset */
+ rtx->rxbd[i].cbd_sc = BD_ENET_RX_EMPTY;
+ rtx->rxbd[i].cbd_datlen = 0; /* Reset */
rtx->rxbd[i].cbd_bufaddr = (uint) NetRxPackets[i];
}
rtx->rxbd[PKTBUFSRX - 1].cbd_sc |= BD_ENET_RX_WRAP;
* Add PADs to Short FRAMES, Wrap, Last, Tx CRC
*/
for (i = 0; i < TX_BUF_CNT; i++) {
- rtx->txbd[i].cbd_sc =
- (BD_ENET_TX_PAD | BD_ENET_TX_LAST | BD_ENET_TX_TC);
- rtx->txbd[i].cbd_datlen = 0; /* Reset */
- rtx->txbd[i].cbd_bufaddr = (uint) & txbuf[i][0];
+ rtx->txbd[i].cbd_sc = BD_ENET_TX_LAST | BD_ENET_TX_TC;
+ rtx->txbd[i].cbd_datlen = 0; /* Reset */
+ rtx->txbd[i].cbd_bufaddr = (uint) (&(txbuf[i][0]));
}
rtx->txbd[TX_BUF_CNT - 1].cbd_sc |= BD_ENET_TX_WRAP;
/* Enable MII mode
*/
-#if 1 /* Full duplex mode */
+#if 0 /* Full duplex mode */
fecp->fec_r_cntrl = FEC_RCNTRL_MII_MODE;
fecp->fec_x_cntrl = FEC_TCNTRL_FDEN;
#else /* Half duplex mode */
/* Try to fill Rx Buffer Descriptors */
fecp->fec_r_des_active = 0x01000000; /* Descriptor polling active */
-printf ("FEC init done\n");
return 1;
}
(void)memcpy((void *)(load_addr + block * 512), src, len);
}
+static void TftpTimeout (void);
+
/**********************************************************************/
static void
return;
len -= 2;
TftpBlock = SWAP16(*(ushort *)pkt);
- if (((TftpBlock - 1) % 10) == 0) printf ("#");
+ if (((TftpBlock - 1) % 10) == 0) putc ('#');
if (TftpState == STATE_RRQ) {
TftpState = STATE_DATA;
TftpLastBlock = 0;
if (TftpBlock != 1) { /* Assertion */
- printf ("\nTFTP error: First block is not "
- "block 1 (%d)\n", TftpBlock);
- printf ("Starting again\n\n");
+ printf ("\nTFTP error: "
+ "First block is not block 1 (%d)\n"
+ "Starting again\n\n",
+ TftpBlock);
NetStartAgain ();
break;
}
}
TftpLastBlock = TftpBlock;
- TftpTimeoutCount = 0;
+ NetSetTimeout (TIMEOUT * CFG_HZ, TftpTimeout);
/* ImageSize += len; */
store_block (TftpBlock - 1, pkt + 2, len);
* We received the whole thing. Try to
* run it.
*/
- printf ("\ndone\n");
+ puts ("\ndone\n");
NetState = NETLOOP_SUCCESS;
}
break;
case TFTP_ERROR:
printf ("\nTFTP error: '%s' (%d)\n",
pkt + 2, SWAP16(*(ushort *)pkt));
- printf ("Starting again\n\n");
+ puts ("Starting again\n\n");
NetStartAgain ();
break;
}
TftpTimeout (void)
{
if (++TftpTimeoutCount >= TIMEOUT_COUNT) {
- printf ("\nRetry count exceeded; starting again\n");
+ puts ("\nRetry count exceeded; starting again\n");
NetStartAgain ();
} else {
- printf ("T ");
+ puts ("T ");
NetSetTimeout (TIMEOUT * CFG_HZ, TftpTimeout);
TftpSend ();
}
);
#endif /* DEBUG */
- printf ("TFTP from server "); NetPrintIPaddr (NetServerIP);
- printf ("; our IP address is "); NetPrintIPaddr (NetOurIP);
+ puts ("TFTP from server "); NetPrintIPaddr (NetServerIP);
+ puts ("; our IP address is "); NetPrintIPaddr (NetOurIP);
// Check if we need to send across this subnet
if (NetOurGatewayIP && NetOurSubnetMask) {
IPaddr_t ServerNet = NetServerIP & NetOurSubnetMask;
if (OurNet != ServerNet) {
- printf ("; sending throught gateway ");
+ puts ("; sending throught gateway ");
NetPrintIPaddr (NetOurGatewayIP) ;
}
}
- printf ("\n");
+ putc ('\n');
if (BootFile[0] == '\0') {
int i;
(NetBootFileSize%2) ? ".5" : "",
NetBootFileSize<<9);
- printf ("\n");
+ putc ('\n');
if (loadAdr == ~0) {
load_addr = CFG_LOAD_ADDR;
printf ("Load address: 0x%lx\n", load_addr);
}
- printf ("Loading: *\b");
+ puts ("Loading: *\b");
NetSetTimeout (TIMEOUT * CFG_HZ, TftpTimeout);
NetSetHandler (TftpHandler);
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: crc32.c,v 1.1 2000/07/18 08:54:27 wd Exp $ */
-
#include "zlib.h"
#define local static
* - added minCompression parameter to deflateInit2
* - added Z_PACKET_FLUSH (see zlib.h for details)
* - added inflateIncomp
- *
- * $Id: zlib.c,v 1.2 2000/10/25 10:46:51 wd Exp $
*/
/*+++++*/
* DENX Software Engineering
* Wolfgang Denk, wd@denx.de
* All rights reserved.
- *
- * $Date: 2000/11/16 20:16:58 $
- * $Revision: 1.10 $
*/
#include <errno.h>