* 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
This commit is contained in:
wdenk 2004-04-18 17:39:38 +00:00
parent c26e454dfc
commit 6e5923851e
13 changed files with 181 additions and 189 deletions

View file

@ -2,6 +2,9 @@
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
various other things on others.
@ -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

7
README
View file

@ -1948,9 +1948,7 @@ Low Level (hardware related) configuration options:
- CONFIG_FEC[12]_PHY
Define to the hardcoded PHY address which corresponds
to the given FEC.
i.e.
to the given FEC; i. e.
#define CONFIG_FEC1_PHY 4
means that the PHY with address 4 is connected to FEC1
@ -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.

View file

@ -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 */

View file

@ -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);
setenv ("gatewayip", tmp);
}
if (NetOurSubnetMask) {
ip_to_string (NetOurSubnetMask, tmp);
setenv("netmask", tmp);
setenv ("netmask", tmp);
}
if (NetOurHostName[0])
setenv("hostname", NetOurHostName);
setenv ("hostname", NetOurHostName);
if (NetOurRootPath[0])
setenv("rootpath", NetOurRootPath);
setenv ("rootpath", NetOurRootPath);
if (NetOurIP) {
ip_to_string (NetOurIP, tmp);
setenv("ipaddr", tmp);
setenv ("ipaddr", tmp);
}
if (NetServerIP) {
ip_to_string (NetServerIP, tmp);
setenv("serverip", tmp);
setenv ("serverip", tmp);
}
if (NetOurDNSIP) {
ip_to_string (NetOurDNSIP, tmp);
setenv("dnsip", tmp);
setenv ("dnsip", tmp);
}
#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_DNS2)
if (NetOurDNS2IP) {
ip_to_string (NetOurDNS2IP, tmp);
setenv("dnsip2", 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);
}
setenv ("domain", NetOurNISDomain);
}
static int
netboot_common (int proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
{

View file

@ -1,5 +1,5 @@
/*
* (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 ";

View file

@ -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;

View file

@ -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();

View file

@ -87,11 +87,7 @@ 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;
lba512 = (lba * (dev_desc->blksz/512));
@ -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)

View file

@ -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;

115
net/net.c
View file

@ -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) {
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 ((NetArpWaitPacketIP & NetOurSubnetMask) !=
(NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) {
puts ("## Warning: gatewayip needed but not set\n");
}
NetArpWaitReplyIP = NetOurGatewayIP;
} else
} 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,8 +280,10 @@ NetLoop(proto_t protocol)
}
eth_halt();
#ifdef CONFIG_NET_MULTI
eth_set_current();
if(eth_init(bd) < 0)
#endif
if (eth_init(bd) < 0)
return(-1);
restart:
@ -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 */
}
/**********************************************************************/
@ -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;
}
}
@ -1409,7 +1411,6 @@ static int net_check_prereq (proto_t protocol)
puts ("*** ERROR: `serverip' not set\n");
return (1);
}
#if (CONFIG_COMMANDS & CFG_CMD_PING)
common:
#endif
@ -1424,10 +1425,10 @@ static int net_check_prereq (proto_t protocol)
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();
int num = eth_get_dev_index ();
switch (num) {
case -1:
@ -1451,7 +1452,7 @@ static int net_check_prereq (proto_t protocol)
}
/* Fall through */
default:
return(0);
return (0);
}
return (0); /* OK */
}
@ -1529,7 +1530,7 @@ NetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len)
/*
* Construct an IP and UDP header.
(need to set no fragment bit - XXX)
* (need to set no fragment bit - XXX)
*/
ip->ip_hl_v = 0x45; /* IP_HDR_SIZE / 4 (not including UDP) */
ip->ip_tos = 0;