console headers. GPL added.
git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@20 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
parent
a64ccc5ef9
commit
b0d874f54b
3 changed files with 281 additions and 0 deletions
88
src/include/console/btext.h
Normal file
88
src/include/console/btext.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
*/
|
||||
/*
|
||||
* This file describes the structure passed from the BootX application
|
||||
* (for MacOS) when it is used to boot Linux.
|
||||
*
|
||||
* Written by Benjamin Herrenschmidt.
|
||||
*
|
||||
* Move to LinuxBIOS by LYH yhlu@tyan.com
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _BTEXT_H__
|
||||
#define _BTEXT_H__
|
||||
|
||||
#define u32 uint32_t
|
||||
#define u16 uint16_t
|
||||
#define u8 uint8_t
|
||||
|
||||
/* Here are the boot informations that are passed to the bootstrap
|
||||
* Note that the kernel arguments and the device tree are appended
|
||||
* at the end of this structure. */
|
||||
typedef struct boot_infos
|
||||
{
|
||||
|
||||
/* NEW (vers. 2) this holds the current _logical_ base addr of
|
||||
the frame buffer (for use by early boot message) */
|
||||
u8* logicalDisplayBase;
|
||||
|
||||
|
||||
/* Some infos about the current MacOS display */
|
||||
u32 dispDeviceRect[4]; /* left,top,right,bottom */
|
||||
u32 dispDeviceDepth; /* (8, 16 or 32) */
|
||||
u8* dispDeviceBase; /* base address (physical) */
|
||||
u32 dispDeviceRowBytes; /* rowbytes (in bytes) */
|
||||
u32 dispDeviceColorsOffset; /* Colormap (8 bits only) or 0 (*) */
|
||||
|
||||
|
||||
/* The framebuffer size (optional, currently 0) */
|
||||
u32 frameBufferSize; /* Represents a max size, can be 0. */
|
||||
|
||||
|
||||
} boot_infos_t;
|
||||
|
||||
/* (*) The format of the colormap is 256 * 3 * 2 bytes. Each color index is represented
|
||||
* by 3 short words containing a 16 bits (unsigned) color component.
|
||||
* Later versions may contain the gamma table for direct-color devices here.
|
||||
*/
|
||||
#define BOOTX_COLORTABLE_SIZE (256UL*3UL*2UL)
|
||||
|
||||
|
||||
/*
|
||||
* Definitions for using the procedures in btext.c.
|
||||
*
|
||||
* Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
||||
*/
|
||||
|
||||
extern void btext_clearscreen(void);
|
||||
|
||||
extern boot_infos_t disp_bi;
|
||||
extern u32 boot_text_mapped;
|
||||
|
||||
void btext_setup_display(u32 width, u32 height, u32 depth, u32 pitch,
|
||||
unsigned long address);
|
||||
void map_boot_text(void);
|
||||
void btext_update_display(unsigned long phys, u32 width, u32 height,
|
||||
u32 depth, u32 pitch);
|
||||
|
||||
void btext_drawchar(char c);
|
||||
void btext_drawstring(const char *str);
|
||||
void btext_drawhex(u32 v);
|
||||
|
||||
#endif /* _BTEXT_H */
|
||||
145
src/include/console/console.h
Normal file
145
src/include/console/console.h
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
*/
|
||||
#ifndef CONSOLE_CONSOLE_H_
|
||||
#define CONSOLE_CONSOLE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <console/loglevel.h>
|
||||
|
||||
void console_init(void);
|
||||
void console_tx_byte(unsigned char byte);
|
||||
void console_tx_flush(void);
|
||||
unsigned char console_rx_byte(void);
|
||||
int console_tst_byte(void);
|
||||
void post_code(uint8_t value);
|
||||
void die(const char *msg);
|
||||
|
||||
struct console_driver {
|
||||
void (*init)(void);
|
||||
void (*tx_byte)(unsigned char byte);
|
||||
void (*tx_flush)(void);
|
||||
unsigned char (*rx_byte)(void);
|
||||
int (*tst_byte)(void);
|
||||
};
|
||||
|
||||
#define __console __attribute__((used, __section__ (".rodata.console_drivers")))
|
||||
|
||||
/* Defined by the linker... */
|
||||
extern struct console_driver console_drivers[];
|
||||
extern struct console_driver econsole_drivers[];
|
||||
|
||||
extern int console_loglevel;
|
||||
int do_printk(int msg_level, const char *fmt, ...);
|
||||
|
||||
#define printk_emerg(fmt, arg...) do_printk(BIOS_EMERG ,fmt, ##arg)
|
||||
#define printk_alert(fmt, arg...) do_printk(BIOS_ALERT ,fmt, ##arg)
|
||||
#define printk_crit(fmt, arg...) do_printk(BIOS_CRIT ,fmt, ##arg)
|
||||
#define printk_err(fmt, arg...) do_printk(BIOS_ERR ,fmt, ##arg)
|
||||
#define printk_warning(fmt, arg...) do_printk(BIOS_WARNING ,fmt, ##arg)
|
||||
#define printk_notice(fmt, arg...) do_printk(BIOS_NOTICE ,fmt, ##arg)
|
||||
#define printk_info(fmt, arg...) do_printk(BIOS_INFO ,fmt, ##arg)
|
||||
#define printk_debug(fmt, arg...) do_printk(BIOS_DEBUG ,fmt, ##arg)
|
||||
#define printk_spew(fmt, arg...) do_printk(BIOS_SPEW ,fmt, ##arg)
|
||||
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_EMERG
|
||||
#undef printk_emerg
|
||||
#define printk_emerg(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ALERT
|
||||
#undef printk_alert
|
||||
#define printk_alert(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_CRIT
|
||||
#undef printk_crit
|
||||
#define printk_crit(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ERR
|
||||
#undef printk_err
|
||||
#define printk_err(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_WARNING
|
||||
#undef printk_warning
|
||||
#define printk_warning(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_NOTICE
|
||||
#undef printk_notice
|
||||
#define printk_notice(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_INFO
|
||||
#undef printk_info
|
||||
#define printk_info(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_DEBUG
|
||||
#undef printk_debug
|
||||
#define printk_debug(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_SPEW
|
||||
#undef printk_spew
|
||||
#define printk_spew(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
|
||||
#define print_emerg(STR) printk_emerg ("%s", (STR))
|
||||
#define print_alert(STR) printk_alert ("%s", (STR))
|
||||
#define print_crit(STR) printk_crit ("%s", (STR))
|
||||
#define print_err(STR) printk_err ("%s", (STR))
|
||||
#define print_warning(STR) printk_warning("%s", (STR))
|
||||
#define print_notice(STR) printk_notice ("%s", (STR))
|
||||
#define print_info(STR) printk_info ("%s", (STR))
|
||||
#define print_debug(STR) printk_debug ("%s", (STR))
|
||||
#define print_spew(STR) printk_spew ("%s", (STR))
|
||||
|
||||
#define print_emerg_char(CH) printk_emerg ("%c", (CH))
|
||||
#define print_alert_char(CH) printk_alert ("%c", (CH))
|
||||
#define print_crit_char(CH) printk_crit ("%c", (CH))
|
||||
#define print_err_char(CH) printk_err ("%c", (CH))
|
||||
#define print_warning_char(CH) printk_warning("%c", (CH))
|
||||
#define print_notice_char(CH) printk_notice ("%c", (CH))
|
||||
#define print_info_char(CH) printk_info ("%c", (CH))
|
||||
#define print_debug_char(CH) printk_debug ("%c", (CH))
|
||||
#define print_spew_char(CH) printk_spew ("%c", (CH))
|
||||
|
||||
#define print_emerg_hex8(HEX) printk_emerg ("%02x", (HEX))
|
||||
#define print_alert_hex8(HEX) printk_alert ("%02x", (HEX))
|
||||
#define print_crit_hex8(HEX) printk_crit ("%02x", (HEX))
|
||||
#define print_err_hex8(HEX) printk_err ("%02x", (HEX))
|
||||
#define print_warning_hex8(HEX) printk_warning("%02x", (HEX))
|
||||
#define print_notice_hex8(HEX) printk_notice ("%02x", (HEX))
|
||||
#define print_info_hex8(HEX) printk_info ("%02x", (HEX))
|
||||
#define print_debug_hex8(HEX) printk_debug ("%02x", (HEX))
|
||||
#define print_spew_hex8(HEX) printk_spew ("%02x", (HEX))
|
||||
|
||||
#define print_emerg_hex16(HEX) printk_emerg ("%04x", (HEX))
|
||||
#define print_alert_hex16(HEX) printk_alert ("%04x", (HEX))
|
||||
#define print_crit_hex16(HEX) printk_crit ("%04x", (HEX))
|
||||
#define print_err_hex16(HEX) printk_err ("%04x", (HEX))
|
||||
#define print_warning_hex16(HEX) printk_warning("%04x", (HEX))
|
||||
#define print_notice_hex16(HEX) printk_notice ("%04x", (HEX))
|
||||
#define print_info_hex16(HEX) printk_info ("%04x", (HEX))
|
||||
#define print_debug_hex16(HEX) printk_debug ("%04x", (HEX))
|
||||
#define print_spew_hex16(HEX) printk_spew ("%04x", (HEX))
|
||||
|
||||
#define print_emerg_hex32(HEX) printk_emerg ("%08x", (HEX))
|
||||
#define print_alert_hex32(HEX) printk_alert ("%08x", (HEX))
|
||||
#define print_crit_hex32(HEX) printk_crit ("%08x", (HEX))
|
||||
#define print_err_hex32(HEX) printk_err ("%08x", (HEX))
|
||||
#define print_warning_hex32(HEX) printk_warning("%08x", (HEX))
|
||||
#define print_notice_hex32(HEX) printk_notice ("%08x", (HEX))
|
||||
#define print_info_hex32(HEX) printk_info ("%08x", (HEX))
|
||||
#define print_debug_hex32(HEX) printk_debug ("%08x", (HEX))
|
||||
#define print_spew_hex32(HEX) printk_spew ("%08x", (HEX))
|
||||
|
||||
#endif /* CONSOLE_CONSOLE_H_ */
|
||||
48
src/include/console/loglevel.h
Normal file
48
src/include/console/loglevel.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
*/
|
||||
#ifndef LOGLEVEL_H
|
||||
#define LOGLEVEL_H
|
||||
|
||||
/* Safe for inclusion in assembly */
|
||||
|
||||
#ifndef MAXIMUM_CONSOLE_LOGLEVEL
|
||||
#define MAXIMUM_CONSOLE_LOGLEVEL 8
|
||||
#endif
|
||||
|
||||
#ifndef DEFAULT_CONSOLE_LOGLEVEL
|
||||
#define DEFAULT_CONSOLE_LOGLEVEL 8 /* anything MORE serious than BIOS_SPEW */
|
||||
#endif
|
||||
|
||||
#ifndef ASM_CONSOLE_LOGLEVEL
|
||||
#if (DEFAULT_CONSOLE_LOGLEVEL <= MAXIMUM_CONSOLE_LOGLEVEL)
|
||||
#define ASM_CONSOLE_LOGLEVEL DEFAULT_CONSOLE_LOGLEVEL
|
||||
#else
|
||||
#define ASM_CONSOLE_LOGLEVEL MAXIMUM_CONSOLE_LOGLEVEL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define BIOS_EMERG 0 /* system is unusable */
|
||||
#define BIOS_ALERT 1 /* action must be taken immediately */
|
||||
#define BIOS_CRIT 2 /* critical conditions */
|
||||
#define BIOS_ERR 3 /* error conditions */
|
||||
#define BIOS_WARNING 4 /* warning conditions */
|
||||
#define BIOS_NOTICE 5 /* normal but significant condition */
|
||||
#define BIOS_INFO 6 /* informational */
|
||||
#define BIOS_DEBUG 7 /* debug-level messages */
|
||||
#define BIOS_SPEW 8 /* Way too many details */
|
||||
|
||||
#endif /* LOGLEVEL_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue