Commit 6e592385 authored by wdenk's avatar wdenk

* Cleanup, minor fixes

* Patch by Rune Torgersen, 16 Apr 2004:
  LBA48 fixes

* Patches by Pantelis Antoniou, 16 Apr 2004:
  - Fix some compile problems;
    add "once" functionality for the netretry variable
parent c26e454d
======================================================================
Changes for U-Boot 1.1.1:
======================================================================
* Patch by Rune Torgersen, 16 Apr 2004:
LBA48 fixes
* Patches by Pantelis Antoniou, 16 Apr 2004:
- add support for a new version of an Intracom board and fix
......@@ -17,6 +20,8 @@ Changes for U-Boot 1.1.1:
2. A new exit command was added which terminates the current
executing script.
3. Fixed handing of $? (exit code of last executed command)
- Fix some compile problems;
add "once" functionality for the netretry variable
* Patch by George G. Davis, 02 Apr 2004:
add support for Intel Assabet board
......
......@@ -788,7 +788,7 @@ The following options need to be configured:
selected via environment 'videomode'. Two diferent ways
are possible:
- "videomode=num" 'num' is a standard LiLo mode numbers.
Following standard modes are supported (* is default):
Following standard modes are supported (* is default):
Colors 640x480 800x600 1024x768 1152x864 1280x1024
-------------+---------------------------------------------
......@@ -951,7 +951,7 @@ The following options need to be configured:
the DHCP server.
- CDP Options:
CONFIG_CDP_DEVICE_ID
CONFIG_CDP_DEVICE_ID
The device id used in CDP trigger frames.
......@@ -1948,10 +1948,8 @@ Low Level (hardware related) configuration options:
- CONFIG_FEC[12]_PHY
Define to the hardcoded PHY address which corresponds
to the given FEC.
i.e.
#define CONFIG_FEC1_PHY 4
to the given FEC; i. e.
#define CONFIG_FEC1_PHY 4
means that the PHY with address 4 is connected to FEC1
When set to -1, means to probe for first available.
......@@ -2266,6 +2264,9 @@ configurations; the following names are supported:
netretry - When set to "no" each network operation will
either succeed or fail without retrying.
When set to "once" the network operation will
fail when all the available network interfaces
are tried once without success.
Useful on scripts which control the retry operation
themselves.
......
......@@ -1186,13 +1186,12 @@ static void ide_ident (block_dev_desc_t *dev_desc)
#ifdef CONFIG_LBA48
if (iop->command_set_2 & 0x0400) { /* LBA 48 support */
dev_desc->lba48support = 1;
dev_desc->lba48 = (unsigned long long)iop->lba48_capacity[0] |
dev_desc->lba48 = 1;
dev_desc->lba = (unsigned long long)iop->lba48_capacity[0] |
((unsigned long long)iop->lba48_capacity[1] << 16) |
((unsigned long long)iop->lba48_capacity[2] << 32) |
((unsigned long long)iop->lba48_capacity[3] << 48);
} else {
dev_desc->lba48support = 0;
dev_desc->lba48 = 0;
}
#endif /* CONFIG_LBA48 */
......
......@@ -1001,7 +1001,7 @@ int do_mem_crc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong addr, length;
ulong crc;
ulong *ptr;
ulong vcrc;
ulong vcrc;
int verify;
int ac;
char **av;
......
......@@ -94,62 +94,50 @@ U_BOOT_CMD(
);
#endif /* CFG_CMD_NFS */
static void netboot_update_env(void)
static void netboot_update_env (void)
{
char tmp[22] ;
char tmp[22];
if (NetOurGatewayIP) {
ip_to_string (NetOurGatewayIP, tmp);
setenv("gatewayip", tmp);
}
if (NetOurSubnetMask) {
ip_to_string (NetOurSubnetMask, tmp);
setenv("netmask", tmp);
}
if (NetOurGatewayIP) {
ip_to_string (NetOurGatewayIP, tmp);
setenv ("gatewayip", tmp);
}
if (NetOurHostName[0])
setenv("hostname", NetOurHostName);
if (NetOurSubnetMask) {
ip_to_string (NetOurSubnetMask, tmp);
setenv ("netmask", tmp);
}
if (NetOurRootPath[0])
setenv("rootpath", NetOurRootPath);
if (NetOurHostName[0])
setenv ("hostname", NetOurHostName);
if (NetOurIP) {
ip_to_string (NetOurIP, tmp);
setenv("ipaddr", tmp);
}
if (NetOurRootPath[0])
setenv ("rootpath", NetOurRootPath);
if (NetServerIP) {
ip_to_string (NetServerIP, tmp);
setenv("serverip", tmp);
}
if (NetOurIP) {
ip_to_string (NetOurIP, tmp);
setenv ("ipaddr", tmp);
}
if (NetOurDNSIP) {
ip_to_string (NetOurDNSIP, tmp);
setenv("dnsip", tmp);
}
if (NetServerIP) {
ip_to_string (NetServerIP, tmp);
setenv ("serverip", tmp);
}
if (NetOurDNSIP) {
ip_to_string (NetOurDNSIP, tmp);
setenv ("dnsip", tmp);
}
#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_DNS2)
if (NetOurDNS2IP) {
ip_to_string (NetOurDNS2IP, tmp);
setenv("dnsip2", tmp);
}
if (NetOurDNS2IP) {
ip_to_string (NetOurDNS2IP, tmp);
setenv ("dnsip2", tmp);
}
#endif
if (NetOurNISDomain[0])
setenv("domain", NetOurNISDomain);
if (ntohs(NetOurVLAN) != (ushort)-1) {
VLAN_to_string(NetOurVLAN, tmp);
setenv("vlan", tmp);
}
if (ntohs(NetOurNativeVLAN) != (ushort)-1) {
VLAN_to_string(NetOurNativeVLAN, tmp);
setenv("vlan", tmp);
}
if (NetOurNISDomain[0])
setenv ("domain", NetOurNISDomain);
}
static int
netboot_common (int proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
{
......
/*
* (C) Copyright 2000-2002
* (C) Copyright 2000-2004
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
......@@ -91,7 +91,7 @@ static int voltage_set(int slot, int vcc, int vpp);
#if (! defined(CONFIG_I82365)) && (! defined(CONFIG_PXA_PCMCIA))
static u_int m8xx_get_graycode(u_int size);
#endif /* CONFIG_I82365 */
#endif /* !CONFIG_I82365, !CONFIG_PXA_PCMCIA */
#if 0
static u_int m8xx_get_speed(u_int ns, u_int is_io);
#endif
......@@ -106,9 +106,10 @@ static u_int *pcmcia_pgcrx[2] = {
&((immap_t *)CFG_IMMR)->im_pcmcia.pcmc_pgcra,
&((immap_t *)CFG_IMMR)->im_pcmcia.pcmc_pgcrb,
};
#define PCMCIA_PGCRX(slot) (*pcmcia_pgcrx[slot])
#endif /* CONFIG_PXA_PCMCIA */
#endif /* CONFIG_I82365 */
#if defined(CONFIG_IDE_8xx_PCCARD) || defined(CONFIG_PXA_PCMCIA)
......@@ -116,9 +117,7 @@ static void print_funcid (int func);
static void print_fixed (volatile uchar *p);
static int identify (volatile uchar *p);
static int check_ide_device (int slot);
#endif /* CONFIG_IDE_8xx_PCCARD */
#endif
#endif /* CONFIG_IDE_8xx_PCCARD, CONFIG_PXA_PCMCIA */
const char *indent = "\t ";
......
......@@ -89,12 +89,12 @@ do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
#if 0
{
printf("test:");
left = 1;
left = 1;
while (argv[left])
printf(" %s", argv[left++]);
}
#endif
last_expr = 0;
left = argc - 1; ap = argv + 1;
if (left > 0 && strcmp(ap[0], "!") == 0) {
......
......@@ -412,6 +412,9 @@ int console_init_r (void)
DECLARE_GLOBAL_DATA_PTR;
char *stdinname, *stdoutname, *stderrname;
device_t *inputdev = NULL, *outputdev = NULL, *errdev = NULL;
#ifdef CFG_CONSOLE_ENV_OVERWRITE
int i;
#endif /* CFG_CONSOLE_ENV_OVERWRITE */
/* set default handlers at first */
gd->jt[XF_getc] = serial_getc;
......@@ -483,7 +486,7 @@ int console_init_r (void)
for (i = 0; i < 3; i++) {
setenv (stdio_names[i], stdio_devices[i]->name);
}
#endif /* CFG_CONSOLE_ENV_OVERWRITE */
#endif /* CFG_CONSOLE_ENV_OVERWRITE */
#if 0
/* If nothing usable installed, use only the initial console */
......
......@@ -702,9 +702,9 @@ static int fec_init (struct eth_device *dev, bd_t * bd)
#if defined(CONFIG_MII) && defined(CONFIG_RMII)
/* the MII interface is connected to FEC1
so for the miiphy_xxx function to work we must
call mii_init since fec_halt messes the thing up */
* so for the miiphy_xxx function to work we must
* call mii_init since fec_halt messes the thing up
*/
if (efis->ether_index != 0)
mii_init();
......
......@@ -87,12 +87,8 @@ void dev_print (block_dev_desc_t *dev_desc)
if ((dev_desc->lba * dev_desc->blksz)>0L) {
ulong mb, mb_quot, mb_rem, gb, gb_quot, gb_rem;
lbaint_t lba;
#ifdef CONFIG_LBA48
if (dev_desc->lba48support)
lba = dev_desc->lba48;
else
#endif
lba = dev_desc->lba;
lba = dev_desc->lba;
lba512 = (lba * (dev_desc->blksz/512));
mb = (10 * lba512) / 2048; /* 2048 = (1024 * 1024) / 512 MB */
......@@ -104,7 +100,7 @@ void dev_print (block_dev_desc_t *dev_desc)
gb_quot = gb / 10;
gb_rem = gb - (10 * gb_quot);
#ifdef CONFIG_LBA48
if (dev_desc->lba48support)
if (dev_desc->lba48)
printf (" Supports 48-bit addressing\n");
#endif
#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
......
......@@ -664,11 +664,11 @@ typedef unsigned int led_id_t;
+------+----------------+------------------------------------------------------------
| # | Name | Comment
+------+----------------+------------------------------------------------------------
| 0 | BKBR1 | (V1) Keyboard input scan
| 1 | BKBR3 | (V1) Keyboard input scan
| 2 | BKBR4 | (V1) Keyboard input scan
| 3 | BKBR2 | (V1) Keyboard input scan
| 4 | HOOK | (V1) Hook switch
| 0 | BKBR1 | (V1) Keyboard input scan
| 1 | BKBR3 | (V1) Keyboard input scan
| 2 | BKBR4 | (V1) Keyboard input scan
| 3 | BKBR2 | (V1) Keyboard input scan
| 4 | HOOK | (V1) Hook switch
| 5 | BT_LINK | (V1) Bluetooth link status
| 6 | HOST_WAKE | (V1) Bluetooth host wake up
| 7 | OK_ETH | (V1) Cisco inline power OK status
......@@ -681,13 +681,13 @@ typedef unsigned int led_id_t;
+------+----------------+------------------------------------------------------------
| # | Name | Comment
+------+----------------+------------------------------------------------------------
| 0 | KEY1 | Keyboard output scan
| 1 | KEY2 | Keyboard output scan
| 2 | KEY3 | Keyboard output scan
| 3 | KEY4 | Keyboard output scan
| 4 | KEY5 | Keyboard output scan
| 5 | KEY6 | Keyboard output scan
| 6 | KEY7 | Keyboard output scan
| 0 | KEY1 | Keyboard output scan
| 1 | KEY2 | Keyboard output scan
| 2 | KEY3 | Keyboard output scan
| 3 | KEY4 | Keyboard output scan
| 4 | KEY5 | Keyboard output scan
| 5 | KEY6 | Keyboard output scan
| 6 | KEY7 | Keyboard output scan
| 7 | BT_WAKE | Bluetooth wake up
+------+----------------+------------------------------------------------------------
......
......@@ -22,7 +22,7 @@
*/
#ifndef _PART_H
#define _PART_H
#include <ide.h>
typedef struct block_dev_desc {
int if_type; /* type of the interface */
......@@ -35,14 +35,14 @@ typedef struct block_dev_desc {
#ifdef CONFIG_LBA48
unsigned char lba48; /* device can use 48bit addr (ATA/ATAPI v7) */
#endif
unsigned long lba; /* number of blocks */
lbaint_t lba; /* number of blocks */
unsigned long blksz; /* block size */
unsigned char vendor [40+1]; /* IDE model, SCSI Vendor */
unsigned char product[20+1]; /* IDE Serial no, SCSI product */
unsigned char revision[8+1]; /* firmware revision */
unsigned long (*block_read)(int dev,
unsigned long start,
unsigned long blkcnt,
lbaint_t blkcnt,
unsigned long *buffer);
}block_dev_desc_t;
......
......@@ -122,7 +122,7 @@ uchar NetBcastAddr[6] = /* Ethernet bcast address */
uchar NetEtherNullAddr[6] =
{ 0, 0, 0, 0, 0, 0 };
#if (CONFIG_COMMANDS & CFG_CMD_CDP)
uchar NetCDPAddr[6] = /* Ethernet bcast address */
uchar NetCDPAddr[6] = /* Ethernet bcast address */
{ 0x01, 0x00, 0x0c, 0xcc, 0xcc, 0xcc };
#endif
int NetState; /* Network loop state */
......@@ -132,8 +132,9 @@ static int NetRestarted = 0; /* Network loop restarted */
static int NetDevExists = 0; /* At least one device configured */
#endif
ushort NetOurVLAN = ntohs(-1); /* default is without VLAN */
ushort NetOurNativeVLAN = htons(-1); /* dido */
/* XXX in both little & big endian machines 0xFFFF == ntohs(-1) */
ushort NetOurVLAN = 0xFFFF; /* default is without VLAN */
ushort NetOurNativeVLAN = 0xFFFF; /* ditto */
char BootFile[128]; /* Boot File name */
......@@ -170,43 +171,45 @@ uchar NetArpWaitPacketBuf[PKTSIZE_ALIGN + PKTALIGN];
ulong NetArpWaitTimerStart;
int NetArpWaitTry;
void ArpRequest(void)
void ArpRequest (void)
{
int i;
volatile uchar *pkt;
ARP_t * arp;
ARP_t *arp;
#ifdef ET_DEBUG
printf("ARP broadcast %d\n", NetArpWaitTry);
printf ("ARP broadcast %d\n", NetArpWaitTry);
#endif
pkt = NetTxPacket;
pkt += NetSetEther(pkt, NetBcastAddr, PROT_ARP);
pkt += NetSetEther (pkt, NetBcastAddr, PROT_ARP);
arp = (ARP_t *)pkt;
arp = (ARP_t *) pkt;
arp->ar_hrd = htons(ARP_ETHER);
arp->ar_pro = htons(PROT_IP);
arp->ar_hrd = htons (ARP_ETHER);
arp->ar_pro = htons (PROT_IP);
arp->ar_hln = 6;
arp->ar_pln = 4;
arp->ar_op = htons(ARPOP_REQUEST);
arp->ar_op = htons (ARPOP_REQUEST);
memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */
NetWriteIP((uchar*)&arp->ar_data[6], NetOurIP); /* source IP addr */
for (i=10; i<16; ++i) {
arp->ar_data[i] = 0; /* dest ET addr = 0 */
memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */
NetWriteIP ((uchar *) & arp->ar_data[6], NetOurIP); /* source IP addr */
for (i = 10; i < 16; ++i) {
arp->ar_data[i] = 0; /* dest ET addr = 0 */
}
if((NetArpWaitPacketIP & NetOurSubnetMask) != (NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) {
puts ("## Warning: gatewayip needed but not set\n");
}
NetArpWaitReplyIP = NetOurGatewayIP;
} else
NetArpWaitReplyIP = NetArpWaitPacketIP;
if ((NetArpWaitPacketIP & NetOurSubnetMask) !=
(NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) {
puts ("## Warning: gatewayip needed but not set\n");
}
NetArpWaitReplyIP = NetOurGatewayIP;
} else {
NetArpWaitReplyIP = NetArpWaitPacketIP;
}
NetWriteIP((uchar*)&arp->ar_data[16], NetArpWaitReplyIP);
(void) eth_send(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
NetWriteIP ((uchar *) & arp->ar_data[16], NetArpWaitReplyIP);
(void) eth_send (NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
}
void ArpTimeoutCheck(void)
......@@ -260,7 +263,6 @@ NetLoop(proto_t protocol)
if (!NetTxPacket) {
int i;
/*
* Setup packet buffers, aligned correctly.
*/
......@@ -269,7 +271,6 @@ NetLoop(proto_t protocol)
for (i = 0; i < PKTBUFSRX; i++) {
NetRxPackets[i] = NetTxPacket + (i+1)*PKTSIZE_ALIGN;
}
}
if (!NetArpWaitTxPacket) {
......@@ -279,9 +280,11 @@ NetLoop(proto_t protocol)
}
eth_halt();
#ifdef CONFIG_NET_MULTI
eth_set_current();
if(eth_init(bd) < 0)
return(-1);
#endif
if (eth_init(bd) < 0)
return(-1);
restart:
#ifdef CONFIG_NET_MULTI
......@@ -519,43 +522,42 @@ startAgainHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len)
/* Totally ignore the packet */
}
void
NetStartAgain(void)
void NetStartAgain (void)
{
#ifdef CONFIG_NET_MULTI
DECLARE_GLOBAL_DATA_PTR;
char *s;
#endif
char *nretry;
int noretry = 0, once = 0;
if ((s = getenv("netretry")) != NULL && *s == 'n') {
eth_halt();
if ((nretry = getenv ("netretry")) != NULL) {
noretry = (strcmp (nretry, "no") == 0);
once = (strcmp (nretry, "once") == 0);
}
if (noretry) {
eth_halt ();
NetState = NETLOOP_FAIL;
return;
}
#ifndef CONFIG_NET_MULTI
NetSetTimeout(10 * CFG_HZ, startAgainTimeout);
NetSetHandler(startAgainHandler);
#else
eth_halt();
eth_try_another(!NetRestarted);
eth_init(gd->bd);
if (NetRestartWrap)
{
NetSetTimeout (10 * CFG_HZ, startAgainTimeout);
NetSetHandler (startAgainHandler);
#else /* !CONFIG_NET_MULTI*/
eth_halt ();
eth_try_another (!NetRestarted);
eth_init (gd->bd);
if (NetRestartWrap) {
NetRestartWrap = 0;
if (NetDevExists)
{
NetSetTimeout(10 * CFG_HZ, startAgainTimeout);
NetSetHandler(startAgainHandler);
}
else
{
if (NetDevExists && !once) {
NetSetTimeout (10 * CFG_HZ, startAgainTimeout);
NetSetHandler (startAgainHandler);
} else {
NetState = NETLOOP_FAIL;
}
}
else
{
} else {
NetState = NETLOOP_RESTART;
}
#endif
#endif /* CONFIG_NET_MULTI */
}
/**********************************************************************/
......@@ -629,7 +631,7 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
#ifdef ET_DEBUG
printf("sending UDP to %08lx/%02x:%02x:%02x:%02x:%02x:%02x\n",
dest, ether[0], ether[1], ether[2], ether[3], ether[4], ether[5]);
dest, ether[0], ether[1], ether[2], ether[3], ether[4], ether[5]);
#endif
pkt = (uchar *)NetTxPacket;
......@@ -637,7 +639,7 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
NetSetIP (pkt, dest, dport, sport, len);
(void) eth_send(NetTxPacket, (pkt - NetTxPacket) + IP_HDR_SIZE + len);
return 0; /* transmited */
return 0; /* transmitted */
}
#if (CONFIG_COMMANDS & CFG_CMD_PING)
......@@ -722,14 +724,13 @@ static void PingStart(void)
{
#if defined(CONFIG_NET_MULTI)
printf ("Using %s device\n", eth_get_name());
#endif
#endif /* CONFIG_NET_MULTI */
NetSetTimeout (10 * CFG_HZ, PingTimeout);
NetSetHandler (PingHandler);
PingSend();
}
#endif
#endif /* CFG_CMD_PING */
#if (CONFIG_COMMANDS & CFG_CMD_CDP)
......@@ -812,9 +813,12 @@ int CDPSendTrigger(void)
volatile ushort *s;
volatile ushort *cp;
Ethernet_t *et;
char buf[32];
int len;
ushort chksum;
#if defined(CONFIG_CDP_DEVICE_ID) || defined(CONFIG_CDP_PORT_ID) || \
defined(CONFIG_CDP_VERSION) || defined(CONFIG_CDP_PLATFORM)
char buf[32];
#endif
pkt = NetTxPacket;
et = (Ethernet_t *)pkt;
......@@ -1073,8 +1077,7 @@ static void CDPStart(void)
CDPSendTrigger();
}
#endif
#endif /* CFG_CMD_CDP */
void
......@@ -1381,7 +1384,6 @@ NetReceive(volatile uchar * inpkt, int len)
ntohs(ip->udp_dst),
ntohs(ip->udp_src),
ntohs(ip->udp_len) - 8);
break;
}
}
......@@ -1392,68 +1394,67 @@ NetReceive(volatile uchar * inpkt, int len)
static int net_check_prereq (proto_t protocol)
{
switch (protocol) {
/* Fall through */
/* Fall through */
#if (CONFIG_COMMANDS & CFG_CMD_PING)
case PING:
if (NetPingIP == 0) {
puts ("*** ERROR: ping address not given\n");
return (1);
}
goto common;
if (NetPingIP == 0) {
puts ("*** ERROR: ping address not given\n");
return (1);
}
goto common;
#endif
#if (CONFIG_COMMANDS & CFG_CMD_NFS)
case NFS:
#endif
case TFTP:
if (NetServerIP == 0) {
puts ("*** ERROR: `serverip' not set\n");
return (1);
}
if (NetServerIP == 0) {
puts ("*** ERROR: `serverip' not set\n");
return (1);
}
#if (CONFIG_COMMANDS & CFG_CMD_PING)
common:
common:
#endif
if (NetOurIP == 0) {
puts ("*** ERROR: `ipaddr' not set\n");
return (1);
}
/* Fall through */
if (NetOurIP == 0) {
puts ("*** ERROR: `ipaddr' not set\n");
return (1);
}
/* Fall through */
case DHCP:
case RARP:
case BOOTP:
case CDP:
if (memcmp(NetOurEther, "\0\0\0\0\0\0", 6) == 0) {
if (memcmp (NetOurEther, "\0\0\0\0\0\0", 6) == 0) {
#ifdef CONFIG_NET_MULTI
extern int eth_get_dev_index (void);
int num = eth_get_dev_index();
extern int eth_get_dev_index (void);
int num = eth_get_dev_index ();
switch (num) {
case -1:
switch (num) {
case -1:
puts ("*** ERROR: No ethernet found.\n");
return (1);
case 0:
case 0:
puts ("*** ERROR: `ethaddr' not set\n");
break;
default:
default:
printf ("*** ERROR: `eth%daddr' not set\n",
num);
break;
}
}
NetStartAgain ();
return (2);
NetStartAgain ();
return (2);
#else
puts ("*** ERROR: `ethaddr' not set\n");
return (1);
puts ("*** ERROR: `ethaddr' not set\n");
return (1);
#endif
}
/* Fall through */
default:
return(0);
}
/* Fall through */
default:
return (0);
}
return (0); /* OK */
return (0); /* OK */
}
/**********************************************************************/
......@@ -1529,7 +1530,7 @@ NetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len)