Commit Graph

237 Commits

Author SHA1 Message Date
Jordan Crouse 672d0ae156 libpayload: Add a timeout function for getchar and getch
Implement a timeout option for getchar() to return after so many
milliseconds.  Also implement the same thing for curses using
the halfdelay() function.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3223 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-08 23:21:33 +00:00
Uwe Hermann 4eb5089821 Add rand/rand_r/srand functions for generating pseudo-random bytes.
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3222 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-07 23:33:50 +00:00
Jordan Crouse 3860404b65 libpayload: remove unneeded stack stuff
Following on the previous code to streamline the libpayload init code,
this removes the now unneeded stack structures.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3217 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-05 01:07:27 +00:00
Uwe Hermann 6c44dfb649 Fix the case where the user selects no modules in Kconfig at all.
Until now, the build would break, and even if it didn't the ELF would
triple-fault in QEMU.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3216 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-04 16:49:09 +00:00
Uwe Hermann a69772157e Document a rough estimate of how much space in the ELF file each of the
coreinfo features / modules will consume (trivial).

The measurements were done with libpayload r3213 (but compiled with -Os),
and coreinfo r3211 (also compiled with -Os).

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3214 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-04 13:28:10 +00:00
Uwe Hermann 1bee6f9b9c Add BIN2HEX and HEX2BIN macros (trivial).
They're generally useful for lots of stuff, but especially for converting
to/from the compact 160 bit (20 byte) representation of SHA-1 hashes to
the "hex" representation (same as 'sha1sum' output), which is 40 bytes long.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3213 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-04 13:16:33 +00:00
Uwe Hermann 3995593b68 Add a SHA-1 implementation to libpayload.
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Peter Stuge <peter@stuge.se>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3212 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-03 23:01:23 +00:00
Uwe Hermann c758227406 Doing another 'make' after a 'make clean' was broken until now. Fix it
by not deleting build/config.h during 'make clean' (only in 'make distclean').

Also, change the default behaviour of 'make' from asking the user to
run 'make config' (or similar) to actually _run_ 'make config' without
asking questions. It's always possible to explicitly invoke
'make menuconfig' or 'make xconfig' and so on, of course.

Finally, make _all_ targets (allyesconfig, randconfig, and so on)
generate a build/config.h file, as we always #include it.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3211 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-03 22:20:35 +00:00
Uwe Hermann 0a89625f55 Add missing snprintf() to libc/printf.c (trivial).
This is also taken from the HelenOS project.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3210 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-04-02 12:35:45 +00:00
Klaus Schnass 2c6b33ce3e Libpayload fixes to prevent triple-faults when running in QEMU.
Let the linker figure out the correct address and just CALL the
start_main entry point.

Signed-off-by: Klaus Schnass <dev@stuffit.at>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3204 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 21:02:29 +00:00
Uwe Hermann ab5b3e0d98 Add support for an "NVRAM Dump" screen in coreinfo (optional), as well as for
displaying the current date/time in the lower-right corner (optional).

Also, only build/use coreinfo modules which were selected in kconfig. This
makes coreinfo truly modular, and you can save quite a bit of ROM space
by disabling unwanted parts of coreinfo.

Finally, simplify the Makefile a bit by getting rid of MODULES (and only
using OBJECTS).

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3203 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 20:30:18 +00:00
Uwe Hermann 30d789bcbd Fix the NVRAM access functions to work correctly for the
upper 128 bytes of NVRAM (if enabled).

For most chipsets this means using I/O ports 0x72/0x73, but at least
on some VIA chipsets (I tested the VIA VT8237R on actual hardware)
these ports won't work and you have to use 0x74/0x75. Thus, make this
a Kconfig option for now.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3202 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 20:21:49 +00:00
Uwe Hermann 2d758b8bf6 Whitespace fixes (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3201 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 15:21:24 +00:00
Uwe Hermann b642e6d40a Rename drivers/cmos.c to drivers/nvram.c (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3200 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 15:18:56 +00:00
Uwe Hermann c16d24e73a Due to popular demand, rename "CMOS" to "NVRAM" (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3199 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-31 15:17:39 +00:00
Jordan Crouse 0e122af465 [libpayload] Work around sign-extending issue
Somewhere characters are getting sign-extended, meaning that the
attributes of the drawing chars (>= 128) are wrong. Cast the value
before sending it to VGA.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3195 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-29 16:13:22 +00:00
Uwe Hermann 8cc38d2f13 Add initial support for some basic CMOS read/write functions and the
bcd2dec()/dec2bcd() functions we'll need for (among other things)
converting some date/time parameters in CMOS.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3192 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-27 23:26:40 +00:00
Uwe Hermann a0c0093a09 Various tiny fixes (trivial):
- Show PCI IDs as 4-digit numbers always.

 - Cosmetic changes to make UI look more consistent.

 - Drop MODULE_COUNT #define and use ARRAY_SIZE() where needed.

 - Small fix to improve build system (create build/ when not there).

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3191 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-27 20:46:49 +00:00
Uwe Hermann 408c4e1784 Drop -Os in libpayload for now, it causes run-time problems for some
strange reason (broken curses/VGA display, maybe others).

It'll be re-enabled when we fixed that.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3190 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-27 19:11:44 +00:00
Uwe Hermann 2216d1b46a Add a recent kconfig version to coreinfo, in order to make the
supported features configurable later (currently unused). Store all
build files and results (coreinfo.elf) in build/ now.

I'm self-acking this as (though non-"trivial") it doesn't affect coreinfo
in its functionality, this is more or less a "cosmetic" change to the
build interface ("make" -> "make menuconfig && make").

This is a kconfig checkout from the Linux kernel (where kconfig is being
actively maintained) from 03/2008. The hash identifying the last commit
to kconfig is 587c90616a5b44e6ccfac38e64d4fecee51d588c.

The amount of changes to kconfig itself has been kept as small as possible
to keep the diff small and to ease updating/porting to newer kconfig versions.
The following changes were performed on the upstream Linux kconfig:

 - s/kernel/coreinfo/, and s/Linux/coreinfo/ in various strings.

 - Consistently use the env. variable KERNELVERSION in all kconfig
   interfaces -- e.g. config/menuconfig/gconfig/xconfig -- as version number.

 - Hardcode our paths/filenames in some places (could be improved upstream).

 - Always write .config and build/config.h, no matter which kconfig
   interface is used (config/menuconfig/gconfig/xconfig). We want to
   include build/config.h in our code.

 - Adapt the kconfig Makefile for our purposes (build/ directory, rules, etc).

In addition, a few items in the coreinfo Makefile are needed for this to work.

This kconfig setup is successfully tested with all targets from 'make help':

  config          - Update current config utilising a line-oriented program
  menuconfig      - Update current config utilising a menu based program
  xconfig         - Update current config utilising a QT based front-end
  gconfig         - Update current config utilising a GTK based front-end
  oldconfig       - Update current config utilising a provided .config as base
  silentoldconfig - Same as oldconfig, but quietly
  randconfig      - New config with random answer to all options
  defconfig       - New config with default answer to all options
  allmodconfig    - New config selecting modules when possible
  allyesconfig    - New config where all options are accepted with yes
  allnoconfig     - New config where all options are answered with no

For 'make defconfig' to work you have to do (which we don't need in coreinfo):

  $ mkdir configs; touch configs/defconfig

You can also use 'make foo_defconfig' in which case kconfig will use a
file called 'configs/foo_defconfig' as basis.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3188 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-24 15:47:49 +00:00
Uwe Hermann 0bfb5c4fb2 Make functions static (where possible) to reduce code size (trivial).
Also, disable header() for now, as it's not being used.

Here are some stats on size differences:

 - ls

23820 coreinfo.old.elf
23564 coreinfo.new.elf

 - size *elf

   text    data     bss     dec     hex filename
  15199    2468  181904  199571   30b93 coreinfo.old.elf
  14934    2468  181912  199314   30a92 coreinfo.new.elf

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3187 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-23 15:34:04 +00:00
Jonathan A. Kollasch b0e3f39a39 Make cursor positioning work by using both halves of the
VGA cursor position register.
   
Have vga_scroll_up() and vga_clear_line() present row/column
arguments to the VIDEO() macro in the right order.
       
Signed-off-by: Jonathan A. Kollasch <jakllsch@kollasch.net>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>

-This line, and those below, will be ignored--

M    libpayload/drivers/vga.c


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3186 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-22 15:27:26 +00:00
Uwe Hermann 661e380a75 Cosmetics, fix typos (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3185 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-21 18:37:23 +00:00
Uwe Hermann 29014056e7 Quickfix for libpayload's strcpy() to properly NUL-terminate strings (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3184 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-21 15:47:38 +00:00
Uwe Hermann 14a3feb068 Fix code to allow usage of -Wall in libpayload and the sample (trivial).
This even fixes two bugs:

 - get_cpu_speed() didn't return a value.

 - The line
     win->_color - PAIR_NUMBER(0);
   should actually be
     win->_color = PAIR_NUMBER(0);

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3182 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 20:46:44 +00:00
Uwe Hermann 35845a2acb Smaller fixes to allow using -Wall (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3181 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 20:05:22 +00:00
Uwe Hermann 6a441bfb46 Cosmetics, coding style fixes (trivial).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3180 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 19:54:59 +00:00
Christopher Kilgour 5f4c8abb65 Change kconfig references from 'buildrom' to 'libpayload'.
Signed-off-by: Christopher Kilgour <techie@whiterocker.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3179 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:58:08 +00:00
Christopher Kilgour 0c1cea29e7 Allow 'make menuconfig' to function within libpayload.
Removes reference to BusyBox.

Signed-off-by: Christopher Kilgour <techie@whiterocker.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3178 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:56:05 +00:00
Uwe Hermann dc69e05d90 Make the list of functions in libpayload.h more complete (trivial).
We need to think about the exact API we want to expose later, though.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3177 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:53:30 +00:00
Jordan Crouse 5aa66da9a1 Add -Os to the CFLAGS for size improvements.
Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3176 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:15:16 +00:00
Jordan Crouse 2c7bb9e84f libpayload: Add -Os to the CFLAGS
Adding -Os to the CFLAGS gains us about 25% smaller code (give or take).
Unfortunately, it exposes a strange issue where strcpy() suddenly goes
missing - we think that strcpy() is being provided by libgcc, and that
for some reason, -Os changes the beahavior.  Oh, well - add a quick
strcpy() function and we're good.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3175 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:13:28 +00:00
Uwe Hermann 3a406feb17 Cosmetic changes and coding style fixes by running 'indent', with some
manual fixups afterwards (trivial).

No functionality changes, compile-tested.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3174 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 01:11:28 +00:00
Jordan Crouse 7249f79792 corinfo: Inital release of the coreinfo code
This is the intial release of the coreinfo payload code.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3173 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 00:11:05 +00:00
Uwe Hermann c52761be0a libpayload: BSD solutions contributed by Uwe
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3172 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-20 00:02:07 +00:00
Jordan Crouse f3029a8fc9 libpayload: External code
This is external and properly licensed code that I pulled into the tree.
          
Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3171 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-19 23:59:13 +00:00
Jordan Crouse f6145c3c15 libpayload: The initial chunk of code writen by AMD
This is the initial chunk of code written by me and copyrighted
by AMD.  Includes everything but a few files that we pulled from
outside sources.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3170 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2008-03-19 23:56:58 +00:00