# DONT FORGET TO CHANGE THE "version" VAR BELOW IF YOU MAKE CHANGES TO THIS FILE

# (C) Copyright 2001
# Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
#
# SPDX-License-Identifier:	GPL-2.0+

#
# global_env
#
# file used by Hymod boards to initialise the u-boot non-volatile
# environment when u-boot is first run (it determines this by the
# absence of the environment variable "global_env_loaded")
#
# format of this file is:
#
#	1. blank lines and lines beginning with '#' are ignored
#	2. all other lines must have the form <name>=<value>
#	3. if a percent appears anywhere, it is replaced like so:
#
#		%s	serial number of the main board (10 digit zero filled)
#		%S	serial number of the main board (plain number)
#		%%	a percentage character
#		... otherwise the %x is discarded
#
# if first character in <name> is a dash ('-'), then an existing env var
# will not be overwritten (the dash is removed). i.e. it is only set if
# it does not exist
#
# if last character in <name> is a plus ('+'), then <value> will be appended
# to any existing env var (the plus is ignored). Duplicates of <value> are
# removed.
#
# similarly, if the last character in <name> is a minus ('-'), then any
# occurences of <value> in the current value of <name> will removed (the
# minus is ignored).
#
# leading and trailing whitespace is removed in both <name> and <value>
# (after processing any initial or final plus/minus in <name>).
#

# MISCELLANEOUS PARAMETERS

# version must always come first
version=4

# set the ip address based on the main board serial number
ipaddr=192.168.1.%S
serverip=192.168.1.254

# stop auto execute after tftp (not a very good name really)
autostart=no

# setting this to "yes" forces the global_env file to be loaded and processed
# if the current version is different to the version in the file
always_check_env=no

# BOOTING COMMANDS AND PARAMETERS

# command to run when "auto-booting"
bootcmd=bootm 40080000

# how long the "countdown" to automatically running "bootcmd" is
bootdelay=2

# how long before it "times out" console input and attempts to run "bootcmd"
bootretry=5

# arguments passed to the boot program (i.e. linux kernel) via register 6
# the linux kernel (v2.4) uses the following registers:
#	r3 - address of board information structure
#	r4 - address of initial ramdisk image (0 means no initrd)
#	r5 - size of initial ramdisk image
#	r6 - address of command line string
-bootargs=root=/dev/mtdblock5 rootfstype=squashfs ro

# these four are for hymod linux integrated into our Sun network
bootargs+=serialno=%S
bootargs+=nisclient nisdomain=mlb.dmt.csiro.au nissrvadr=138.194.112.4
bootargs+=nfsclient
bootargs+=automount

# start a web server by default
bootargs+=webserver

# give negotiation time to finish
bootargs+=netsleep=5

# then our ciscos don't pass packets for 25-30 secs after that, so
# pinging the server until it responds prevents network connections
# from failing...
bootargs+=netping

# these are old bootargs - we don't need them anymore
bootargs-=preload=unix,i2c-cpm,i2c-dev
bootargs-=ramdisk_size=32768
bootargs-=ramdisk_size=24576

# FLASH MANIPULATION COMMANDS

#
# 16M flash, 64 x 256K sectors, mapped at address 0x40000000
#
# Sector(s)	Address		Size	Description
#
#  0 -  0	0x40000000	256K	boot code
#  1 -  1	0x40040000	256K	non volatile environment
#  2 -  4	0x40080000	768K	linux kernel image
#  5 -  7	0x40140000	768K	alternate linux kernel image
#  8 - 47	0x40200000	 10M	linux initial ramdisk image
# 48 - 63	0x40c00000	  4M	ramdisk image for applications
#

fetchboot=tftp 100000 /hymod/u-boot.bin
eraseboot=protect off 1:0 ; erase 1:0 ; protect on 1:0
copyboot=protect off 1:0 ; cp.b 100000 40000000 40000 ; protect on 1:0
cmpboot=cmp.b 100000 40000000 40000
newboot=run fetchboot eraseboot copyboot cmpboot

fetchlinux=tftp 100000 /hymod/linux.bin
eraselinux=erase 1:2-4
copylinux=cp.b 100000 40080000 ${filesize}
cmplinux=cmp.b 100000 40080000 ${filesize}
newlinux=run fetchlinux eraselinux copylinux cmplinux

fetchaltlinux=tftp 100000 /hymod/altlinux.bin
erasealtlinux=erase 1:5-7
copyaltlinux=cp.b 100000 40140000 ${filesize}
cmpaltlinux=cmp.b 100000 40140000 ${filesize}
newaltlinux=run fetchaltlinux erasealtlinux copyaltlinux cmpaltlinux

fetchroot=tftp 100000 /hymod/root.bin
eraseroot=erase 1:8-47
copyroot=cp.b 100000 40200000 ${filesize}
cmproot=cmp.b 100000 40200000 ${filesize}
newroot=run fetchroot eraseroot copyroot cmproot

fetchard=tftp 100000 /hymod/apprd.bin
eraseard=erase 1:48-63
copyard=cp.b 100000 40c00000 ${filesize}
cmpard=cmp.b 100000 40c00000 ${filesize}
newapprd=run fetchard eraseard copyard cmpard

# pass above map to linux mtd driver
bootargs+=mtdparts=phys:256k(u-boot),256k(u-boot-env),768k(linux),768k(altlinux),10m(root),4m(hymod)
