#######################################################
#
# Main options file for LinuxBIOS
#
# Each option used by a part must be defined in
# this file. The format for options is:
#
#   define <name> 
#	default <expr> | {<expr>} | "<string>" | none
#	format "<string>"
#	export always | used | never
#	comment "<string>"
#   end
#
# where 
#
#   <name> is the name of the option
#   <expr> is a numeric expression
#   <string> is a string
#
# Either a default value or 'default none' must
# be specified for every option. An option
# specified as 'default none' will not be exported
# (i.e. will remain undefined) unless it has
# been assigned a value.
#
# Option values can be an immediate expression that 
# evaluates to a numeric value, a delayed expression 
# (surrounded by curley braces), or a string 
# (surrounded by double quotes.)
#
# Immediate expressions are evaluated at the time an
# option is defined or set and the numeric result 
# becomes the value of the option.
#
# Delayed expression are evaluated at the time the 
# option is used, either in another expression or 
# when being exported.
#
# String values will have the double quotes removed 
# automatically. 
#
# Format strings determine the print format that is 
# used when exporting options. The default format
# is "%s" for strings and "%d" for numbers.
#
# Exported options generate entries in the 
# Makefile.settings file. Options can be always 
# exported, exported only if used, or never exported.
#
# A comment string must be supplied for every option.
#
#######################################################

###############################################
# Architecture options
###############################################

define ARCH
	default "i386"
	export always
	comment "Default architecture is i386, options are alpha and ppc"
end
define k7
	default none
	export always
	comment "We're a k7"
end
define k8
	default none
	export always
	comment "We're a k8"
end
define i586
	default none
	export always
	comment "We're a 586"
end
define i686
	default none
	export always
	comment "We're a 686"
end
define CPU_FIXUP
	default none
	export always
	comment "Do CPU fixups"
end

###############################################
# Build options
###############################################

define CROSS_COMPILE
	default ""
	export always
	comment "Cross compiler prefix"
end
define CC
	default "$(CROSS_COMPILE)gcc"
	export always
	comment "Target C Compiler"
end
define HOSTCC
	default "gcc"
	export always
	comment "Host C Compiler"
end
define CPU_OPT
	default none
	export used
	comment "Additional per-cpu CFLAGS"
end
define OBJCOPY
	default "$(CROSS_COMPILE)objcopy"
	export always
	comment "Objcopy command"
end
define LINUXBIOS_VERSION
	default "1.1.0"
	export always
	comment "LinuxBIOS version"
end
define LINUXBIOS_EXTRA_VERSION
        default ""
        export used
        comment "LinuxBIOS extra version"
end
define LINUXBIOS_BUILD
	default "$(shell date)"
	export always
	comment "Build date"
end
define LINUXBIOS_COMPILE_TIME
	default "$(shell date +%T)"
	export always
	comment "Build time"
end
define LINUXBIOS_COMPILE_BY
	default "$(shell whoami)"
	export always
	comment "Who build this image"
end
define LINUXBIOS_COMPILE_HOST
	default "$(shell hostname)"
	export always
	comment "Build host"
end

define LINUXBIOS_COMPILE_DOMAIN
	default ""
	export always
	comment "Build domain name"
end
define LINUXBIOS_COMPILER
	default "$(shell $(CC) $(CFLAGS) -v 2>&1 | tail -n 1)"
	export always
	comment "Build compiler"
end
define LINUXBIOS_LINKER
	default "$(shell  $(CC) -Wl,-v 2>&1 | grep version | tail -n 1)"
	export always
	comment "Build linker"
end
define LINUXBIOS_ASSEMBLER
	default "$(shell  touch dummy.s ; $(CC) -c -Wa,-v dummy.s 2>&1; rm -f dummy.s dummy.o )"
	export always
	comment "Build assembler"
end
define CONFIG_CHIP_CONFIGURE
	default 0
	export used
	comment "Use new chip_configure method for configuring (non-pci) devices"
end

###############################################
# ROM image options
###############################################

define HAVE_FALLBACK_BOOT
	default 0
	export always
	comment "Set if fallback booting required"
end
define USE_FALLBACK_IMAGE
	default 0
	export used
	comment "Set to build a fallback image"
end
define USE_NORMAL_IMAGE
	format "%d"
	default {!USE_FALLBACK_IMAGE}
	export used
	comment "Set to build a normal image"
end
define FALLBACK_SIZE
	default 65536
	format "0x%x"
	export used
	comment "Default fallback image size"
end
define ROM_SIZE
	default 262144
	format "0x%x"
	export used
	comment "Size of your ROM"
end
define ROM_IMAGE_SIZE
	default 65535
	format "0x%x"
	export always
	comment "Default image size"
end
define ROM_SECTION_SIZE
	default {FALLBACK_SIZE}
	format "0x%x"
	export used
	comment "Default rom section size"
end
define ROM_SECTION_OFFSET
	default {ROM_SIZE - FALLBACK_SIZE}
	format "0x%x"
	export used
	comment "Default rom section offset"
end
define PAYLOAD_SIZE
	default {ROM_SECTION_SIZE - ROM_IMAGE_SIZE}
	format "0x%x"
	export always
	comment "Default payload size"
end
define _ROMBASE
	default {PAYLOAD_SIZE}
	format "0x%x"
	export always
	comment "Base address of LinuxBIOS in ROM"
end
define _RESET
	default {_ROMBASE}
	format "0x%x"
	export always
	comment "Hardware reset vector address"
end
define STACK_SIZE
	default 0x2000
	format "0x%x"
	export always
	comment "Default stack size"
end
define HEAP_SIZE
	default 0x2000
	format "0x%x"
	export used
	comment "Default heap size"
end
define _RAMBASE
	default none
	format "0x%x"
	export always
	comment "Base address of LinuxBIOS in RAM"
end
define USE_CACHE_RAM
	default 0
	export used
	comment "Use cache as temporary RAM if possible"
end
define CACHE_RAM_BASE
	default 0x00200000
	format "0x%x"
	export always
	comment "Base address of cache when using it for temporary RAM"
end
define CACHE_RAM_SIZE
	default 0x00004000
	format "0x%x"
	export always
	comment "Size of cache when using it for temporary RAM"
end
define XIP_ROM_BASE
	default 0xffff8000
	format "0x%x"
	export used
	comment "base address of range of ROM that can be cached to speed up linuxBIOS"
end
define XIP_ROM_SIZE
	default 0x8000
	format "0x%x"
	export used
	comment "size of range of ROM that can be cached to speed up linuxBIOS"
end
define CONFIG_COMPRESS
	default 1
	export always
	comment "Set for compressed image"
end
define CONFIG_UNCOMPRESSED
	format "%d"
	default {!CONFIG_COMPRESS}
	export always
	comment "Set for uncompressed image"
end
define HAVE_OPTION_TABLE
	default 0
	export always
	comment "Export CMOS option table"
end
define USE_OPTION_TABLE
	format "%d"
	default {HAVE_OPTION_TABLE && !USE_FALLBACK_IMAGE}
	export always
	comment "Use option table"
end

###############################################
# Build targets
###############################################

define CRT0
	default "$(TOP)/src/arch/$(ARCH)/config/crt0.base"
	export always
	comment "Main initialization target"
end

###############################################
# Debugging/Logging options
###############################################

define DEBUG
	default 1
	export always
	comment "Enable debugging code"
end
define CONFIG_CONSOLE_VGA
	default 0
	export always
	comment "Log messages to VGA"
end
define CONFIG_CONSOLE_LOGBUF
	default 0
	export always
	comment "Log messages to buffer"
end
define CONFIG_CONSOLE_SROM
	default 0
	export always
	comment "Log messages to SROM console"
end
define CONFIG_CONSOLE_SERIAL8250
	default 0
	export always
	comment "Log messages to serial 8250 console"
end
define SERIAL_CONSOLE
	default none
	export used
	comment "Log messages to serial console"
end

define DEFAULT_CONSOLE_LOGLEVEL
	default 7
	export always
	comment "Console will log at this level unless changed"
end

define MAXIMUM_CONSOLE_LOGLEVEL
	default 8
	export always
 	comment "Error messages up to this level can be printed"
end

define NO_POST
	default none
	export always
	comment "Disable POST codes"
end
define TTYS0_BAUD
	default 115200
	export always
	comment "Default baud rate for serial console"
end
define NO_KEYBOARD
	default none
	export never
	comment "Set if we don't have a keyboard"
end

###############################################
# Mainboard options
###############################################

define MAINBOARD
	default "Mainboard_not_set"
	export always
	comment "Mainboard name"
end
define MAINBOARD_PART_NUMBER
	default "Part_number_not_set"
	export always
	comment "Part number of mainboard"
end
define MAINBOARD_VENDOR
	default "Vendor_not_set"
	export always
	comment "Vendor of mainboard"
end
define FINAL_MAINBOARD_FIXUP
	default 0
	export used
	comment "Do final mainboard fixups"
end
define CONFIG_SYS_CLK_FREQ
	default none
	export used
	comment "System clock frequency in MHz"
end

###############################################
# SMP options
###############################################

define CONFIG_SMP
	default 0
	export always
	comment "Define if we support SMP"
end
define CONFIG_MAX_CPUS
        default 1
        export always
        comment "Config CPU count for this machine"
end
define MAX_CPUS
	default 1
	export always
	comment "CPU count for this machine"
end
define CONFIG_LOGICAL_CPUS
	default 1
	export always
	comment "Logical CPU count for this machine"
end
define MAX_PHYSICAL_CPUS
	default 1
	export always
	comment "Physical CPU count for this machine"
end
define HAVE_MP_TABLE
	default none
	export always
	comment "Define to build an MP table"
end

###############################################
# Boot options
###############################################

define USE_ELF_BOOT
	default none
	export always
	comment "Use ELF boot loader"
end
define CONFIG_IDE_STREAM
	default 0
	export always
	comment "Boot from IDE device"
end
define CONFIG_ROM_STREAM
	default 0
	export always
	comment "Boot image is located in ROM" 
end
define CONFIG_ROM_STREAM_START
	default {0xffffffff - ROM_SIZE + ROM_SECTION_OFFSET + 1}
	format "0x%x"
	export always
	comment "ROM stream start location"
end

###############################################
# IRQ options
###############################################

define HAVE_PIRQ_TABLE
	default none
	export always
	comment "Define if we have a PIRQ table"
end
define IRQ_SLOT_COUNT
	default none
	export always
	comment "Number of IRQ slots"
end
define CONFIG_PCIBIOS_IRQ
	default none
	export always
	comment "PCIBIOS IRQ support"
end
define CONFIG_IOAPIC
	default none
	export always
	comment "IOAPIC support"
end

###############################################
# IDE specific options
###############################################

define IDE_BOOT_DRIVE
	default 0
	export always
	comment "Disk number of boot drive"
end
define IDE_SWAB
	default none
	export always
	comment "Swap bytes when reading from IDE device"
end
define IDE_OFFSET
	default 0
	export always
	comment "Sector at which to start searching for boot image"
end

###############################################
# SMBUS options
###############################################

define SMBUS_MEM_DEVICE_START
	default (0xa << 3)
	export always
	comment "Start address of SMBUS device"
end
define SMBUS_MEM_DEVICE_END
	default {SMBUS_MEM_DEVICE_START +1}
	export always
	comment "End address of SMBUS device"
end
define SMBUS_MEM_DEVICE_INC
	default 1
	export always
	comment "Increment value SMBUS"
end

###############################################
# SuperIO options
###############################################

define SIO_BASE
	default none
	export used
	comment "Superio base address"
end
define SIO_SYSTEM_CLK_INPUT
	default none
	export used
	comment "Superio CLK input default"
end

###############################################
# Misc options
###############################################

define HAVE_HARD_RESET
	default none
	export used
	comment "Have hard reset"
end
define MEMORY_HOLE
	default none
	export used
	comment "Set to deal with memory hole"
end
define ENABLE_FIXED_AND_VARIABLE_MTRRS
	default none
	export used
	comment "Enable fixed and variable mtrrs"
end
define START_CPU_SEG
	default 0xf0000
	format "0x%x"
	export always
	comment "Start CPU segment"
end
define MAX_REBOOT_CNT
	default 2
	export always
	comment "Set maximum reboots"
end
define DISABLE_WATCHDOG
	default {MAXIMUM_CONSOLE_LOGLEVEL >= 8}
	export used
	comment "Disable watchdog if we're doing lots of output"
end

###############################################
# Misc device options
###############################################

define CONFIG_TSC_X86RDTSC_CALIBRATE_WITH_TIMER2
	default none
	export used
	comment ""
end
define INTEL_PPRO_MTRR
	default none
	export always
	comment ""
end
define AMD8111_DEV
	default 0x3800
	format "0x%x"
	export used
	comment ""
end
define CONFIG_UDELAY_TSC
	default 0
	export used
	comment ""
end

###############################################
# Board specifig options
###############################################

###############################################
# Options for motorola/sandpoint
###############################################
define CONFIG_SANDPOINT_ALTIMUS
	default 0
	export never
	comment "Configure Sandpoint with Altimus PMC"
end
define CONFIG_SANDPOINT_TALUS
	default 0
	export never
	comment "Configure Sandpoint with Talus PMC"
end
define CONFIG_SANDPOINT_UNITY
	default 0
	export never
	comment "Configure Sandpoint with Unity PMC"
end
define CONFIG_SANDPOINT_VALIS
	default 0
	export never
	comment "Configure Sandpoint with Valis PMC"
end
define CONFIG_SANDPOINT_GYRUS
	default 0
	export never
	comment "Configure Sandpoint with Gyrus PMC"
end