console: Move newline translation outside console_tx_byte
This gives us completely transparent low-level function to transmit data. Change-Id: I706791ff43d80a36a7252a4da0e6f3af92520db7 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/5336 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
parent
b3356bbff4
commit
657e0be464
|
@ -24,9 +24,6 @@
|
||||||
/* FIXME: need to make console driver more generic */
|
/* FIXME: need to make console driver more generic */
|
||||||
void console_tx_byte(unsigned char byte)
|
void console_tx_byte(unsigned char byte)
|
||||||
{
|
{
|
||||||
if (byte == '\n')
|
|
||||||
console_tx_byte('\r');
|
|
||||||
|
|
||||||
#if CONFIG_CONSOLE_SERIAL
|
#if CONFIG_CONSOLE_SERIAL
|
||||||
uart_tx_byte(byte);
|
uart_tx_byte(byte);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,9 +26,6 @@
|
||||||
|
|
||||||
void console_tx_byte(unsigned char byte)
|
void console_tx_byte(unsigned char byte)
|
||||||
{
|
{
|
||||||
if (byte == '\n')
|
|
||||||
console_tx_byte('\r');
|
|
||||||
|
|
||||||
#if CONFIG_CONSOLE_SERIAL
|
#if CONFIG_CONSOLE_SERIAL
|
||||||
uart_tx_byte(byte);
|
uart_tx_byte(byte);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -48,7 +48,7 @@ void console_tx_flush(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __console_tx_byte(unsigned char byte)
|
void console_tx_byte(unsigned char byte)
|
||||||
{
|
{
|
||||||
struct console_driver *driver;
|
struct console_driver *driver;
|
||||||
for(driver = console_drivers; driver < econsole_drivers; driver++) {
|
for(driver = console_drivers; driver < econsole_drivers; driver++) {
|
||||||
|
@ -56,13 +56,6 @@ static void __console_tx_byte(unsigned char byte)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void console_tx_byte(unsigned char byte)
|
|
||||||
{
|
|
||||||
if (byte == '\n')
|
|
||||||
__console_tx_byte('\r');
|
|
||||||
__console_tx_byte(byte);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char console_rx_byte(void)
|
unsigned char console_rx_byte(void)
|
||||||
{
|
{
|
||||||
struct console_driver *driver;
|
struct console_driver *driver;
|
||||||
|
|
|
@ -13,6 +13,13 @@
|
||||||
|
|
||||||
DECLARE_SPIN_LOCK(console_lock)
|
DECLARE_SPIN_LOCK(console_lock)
|
||||||
|
|
||||||
|
void do_putchar(unsigned char byte)
|
||||||
|
{
|
||||||
|
if (byte == '\n')
|
||||||
|
console_tx_byte('\r');
|
||||||
|
console_tx_byte(byte);
|
||||||
|
}
|
||||||
|
|
||||||
int do_printk(int msg_level, const char *fmt, ...)
|
int do_printk(int msg_level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -30,7 +37,7 @@ int do_printk(int msg_level, const char *fmt, ...)
|
||||||
spin_lock(&console_lock);
|
spin_lock(&console_lock);
|
||||||
|
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
i = vtxprintf(console_tx_byte, fmt, args);
|
i = vtxprintf(do_putchar, fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
console_tx_flush();
|
console_tx_flush();
|
||||||
|
@ -44,7 +51,8 @@ int do_printk(int msg_level, const char *fmt, ...)
|
||||||
#if CONFIG_CHROMEOS
|
#if CONFIG_CHROMEOS
|
||||||
void do_vtxprintf(const char *fmt, va_list args)
|
void do_vtxprintf(const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
vtxprintf(console_tx_byte, fmt, args);
|
vtxprintf(do_putchar, fmt, args);
|
||||||
console_tx_flush();
|
console_tx_flush();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,6 @@ void console_tx_flush(void)
|
||||||
|
|
||||||
void console_tx_byte(unsigned char byte)
|
void console_tx_byte(unsigned char byte)
|
||||||
{
|
{
|
||||||
if (byte == '\n')
|
|
||||||
console_tx_byte('\r');
|
|
||||||
|
|
||||||
#if CONFIG_CONSOLE_SERIAL
|
#if CONFIG_CONSOLE_SERIAL
|
||||||
uart_tx_byte(byte);
|
uart_tx_byte(byte);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -62,25 +62,26 @@ void post_log_clear(void);
|
||||||
/* this function is weak and can be overridden by a mainboard function. */
|
/* this function is weak and can be overridden by a mainboard function. */
|
||||||
void mainboard_post(u8 value);
|
void mainboard_post(u8 value);
|
||||||
void __attribute__ ((noreturn)) die(const char *msg);
|
void __attribute__ ((noreturn)) die(const char *msg);
|
||||||
int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
|
|
||||||
|
|
||||||
#if defined(__BOOT_BLOCK__) && !CONFIG_BOOTBLOCK_CONSOLE || \
|
#if defined(__BOOT_BLOCK__) && !CONFIG_BOOTBLOCK_CONSOLE || \
|
||||||
defined(__SMM__) && !CONFIG_DEBUG_SMI || \
|
defined(__SMM__) && !CONFIG_DEBUG_SMI || \
|
||||||
(defined(__PRE_RAM__) && !defined(__BOOT_BLOCK__)) && !CONFIG_EARLY_CONSOLE
|
(defined(__PRE_RAM__) && !defined(__BOOT_BLOCK__)) && !CONFIG_EARLY_CONSOLE
|
||||||
|
|
||||||
static inline void printk(int LEVEL, const char *fmt, ...);
|
/* Do nothing. */
|
||||||
static inline void printk(int LEVEL, const char *fmt, ...) {
|
static inline void printk(int LEVEL, const char *fmt, ...) {}
|
||||||
/* Do nothing. */
|
static inline void do_putchar(unsigned char byte) {}
|
||||||
}
|
|
||||||
|
|
||||||
#else /* defined(__PRE_RAM__) && !CONFIG_EARLY_CONSOLE */
|
#else
|
||||||
|
|
||||||
|
int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
|
||||||
|
void do_putchar(unsigned char byte);
|
||||||
|
|
||||||
#define printk(LEVEL, fmt, args...) \
|
#define printk(LEVEL, fmt, args...) \
|
||||||
do { \
|
do { \
|
||||||
do_printk(LEVEL, fmt, ##args); \
|
do_printk(LEVEL, fmt, ##args); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#endif /* defined(__PRE_RAM__) && !CONFIG_EARLY_CONSOLE */
|
#endif
|
||||||
|
|
||||||
#if CONFIG_CHROMEOS
|
#if CONFIG_CHROMEOS
|
||||||
/* FIXME: Collision of varargs with AMD headers without guard. */
|
/* FIXME: Collision of varargs with AMD headers without guard. */
|
||||||
|
|
|
@ -166,7 +166,7 @@ void sdram_initialize(struct pei_data *pei_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass console handler in pei_data */
|
/* Pass console handler in pei_data */
|
||||||
pei_data->tx_byte = console_tx_byte;
|
pei_data->tx_byte = do_putchar;
|
||||||
|
|
||||||
/* Locate and call UEFI System Agent binary. */
|
/* Locate and call UEFI System Agent binary. */
|
||||||
entry = (unsigned long)cbfs_get_file_content(
|
entry = (unsigned long)cbfs_get_file_content(
|
||||||
|
|
|
@ -248,7 +248,7 @@ void sdram_initialize(struct pei_data *pei_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass console handler in pei_data */
|
/* Pass console handler in pei_data */
|
||||||
pei_data->tx_byte = console_tx_byte;
|
pei_data->tx_byte = do_putchar;
|
||||||
|
|
||||||
/* Locate and call UEFI System Agent binary. */
|
/* Locate and call UEFI System Agent binary. */
|
||||||
/* TODO make MRC blob (0xab?) defined in cbfs_core.h. */
|
/* TODO make MRC blob (0xab?) defined in cbfs_core.h. */
|
||||||
|
|
|
@ -55,7 +55,7 @@ static void enable_smbus(void)
|
||||||
|
|
||||||
static void ABI_X86 send_to_console(unsigned char b)
|
static void ABI_X86 send_to_console(unsigned char b)
|
||||||
{
|
{
|
||||||
console_tx_byte(b);
|
do_putchar(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_dram_info(void)
|
static void print_dram_info(void)
|
||||||
|
|
Loading…
Reference in New Issue